MD5原理
在密码领域,美国一直在向全世界推广MD5密码,还多次声称:没人能破解我们的MD5密码,就连著名的密码学家Biham,也把破解MD5密码作为一生的梦想。(这是多年前的言论。不要过度解读,做个简单开场白~)
MD5目前应用比较多的就是文件校验,当然作为一种“密码”其也可以在密码管理以及数字签名领域使用。
其加密原理如下:
MD5刚出来的时候的确加密性很强,但是经过几年的发展,在1996年左右被发现是可以被破解的,同时在2004年由中国王小云教授发现其也不可以防碰撞(所谓“碰撞“并不是正向破解,而是用其他方式生产一个一样的HASH值)。
既然MD5可以被破解,那我们今天就看几个用FPGA破解的项目~
fpga-md5-cracker
https://github.com/John-Leitch/fpga-md5-cracker
用verliog编写的64级流水线实现MD5破解。在 DE0-Nano(Altera FPGA) 上以 100mhz 时钟进行可靠的运行,每秒计算 1 亿次HASH。
介绍
这个项目是一个硬件 MD5 破解器,它围绕 MD5 哈希函数的高吞吐量、流水线特点而实现的。它由三个设备组成:
DE0-Nano FPGA
主力军。设计相当大,消耗了 21,257/22,320 (95%) 个逻辑单元。
Netduino Plus 2
充当程序员,通过 SPI 与 FPGA 通信,同时使用以太网和计算机连接。选择 NP2 是因为它是我手头上唯一的 3.3v SPI 主设备。其他设备也可以工作,但如果使用 DE0-Nano,请记住 Cyclone IV 不能承受 5v。还值得注意的是,如果选择另一种设备,可能不得不重写程序员,因为当前的实现是用 C# 编写的。
Arduino液晶屏
任何 Hitachi HD44780 兼容的 LCD 都应该可以工作。为了简化接线,破解者使用 4 位模式的 LCD。
关于硬件连接,项目里都有详细的设计。
ntlmv2-cracker
https://github.com/nimrods8/ntlmv2-cracker
使用Max10 FPGA作为并行计算平台,128级流水线破解MD4/MD5
在上面项目基础上,使用Max10 FPGA作为并行计算平台,128级流水线破解MD4/MD5。
md5cracker
https://github.com/zhemao/md5cracker
基于Cyclone V SoC 的硬件 MD5 破解器
因为SoC中有双核的ARM所以不需要其他的处理器进行通信。
md5-hbf
https://github.com/fallen/md5-hbf
md5 硬件暴力破解 IP 核
使用 Swapnajit Mittra 制造的 pancham MD5 IP 核 < http://www.angelfire.com/ca/verilog >
该设计可以在 spartan 3E 500K 门上以 50MHz 运行。
它已成功综合并用于 Spartan-3A XC3S400A 和 Spartan-3AN XC3S700AN
分别在 AVNET Spartan-3A fpga 开发板和 Xilinx Spartan-3AN 入门套件上。
当暴力破解显示 md5 哈希冲突时,usart 输出有效并显示明文密码。
其他
https://github.com/dnet/fpga-md5
https://github.com/davidgfnet/fpga-hash-bruteforcer
https://github.com/ebrahimAlhaddad/MD5-Hardware-Accelerator
https://github.com/bhagyasr/MD5-Cracker
总结
今天介绍的MD5破解项目,只有前三个项目值得学习参考,后面项目挺乱的,并且有些还缺少文件,只适合参考。
今天的项目虽然相对简单并且不“入流”,但是对于搞密码学的人来说,这些都是他们曾经奋斗的方向~
最后,如果觉得今天项目无聊的话,我给大家咬个打火机吧~