我了解密钥块本身和密钥哈希值的实用性,但我不知道为什么需要额外的信息,所以我无法猜测额外信息的实用性。
具体来说,
- 这意味着什么,
- 它在哪里使用,
- (如何)根据公钥块来确定?
人们往往会在旁提及,这会导致混淆,因为很明显太空行走认识到指纹和身份证之间的区别, 尽管Fedora 发布的一些 GPG 文档包括短语
对于 KEYNAME,请替换主密钥对的密钥 ID 或指纹,
这使得两者看起来具有相同的用途;但这没有任何意义,因为如果是这样的话,为什么一开始就需要两者呢?
答案1
从RFC 4880:
V4 指纹是八位字节 0x99 的 160 位 SHA-1 哈希,后跟两个八位字节的数据包长度,然后是从版本字段开始的整个公钥数据包。密钥 ID 是指纹的低 64 位。
对于 V3 密钥,计算类似,但省略了密钥长度。
换句话说,指纹是根据一个常数、数据包长度以及公钥数据包的一部分计算出来的。有关所包含内容(以及如何计算)的进一步解释,请参阅链接的 RFC。
(长)密钥 ID 由最低 64 位表示,由于完整指纹是一个不方便且很长的值,因此使用。更常见的是,使用由最低 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
十六进制值作为前缀。