利用破解规则破解密码的方法及系统技术方案

技术编号:10710267 阅读:170 留言:0更新日期:2014-12-03 15:35
本发明专利技术公开了一种利用破解规则破解密码的方法及系统。所述方法包括:CPU对密码的破解规则进行分解,形成破解颗粒,并将所述破解颗粒映射给GPU;GPU根据所述破解颗粒进行破解,如果破解成功,则返回破解成功标记和对应的GPU内核线程的密码样本索引pos给CPU;CPU根据破解成功标记和pos计算出所述破解规则对应的密码。本发明专利技术对于较多位数的密码,采用大规模GPU集群同时破解,提高了密码的破解效率,节省了破解时间。

【技术实现步骤摘要】
利用破解规则破解密码的方法及系统
本专利技术实施例涉及并行计算
,尤其涉及一种利用破解规则破解密码的方法及系统。
技术介绍
随着市场对实时、高清晰度的3D图形可编程的需求,GPU(GraphicProcessingUnit,图形处理器)已经发展成为高度并行化、多线程的多核处理器,具有极高的并行计算性能和极高的存储速度。由于GPU专为密集型、高度并行化的计算而设计,CPU和GPU之间的浮点功能存在差异,因而GPU在设计上使用更多的晶体管用于数据处理。图1是现有技术中CPU与GPU的内部运算单元逻辑结构图,如图1所示,GPU显著用于解决数据并行计算问题,在数据元素上并行执行的程序具有极高的计算密度。数据并行处理将数据元素映射到并行处理线程。处理大型数据集的程序就是利用并行处理线程对计算进行加速,如在3D渲染时把大量的像素及数据集映射到并行处理线程。其他图像和媒体也同样用到并行计算技术,此外,GPU的并行计算也用于科学计算,涉及数理、生物等领域,密码破解就是GPU并行计算的一个应用。CUDA(ComputeUnifiedDeviceArchitecture,统一计算设备架构)是一种并行编程模型和软件环境,编译后的CUDA程序在GPU处理器的内核上运行。图2是现有技术中GPU处理数据的单元的示意图,如图2所示,GPU处理数据的最小单元是核内线程,多个线程组成线程块,多个线程块组成网格。每个线程块的最大线程数与每个网格内的线程块数由具体GPU性能决定。CUDA程序运行在CPU上的部分,称之为对主机操作,CUDA程序运行在GPU上的部分,称之为对设备操作。CUDA有专门的API可实现主机与设备之间数据传输。一般安排串行代码(Serialcode)在主机(Host)上运行,并行代码(Parallelkernel)在设备(Device)上运行,如图3所示,图3是现有技术中串行代码在主机上运行、并行代码在设备上运行的示意图。对密码进行破解,除了对应的算法,还需要预先设定破解规则,破解规则也就是破解密码的范围,如8位纯数字、3位小写字母+6位数字等等。破解规则就是对破解密码范围的通俗表示,8位纯数字在计算机上的表示可以写成{“0123456789”,“0123456789”,“0123456789”,“0123456789”,“0123456789”,“0123456789”,“0123456789”,“0123456789”}。一般GPU的计算速度根据破解算法的不同,一般在几千次~几十亿次不等,如MD5(Message-DigestAlgorithm5,信息-摘要算法5)算法亿的数量级破解8位纯数字则需要1秒以内完成,对这样的破解规则可轻松在GPU内核内实现,如果现在有10位小写和数字混合,则需要(26+10)10≈3.656*1015次比对,按照每秒10亿次进行计算,则需要3656000秒≈1015.6小时≈42.3天,按照此时间规模和破解规模在GPU内连续不停歇的运行一个破解任务是不可行的,一个除了技术因素之外的重要理由是每种硬件不是长时间运行可靠的。
技术实现思路
有鉴于此,本专利技术实施例提供一种利用破解规则破解密码的方法及系统,以将破解任务拆分成一个一个的小任务,使得在GPU上运行一个小任务的时间控制在合理的范围内,且可由多个GPU同时对不同的小任务进行破解,进而由大规模GPU集群同时破解,以提高密码的破解效率,节省时间。第一方面,本专利技术实施例提供了一种利用破解规则破解密码的方法,所述方法包括:CPU对密码的破解规则进行分解,形成破解颗粒,并将所述破解颗粒映射给图形处理器GPU;GPU根据所述破解颗粒进行破解,如果破解成功,则返回破解成功标记和对应的GPU内核线程的密码样本索引pos给CPU;CPU根据破解成功标记和pos计算出所述破解规则对应的密码。第二方面,本专利技术实施例还提供了一种利用破解规则破解密码的装置,所述装置包括:CPU,用于对密码的破解规则进行分解,形成破解颗粒,并将所述破解颗粒映射给GPU,并根据破解成功标记和pos计算出所述破解规则对应的密码;GPU,用于根据所述破解颗粒进行破解,如果破解成功,则返回破解成功标记和对应的GPU内核线程的密码样本索引pos给CPU。本专利技术实施例提供的利用破解规则破解密码的方法及系统,通过CPU对密码的破解规则进行分解,形成破解颗粒,并将所述破解颗粒映射给GPU,GPU根据所述破解颗粒进行破解,如果破解成功,则返回破解成功标记和对应的GPU内核线程的密码样本索引给CPU,CPU根据破解成功标记和密码样本索引计算出所述破解规则对应的密码。对于较多位数的密码,采用大规模GPU集群同时破解,提高了密码的破解效率,节省了破解时间。附图说明图1是现有技术中CPU与GPU的内部运算单元逻辑结构图;图2是现有技术中GPU处理数据的单元的示意图;图3是现有技术中串行代码在主机上运行、并行代码在设备上运行的示意图;图4是本专利技术第一实施例提供的一种利用破解规则破解密码的方法的流程图;图5是本专利技术实施例提供的利用破解规则破解密码的方法中的形成破解颗粒的流程图;图6是本专利技术实施例提供的利用破解规则进行破解的方法中的GPU根据破解颗粒进行破解的流程图;图7是本专利技术第二实施例提供的一种利用破解规则破解密码的方法的流程图;图8是本专利技术第二实施例提供的一种利用破解规则破解密码的方法中的排列前后字符集的次序交换示意图;图9是本专利技术第二实施例提供的利用破解规则进行破解的方法中的GPU内核线程构造图;图10是本专利技术第二实施例提供的利用破解规则破解密码的方法中的伪密码的形成及与输入的密文比较的示意图;图11是本专利技术第三实施例提供的一种利用破解规则破解密码的系统的示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部内容。图4示出了本专利技术的第一实施例。图4是本专利技术第一实施例提供的一种利用破解规则破解密码的方法的流程图,该方法适用于对4位以上的密码进行破解,可由计算机执行,该方法具体包括步骤410、步骤420和步骤430,具体如下:步骤410,CPU对密码的破解规则进行分解,形成破解颗粒,并将所述破解颗粒映射给GPU。其中,破解颗粒是对破解规则进行分解形成的适用于GPU数据域的数据对象。CPU对适用于CPU数据域的数据对象破解规则进行分解,形成适用于GPU数据域的数据对象破解颗粒,并将形成的破解颗粒映射给GPU。其中,所述破解颗粒的大小取决于所述破解颗粒在GPU上的运行时间。一般,破解颗粒在GPU上的运行时间控制在一定时间内,因此所述破解颗粒的大小由该运行时间决定。优选的,图5是本专利技术实施例提供的利用破解规则破解密码的方法中的形成破解颗粒的流程图,如图5所示,CPU对密码的破解规则进行分解,形成破解颗粒,包括如下步骤:步骤501,确定密码的破解规则的位数,将所述破解规则中的每个字符集按照字符集长度由小到大进行排列,并记录字符集的次序交换,其中,一个字符集为密码中的一位的破解范围。CPU首先根据破解规则中的字符集的个数确定密码的破解规则的本文档来自技高网
...
利用破解规则破解密码的方法及系统

【技术保护点】
一种利用破解规则破解密码的方法,其特征在于,所述方法包括:CPU对密码的破解规则进行分解,形成破解颗粒,并将所述破解颗粒映射给图形处理器GPU;GPU根据所述破解颗粒进行破解,如果破解成功,则返回破解成功标记和对应的GPU内核线程的密码样本索引pos给CPU;CPU根据破解成功标记和pos计算出所述破解规则对应的密码。

【技术特征摘要】
1.一种利用破解规则破解密码的方法,其特征在于,所述方法包括:CPU对密码的破解规则进行分解,形成破解颗粒,并将所述破解颗粒映射给图形处理器GPU;GPU根据所述破解颗粒进行破解,如果破解成功,则返回破解成功标记和对应的GPU内核线程的密码样本索引pos给CPU;CPU根据破解成功标记和pos计算出所述破解规则对应的密码;其中,所述CPU对密码的破解规则进行分解,形成破解颗粒,包括:S1、确定密码的破解规则的位数,将所述破解规则中的每个字符集按照字符集长度由小到大进行排列,并记录字符集的次序交换,其中,一个字符集为密码中的一位的破解范围;S2、根据排序后的后4个字符集计算簇大小,其中,簇为排序后的后4个字符集的遍历结果的集合;S3、按照密码破解算法的复杂度,确定GPU内的比对次数,其中,GPU内的比对次数是GPU在预设时间内的计算量;S4、根据GPU内的比对次数,确定每线程块线程数目和每网格线程块数目;S5、遍历排序后的后4个字符集以外的字符集形成表;S6、根据GPU内的比对次数和簇大小,计算簇偏移;S7、根据GPU内的比对次数和最近一次计算得到的簇偏移,计算提供给GPU的表的项目数;S8、根据最近一次计算得到的提供给GPU的表的项目数和表,确定表起始项目;如果最近一次确定的表起始项目的位置编号加最近一次计算的提供给GPU的表的项目数超过了表的总项目数,则设置破解结束标记;S9、根据排序后的字符集、字符集的次序交换、GPU内的比对次数、最近一次计算的簇偏移、最近一次确定的表起始项目、破解结束标记、每线程块线程数目和每网格线程块数目确定管理数据体,根据管理数据体确定破解颗粒;S10、如果最近一次确定的表起始项目的位置编号加最近一次计算的提供给GPU的表的项目数超过了表的总项目数,则结束本流程,否则,返回步骤S6。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果破解不成功,GPU则返回破解未成功标记给CPU。3.根据权利要求1所述的方法,其特征在于,GPU根据破解颗粒进行破解,包括:根据下式计算当前GPU内核线程的pos:pos=offset+blockIdx.x*blockDim.x+threadIdx.x+gridDim.x*blockDim.x*n其中,offset为簇偏移,n为循环次数,blockIdx.x为当前线程块索引,threadIdx.x为当前线程索引,(blockIdx.x,threadIdx.x)是线程的标识,blockDim.x为破解颗粒的每线程块线程数目,gridDim.x为破解颗粒的每网格线程块数目;判断pos是否大于或者等于GPU内的比对次数与簇偏移的和,如果是,则线程内破解结束,返回破解未成功标记给CPU,如果否,则继续破解;根据后4个字符集的长度计算密码后4位分别相对于各自字符集的索引,进一步计算出表索引;取出所述密码后4位分别相对于各自字符集的索引所对应的字符和表索引所对应的表项目,组成伪密码;将所述伪密码经过次序变换得到密码样本,根据密码破解算法计算出密文,将该密文与输入的密文进行比较,如果一致则破解成功,如果不一致则破解不成功。4.根据权利要求1或2所述的方法,其特征在于,所述破解颗粒的大小取决于所述破解颗粒在GPU上的运行时间。5.一种利用破解规则破解密码的系统,其特征在于,所述系统包括:...

【专利技术属性】
技术研发人员:施宏伟
申请(专利权)人:北京锐安科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1