看到网上一些对于MD5的介绍,还有对于当初王小云所做的破解有很多的误解,或者说不理解,然后觉得对于这些事情只要说明白,还是比较好理解的说。
首先MD5其实就是一种hash,或者叫散列函数,有的地方叫杂凑函数,都是一个东西,其实它就是一种映射,而平常最常见的就是说MD5是不可逆的,为什么不可逆呢?有人就说就是像有些函数没有反函数那样了,其实还是有点抽象,考虑MD5是多对一的映射,也就是说很多不同的经过MD5变换之后可能会是相同的,那么既然多对一,自然是不可逆啦,你怎么会知道他到底是由哪个变换过来的呢。在密码学的应用里,说是单向函数,或者说单向变换,一种是这种多对一不可逆,还有一种是说逆工程会非常困难,举个例子吧,假设f(x)=x^6-x-1,然后你知道f(1)=-1,在知道x=1和f的情况下计算f(1)是很简单的,而知道f(x)=-1和f去求x却是很困难的,这里就不展开说了,大家有个大体的认识就可以了。
刚才说过了由于MD5是多对一的,所以肯定会出现变换后的值是一样的情况,这种情况叫做冲突,或者叫碰撞。为了保证安全性,定义了两种,一种叫无弱碰撞,一种叫无强碰撞。
无弱碰撞是
1
2
3
4
|
已知函数M和一段数据H
找到一个H'
使得M(H)=M(H')
是难的
|
无强碰撞是
1
2
3
4
|
已知M
找到一对H和H'
使得M(H)=M(H')
是难的
|
很明显满足无强碰撞比满足无弱碰撞更难,真的吗?好吧,就不说明显了,为什么说无强碰撞更难呢,换句话说为什么找到强碰撞更简单呢,恩,这就涉及到生日悖论了,或者叫生日攻击了。
来想想以前的概率吧,假设一年365天,那么,至少有多少人使得有两人是同样生日的概率会超过1/2呢,直觉上应该是365/2个人吧,其实答案是23,少的夸张是吧,不然不会叫做悖论了啊,如何计算呢,其实我们是在求一个最小的n,使得1-(1-1/365)*(1-2/365)*…(1-(n-1)*365)>=1/2,随便写个程序验证下就知道是23了,什么你不知道这个式子怎么得来的,考虑第二个人不要和第一个人生日冲突的概率是(1-1/365)然后第三个人不和前两个人生日相同的概率是(1-2/365)后面就知道了吧。然后这个人数其实是O(sqrt(365))。那么回到前面的问题,假设映射空间,就是说最后能够得到的值的个数是m,那么弱碰撞的复杂度是O(m),而强碰撞呢是O(sqrt(m)),所以说找到强碰撞更简单,也就是说满足无强碰撞更难!
王小云的贡献呢就是找到了比生日攻击复杂度低得多算法来快速找到一对强碰撞,弱碰撞吗依旧是不行的。这里有她的论文,有兴趣的可以看一下。那么也就是说通过密文找到明文依旧是不可能的,并且弱碰撞依旧是很难的。
不过后来又有外国的nb人受到了王小云的启发,得到了一种很快的算法能够在已知前缀x1,x2的情况下构造一对后缀y1,y2使得M(x1y1)=M(x2y2),不过有两点需要注意,一个是他其实还是一种寻找强碰撞,另一个就是他的复杂度比王小云的直接构造高的多,然后这里有论文,然后利用这个搞了个预测2008年美国大选结果的东西,为啥叫预测呢,因为可以这样
因为我说我知道大选结果,但是必须事后公布,为了保证我没有说谎,我先给出一段MD5的值,之后给出我的结果,只要结果和MD5相同不就是我预测成功了吗
这个东西是基于我很难构造两个东西使得他们的MD5相同的基础上的,不过有了上面的算法,这个事情的复杂度大大降低,使得变为了可能。
那么这些破解对于我们有什么影响呢,首先需要认识到MD5有什么用,现在很多网站都用MD5来验证文件的完整性,但是你从非官方的地方下载了文件发现MD5相同,那么你依然不能掉以轻心,因为可能是通过上述算法而在程序里加入了某段病毒代码,但是MD5还是相同的而已,所以下文件还是从官方地址下吧,还一个就是经常在数字签名里使用了,至于不知道数字签名的这里先不说了,然后这个可以伪造数字签名啥的,不过传说现在貌似没谁用MD5来弄数字签名了,也不必太过担心了,基本就是这样子了。
原文链接:http://blog.jobbole.com/22105/
分享到:
相关推荐
### 深度官方系统MD5值解析 #### 背景介绍 在软件分发领域,特别是操作系统发行版的传播过程中,确保下载文件的完整性和安全性至关重要。MD5值作为一种常用的散列函数,在文件验证方面发挥着重要作用。深度科技...
本话题主要涉及两个关键知识点:MP3音乐信息解析和MD5信息加密。这两个概念在不同的场景下有着重要的作用。 首先,我们来谈谈“MP3音乐信息解析”。MP3是一种流行的音频压缩格式,它使用了有损压缩技术,能够在保持...
通过这份列表,我们能够了解到深度技术不同版本操作系统的MD5校验值,这对于用户在下载和安装过程中确保文件的完整性和未被篡改至关重要。同时,这些信息也为我们提供了关于如何使用MD5校验值来验证文件完整性的实际...
伺服驱动器MD500E技术手册:含foc控制算法解析、原理图与仿真资料集,伺服驱动器MD500E全套资料:深度解析foc控制算法及参数辨识等原理,含原理图仿真资料,伺服驱动器资料 md500e代码 MD500E代码方案和解析文档+原理...
《MD5校验工具——HashCalc深度解析》 在信息化高度发展的今天,数据的安全性和完整性至关重要。MD5(Message-Digest Algorithm 5)作为一种广泛使用的哈希函数,它能够为文件生成独一无二的数字指纹,以确保文件在...
MD500E全套开发方案:深度解析PMSM的FOC控制算法及多种控制算法集成,含原理图、仿真资料与完整解析文档,MD500E全套开发方案,代码方案和解析文档+原理图+仿真资料。 包含: pmsm的foc控制算法,电阻、电感、弱磁...
YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析YOLOv3深度解析...
### AS3 MD5姓名大战游戏源码解析与关键技术点 #### 一、游戏概述与原理 标题中的“AS3 MD5姓名大战”指的是一个使用ActionScript 3(简称AS3)编程语言开发的游戏,名为“姓名大战”。此游戏的核心玩法是通过随机...
包括FOC控制算法、磁链观测等算法与原理图、仿真资料集合,MD500E全套开发方案:深度解析PMSM的FOC控制算法及多种电力电子控制策略,含原理图、仿真资料与完整解析文档,MD500E全套开发方案,代码方案和解析文档+原理...
《Md5Checker V3:深度解析MD5校验工具及其应用》 在信息技术领域,数据的完整性和安全性至关重要。为了确保文件在传输或存储过程中的完整性,MD5(Message-Digest Algorithm 5)校验码作为一种广泛使用的哈希函数...
MD500E源码详解:涵盖FOC控制算法及多种电机控制功能,包含死区补偿与过调制限制等,MD500E源码深度解析:涵盖FOC控制算法及多种电机运行功能,包括无感与有感控制技术的解析文档,MD500E源码和代码解析文档 ...
在现代电气工程和电机控制领域,MD500E源码的深度解析显得尤为重要,特别是在理解和应用先进的控制算法方面。MD500E源码中涵盖的核心内容包括了同步机的矢量控制算法,亦即场定向控制(FOC)算法,它是电机控制领域...
"MD500E源码深度解析:涵盖FOC控制及多种电机运行算法,包含电阻、电感等算法详解与代码实现",MD500E源码和代码解析文档 代码包含了同步机FOC控制算法、电阻、电感、磁链、反电动势、死区补偿、过调制限制、弱磁等...
MD500E源码详解:涵盖FOC控制、电阻电感算法、反电动势补偿等功能的电机控制代码解析文档,MD500E源码深度解析:涵盖FOC控制算法及多种电机运行算法,包含电阻、电感等参数调整与死区补偿技术,MD500E源码和代码解析...
文档中还包含了数字频率计项目的深度解析,提供了有关如何将变频器与嵌入式技术结合实现频率测量的详细信息。通过对项目引言、原理到算法的深入解析,读者可以获得关于变频器在工业自动化领域的应用和技术发展的全面...
MD500E源码深度解析文档是一个集成了电机控制算法、电机运行策略、电机参数计算和应用支持的综合性资料。它是电机控制领域的研究者和工程师不可或缺的参考文献,对于深入掌握电机控制技术、优化电机性能具有重要的...
含PMSM控制算法、参数辨识、死区补偿等高级功能详解,汇川MD500E变频器开发方案:源码解析全套资料,含PMSM控制算法及参数辨识等深度技术内容,汇川MD500E变频器开发方案 源码+解析,全套齐全资料, 是资料,不是实物 ...
深度解析Spark五大大算子深度解析个人原创 内容详实 业界最全`spark`内置了非常多有用的算子,通过对这些算子的组合就可以完成业务需要的功能。 `spark`的编程归根结底就是对`spark`算子的使用,因此非常有必要熟练...
文档中包含了深度解析的部分,详细介绍了全套开发方案的每一个环节,帮助工程师理解技术背景和实现原理。此外,还包含了一系列的图片文件和文本文件,这些文件进一步细化了方案内容,使得开发者能够更好地掌握和应用...
深度解析蓝桥杯:从入门到精通,你的全面备考策略.md