2017-09-26 10 views
1

저는 .net에 상당히 익숙하며 DataProtector에 관한 질문이있었습니다..net에서 DataProtection 암호화 길이를 줄이십니까?

구성없이 DataProtector.Protect를 사용하면 결과 암호화가 전달해야하는 API에 비해 너무 길어지고 구성 방법 (here)을 사용하면 도움이 될지 궁금합니다.

var serviceCollection = new ServiceCollection(); 
      serviceCollection.AddDataProtection() 
       .UseCustomCryptographicAlgorithms(new ManagedAuthenticatedEncryptionSettings() 
       { 
        // a type that subclasses SymmetricAlgorithm 
        EncryptionAlgorithmType = typeof(Aes), 

        // specified in bits 
        EncryptionAlgorithmKeySize = 128, 

        // a type that subclasses KeyedHashAlgorithm 
        ValidationAlgorithmType = typeof(HMACSHA256) 
       }); 

      var services = serviceCollection.BuildServiceProvider(); 
      _protector = services.GetDataProtector("MyClass.v1"); 

var protect = _protector.Protect(JsonConvert.SerializeObject(myData)); 

그러나도 최소 128 기본 256에서 EncryptionAlgorithmKeySize을 변경 한 후, '보호'여전히 같은 길이의 암호화의 결과로했다 : 나는 데이터를 보호하기 위해 필요한 어디는 클래스에 다음을 시도 구성이 작동하지 않거나 구성이 암호화 길이에 영향을 미치지 않는다고 생각하게합니다.

이것이 올바르게 수행되고 있는지 또는 암호화 길이를 줄이는 더 좋은 방법이 있는지 알고있는 사람이 있습니까?

예를 들어 간단한 9 자 문자열은 134 자로 암호화됩니다.

도움을 주신 모든 분들께 감사드립니다.

+0

이것은 정말 나쁜 생각처럼 들립니다. 왜 암호화 된 데이터를 컴퓨터에서 전송하고 싶고 API를 제한된 길이로 보내는 이유는 무엇입니까? – CodeCaster

+0

@CodeCaster 데이터에는 위조 방지 토큰이 포함되어 있지만 API를 사용하면 약 500 자만 보내고받을 수 있으므로 암호화 길이를 제한하는 구성 방법이 있는지 궁금 할 것입니다. –

답변

0

DPAPI는 전송할 데이터가 아닌 대기중인 데이터를 보호하기위한 것입니다.

Ryan Dobbs는 위 (또는 아래에서 StackOverflow가 받아 들일 수없는 대답을 어떻게 분류 할 수 있는지 알 수 없습니다.), 암호화를 약화시켜 페이로드를 줄이는 것은 매우 나쁜 생각입니다. 이 문제를 해결하는 올바른 방법은 연결 (TLS 스타일 SSL)을 보호하는 것입니다. 그런 다음 일반 텍스트를 보내거나 (Ryan이 제안한 것처럼) 발신자와 수신자가 액세스 할 수있는 적절한 암호화 된 페이로드를 드롭 할 수 있습니다.

그러나 직접 질문에 대답하기 위해 페이로드 크기는 해시 함수에 의해 제어됩니다. 암호화 키 크기는 암호화 알고리즘의 암호화 복잡성 (암호화가 얼마나 어려워 질지)만을 알려줍니다. HMACSHA256 부분은 SHA-256 해시이므로 256 비트 출력을 생성합니다.

MD5은 128 비트이지만 일반적으로 안전하지 않습니다 (체크섬에만 적합).

설명서에 따르면 키 크기와 해시 크기가 동일해야하므로 SHA를 사용하여 128 비트까지 갈 수 없다고합니다. 사용할 수있는 가장 짧은 SHA는 160 비트 인 구 SHA1 알고리즘 (HMACSHA1)이지만 256 비트 미만의 것은 아무래도 비교적 안전하지 못하다는 것이 예상됩니다. SHA2 알고리즘은 HMACSHA256HMACSHA512을 산출합니다.