我在 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 版本支援任何 AEAD 模式(包括 GCM)與「enc」命令列應用程式結合使用。如果您嘗試使用此模式進行加密/解密,目前所有支援的 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 模式的「標籤」(因此您會看到「錯誤解密」訊息)。該標籤對於安全性至關重要,因為它驗證密文的完整性。
該命令可能看起來有效 - 但事實並非如此。基本上不要將 GCM 模式與 enc 指令一起使用。