我想创建一个具有更长密钥大小的新 GPG 密钥。
更换钥匙的最佳方法是什么?
我当前的密钥与 GitHub 等很多东西相关联。
我应该撤销旧密钥并用旧密钥签署新密钥吗?
那么最好的方法是什么。
更换GPG密钥的正确方法
关于你的问题
通过检查发布在公钥服务器上的密钥,我发现您已经发布了旧密钥的吊销证书。撤销证书包括新密钥的指纹。因此,您的方法似乎可以接受,并且可能比密钥翻转过程中的许多其他尝试更好。
个人密钥管理主要是基于意见的练习。建议比比皆是,有些似乎比其他更好。交叉签名公钥可能是一种更好的方法,无需借助第三方身份跟踪服务,例如keybase.io
仅在绝对必要时撤销密钥通常是个好主意,例如丢失的私钥或泄露的密钥。现代gpg
实现创建撤销证书作为密钥生成过程的一部分。在我的 Debian Buster 系统上,这些证书会自动存储在~/.gnupg/openpgp-revocs.d
So,只要保留撤销证书,就可以随意撤销已发布的公钥,无论是否记住密码或拥有私钥。
使旧密钥过期而不是撤销它们可能是一种更好的方法,因为 pgp 密钥上的过期日期可以很容易地随意更改并发布到公钥服务器而不会产生永久影响。
最后,始终保留旧钥匙。不要以为你不再需要它们而丢弃私钥。如果没有旧私钥,所有使用旧公钥加密的旧消息都将无法访问。
在公钥服务器上
任何人都可以将任何公钥发布到公钥服务器。因此,盲目信任在公钥服务器上发现的密钥并不是一个好主意。密钥服务器也散布着旧的、受损的、过期的和已撤销的密钥。很难弄清楚或验证密钥服务器上的给定密钥是否是与密钥上列出的身份信息进行通信的正确且当前的密钥。
最初的想法是,拥有密钥的人将在称为密钥签名方的面对面聚会中聚在一起,以签署彼此的密钥并建立信任网络。但是,密钥签名方并不常见,而且我遇到的大多数密钥都是自签名的,其他签名为零。因此,在一般实践中,信任网络不能很好地确定哪个密钥属于哪个身份以及哪个密钥是最新的密钥。
这些问题是 keybase.io 一直试图解决的一些问题。Keybase 用跨第三方 Web 服务(如 Github)的经过验证的身份跟踪取代了人与人之间的信任网络。但是,有效使用密钥库需要在跟踪您的 Web 服务上维护第三方帐户。因此,在线匿名对密钥库的使用造成了巨大的打击。有些人可能会说这是一个可以接受的权衡,而有些人可能不希望接受这种权衡。