当前位置: 首页 > 专利查询>复旦大学专利>正文

基于hashcat与GPU并行计算的PCFG口令猜测方法技术

技术编号:35293475 阅读:14 留言:0更新日期:2022-10-22 12:40
本发明专利技术属于口令安全技术领域,具体为一种基于hashcat与GPU并行计算的PCFG口令猜测方法。本发明专利技术首先对PCFG口令猜测模型生成的训练数据进行预处理,构建相应数据结构后传输至GPU端,在GPU端利用处理的数据和设计的索引算法并行生成口令猜测并在口令密文中进行匹配,最后将命中信息传回CPU端并重构命中口令以实现口令恢复。本发明专利技术猜测方法兼容hashcat的运行流程,可作为一种攻击模式直接实现在hashcat中。本发明专利技术在利用PCFG高效的猜测效率的同时,利用GPU并行计算减少了口令生成的时间成本;将PCFG口令生成过程与hashcat运行过程相结合,减少了概率猜测模型与实用破解工具结合使用的传输时延。结合使用的传输时延。结合使用的传输时延。

【技术实现步骤摘要】
基于hashcat与GPU并行计算的PCFG口令猜测方法


[0001]本专利技术属于口令安全
,具体为一种基于hashcat与GPU并行计算的PCFG口令猜测方法。

技术介绍

[0002]文本口令因其低成本、易使用等特性,一直以来在身份认证领域被广泛使用。口令安全研究人员一直致力于寻找高效的口令猜测方法。高效的口令猜测方式可以帮助口令管理员更好地发现易被破解的口令,也可在司法举证中用于获取加密信息。而随着近年来越来越多的口令明文数据被泄漏,基于数学概率模型的数据驱动口令猜测成为可能,以概率上下文无关文法(Probabilistic Context

free Grammars,简称PCFG)为代表的概率口令猜测模型在口令安全研究领域受到越来越多的关注。PCFG 在明文口令集上进行训练,将口令提取成由字符类片段组合成的结构(预终端),用结构的概率与其组成字符串(片段元素)的概率的乘积作为口令概率,以概率从高到低的顺序生成猜测口令。相比于以基于规则的攻击为主要攻击方法的hashcat等实用口令破解工具,PCFG这类基于数学概率模型的猜测方法在同等猜测数下具有更高的猜测效率,即能使用更少的猜测命中更多的口令。但PCFG生成猜测口令的速度过慢,在现实攻击场景下并不实用。此外,在进行密文口令的破解时,需要另外采用管道机制来与实用工具相结合来进行哈希和匹配等操作,更增加时间消耗。总的来说,目前PCFG的口令生成速度还亟待提升,且缺少可用的PCFG 与实用工具hashcat的集成方案。

技术实现思路

[0003]本专利技术的目的在于提出一种破解效效率高、可扩展性强的PCFG口令猜测方法。
[0004]本专利技术提出的PCFG口令猜测方法,是将实用口令破解工具hashcatt与GPU并行计算技术相结合;通过在CPU端预处理PCFG模型训练得到的模型数据和在GPU端各线程中使用设计的索引算法定位该线程需要生成的口令,使得PCFG能利用GPU在口令级别上实现并行口令生成。本专利技术不但利用PCFG本身高效的口令破解效率,还利用GPU加速口令生成速度,并通过与实用口令破解工具hashcat结合,进一步提升在现实场景下破解密文口令的速度。
[0005]本专利技术提出的PCFG口令猜测方法,具体分为三个步骤:步骤一、CPU端处理PCFG模型数据模型数据的处理分为两个部分:构建片段字典和重构预终端;通过在CPU端对PCFG口令猜测模型的模型数据进行预处理,得到片段字典和重构后的预终端结构;片段字典在破解开始之前传入GPU端待用;进行口令破解时,每次基于GPU内存限制生成并传输一定数量预终端结构进入GPU端,进行后续口令猜测过程。其中:(一)所述构建片段字典,是指将PCFG训练得到的所有片段字符串按顺序存储成一个字典(片段字典),创建完成后传入GPU端待用。具体来说,对于所有片段元素(字符串),依次按类型、长度和概率的顺序进行排序,即先按类型进行排序,对于同种类型的片段元素,
按长度进行排序,对所有同类型且长度相同的片段元素,按概率进行排序。例如,类型排序时将字母类型排在最前,且字母类型且长度为1的片段元素中,元素“a”的概率最高,则片段元素“a”将排在片段字典的第一位;由此,可以将每种类型片段不同长度的元素看成一组,如上例中字符类型、长度为1的所有元素为一组,且该组元素的第一个元素为“a”。为了获取每组元素的位置,另设一个长度为K*N的一维数组存储所有元素组在片段字典中的起始位置(即上例中“a”的相对偏移),其中K为片段类型数,N为片段元素的最大长度。通过该一维数组,通过某元素在该组中的编号,即可获取到该元素在整个片段字典的相对偏移,从而计算出该元素的地址。
[0006](二)所述重构预终端,分为三个部分:片段元素概率重分配、修改预终端的基本结构和预终端结构长度微调,其中片段元素概率重分配发生在生成预终端之前。
[0007](1)在生成预终端之前,重新分配同类型、同长度片段元素的概率,以此调整预终端中每个片段的元素数量,进而调整一个预终端将生成的口令数目。通过此方法来使后续在GPU进行并行口令生成时同一个warp中的线程处理同一个预终端,从而减少线程间的等待时延。具体来说,对于片段字典中同类型、同长度的元素,按8个一组重新分配概率,以此生成的预终端每个片段中包含8个元素。对于包含2个及以上片段的预终端,生成的口令数一定是32(一个warp中的线程数)的整数倍,无需其他操作;但对于仅包含一个片段的预终端,需要重复4次该预终端使得生成的口令数达到32。
[0008](2)修改预终端的基本结构。在原始的预终端结构中,每个预终端需要存储每个片段对应的类型、长度、概率和其中包含的具体元素(字符串数组)。在修改预终端时,首先在每一个预终端结构中增加四个值,分别是偏移量(offset)、片段数量(segment size)、前猜测数(previous guesses)和当前猜测数(current guesses)。其次,对于构成预终端的每个片段,保留类型(type)和片段长度(length)这两项基础信息,去除原结构体中存储的概率信息和具体元素字符串,新增两个值,即元素起始编号(start index of item)和元素数量(item size)。以此不但减少了原有结构的冗余存储,还为之后的索引计算做好准备。
[0009]其中,新增的几类数值的具体含义如下:偏移量记录了上一个预终端要生成的最后一条猜测口令所对应的线程编号(线程编号从1开始,初始的0对应最大线程编号),可以用来计算当前预终端要生成的第一条猜测口令所对应的线程编号。
[0010]片段数量记录了组成当前预终端的口令片段的数量,可以用来判断组成该预终端的具体片段数据的存储边界。
[0011]前猜测数记录了在当前预终端之前的所有预终端所生成的猜测口令总数,可用来计算当前预终端生成的某条猜测口令在猜测方法生成的所有猜测口令中的位置。
[0012]当前猜测数记录了当前预终端所能生成的猜测口令总数,可以用来判断当前预终端是否已分配完所有猜测口令的生成任务。
[0013]元素起始编号记录当前片段中的第一个元素在片段字典的同类型同长度元素中的偏移。由于一个预终端中片段的所有元素都是同类型、同长度且同概率的,所有这些元素在片段字典中是连续存储的,因此只需要存储第一个元素的偏移即可。
[0014]元素数量记录当前片段中的元素包含的字符串的数量,可以与长度一起使用来判断元素在片段字典中的地址边界。
[0015](3)对单个预终端结构大小进行微调。考虑到GPU的内存访问始终以缓存行为单位执行,且缓存行大小通常为128字节,可以在减少预终端结构长度的基础上使一个预终端的总长度为GPU缓存行大小的整数倍,以此减少获取预终端时的存储访问次数。具体来说,在一个预终端结构中,分别使用8字节、1字节、8字节、7字节来存储偏移量、片段数量、前猜测数和当前猜测数;对预终端中包含的每个段,分别使用1字节、1字节、1字节和5字节来存储类型、长度本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1. 一种基于hashcat与GPU并行计算的PCFG口令猜测方法,其特征在于,通过在CPU端预处理PCFG模型训练得到的模型数据和在GPU端各线程中使用设计的索引算法定位该线程需要生成的口令,使得PCFG能利用GPU在口令级别上实现并行口令生成;并通过与实用口令破解工具hashcat结合,提升在现实场景下破解密文口令的速度;具体步骤如下:步骤一、CPU端处理PCFG模型数据模型数据的处理分为两个部分:构建片段字典和重构预终端;通过在CPU端对PCFG口令猜测模型的模型数据进行预处理,得到片段字典和重构后的预终端结构;片段字典在破解开始之前传入GPU端待用;进行口令破解时,每次基于GPU内存限制生成并传输一定数量预终端结构进入GPU端,进行后续口令猜测过程;步骤二、GPU端并行生成并匹配猜测口令根据每次传入GPU的预终端结构中的信息,利用索引算法在每个GPU线程中确定待生成的口令及其相应片段元素在片段字典中的位置,从而生成猜测口令;对生成的猜测口令按相应哈希算法处理后在密文口令文件中进行匹配,对于匹配成功的猜测口令,记录其索引信息并传回CPU端;步骤三、CPU端重构并输出命中口令对于匹配成功的口令,其相应索引信息被传回CPU端,在CPU端利用索引算法重构命中口令的明文,以此完成口令恢复,最后将破解信息输出到指定位置。2.根据权利要求1所述的PCFG口令猜测方法,其特征在于,在步骤一中,所述构建片段字典,是指将PCFG训练得到的所有片段字符串按顺序存储成一个字典;具体过程为:(1)对于所有片段元素即字符串,依次按类型、长度和概率的顺序进行排序,即先按类型进行排序,对于同种类型的片段元素,按长度进行排序,对所有同类型且长度相同的片段元素,按概率进行排序;(2)将每种类型片段不同长度的元素看成一组,为了获取每组元素的位置,另设一个长度为K*N的一维数组存储所有元素组在片段字典中的起始位置,其中K为片段类型数,N为片段元素的最大长度;通过该一维数组,根据某元素在该组中的编号,即可获取到该元素在整个片段字典的相对偏移,从而计算出该元素的地址。3.根据权利要求1所述PCFG口令猜测方法,其特征在于,在步骤一中,所述重构预终端的具体过程分为三个部分:片段元素概率重分配、修改预终端的基本结构和预终端结构长度微调;(1)片段元素概率重分配,是在生成预终端之前,重新分配同类型、同长度片段元素的概率,以此调整预终端中每个片段的元素数量,进而调整一个预终端将生成的口令数目,使后续在GPU进行并行口令生成时同一个warp中的线程处理同一个预终端,从而减少线程间的等待时延;具体来说,对于片段字典中同类型、同长度的元素,按8个一组重新分配概率,以此生成的预终端每个片段中包含8个元素;对于包含2个及以上片段的预终端,生成的口令数是32的整数倍,无需其他操作;对于仅包含一个片段的预终端,重复4次该预终端使得生成的口令数达到32;(2)修改预终端的基本结构;在原始的预终端结构中,每个预终端存储每个片段对应的类型、长度、概率和其中包含的具体元素即字符串数组;所述修改预终端的基本结构,首先,在每一个预终端结构中增加四个值,分别是偏移量、片段数量、前猜测数和当前猜测数;其
次,对于构成预终端的每个片段,保留类型和片段长度两项基础信息,去除原结构体中存储的概率信息和具体元素字符串,新增两个值,即元素起...

【专利技术属性】
技术研发人员:韩伟力张浩东张俊杰
申请(专利权)人:复旦大学
类型:发明
国别省市:

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

1