本文最后更新于 519 天前,其中的信息可能已经有所发展或是发生改变。
之前趁 Cloudflare 与 Yubico 联合举行促销活动,决定入手新的 Yubikey 5 来更换我手中的旧版 Yubikey(为了使用新的固件),等了两个月总算到了(海关与邮政整活整了一个月)。
但是迁移 GnuPG 密钥的时候出现了点问题,发现没有成功导入子私钥,这下出问题了,子私钥丢了需要吊销,需要重新分发新的子密钥,很麻烦,我以为我当初备份时忘记备份子密钥了(之前有个老密钥就是丢了子密钥),后来找到了一些资料,才发现其实是 GPG 出问题了,删掉密钥后重新导入就好了,但这也给我了一个提醒,备份私钥后要确保密钥是完整的,才算备份完成。
因此,在这里分享一个方法,来告诉大伙如何确保私钥的备份是完整的。
检查私钥文件
首先,你需要知道你自己的密钥有多少个子密钥,这里以 Alice (虚构的,经典密码学 Alice)的密钥为例子,Ta 的密钥有两个子密钥:
现在我们将 Alice 的私钥从 GnuPG 密钥环中导出,然后使用 --list-packets
命令检查私钥文件:
$ gpg -a -o ./Alice.private.keys --export-secret-keys Alice
$ gpg --list-packets ./Alice.private.keys
从命令输出中,可以找到两个“secret sub key packet”(tag
为 7)和主私钥对子密钥的签名,在 pkey[0]
和 pkey[1]
中还能得知子密钥的算法与子密钥的长度,只要子密钥的数量、算法和密钥长度都正确,那么这个私钥文件就是完整的私钥备份了。