基于gpu加速的金花表分析md5哈希密码.docxVIP

基于gpu加速的金花表分析md5哈希密码.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

基于gpu加速的金花表分析md5哈希密码

哈希函数(hahi)在信息安全领域得到广泛应用,主要用于数据加密和数字签名。Hash函数是将任意长度的输入映射到固定长度输出的一种单向散列函数,定义为C=H(M)。其中:H()为Hash函数;M是任意长度的输入;C是固定长度的输出。目前Hash函数主要有MDx系列和SHA-x系列。Hash函数具备单向性的2个特性:①给出一个C,算出一个M满足C=H(M),非常困难;②给出一个M1,算出一个不等于M1的M2使得H(M1)=H(M2),非常困难。另外,优良的Hash函数满足抗碰撞性:寻找任何M1和M2,使得H(M1)=H(M2),非常困难。除了枚举法,对Hash算法的破解集中在碰撞攻击,例如王小云教授等提出的快速计算MD5、SHA-0等Hash函数碰撞的方法,将对Hash函数SHA-1的破解时间缩短为263步。

从枚举法角度对Hash函数破解主要有两种方法:暴力穷举法和字典查找法。前者是对所有可能的明文依次做Hash,将散列值与已知的散列值依次比较,找到匹配的密码明文,缺点是需要花费很多的执行时间;后者是预先对所有可能的明文做Hash并存储明文散列对,破解时只需查找该字典,缺点是需要大量的存储空间。彩虹表(rainbowtables)结合了这两种方法的优点,通过预处理存储了一个针对特定明文空间和特定Hash算法的集合。该集合由若干条彩虹链(类似Hash链)构成,通过一系列巧妙的Hash运算和截短函数(又称为映射函数)迭代计算只存储了链首和链尾的元素。破解的时候,通过一系列截短函数、Hash迭代以及链尾元素遍历查找等计算出Hash值的明文。彩虹表不存储明文空间的所有Hash值,因而比字典查找法更节省空间。而通过预处理,又相比暴力穷举法节省了计算时间,获得时间和空间的折中。此外,随着拥有多线程并行计算特点的GPU(图形处理器)加入到通用计算中,由于GPU特别适合诸如Hash算法、截短函数反复迭代算法等重复次数多、数据量大的计算场合,因此相比CPU更能大幅度加快密码在线分析的速度。

1哈希密码分析算法基于彩虹表

1.1哈希链的基于规则盐析的局部低速率条件

彩虹表源自Hellman提出的内存时间权衡(time-memorytrade-off)Hellman表,用存储空间减少时间支出。给定一个输入的明文P0,输出的密文C0,求密钥k,采用加密算法S使得C0=Sk(P0)。应用到哈希函数为C=H(M),C为输出(Hash散列值),M为输入的明文,M∈N(N是明文空间)。已知输出C0,要求输入M0,使得C0=H(M0),破解过程如下:

首先对所有可能的输入M做预计算。定义一个将Hash散列值映射到N上的截短函数R(reductionfunction),R也是一个单向函数。对于破解DES算法密码中的R计算,Hellman建议将64bit密码的低8bit丢弃而生成56bit的R值,并保证R值为N上的均匀分布,否则会造成哈希链遍历查找的低命中率和低破解效率。

定义t为哈希链长,kj为链中某一个节点(1≤j≤t),交替用H(Mj)进行散列计算、用R(Cj)进行还原计算,链的组织表示为

kj?→??H(Mj)Cj?→?R(Cj)kj+1(1)kj→Η(Μj)Cj→R(Cj)kj+1(1)

用f表示R(H(M)),即先做一次H运算,其结果再做R运算,SPi和EPi分别表示每个哈希链的起点和终点。对于初始节点SP的生成可以从空间{1,2,…,N}中随机选取m个SPi(1≤i≤m)节点:

???????????????????SP1=k11→fk12→f?→fk1t=EP1SP2=k21→fk22→f?→fk2t=EP2?SPm=km1→fkm2→f?→fkmt=EPm(2){SΡ1=k11→fk12→f?→fk1t=EΡ1SΡ2=k21→fk22→f?→fk2t=EΡ2?SΡm=km1→fkm2→f?→fkmt=EΡm(2)

在内存中只存储每个密钥链的链首SPi和链尾EPi,每个链中间的密钥都不保存而是通过计算得到,体现了空间和时间的折中策略。破解过程如下:

1)对已知散列值C0(即密文)做R运算得到R(C0)值,将该值与表中的每一个链尾EP比对,若等于某一个EPi,则EPi所在链中的ki,t-1可能是所求的明文。因此从此链的起点SPi开始计算,直到ki,t-1为止,再对ki,t-1作一次散列计。如果该值等于C0,则成功破解出Hash散列值C0的密码明文为ki,t-1,破解结束,否则重新比对。

2)若R(C0)值不能匹配所有链尾EP,则对R(C0)做一次f运算,将得到的新值f(R(C0))再次与表中的每一个链尾EP比对。若匹配,则链中ki,t-2有可能是所求明文,操作与第1)类似。

3)重

文档评论(0)

xcwwwwws + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档