2013-07-03 2 views
58

PEM_read_bio_PrivateKey()은 개인 키가 DES EDE에 의해 ECB 모드로 암호화되는 경우 NULL을 반환합니다. 문제는 EVP_DecryptFinal_ex()에서 일어나는 : 같은 개인 키가 CBC 모드에서 DES EDE에 의해 암호화 된 경우ECB 모드에서 PEM_read_bio_PrivateKey()가 NULL을 반환합니다.

4128:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:330:

,이 기능은 확인을 작동합니다.

이 문제는 openssl 0.9.8r/y 버전 (FIPS 사용 안함)에서 재현 가능합니다. openssl이 FIPS로 빌드 된 경우 문제가 발생하지 않습니다.

이 동작을 일으키는 이유는 무엇입니까?

감사합니다.

+1

crypto.SE에 오신 것을 환영합니다. 귀하의 질문은 아마도 [openssl-users] (http://www.openssl.org/support/community.html) 메일 링리스트에 질문하는 데 더 적합 할 것입니다. – archie

+2

[적절한 알고리즘로드?] (http://www.openssl.org/docs/crypto/OpenSSL_add_all_algorithms.html) – javex

+0

예, OpenSSL_add_all_algorithms()를 호출합니다. 또한 개인 키를 읽을 올바른 암호가 선택되었는지 확인했습니다. FIPS에서만 작동한다는 것이 이상하게 보입니다. – Alex

답변

1

OpenSSL 소스를 보면 암호화 된 데이터의 패딩이 유효하지 않은 경우에만 발생할 수 있습니다. 다른 키를 사용하면이 문제가 발생합니까? 샘플을 제공 할 수 있습니까? 그런 키를 생성하는 데 사용되는 도구는 무엇입니까 (즉, 동일한 OpenSSL이든 아니든)? 아마도 패딩을 생략하거나 올바른 패딩 대신 제로 패딩을 씁니다.