从shattered事件谈安全

从shattered事件谈安全

ID:33469101

大小:815.20 KB

页数:11页

时间:2019-02-26

从shattered事件谈安全_第1页
从shattered事件谈安全_第2页
从shattered事件谈安全_第3页
从shattered事件谈安全_第4页
从shattered事件谈安全_第5页
资源描述:

《从shattered事件谈安全》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.从SHAttered事件谈安全本文章来自于阿里云云栖社区摘要: 几日前Google的研究人员公开了2个PDF文件,笔者也第一时间下载并按提示检查了SHA-1的校验值。大新闻?在刚刚过去的2017年2月23日,CryptologyGroupatCentrumWiskunde&Informatica(CWI)和Google的研究人员公开了2个PDF文件,我也第一时间下载并按提示检查了SHA-1的校验值。文件内容和SHA1的结果如图1所示。...图1重现大新闻图1说明了一个很简单的事实:这是2个不同

2、的PDF文档,但是它们的SHA-1校验值是一样的。这个简单的事实(WehavebrokenSHA-1inpractice.)轰动了安全界,因为这说明世界上首次实际意义上公开的SHA-1的碰撞试验取得了成功。SHA-1是啥?一句话:SHA-1是Hash算法的中广泛使用的一种。哈希(Hash)又称为散列,或者杂凑,是一种算法。这种算法接受任意长度的数据输入,然后给出一个固定长度的输出。...图2Hash示意图如图2所示,Hash函数的输出反而没有特别的意义,一个设计一个优良的Hash函数,需要(尽量

3、)满足如下条件:·通过输入可以容易地计算出输出·很难从给定的输出反推出输入,即不可逆性·不能修改输入(哪怕是微小的修改)而使得输出不变·不能找出2个不同的输入,使得输出一样Hash的输出值(称为散列值或者数据的摘要)通常可以作为数据的指纹,这在密码学领域有重要的意义。SHA(SecureHashAlgorithm)是由NationalInstituteofStandardsandTechnology(NIST)制定的作为U.S.FederalInformationProcessingStanda

4、rd(FIPS)的散列函数家族。...图3SHA家族这次被发现碰撞的是SHA-1散列算法,是目前依然使用非常广泛的一种算法,它的输出是160个bits,图1中用了40个16进制数来表示。SHA-1被发现碰撞之所以能成为大新闻,和它的应用场景分不开。大新闻做了啥?虽然说在2005年文献[2]已经提出了复杂度小于的理论碰撞,在2013年文献[5]将这一数字优化到,但是他们都是理论分析,并没有给出实证。在不见棺材不掉泪的情况下,给出一个实例才是最好的。所以,Thefirstcollisionforfu

5、llSHA-1一文创造了第一个碰撞的实例。他们基于[5]的研究,使用一种名为相同前缀碰撞攻击(identical-prefixcollisionattack)的方法:...即2条消息的前缀P是一样的,主要寻找2个数据对使得2个完整消息的SHA-1输出相等,而后缀S可以是任意值。一旦这样的数据对找到,就严重违背了“不能找出2个不同的输入,使得输出一样”这一要求,也就宣布了SHA-1算法已经变得不安全。当然找到这样一个碰撞的难度很大,得益于研究人员对算法的不断优化和GPU技术的发展,现在终于实现了在

6、复杂度下的实际碰撞攻击。如果认为图1还是一个巧合的话(实际上这样的巧合发生概率趋近于0),论文中还给出了另外一组实例,如图4所示。图4SHA-1碰撞实例...这次的实际攻击是拿JPEG开刀,所以PDF中是2幅图像不同,也算是比较有视觉说服力的实例。按照惯例,这次碰撞攻击的细节(包括技术细节和源代码)将会在以后条件成熟时公开。以Git为例Git的本质是一种内容寻址的文件系统(Content-addressablefilesystem),也就是说Git内部是通过键值对的方式存储的,而检索的本质是通过

7、键来查找对应内容。因此向Git提交的任意内容,都会通过Hash算法得到一个唯一的键,以后可以通过这个键唯一地检索到存储的内容。而Git使用的Hash算法正是SHA-1。接下来验证这一点。以一个文件为例,Git对于该文件取Hash的方法如下:sha1(‘blob’+filesize+‘’+filedata)...图5Git中的Hash图5中,3个红框代表了3次hash操作。第一次是使用openssl提供的sha1算法计算hash第二次是git提供的hash-object方法计算hash第三次是

8、实际创建了一个仓库并在commit后检查hash三次计算的结果完全一致,说明了Git在内部完全依赖SHA-1算法作为其hash算法。实际上,Git并不关心文件或者处理的对象的名称,而只通过Hash值来区分他们。在Git的世界里,一个对象的Hash就是一个对象的唯一ID。如果ID可以伪造,那么就没有然后了。接下来分析Git在遇到Hash碰撞的时候如何处理。是不是很期待再来一发截图玩坏Git,然而现在并不行。实际情况由于碰撞需要的计算量依然远超过PC的能力,以及技术细节并没有完全公开,真实的情况还有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。