使用 GPG 對稱加密時如何修復「警告:訊息未受到完整性保護」?

使用 GPG 對稱加密時如何修復「警告:訊息未受到完整性保護」?

我已經使用對稱加密對文件進行了加密,如下所示:

gpg --symmetric myfile

這會產生一個文件myfile.gpg.

好吧。現在讓我們再次解密該檔案:

gpg -o myfile --decrypt myfile.gpg

系統要求我輸入我設定的密碼,然後我看到

gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected

我不確定那裡的第一行和最後一行。

  • 什麼是 CAST5 密碼?我了解 3DES 和 AES,我知道它們是安全的。
  • 為什麼不保護它的完整性?
  • 此外,我該如何解決這個問題?

答案1

背景

鑄造5是 GnuPG 使用的一種較舊的加密演算法,因為在 GnuPG 最初創建時 AES 還不存在來源。它沒有被廣泛使用(除了出於兼容性原因的 GnuPG 之外)。

WARNING: message was not integrity protected是因為加密時預設未啟用此功能。如果開啟此功能,GnuPG 可以判斷檔案在傳輸過程中是否已變更。

更新:Ubuntu/Debian 附帶的現代版本的 GnuPG 現在具有 MDC預設啟用對於使用這些較新版本簽署的任何內容,您將永遠不會再看到此訊息。

解決方案

要使用更強的 AES-256,您必須在命令列或設定檔中指定它。

  • 命令列:新增--cipher-algo AES256選項,以便加密的整行變成

    gpg -o myfile.gpg --cipher-algo AES256 --symmetric myfile
    
  • 設定檔(建議):將以下行新增到您的~/.gnupg/gpg.conf設定檔中。

    cipher-algo AES256
    

    我推薦這種方法,因為它將用於該使用者帳戶上的所有未來 GPG 操作。

用戶無需進行任何更改即可解密檔案 - GnuPG 會自動偵測到這一點。

請注意,使用 AES-256 密碼,會自動保護訊息的完整性。若要手動啟用未啟用此功能的其他密碼(例如 CAST-5)的完整性保護,請--force-mdc在加密時新增此選項。

更好的是:簽名!

更好的方法是使用金鑰對(如果有)對文件進行簽署。只需將--sign選項新增至加密命令中,如下所示:

gpg -o myfile.gpg --cipher-algo AES256 --sign --symmetric myfile

這不僅可以驗證文件的完整性,還可以使文件的接收者驗證來源。文件上的任何變更都會導致簽名檢查失敗。

相關內容