-------------------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.....,直到(数据长度)%=【单位:bit
STEP2:继续填充64bit,这64bit里存储的是填充前plaintext的长度
STEP3:将填充好的信息拆分成整数个512bit的blocks,一个一个block处理
STEP4:FOR EACH 512b_BLOCKS:
      Round(..)
      

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,改变的原文可能已经无意义

【个人理解,仅供参考】

[信安Presentation]一种基于GPU并行计算的MD5密码解密方法的更多相关文章

  1. [个人论文]一种基于GPU并行计算的MD5密码解密方法

    求轻喷... [顺便get一份LaTeX论文模板....还是XeLaTex好用.珍爱生命远离CJK http://files.cnblogs.com/files/pdev/paper.zip

  2. 一种基于RBAC模型的动态访问控制改进方法

    本发明涉及一种基于RBAC模型的动态访问控制改进方法,属于访问控制领域.对原有RBAC模型进行了权限的改进和约束条件的改进,具体为将权限分为静态权限和动态权限,其中静态权限是非工作流的权限,动态权限是 ...

  3. [信安presentation]Fight against GFW

    Section1:加密 加密算法分为:对称加密算法.非对称加密算法.Hash 1.1对称加密算法 加密解密使用相同的密钥 eg:DES,AES,RC4,RC5,Triple DES 缺点:1.因为加密 ...

  4. 国内云计算的缺失环节: GPU并行计算(转)

    [IT时代周刊编者按]云计算特有的优点和巨大的商业前景,让其成为了近年来的IT界最热门词汇之一.当然,这也与中国移动互联网的繁荣紧密相关,它们需要有相应的云计算服务作为支撑.但本文作者祁海江结合自身的 ...

  5. 浅说CPU并行计算与GPU并行计算

    最近在学一门课,叫做“C++与并行计算”.要用到多CPU(进程)并行的原理,实现语言是C++的MPI接口.联想到上学期用到CUDA C/C++来做并行计算,就对这两门语言做一个总结,分享下自己关于并行 ...

  6. 科学计算 | Matlab 使用 GPU 并行计算

    科学计算 | Matlab 使用 GPU 并行计算 本文转载自:  https://sanwen8.cn/p/14bJc10.html       Matlab下直接使用GPU并行计算(预告)< ...

  7. 信安周报-第02周:SQL基础

    信安之路 第02周 Code:https://github.com/lotapp/BaseCode/tree/master/safe 前言 本周需要自行研究学习的任务贴一下: 1.概念(推荐) 数据库 ...

  8. 【并行计算-CUDA开发】浅谈GPU并行计算新趋势

    随着GPU的可编程性不断增强,GPU的应用能力已经远远超出了图形渲染任务,利用GPU完成通用计算的研究逐渐活跃起来,将GPU用于图形渲染以外领域的计算成为GPGPU(General Purpose c ...

  9. EPF:一种基于进化、协议感知和覆盖率引导的网络协议模糊测试框架

    本文系原创,转载请说明出处:from 信安科研人 目录 实验 工具的安装 1.安装AFL++ 2.安装epf 对IEC104协议库进行fuzz 实验准备 使用AFL++中的编译器插桩 开始fuzz 原 ...

随机推荐

  1. Linux(十)___iptables防火墙

    一.防火墙的作用 三.防火墙的分类 三.iptables基本语法: 表: 常用filter,nat用于地址映射转换. 配置文件: /etc/sysconfig/iptables 过滤表信息 . 查看i ...

  2. Atitit ati licenseService    设计原理

    Atitit ati licenseService    设计原理 C:\0workspace\AtiPlatf\src_atibrow\com\attilax\license\LicenseX.ja ...

  3. 拖拽手势和清扫手势冲突时(UIPanGestureRecognizer和UISwipeGestureRecognizer冲突时)

    故事发生在这样的情境上:给整个控制器添加了一个拖拽手势,然后又在控制上的每个Cell上加了左滑清扫手势,然后问题来了:只有拖拽手势起作用,而左滑手势没有效果了,然后怎么解决这个问题呢!先上图: 当给整 ...

  4. Andriod 自定义控件之音频条

    今天我们实现一个直接继承于View的全新控件.大家都知道音乐播放器吧,在点击一首歌进行播放时,通常会有一块区域用于显示音频条,我们今天就来学习下,播放器音频条的实现. 首先我们还是先定义一个类,直接继 ...

  5. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  6. iOS网络1——NSURLConnection使用详解

    原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...

  7. mysql 5.7 docker 主从复制架构搭建

    环境版本: MySQL :  5.7.13 Docker : 1.11.2 CentOS : 7.1   1.先在两个物理机上分别安装两个MySQL.命令如下 docker pull mysql:5. ...

  8. 萌新笔记——封装hiredis——C++与redis对接(一)(string的SET与GET操作)

    在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...

  9. java设计模式- (1)单例模式

    参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式. 单例模式(Singleton Pattern)是 Java中最简单的设计模式之一.这种类型的设计 ...

  10. transient关键字的作用

    代码如下: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutpu ...