只知道公钥指纹如何获取公开的OpenPGP密钥?

4

我只有一份OpenPGP密钥的公共指纹,不知道密钥ID或其他任何信息。

我如何获取对应的公共密钥?是否有在线服务可以帮助我完成这个任务?

2个回答

6

指纹和长短密钥ID的关系

每个OpenPGP密钥都有一个指纹,主要是从其公钥数据包中计算出来的,该数据包还包含了创建时间。该计算方法在RFC 4880,OpenPGP,12.2.密钥ID和指纹 中定义。

有短密钥ID和长密钥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(通常在其配置文件~/.gnupg/gpg.conf中设置Linux/UNIX系统,Windows上的另一个路径)使用一个池,每次使用时将选择一个随机的密钥服务器。

您可以使用任何这些短或长ID或完整指纹,使用GnuPG中的--recv-keys命令获取密钥,而指纹是最具体的(并且与短密钥ID发生冲突的机会最高)。

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

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

如果您想从浏览器查询密钥服务器,请确保搜索指纹、长或短的密钥ID,前缀为0x以表示对密钥ID的搜索(GnuPG命令行界面会自动为您执行此操作)。

1

是的,有服务器可以实现这个功能。您可以像这样获取密钥:

gpg --recv-keys <KEY_ID>

更新: 查看 KEY_ID 如何与指纹相互关联:

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

不,我没有 <KEY_ID>。我只有指纹(=哈希(公钥))。 - igorpyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接