如何更改 GnuPG 中现有 OpenPGP 密钥的个人密码/摘要首选项?

信息安全 哈希 密钥管理 pgp gnupg 密码选择
2021-08-18 18:17:54

OpenPGP 密钥包含个人算法偏好列表(数字的含义可以在RFC 4880中解码):

# gpg -a --export "foo@example.com" | gpg --list-packets | fgrep 'pref-'
hashed subpkt 11 len 5 (pref-sym-algos: 9 8 7 3 2)
hashed subpkt 21 len 5 (pref-hash-algos: 8 2 9 10 11)
hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)

如何更改现有密钥的首选项?

例如,假设我想更改pref-hash-algos为: SHA512 SHA256 SHA384(10, 8, 9)。

1个回答

OpenPGP 算法默认值

这些是您希望其他人在向您发送加密消息时使用的算法。要打印和更改这些设置,请使用gpg --edit-key [key-id]. 您可以以更易读的方式列出设置,而无需使用 RFC 4880 中查找算法 ID,showpref 然后使用 进行设置setpref

更改默认值

setpref不能仅更改某些首选算法(例如仅摘要算法),您必须同时列出所有三个类别。如果你省略了一些,它将退回到所有遵循 RFC 4880 的 OpenPGP 实现都必须提供的最通用的默认值。

一次又一次提出的示例行是

setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed

最少需要的算法集

但请注意,GnuPG 将自动添加3DESSHA1未压缩的,这些是所有实现必须或应该支持的最小算法集。如果您不选择任何压缩算法,ZIP 也会添加到列表中。您可以通过将其中任何一个设置为首选项来观察此默认设置,仅此而已:

gpg> setpref uncompressed 
Set preference list to:
     Cipher: 3DES
     Digest: SHA1
     Compression: Uncompressed
     Features: MDC, Keyserver no-modify

根据使用的合规性选项,默认值可能会有所不同。