CN103049709B - 基于生成元扩展彩虹表的密码恢复系统及其恢复方法 - Google Patents
基于生成元扩展彩虹表的密码恢复系统及其恢复方法 Download PDFInfo
- Publication number
- CN103049709B CN103049709B CN201310022268.0A CN201310022268A CN103049709B CN 103049709 B CN103049709 B CN 103049709B CN 201310022268 A CN201310022268 A CN 201310022268A CN 103049709 B CN103049709 B CN 103049709B
- Authority
- CN
- China
- Prior art keywords
- expansion
- password
- rainbow
- rainbow table
- chain
- 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.)
- Active
Links
Landscapes
- Storage Device Security (AREA)
Abstract
一种计算机安全技术领域的基于生成元扩展彩虹表的密码恢复系统及其恢复方法,该系统包括:包含扩展彩虹表生成模块、扩展彩虹表口令恢复模块的若干客户端以及与若干网络节点相连接的包含数据挖掘模块、存储器以及系统初始化模块的服务器,用户通过管理终端网站管理服务器的数据挖掘模块和系统初始化模块的工作,服务器中的数据挖掘模块生成生成元字典,服务器中的系统初始化模块生成包含生成元字典信息的分布式初始化配置文件,服务器中的系统初始化模块与网络节点中的扩展彩虹表生成模块和扩展彩虹表口令恢复模块相连接并传输系统初始化配置信息。本发明以减小明文空间的方法来达到在可接受时间范围内生成长口令彩虹表的目的,能够大大降低人为口令的恢复时间。
Description
技术领域
本发明涉及的是一种计算机安全领域的加密系统及方法,具体是一种基于生成元扩展彩虹表的密码恢复系统及其恢复方法。
背景技术
彩虹表是密码学领域一种重要的方法和工具,最初由Hellman在《一种基于时间空间折中算法的密码分析方法》(A cryptanalytic time-memory trade off)一文中提出,它的核心思想是空间与时间的折中,通过预计算的方式来减少口令恢复的时间花销。本质上,彩虹表的生成需要穷举遍历整个明文空间,生成的时间是和彩虹链的长度、条数有关,恢复成功率是和明文空间以及彩虹表的大小规模有关的。也就是说对于固定的明文空间,想要生成一张恢复成功率较高的彩虹表,几乎需要遍历所有的明文空间,其时间上的代价是和穷举口令恢复相近的,但是一旦生成这张彩虹表,以后只需要以较少的时间就可以判断哈希值对应的明文在不在这张表中。
彩虹表是在时间空间折中方法基础上进行改进而产生的一种技术,其核心思想是将明文计算得到的哈希值由一个R函数映射回明文空间,从而可以交替地计算明文和哈希值:R(HASH)=PLAIN。R函数是彩虹表设计的关键,需要满足以下两个特点:随机性,从哈希值计算到空间中的每个明文的概率相同;计算速度快,因为在计算一张彩虹表的过程中,R函数和哈希函数被调用的次数大致相同,需要能够快速得到结果的R函数。经典彩虹表利用哈希值的前8字节的内容加上当前在彩虹链中的位置,对总空间取模来计算明文对应的Index数值,然后将空间中某个Index转换到具体对应的明文。
虽然使用彩虹表能够获得在线恢复口令阶段比穷举口令恢复高得多的时间效率,但是目前生成长密码(10位以上)的彩虹表在时间上仍然是不能承受的,某部门对哈希口令恢复的实践表明,超过10位的口令无论使用何种方法恢复成功率均低于10%。因此一种有效的长口令恢复方案无论在理论还是实践中都是非常具有价值的。
事实上,对于长密码的完整明文空间(95N,N为密码长度),有很大一部分的口令的利用率相当的低。大部分口令库中的口令都是人为设定的,因此必然是相对便于记忆的。如果能够优先考虑那些利用率高的有意义的口令,将会有效地减小明文空间,虽然不能提高按照经典算法计算的恢复成功率,但是对现实口令库的来说,恢复成功率将是可观的。
目前,增加计算速度是比较热门的研究方向,分布式(云计算)和GPGPU都属于这个范畴,但由于硬件限制,速度提高必有上限。
经过对现有技术的检索发现,仇李寅在《基于Hadoop的扩展彩虹表生成研究》(上海交通大学2011年硕士论文)中提出了一种改进的彩虹表技术,该文献中以Hadoop作为云计算的基础架构,使用Map Reduce框架来进行彩虹表的生成和破解。但是该现有技术的缺陷在于:对于扩表的生成元没有形成有效的方法,本发明主要是基于数据挖掘的方法对于真实口令库进行生成元的挖掘和制定。另外,以Hadoop为基础的基于云计算的扩表的生成和使用由于环境限制,生成和使用都有较大的局限,不利于扩表在实际环境中的应用。
发明内容
本发明针对现有技术存在的上述不足,提出一种基于生成元扩展彩虹表的密码恢复系统及其恢复方法,以减小明文空间的方法来达到在可接受时间范围内生成长口令彩虹表的目的,其意义在于为恢复人为设置的长口令提供一种在切实可行的方案。本发明通过使用彩虹表中时间空间折中的思想对这些字典的存储方式进行改进,产生出基于生成元的彩虹表,能够大大降低人为口令的恢复时间。
本发明是通过以下技术方案实现:
本发明涉及一种基于生成元扩展彩虹表的密码恢复系统,包括:包含扩展彩虹表生成模块、扩展彩虹表口令恢复模块的若干客户端,即网络节点,以及与若干网络节点相连接的包含数据挖掘模块、存储器以及系统初始化模块的服务器,其中:用户通过管理终端网站管理服务器的数据挖掘模块和系统初始化模块的工作,服务器中的数据挖掘模块生成生成元字典,服务器中的系统初始化模块生成包含生成元字典信息的分布式初始化配置文件,服务器中的系统初始化模块与网络节点中的扩展彩虹表生成模块和扩展彩虹表口令恢复模块相连接并传输系统初始化配置信息。
所述的数据挖掘模块通过属性拆分以及聚类分析获得扩展彩虹表生成元,该模块具体包括:属性特征单元、属性值计算单元和聚类分析单元,其中:属性特征单元将客户端输入的口令进行依照属性特征的拆分,并将拆分得到的分类号与拆分序号输出至属性值计算单元,属性值计算单元根据分类号与拆分序号加权计算得到一条口令所对应的属性值并输出至聚类分析单元,聚类分析单元通过数据挖掘的聚类分析方法,将属性值生成所需的扩展彩虹表生成元字典,供扩展彩虹表生成模块和扩展彩虹表口令恢复模块加载。
所述的属性值与每一个口令一一对应。
所述的系统初始化模块,在服务器根据用户需求生成系统初始化配置信息,供扩展彩虹表生成模块和扩展彩虹表口令恢复模块加载。
所述的系统初始化配置信息包括:扩展彩虹表的生成和破解算法(Alg)信息、扩展彩虹表的链长(ChainLen)信息、扩展彩虹表的链数(ChainCnt)信息、扩展彩虹表的分布式生成序号(Part)信息、扩展彩虹表号(Table)信息、扩展彩虹表的生成元个数(Num_of_g)信息、扩展彩虹表所需的生成元字典个数(Num_of_dic)信息、扩展彩虹表生成元模式(Pattern_of_g)信息、扩展彩虹表存储路径和文件名(output_addr),所述的系统初始化配置信息的末端还包括扩展彩虹表生成所需的各个生成元字典路径信息。
所述的扩展彩虹表生成模块包括:加载单元、排序单元和保存单元,其中:加载单元在网络节点加载扩展彩虹表生成元字典文件和分布式节点配置文件,根据ChainCnt参数和Part参数生成扩展彩虹表链首,根据Alg参数选择哈希算法,根据Table参数决定扩展R函数,根据ChainCnt和ChainLen参数生成所需条数和长度的扩展彩虹链,排序单元根据加载单元所得到的扩展彩虹链的链尾的大小将所有的链首链尾对进行排序,最后由保存单元将排好序的链首链尾对根据output_addr参数所示的路径和名称存入扩展彩虹表文件中。
所述的扩展彩虹表口令恢复模块包括:读取单元和口令恢复单元,其中:读取单元在网络节点加载扩展彩虹表生成元字典文件、待恢复口令哈希文件以及分布式节点配置文件,读取本机存储的扩展彩虹表到内存中,口令恢复单元根据内存中的扩展彩虹表,从待恢复口令哈希文件中读入一行文本格式的哈希值,开始进行口令恢复,直到将待恢复口令哈希文件中最后一条哈希恢复完成,最后将恢复结果汇总。
本发明涉及上述系统的密码恢复方法,通过对来自口令库的真实口令进行属性拆分和聚类分析,获得多种生成元,并基于生成元生成扩展彩虹表生成元字典文件;然后根据用户需求产生系统初始化配置信息,并分布式地生成扩展彩虹表,最后分布式地实现扩展彩虹表口令恢复。
附图说明
图1为本发明系统结构示意图。
图2为通过数据挖掘的方式获得扩展彩虹表生成元示意图。
图3为扩展彩虹表生成过程示意图。
图4为扩展彩虹表口令恢复过程示意图。
图5为实施例中属性拆分示意图。
图6为实施例中扩展彩虹表分布式生成示意图。
图7为实施例中分布式扩展彩虹表口令恢复过程示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1
本实施例涉及的基于生成元扩展彩虹表的密码恢复系统是在以GPU集群为核心的云计算分布式平台上实现的。
实施的过程包括:数据挖掘、系统初始化、分布式扩展彩虹表的生成、分布式扩展彩虹表口令恢复。
如图5所示,对每一个口令赋予属性特征,通过拆分分析属性特征的组成成分和组成特征并分别赋值,得到属性值,进而使得每一个口令都一一对应的属性值,而这些属性值是根据这个口令而来的,可以说口令拥有这些属性值,而这些属性值体现出口令的对应区别。将口令拆分成这些属性值的意义是这些属性值能够通过数据挖掘中的聚类分析方法,分析出有用的结果。
本实施例中的拆分包括以下三种:
1)口令长度相关,拆分为四类:口令长度1~6位;口令长度8~11位;口令长度6~8位;口令长度11位以上;
2)跟口令每个字符的成分相关,拆分为八类:含有字母;含有大写字母;含有数字;含有小写字母;含有其它可打印字符;全是字母;全是数字;全是其它可打印字符;
3)跟口令组成相关,拆分为六类:含有中文姓氏;含有名字;含有英文名字;含有简单数字;含有常用短语;含有日期;
本发明拆分的属性不局限于以上三种,实际应用时可根据需求,先拆分一部分的属性来进行分析。每一个属性有两个可能的值:true和false。
本实施的云计算分布式系统包含32个节点,单节点配置如下表所示:
OS | Windows 7企业版SP1(64bit) |
CPU | E5620x2 |
CPU参数 | 2.4G/四核8线程 |
GPU | AMD7970x2 |
GPU显存 | 925M/2048ALU |
驱动 | AMD CCC 12.7 |
内存 | 24G |
硬盘 | 320G |
在单节点上生成链长×链数为600×1000000的扩展彩虹表的测试数据如下:
Md5 | Ntlm | Sha1 | |
GPU(7970x2) | 4min53sec | 5min12sec | 5min17sec |
CPU(AMD E23000) | 6min11sec | 7min56sec | 12min13sec |
本实施例测试步骤具体如下:
第一步、如图2所示,通过数据挖掘的方式获得扩展彩虹表生成元,具体步骤包括:
1.1)打开并初始化用户口令库文件;
1.2)读取包含口令文件的一行口令数据;
1.3)根据口令长度、口令字符成分、口令组成属性进行口令数据的拆分,产生多种生成元;
1.4)生成扩展彩虹表生成元字典文件。
第二步、扩展彩虹表系统初始化,具体包括以下步骤:
2.1)参数信息配置,具体包括:
2.1.1)Alg参数选择,即选择扩展彩虹表的哈希算法,“0”表示MD5、“1”表示SHA1、“2”表示NTLM。
2.1.2)ChainLen参数设置,即设置扩展彩虹表的链长,链长的大小影响用扩展彩虹表进行口令恢复的速度,链长越长口令恢复进行越慢;链长与链数的乘积影响利用扩展彩虹表进行口令恢复的成功率,乘积越大,则扩展彩虹表覆盖的明文空间越大,口令恢复的成功率越高。
2.1.3)ChainCnt参数设置,即设置扩展彩虹表的链数,链数的大小影响扩展彩虹表所占的空间大小,链数越多,则扩展彩虹表所需的存储空间越大。
2.1.4)Part参数设置,该参数决定本机生成的扩展彩虹表是第几部分,它影响扩展彩虹表的链首生成,不同的Part值表示同一张扩展彩虹表的不同部分,在扩展彩虹表分布式生成的过程中,不同的网络节点输入的配置文件中Part参数不同,比如第一个节点的Part参数可以设置为1,第二个节点设置为2,以此类推。
2.1.5)Table参数设置,该参数决定生成不同的扩展彩虹表,它影响扩展彩虹表的R函数。
2.1.6)Num_of_g参数设置,该参数表示构成扩展彩虹表的生成元的个数,可以是1-4之间的任意一个数字。
2.1.7)Num_of_dic参数设置,该参数表示扩展彩虹表系统初始化阶段将要加载的生成元字典个数,可以是1-9之间的任意一个数字。
2.1.8)Pattern_of_g参数设置,该参数决定扩展彩虹表的生成元模式,由1-4位数字组成,表示生成元的组合模式。如“123”表示该生成元模式中的第一个生成元取自第一个生成元字典文件,第二个生成元取自第二个生成元字典文件,第三个生成元取自第三个生成元字典文件;“2214”表示该生成元模式中的第一个和第二个生成元取自第二个生成元字典文件,第三个生成元取自第一个生成元字典文件,第四个生成元取自第四个生成元字典文件。
2.1.9)output_addr参数设置,该参数表示扩展彩虹表的文件名和路径。在扩展彩虹表生成过程中表示生成的扩展彩虹表的存储位置和名称;在扩展彩虹表口令恢复过程中表示所需的扩展彩虹表的存储位置和名称。
2.1.10)扩展彩虹表生成元字典文件路径和名称设置,每一行表示一个扩展彩虹表生成元字典文件的路径和名称。
2.2)生成分布式配置文件;
所述的配置文件包括:扩展彩虹表的生成和破解算法、扩展彩虹表的链长、扩展彩虹表的链数、扩展彩虹表的分布式生成序号、扩展彩虹表号、扩展彩虹表的生成元个数、扩展彩虹表所需的生成元字典个数、扩展彩虹表生成元模式、扩展彩虹表存储路径和文件名以及扩展彩虹表生成元字典文件路径和字典名等信息;
2.3)将分布式配置文件以及扩展彩虹表生成元字典文件发放给各节点。
第三步、如图3和图6所示,分布式生成扩展彩虹表,具体包括以下步骤:
3.1)各个节点加载扩展彩虹表生成元字典文件及对应的配置文件;
3.2)根据ChainCnt参数和Part参数生成扩展彩虹表链首;
3.3)根据Alg参数选择哈希算法;
3.4)根据Table参数决定扩展R函数;
3.5)根据ChainCnt和ChainLen参数生成所需条数和长度的扩展彩虹链;
所述的扩展彩虹链的生成过程包括:
3.5.1)获取相应链首;
3.5.2)将3.5.1)结果进行哈希运算,得到哈希值;
3.5.3)将3.5.2)结果进行R运算,包括以下步骤:
3.5.3.1)将步骤3.5.2)所得到的哈希值按每个部分长度为4个字节的方式进行切割,得到4个(MD5、NTLM算法)或5个(SHA1算法)长度为4字节的哈希片段;
3.5.3.2)根据Pattern_of_g参数确定该部分哈希所对应的生成元和该生成元字典的大小;
3.5.3.3)根据Table参数以及对应生成元字典的大小对哈希值进行取模运算;
3.5.3.4)根据3.5.3.3)的取模结果在对应生成元字典中找到所需的项,并拼接在上次执行本步骤得到的明文之后(若还没有生成明文,则本步骤生成的结果作为第一部分明文);
3.5.3.5)对3.5.3.1)所得的下一哈希片段重复步骤3.5.3.2)至步骤3.5.3.4)过程,重复的次数由Pattern_of_g参数的位数决定;
3.5.4)将上一次3.5.3)的运算结果重复步骤3.5.2)和步骤3.5.3)的运算过程,重复的次数由ChainLen参数决定,将最后一次R运算的结果作为链尾;
3.6)存储由步骤3.5)生成的扩展彩虹表包含的所有彩虹链中的每条链的链首和链尾;
3.7)根据存储得到的链尾的大小将所有的链首链尾对进行排序,并将排好序的链首链尾对根据output_addr参数所示的路径和名称存入扩展彩虹表文件中。
第四步、如图4和图7所示,分布式口令恢复,具体包括以下步骤:
4.1)加载第一步中产生的扩展彩虹表生成元字典文件、用户提供的待恢复口令哈希文件以及第二步中产生的分布式节点配置文件;
4.2)读取网路节点存储的扩展彩虹表部分到内存中;
4.3)从待恢复口令哈希文件中读入一行文本格式的哈希值并开始进行口令恢复,具体包括以下步骤:
4.3.1)将读入的文本格式哈希值进行初始化格式转换,得到二进制格式哈希值;
4.3.2)将扩展彩虹表链尾进行哈希运算,并将所得到的结果与待恢复口令哈希值进行比对,当比较结果一致,则判定找到待恢复口令,扩展彩虹表口令恢复过程结束;否则继续执行步骤4.3.3);
4.3.3)将待恢复口令哈希值进行R运算,包括以下步骤:
4.3.3.1)将待恢复口令哈希值按每个部分长度为4个字节的方式进行切割,得到4个(MD5、NTLM算法)或5个(SHA1算法)长度为4字节的哈希片段;
4.3.3.2)根据Pattern_of_g参数确定该部分哈希所对应的生成元和该生成元字典的大小;
4.3.3.3)根据Table参数以及对应生成元字典的大小对哈希值进行取模运算;
4.3.3.4)根据4.3.3.3)的取模结果在对应生成元字典中找到所需的项,并拼接在上次执行本步骤得到的明文之后(若还没有生成明文,则本步骤生成的结果作为第一部分明文);
4.3.3.5)对4.3.3.1)所得的下一哈希片段重复步骤4.3.3.2)至步骤4.3.3.4)过程,重复的次数由Pattern_of_g参数的位数决定;
4.3.4)初始化当前位置值,并根据ChainLen参数逐列搜索待恢复口令,包括以下步骤:
4.3.4.1)将步骤4.3.3)R运算的结果根据Alg参数决定的哈希算法进行哈希运算;
4.3.4.2)将4.3.4.1)哈希运算结果进行R运算;
4.3.4.3)将4.3.4.2)R运算结果与扩展彩虹表链尾进行比对(利用二分查找法),如果没有找到一致的比对结果则更新当前位置值并重复4.3.4.1)之后的步骤;
4.3.4.4)将匹配一致的链从链首恢复到当前位置,扩展彩虹链恢复过程包括以下步骤:
4.3.4.4.1)读入当前扩展彩虹链链首;
4.3.4.4.2)对读入的链首或上一次4.3.4.4.3)的执行结果根据Alg参数决定的哈希算法进行哈希运算;
4.3.4.4.3)对4.3.4.4.2)的结果进行R运算;
4.3.4.4.4)重复4.3.4.4.2)至4.3.4.4.3)步骤,直到到达当前位置;
4.3.4.5)将恢复结果根据Alg参数决定的哈希算法进行哈希运算;
4.3.4.6)将4.3.4.5)的结果与待恢复口令哈希值进行比较,如果比对结果一致,则找到待恢复口令,扩展彩虹表口令恢复过程结束,否则是一次误警;
4.3.4.7)重复4.3.4.1)至4.3.4.6)步骤进行逐列搜索,直到找到待恢复口令或将全部扩展彩虹表列都遍历完毕;
4.3.5)如果找到该条待恢复口令则扩展彩虹表口令恢复成功,否则恢复失败;
4.4)从待恢复口令文件中读取下一条待恢复口令,重复4.3)步骤,进行扩展彩虹表口令恢复,直到完成所有待恢复口令的恢复工作;
4.5)将各节点口令恢复结果汇总。
利用系统生成的多种600×1000000的扩展彩虹表进行口令恢复测试,获得的结果如下:
测试 | 算法 | 链长 | 链数 | 生成元模式 | 测试数据量 | 成功率 |
1 | MD5 | 600 | 1000000 | PPP | 100 | 93% |
2 | SHA1 | 600 | 1000000 | PPP | 100 | 97% |
3 | NTLM | 600 | 1000000 | PPP | 100 | 96% |
4 | MD5 | 100 | 1000000 | PPP | 100 | 67% |
5 | SHA1 | 100 | 1000000 | PPP | 100 | 67% |
6 | NTLM | 100 | 1000000 | PPP | 100 | 66% |
7 | MD5 | 100 | 10000 | PP | 100 | 97% |
8 | SHA1 | 100 | 10000 | PP | 100 | 99% |
9 | NTLM | 100 | 10000 | PP | 100 | 98% |
10 | MD5 | 100 | 1000 | PP | 100 | 48% |
11 | SHA1 | 100 | 1000 | PP | 100 | 45% |
12 | NTLM | 100 | 1000 | PP | 100 | 48% |
结果表明,对平均长度为3.26×3=9.78的3个拼音组成的口令,只需要600×1000000大小的扩展彩虹表就可以达到平均95%以上的恢复成功率,只需要100×1000000大小的扩展彩虹表就可以达到平均66%左右的恢复成功率;而利用传统彩虹表恢复9位的小写字母组成的口令,则需要50000×800000000大小的彩虹表才可以达到95%左右的口令恢复成功率,且单条口令的单机恢复时间为数分钟,远远高于本系统(单条口令平均恢复时间在1秒以内)。
Claims (11)
1.一种基于生成元扩展彩虹表的密码恢复系统的密码恢复方法,其特征在于,所述密码恢复系统包括:包含扩展彩虹表生成模块、扩展彩虹表口令恢复模块的若干客户端,即网络节点,以及与若干网络节点相连接的包含数据挖掘模块、存储器以及系统初始化模块的服务器,其中:用户通过管理终端网站管理服务器的数据挖掘模块和系统初始化模块的工作,服务器中的数据挖掘模块生成生成元字典,服务器中的系统初始化模块生成包含生成元字典信息的分布式初始化配置文件,服务器中的系统初始化模块与网络节点中的扩展彩虹表生成模块和扩展彩虹表口令恢复模块相连接并传输系统初始化配置信息;
所述的系统初始化配置信息包括:扩展彩虹表的生成和破解算法信息、扩展彩虹表的链长信息、扩展彩虹表的链数信息、扩展彩虹表的分布式生成序号信息、扩展彩虹表号信息、扩展彩虹表的生成元个数信息、扩展彩虹表所需的生成元字典个数信息、扩展彩虹表生成元模式信息、扩展彩虹表存储路径和文件名以及扩展彩虹表生成所需的各个生成元字典路径信息;
所述的数据挖掘模块通过属性拆分以及聚类分析获得扩展彩虹表生成元,该模块具体包括:属性特征单元、属性值计算单元和聚类分析单元,其中:属性特征单元将客户端输入的口令进行依照属性特征的拆分,并将拆分得到的分类号与拆分序号输出至属性值计算单元,属性值计算单元根据分类号与拆分序号加权计算得到一条口令所对应的属性值并输出至聚类分析单元,聚类分析单元通过数据挖掘的聚类分析方法,将属性值生成所需的扩展彩虹表生成元字典,供扩展彩虹表生成模块和扩展彩虹表口令恢复模块加载;
所述的密码恢复方法,通过对来自口令库的真实口令进行属性拆分和聚类分析,获得多种生成元,并基于生成元生成扩展彩虹表生成元字典文件;然后根据用户需求产生系统初始化配置信息,并分布式地生成扩展彩虹表,最后分布式地实现扩展彩虹表口令恢复。
2.根据权利要求1所述的密码恢复方法,其特征是,所述的系统初始化模块,在服务器根据用户需求生成系统初始化配置信息,供扩展彩虹表生成模块和扩展彩虹表口令恢复模块加载。
3.根据权利要求1所述的密码恢复方法,其特征是,所述的扩展彩虹表生成模块包括:加载单元、排序单元和保存单元,其中:加载单元在网络节点加载扩展彩虹表生成元字典文件和分布式节点配置文件,根据ChainCnt参数和Part参数生成扩展彩虹表链首,根据Alg参数选择哈希算法,根据Table参数决定扩展R函数,根据ChainCnt和ChainLen参数生成所需条数和长度的扩展彩虹链,排序单元根据加载单元所得到的扩展彩虹链的链尾的大小将所有的链首 链尾对进行排序,最后由保存单元将排好序的链首链尾对根据output_addr参数所示的路径和名称存入扩展彩虹表文件中。
4.根据权利要求1所述的密码恢复方法,其特征是,所述的扩展彩虹表口令恢复模块包括:读取单元和口令恢复单元,其中:读取单元在网络节点加载扩展彩虹表生成元字典文件、待恢复口令哈希文件以及分布式节点配置文件,读取本机存储的扩展彩虹表到内存中,口令恢复单元根据内存中的扩展彩虹表,从待恢复口令哈希文件中读入一行文本格式的哈希值,开始进行口令恢复,直到将待恢复口令哈希文件中最后一条哈希恢复完成,最后将恢复结果汇总。
5.根据权利要求1所述的密码恢复方法,其特征是,具体包括以下步骤:
第一步、通过数据挖掘的方式获得扩展彩虹表生成元,具体步骤包括:
1.1)打开并初始化用户口令库文件;
1.2)读取包含口令文件的一行口令数据;
1.3)根据口令长度、口令字符成分、口令组成属性进行口令数据的拆分,产生多种生成元;
1.4)生成扩展彩虹表生成元字典文件;
第二步、扩展彩虹表系统初始化,具体包括以下步骤:
2.1)参数信息配置,具体包括:
2.2)生成分布式配置文件;
2.3)将分布式配置文件以及扩展彩虹表生成元字典文件发放给各节点;
第三步、分布式生成扩展彩虹表,具体包括以下步骤:
3.1)各个节点加载扩展彩虹表生成元字典文件及对应的配置文件;
3.2)根据ChainCnt参数和Part参数生成扩展彩虹表链首;
3.3)根据Alg参数选择哈希算法;
3.4)根据Table参数决定扩展R函数;
3.5)根据ChainCnt和ChainLen参数生成所需条数和长度的扩展彩虹链;
3.6)存储由步骤3.5)生成的扩展彩虹表包含的所有彩虹链中的每条链的链首和链尾;
3.7)根据存储得到的链尾的大小将所有的链首链尾对进行排序,并将排好序的链首链尾对根据output_addr参数所示的路径和名称存入扩展彩虹表文件中;
第四步、分布式口令恢复,具体包括以下步骤:
4.1)加载第一步中产生的扩展彩虹表生成元字典文件、用户提供的待恢复口令哈希文件以及第二步中产生的分布式节点配置文件;
4.2)读取网路节点存储的扩展彩虹表部分到内存中;
4.3)从待恢复口令哈希文件中读入一行文本格式的哈希值并开始进行口令恢复:
4.4)从待恢复口令文件中读取下一条待恢复口令,重复4.3)步骤,进行扩展彩虹表口令恢复,直到完成所有待恢复口令的恢复工作;
4.5)将各节点口令恢复结果汇总。
6.根据权利要求1所述的密码恢复方法,其特征是,所述的扩展彩虹链的生成过程包括:
3.5.1)获取相应链首;
3.5.2)将3.5.1)结果进行哈希运算,得到哈希值;
3.5.3)将3.5.2)结果进行R运算;
3.5.4)将上一次3.5.3)的运算结果重复步骤3.5.2)和步骤3.5.3)的运算过程,重复的次数由ChainLen参数决定,将最后一次R运算的结果作为链尾。
7.根据权利要求6所述的密码恢复方法,其特征是,步骤3.5.3)所述的R运算,具体包括以下步骤:
3.5.3.1)将步骤3.5.2)所得到的哈希值按每个部分长度为4个字节的方式进行切割,得到4个或5个长度为4字节的哈希片段;
3.5.3.2)根据Pattern_of_g参数确定该部分哈希所对应的生成元和该生成元字典的大小;
3.5.3.3)根据Table参数以及对应生成元字典的大小对哈希值进行取模运算;
3.5.3.4)根据3.5.3.3)的取模结果在对应生成元字典中找到所需的项,并拼接在已得到的明文之后;当还没有生成明文,则本步骤生成的结果作为第一部分明文;
3.5.3.5)对3.5.3.1)所得的下一哈希片段重复步骤3.5.3.2)至步骤3.5.3.4)过程,重复的次数由Pattern_of_g参数的位数决定。
8.根据权利要求5所述的密码恢复方法,其特征是,步骤4.3)中所述的口令恢复,具体包括以下步骤:
4.3.1)将读入的文本格式哈希值进行初始化格式转换,得到二进制格式哈希值;
4.3.2)将扩展彩虹表链尾进行哈希运算,并将所得到的结果与待恢复口令哈希值进行比对,当比较结果一致,则判定找到待恢复口令,扩展彩虹表口令恢复过程结束;否则继续执行步骤4.3.3);
4.3.3)将待恢复口令哈希值进行R运算;
4.3.4)初始化当前位置值,并根据ChainLen参数逐列搜索待恢复口令;
4.3.5)如果找到该条待恢复口令则扩展彩虹表口令恢复成功,否则恢复失败。
9.根据权利要求8所述的密码恢复方法,其特征是,步骤4.3.3)中所述的R运算,具体包括以下步骤:
4.3.3.1)将待恢复口令哈希值按每个部分长度为4个字节的方式进行切割,得到4个或5个长度为4字节的哈希片段;
4.3.3.2)根据Pattern_of_g参数确定该部分哈希所对应的生成元和该生成元字典的大小;
4.3.3.3)根据Table参数以及对应生成元字典的大小对哈希值进行取模运算;
4.3.3.4)根据4.3.3.3)的取模结果在对应生成元字典中找到所需的项,并拼接在已得到的明文之后;当还没有生成明文,则本步骤生成的结果作为第一部分明文;
4.3.3.5)对4.3.3.1)所得的下一哈希片段重复步骤4.3.3.2)至步骤4.3.3.4)过程,重复的次数由Pattern_of_g参数的位数决定。
10.根据权利要求8所述的密码恢复方法,其特征是,步骤4.3.4)所述的逐列搜索,具体包括以下步骤:
4.3.4.1)将步骤4.3.3)R运算的结果根据Alg参数决定的哈希算法进行哈希运算;
4.3.4.2)将4.3.4.1)哈希运算结果进行R运算;
4.3.4.3)将4.3.4.2)R运算结果与扩展彩虹表链尾利用二分查找法进行比对,如果没有找到一致的比对结果则更新当前位置值并重复4.3.4.1)之后的步骤;
4.3.4.4)将匹配一致的链从链首恢复到当前位置;
4.3.4.5)将恢复结果根据Alg参数决定的哈希算法进行哈希运算;
4.3.4.6)将4.3.4.5)的结果与待恢复口令哈希值进行比较,如果比对结果一致,则找到待恢复口令,扩展彩虹表口令恢复过程结束,否则是一次误警;
4.3.4.7)重复4.3.4.1)至4.3.4.6)步骤进行逐列搜索,直到找到待恢复口令或将全部扩展彩虹表列都遍历完毕。
11.根据权利要求10所述的密码恢复方法,其特征是,步骤4.3.4.4)所述的恢复,具体包括以下步骤:
4.3.4.4.1)读入当前扩展彩虹链链首;
4.3.4.4.2)对读入的链首或上一次4.3.4.4.3)的执行结果根据Alg参数决定的哈希算法进行哈希运算;
4.3.4.4.3)对4.3.4.4.2)的结果进行R运算;
4.3.4.4.4)重复4.3.4.4.2)至4.3.4.4.3)步骤,直到到达当前位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310022268.0A CN103049709B (zh) | 2013-01-22 | 2013-01-22 | 基于生成元扩展彩虹表的密码恢复系统及其恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310022268.0A CN103049709B (zh) | 2013-01-22 | 2013-01-22 | 基于生成元扩展彩虹表的密码恢复系统及其恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049709A CN103049709A (zh) | 2013-04-17 |
CN103049709B true CN103049709B (zh) | 2015-08-19 |
Family
ID=48062342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310022268.0A Active CN103049709B (zh) | 2013-01-22 | 2013-01-22 | 基于生成元扩展彩虹表的密码恢复系统及其恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049709B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103400072A (zh) * | 2013-07-31 | 2013-11-20 | 厦门市美亚柏科信息股份有限公司 | 哈希值密码的恢复方法和装置 |
CN103684754B (zh) * | 2013-12-03 | 2016-11-23 | 中国电子科技集团公司第三十研究所 | 一种基于gpu集群的wpa共享密钥破解系统 |
CN103701590B (zh) * | 2014-01-07 | 2017-02-08 | 厦门市美亚柏科信息股份有限公司 | 一种基于字典的复杂密码遍历方法及装置 |
CN104281816A (zh) * | 2014-10-14 | 2015-01-14 | 厦门智芯同创网络科技有限公司 | 一种基于MapReduce彩虹表并行系统设计方法和装置 |
CN106712928A (zh) * | 2016-12-13 | 2017-05-24 | 云南电网有限责任公司电力科学研究院 | 基于大数据彩虹表的解密方法和装置 |
CN106845185A (zh) * | 2017-02-07 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种口令恢复模式的确定方法及系统 |
CN108038382A (zh) * | 2017-10-18 | 2018-05-15 | 北京丁牛科技有限公司 | 基于cpu-gpu架构的彩虹链表的处理方法及系统 |
CN108416208A (zh) * | 2018-02-05 | 2018-08-17 | 深圳大普微电子科技有限公司 | 一种破解密码的方法、主机设备及存储设备 |
CN110858832B (zh) * | 2018-08-22 | 2022-04-12 | 阿里巴巴集团控股有限公司 | 口令信息加固与数据处理方法、设备、系统及存储介质 |
CN109325360B (zh) * | 2018-09-06 | 2020-05-26 | 北京三快在线科技有限公司 | 信息管理方法与装置 |
CN111339562B (zh) * | 2020-02-28 | 2022-06-03 | 中国工商银行股份有限公司 | 保序/揭序密文恢复方法及装置 |
-
2013
- 2013-01-22 CN CN201310022268.0A patent/CN103049709B/zh active Active
Non-Patent Citations (3)
Title |
---|
基于Hadoop的扩展彩虹表生成研究;仇李寅;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715(第7期);第五章 * |
基于彩虹表的HASH攻击研究;荣凯等;《信息安全与通信保密》;20110430(第4期);第74-79页 * |
基于生成元的彩虹表;梁艳等;《信息安全与通信保密》;20121231(第12期);第85-87页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103049709A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049709B (zh) | 基于生成元扩展彩虹表的密码恢复系统及其恢复方法 | |
CN102790760B (zh) | 安全网盘系统中一种基于目录树的数据同步方法 | |
CN102006300B (zh) | 一种云存储数据加密方法、装置及系统 | |
CN101300569B (zh) | 用于从扩展图构造散列函数的系统和方法 | |
CN103699585B (zh) | 文件的元数据存储以及文件恢复的方法、装置和系统 | |
CN103119594A (zh) | 可检索密码处理系统 | |
CN102866954B (zh) | 内存分配的方法及装置 | |
CN109815226B (zh) | 基于区块链的数据存储方法、装置、设备和存储介质 | |
CN105956492B (zh) | 一种文件存储加密方法及装置 | |
WO2017095435A1 (en) | Combining hashes of data blocks | |
CN108764902B (zh) | 用于存储数据的方法、节点和区块链系统 | |
CN102880650A (zh) | 一种数据匹配方法及装置 | |
CN105447166A (zh) | 一种基于关键字查找信息的方法及系统 | |
CN103885829A (zh) | 一种基于统计的虚拟机跨数据中心动态迁移优化方法 | |
CN104954329A (zh) | 一种生物特征信息的处理方法及装置 | |
Zhang et al. | SUMMA: subgraph matching in massive graphs | |
Apostal et al. | Password recovery using MPI and CUDA | |
CN107291898B (zh) | 基于FPGA的MySQL认证密码恢复系统及其方法 | |
CN102546293B (zh) | 基于哈希比特串复用的高速网络流量网络地址测量方法 | |
CN103414555A (zh) | 阵列基于io块加密的密钥管理方法 | |
CN103714300A (zh) | 基于分布式gpu和彩虹表的加密分析系统及其方法 | |
CN105608201A (zh) | 一种支持多关键词表达式的文本匹配方法 | |
Guan et al. | A novel coverless text steganographic algorithm based on polynomial encryption | |
CN109165226B (zh) | 一种面向密文大型数据集的可搜索加密方法 | |
CN109033878B (zh) | 一种文件存储验证方法及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |