CN112199214A - 一种gpu上的候选口令生成及应用破解方法 - Google Patents

一种gpu上的候选口令生成及应用破解方法 Download PDF

Info

Publication number
CN112199214A
CN112199214A CN202011089941.9A CN202011089941A CN112199214A CN 112199214 A CN112199214 A CN 112199214A CN 202011089941 A CN202011089941 A CN 202011089941A CN 112199214 A CN112199214 A CN 112199214A
Authority
CN
China
Prior art keywords
grammar
password
generated
candidate
gpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011089941.9A
Other languages
English (en)
Other versions
CN112199214B (zh
Inventor
谢子平
李勇
周永彬
王伟平
董晓彤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN202011089941.9A priority Critical patent/CN112199214B/zh
Publication of CN112199214A publication Critical patent/CN112199214A/zh
Application granted granted Critical
Publication of CN112199214B publication Critical patent/CN112199214B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种GPU上的候选口令生成及应用破解方法。口令生成方法包括:1)根据目标需求创建破解任务,设置破解空间大小N1;2)对训练集进行处理,得到上下文无关文法和规则概率;3)根据上下文无关文法计算出可生成的最大候选口令数目N2,确定破解任务生成的总候选口令数目N=MIN(N1,N2);然后根据N以及GPU性能确定每次核函数生成的候选口令数、开启的线程总数以及为运行核函数分配所需要GPU上的内存空间;4)核函数根据上下文无关文法和本次核函数生成候选口令数目,确定本次核函数处理的基础语法规则表中的基础语法结构,并利用GPU来生成符合文法要求的候选口令;5)返回第4步直到生成所有候选口令。

Description

一种GPU上的候选口令生成及应用破解方法
技术领域
本发明涉及密码破解技术领域,尤其涉及一种GPU上的基于PCFG模型的候选口令生成及应用破解方法。
背景技术
目前,著名的口令破解工具包括Hashcat和John The Ripper,其中John TheRipper支持破解算法类型多,破解模式多样,但是其主要是使用CPU作为计算单元,对GPU并行加速支持的不太好。而Hashcat采用Opencl编程语言,支持多平台,算法种类齐全,尤其对GPU并行加速、优化做得很好,号称是世界上最快和最先进的密码破解工具,所以我们以Hashcat为例,对于Hashcat其主要提供以下几种破解模式:暴力模式,字典模式、字典+规则等模式。
其中暴力模式也叫穷举式破解,用户将密码中所有可能用到的字符进行穷举式排列组合,并逐一进行验证,只要设定的穷举长度大于等于真实密码长度,暴力破解就可以100%实现破解,因此该方法是一种广泛使用的密码破解手段。通过暴力模式生成的候选口较少关注口令的顺序和生成口令字符内在的相关性,需要尝试大量低质量的口令,同时当真实口令较长的情况下,其需要尝试巨量的候选空间,使得破解效率低下。
字典模式则凭借其更贴合人类创建口令时的规律,字典文件包含了可能出现在用户口令中的一些单词,这些单词一般来源于对己泄漏口令集的收集,或者来源于特定的字符集。现有的破解方法一般为在已知的字典基础上进行多种规则的变动,如大小写变换,相似的特殊字符变为字母,末尾添加若干数字等变形方法,以进一步模仿创建密码时的场景,以此得到更贴近现实的口令猜测,增大破解成功率。但是字典文件的容量是有限的,即使通过规则,也不能生成太多新颖口令,同时如果目标口令集没有采用类似的变形规则,那么这些变形规则也是无效的。字典攻击的成功率取决于字典文件的选取质量和变形规则的设置,两者相互制约,导致字典攻击并不能普遍适用。并且当利用GPU进行破解的时候,还需要将从本地磁盘读取到CPU内存空间的数据拷贝到GPU内存,因为CPU与GPU间的数据传输带宽不足,一旦字典空间过大这会严重制约最终的破解速度。
随着自然语言处理技术的发展,研究人员开始将一些自然语言处理思想运用到口令猜测技术之中。通过对大量已泄露口令集中口令分布和口令结构的分析,研究人员发现,用户并不是随机选择口令,在整个口令集中口令的分布是非常不均匀的。比如同样长度的口令中,password出现的概率远大于axfynplk,同样123456出现的概率也远大于295713。同时,口令组成结构也有着很明显的偏向性,某种结构的口令可能是另一种结构口令的数十倍。因此,如果在破解口令的过程中考虑这些因素,将这些规律和统计特性进行分析利用,就可以在破解过程中,优先验证出现概率更高的口令,从而能够提高破解效率。这就是基于概率模型的口令破解技术的基本思想。主要包括基于马尔科夫模型(Markov)和基于上下文无关文法模型(PCFG)的口令生成方法。
而现有的可支持PCFG的攻击模式基本是将破解过程与利用PCFG模型生成口令字典过程剥离开,既先通过PCFG模型生成口令字典,存储在本地硬盘中,再将生成的口令字典读取到CPU并拷贝到GPU内存中,最后位于GPU内存中的口令再去参与破解过程,这一过程涉及到字典生成、存储、读取、拷贝等过程,并不是真正意义上的基于GPU的PCFG攻击模式。
综上我们可以发现真实破解场景下,候选口令生成存在的问题:1)通过暴力模式生成的候选口较少关注口令的顺序和生成口令字符内在的相关性,需要尝试大量低质量的口令,同时当真实口令较长的情况下,其需要尝试巨量的候选空间,使得破解效率低下;2)通过字典模式生成的候选口令更贴近现实口令,但是涉及到海量字典生成、存储、读取等过程,进一步因为CPU与GPU间的传输带宽问题,加载到GPU内存会严重制约整体算法破解速度。并不是真正意义上的基于GPU的PCFG攻击模式。
本发明提供一种GPU上的基于PCFG模型的候选口令生成及应用破解方法,该方法能够支持真实破解场景下的基于GPU的PCFG攻击模式,通过一个小字典扩展出大规模的更贴近现实的候选口令,同时避免从CPU端到GPU端的海量字典数据传输限制总体破解速度的问题。
发明内容
针对基于GPU的真实破解场景下,为了充分利用真实口令的规律和统计特性,同时避免从CPU端到GPU端的海量字典数据传输问题,本发明提供一种GPU上的基于PCFG模型的候选口令生成及应用破解方法。
本发明的技术方案为:
一种GPU上的候选口令生成方法,其步骤包括:
1)根据目标需求创建破解任务,并提供口令字典文件作为PCFG模型的训练集,设定破解空间大小N1;
2)利用概率上下文无关文法模型对该训练集进行处理,得到上下文无关文法和规则概率;
3)根据该上下文无关文法计算出可生成的最大候选口令数目N2,确定所述破解任务生成的总候选口令数目N=MIN(N1,N2);然后根据生成数目N以及GPU性能确定每次核函数开启的线程总数generate_power以及为运行核函数所需要GPU上的内存空间;设置参数hardware_power=multiprocessors*threads_per_multiprocessor,其中multiprocessors是GPU的流多处理器数目,threads_per_multiprocessor是每个流多处理器最大线程数;generate_power=speedup*hardware_power,speedup为自然数;定义函数deal_grammar(grammar_start_index,grammar_end_index,generate_power),用于生成满足从语法索引起始值grammar_start_index到语法索引终止值grammar_end_index闭区间的口令最多且不超过generate_power;
4)核函数根据该上下文无关文法和生成数目N,同时根据循环次数索引loop_index、grammar_start_index、grammar_end_index确定本次核函数处理的基础语法规则表G_BASE中的基础语法结构G_KERNEL,并利用GPU来生成符合文法要求的候选口令。
进一步的,步骤3)中,将每次处理的基础语法结构G_KERNEL存放到GPU的共享内存,所述GPU上存储的信息包括每次核函数处理的基础语法结构G_KERNEL、基础语法结构的字母填充表BASE_L、基础语法结构的数字填充表BASE_D、基础语法结构的特殊字符填充表BASE_S、基础语法结构的其他字符填充表BASE_O和每次生成的最终候选口令PWS;当确定了每次需要生成的候选口令数目N时,在GPU上分配存储生成口令空间PWS_SIZE=MIN(N,generate_power)*sizeof(PWS),并计算出核函数循环调用次数
Figure BDA0002721767970000031
Figure BDA0002721767970000032
这里
Figure BDA0002721767970000033
表示向上取整。
进一步的,步骤4)中,设置基于PCFG的并行口令生成核函数pcfg_gernrate_loop,用于GPU加速候选口令生成;该核函数pcfg_gernrate_loop的输入参数包括基础语法结构G_KERNEL、基础语法结构的字母填充表BASE_L、基础语法结构的数字填充表BASE_D、基础语法结构的特殊字符填充表BASE_S、基础语法结构的其他字符填充表BASE_O,以及用来保存每次核函数生成的候选口令PWS。
进一步的,设置该核函数pcfg_generate_loop的开启线程块数目num_blocks以及每个线程块上开启的线程数num_threads;num_blocks=generate_power/num_threads。
进一步的,所述规则概率包含基础语法规则表G_BASE及基础语法规则对应的概率,以及从训练集中计算得到以n为变长的字母字符串的概率Ln、数字字符串的概率Dn和特殊字符串的概率Sn;其中Dn用于从基础语法结构生成预终端结构时填充基础语法结构中的数字部分,Sn用于从基础语法结构生成预终端结构时填充基础语法结构中的特殊部分,Ln用于从预终端结构生成终端结构时填充字母部分。
进一步的,步骤4)中,设置函数generated_pws_volume(G_BASE,grammar_start_index,grammar_end_index,Mode),用于统计基础语法结构区间内能产生的口令总数或预终端总数;其中Mode包含四种模式:空NULL、‘L’、‘D’、‘S’,当模式为空的时候计算区间基础语法结构通过将字母串、数字串、特殊字符串进行填充所能产生的所有口令数;当为‘L’时计算区间基础语法结构能够填充的字母串总数;当为‘D’时计算区间基础语法结构能够填充的数字串总数;当为‘S’时计算区间基础语法结构能够填充的特殊字符串总数。
一种基于上述方法生成的候选口令的应用破解方法,其步骤包括:对核函数每次所生成的候选口令进行hash计算,并与目标hash值进行比对,从而判断对应候选口令是否为能够生成目标hash值的正确口令,如果包含能够生成目标hash值的正确口令,则判定核函数当前生成的候选口令是包含正确口令;如果当前生成的候选口令未包含正确口令且loop_index大于或等于循环调用次数loop_num,则判定破解任务失败。
本发明主要内容包括:创建破解任务、文法训练阶段、口令生成阶段、口令hash值计算破解阶段。
1)创建破解任务。该阶段用户根据自身需求创建破解任务,并提供口令字典文件作为PCFG模型的训练集,并设定后续生成的破解空间大小N1;
2)文法训练阶段。利用概率上下文无关文法模型对训练集进行处理,得到概率上下文无关文法,这里包含基础语法规则表G_BASE及基础语法规则对应的概率,以及从训练集中统计得到的以n为变长的字母字符串、数字字符串和特殊字符串,分别使用Ln,Dn,Sn来表示,这里n≥1,且为方便记忆,口令位数不会特别长,这里假设n≤32。其中Dn,Sn用于从基础语法结构生成预终端结构时填充基础语法结构中的数字部分和特殊部分,Ln用于从预终端结构生成终端结构时填充字母部分,各种结构类型见表1。上下文无关文法定义:G=(S,V,P,E),V是变量的有限集合,S是起始状态集合,P是生成规则的有限集合,E是一个终止结点的有限集合,语法就是从初始字符开始到终止结点为止的字符串集合。上下文无关文法CFG已经囊括了整个字典,概率上下文无关文法PCFG是指在CFG的基础上加上了用户密码的概率分布信息。
3)GPU上内存分配阶段。该阶段根据步骤2)中生成的文法,可以计算出可生成的最大候选口令数目N2,则此次破解任务生成的总候选口令数目为N=MIN(N1,N2)。接下来根据生成数目N,以及GPU性能来确定每次核函数开启生成的候选口令数目以及为运行核函数所需要GPU上的内存空间。为此我们需要引入几个参数,hardware_power和generate_power,其中hardware_power=multiprocessors*threads_per_multiprocessor,这里multiprocessors是GPU卡的流多处理器数目,threads_per_multiprocessor表示的是每个流多处理器最大线程数,这两个参数决定了GPU显卡拥有的线程最大总数。generate_power=speedup*hardware_power,这里将generate_power设定为hardware_power的整数倍,可以保证开启线程不会有浪费,generate_power决定了每次调用核函数生成的候选口令数目,也决定了核函数中for循环的次数,从而也即决定了核函数总的调用次数,通过测试,我们发现当generate_power=1966080,也既speedup=64的时候,整个生成、破解性能最优,因此我们将generate_power设定为1966080,既每次调用核函数时,可生成1966080个候选口令。为此需要根据步骤二中生成的顺序排列的基础语法结构表G来确定每次核函数处理的基础语法结构,利用这些基础语法结构产生的候选口令比generate_power小,同时当新增一条基础语法结构时,所生成的候选口令大于genetate_power。为此我们定义函数deal_grammar(grammar_start_index,grammar_end_index,generate_power),该函数返回的grammar_end_index(语法索引终止值)满足从grammar_start_index(语法索引起始值,该值从0开始,对应G_BASE中的第一条语法)开始的语法,到该返回值闭区间的语法可生成的口令数不超过generate_power且最大。所以每次核函数处理的语法为基础语法结构表G_BASE中从grammar_start_index到grammar_end_index间的语法结构,同时这里为了使用GPU共享内存进一步加速,我们将每次处理的基础语法结构G_KERNEL存放到共享内存,因为GPU上共享内存多为32768字节,同时考虑到每一条语法所需要的存储空间,为此们限定每次处理的语法数目最大值为MAX_G_PER_KERNEL=128。最终需要GPU上存储的量包括本次核函数处理的基础语法结构G_KERNEL,基础语法结构的字母填充表BASE_L,基础语法结构的数字填充表BASE_D,基础语法结构的特殊字符填充表BASE_S,基础语法结构的其他字符填充表BASE_O,本次生成的最终候选口令PWS。当确定了每次需要生成的候选口令数目时,我们需要分配存储生成口令空间PWS_SIZE=MIN(N,generate_power)*sizeof(PWS),这里PWS为候选口令的结构体,其他具体的变量对应GPU内存类型及分配的大小见表2。当确定了总的候选口令生成空间N,以及每次核函数生成的口令数generate_power,即可计算出核函数循环调用次数
Figure BDA0002721767970000051
这里
Figure BDA0002721767970000052
表示向上取整;
4)核函数生成口令阶段,该阶段主要是将步骤2)产生的文法,并根据步骤3)确定的每次核函数生成口令数量,同时根据循环次数索引loop_index,grammar_start_index,grammar_end_index来确定本次核函数处理的基础语法规则表G_BASE中的基础语法G_KERNEL,并利用GPU来生成符合文法要求的口令。进一步,为了实现利用GPU加速候选口令生成,设计了基于PCFG的并行口令生成核函数pcfg_generate_loop。该核函数的输入参数包括本次核函数处理的基础语法结构G_KERNEL,基础语法结构的字母填充表BASE_L,基础语法结构的数字填充表BASE_D,基础语法结构的特殊字符填充表BASE_S,基础语法结构的其他字符填充表BASE_O,以及用来保存本次核函数生成的候选口令PWS。同时还包括设置核函数开启线程块数目num_blocks以及每个线程块上开启的线程数num_threads,这两个参数决定了一个核函数的开启总数num_blocks*num_threads;步骤3)中我们确定了每次核函数开启的线程总数为generate_power,所以num_blocks=generate_power/num_threads,而num_threads这里我们设置成每个线程块每个维度可开启的最大线程数,通常为1024。为了统计语法结构区间内能产生的口令总数或预终端总数(这里将含有部分未填充的结构都称为是预终端,而不仅仅是只剩下字母串未填充的结构称为预终端),我们引入函数generated_pws_volume(G_BASE,grammar_start_index,grammar_end_index,Mode),这里G_BASE表示基础语法结构表,grammar_start_index,grammar_end_indx分别表示基础语法结构表的起始和终止索引值,Mode具有四种模式,分别是空NULL、‘L’、‘D’、‘S’,。当计算区间基础语法结构通过将字母串、数字串、特殊字符串进行填充能够产生所有口令数时将模式置为空;当计算区间基础语法结构通过填充字母串能够产生预终端总数时将模式置为‘L’;当计算区间基础语法结构通过填充数字串能够产生预终端总数时将模式置为‘D’;当计算区间基础语法结构通过填充特殊字符串能够产生预终端总数时将模式置为‘S’。所以这里我们通过线程号thread_id可以确认生成的候选口令:
pws[thread_id
+generated_pws_volume(G_KERNEL,grammar_start_index,grammar_index)]
=l[gid/generated_pws_volume(G_KERNEL,grammar_index,’D’)
*generated_pws_volume(G_KERNEL,grammar_index,’S’)
-generated_pws_volume(G_KERNEL,grammar_index_start,grammar_index,’L’)]
+d[gid/generated_pws_volume(grammar_index,’S’)
-generated_pws_volume(grammar_index_start,grammar_index,’D’)]
+s[gid%generated_pws_volume(grammar_index,’S’)
-generated_pws_volume(G_KERNEL,grammar_index_start,grammar_index,’S’)]
5)破解阶段,该阶段主要是对4)中pcfg_generate_loop核函数生成的候选口令进行hash计算,并与目标hash值进行比对,从而判断候选口令是否就是能够生成目标hash值的正确口令,进而可以确定这次核函数生成的候选口令是包含正确口令,如果未包含正确口令且loop_index大于等于loop_num,说明所有的基础语法结构都已处理完且未包含正确的口令,也即说明本次破解任务失败。如果loop_index小于loop_num,对loop_index进行加1操作并跳转到第4)步。具体过程:针对GPU每个线程上的生成口令,利用Hash计算核函数,对每一个生成口令进行hash计算,并通过最终的GPU上的比对函数,实现每一个生成口令hash值与目标hash值的比对,从而确定本次生成核函数生成的候选口令是否含有正确的口令。从而可以确定本次破解任务结果。
通过以上几个步骤实现了真实破解场景下的基于GPU的PCFG攻击模式,总体框架如图1所示,总体流程如图2所示,通过一个小字典扩展出大规模的更贴近现实的候选口令,同时避免从CPU端到GPU端的海量字典数据传输限制总体破解速度的问题,充分发挥GPU的并行加速效果。
本发明的有益效果是:
本发明设计的一种GPU上的基于PCFG模型的候选口令生成及应用破解方法,利用基于上下文无关文法模型的口令生成方法,充分利用已有口令的结构化信息生成更贴近真实的候选口令,同时实现GPU上候选口令一边生成,一边进行口令正确性验证,减少了海量字典的存储并且避免了CPU和GPU间数据的来回传输,充分利用了GPU多线程并行技术在生成口令和破解计算时的加速效果。
附图说明
图1为GPU上的基于PCFG模型的候选口令生成及应用破解方法总体框架;
图2为本发明GPU上的基于PCFG模型的候选口令生成及应用破解方法总体流程;
图3为GPU上的基于PCFG的候选口令生成核函数pcfg_generate_loop;
图4为原始PCFG生成候选口令推导过程;
图5为GPU上的PCFG并行化生成候选口令推导过程。
具体实施方式
下面结合说明书附图,详细说明本发明的具体实施方式。
本发明公开了一种GPU上的基于PCFG模型的候选口令生成及应用破解方法,其具体包括以下的步骤:
1)步骤一:用户创建破解任务。该阶段用户根据自身需求创建破解任务,并提供口令字典文件作为后续的训练集,并设定后续生成的破解空间大小N1;程序接收到破解任务,会将破解任务的正确校验值(hash值)TARGET_HASH_VALUE拷贝至GPU的常量内存,以便后续的比对操作;
2)步骤二:文法训练阶段。该阶段主要是对提供的训练集中的口令进行学习,归纳出上下文无关文法,并统计出规则概率。具体过程为:对输入字典中的密码进行学习,找到特定密码规则(也叫做基础语法结构)的出现概率,以及所有长度的字母、数字和特殊字符的概率,并且以上下文无关文法的形式保存下来。例如一个口令“*zkyiie123”,将其按照字符类别分割成若干段,用L表示字母、D表示数字、S表示特殊符号,则“*zkyiie123”可表示为SLD,如果将长度考虑进去,就可以表示成S1L6D3,这种表示被称为该口令的模式。规则概率由训练集中的口令统计得到,假如当前训练集有1000个训练数据,其中5位数字密码有100个,则可得到p(ST→D6)=0.1,如果当前5位数字密码中12345有20个,则可得到p(ST→12345)=0.2;
3)步骤三:GPU上内存分配阶段。该阶段根据生成的PCFG模型,可以计算出可生成的最大后续口令数目N2,则此次生成的候选口令数目为N=MIN(N1,N2)。接下来根据生成数目N,以及GPU性能来分配GPU上的内存空间。为此我们需要引入几个参数,hardware_power和generate_power,其中hardware_power=multiprocessors*threads_per_multiprocessor,这里multiprocessors是GPU卡的流多处理器数目,threads_per_multiprocessor表示的是每个流多处理器最大线程数,这两个参数决定了GPU显卡拥有的线程最大总数。generate_power=speedup*hardware_power,这里将generate_power设定为hardware_power的整数倍,可以保证开启线程不会有浪费,generate_power决定了每次调用核函数生成的候选口令数目,也决定了核函数中for循环的次数,从而也即决定了核函数总的调用次数,通过测试,我们发现当generate_power=1966080,也既speedup=64的时候,整个生成、破解性能最优,因此我们将generate_power设定为1966080,既每次调用核函数时,最多可生成1966080个候选口令。为此需要根据步骤二中生成的顺序排列的基础语法结构表G_BASE来确定每次核函数处理的基础语法结构,利用这些基础语法结构产生的候选口令比generate_power小,同时当新增一条基础语法结构时,所生成的候选口令大于genetate_power。为此我们定义函数deal_grammar(grammar_start_index,grammar_end_index,generate_power),该函数返回的grammar_end_index(语法索引终止值)满足从grammar_start_index(语法索引起始值,该值从0开始,对应G中的第一条语法)开始的语法,到该返回值闭区间的语法可生成的口令数不超过generate_power且最大。所以每次核函数处理的语法为基础语法结构表G中从grammar_start_index到grammar_end_index间的语法结构,同时这里为了使用GPU共享内存进一步加速,我们将每次处理的基础语法结构G_KERNEL存放到共享内存,因为GPU上共享内存多为32768字节,同时考虑到每一条语法所需要的存储空间,为此们限定每次处理的语法数目最大值为MAX_G_PER_KERNEL=128。最终需要GPU上存储的量包括本次核函数处理的基础语法结构G_KERNEL,基础语法结构的字母填充表BASE_L,基础语法结构的数字填充表BASE_D,基础语法结构的特殊字符填充表BASE_S,基础语法结构的其他字符填充表BASE_O,本次生成的最终候选口令PWS。当确定了每次需要生成的候选口令数目时,我们需要分配存储生成口令空间PWS_SIZE=MIN(N,generate_power)*sizeof(PWS),这里PWS为候选口令的结构体,其他具体的变量对应GPU内存类型及分配的大小见表2。当确定了总的候选口令生成空间N,以及每次核函数生成的口令数,即可计算出核函数循环调用次数
Figure BDA0002721767970000091
这里
Figure BDA0002721767970000092
表示向上取整。
4)步骤四:口令生成阶段。该阶段主要是将步骤二产生的概率无关文法,并根据步骤三确定的每次核函数生成口令数量,同时根据循环次数索引loop_index,grammar_start_index,grammar_end_index来确定本次核函数处理的基础语法规则表G_BASE中的基础语法G_KERNEL。进一步利用GPU来加速生成符合文法要求的候选口令,具体过程为:读取步骤2通过PCFG模型训练得到的数据,主要包括表2中的数据,同时将表2中需要的数据拷贝至步骤三中已在GPU分配存储空间的相应内存中。原始的利用PCFG模型生成候选口令的过程是,根据文法规则概率(由高到低)选择规则,依次推导展开。例如现有文法规则如表3所示,另有填充非终结符L的字典{abc,xzp,love,yyqx},其推导过程如图4所示,括号内表示规则概率,箭头上的带圈标号表示推导次序,最终得出的口令块顺序为A、C、B、D、E、F。该方法涉及到多层循环,生成速度低,严重制约任务的破解效率。为了能够利用GPU来实现候选口令的并行生成,我们设计了并行生成逻辑,设计了基于PCFG的并行口令生成核函数pcfg_generate_loop。该核函数的输入参数包括本次核函数处理的基础语法结构G_KERNEL,基础语法结构的字母填充表BASE_L,基础语法结构的数字填充表BASE_D,基础语法结构的特殊字符填充表BASE_S,基础语法结构的其他字符填充表BASE_O,以及用来保存本次核函数生成的候选口令PWS。同时还包括设置核函数开启线程块数目num_blocks以及每个线程块上开启的线程数num_threads,这两个参数决定了一个核函数的开启总数,步骤三中我们确定了每次核函数最多可生成generate_power个候选口令,为了确定每次核函数生成的候选口令数generate_work,这里需要引入统计语法结构区间内能产生的口令总数的函数generated_pws_volume(G_BASE,grammar_start_index,grammar_end_index,Mode),其中G_BASE表示基础语法结构表,grammar_start_index,grammar_end_indx分别表示基础语法结构表的起始和终止索引值,Mode包含四种模式,分别是空NULL、‘L’、‘D’、‘S’,当模式为空的时候计算区间基础语法结构通过将字母串、数字串、特殊字符串进行填充所能产生的所有口令数;当为‘L’时计算区间基础语法结构能够填充的字母串总数;当为‘D’时计算区间基础语法结构能够填充的数字串总数;当为‘S’时计算区间基础语法结构能够填充的特殊字符串总数。所以最后generate_work=MAX(generate_power,generated_pws_volume(G_BASE,grammar_start_index,grammar_end_index)),而num_blocks=generate_work/num_threads,num_threads这里我们设置成每个线程块每个维度可开启的最大线程数,通常为1024。最终我们通过线程号thread_id可以确认生成的候选口令:
pws[thread_id
+generated_pws_volume(G_KERNEL,grammar_start_index,grammar_index)]
=l[gid/generated_pws_volume(G_KERNEL,grammar_index,’D’)
*generated_pws_volume(G_KERNEL,grammar_index,’S’)
-generated_pws_volume(G_KERNEL,grammar_index_start,grammar_index,’L’)]
+d[gid/generated_pws_volume(grammar_index,’S’)
-generated_pws_volume(grammar_index_start,grammar_index,’D’)]
+s[gid%generated_pws_volume(grammar_index,’S’)
-generated_pws_volume(G_KERNEL,grammar_index_start,grammar_index,’S’)]
在表3文法规则下,GPU并行推导过程如图5所示,该并行化方法生成得到的口令块顺序为A、B、C、D、E、F,虽然与原始PCFG生成口令顺序有出入,但是并行版的PCFG口令生成顺序是与基础语法结构概率一致的,而至于同一核函数中的预终端没有按照概率顺序产生(原始是ACBD,并行生成为ABCD)这一点对整体的破解效率并不会产生影响,因为一个核函数中生成的口令理论上可认为是并行处理生成的。也就并不需要考虑核函数中生成顺序问题。
5)步骤5:破解阶段。该阶段主要是对步骤四中pcfg_generate_loop核函数生成的候选口令进行hash计算,并与目标hash值进行比对,从而判断候选口令是否就是能够生成目标hash值的正确口令,进而可以确定这次核函数生成的候选口令是包含正确口令,如果未包含正确口令且loop_index大于等于loop_num,说明所有的基础语法结构都已处理完且未包含正确的口令,也即说明本次破解任务失败。如果loop_index小于loop_num,对loop_index进行加1操作并跳转到第4)步。具体过程:针对GPU每个线程上的生成口令,利用Hash计算核函数,对每一个生成口令利用calucate_pws_hash核函数进行候选口令的hash计算,并通过最终的GPU上的比对函数,实现每一个生成口令hash值与目标hash值的比对,从而确定本次生成核函数生成的候选口令是否含有正确的口令。从而可以确定本次破解任务结果。
6)步骤6:破解结果返回及清理阶段。该阶段主要是将步骤五返回的结果进行最后的输出,已经将步骤3中GPU上分配的内存以及在CPU上分配占用的内存进行释放,清理,保证程序的正常退出。
表1 语法结构类型
结构 例子
简单结构 SDL
基础语法结构 S1D4L8
预终端结构 !1234L8
终端结构 !1234password
表2 GPU上所需的变量及其对应内存类型、大小
Figure BDA0002721767970000111
表3 文法规则实例
文法 概率
ST→L3D3 0.5
ST→L3D4 0.3
ST→L4 S1D4 0.2
D3→123 0.75
D3→321 0.25
D4→1234 0.6
D4→2020 0.4
S1→_ 1
L3→abc -
L3→xzp -
L4→love -
L4→yyqx -
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种GPU上的候选口令生成方法,其步骤包括:
1)根据目标需求创建破解任务,并提供口令字典文件作为PCFG模型的训练集,设定破解空间大小N1;
2)利用概率上下文无关文法模型对该训练集进行处理,得到上下文无关文法和规则概率;
3)根据该上下文无关文法计算出可生成的最大候选口令数目N2,确定所述破解任务生成的总候选口令数目N=MIN(N1,N2);然后根据生成数目N以及GPU性能确定每次核函数开启的线程总数generate_power以及为运行核函数所需要GPU上的内存空间;设置参数hardware_power=multiprocessors*threads_per_multiprocessor,其中multiprocessors是GPU的流多处理器数目,threads_per_multiprocessor是每个流多处理器最大线程数;generate_power=speedup*hardware_power,speedup为自然数;定义函数deal_grammar(grammar_start_index,grammar_end_index,generate_power),用于生成满足从语法索引起始值grammar_start_index到语法索引终止值grammar_end_index闭区间的口令最多且不超过generate_power;
4)核函数根据该上下文无关文法和生成数目N,同时根据循环次数索引loop_index以及grammar_start_index、grammar_end_index确定本次核函数处理的基础语法规则表G_BASE中的基础语法结构G_KERNEL,并利用GPU来生成符合文法要求的候选口令。
2.如权利要求1所述的方法,其特征在于,步骤3)中,将每次处理的基础语法结构G_KERNEL存放到GPU的共享内存,所述GPU上存储的信息包括每次核函数处理的基础语法结构G_KERNEL、基础语法结构的字母填充表BASE_L、基础语法结构的数字填充表BASE_D、基础语法结构的特殊字符填充表BASE_S、基础语法结构的其他字符填充表BASE_O和每次生成的最终候选口令PWS;当确定了每次需要生成的候选口令数目N时,在GPU上分配存储生成口令空间PWS_SIZE=MIN(N,generate_power)*sizeof(PWS),并计算出核函数循环调用次数
Figure FDA0002721767960000011
这里
Figure FDA0002721767960000012
表示向上取整。
3.如权利要求1或2所述的方法,其特征在于,步骤4)中,设置基于PCFG的并行口令生成核函数pcfg_gernrate_loop,用于GPU加速候选口令生成;该核函数pcfg_gernrate_loop的输入参数包括基础语法结构G_KERNEL、基础语法结构的字母填充表BASE_L、基础语法结构的数字填充表BASE_D、基础语法结构的特殊字符填充表BASE_S、基础语法结构的其他字符填充表BASE_O,以及用来保存每次核函数生成的候选口令PWS。
4.如权利要求3所述的方法,其特征在于,设置该核函数pcfg_generate_loop的开启线程块数目num_blocks以及每个线程块上开启的线程数num_threads;num_blocks=generate_power/num_threads。
5.如权利要求1所述的方法,其特征在于,所述规则概率包含基础语法规则表G_BASE及基础语法规则对应的概率,以及从训练集中计算得到以n为变长的字母字符串的概率Ln、数字字符串的概率Dn和特殊字符串的概率Sn;其中Dn用于从基础语法结构生成预终端结构时填充基础语法结构中的数字部分,Sn用于从基础语法结构生成预终端结构时填充基础语法结构中的特殊部分,Ln用于从预终端结构生成终端结构时填充字母部分。
6.如权利要求5所述的方法,其特征在于,步骤4)中,设置函数generated_pws_volume(G_BASE,grammar_start_index,grammar_end_index,Mode),用于统计基础语法结构区间内能产生的口令总数或预终端总数;其中Mode包含四种模式:空NULL、‘L’、‘D’、‘S’,当模式为空的时候计算区间基础语法结构通过将字母串、数字串、特殊字符串进行填充所能产生的所有口令数;当为‘L’时计算区间基础语法结构能够填充的字母串总数;当为‘D’时计算区间基础语法结构能够填充的数字串总数;当为‘S’时计算区间基础语法结构能够填充的特殊字符串总数。
7.一种基于权利要求1所述方法生成的候选口令的应用破解方法,其步骤包括:对核函数每次所生成的候选口令进行hash计算,并与目标hash值进行比对,从而判断对应候选口令是否为能够生成目标hash值的正确口令,如果包含能够生成目标hash值的正确口令,则判定核函数当前生成的候选口令是包含正确口令;如果当前生成的候选口令未包含正确口令且loop_index大于或等于循环调用次数loop_num,则判定破解任务失败。
CN202011089941.9A 2020-10-13 2020-10-13 一种gpu上的候选口令生成及应用破解方法 Active CN112199214B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011089941.9A CN112199214B (zh) 2020-10-13 2020-10-13 一种gpu上的候选口令生成及应用破解方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011089941.9A CN112199214B (zh) 2020-10-13 2020-10-13 一种gpu上的候选口令生成及应用破解方法

Publications (2)

Publication Number Publication Date
CN112199214A true CN112199214A (zh) 2021-01-08
CN112199214B CN112199214B (zh) 2023-12-01

Family

ID=74009098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011089941.9A Active CN112199214B (zh) 2020-10-13 2020-10-13 一种gpu上的候选口令生成及应用破解方法

Country Status (1)

Country Link
CN (1) CN112199214B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115459898A (zh) * 2022-08-23 2022-12-09 西安电子科技大学 一种基于GPU的Paillier同态加解密计算方法及系统
US11916910B1 (en) * 2021-06-24 2024-02-27 Amazon Technologies, Inc. Remedying wireless-network connection failures

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108647511A (zh) * 2018-04-12 2018-10-12 华东师范大学 基于弱口令推导的口令强度评估方法
CN108959128A (zh) * 2018-06-04 2018-12-07 浙江大学 Crypt-SHA512加密算法的加速装置与方法
CN110472385A (zh) * 2018-05-10 2019-11-19 深圳市格瑞信息科技有限公司 一种口令破解方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108647511A (zh) * 2018-04-12 2018-10-12 华东师范大学 基于弱口令推导的口令强度评估方法
CN110472385A (zh) * 2018-05-10 2019-11-19 深圳市格瑞信息科技有限公司 一种口令破解方法及装置
CN108959128A (zh) * 2018-06-04 2018-12-07 浙江大学 Crypt-SHA512加密算法的加速装置与方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11916910B1 (en) * 2021-06-24 2024-02-27 Amazon Technologies, Inc. Remedying wireless-network connection failures
CN115459898A (zh) * 2022-08-23 2022-12-09 西安电子科技大学 一种基于GPU的Paillier同态加解密计算方法及系统

Also Published As

Publication number Publication date
CN112199214B (zh) 2023-12-01

Similar Documents

Publication Publication Date Title
US10025773B2 (en) System and method for natural language processing using synthetic text
Cilibrasi Statistical inference through data compression
Hughes et al. Reliable and scalable variational inference for the hierarchical dirichlet process
CN112199214B (zh) 一种gpu上的候选口令生成及应用破解方法
WO2010108373A1 (zh) 一种对词库压缩编码及解码的方法和系统
CN111563160A (zh) 基于全局语义的文本自动摘要方法、装置、介质及设备
Arora et al. Simple linear attention language models balance the recall-throughput tradeoff
WO2018167885A1 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
CN114239589A (zh) 语义理解模型的鲁棒性评估方法、装置及计算机设备
CN116432125B (zh) 基于哈希算法的代码分类方法
CN115392048B (zh) 一种基于约束求解引擎的带约束随机数生成方法
CN115104109A (zh) 用遗传程序设计创建通用积木块
CN112612762B (zh) 数据处理方法及相关设备
CN110059378B (zh) 一种基于GPU并行计算的自动制造系统Petri网状态生成方法
KR102358508B1 (ko) 업데이트 횟수에 기초한 프루닝 방법 및 장치
CN114330306A (zh) 一种基于深度学习的密码字典生成技术
JP2023544560A (ja) 文字認識における制約条件を強制するためのシステムおよび方法
CN113918696A (zh) 基于k均值聚类算法的问答匹配方法、装置、设备及介质
Saha Faster language edit distance, connection to all-pairs shortest paths and related problems
Dempsey et al. Meta-grammar constant creation with grammatical evolution by grammatical evolution
Carandang et al. Improving Simulations of Spiking Neural P Systems in NVIDIA CUDA GPUs: CuSNP
Clark Information theory, complexity, and linguistic descriptions
CN109377980A (zh) 一种音节切分方法和装置
Liang Hardware descriptions code completion based on a pre-training model
CN117389571B (zh) 一种基于opencl的jpeg2000中t1并行解码方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant