【问题标题】:How to get a public OpenPGP key only knowing its fingerprint?如何获取仅知道其指纹的公共 OpenPGP 密钥?
【发布时间】:2016-01-22 07:42:39
【问题描述】:

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

如何获取对应的公钥?有没有在线服务可以做到这一点?

【问题讨论】:

    标签: cryptography gnupg public-key openpgp


    【解决方案1】:

    指纹与长短键 ID 的关系如何

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

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

    您可以使用 GnuPG 中的 --recv-keys 命令使用这些短 ID 和长 ID 中的任何一个来获取密钥,而指纹是最具体的(和 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 命令行界面将为你自动)。

    【讨论】:

      【解决方案2】:

      是的,这里有 servers。您可以像这样获取密钥:

      gpg --recv-keys <KEY_ID>
      

      更新seeKEY_ID如何与指纹互联:

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

      【讨论】:

      • 没有。我没有 。我只有指纹 (=hash(public_key))。
      猜你喜欢
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 2014-04-16
      • 2018-08-06
      相关资源
      最近更新 更多