从GPG公钥中恢复秘密密钥是否可能?

我丢失了我用于Launchpad和电子邮件加密的GPG密钥,以及整个~/.gnupg文件夹。我能使用公钥恢复它们吗?

2秘密钥匙之所以是秘密,是有原因的。不,你不能生成一个新的并使其完全相同,因为这样别人就能够生成你的秘密钥匙了。 - nanofarad
@ObsessiveFOSS 这是我的密钥,只有我知道这个秘密密钥(我猜这就是为什么它被称为秘密密钥)。我还记得解密/加密算法、电子邮件和密钥中使用的注释。现在,有了公钥,我能否重新生成秘密密钥呢? - sorush-r
@andrewsomething 不好意思,你提到的提问者在一台机器上有可用的密钥,但是我丢失了我的密钥。(电脑爆炸了) - sorush-r
1请不要关闭这个问题。这并不是重复的问题,因为提问者丢失了他的钥匙。无论如何,这将是一个关于钥匙丢失的好的标准问题。 - nanofarad
我修改了这个以使其更加规范。你介意这些修改吗? - nanofarad
3个回答

抱歉,但您无法找回密钥。这是设计上的限制。
RSA(以及DSA/ElGamal)算法被设计为必须同时生成密钥。存在一些未作为私钥或公钥的一部分存储的中间变量。由于公钥被设计为公开的,您不能从中推断出密钥,否则将存在巨大的安全漏洞。两个质数是根据随机数生成的。
此外,密钥的电子邮件/名称/描述与密钥的模(关键数据部分)无关。因此,如果没有备份,您无法恢复秘密密钥,至少不能在当前轻松地进行大数因式分解的情况下。口令用于通过从口令生成的另一个(对称的)密钥来保护密钥,但这个密钥和密码除了作为一个偶然的随机数据源之外,并不以任何方式影响模。
我能做些什么?
登录后,您可以前往Launchpad key management,撤销旧的密钥,并生成并发布新的密钥。您可以无限制地发布密钥。请确保进行安全备份,并确保没有人未经授权访问备份,并且备份中的密钥受到密码保护。

不,很难以再次生成相同的密钥。
但是,您可以按照以下步骤轻松导入/导出密钥:
导入密钥环(所有密钥):
只需将“~/.gnupg”目录从源计算机复制到目标计算机即可。
仅导入特定的密钥:
假设密钥名称为“ABCDFE01”。
将公钥和私钥导出到分别命名为“mygpgkey_pub.gpg”和“mygpgkey_sec.gpg”的文件中。
gpg --output mygpgkey_pub.gpg --armor --export ABCDFE01
gpg --output mygpgkey_sec.gpg --armor --export-secret-key ABCDFE01 

然后,将这些文件复制到目标计算机上,并运行:
gpg --import ~/mygpgkey_pub.gpg
gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg 

来源:http://www.ralree.com/2007/03/07/howto-export-and-import-private-gpg-keys/

是的,这就是为什么它的第一个词是“NO”。剩下的过程只适用于“导入/导出密钥”。 - green

打开Unity Dash并输入“seahorse”,它会列出“密码和应用程序”。点击打开。在“我的个人密钥”选项卡中,您可以看到您创建的密钥。选择该密钥,然后菜单中的“导出”选项将自动激活,选择导出按钮,然后将其保存到您想要的位置。
现在打开您希望导入此密钥的目标系统。同样按照上述相同的过程打开密码和应用程序。在该应用程序中,从主菜单选择文件,然后选择导入。通过这种方式,您可以选择从第一台计算机保存的密钥。
如果您需要更清晰的说明,请查看以下图片: enter image description here enter image description here enter image description here enter image description here

我丢失了我的密钥(整个~/.gnugpg目录)。我记得密码和详细信息,但新生成的密钥具有不同的指纹和公钥...因此,Launchpad不接受我的签名。 - sorush-r
4这个答案不适用于楼主,因为他/她已经完全丢失了钥匙。 - nanofarad