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