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