使用 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

背景

CAST-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

这不仅可以验证文件的完整性,还可以让文件的接收者验证来源。对文件的任何更改都会导致签名检查失败。

相关内容