題 是否可以在沒有子鍵的情況下生成GnuPG密鑰?


我已經使用PGP和GnuPG超過20年了,自1996年以來,我最老的密鑰仍在MIT服務器上。(沒有子密鑰的RSA 1024 ...)

隨著時間的推移,密鑰成為Main和Subkey對。 這些年來 我沒有一次需要這個子項 功能。 我也不認識任何使用它的人。

我可能已經閱讀了“為什麼”應該使用子鍵的所有“好理由”。但這些理由都沒有適用於我。

例如。當加密密鑰被洩露時,子鍵很棒!!!但我的加密密鑰從未受到過損害。我也不認識任何人的鑰匙。

或者據說對於一個主鍵與許多加密密鑰相關聯的組織是有益的。我沒看見過它。我想知道這個組織是否存在於這個宇宙的任何地方。 從我所看到的全部情況來看,這個子鍵的想法似乎是一個例子 過度工程 在現實生活中沒有或非常罕見的使用。 也許這個想法只是DSA / elGamal方案的合理化。

無論如何,我正在開發一些不使用Subkeys的軟件。 此外,我希望我的密鑰與RetroShare兼容(一個安全的p2p IM聊天和文件交換,只使用沒有子密鑰的單個密鑰。)

有沒有人知道是否有辦法生成沒有子鍵的鍵。 我只知道在--edit-key菜單中刪除子鍵的選項。我不知道沒有它們是否可以生成密鑰。 有辦法嗎? 非常感謝您幫助我們進一步了解這個問題。


2
2018-02-01 14:07


起源


請注意,RetroShare可能存在一些安全問題 specialmeaning.blogspot.com/2016/09/... - Sergei


答案:


使用Subkeys的優點

更好用 - 子鍵 - 心態可能看起來像過度工程,但有一些強有力的論據。與DSA等僅簽名算法一起使用的必要性是顯而易見的(而且沒有爭議)。在不嚴重依賴信任網絡的情況下,將私有主鍵脫機(並降低丟失風險)和旋轉密鑰更容易的能力可能看起來非常重要。但還有其他原因:分離使用可能會降低使用加密和簽名時的風險。例如,曾經存在一個帶有錯誤的隨機數和DSA密鑰的漏洞,其中發出一堆簽名顯示了您的私鑰。如果該密鑰也用於加密,那麼您的私人通信也會被洩露。當然,DSA密鑰 不能 已被用於加密,但告訴RSA不會出現類似的問題?

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

子鍵可能會增加一些複雜性,但你真的沒有看到它,它只是工作正常。計算和存儲開銷可以忽略不計,沒有額外的手動工作。為什麼不“免費”獲得一些(可能的)額外好處?

反正不使用它們

可能有原因  使用子鍵。也許你只想依賴OpenPGP基礎設施的某些部分,而不關心信任管理和其他部分。如果您為其他人創建軟件,請考慮不限制您的用戶:也許某些人只提供一個子密鑰而不是創建完全不相關的密鑰對也是合理的?

生成沒有子密鑰的密鑰需要使用支持加密和簽名的算法,RSA會這樣做(但DSA不會)。要生成沒有任何子鍵的“通用”主鍵,您必須使用 --expert 密鑰生成菜單:

gpg --expert --gen-key

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


2
2018-02-01 15:15



我們的軟件適用於即使我們提供額外功能也不會使用額外功能的非技術用戶。所以唯一相關的點是 潛在 您在DSA示例中概述的安全風險。但是,在GnuPG下使用RSA,主密鑰不用於簽名消息,而是簽名和加密都是子密鑰。因此,似乎即使RSA存在這樣的弱點,使用子鍵也不能保護我們免受它攻擊。如果這是真的,那麼我真的沒有看到使用子鍵的任何優勢,即我們軟件的上下文。我錯過了什麼嗎? - Vivarto