admin管理员组

文章数量:1532732

2023年12月17日发(作者:)

第36卷 第ll期 VoL36 ・计算机工程 2010年6月 June 2010 No.11 Computer Engineering 安全技术・ 文章编号:l000—.3428(201o)l1—_0154—02 文献标识码:A 中圈分类号l TP301.6 基于GPU的MD5高 速解密算法的实现 乐德广’,常晋义’,刘祥南 ,郭东辉 (1.常熟理工学院计算机科学与工程学院,苏州215500;2.厦门大学信息科学与技术学院,厦门361005; 3厦门美亚柏科资讯科技有限公司,厦门361008) 摘要:MD5快速碰撞算法由于不支持逆向过程而无法在MD5密码攻击中得到实际应用。针对上述问题,通过分析基于图形处理单元(GPU) 的MD5密码并行攻击算法原理,设计基于GPU的MD5高速解密算法,在此基础上实现一个MD5高速密码攻击系统。测试结果证明,该 算法能有效加快MD5密码破解速度。 关健词:MD5算法;密码学;图形处理单元  ,Implementation of MD5 Fast Decryption Algorithm Based on Graphic Processing Unit LE De.guang’CHANG Jin.yi ,LIU Xiang.nan ' ,GUO Dong-hui ,f1.School ofComputer Science and Engineering,Changshu Institute ofScience and Technology,Suzhou 215500; 2.School ofInformation Science and Technology,Xiamen University,Xiamen 361005;3.Xiamen Meiah Pico IT Co.,Ltd.,Xiamen 361008) [Abstract]Fast MD5 collision algorithm falls to be used in real application of cracking MD5 password because it does not support reverse cracking.According to the issue,by analyzing he tprinciple of MD5 password parallel cracking algorithm based 0n Graphic Processing Uni ̄GPU), this paper proposes a fast MD5 decryption algorithm based On GPU,and implements a last MD5 password cracking system.Test result proves that the algorithm can accelerate the cracking of MD5 password [Key words]MD5 algorithm;cryptography;Graphic Processing Unit(GPU) 1概述 最近,文献[1]提出的基于模减差分分析的MD5[21碰撞攻 击方法重新引起了广大学者对MD5的研究兴趣。然而,由于 该MD5碰撞攻击方法不能直接由MD5散列值逆向得出明 举法是把可能出现的密码明文用MD5运算后,把得到的散列 值直接与需要破解的MD5散列值进行比较,判断该明文是否 是已知MD5散列值所对应的密码明文。当密码空间确定时, 穷举法的破解效率取决于计算机的运算性能。彩虹法是在穷 举法的基础上把得到的MD5散列值和原始的明文数据构成 对一的映射表,然后通过搜索和匹配的方式从映射表中找 一文,因此这种攻击方法在实际MD5密码破解中还无法得到很 好的应用。本文分析了当前MD5密码攻击中存在的安全性问 题,提出一种MD5密码并行攻击算法,并基于图形处理单元 (Graphic Processing Unit,GPU)设计和实现了MD5高速密码 破解系统。该系统能充分利用GPU的高性能计算能力,对 出破解密码所对应的原始明文。当明文数据的随机性很强时, 彩虹法要求海量的存储设备来存储映射表和高效的搜索引 擎,因此,其破解效率取决于计算机的存储空间和搜索方式。 MD5散列值进行大规模并行密码分析,从而快速破解出经 MD5加密的密码,因此,在计算机安全与取证lj 中具有一定 的实际应用意义。 3基于GPU的MD5高速解密算法设计与实现 3.1基于GPU的MD5密码攻击算法 在传统的MD5密码破解中,基于CPU的密码遍历是串 2 MD5算法安全性分析 一行的循环计算过程,因此,其效率和计算速度都非常低。本 文为此提出一种MD5密码并行攻击算法。图l显示了基于 GPU的MD5密码并行攻击算法原理。在CPU中调用GPU 般破解MD5需要3个基本条件:(1)对于任意Y,找X, 使得MD5(x)=y。(2)给定x1,找x2,使得MD5(x1):MD5(x2)。 (3)找x1、x2,使得MD5(x1)=MD5(x2)。任何能够满足上述 3个条件之一的方法称为MD5破解。目前还没有一个算法能 满足条件(1)。文献f1]给出了符合条件(2)或条件(3)的碰撞算 法,即可以很快找到2条信息,使之产生相同的MD5散列值。 内核程序后,GPU通过其内部的线程执行管理器控制密码生 成器同时产生多个可能的不同密码。将这些同时产生的多个 不同的密码输入GPU的不同线程后,这些线程就可以对不同 的密码进行MD5并行计算,并与已知的MD5散列值进行分 析比较,最后输出比较结果。通常GPU的线程数量能够达到 这种基于碰撞的MD5密码破解方法是在知道Xl的情况下可 以找到x2,但是x2的内容具有不确定性。也就是说,即使 知道了xl的内容,仍然无法将x1的内容篡改为有意义的x2, 使x2和x1的MD5值相同。因此,它无法直接威胁当前MD5 密码的安全体系。 十万的数量级,因此,GPU的密码破解具有很高的并行计算 效率。 作者简介:乐德广(1975一),男,博士,主研方向:网络通信,信息 安全;常晋义、刘祥南、郭东辉,教授 收稿日期:2009-1 1-24 E-mail:ledeguang@gmail.corn 目前对MD5密码的直接攻击有穷举法或彩虹法l4。J。穷 一l54一 

图1基于GPU的MD5密码并行攻击算法原理 3.2基于GPU的MD5密码破解系统实现 基于上述算法原理,本文开发了GPU高速MD5密码破 解系统。该系统采用NVIDIA G80 GPU芯片,软件开发平台 使用CUDAI 。其实现过程如下: (1)设置GPU内核环境变量 在MD5密码破解中,需要在GPU内核中设置密码相关 变量,包括:密码字符集,密码字符集长度,密码长度,待 破解的密码散列数量,密码变量指针。这些环境变量的具体 设置如下: constantunsigned char g CharSet[255]; constant unsigned long gCharSetLength; constant unsigned long g PasswordLength; constant unsigned long g Md5HashCOuntr; constant unsigned long g Plain[96]; (2)GPU初始化 不同的设备具有不同的GPU硬件资源,如GPU数量、 流处理器数量以及内存大小。为了能够充分利用GPU硬件资 源,需要在GPU初始化中获取设备的GPU内核信息。本文 的破解系统通过以下方式获取设备的GPU内核信息: int GPUN; cudaGetDeviceCount(&GPU N); cudaDevicePrOp DeviceProp; cudaGetDeviceProperties(&DeviceProp,O); 其中,变量GPUN用来存储当前系统中GPU的数量;变量 DeviceProp用来显示GPU内核的相关信息,如流处理器数量、 存储器容量。 根据已获得的GPU硬件信息,为GPU内核函数的参数 变量分配相应的GPU内存空间,包括已知的MD5散列值、 比较结果变量和每轮内核调用中新的密码变量指针: cudaMalloc((void )&d CompMd5Hash,Md5HashCountr 1 6); cudaMalloc((void )&d—Result,4); cudaMalloc((void )&dNext,sizeof(Next)); 最后通过函数cudaMemcpyToSymbol0把密码字符集、密 码字符集长度、密码长度以及散列数量等数据从CPU拷贝到 GPU: cudaMemcpyToSymbol(g CharSet,&CharSet,CharSetLength); cudaMemcpyToSymbol(g CharSetLen,&CharSetLength,4); cudaMemcpyToSymbol(g—PasswordLength,&PasswordLength,4); cudaMemcpyToSymbol(g Md5HashCountr,&Md5HashCountr,4); (3)产生测试密码 由于GPU线程是并行执行的,因此需要为每个线程分配 不同的测试密码。本文的破解系统通过一个密码生成器来实 现,其实现伪代码如下: p=tid; for i从0到(g—PasswordLength・1){ tmp=P g plain[i]; P 取整(tmp/gcharsetLength); q。二取余(tmp/gCharSetLength); Password[i1=g CharSet[q];} 其中,变量t_id为GPU中的线程ID号;gPasswordLength 为密码的长度;gplain[i]为密码的第i位对应于密码字符集 的指针位置;变量Password为线程t_id所对应的密码。 (4)实现MD5密码并行攻击算法 本文在GPU的内核代码中实现了3.1节的MD5密码并 行攻击算法,其伪代码如下: password:password+0x8O; data[0—63]=password; ofr i从0到63 {if0≤i≤15 f(data); else if 16≤i≤31 g(data); else if 32≤i≤47 h(data); else if 48≤i≤63 i(data); ) (5)GPU内核调用 由于GPU的程序是以内核方式运行的,因此需要在CPU 中调用GPU内核函数。与普通的C语言函数只执行一次的 方式不同,在调用GPU的内核函数时,它将由Ⅳ个不同的 线程并行执行Ⅳ次。执行内核的每个线程都会被分配一个唯 一的线程ID。其调用方式如下: crackmd5<<<block,thread>>>(hash); 其中,crackmd5为GPU内核函数名。参数block用于指定内 核的栅格维数和大小,即每个栅格内线程块的数量。为了不 使流处理器组在线程同步过程中出现空闲,设置线程块的数 量是GPU中流处理器组数量的4倍。这样线程块在线程同步 等待时就能使其他线程块继续运行,充分利用流处理器组的 计算资源。参数thread用于指定每个线程块的维数和大小, 即每个线程块内的线程数量,它取决于每个流处理器组的存 储器资源。假设每个流处理器组的寄存器总数是 ,每个线 程需要占用的寄存器数量是M,B是每个流处理器组线程块 的数量,那么每个线程块的线程数量T=32×int(R/(B× ), 其中,int为取整函数。因此,每个GPU内核程序的并行线 程总数等于每个线程块的线程数量乘以线程块的数量。内核 函数crackmd5的参数hash表示已知的MD5散列值。 (6)分析比较及结果输出 根据第(4)步测试密码的MD5运算结果及第(5)步GPU内 核调用中提供的已知MD5散列值,GPU线程通过比较分析 可以判断其测试密码是否为已知MD5散列值所对应的密码。 其实现伪代码如下: if(data[0—15】=hash[O一15]) if(data[16-31】=hash[16-31】) i(fdata[32—471=flash[32—47]) if(data[48—63]=hash[48—631 cracked password password; 3.3性能测试及分析 下面对2种MD5破解系统进行测试和比较分析。在本文 的MD5破解系统中,CPU采用最新的lntel Core 2 Quad Q9300四核中央处理器,内存为4 GB,操作系为Windows XP。 此外配置了4张GeForce 9800 GX2的GPU显卡。图2显示 了MD5密码破解速度的比较结果。其中,Core2 Quad Q9300 表示采用Intel四核CPU的工作站,其MD5破解速度为每秒 9.6x 10。个密码;4"9800GX2表示采用本文算法的GPU工作 (下转第l58页) 一155— 

用RSA算法分别对5 12位的数据进行加密、解密、签名和验 证,测得所需的时间为0.03 S,0.16 S,0.16 S和0.02 S。在该认 证机制中,设消息的长度为512位,对称密钥算法为DSA, 不计DSA运算时间(DSA比RSA快100倍),完成一次跨域 认证所需的时间大概为1.1 S,远小于DAA认证的时间开销, 有效地减少了跨域认证所需的时间。 2.5仿真分析 本文使用了Matlab绘制了2.2节中信任值公式中Trust(B ,A)的变化过程。图3为Trust(B--- ̄A)在不同6c, ,y比例下的 变化曲线。 --图4 Trust(B-4A)在交互过程中的变化曲线 趔 3结束语 本文提出了一种基于动态信任值的DAA跨域认证机制, 通过建立域间的信任关系来实现TPM用户的跨域认证,同时 又减少了认证的时间开销。下一步工作将使用协议仿真工具 趟 妲 ● ●丑 舞 模拟实现该机制的认证流程。 参考文献 [I]Trusted Computing Group.Trusted Computing Platform Alliance 田3 Trust(B- ̄A)在不同分配比例下的变化曲线 (TCPA)Main Speciifcation Version 1.1b[EB/OL].(2002—02-10). https://www.trustedcomputinggroup.org. 假设在正常情况下,域B对TPM用户的信任值为0.8, 对域A的直接信任值为O.65,其他域对域A的推荐信任值为 0.6。图3中的深色区域即为Trust(B--+A)在不同比例下的变 [2]Brickell E,Camenisch J,Chen Liqun.Direct Anonymous Attesta— tion[C]//Proc.of the I 1 th ACM Conference on Computer and Communications Security.New York,USA:ACM Press,2004: l32 145. 化曲线图。当a=l时,Trust(B-+A)取得最大值0.8;当y=l 时,Trust(B--+A)取得最小值0.6。所以远程域可以根据侧重 点的不同,动态地调节6c, ,y的比例,根据Trust(B-+A)的变 化来制定合适的信任阈值。 图4为Trust(B--+A)在跨域交互过程中的变化曲线。其中, a=0.4,fl=0.4,y=0.2,其他域的推荐信任值为0.6,图4中的深 色区域即为该状态下Trust(B-*A)的取值变化范围。随着 B —A)的逐渐增加,在TPM用户完全可信时,Trust(B--+A)达 到的最大值为O.92。 [3】黄辰林.动态信任关系建模和管理技术研究[D].长沙:国防科 技大学,2005, f4】裴俐春,陈性元,王[5]张艳群,张婷,等.一种基于信任度的跨异构域动态 认证机制[J].计算机应用,2008,28(6):1382—1384. 辰.基于模糊理论的信任度评估模型[J].计算机工 程与设计,2007,28(3):532—534. 编辑金胡考 (上接第155页) 站,其MD5平均破解速度超过每秒30亿个密码,速度是单 CPU破解服务器的300倍以上。 解方法。 /r一 一………………… …~…………1 参考文献 [1]Wang Xiaoyun,Yu Hongbo.How to Break MD5 and Other Hash Functions[C]//Proceedings of CRYPTO’05.Aarhus,Denmark: [S.n.],2005. [2]张建伟,李鑫,张梅峰.基于MD5算法的身份鉴别技术的研 究与实现[JJ.计算机工程,2003,29(4):1 1 8-l1 9. 【3】曾剑平,郭东辉.一种有效支持计算机取证的审计机制研究【J】 .4 9800GX2 Core 2 Quad Q93Oo 计算机工程,2006,32(6):1 48-1 50. 【4]Avoine G,Junod只Oechslin E Characterization and Improvement of 圉2 MD5密码破解遗度比较 Time—memory Trade—off Based on Perfect Tables[J].ACM Trans.on Information and System Security,2008,1 1(4):1—22. 4结束语 针对MD5快速碰撞在密码攻击中存在的问题,本文提 出一种MD5密码并行攻击算法,基于该算法设计实现了一 个GPU高速MD5密码破解系统,测试结果证明该系统能有 [5]张丽丽,张玉清.基于分布式计算的暴力破解分组密码算[J]_ 计算机工程,2008,34(13):121—123, [6]VIDIA.CUDA[EB/OL].(2009—03—30).http://www.nvidia.cn/object/ cudahomecn.htm1. 效提高密码破解速度。今后将进一步优化GPU的MD5密码 破解系统,并研究其他加密算法(如SHA一1、AES)的高速破 一编辑张帆 158一 

本文标签: 密码破解算法线程数量