如何让PGP短密钥ID免于碰撞攻击?

简介:

针对开发人员的碰撞攻击让我们发现Pretty Good Privacy(PGP)短ID的漏洞,该漏洞允许攻击者创建假ID密钥,这会给收件人解密或验证邮件制造问题。那么,这个漏洞的工作原理是什么,以及为什么短密钥ID会成为问题?

Michael Cobb:当为电子邮件、文档或文件创建哈希值或者消息摘要时,需要通过使用密码散列函数来生成内容的短数字指纹,这种数学算法会将任意大小的数据映射到短的固定长度值作为其唯一标识。哈希值被广泛用于安全的很多方面,例如数字签名和数据完整性检查,人们通常会精心选择散列函数以确保它们有较强的抗碰撞性--即两个不同的输入无法创建相同的散列值,因为攻击者的碰撞攻击会试图寻找具有相同散列值的两组不同数据片段。

而PGP是对消息或文件进行加密和数字签名的加密工具,PGP的用户会有公钥和私钥,公钥通常在密钥服务器发布。由于这些密钥都非常长(通常为1024至8096位),所以我们通常使用公钥的指纹或哈希值来标记密钥,让某些密钥管理工作更容易和更快速,例如验证属于其他用户的密钥或者验证证书颁发机构。然而,当转换为十六进制数字时指纹为40位,这对于人类来说仍然太长而难以使用,因此人们和很多应用仅使用指纹的最后八位数。这被称为短密钥ID--长ID是指指纹的最后16位数字。下面是例子:

指纹: 0D29 F56F 12BD BA07 7B37 15AB 851F 799A B4FF 1057

长ID: 851F 799A B4FF 1057

短ID: B4FF 1057

虽然现代密钥散列函数几乎不存在具有相同哈希值的两个输入,但两个哈希值最后八位数相同的几率还是很高。事实上,我们已经发现很多具有相同短密钥ID的欺骗性PGP密钥。

多年来,大家已经知道这种碰撞攻击成功的可能性。在2011年,软件工程师Asheesh Laroia有效证明了这种攻击的可行性,这个问题在“RFC 4880:OpenPGP Message Format”3.3章节中也有提及--“不应该假定密钥ID为唯一标识”。尽管如此,使用短密钥ID仍然是常见做法,并构成真正威胁,特别是当涉及文件下载的完整性时,例如Linux内核。

尽管PGP本身没有缺陷或漏洞,但使用短密钥ID基本上是不安全的糟糕做法。用户不应该信任比公共PGP密钥完整指纹更短的ID用于验证;密钥ID的目的是帮助搜索密钥,而不是验证它。用户和软件都需要开始显示和检查完整指纹,或者至少使用长ID。长密钥ID也可能存在碰撞,但可能性较小。软件开发人员应该明确编写或重新编写代码以包含整个指纹,毕竟云计算使得攻击者可为长密钥ID生成碰撞攻击。现在那些将PGP密钥短ID印在名片背面的PGP支持者们可能会想要增加指纹的前两位来帮助他人验证其密钥。


作者:佚名

来源:51CTO

相关文章
|
8月前
|
算法 数据安全/隐私保护 Python
数字签名是一种用于验证数据完整性和来源身份的技术。它基于公钥密码学,允许数据的发送方使用其私钥对数据进行签名,而接收方则可以使用发送方的公钥来验证签名的有效性。
数字签名是一种用于验证数据完整性和来源身份的技术。它基于公钥密码学,允许数据的发送方使用其私钥对数据进行签名,而接收方则可以使用发送方的公钥来验证签名的有效性。
|
9月前
|
存储 算法 安全
RSA密码系统的特定密钥泄露攻击与Coppersmith方法的应用
`PrimiHub`是一个由密码学专家团队开发的开源隐私计算平台,关注数据安全、密码学、联邦学习和同态加密等领域。文章探讨了RSA公钥加密算法的安全性,指出大整数分解难题是其基础,但Coppersmith方法在特定条件下能威胁RSA。方法利用数论和格约简(如LLL算法)寻找模多项式方程的近似根,可用于小公开指数或低位泄露攻击。当RSA密钥部分泄露时,攻击者可尝试恢复完整密钥。为增强RSA安全性,应使用更长的密钥,选择合适公钥指数,并保护私钥不泄露。随着量子计算发展,后量子密码学成为研究焦点。
229 2
|
8月前
|
算法 安全 数据安全/隐私保护
支付系统---微信支付09------数字签名,现在Bob想要给Pink写一封信,信件的内容不需要加密,怎样能够保证信息的完整性,使用信息完整性的主要手段是摘要算法,散列函数,哈希函数,H称为数据指纹
支付系统---微信支付09------数字签名,现在Bob想要给Pink写一封信,信件的内容不需要加密,怎样能够保证信息的完整性,使用信息完整性的主要手段是摘要算法,散列函数,哈希函数,H称为数据指纹
|
Java 测试技术 数据安全/隐私保护
华为OD:敏感字段加密
华为OD:敏感字段加密
179 0
|
网络安全 数据安全/隐私保护
《网络安全0-100》密钥分配协议
《网络安全0-100》密钥分配协议
137 0
《网络安全0-100》密钥分配协议
|
算法 网络安全 数据安全/隐私保护
【计算机网络】网络安全 : 公钥分配 ( 公钥使用者 | 公钥分配 | CA 证书格式 | CA 证书吊销 )
【计算机网络】网络安全 : 公钥分配 ( 公钥使用者 | 公钥分配 | CA 证书格式 | CA 证书吊销 )
315 0
|
并行计算 网络安全 数据库
网络安全实验五 密钥与加解密(一)
网络安全实验五 密钥与加解密(一)
317 0
|
存储 安全 算法
【计算机网络】网络安全 : 对称密钥分配 ( 密钥分配 | 密钥分配中心 KDC | 对称密钥分配 | 密钥分配协议 | Kerberos 协议 )
【计算机网络】网络安全 : 对称密钥分配 ( 密钥分配 | 密钥分配中心 KDC | 对称密钥分配 | 密钥分配协议 | Kerberos 协议 )
653 0
【计算机网络】网络安全 : 对称密钥分配 ( 密钥分配 | 密钥分配中心 KDC | 对称密钥分配 | 密钥分配协议 | Kerberos 协议 )
|
算法 网络安全 数据安全/隐私保护
【计算机网络】网络安全 : 公钥密码体质 ( 公钥 - 加密密钥 | 私钥 - 解密密钥 | 与对称密钥体质对比 | 特点 | 数字签名引入 )
【计算机网络】网络安全 : 公钥密码体质 ( 公钥 - 加密密钥 | 私钥 - 解密密钥 | 与对称密钥体质对比 | 特点 | 数字签名引入 )
324 0
密钥原理,公钥和私钥的作用
说明: 下面流程图中说到的支付宝私钥是不对外开放的,商户自己的私钥也要注意保密不要对外展示,否则会影响账号安全!  一般我们会看到4个密钥      rsa_private_key              商户私钥 :        适用开发语言php ,.net等。
1804 12