什么是OpenPGP / GnuPG密钥ID?

Modified on: Sun, 10 Mar 2019 15:20:02 +0800

我理解密钥块本身的实用程序以及密钥的哈希值,但我不知道为什么需要额外的信息,所以我无法开始猜测其他信息的效用。

具体地,

  • 它意味着什么,
  • 在哪里使用,
  • (如何)可以在给定公钥块的情况下确定?

它往往被切向和顺便提及,这导致混淆,因为很明显spacewalk识别指纹和ID之间的差异,同时Fedora提供的一些GPG文档包括短语

  

对于KEYNAME,请替换主密钥对的密钥ID或指纹

这使得两者似乎有着共同的目的;但这没有意义,因为如果是这样的话,你为什么要两个都开始?

最佳答案

来自RFC 4880

  

V4指纹是八位字节0x99的160位SHA-1哈希,
  然后是两个八位字节的数据包长度,然后是整个数据包
  从版本字段开始的公钥包。密钥ID是
  指纹的低位64位。

对于V3键,计算类似,但省略了密钥长度。

换句话说,指纹是从常量,包长度和最后一部分公钥包计算的。进一步解释链接RFC中包含的内容(以及如何计算)。

(长)密钥id由最低64位表示,并用作完整指纹是一个unhandy和long值。更常见的是,使用由最低32位形成的短密钥id。这些短密钥ID通常被认为具有过高的冲突机会至少使用长ID,如果不是甚至是完整的指纹,建议使用。

回顾几句:

指纹是从公钥包计算的哈希值。密钥ID是指纹的一部分:

Fingerprint: 0D69 E11F 12BD BA07 7B37  26AB 4E1F 799A A4FF 2279
Long key ID:                                4E1F 799A A4FF 2279
Short key ID:                                         A4FF 2279

有时,ID会以0x为前缀,因为它们是十六进制值。

作者:,Jens Erat

相关问答

添加新评论