OpenSSL は正しい平文が生成されたにもかかわらず「不正な復号」と表示する

OpenSSL は正しい平文が生成されたにもかかわらず「不正な復号」と表示する

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 モードの「タグ」の処理方法を知らないことです (そのため、「bad decrypt」メッセージが表示されます)。タグは、暗号文の整合性を検証するため、セキュリティにとって重要です。

コマンドは動作しているように見えるかもしれませんが、実際には動作していません。基本的に、enc コマンドでは GCM モードを使用しないでください。

関連情報