
我已經使用對稱加密對文件進行了加密,如下所示:
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
這不僅可以驗證文件的完整性,還可以使文件的接收者驗證來源。文件上的任何變更都會導致簽名檢查失敗。