• [信安Presentation]一种基于GPU并行计算的MD5密码解密方法


    -------------------paper---------------------

    一种基于GPU并行计算的MD5密码解密方法

    0.abstract
    1.md5算法概述
    2.md5安全性分析
    3.基于GPU的爆破
    3.1GPGPU
    3.2CUDA
    3.3implementation
    4性能对比

    -----------------presentation------------------

    [Code]

    Section 0:Introduction of MD5, and its application

    Application:

    Unix系统中的密码

    Section 1:MD5 Algorithm [Ref]

    STEP1:从plaintext末尾开始填充1000000.....,直到(数据长度)%512=448【单位:bit
    STEP2:继续填充64bit,这64bit里存储的是填充前plaintext的长度
    STEP3:将填充好的信息拆分成整数个512bit的blocks,一个一个block处理
    STEP4:FOR EACH 512b_BLOCKS:
          Round(1..4)
          

     

    Section 2:How to crack MD5

    1.MD5理论上不可能恢复出原文(According to Information Theory)

    但是存在暴力破解方法

    常用爆破方法:彩虹表、暴力

      彩虹表:提前打好的一个大大大大大大Table,里面记录一大坨plaintext和对应的MD5

      暴力:穷举

    破解密码?无需从MD5恢复出plaintext。只需枚举plaintext,然后找到MD5相同的即可

    Section 3:usage of CUDA in parallel computing

    Introduction of CUDA

    Section 4: the parallel algorithm for cracking MD5

    将plaintext解空间(alphabet的排列组合)分解成若干组,交给不同的GPU SM并行计算出MD5,并与原MD5比对。

    Section 5:Performance testing

    好的很呐

    Section 6:Conclusion

    虽然可以爆破,但是对于长密码,代价还是巨大的。MD5还能接着续几年

    Section ?:Future Researching

    [Ref] [Ref] [Ref]

    6.Future Researching

    其实对于很多MD5解密的问题,我们并不需要根据MD5码找出原文,而是只要找到了MD5加密后与原文的MD5值相同的字符串即可。比如破解密码经过了MD5加密的数据库或服务器这就是所谓的MD5碰撞(Collision)问题。因为MD5是一种信息摘要算法,由信息论基础可知,对于原文长度稍长一些的信息,这种碰撞是肯定存在的。

    在1993年,Den Boer和Bosselaers发现了最初步的MD5碰撞方法"pseudo-collision"。1996年,H. Dobbertin提出了另一种碰撞方法。这种方法需要将原始的MD5算法初值修改成指定的初值:......[pic from wikipedia]......。2005年,山东大学的王小云教授提出了一种新的方法,可以对于原始MD5算法实现碰撞。对于任意一个信息(M0,M1),经过一系列操作后可以得到另一个信息(M0',M1'),使得MD5(M0,M1)==MD5(M0',M1')。而且这些操作都可以在可接受的时间内完成。
    王小云在论文中提出了一种message modification technique,对于信息(M0,M1),首先将M0中的若干位进行修改,令M0'=M0+deltaM0。之后再对M1做类似操作。最终可得到一段新的信息(M0',M1'),这段信息与(M0,M1)是有差异的,但是MD5却完全相同。如下图所示:
    这篇论文提出了一个寻找MD5碰撞的可行方法,这无疑是个巨大的突破。

    《How to Break MD5 and Other Hash Functions》, Xiaoyun Wang and Hongbo Yu

    1.目的:对于已有的message(M0,M1)找到一个message(M0',M1'),s.t.发生碰撞(collisions after the second block,即在M1和M1'时出现。其实就意味着这两个message发生了碰撞。因为MD5需要先处理M0再处理M1。)【详见原文Section 1】

    2.Wang提出了一个message modification technique,通过改变原文的若干个位来大大增加出现上述collision的概率

    3.Wang的论文提出了一套方案,对于两个1024bit的plaintext(M0,M1)和(M0',M1'),可以找到很多collision,而且只需original initial value of MD5即可,这和之前被发现的pseudo-collision相比是个巨大的进步。(前提是要经过message modification technique)

    3.按照该方案(原文Section 4.5),可以以极大的概率找到collision。在超级计算机上只需若干分钟。


    该paper是个巨大的突破,但短期内仍然不可行:

    0.对于很多的MD5破解问题,我们不需要知道原文(也无法得到原文),只需找到collision即可(比如攻破md5加密的数据库)。对于这类问题该paper是个巨大的突破,但是paper中message(M0,M1)是已知了的。
    1.个人计算机性能达不到(IBM P690,1.3312 TFlop/s)
    2.对于需要破解出原文的MD5问题,paper中的方法需要message modification,改变的原文可能已经无意义

    【个人理解,仅供参考】

  • 相关阅读:
    前端基础进阶变量对象详解
    伪元素::before与::after的用法
    网站性能优化你需知道的东西
    Python爬虫音频数据
    python一步高级编程
    Android APK打包流程
    软件漏洞学习
    pycrypto 安装
    ubuntu16.04中将python3设置为默认
    Android NDK 编译选项设置[zhuan]
  • 原文地址:https://www.cnblogs.com/pdev/p/5388996.html
Copyright © 2020-2023  润新知