我有一个 RSA 密钥(由 PuTTYgen 生成),用于通过 SSH 登录到一组机器。或者说,我有一个这样的密钥。(它所在的计算机崩溃了,以至于需要重新安装 XP。私钥文件由文件系统加密,现在它基本上位于看起来像是另一个操作系统和用户的地方,无论 XP 会做什么来解密密钥,显然都无法再做了。)
我剩下的是 OpenSSL 兼容的公钥的 base64(来自其中一台仍设置为接受密码的机器),当然还有密钥的密码。我可能(!)还有机器死机前的注册表旧备份,但必须搜索它。无论哪种方式,听起来都不可能恢复密钥文件本身。(如果它是有可能的话,那就太好了。但目前看来前景并不乐观。
如果我无法恢复包含私钥的实际文件,有什么方法可以恢复私钥吗?也许通过将公钥导入 PuTTYgen 或 openssl 并对其进行一些反向操作?联系所有相关管理员并向他们发送新密钥可能会很麻烦,所以这几乎是最后的手段。
答案1
目前,从公钥“恢复”私钥的唯一方法是通过穷举搜索(强力攻击)。系统专门设计为这样,你可以将公钥发给任何人,而不必担心他们能够找出你的私钥。
编辑:
警告!前方有简化解释!
假设您有 RSA 密钥(最常见的),公钥中有两个数字:n 和 e。私钥有相同的 n,以及另一个数字 d。最初有两个巨大的素数 p 和 q,用于计算 n、d 和 e,以便 n 和 e 可以加密文本;n 和 d 可以解密密文。您有 n 和 e。您可以分解 n 来计算 p 和 q;问题是 n 是一个非常大的数字,有大量可能的 p 和 q 数字。目前还没有已知的快速完成此操作的方法;我不确定黑客是否会费心编写工具来尝试。所以从本质上讲,不,这实际上是不可能的。
当您为密钥指定密码时,它只会对存储在您计算机上的私钥进行简单的加密。公钥完全不受此影响。与私钥本身相比,密码相对容易破解;因此不应将其作为主要安全性的依据(您应仅将私钥保存在安全的地方)。
答案2
我很确定如果您有公钥,就没有办法恢复私钥 - 否则这将是一个巨大的安全风险,因为任何拥有公钥的人都可以根据它确定私钥。
答案3
如果我理解正确的话,您希望从公钥生成兼容的私钥。如果这是可能的,那么整个系统就毫无意义了。如果您确实做到了,我想知道如何从银行的 SSL 证书生成银行的私钥。
答案4
您唯一可以快速完成的事情是生成一组新的私钥和公钥集并替换您尝试访问的服务器上的公钥,但是,要做到这一点,您必须能够物理访问之前存储公钥的服务器。
如果您无法物理访问这些机器,那么这对您来说几乎是不可能的。
此外,即使您可以物理访问服务器,如果硬盘或存储密钥的区域已加密,那么您几乎不可能做到这一点。
潘道格