`
zu14
  • 浏览: 459028 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

MD5加密算法被中国人破解【HASH 系列加密有待重新构思】

阅读更多

密码学领域重大发现:山东大学王小云教授成功破解MD5 <!---->
<!---->
2004-09-04 09:39 <!---->

  2004年8月17日的美国加州圣巴巴拉,正在召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告。在会场上,当她公布了MD系列算法的破解结果之后,报告被激动的掌声打断。王小云教授的报告轰动了全场,得到了与会专家的赞叹。报告结束时,与会者长时间热烈鼓掌,部分学者起立鼓掌致敬,这在密码学会议上是少见的盛况。王小云教授的报告缘何引起如此大的反响?因为她的研究成果作为密码学领域的重大发现宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。会议总结报告这样写道:“我们该怎么办?MD5被重创了;它即将从应用中淘汰。SHA-1仍然活着,但也见到了它的末日。现在就得开始更换SHA-1了。”
    
     关键词:碰撞=漏洞=别人可以伪造和冒用数字签名。
     Hash函数与数字签名(数字手印)
     HASH函数,又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,它有一种类似于指纹的应用。在网络安全协议中,杂凑函数用来处理电子签名,将冗长的签名文件压缩为一段独特的数字信息,像指纹鉴别身份一样保证原来数字签名文件的合法性和安全性。在前面提到的SHA-1和MD5都是目前最常用的杂凑函数。经过这些算法的处理,原始信息即使只更动一个字母,对应的压缩信息也会变为截然不同的“指纹”,这就保证了经过处理信息的唯一性。为电子商务等提供了数字认证的可能性。
     安全的杂凑函数在设计时必须满足两个要求:其一是寻找两个输入得到相同的输出值在计算上是不可行的,这就是我们通常所说的抗碰撞的;其二是找一个输入,能得到给定的输出在计算上是不可行的,即不可从结果推导出它的初始状态。现在使用的重要计算机安全协议,如SSL,PGP都用杂凑函数来进行签名,一旦找到两个文件可以产生相同的压缩值,就可以伪造签名,给网络安全领域带来巨大隐患。
     MD5就是这样一个在国内外有着广泛的应用的杂凑函数算法,它曾一度被认为是非常安全的。然而,王小云教授发现,可以很快的找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另外一份具有相同签名但内容迥异的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安全,这一发现使目前电子签名的法律效力和技术体系受到挑战。因此,业界专家普林斯顿计算机教授Edward Felten等强烈呼吁信息系统的设计者尽快更换签名算法,而且他们强调这是一个需要立即解决的问题。
    
     国际讲坛 王氏发现艳惊四座
     面对Hash函数领域取得的重大研究进展,Crypto 2004 会议总主席StorageTek高级研究员Jim Hughes 17 日早晨表示,此消息太重要了,因此他已筹办该会成立24年来的首次网络广播(Webcast )。Hughes在会议上宣布:“会中将提出三份探讨杂凑碰撞(hash collisions )重要的研究报告。”其中一份是王小云等几位中国研究人员的研究发现。17日晚,王小云教授在会上把他们的研究成果做了宣读。这篇由王小云、冯登国、来学嘉、于红波四人共同完成的文章,囊括了对MD5、HAVAL-128、 MD4和RIPEMD四个著名HASH算法的破译结果。在王小云教授仅公布到他们的第三个惊人成果的时候,会场上已经是掌声四起,报告不得不一度中断。报告结束后,所有与会专家对他们的突出工作报以长时的热烈掌声,有些学者甚至起立鼓掌以示他们的祝贺和敬佩。当人们掌声渐息,来学嘉教授又对文章进行了一点颇有趣味的补充说明。由于版本问题,作者在提交会议论文时使用的一组常数和先行标准不同;在会议发现这一问题之后,王小云教授立即改变了那个常数,在很短的时间内就完成了新的数据分析,这段有惊无险的小插曲倒更加证明了他们论文的信服力,攻击方法的有效性,反而凸显了研究工作的成功。
     会议结束时,很多专家围拢到王小云教授身边,既有简短的探讨,又有由衷的祝贺,褒誉之词不绝。包含公钥密码的主要创始人R. L. Rivest和A. Shamir在内的世界顶级的密码学专家也上前表示他们的欣喜和祝贺。
     国际密码学专家对王小云教授等人的论文给予高度评价。
     MD5的设计者,同时也是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest在邮件中写道:“这些结果无疑给人非常深刻的印象,她应当得到我最热烈的祝贺,当然,我并不希望看到MD5就这样倒下,但人必须尊崇真理。”
     Francois Grieu这样说:“王小云、冯登国、来学嘉和于红波的最新成果表明他们已经成功破译了MD4、MD5、HAVAL-128、RIPEMD-128。并且有望以更低的复杂度完成对SHA-0的攻击。一些初步的问题已经解决。他们赢得了非常热烈的掌声。”
     另一位专家Greg Rose如此评价:“我刚刚听了Joux和王小云的报告,王所使用的技术能在任何初始值下用2^40次hash运算找出SHA-0的碰撞。她在报告中对四种HASH函数都给出了碰撞,她赢得了长时间的起立喝彩,(这在我印象中还是第一次)。…… 她是当今密码学界的巾帼英雄。……(王小云教授的工作)技术虽然没有公开,但结果是无庸质疑的,这种技术确实存在。…… 我坐在Ron Rivest前面,我听到他评论道:‘我们不得不做很多的重新思考了。’”
    
     石破惊天 MD5堡垒轰然倒塌
     一石击起千层浪,MD5的破译引起了密码学界的激烈反响。专家称这是密码学界近年来“最具实质性的研究进展”,各个密码学相关网站竞相报导这一惊人突破。
     MD5破解专项网站关闭
     MD5破解工程权威网站http://www.md5crk.com/ 是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang, Feng, Lai与Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。……由于这个里程碑式的发现,MD5CRK项目将在随后48小时内结束”。
     对此,http://www.readyresponse.org主页专门转载了该报道http://www.aspenleaf.com/distributed/distrib-recent.html和几个其它网站也进行了报道。
     权威网站相继发表评论或者报告这一重大研究成果
     经过统计,在论文发布两周之内,已经有近400个网站发布、引用和评论了这一成果。国内的许多新闻网站也以“演算法安全加密功能露出破绽 密码学界一片哗然”为题报道了这一密码学界的重大事件。(报导见http://www.technewsworld.com/perl/board/mboard.pl?board=lnitalkback&thread=895&id=896&display=1&tview=expanded&mview=flat,该消息在各新闻网站上多次转载。)
    
     东方神韵  MD5终结者来自中国
     MD5破解工作的主要成员王小云教授是一个瘦弱、矜持的女子,厚厚的镜片透射出双眸中数学的灵光。她于1990年在山东大学师从著名数学家潘承洞教授攻读数论与密码学专业博士,在潘先生、于秀源、展涛等多位著名教授的悉心指导下,她成功将数论知识应用到密码学中,取得了很多突出成果,先后获得863项目资助和国家自然科学基金项目资助,并且获得部级科技进步奖一项,撰写论文二十多篇。王小云教授从上世纪90年代末开始进行HASH函数的研究,她所带领的于红波、王美琴、孙秋梅、冯骐等组成的密码研究小组,同中科院冯登国教授,上海交大来学嘉等知名学者密切协作,经过长期坚持不懈的努力,找到了破解HASH函数的关键技术,成功的破解了MD5和其它几个HASH函数。
     近年来她的工作得到了山东大学和数学院领导的大力支持,特别投资建设了信息安全实验室。山东大学校长展涛教授高度重视王小云教授突出的科研成果。 2004年6月山东大学领导听取王小云教授的工作介绍后,展涛校长亲自签发邀请函邀请国内知名信息安全专家参加2004年7月在威海举办的“山东大学信息安全研究学术研讨会”,数学院院长刘建亚教授组织和主持了会议,会上王小云教授公布了MD5等算法的一系列研究成果,专家们对她的研究成果给予了充分的肯定,对其坚持不懈的科研态度大加赞扬。一位院士说,她的研究水平绝对不比国际上的差。这位院士的结论在时隔一个月之后的国际密码会上得到了验证,国外专家如此强烈的反响表明,我们的工作可以说不但不比国际上的差,而且是在破解HASH函数方面已领先一步。加拿大CertainKey公司早前宣布将给予发现MD5算法第一个碰撞人员一定的奖励,CertainKey的初衷是利用并行计算机通过生日攻击来寻找碰撞,而王小云教授等的攻击相对生日攻击需要更少的计算时间。
    
     数字认证 你的未来不是梦
     由于MD5的破译,引发了关于MD5产品是否还能够使用的大辩论。在麻省理工大学Jeffrey I. Schiller教授主持的个人论坛上,许多密码学家在标题为“Bad day at the hash function factory”的辩论中发表了具有价值的意见(http://jis.mit.edu/pipermail/saag/2004q3/000913.html)。这次国际密码学会议的总主席Jimes Hughes发表评论说“我相信这(破解MD5)是真的,并且如果碰撞存在,HMAC也就不再是安全的了,…… 我认为我们应该抛开MD5了。” Hughes建议,程序设计人员最好开始舍弃MD5。他说:“既然现在这种算法的弱点已暴露出来,在有效的攻击发动之前,现在是撤离的时机。”
     同样,在普林斯顿大学教授Edwards Felton的个人网站(http://www.freedom-to-tinker.com/archives/000664.html)上,也有类似的评论。他说:“留给我们的是什么呢?MD5已经受了重伤;它的应用就要淘汰。SHA-1仍然活着,但也不会很长,必须立即更换SHA-1,但是选用什么样的算法,这需要在密码研究人员达到共识。”
     密码学家Markku-Juhani称“这是HASH函数分析领域激动人心的时刻。(http://www.tcs.hut.fi/~mjos/md5/)”
     而著名计算机公司SUN的LINUIX专家Val Henson则说:“以前我们说"SHA-1可以放心用,其他的不是不安全就是未知", 现在我们只能这么总结了:"SHA-1不安全,其他的都完了"。
     针对王小云教授等破译的以MD5为代表的Hash函数算法的报告,美国国家技术与标准局(NIST)于2004年8月24日发表专门评论,评论的主要内容为:“在最近的国际密码学会议(Crypto 2004)上,研究人员宣布他们发现了破解数种HASH算法的方法,其中包括MD4,MD5,HAVAL-128,RIPEMD还有 SHA-0。分析表明,于1994年替代SHA-0成为联邦信息处理标准的SHA-1的减弱条件的变种算法能够被破解;但完整的SHA-1并没有被破解,也没有找到SHA-1的碰撞。研究结果说明SHA-1的安全性暂时没有问题,但随着技术的发展,技术与标准局计划在2010年之前逐步淘汰SHA-1,换用其他更长更安全的算法(如SHA-224、SHA-256、SHA-384和SHA-512)来替代。”
     详细评论见:http://csrc.nist.gov/hash_standards_comments.pdf
     2004年8月28日,十届全国人大常委会第十一次会议表决通过了电子签名法。这部法律规定,可靠的电子签名与手写签名或者盖章具有同等的法律效力。电子签名法的通过,标志着我国首部“真正意义上的信息化法律”已正式诞生,将于2005年4月1日起施行。专家认为,这部法律将对我国电子商务、电子政务的发展起到极其重要的促进作用。王小云教授的发现无异于发现了信息化天空的一个惊人黑洞。我们期待着王小云教授和她的团队能够成就“女娲补天”的壮举,为人类的信息化之路保驾护航。<!---->

 

http://www.view.sdu.edu.cn/news/news/sdyw/2004-09-04/1094261946.html

http://www.blogchina.com/new/display/43228.html

分享到:
评论

相关推荐

    VBA MD5加密算法实现

    VBA MD5加密 算法

    md5加密算法 C语言(经过测试验证完整版)

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特...

    MD5 加密算法 C++实现源码

    4. **生成摘要**: 经过一系列运算后,MD5的状态缓冲区被转换成最终的128位摘要,然后转换成32位的十六进制字符串,这就是MD5的加密结果。 在`Md5.cpp`文件中,我们可以看到C++实现MD5的具体代码。通常,会有一个类...

    VB6.0 MD5加密算法 支持中文(调用Window API计算)

    在VB6.0中实现MD5加密算法,主要是为了确保数据的完整性和不可篡改性,比如在存储密码、数字签名等方面有重要作用。 在VB6.0中实现MD5加密,通常需要调用Windows API函数,因为VB6.0本身并不直接支持MD5。Windows ...

    MD5加密算法程序

    2004年起,研究人员发现MD5有多种碰撞攻击方法,意味着两个不同的输入可以生成相同的MD5摘要,因此在密码学中MD5已被更安全的SHA-2系列算法取代。 在编程中,`MD5.cpp` 和 `MD5.h` 文件的使用方式可能是这样的:...

    md5加密算法 C++源码

    总的来说,MD5加密算法在C++中的实现涉及到哈希函数的理解、位操作和循环结构的运用,以及可能的第三方库的集成。理解MD5的工作原理,结合C++编程技巧,可以有效地实现和应用这一重要的信息安全工具。

    MD5加密算法C++实现

    在C++中实现MD5加密算法,通常需要借助第三方库,如`openssl`库。以下是一段简单的C++代码示例,展示如何使用`openssl`库进行MD5加密: ```cpp #include &lt;openssl/md5.h&gt; #include #include #include std::...

    MD5加密算法的源码及测试程序

    在C#中使用MD5,首先需要引入`System.Security.Cryptography`命名空间,它包含了各种加密和哈希算法。 ```csharp using System.Security.Cryptography; ``` 2. **创建MD5对象**: 使用`MD5.Create()`方法创建一...

    md5加密算法linux

    总结来说,MD5加密算法虽然在安全性上存在弱点,但因其快速和广泛支持,仍被广泛应用于数据校验。在Linux系统中,通过`md5sum`命令和OpenSSL库,我们可以轻松地处理MD5相关的任务。对于开发者,理解MD5的工作原理和...

    ASP[1]NET实现MD5加密算法

    MD5算法的基本原理是通过一系列数学运算(如位移、异或、加法等)将原始数据转化为128位的哈希值,通常以32位十六进制数字的形式表示。尽管MD5存在一定的碰撞问题,即不同的输入可能产生相同的输出,但在大多数场景...

    MD5加密算法(C#)附源代码

    MD5算法经过多次迭代计算,具有较好的抗碰撞能力,但并非绝对安全,已被破解用于特定攻击,如彩虹表攻击。 在C#中,我们可以通过以下步骤实现MD5加密: 1. 引入命名空间:首先,你需要包含`System.Security....

    MD5加密算法的JAVA实现

    MD5加密算法是一种广泛使用的哈希函数,用于生成固定长度(128位)的散列值,即使输入数据有微小变化,也能产生截然不同的输出,这使其在密码学领域有着重要的应用,尤其是在数据完整性和身份验证方面。本文将深入...

    MD5加密算法vb源码

    这个压缩包中的"MD5加密算法"很可能包含了实现这些步骤的VB代码示例,你可以通过查看源码来学习如何在实际项目中应用MD5加密。在分析和理解代码时,注意学习如何与.NET Framework的加密服务交互,以及如何处理输入和...

    Javascript实现MD5加密算法

    但随着计算能力的增强,MD5的碰撞已不再难以找到,因此在安全性要求高的场景中,MD5已经不再被视为安全的加密手段。 3. **快速性**:MD5算法计算速度快,适用于大量数据的处理。 在JavaScript中实现MD5加密,通常...

    MD5加密算法dll

    然而,由于MD5的碰撞漏洞(即不同的输入可能会得到相同的哈希值),它已不再适合用于安全敏感的应用,如密码存储,现在已被更安全的SHA系列算法取代。 `MyMD5.dll`是一个动态链接库文件,通常用于Windows操作系统中...

    MD5加密算法

    在C#编程环境下,虽然Windows Phone (WP) 平台原生不直接提供MD5类用于加密操作,但开发者可以通过引入System.Security.Cryptography命名空间来实现MD5加密算法。 在C#中,我们可以使用System.Security....

    c# md5加密算法的实例

    下面将详细讲解如何在C#中实现MD5加密算法。 首先,C#提供了System.Security.Cryptography命名空间,其中的MD5类用于实现MD5算法。以下是一个简单的MD5加密的C#代码实例: ```csharp using System; using System....

    labview基于MD5/HMAC等加密算法

    在IT安全领域,LabVIEW也可以用来实现加密算法,如MD5(Message-Digest Algorithm 5)和HMAC(Hash-based Message Authentication Code)。这两个概念是数据安全中的重要组成部分,用于保护信息的完整性和验证数据...

    MD5加密算法 VS2012源码

    在VS2012环境下实现MD5加密算法,你需要理解以下几个关键概念和步骤: 1. **哈希函数**:MD5是一种非对称的单向哈希函数,这意味着给定输入(原始数据)可以很容易地生成哈希值,但由哈希值恢复原始数据几乎不可能...

Global site tag (gtag.js) - Google Analytics