如何將 RSA SSH 密鑰作為 primary 私鑰導入 GPG?
我目前有一個使用了一段時間的 SSH 密鑰,我想開始使用帶有新密鑰環的 GnuPG。但是,鑑於我已經使用我的密鑰多年,我仍想在 GPG 中使用該密鑰作為主/主密鑰。我嘗試通過這些說明導入密鑰。
但是,我最終得到了被認為是“子鍵”的東西。此外,如果我嘗試在不創建標準 GPG 密鑰的情況下導入它,GPG 甚至看不到這個子密鑰。(我假設子密鑰需要先由主密鑰簽名。)
如何將此密鑰用作 secring.gpg 中的主密鑰?
簡單的答案是:你沒有。
SSH 密鑰和 GnuPG(實際上是 OpenPGP)密鑰完全不同,儘管兩種協議都可以使用 RSA 密鑰對。
此外,*你為什麼要這樣做?*即使您要使用相同的密鑰材料來組成您的 PGP 密鑰,您仍然需要將您的密鑰作為 PGP 密鑰進行分發。您可能沒有將 SSH 公鑰分發給與您通信的人,因此從密鑰分發的角度來看,沒有區別:他們需要從您那裡接收公鑰。即使您一直在將 SSH 公鑰分發給其他人,他們也需要採取一些額外的步驟才能將其導入到他們的 OpenPGP 實現中,這可能很容易,也可能不容易。
正如kasperd非常正確地指出的那樣,必須只有一種方式來解釋(特別是)簽名。如果您要對 PGP 和 SSH 使用相同的密鑰,如果有人可以欺騙您在一個中籤署特製消息(這是某些簽名系統攻擊中的假設能力),那麼即使兩個系統在隔離時都是安全的可能有可能以一種在其中一個系統中具有一種含義但在另一個系統中具有不同含義的方式來製作這樣的消息。這本身就是一個漏洞。(可利用?誰知道呢。但為什麼要冒險呢?)
PGP 和 SSH 密鑰對都是長期密鑰,用於保護臨時(消息和會話)對稱密鑰,以及驗證遠端方的真實性。這使得 PGP 或 SSH 私鑰成為攻擊者比相應的對稱密鑰更高的價值目標。如果您對兩者使用相同的密鑰材料,並且攻擊者能夠意識到這一點,那麼它只會增加對該密鑰對的成功攻擊的價值。
在沒有詳細查看任一協議的情況下,我想認識到兩者都使用相同的密鑰材料可能相當簡單,因為公鑰基本上是明文傳輸的。
**只需生成一個新的 PGP 密鑰。**如果您願意,請將其設為 RSA,並且與您的 SSH 密鑰長度相同。(無論如何,沒有理智的人會比驗證指紋更仔細地查看它。)然後將公鑰分發給您希望與之通信的人,作為 PGP 密鑰。這對每個人來說都會更容易,而且很可能更安全,代價是系統隨機熵池中的少量熵無論如何都應該快速補充。
如果您的密鑰環**上有多個密鑰,**並且想要指定預設使用哪一個,請使用~/.gnupg/gnupg.conf 中的
default-key
和可能的指令。default-recipient{,-self}