如何获取公共OpenPGP密钥只知道其指纹?

时间:2015-10-22 21:23:02

标签: cryptography gnupg public-key openpgp

我只有一个OpenPGP密钥的公共指纹。我不知道密钥ID或其他任何东西。

如何获取相应的公钥?有没有在线服务呢?

2 个答案:

答案 0 :(得分:4)

指纹和长短钥匙ID如何相关

每个OpenPGP密钥都附有指纹,主要根据其公钥包计算,该公钥包还包含创建时间。计算在RFC 4880, OpenPGP, 12.2. Key IDs and Fingerprints中定义。

有短和长密钥ID,类似于指纹的低32位64位。例如,查看我的OpenPGP密钥的ID:

fingerprint: 0D69 E11F 12BD BA07 7B37  26AB 4E1F 799A A4FF 2279
long id:                                    4E1F 799A A4FF 2279
short id:                                             A4FF 2279

使用指纹和密钥ID,因为共享和比较整个密钥通常为1024到8096位(为创建日期添加更多标题)非常不切实际。

从密钥服务器接收密钥

有许多用于分发密钥的密钥服务器 - 它们相互通信,选择其中任何一个。 GnuPG的选项--keyserver hkp://pool.sks-keyservers.net(通常在Linux的UNIX / UNIX系统的配置文件~/.gnupg/gpg.conf中设置,Windows上的另一个路径)使用一个池,每次使用它时都会选择一个随机的。

您可以使用完整指纹中的任何短ID和长ID来使用GnuPG中的--recv-keys命令获取密钥,而指纹是最具体的(和chances for collisions with short key IDs are highest)。

如果不存在冲突密钥,则以下语句将获取相同的密钥:

gpg --recv-keys 0D69E11F12BDBA077B3726AB4E1F799AA4FF2279
gpg --recv-keys 4E1F799AA4FF2279
gpg --recv-keys A4FF2279

如果要从浏览器查询密钥服务器,请确保搜索前缀为0x的指纹,长或短密钥ID,以指示搜索密钥ID(GnuPG命令行界面将执行这个为你自动)。

答案 1 :(得分:0)

是的,这有servers。你可以得到这样的关键:

gpg --recv-keys <KEY_ID>

更新see KEY_ID如何与指纹互连:

Fingerprint:    EC2392F2EDE74488680DA3CF5F2B4756ED873D23
Long Key ID:                            5F2B4756ED873D23
Short Key ID:                                   ED873D23