如何让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

时间: 2024-11-03 20:47:14

如何让PGP短密钥ID免于碰撞攻击?的相关文章

开发者最好停止使用短密钥 ID

通常有三种方式指代PGP/GPG密钥:短密钥ID.长密钥ID和完整指纹.因为短密钥ID最便于使用,因此它的使用也是最广.但短密钥ID不可避免会容易发生"碰撞". Debian开发者Enrico Zini报告发现了两个密钥共享相同的短ID,在联络了其中一位密钥所有者之后对方表示对第二个密钥不知情.我们不知道幕后者是谁,或是出于什么动机,只知道看起来很邪恶.Gunnar Wolf发表了一篇博文呼吁开发者尽可能快的停止使用短密钥ID. 文章转载自 开源中国社区[http://www.osch

警告:MySQL-server-5.5.46-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

CentOS安装rpm安装MySQL时爆出警告: 警告:MySQL-server-5.5.46-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY 原因:这是由于yum安装了旧版本的GPG keys造成的 解决办法:后面加上  --force --nodeps 如:  rpm -ivh MySQL-server-5.5.46-1.linux2.6.x86_64.rpm --force --nodeps 从 RP

SHA-1 碰撞攻击将会对我们产生怎样的现实影响?

近期,Google和荷兰国家数学和计算机中心(Centrum Wiskunde & Informatica,CWI)的研究人员完成了针对第一例SHA-1的碰撞攻击,创造了两个hash值完全相同但内容截然不同的文件.然而,在真实的信息安全世界中,这种攻击又会怎样对个人和组织机构造成何种威胁呢? 对SHA-1算法不安全的担心由来已早.在2015年荷兰国家数学和计算中心和新加坡南洋理工大学研究员联合发表的论文中,描述了SHA-1碰撞攻击的各种理论性可能.同时,在RSA 2016的密码学家研讨会上,该篇

一种高级的DoS攻击-Hash碰撞攻击

这是迄今为止第一个让我觉得后怕的攻击方式,涉及的范围广难以防御,攻击效果立竿见影.大量的网站和Web接口都未做Hash碰撞攻击的防御,一拿一个准. 随着RESTful风格的接口普及,程序员默认都会使用json作为数据传递的方式.json格式的数据冗余少,兼容性高,从提出到现在已被广泛的使用,可以说成为了Web的一种标准.无论我们服务端使用什么语言,我们拿到json格式的数据之后都需要做jsonDecode(),将json串转换为json对象,而对象默认会存储于Hash Table,而Hash T

PHP哈希表碰撞攻击原理

最近哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招.本文结合PHP内核源码,聊一聊这种攻击的原理及实现. 哈希表碰撞攻击的基本原理 哈希表是一种查找效率极高的数据结构,很多语言都在内部实现了哈希表.PHP中的哈希表是一种极为重要的数据结构,不但用于表示Array数据类型,还在Zend虚拟机内部用于存储上下文环境信息(执行上下文的变量及函数均使用哈希表结构存储). 理想情况下哈希表插入和查找操作的时间复杂度均为O(1),任何

Linus Torvalds 回应 SHA-1 碰撞攻击:不必过于担忧

Google 与 CWI Institute 合作演示了对 SHA-1 的碰撞攻击,公布了两个 SHA-1 哈希值相同但内容不同的PDF 文件.这一消息在 Git 社区引发了 Git 对象碰撞攻击可能性. Git 作者 Linus Torvalds 对此回应称 Git 不用担忧 SHA-1 碰撞攻击.他解释说,git 不只是哈希数据,还预留一个类型/长度字段,增加了碰撞攻击的难度,相比之下 pdf 文件使用了一个固定的头,为了实现相同的哈希值攻击者可以在里面加入任意的静默数据.所以 pdf 文件

PHP内核探索:哈希表碰撞攻击原理_php实例

下面通过图文并茂的方式给大家展示PHP内核探索:哈希表碰撞攻击原理. 最近哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招.本文结合PHP内核源码,聊一聊这种攻击的原理及实现.  哈希表碰撞攻击的基本原理 哈希表是一种查找效率极高的数据结构,很多语言都在内部实现了哈希表.PHP中的哈希表是一种极为重要的数据结构,不但用于表示Array数据类型,还在Zend虚拟机内部用于存储上下文环境信息(执行上下文的变量及函数均使用哈希表结

SHA1 碰撞攻击的第一位受害者:WebKit 版本控制系统

SHA1 碰撞攻击出现了第一位受害者:WebKit 项目使用的开源版本控制系统 Apache SVN(或 SVN).在某人上传 Google 公布的两个 SHA-1 值相同但内容不同的 PDF 文件后,版本控制系统出现严重问题.SVN 使用 SHA1 去跟踪和合并重复的文件.SVN 维护者已经释出了一个脚本工具拒绝 SHA1 碰撞攻击所生成的 PDF 文件. 与此同时,版本控制系统 Git 的作者 Linus Torvalds 在其 Google+ 账号上称,天没有塌下来,Git 确实需要替换

短信退订——钓鱼攻击出现新方式

近日,一种利用短信回复"TD(退订)"发起的新型网络诈骗方式引起了关注.当用户短信回复"TD"退订不想收到的资讯时,自己银行账户中的资产也随之卷走.趋势科技安全专家在分析此类事件后得出,这是一起复杂的短信验证码钓鱼事件,网络不法分子通过环环相扣的攻击方式窃取用户网银资产.鉴于此类网络钓鱼案件增加,趋势科技建议用户在收到此类信息时,切勿冒然点击或是回复,并最好使用云安全的防毒软件进行防范. 在这起短信验证码钓鱼事件中,受害者收到了多条订阅短信,以及一条来自运营商.包含