我知道,可以强制 GnuPG 使用 AES256 进行加密
gpg --cipher-algo AES256
或在~/.gnu/gpg.conf
.
但是,如果我错过了这个开关,GnuPG 的默认密码算法是什么?
我知道,可以强制 GnuPG 使用 AES256 进行加密
gpg --cipher-algo AES256
或在~/.gnu/gpg.conf
.
但是,如果我错过了这个开关,GnuPG 的默认密码算法是什么?
TL;DR:对于 GnuPG 1.0 和 2.0,默认为 Cast5,对于 GnuPG 2.1,默认为 AES-128。
默认情况下,GnuPG 将读取接收者的算法偏好并采用它支持的列表中的第一个算法(换句话说,它采用接收者要求的最优先支持的算法)。
如果没有给出偏好(或--symmetric
用于使用密码的对称加密),它会选择一个“安全”的。安全手段,必须或应该实施的手段。这是哪一个取决于 GnuPG 的版本和选择的兼容性级别。您可以通过启动对称加密并传递其中一个兼容性级别(或无,这意味着--gnupg
)轻松验证这一点:
gpg --verbose --symmetric
gpg: using cipher CAST5
另一方面,如果按照RFC 4880执行严格的 OpenPGP 合规性,它会下降到三倍 DES:
gpg --rfc4880 --verbose --symmetric
gpg: using cipher 3DES
这同样适用于使用--rfc2440
.
GnuPG 2.0 也使用 CAST5 和默认值--gnupg
,而这个默认值在 GnuPG 2.1 中更改为 AES-128:
LANG=C gpg2 --verbose --symmetric
gpg: using cipher AES
(没有进一步规范的 AES 表示 GnuPG 中的 AES-128)
GnuPG 2.1 对符合 RFC 的设置使用相同的算法。
对于摘要算法,执行类似的算法偏好推断。如果--verbose
设置为选项,则打印使用的算法。
一个例外是修改检测代码包,它只允许 SHA-1,没有标准定义的算法选择。
默认值必须已更改。gnupg-1.4.23 的默认值(2019 年初)是 AES128。gnupg-2.1.18 的默认值为 AES256。两个版本的手册页都声明默认值为 AES128,但对于 gnupg-2.1.18 是错误的。
要为您的 gnupg 版本自己回答这个问题,请执行以下操作:
echo hi > testfile
gpg -c -vv testfile
rm testfile testfile.gpg
输入密码两次后,它会说:
gpg: using cipher AES
gpg: writing to `testfile.gpg'
或者:
gpg: using cipher AES256
gpg: writing to 'testfile.gpg'
AES 表示 AES128。