zoukankan      html  css  js  c++  java
  • [信安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,改变的原文可能已经无意义

    【个人理解,仅供参考】

  • 相关阅读:
    20080619 SQL SERVER 输入 NULL 的快捷键
    20090406 Adobe的“此产品的许可已停止工作”错误的解决办法
    20080908 Office Powerpoint 2007 不能输入中文的解决办法
    20080831 ClearGertrude Blog Skin 's cnblogs_code class
    20080603 Facebook 平台正式开放
    20080519 安装 Microsoft SQL Server 2000 时提示 创建挂起的文件操作
    test
    Linux—fork函数学习笔记
    SOA的设计理念
    Why BCP connects to SQL Server instance which start with account of Network Service fail?
  • 原文地址:https://www.cnblogs.com/pdev/p/5388996.html
Copyright © 2011-2022 走看看