是否可以从 GPG 公钥中恢复私钥?

sor*_*h-r 12 pgp gnupg data-recovery

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

nan*_*rad 13

@andrewsomething 不。你提到的提问者[原文如此],有[原文如此] 在一台机器上可用的密钥。但我丢了钥匙。(电脑炸了)

抱歉,您无法取回钥匙。这是设计使然。

RSA(和 DSA/ElGamal)算法经过精心设计,因此必须同时生成密钥。存在不作为私钥或公钥的一部分存储的中间变量。因为公钥是为了公开而制作的,你不能从中推断出私钥,否则会有一个巨大的安全漏洞。这两个素数是由随机数产生的。

此外,密钥电子邮件/名称/描述与模数(密钥的“肉质”数据部分)无关。因此,您无法在没有备份的情况下恢复您的密钥,至少在不分解现在无法轻松完成的大数字的情况下无法恢复。密码短语用于使用从密码短语生成的另一个(对称)密钥来保护密钥,但是除了随机数据的杂散源之外,此密钥和密码都不会以任何方式影响模数。

我能做什么?

您可以在通过用户名和密码登录后进入 Launchpad密钥管理,撤销您的旧密钥。然后制作并发布新密钥。您可以发布的密钥数量没有限制。进行安全备份,确保没有人未经授权访问备份,并且备份中的密钥受密码保护。


gre*_*een 10

不,您极不可能再次生成相同的密钥。

但是,您可以按照以下步骤轻松导入/导出密钥:

导入密钥环(所有密钥)

只需将~/.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 
Run Code Online (Sandbox Code Playgroud)

然后,将这些文件复制到目标计算机,并运行:

gpg --import ~/mygpgkey_pub.gpg
gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg 
Run Code Online (Sandbox Code Playgroud)

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