本页使用了标题或全文手工转换

公开密钥指纹

维基百科,自由的百科全书
跳转至: 导航搜索
Application-pgp-keys.svg

公开密钥加密中,公开密钥指纹(下称:公钥指纹)是用于标识较长公共密钥字节的短序列。指纹通过应用加密散列函数到一个公共密钥来实现。[1]由于指纹较比生成它们的密钥短得多,因此可以用来简化某些密钥的管理任务。

创建公钥指纹[编辑]

生成公钥指纹的概括步骤如下:

  1. 公钥(以及任选的一些额外数据)被编码成一个字节序列,以确保同一指纹以后在相同情况下可以创建,因此编码必须是确定的,并且任何附加的数据必须与公共密钥一同存放。附加数据通常是使用此公共密钥的人应该知道的信息,如:密钥持有人的身份(此情况下,X.509信任固定的指纹,且所述附加数据包括一个X.509自签名证书[2]
  2. 在前面步骤中产生的数据被散列加密,如使用SHA-1SHA-2
  3. 如果需要,散列函数的输出可以缩短,以提供更方便管理的指纹。

产生的短指纹可用于验证一个很长的公共密钥。例如,一个典型RSA公共密钥的长度会在1024位以上,MD5或SHA-1的指纹却只有128或160位。

当指纹被显示时,通常被编码成十六进制字符串。然后,这些字符串格式化成可读性字符组。例如,如一个128位的MD5指纹SSH将被显示为:

 43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

使用公钥验证[编辑]

实例[编辑]

安全性[编辑]

公钥指纹主要的安全威胁是原像攻击英语Preimage attack,攻击者构造一个密钥对,与受害者可生成的指纹相匹配,即可能伪装成受害者;某些系统的第二个威胁是碰撞攻击英语Collision attack,这可能允许攻击者否认他所创造的签名,或导致其他混淆。[3]

在指纹长度必须不惜一切代价最小化的情况下,在技术上,如使用散列扩展可提升安全性。

参见[编辑]

参考资料[编辑]

  1. ^ 舍得333. SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解. 开源中国社区. 2014-12-22 [2016-04-01]. 
  2. ^ Adams, C.; Farrell, S.; Kause, T.; Mononen, T. Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP). RFC. 2005 (英语). 
  3. ^ 陈, 少晖. Hash函数MD5攻击技术研究. 西安: 知网空间. 2012.