web-dev-qa-db-ja.com

OpenSSLは、正しい平文が生成されたにもかかわらず、「不正な復号化」と言います

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)。

「不正な復号化」メッセージが表示されるのはなぜですか?

1
Dave

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モードを使用しないでください。

2
Matt Caswell