Paperkey

来自 Arch Linux 中文维基

Paperkey 是一个在纸上导出 GnuPG 密钥的命令行工具。它通过从私钥中删除公钥部分来减小导出密钥的大小。Paperkey 还在密钥中包含 CRC-24 校验和,以允许用户检查其私钥是否已正确恢复。

安装[编辑 | 编辑源代码]

安装软件包 paperkey

用法[编辑 | 编辑源代码]

备份[编辑 | 编辑源代码]

警告: 恢复纸质密钥备份时,您需要有可用的公钥!由于使公钥公开是安全的,故请考虑将其上传到公钥服务器

要创建 GnuPG 密钥的备份,请将私钥通过管道符传输到 paperkey:

$ gpg --export-secret-key key-id | paperkey --output secret-key-paper.asc

恢复私钥[编辑 | 编辑源代码]

要恢复密钥,您需要有一个包含 paperkey 数据和公钥的文件。然后运行以下命令将私钥导入 ~/.gnupg

$ paperkey --pubring public-key.gpg --secrets secret-key-paper.asc | gpg --import

或者,将私钥恢复到一个文件:

$ paperkey --pubring public-key.gpg --secrets secret-key-paper.asc --output secret-key.gpg

Error: unable to parse OpenPGP packets (is this armored data?)[编辑 | 编辑源代码]

如果在恢复密钥时收到此错误,则需要先解除(dearmor)公钥:

$ gpg --dearmor public-key.asc

提示和技巧[编辑 | 编辑源代码]

直接打印私钥[编辑 | 编辑源代码]

如果没有说明 --output 参数,paperkey 会将其输出打印到 stdout。可以直接打印密钥而无需中间文件,这可能会产生安全隐患。为此,请安装 CUPS,并通过管道符传输到 lpr

$ gpg --export-secret-key key-id | paperkey | lpr

将私钥转换成二维码[编辑 | 编辑源代码]

默认情况下,paperkey 会将密钥输出为可读的文本格式。虽然这种格式保证了有能力读取和恢复已打印出的信息,但它不是很方便。--output-type raw 选项告诉 paperkey 要输出原始(raw)密钥数据。这允许了其他编码方式的使用,包括计算机可读的编码,例如二维码

qrencode 程序可以这样使用:

$ gpg --export-secret-key key-id | paperkey --output-type raw | qrencode --8bit --output secret-key.qr.png

可以使用 --level H 选项将纠错级别提升到最大值。这可以恢复约 30% 的丢失数据,但代价是减少了二维码的容量。如果密钥不适合(高纠错级别的)二维码,也可以使用较低的 QM 纠错级别,恢复率分别约为 25% 和 15%。默认纠错级别为 L,允许恢复约 7% 的丢失数据。

从二维码恢复私钥[编辑 | 编辑源代码]

使用 zbar,可以使用相机恢复密钥:

$ zbarcam -1 --raw -Sbinary | paperkey --pubring public-key.gpg | gpg --import

相同的选项也适用于 zbarimg

$ zbarimg -1 --raw -q -Sbinary secret-key.qr.png | paperkey --pubring public-key.gpg | gpg --import
提示:使用 -q 选项运行 zbarimg 会在打印解码数据后禁止打印其状态文本。不使用该选项,传递到 paperkey 中的数据可能会被污染。

如果您使用的是扫描的图像,则可能必须通过此命令对其进行模糊处理。

$ convert secret-key.qr.png -blur 0 secret-key-blurred.qr.png