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

近期,Google和荷兰国家数学和计算机中心(Centrum Wiskunde & Informatica,CWI)的研究人员完成了针对第一例SHA-1的碰撞攻击,创造了两个hash值完全相同但内容截然不同的文件。然而,在真实的信息安全世界中,这种攻击又会怎样对个人和组织机构造成何种威胁呢?

对SHA-1算法不安全的担心由来已早。在2015年荷兰国家数学和计算中心和新加坡南洋理工大学研究员联合发表的论文中,描述了SHA-1碰撞攻击的各种理论性可能。同时,在RSA 2016的密码学家研讨会上,该篇论文得到了很多关注,参会的著名密码学专家Adi Shamir也预测,真实的SHA-1碰撞攻击在未来几个月将会成功实现。在此次会议之后,一些安全公司正式对外宣布SHA-1机制可能存在缺陷;与此同时,因为没有真实的攻击成功案例,这种攻击也带来了诸多质疑。

但为了防止任何理论攻击可能,去年开始,一些安全公司开始反对继续使用SHA-1算法。尽管谷歌、Facebook、微软和Mozilla等公司已采取措施替换SHA-1算法,但哈希函数仍在广泛使用。当Google和CWI的实验成功之后,SHA-1碰撞攻击再次受到关注。这种攻击已经成为现实,所以,我们应该如何去防范和修复呢?

影响分析

几年前,针对MD5算法存在“构造前缀碰撞攻击”(chosen-prefix collisions),而真实案例中,Flame(火焰)病毒就使用了此种攻击方法。SHA-1碰撞攻击实现后,恶意软件开发者将会创造什么样的病毒,值得想像。

在此,我们就针对一些利用微软签名校验的恶意程序,结合SHA-1碰撞作一些攻击可能的探讨。为了说明SHA-1碰撞攻击的现实威胁,我们找到了一例很有趣的例子:微软内核模式代码签名策略,攻击针对目标是加载的内核模式驱动程序签名认证,以下是包括WIN 10在内的该类签名规范和要求:

我们可以看到,其中列出的哈希机制就包括SHA-1,所以,毫无疑问,SHA-1碰撞攻击将会产生驱动签名滥用情况,为恶意内核代码程序的利用传播敞开大门。事实上,SHA-1签名校验的驱动程序并不少见,以下就是一些我们发现的实例:

在Win 10系统中,这类存在“风险隐患”的驱动程序是不是就非常少呢?但由于存在很多第三方驱动,所以,情况让你超乎想像。虽然微软在最新的系统适配产品中明确反对SHA-1机制认证程序,但很多第三方驱动依然大范围存在此种情况。另外,在一些之前的操作系统版本(Win 7Win 8)中,还存在着大量且多年未更新的此类驱动。例如:

从这里就可以看出,SHA-1将会成为很多组织机构和相关系统的一个心头大患。受影响的系统和服务包括:数字证书签名、邮件、PGP/GPG 签名、软件发布签名、备份系统、冗余热备份系统、Git……等等,除了网络安全之外,影响将会波及很多使用传统操作系统的大型组织机构。这种很多第三方软件公司持续使用的,运行机制本身就存在的问题,将会成为一个严重的信息安全问题。要保证安全,只有从核心和本质上进行处理,但对很多软件公司来说,这又会成为一个“牵一发动全身”的棘手问题。
深入研究之后,我们甚至发现一些固件和硬件也受到此问题影响。例如,普遍使用的仅支持SHA-1验证的TPM 1.2芯片,SHA-1碰撞攻击将会直接对一些使用SHA-1算法的固件可信启动机制造成影响。在这方面,微软在Win10系统中已经作了一些限制,如其加密方式不支持TPM1.2芯片。

SHA-1碰撞攻击的恶梦才刚刚开始,我们应该尽快结束使用SHA-1的时代。谷歌将在接下来的90天内公布SHA-1碰撞攻击的测试工具。

SHA-1碰撞会被用到一些野生攻击中吗?

证据表明,攻击者必须在拥有原始文件和已知哈希的情况下才能完成碰撞攻击,另外,由于攻击利用了定向编辑,不是每次编辑都会有效。换句话说,即使是破解了SSH或TLS的认证证书,也都不可能实现,需要对原始文件进行一些非常细微的定向更改才能保证碰撞攻击成功。

虽然在某种程度上来说,更改签名验证很容易实现,但如果要进行伪装式的SHA-1碰撞攻击,想要让受害者迷惑,完全对看不出马脚,这就需要对利用文档进行破坏性的改造,而不只是通常性修改。后续可能会有一些针对SHA-1碰撞攻击的检测研究。

总体上来说,要实现该项攻击需要很大的代价成本。如果攻击者使用类似于比特币挖矿的专业装备和技能,攻击可能将会变得更加便捷。Google和CWI声称,该攻击实现需要大量的CPU和GPU计算,同时还需高效的分布式操作,攻击第一阶段攻击是在Google的异质CPU集群上进行的,并扩展至8个物理地址;第二阶段攻击代价更高,是在Google的K20、K40和K80异质GPU集群上进行的。经相关研究人员计算得出,使用亚马逊云服务AWS进行第二阶段的攻击,耗资约56万美元。但是,若攻击者足够耐心并利用现场参考案例,成本可降至11万美元。

如何修复和预防这种攻击呢?

作为安全和开发团队来说,最好的方法就是使用SHA-256等更复杂的算法,或使用两个独立的加密算法。当然,对于攻击检测来说,仍然可以使用Google发布的开源检测代码。

本文来自开源中国社区 [http://www.oschina.net]

时间: 2024-11-10 12:27:01

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

一种高级的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),任何

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

针对开发人员的碰撞攻击让我们发现Pretty Good Privacy(PGP)短ID的漏洞,该漏洞允许攻击者创建假ID密钥,这会给收件人解密或验证邮件制造问题.那么,这个漏洞的工作原理是什么,以及为什么短密钥ID会成为问题? Michael Cobb:当为电子邮件.文档或文件创建哈希值或者消息摘要时,需要通过使用密码散列函数来生成内容的短数字指纹,这种数学算法会将任意大小的数据映射到短的固定长度值作为其唯一标识.哈希值被广泛用于安全的很多方面,例如数字签名和数据完整性检查,人们通常会精心选择散

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 确实需要替换

PHP Hash Collision攻击原理

之前介绍了所有语言通用的Hash Collision攻击原理 一种高级的DoS攻击-Hash碰撞攻击 ,介绍的比较宽泛.因为Java相关的Hash Collision文章比较少,所以最先写了Java的攻击原理 Java Hash Collision之数据生产. 网上关于PHP Hash Collision的文章特别多,得益于很多年前鸟哥的一篇文章 PHP数组的Hash冲突实例,因为这篇文章让行业内的PHPer们都愿意花时间去了解. 哈希表是一种查找效率极高的数据结构,PHP中的哈希表用于表示Ar

史上最牛的五次黑客攻击

好莱坞认为,黑客就像是使用计算机的黑魔导士.在电影中,计算机可以炸毁房屋.关闭公路.释放瘟疫还有引发女权运动.也许有人认为,好莱坞的想象力很丰满,但现实是骨感的.他们错了,因为在现实中,确实也有如电影所描述的黑客行动,而且刺激程度绝对不亚于电影.本文中笔者总结出史上最牛的五次黑客攻击. 1.逻辑炸弹引爆西伯利亚 在1982年,里根政府的CIA发现了克格勃(前苏联著名情报机构)从西方窃取技术已经很多年了.对此,美国中央情报局决定给克格勃设一个巨大的陷阱,而这个陷阱很有可能是历史上第一次使用的木马病

5次史上著名的黑客攻击

好莱坞认为,黑客就像是使用计算机的黑魔导士.在电影中,计算机可以炸毁房屋,关闭公路,释放瘟疫还有引发女权运动.也许有人认为,好莱坞的想象力很丰满,但现实是骨感的.他们错了,因为在现实中,确实也有如电影所描述的黑客行动,而且刺激程度绝对不亚于电影. 1.逻辑炸弹引爆西伯利亚 在1982年,在里根gov的CIA发现了克格勃窃取从西方窃取技术已经很多年了.对此,美国中央情报局决定给克格勃设一个巨大的陷阱,而这个陷阱很有可能是历史上第一次使用的木马病毒.当时他们对于KGB要偷的东西已经有些了解,所以他们