恢復 SSH 私鑰?
我有一個 RSA 密鑰(由 PuTTYgen 生成),它設置為通過 SSH 登錄到一堆機器。或者更確切地說,我有這樣一把鑰匙。(它所在的電腦崩潰了,以至於需要重新安裝 XP。私鑰文件由文件系統加密,現在它基本上在看起來像整個其他作業系統和使用者的地方,無論 XP 會做什麼顯然不能再解密密鑰了。)
我剩下的是一個與 OpenSSL 兼容的 base64 公鑰(來自一台仍設置為接受密碼的機器),當然還有密鑰的密碼。我可能(!)在機器死之前還有一個舊的系統資料庫備份,但必須搜尋它。無論哪種方式,聽起來可能無法恢復密鑰文件本身。(如果可能的話,那就太好了。但到目前為止,前景看起來並不好。)
如果我無法恢復包含它的實際文件,有什麼方法可以恢復私鑰?也許通過將公鑰導入 PuTTYgen 或 openssl 並對其進行一些反向操作?聯繫所有相關管理員並向他們發送新密鑰可能會很痛苦,所以這幾乎是最後的手段。
目前,從公鑰中“恢復”私鑰的唯一方法是窮舉搜尋(蠻力)。該系統是專門以這種方式設計的,因此您可以向任何人發布您的公鑰,而不必擔心他們能夠找出您的私鑰。
編輯:
警告!前面的簡化解釋!
假設您有 RSA 密鑰(最常見的),公鑰中有兩個數字:n 和 e。私鑰具有相同的 n,以及另一個數字 d。最初有兩個巨大的素數 p 和 q 用於計算 n、d 和 e,以便 n 和 e 可以加密文本;n 和 d 可以解密密文。你有 n 和 e。您可以分解 n 來計算 p 和 q;問題是 n 是一個巨大的數字,有大量可能的 p 和 q 數字。目前沒有已知的方法可以快速做到這一點;我不確定黑客是否甚至為嘗試編寫工具而煩惱。所以從本質上講,不,這實際上是不可能的。
當您為密鑰分配密碼時,它只是對儲存在您電腦上的私鑰進行簡單的加密。公鑰完全不受此影響。與私鑰本身相比,密碼片語相對容易破解;所以這不應該被依賴於主要的安全性(你應該只將你的私鑰保存在安全的地方)。