RHEL6.9でOpenSSL1.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)。
「不正な復号化」メッセージが表示されるのはなぜですか?
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モードを使用しないでください。