file-type

王小云破解MD5:进展与理解

DOCX文件

5星 · 超过95%的资源 | 下载需积分: 50 | 21KB | 更新于2024-09-18 | 170 浏览量 | 11 下载量 举报 收藏
download 立即下载
关于"关于王小云破解MD5之我见"这篇文章,主要探讨了中国数学家王小云在Crypto2004会议上发表的一项重要研究成果,该研究挑战了MD5摘要算法的安全性。MD5是一种广泛使用的哈希函数,用于数据完整性校验和数字签名,其核心特性是单向性,即无法从哈希值推导出原始输入信息,这使得它在保护信息安全方面具有重要意义。 王小云的研究指出,尽管MD5理论上是单向不可逆的,但她的团队提出了一个算法,能够找到两个不同的输入数据产生相同MD5散列值的实例,即所谓的“碰撞”。这在密码学领域是一个重大突破,因为它表明MD5不再具备完全的抗碰撞能力,特别是对于特定的攻击目标。虽然这还不是完全的破解,但非特定碰撞的存在暗示了潜在的安全漏洞。 报告中提到的碰撞例子涉及1024位的原始数据,相比之前的512位碰撞,这显示了技术上的显著进步。然而,要实际伪造签名,需要产生特定的碰撞,即找到两个具有相同签名但完全不同内容的消息,这仍然是一个复杂且艰巨的任务,但已表明MD5不再是绝对的安全保障。 文章作者强调,密码学的基础是高级数学,如数论、群论和有限域等,这些概念对于非专业人士来说可能难以理解。王小云的研究成果提醒我们,即使是最常见的密码算法,如对称密码(如异或等),也需要持续评估其安全性。MD5的破解启示我们需要更加谨慎地选择和维护密码算法,以抵御未来的潜在威胁。 王小云关于MD5的突破性工作揭示了摘要算法固有的脆弱性,促进了密码学领域的深入讨论和算法更新,同时也提醒我们在设计和使用密码系统时要考虑到潜在的攻击策略。

相关推荐

filetype
MD5是目前最热门的加密算法,我们通常用MD5值来验证文件的完整性。例如在一些比较正规的下载网站,通常会提供软件的MD5值,这样我们就可以对下载回来的文件用MD5校检软件(如HashX等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。但当两个不同文件的MD5值完全一样时,你还会信任MD5吗? 找出破解MD5加密方法的专家是我国山东大学的王小云教授,这则新闻在以前的软件版块曾详细报道过。但之后MD5的破解一直没有进展,直到最近,国外的科学家研究出了新的MD5碰撞破解方法,可以让两个不同文件的MD5值完全一样,而之前我们一直认为一个文件的MD5值在世界上是独一无二的,这就像一个人克隆了你的指纹然后冒充你一样恐怖! 为了验证MD5值的独一无二性,我们来做一个简单的试验: 在桌面上新建一个文本文档,文件名为“test.txt”,内容为“OfficeBa”。然后将这个文本文档拖动到校验工具HashX中,点击左上角的“Hash File”按钮,得到其MD5值为051cb2917a5b70505e1687dee449c765,然后为文档中的“OfficeBa”加上双引号,保存后再通过HashX进行校检,发现MD5值变成了9ab117400993b70bc9945a9b15749d5d了。可见,一个极细微的变动都会导致文件的MD5值不同! 那么我们能让两个程序文件的MD5一致,却又都能正常运行,并且可以做完全不同的事情么?答案是:“可以!”。要让两个不同文件的MD5值相同,可以通过一款名为fastcoll的小工具来完成我们同样以刚才的test.txt来做试验: -h [--help] 显示选项 -q [--quiet] 简化 -i [-ihv] arg 使用指定的初始值,默认是md5初始值 -p [-prefixfile] arg 使用给定的前缀计算初始值,仍然把数据复制到输出文件中(必须是个文件名) -o [--out] arg 指定输出文件名,此选项必须是最后一个参数,而且两个文件名必须同时指定 默认的是 -o msg1.bin msg2.bin 把解压出来的fastcoll_v1.0.0.5.exe与test.txt放在同一目录,然后在“命令提示符”中输入:“fastcoll_v1.0.0.5.exe -i test.txt -p test.txt -o cbi.exe cbi2.exe”并回车,在同目录中会生成名为cbi.exe和cbi2.exe文件,我们用HashX校验他们的MD5值,可以发现是完全一样的,但是在HashX中用“SHA-1”加密算法进行校验的时候,结果竟然是不同的(SHA-1加密算法生成的结果也是独一无二的)!可见这已经是完全不同的两个文件,但是他们的MD5值竟然完全相同。 如果黑客从网上下载一个工具,给其捆绑上木马,然后通过工具让其MD5值和原文件一样。那么当用户下载了文件后用MD5校验工具进行校验时就会发现带毒文件和原文件MD5值完全一样,就会放心地去运行,结果可想而知。所以,MD5加密已经不再可信!
filetype
sha碰撞,MD5碰撞实现,#!/usr/local/bin/perl # It was noted that Intel IA-32 C compiler generates code which # performs ~30% *faster* on P4 CPU than original *hand-coded* # SHA1 assembler implementation. To address this problem (and # prove that humans are still better than machines:-), the # original code was overhauled, which resulted in following # performance changes: # # compared with original compared with Intel cc # assembler impl. generated code # Pentium -25% +37% # PIII/AMD +8% +16% # P4 +85%(!) +45% # # As you can see Pentium came out as looser:-( Yet I reckoned that # improvement on P4 outweights the loss and incorporate this # re-tuned code to 0.9.7 and later. # ---------------------------------------------------------------- # Those who for any particular reason absolutely must score on # Pentium can replace this module with one from 0.9.6 distribution. # This "offer" shall be revoked the moment programming interface to # this module is changed, in which case this paragraph should be # removed. # ---------------------------------------------------------------- # $normal=0; push(@INC,"perlasm","../../perlasm"); require "x86asm.pl"; &asm_init($ARGV[0],"sha1-586.pl",$ARGV[$#ARGV] eq "386"); $A="eax"; $B="ecx"; $C="ebx"; $D="edx"; $E="edi"; $T="esi"; $tmp1="ebp"; $off=9*4; @K=(0x5a827999,0x6ed9eba1,0x8f1bbcdc,0xca62c1d6); &sha1_block_data("sha1_block_asm_data_order"); &asm_finish(); sub Nn { local($p)=@_; local(%n)=($A,$T,$B,$A,$C,$B,$D,$C,$E,$D,$T,$E); return($n{$p}); } sub Np { local($p)=@_; local(%n)=($A,$T,$B,$A,$C,$B,$D,$C,$E,$D,$T,$E); local(%n)=($A,$B,$B,$C,$C,$D,$D,$E,$E,$T,$T,$A); return($n{$p}); } sub Na { local($n)=@_; return( (($n )&0x0f), (($n+ 2)&0x0f), (($n+ 8)&0x0f), (($n+13)&0x0f), (($n+ 1)&0x0f)); } sub X_expand { local($in)=@_; &comment("First, load the words onto the stack in network byte order"); for ($i=0; $i<16; $i+=2) { &mov($A,&DWP(($i+0)*4,$in,"",0));# unless $i == 0; &mov($B,&DWP(($i+1)*4,$in,"
tvboy5200
  • 粉丝: 0
上传资源 快速赚钱