RHEL 6.9에서 OpenSSL 1.0.1e-fips를 사용하고 있습니다.
다음 명령으로 파일을 암호화했습니다.
openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
그런 다음 다음 명령을 사용하여 암호화된 파일의 암호를 해독합니다.
openssl enc -aes-256-gcm -a -d -in ciphertext
이 명령은 다음과 같은 출력을 생성합니다.
test text
bad decrypt
파일이 제대로 해독되었으나(즉, 파일 내용이 실제로 "테스트 텍스트"임) OpenSSL에서 "잘못된 해독"을 보고합니다. 이는 사용할 해시 함수를 명시적으로 지정하는 경우에도 발생합니다(예:-md sha512).
"잘못된 암호 해독" 메시지가 나타나는 이유는 무엇입니까?
답변1
OpenSSL의 어떤 버전도 "enc" 명령줄 앱과 함께 AEAD 모드(GCM 포함)를 지원하지 않습니다. 현재 지원되는 모든 OpenSSL 버전은 다음 모드를 사용하여 암호화/해독을 시도하는 경우 오류 메시지를 표시합니다.
$ openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
enc: AEAD ciphers not supported
OpenSSL 1.0.1은 OpenSSL의 매우 오래된 버전이며 현재 프로젝트에서 지원되지 않습니다(Red Hat에서는 지원될 수 있음). 아주 오래된 버전의 OpenSSL에는 위의 경고를 생성하는 AEAD 검사가 없었고 어쨌든 암호화/해독을 시도했지만 잘못되었습니다. 가장 중요한 것은 "enc" 명령이 AEAD 모드의 "태그"를 처리하는 방법을 모른다는 것입니다(따라서 "잘못된 암호 해독" 메시지가 표시됩니다). 태그는 암호문의 무결성을 확인하므로 보안에 매우 중요합니다.
명령이 제대로 작동하는 것처럼 보이지만 실제로는 작동하지 않습니다. 기본적으로 enc 명령과 함께 GCM 모드를 사용하지 마십시오.