一种基于Spark平台的口令哈希值恢复方法和装置的制造方法

文档序号:10572481阅读:255来源:国知局
一种基于Spark平台的口令哈希值恢复方法和装置的制造方法
【专利摘要】本发明公开了一种基于Spark平台的口令哈希值恢复方法和装置,其设计方法包括口令哈希表到彩虹表数据生成步骤和彩虹表解密步骤,记彩虹链链首节点值为SV(Start Value),链尾节点值为EV(End Value),本发明利用Spark平台的对大规模数据的处理能力,用map函数高效地计算出SV对应的EV,生成彩虹链保存在HDFS中,完成彩虹表数据的生成,利用filter函数找到与待解密的密文对应的所有SV,再调用foreach函数根据每个SV生成完整的彩虹链,对密文进行解密。
【专利说明】
一种基于Spark平台的口令哈希值恢复方法和装置
技术领域
[0001]本发明属于网络信息安全技术领域与密码学中的密码逆向恢复技术领域,特别涉及一种基于Spark平台的口令哈希值恢复方法和装置。
【背景技术】
[0002]为了保证数据信息安全属性中的不可篡改性,通常不对口令明文进行直接存储,而是对经过哈希运算的口令明文对应的哈希值进行存储。哈希算法,又称散列算法,通过置换和混淆等密码模块将任意长度的明文输入转化为固定长度的哈希值输出,且具有较好的单向性,无法轻易地由输出逆推得到输入,由于哈希函数良好的保密特性和校验功能,因此被广泛用于数字签名、下载校验、口令存储等应用。
[0003]破解口令哈希值的方法包括暴力穷举法和字典查找法,暴力穷举法对简单的密码和简单的密码系统是可行的,但对于复杂的密码和密码系统,则会产生无穷大的字典,从而需要海量的计算时间;而字典查找法则需要海量的存储空间,解密代价太高。
[0004]为了减小所需要字典的大小,减少产生和查找字典的时间,现有技术提供一种针对碰撞链的解决方案--彩虹表,其基于Mar t i η He 11 man理论(基于内存与时间的权重理论)。彩虹表是暴力穷举和字典查找的折中,通过预计算的方式来减少口令恢复的时间花销,其核心思想是将明文计算得到的哈希值由一个映射函数映射回到明文空间,进而交替地计算明文和哈希值,以减少哈希值密码恢复的时间。
[0005]Spark是一个开源簇运算框架,最初是由加州大学伯克利分校AMPLab所开发。相对于Hadoop的MapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。Spark在存储器内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上1倍速度。Spark的基础数据结构是RDD,Spark平台将操作封装在transformat 1n 和act 1n 中,其中 transformat1n 是对RDD 的转换,act1n 是对RDD 进行计算。调用transformat1n的act1n中的API,Spark平台会自行进行分布式运算,程序员只需对Spark进行配置,无需考虑分布式是如何进行的,这大大降低了平台使用的门槛。

【发明内容】

[0006]为了克服上述现有技术的缺点,本发明的目的在于提供一种基于Spark平台的口令哈希值恢复方法和装置,可实现大容量彩虹表的并行生成、彩虹链并行过滤和彩虹链并行解密,使其具有高性能、低门槛等优点。
[0007]为了实现上述目的,本发明采用的技术方案是:
[0008]利用Spark平台进行分布式并行生成彩虹表和解密。在生成彩虹表的过程中,需要根据所有随机生成的链首节点值生成其对应的链尾节点值。利用Spark平台的map函数,可以对每一个链首节点进行独立操作,也就是说,生成彩虹表是可以高度并行的,这大大提高了生成效率。彩虹表在HDFS中是以分块的方式进行存储的,调用Spark平台的fi I ter函数,可以并行地从各块找出待解密密文对应的彩虹链,这大大加快了文本匹配的速度。利用Spark平台的f or each函数,可以并行地从彩虹链中计算出待解密密文所对应的明文。
[0009]具体地,本发明的技术方案是:
[00?0] —种基于Spark平台的口令哈希值恢复方法,包括彩虹表数据生成步骤和彩虹表解密步骤,其特征在于,
[0011 ]设彩虹链的数量为S,长度为L,L>I,则所述彩虹表数据生成步骤包括:
[0012]步骤A:根据字符集随机生成S个链首节点值SV;
[0013]步骤B:根据彩虹链的生成规则,计算出链首节点值SV对应的链尾节点值EV;
[0014]步骤C:将生成的所有(SV,EV)的元组保存在Hadoop分布式文件系统HDFS中;
[0015]所述彩虹表解密步骤包括:
[0016]步骤D:从HDFS中读出彩虹表;
[0017]步骤E:从彩虹表中过滤出密文对应的彩虹链;
[0018]步骤F:根据得到的彩虹链计算出该密文对应的明文;
[0019 ]具体地,所述链尾节点值EV的计算包括以下步骤:
[0020]步骤BI:对每个链首节点值SV执行L-1次f函数,生成L-2个中间节点和一个链尾节点;f函数包括H函数和R函数两个部分;其中H函数即指定的加密函数,R函数是与当前节点位置i有关的函数(KiSL-1),该函数的定义域和值域需要和H函数相反;本文用R1表示参数为i的R函数,fi表示H函数和Ri函数的组合;可以令Ri=(X+i)mod N(其中X表示经过H函数处理后的字符串,N表示明文的范围);步骤B2:调用Spark平台的map函数并行地执行步骤Bl0
[0021 ]所述彩虹表中过滤出密文对应的彩虹链包括以下步骤:
[0022]步骤El:猜测待解密密文所对应的明文在彩虹链中的位置i,依次从L-1到I进行尝试;
[0023]步骤E2:对密文执行Ri函数,将结果保存在中间节点M中;再对M执行fi+i,fi+2,…,f L-1,将结果赋值给Μ;
[0024]步骤Ε3:调用Spark平台的f i I ter函数并行地过滤出所有链尾节点值等于M的彩虹链,若彩虹表中没有链尾节点值等于M的彩虹链,则尝试下一个i;若所有尝试均未找到符合要求的彩虹链,则解密失败;若存在链尾节点值等于M的彩虹链,则进入下一步骤。
[0025]根据彩虹链计算出明文包括以下步骤:
[0026]步骤Fl:从步骤E中得到该密文对应的明文在彩虹链中的位置i,对该彩虹链的链首节点值SViRf1,f2,…,f1-1,得到的结果即为该密文对应的明文。
?0027] 本发明同时提出一种基于Spark平台的口令哈希值恢复装置,包括Spark配置单元、彩虹表数据生成单元和彩虹表解密单元,其中:
[0028]Spark配置单元执行该恢复装置的准备工作,对Spark平台提供的计算能力进行配置;
[0029]彩虹表数据生成单元产生若干条彩虹链的集合,每条彩虹链均通过一系列哈希运算和映射函数迭代计算得到,彩虹表数据生成单元仅需要存储链首节点和链尾节点;
[0030]彩虹表解密单元对待解密密文所对应的明文所在位置进行猜测,寻找该密文对应的链尾节点;然后在彩虹表中找到链尾节点与该密文对应的链尾节点相同的彩虹链,根据这些彩虹链计算出该密文对应的明文。
[0031 ] 具体地,所述Spark配置单元的准备工作主要包括:
[0032]搭建Spark平台,配置Master和Slave,然后再对Worker数量及大小进行配置。
[0033]所述彩虹表数据生成单元执行功能主要包括:
[0034]随机生成S个链首节点值,然后根据彩虹链生成规则,计算链首节点值对应的链尾节点值,调用Spark平台的map函数将计算结果存储在Hadoop分布式文件系统HDFS中。
[0035]所述彩虹表解密单元执行功能主要包括:
[0036]猜测待解密密文所对应的明文在彩虹链中的位置i,对密文执行R1函数,将结果保存在中间节点M中;再对M执行fi+1,fi+2,…,fL-1,将结果赋值给M,得到该密文对应的链尾节点;然后调用Spark平台的f i I ter函数从彩虹表中过滤出链尾节点等于密文对应的链尾节点的彩虹链,若彩虹表中没有链尾节点值等于M的彩虹链,则尝试下一个i ;若所有尝试均未找到符合要求的彩虹链,则解密失败;若存在链尾节点值等于M的彩虹链,则调用Spark平台的f oreach函数对每个彩虹链计算该密文对应的明文。
[0037]与现有技术相比,本发明的有益效果是:利用Spark平台在内存中高效计算及其高度并行的特点,大大地提高了彩虹表的生成和解密的效率。
【附图说明】
[0038]图1是基于Spark平台口令哈希值恢复方法的流程图。
[0039]图2是基于Spark平台口令哈希值恢复方法生成彩虹表部分的流程图。
[0040]图3是基于Spark平台口令哈希值恢复方法对待解密密文进行解密部分的流程图。[0041 ]图4是基于Spark平台口令哈希值恢复装置的功能框图。
[0042]图5是基于Spark平台口令哈希值恢复装置彩虹表生成单元的功能框图。
[0043]图6是基于Spark平台口令哈希值恢复装置解密单元的功能框图。
【具体实施方式】
[0044]下面结合附图和实施例详细说明本发明的实施方式。
[0045]Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点。此外,Spark任务中间输出和结果可以保存在内存中,这可以加快计算的读写效率。RDD是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。
[0046]RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的ADD可以cache到内存中,每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘1操作。
[0047]本发明正是利用Spark平台的内存计算和高度并行,利用RDD作为中间结果,高效地实现彩虹表生成与解密。具体地,本发明的一种基于Spark平台的口令哈希恢复方法,包括如图1所示的3个步骤。
[0048]Stepl,配置Spark平台参数,主要包括搭建Spark平台、配置Spark平台的Master和Slave (即配置Spark平台控制多少台主机)和配置Spark平台的Worker数量及大小(即配置每台主机拥有的工作线程数量及每个线程可使用的内存和CPU的大小)。
[0049]Step2,生成彩虹表。
[0050]Step3,对待解密密文进行解密。
[0051]具体地,彩虹表的生成步骤包括(见图2,设彩虹表的大小为S,每条彩虹链的长度为L(L>1),虹链链首节点值为SV(Start Value),链尾节点值为EV(End Value)):
[0052]Step 21,随机生成S个彩虹链首节点值SV,保存在列表list中。
[0053]Step 22,根据彩虹链的生成规则,将list中的每个SV作为彩虹链首节点值计算出链尾节点值EV,调用Spark的transformat 1n操作中的map函数,将所有(SV,EV)元组生成RDD数据集。
[0054]Step 23,将RDD数据集保存在HDFS中。
[0055]彩虹表的解密步骤包括(见图3):
[0056]Step 31,从HDFS中读入彩虹表。
[0057]Step 32,猜测密文对应的明文所在的位置i,对密文执行Ri函数,将结果保存在中间节点M中。
[0058]Step 33,对财丸行乜+1,&+2,...,红—1,将结果赋给10
[0059]Step 34,从彩虹表中过滤出链尾节点值EV等于M的彩虹链。
[0060]Step 32?Step34具体步骤如下:
[0061 ]初始化i为L-1;
[0062]对待解密的密文执行R1函数,得到中间节点M;
[0063]令j= i+]_;
[0064]若j彡L-1,则对M执行H函数,Rj+1函数,并将结果赋值给M,转至(5);否则转至(6);
[0065]令j = j+1,转至(4);
[0066]调用Spark的transformat 1n操作中的filter函数,从彩虹表中过滤出所有EV等于M的SV。若SV的数量等于O,则令i = 1-Ι,若i >0,则转至(2),若i = 0,否则解密失败;若SV的数量大于O,则进入下一步骤;
[0067]Step 35,调用Spark的act 1n操作中的f oreach函数,对每个符合条件的彩虹链链首节点值SViRfl,f 2,…,f 1-1,得到的结果即为对应的明文。
[0068]本发明同时提出一种基于Spark平台口令哈希恢复装置,包括如图4所示的3个单元,Spark配置单元、彩虹表生成单元以及解密单元。
[0069]其中,Spark配置单元执行的功能包括:
[0070]搭建Spark平台,配置Master和Slave,以及配置Worker数量及大小。
[0071]如图5所示,彩虹表生成单元执行的功能包括:
[0072]链首节点生成单元,该单元用于随机生成S个链首节点,并且保证节点不重复。
[0073]链尾节点计算单元,该单元根据彩虹链生成规则,计算链首节点值对应的链尾节点值,调用Spark平台的map函数将计算结果存储在Hadoop分布式文件系统HDFS中
[0074]如图6所示,解密单元执行的功能包括:
[0075]密文对应的链尾节点计算单元,该单元猜测待解密密文所对应的明文在彩虹链中的位置i,对密文执行Ri函数,将结果保存在中间节点M中,再对M执行fi+i,fi+2,…,fL-1,将结果赋值给M,得到该密文对应的链尾节点。
[0076]彩虹链过滤单元,该单元调用Spark平台的f i I ter函数从彩虹表中过滤出链尾节点等于密文对应的链尾节点的彩虹链。
[0077]生成明文单元,该单元调用Spark平台的f oreach函数对每个彩虹链计算该密文对应的明文。
[0078]以上对本发明所提供的一种基于Spark平台口令哈希恢复方法和装置进行了详细介绍,本文对本发明的原理及具体的实施方式进行了阐述,以上详细步骤的用于帮助理解本发明的方法及核心思想;同时,对于本领域的技术人员,根据本发明的思想,在具体的实现方式上均会有变化和改进之处,这些变化和改进均属于本发明的保护范围之内。
【主权项】
1.一种基于Spark平台的口令哈希值恢复方法,包括彩虹表数据生成步骤和彩虹表解密步骤,其特征在于, 设彩虹链的数量为S,长度为L,L> I,则所述彩虹表数据生成步骤包括: 步骤A:根据字符集随机生成S个链首节点值SV; 步骤B:根据彩虹链的生成规则,计算出链首节点值SV对应的链尾节点值EV; 步骤C:将生成的所有(SV,EV)的元组保存在Hadoop分布式文件系统HDFS中; 所述彩虹表解密步骤包括: 步骤D:从HDFS中读出彩虹表; 步骤E:从彩虹表中过滤出密文对应的彩虹链; 步骤F:根据得到的彩虹链计算出该密文对应的明文。2.根据权利要求1所述基于Spark平台的口令哈希值恢复方法,其特征在于,所述链尾节点值EV的计算包括以下步骤: 步骤BI:对每个链首节点值SV执行L-1次f函数,生成L-2个中间节点和一个链尾节点;f函数包括H函数和R函数两个部分;其中H函数即指定的加密函数,R函数是与当前节点位置i有关的函数(I彡iSL-1),该函数的定义域和值域需要和H函数相反;用仏表示参数为i的R函数,fi表示H函数和Ri函数的组合;令Ri= (X+i)mod N,其中X表示经过H函数处理后的字符串,N表示明文的范围; 步骤B2:调用Spark平台的map函数并行地执行步骤BI。3.根据权利要求2所述基于Spark平台的口令哈希值恢复方法,其特征在于,所述彩虹表中过滤出密文对应的彩虹链包括以下步骤: 步骤El:猜测待解密密文所对应的明文在彩虹链中的位置i,依次从L-1到I进行尝试;步骤E2:对密文执行Ri函数,将结果保存在中间节点M中;再对M执行f i+i,f i+2,…,fL-1,将结果赋值给M; 步骤E3:调用Spark平台的f i I ter函数并行地过滤出所有链尾节点值等于M的彩虹链,若彩虹表中没有链尾节点值等于M的彩虹链,则尝试下一个i;若所有尝试均未找到符合要求的彩虹链,则解密失败;若存在链尾节点值等于M的彩虹链,则进入下一步骤。4.根据权利要求3所述基于Spark平台的口令哈希值恢复方法,其特征在于,根据彩虹链计算出明文包括以下步骤: 步骤Fl:从步骤E中得到该密文对应的明文在彩虹链中的位置i,对该彩虹链的链首节点值SViRf1,f2,…,f1-1,得到的结果即为该密文对应的明文。5.一种基于Spark平台的口令哈希值恢复装置,其特征在于,包括Spark配置单元、彩虹表数据生成单元和彩虹表解密单元,其中: Spark配置单元执行该恢复装置的准备工作,对Spark平台提供的计算能力进行配置;彩虹表数据生成单元产生若干条彩虹链的集合,每条彩虹链均通过一系列哈希运算和映射函数迭代计算得到,彩虹表数据生成单元仅需要存储链首节点和链尾节点; 彩虹表解密单元对待解密密文所对应的明文所在位置进行猜测,寻找该密文对应的链尾节点;然后在彩虹表中找到链尾节点与该密文对应的链尾节点相同的彩虹链,根据这些彩虹链计算出该密文对应的明文。6.根据权利要求5所述基于Spark平台的口令哈希值恢复装置,其特征在于,所述Spark配置单元的准备工作主要包括: 搭建Spark平台,配置Master和Slave,然后再对Worker数量及大小进行配置。7.根据权利要求5所述基于Spark平台的口令哈希值恢复装置,其特征在于, 所述彩虹表数据生成单元执行功能主要包括: 随机生成S个链首节点值,然后根据彩虹链生成规则,计算链首节点值对应的链尾节点值,调用Spark平台的map函数将计算结果存储在Hadoop分布式文件系统HDFS中。8.根据权利要求5所述基于Spark平台的口令哈希值恢复装置,其特征在于,所述彩虹表解密单元执行功能主要包括: 猜测待解密密文所对应的明文在彩虹链中的位置i,对密文执行R1函数,将结果保存在中间节点M中;再对M执行fi+1,fi+2,…,fw,将结果赋值给M,得到该密文对应的链尾节点;然后调用Spark平台的filter函数从彩虹表中过滤出链尾节点等于密文对应的链尾节点的彩虹链,若彩虹表中没有链尾节点值等于M的彩虹链,则尝试下一个i;若所有尝试均未找到符合要求的彩虹链,则解密失败;若存在链尾节点值等于M的彩虹链,则调用Spark平台的f oreach函数对每个彩虹链计算该密文对应的明文。
【文档编号】H04L9/08GK105933120SQ201610211597
【公开日】2016年9月7日
【申请日】2016年4月6日
【发明人】覃征, 李志鹏, 黄凯, 叶树雄, 杨晓, 张任伟, 徐凯平
【申请人】清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1