用 PGP 保護代碼完整性(四):將主密鑰移到離線存儲中
在本系列教程中,我們為使用 PGP 提供了一個實用指南。你可以從下面的鏈接中查看前面的文章:
這是本系列教程的第四部分,我們繼續本教程,我們將談一談如何及為什麼要將主密鑰從你的家目錄移到離線存儲中。現在開始我們的教程。
清單
- 準備一個加密的可移除的存儲(必要)
- 備份你的 GnuPG 目錄(必要)
- 從你的家目錄中刪除主密鑰(推薦)
- 從你的家目錄中刪除吊銷證書(推薦)
考慮事項
為什麼要從你的家目錄中刪除你的主 [C] 密鑰 ?這樣做的主要原因是防止你的主密鑰失竊或意外泄露。對於心懷不軌的人來說,私鑰對他們具有很大的誘惑力 —— 我們知道有幾個惡意軟體成功地實現了掃描用戶的家目錄並將發現的私鑰內容上傳。
對於開發者來說,私鑰失竊是非常危險的事情 —— 在自由軟體的世界中,這無疑是身份證明失竊。從你的家目錄中刪除私鑰將幫你防範這類事件的發生。
備份你的 GnuPG 目錄
!!!絕對不要跳過這一步!!!
備份你的 PGP 密鑰將讓你在需要的時候很容易地恢復它們,這很重要!(這與我們做的使用 paperkey 的災難級備份是不一樣的)。
準備可移除的加密存儲
我們從取得一個(最好是兩個)小型的 USB 「拇指「 驅動器(可加密 U 盤)開始,我們將用它來做備份。你首先需要去加密它們:
加密密碼可以使用與主密鑰相同的密碼。
備份你的 GnuPG 目錄
加密過程結束之後,重新插入 USB 驅動器並確保它能夠正常掛載。你可以通過運行 mount
命令去找到設備掛載點的完全路徑。(在 Linux 下,外置介質一般掛載在 /media/disk
下,Mac 一般在它的 /Volumes
下)
你知道了掛載點的全路徑後,將你的整個 GnuPG 的目錄複製進去:
$ cp -rp ~/.gnupg [/media/disk/name]/gnupg-backup
(注意:如果出現任何套接字不支持的錯誤,沒有關係,直接忽略它們。)
現在,用如下的命令去測試一下,確保它們能夠正常地工作:
$ gpg --homedir=[/media/disk/name]/gnupg-backup --list-key [fpr]
如果沒有出現任何錯誤,說明一切正常。彈出這個 USB 驅動器並給它粘上一個明確的標籤,以便於你下次需要它時能夠很快找到它。接著,將它放到一個安全的 —— 但不要太遠 —— 的地方,因為從現在起,你需要偶爾使用它來做一些像編輯身份信息、添加或吊銷子證書、或簽署其它人的密鑰這樣的事情。
刪除主密鑰
我們家目錄中的文件並沒有像我們所想像的那樣受到保護。它們可能會通過許多不同的方式被泄露或失竊:
- 通過快速複製來配置一個新工作站時的偶爾事故
- 通過系統管理員的疏忽或惡意操作
- 通過安全性欠佳的備份
- 通過桌面應用中的惡意軟體(瀏覽器、pdf 查看器等等)
- 通過跨境脅迫
使用一個很好的密碼來保護你的密鑰是降低上述風險的一個很好方法,但是密碼能夠通過鍵盤記錄器、背後窺視、或其它方式被發現。基於以上原因,我們建議去配置一個從你的家目錄上可移除的主密鑰,將它保存在一個離線存儲中。
刪除你的主密鑰
請查看前面的節,確保你有完整的你的 GnuPG 目錄的一個備份。如果你沒有一個可用的備份,下面所做的操作將會使你的主密鑰失效!!!
首先,識別你的主密鑰的 keygrip:
$ gpg --with-keygrip --list-key [fpr]
它的輸出應該像下面這樣:
pub rsa4096 2017-12-06 [C] [expires: 2019-12-06]
111122223333444455556666AAAABBBBCCCCDDDD
Keygrip = AAAA999988887777666655554444333322221111
uid [ultimate] Alice Engineer <alice@example.org>
uid [ultimate] Alice Engineer <allie@example.net>
sub rsa2048 2017-12-06 [E]
Keygrip = BBBB999988887777666655554444333322221111
sub rsa2048 2017-12-06 [S]
Keygrip = CCCC999988887777666655554444333322221111
找到 pub
行下方的 Keygrip
條目(就在主密鑰指紋的下方)。它與你的家目錄下 .gnupg
目錄下的一個文件是一致的:
$ cd ~/.gnupg/private-keys-v1.d
$ ls
AAAA999988887777666655554444333322221111.key
BBBB999988887777666655554444333322221111.key
CCCC999988887777666655554444333322221111.key
現在你做的全部操作就是簡單地刪除與主密鑰 keygrip 一致的 .key
文件:
$ cd ~/.gnupg/private-keys-v1.d
$ rm AAAA999988887777666655554444333322221111.key
現在,如果運行 --list-secret-keys
命令將出現問題,它將顯示主密鑰丟失(#
表示不可用):
$ gpg --list-secret-keys
sec# rsa4096 2017-12-06 [C] [expires: 2019-12-06]
111122223333444455556666AAAABBBBCCCCDDDD
uid [ultimate] Alice Engineer <alice@example.org>
uid [ultimate] Alice Engineer <allie@example.net>
ssb rsa2048 2017-12-06 [E]
ssb rsa2048 2017-12-06 [S]
刪除吊銷證書
你應該去刪除的另一個文件是吊銷證書(刪除之前,確保你的備份中有它),它是使用你的主密鑰自動創建的。吊銷證書允許一些人去永久標記你的證書為吊銷狀態,這意味著它無論在任何用途中將不再被使用或信任。一般是使用它來吊銷由於某些原因不再受控的一個密鑰 —— 比如,你丟失了密鑰密碼。
與使用主密鑰一樣,如果一個吊銷證書泄露到惡意者手中,他們能夠使用它去破壞你的開發者數字身份,因此,最好是從你的家目錄中刪除它。
cd ~/.gnupg/openpgp-revocs.d
rm [fpr].rev
在下一篇文章中,你將學習如何保護你的子密鑰。敬請期待。
從來自 Linux 基金會和 edX 的免費課程 「Linux 入門」 中學習更多 Linux 知識。
作者:Konstantin Ryabitsev 譯者:qhwdw 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive