Paperkey
Paperkey 是一個在紙上導出 GnuPG 密鑰的命令行工具。它通過從私鑰中刪除公鑰部分來減小導出密鑰的大小。Paperkey 還在密鑰中包含 CRC-24 校驗和,以允許用戶檢查其私鑰是否已正確恢復。
安裝[編輯 | 編輯原始碼]
用法[編輯 | 編輯原始碼]
備份[編輯 | 編輯原始碼]
警告: 恢復紙質密鑰備份時,您需要有可用的公鑰!由於使公鑰公開是安全的,故請考慮將其上傳到公鑰伺服器。
要創建 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% 的丟失數據,但代價是減少了二維碼的容量。如果密鑰不適合(高糾錯級別的)二維碼,也可以使用較低的 Q
和 M
糾錯級別,恢復率分別約為 25% 和 15%。默認糾錯級別為 L
,允許恢復約 7% 的丟失數據。
從二維碼恢復私鑰[編輯 | 編輯原始碼]
$ 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