是否可以產生沒有子金鑰的 GnuPG 金鑰?

是否可以產生沒有子金鑰的 GnuPG 金鑰?

我使用 PGP 和 GnuPG 已有 20 多年了,我最舊的金鑰自 1996 年以來仍在 MIT 伺服器上。

隨著時間的推移,密鑰變成了主密鑰和子密鑰對。這些年來我曾經不需要該子項功能。我個人也不認識任何使用過它的人。

我可能已經閱讀了為什麼“應該”使用子項的所有“充分理由”。但這些原因不適用於我。

例如,當加密金鑰被洩露時,子金鑰非常有用!但我的加密金鑰從未外洩。我也不知道誰有鑰匙。

或者說,這對於一個主金鑰與多個加密金鑰相關聯的組織來說是有好處的。我沒看過它。我想知道這個宇宙是否存在這樣的組織。從我所看到的來看,子金鑰的想法似乎是這樣的情況過度設計在現實生活中沒有或很少使用。也許這個想法只是 DSA/elGamal 方案的合理化。

無論如何,我正在開發一些不使用子金鑰的軟體。另外,我希望我的金鑰與 RetroShare 相容(安全的 p2p IM 聊天和文件交換,僅使用單一金鑰而不使用子金鑰。)

有誰知道是否有一種方法可以產生沒有子密鑰的密鑰。我只知道在 --edit-key 選單中刪除子項目的選項。我不知道沒有它們是否可以產生密鑰。有辦法嗎?非常感謝您為進一步理解這個問題提供的任何幫助。

答案1

使用子金鑰的優點

更好地使用子鍵的心態可能看起來像是過度設計,但有一些強有力的論點。當與 DSA 等僅簽名演算法一起使用時,其必要性是顯而易見的(且無需爭論)。當不嚴重依賴信任網路時,將私有主密鑰離線(並降低遺失風險)和更輕鬆地輪換密鑰的能力可能看起來非常重要。但還有其他原因:分開使用可能會降低同時使用加密和簽署時的風險。例如,曾經存在一個錯誤的隨機數和 DSA 金鑰的缺陷,在該缺陷中發出一堆簽名會洩露您的私鑰。如果該金鑰也用於加密,那麼您的私人通訊也會被洩露。當然,DSA 密鑰不能已經用於加密,但告訴RSA不會有類似的問題?

另一個例子:OpenSSH 有一些問題,可能會向金鑰伺服器洩漏您的 SSH 私鑰。我將 OpenPGP 身份驗證子金鑰與 Monkeysphere 一起使用,在這種情況下,我的身份驗證子金鑰將被洩露,而不是我的主金鑰。滾動式身分驗證子金鑰花了我五分鐘,分發全新的金鑰需要我一個小時(甚至更長)。

子項可能會增加一些複雜性,但您實際上看不到它,而且它運作得很好。計算和儲存開銷可以忽略不計,無需額外的手動工作。為什麼不「免費」獲得一些(可能的)額外福利呢?

無論如何都不使用它們

很可能有原因不是使用子項。也許您只想依賴 OpenPGP 基礎架構的某些部分,根本不關心信任管理和其他部分。如果您為其他人創建軟體,請考慮不要限制您的用戶:也許某些人簡單地提供子密鑰而不是創建完全不相關的密鑰對也是合理的?

產生沒有子金鑰的金鑰需要使用支援加密和簽署的演算法,RSA 可以(但 DSA 不可以)。若要產生沒有任何子項的「通用」主鍵,您必須使用--expert金鑰產生選單:

gpg --expert --gen-key

然後選擇(8)RSA(設定自己的能力)。您將能夠選擇金鑰的可能用途,其中C主金鑰需要(認證),S(簽章)、E(加密)和A(認證)可以任意選擇。完成助手的其餘部分,您將收到一個主密鑰,沒有任何具有所選功能的子密鑰。

答案2

@jens-erat 謝謝你的回答,我一直在尋找同樣的東西。僅記錄一個細節:

gpg --expert --gen-key

對我不起作用(GPG 2.2.4)。這有效:

gpg --expert --full-generate-key

相關內容