2014-12-30 2 views
-1

내 응용 프로그램에 저장된 데이터에 암호화를 통합하려고합니다. 나는 데이터를 암호화하고 해독한다는 점에서 꽤 멀리까지 갔다. 나의 문제는 잘못된 키가 사용될 때 명백한 암호 해독 오류를 강요하는 것처럼 보이지 않는다는 것이다. 내 해독 기능 :CCCrypt에서 키가 잘못되었는지 확인하십시오. kCCOptionPKCS7Padding-Objective C

+ (NSData *)decryptedDataForData:(NSData *)data 
        password:(NSString *)password 
          iv:(NSData *)iv 
         salt:(NSData *)salt 
         error:(NSError **)error { 
NSAssert(iv, @"IV must not be NULL"); 
NSAssert(salt, @"salt must not be NULL"); 

NSData *key = [self AESKeyForPassword:password salt:salt]; 

size_t outLength; 
NSMutableData * 
decryptedData = [NSMutableData dataWithLength:data.length]; 

CCCryptorStatus 
result = CCCrypt(kCCDecrypt, 
       kAlgorithm, 
       kCCOptionPKCS7Padding, 
       key.bytes, 
       key.length, 
       iv.bytes, 
       data.bytes, 
       data.length, 
       decryptedData.mutableBytes, 
       decryptedData.length, 
       &outLength); 

if (result == kCCSuccess) { 
    decryptedData.length = outLength; 
} 
else { 
    if (error) { 
     *error = [NSError errorWithDomain:kRNCryptManagerErrorDomain 
            code:result 
           userInfo:nil]; 
    } 
    return nil; 
} 

return decryptedData; 

}

이는 참조 용으로 http://robnapier.net/aes-commoncrypto에서 가져옵니다.

CCCrypt 설명서에 따르면 데이터가 올바르게 해독되지 않으면 kCCDecodeError를 수신해야하므로 해독 작업이 성공했다고 가정하고 잘못된 키로 인해 가비지 데이터를 제공한다고 가정합니다.

데이터의 암호를 해독하는 데 올바른 키가 사용되었는지 확인하는 가장 좋은 방법은 무엇입니까?

답변

0

kCCDecodeError은 중대한 오류가있는 경우에만 올바른 키를 사용하면 정보를 제공하지 않습니다.

키가 올바른지 확인하는 유일한 방법은 출력을 확인하는 것입니다. 출력은 전체적으로 또는 해시 또는 다른 방식으로 확인 될 수 있습니다. 예를 들어 어떤 방식으로는 의미있는 좋은 출력이어야한다는 것입니다. 키가 정확한지 여부를 결정하는 가장 좋은 방법 응답

:

암호화 기능하지 않으며 이러한 방법을 갖는 것이 필수적 공격자에게 침대를 제공함으로써 보안을 감소
  1. . Known-plaintext attack을 참조하십시오.

  2. 공격을 시작하는 것 외에는 올바른 키를 알고 사용합니다.

  3. 해독이 올바른지 판단 할 수 있어야하는 경우 데이터 또는 해시 값의 해시 등을 검사하여 암호 해독시 확인할 수있는 항목을 추가하십시오. 위의 1.을 참조하십시오. 보안 인증에 대한

  4. 는 브루스 슈나이어, 닐스 퍼거슨 감독에 의해 실제 암호화, 브루스 슈나이어, 응용 암호화의 수첩과 더 많은로 응용 암호화 같은 몇 가지 참조 중 하나를 참조하십시오.

일반적으로 실제 보안을 원하는 사람은 암호화 도메인 전문가입니다.

+0

감사합니다. 사용자 입력을 해싱하여 사용자 입력을 해시하고 암호화하기로 결정했습니다. 해독 및 해시 사용자 입력 및 해시 일치하는 경우 나는 확실히 성공적으로 해독했습니다. –