歡迎光臨
每天分享高質量文章

用 PGP 保護程式碼完整性(二):生成你的主金鑰 | Linux 中國

在本文中,我們將展示如何生成和保護你的 PGP 主金鑰。
— Konstantin Ryabitsev


致謝
編譯自 | https://www.linux.com/blog/learn/PGP/2018/2/protecting-code-integrity-pgp-part-2-generating-and-protecting-your-master-pgp-key 
 作者 | Konstantin Ryabitsev
 譯者 | kimii ? ? 共計翻譯:9 篇 貢獻時間:125 天

在本系列文章中,我們將深度探討如何使用 PGP 以及為工作於自由軟體專案的開發者提供實用指南。在前一篇文章中,我們介紹了基本工具和概念[1]。在本文中,我們將展示如何生成和保護你的 PGP 主金鑰。

清單

☉ 生成一個 4096 位的 RSA 主金鑰 (必要)
☉ 使用 paperkey 備份你的 RSA 主金鑰 (必要)
☉ 新增所有相關的身份 (必要)

考慮事項

理解“主”(認證)金鑰

在本節和下一節中,我們將討論“主金鑰”和“子金鑰”。理解以下內容很重要:

☉ 在“主金鑰”和“子金鑰”之間沒有技術上的區別。
☉ 在建立時,我們賦予每個金鑰特定的能力來分配功能限制。
☉ 一個 PGP 金鑰有四項能力

◈ [S] 金鑰可以用於簽名
◈ [E] 金鑰可以用於加密
◈ [A] 金鑰可以用於身份認證
◈ [C] 金鑰可以用於認證其他金鑰
☉ 一個金鑰可能有多種能力

帶有 [C] (認證)能力的金鑰被認為是“主”金鑰,因為它是唯一可以用來表明與其他金鑰關係的金鑰。只有 [C] 金鑰可以被用於:

◈ 新增或撤銷其他金鑰(子金鑰)的 S/E/A 能力
◈ 新增、更改或撤銷金鑰關聯的身份(uid)
◈ 新增或更改本身或其他子金鑰的到期時間
◈ 為了網路信任目的為其它金鑰簽名

在自由軟體的世界裡,[C] 金鑰就是你的數字身份。一旦你建立該金鑰,你應該格外小心地保護它並且防止它落入壞人的手中。

在你建立主金鑰前

在你建立的你的主金鑰前,你需要選擇你的主要身份和主密碼。

主要身份

身份使用郵件中發件人一欄相同格式的字串:

  1. Alice Engineer <alice.engineer@example.org>

你可以在任何時候建立新的身份,取消舊的,並且更改你的“主要”身份。由於主要身份在所有 GnuPG 操作中都展示,你應該選擇正式的和最有可能用於 PGP 保護通訊的名字和郵件地址,比如你的工作地址或者用於在專案提交commit時簽名的地址。

密碼

密碼passphrase專用於私鑰儲存在磁碟上時使用對稱加密演演算法對其進行加密。如果你的 .gnupg目錄的內容被洩露,那麼一個好的密碼就是小偷能夠線上假冒你的最後一道防線,這就是為什麼設定一個好的密碼很重要的原因。

一個強密碼最好使用豐富或混合的詞典的 3-4 個詞,而不取用自流行來源(歌曲、書籍、口號)。由於你將相當頻繁地使用該密碼,所以它應當易於輸入和記憶。

演演算法和金鑰強度

儘管現在 GnuPG 已經支援橢圓曲線加密一段時間了,但我們仍堅持使用 RSA 金鑰,至少較長一段時間會這樣。雖然現在就可以開始使用 ED25519 金鑰,但你可能會碰到無法正確處理它們的工具和硬體裝置。

在後續的指南中我們說 2048 位的金鑰對 RSA 公鑰加密的生命週期已經足夠,你可能也會好奇主金鑰為什麼是 4096 位。 原因很大程度是由於社會因素而非技術上的:主金鑰在金鑰鏈上是最顯眼的,如果你的主金鑰位數比一些和你互動的開發者的少,他們肯定會鄙視你。

生成主金鑰

為了生成你的主金鑰,請使用以下命令,並且將 “Alice Engineer” 替換為正確值。

  1. $ gpg --quick-generate-key 'Alice Engineer ' rsa4096 cert

這將彈出一個要求輸入密碼的對話方塊。然後,你可能需要移動滑鼠或隨便按一些鍵才能生成足夠的熵,直到該命令完成。

檢視命令輸出,它就像這樣:

  1. pub rsa4096 2017-12-06 [C] [expires: 2019-12-06]

  2. 111122223333444455556666AAAABBBBCCCCDDDD

  3. uid Alice Engineer <alice@example.org>

註意第二行的長字串 —— 它是你新生成的金鑰的完整指紋。金鑰 ID(Key ID)可以用以下三種不同形式表達:

◈ 指紋Fingerprint,一個完整的 40 個字元的金鑰識別符號
◈ 長金鑰 IDLong,指紋的最後 16 個字元(AAAABBBBCCCCDDDD)
◈ 短金鑰 IDShort,指紋的最後 8 個字元(CCCCDDDD)

你應該避免使用 8 個字元的短金鑰 ID,因為它們不足夠唯一。

這裡,我建議你開啟一個文字編輯器,複製你新金鑰的指紋並貼上。你需要在接下來幾步中用到它,所以將它放在旁邊會很方便。

備份你的主金鑰

出於災後恢復的目的 —— 同時特別的如果你試圖使用 Web of Trust 並且收集來自其他專案開發者的金鑰簽名 —— 你應該建立你的私鑰的硬複製備份。萬一所有其它的備份機制都失敗了,這應當是最後的補救措施。

建立一個你的私鑰的可列印的硬複製的最好方法是使用為此而寫的軟體 paperkeypaperkey 在所有 Linux 發行版上可用,在 Mac 上也可以透過 brew 安裝 paperkey

執行以下命令,用你金鑰的完整指紋替換 [fpr]

  1. $ gpg --export-secret-key [fpr] | paperkey -o /tmp/key-backup.txt

輸出將採用易於 OCR 或手動輸入的格式,以防如果你需要恢復它的話。打印出該檔案,然後拿支筆,併在紙的邊緣寫下金鑰的密碼。這是必要的一步,因為金鑰輸出仍然使用密碼加密,並且如果你更改了金鑰的密碼,你不會記得第一次建立的金鑰是什麼 —— 我保證。

將列印結果和手寫密碼放入信封中,並存放在一個安全且保護好的地方,最好遠離你家,例如銀行保險庫。

印表機註意事項 印表機連線到計算機的並行埠的時代已經過去了。現在他們擁有完整的作業系統,硬碟驅動器和雲整合。由於我們傳送給印表機的關鍵內容將使用密碼進行加密,因此這是一項相當安全的操作,但請使用您最好的偏執判斷。

新增相關身份

如果你有多個相關的郵件地址(個人、工作、開源專案等),你應該將其新增到主金鑰中。你不需要為任何你不希望用於 PGP 的地址(例如,可能不是你的校友地址)這樣做。

該命令是(用你完整的金鑰指紋替換 [fpr]):

  1. $ gpg --quick-add-uid [fpr] 'Alice Engineer '

你可以檢視你已經使用的 UID:

  1. $ gpg --list-key [fpr] | grep ^uid

選擇主 UID

GnuPG 將會把你最近新增的 UID 作為你的主 UID,如果這與你想的不同,你應該改回來:

  1. $ gpg --quick-set-primary-uid [fpr] 'Alice Engineer '

下次,我們將介紹如何生成 PGP 子金鑰,它是你實際用於日常工作的金鑰。

透過 Linux 基金會和 edX 的免費“Introduction to Linux” [2]課程瞭解關於 Linux 的更多資訊。


via: https://www.linux.com/blog/learn/PGP/2018/2/protecting-code-integrity-pgp-part-2-generating-and-protecting-your-master-pgp-key

作者:KONSTANTIN RYABITSEV[4] 譯者:kimii 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂