基于生成元扩展彩虹表的密码恢复系统及其恢复方法

文档序号:6398171阅读:255来源:国知局
专利名称:基于生成元扩展彩虹表的密码恢复系统及其恢复方法
技术领域
本发明涉及的是一种计算机安全领域的加密系统及方法,具体是一种基于生成元扩展彩虹表的密码恢复系统及其恢复方法。
背景技术
彩虹表是密码学领域一种重要的方法和工具,最初由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_0f_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所示,对每一个口令赋予属性特征,通过拆分分析属性特征的组成成分和组成特征并分别赋值,得到属性值,进而使得每一个口令都一一对应的属性值,而这些属性值是根据这个口令而来的,可以说口令拥有这些属性值,而这些属性值体现出口令的对应区别。将口令拆分成这些属性值的意义是这些属性值能够通过数据挖掘中的聚类分析方法,分析出有用的结果。本实施例中的拆分包括以下三种I) 口令长度相关,拆分为四类口令长度I飞位;口令长度8 11位;口令长度6 8位;口令长度11位以上;2)跟口令每个字符的成分相关,拆分为八类含有字母;含有大写字母;含有数字;含有小写字母;含有其它可打印字符;全是字母;全是数字;全是其它可打印字符;3)跟口令组成相关,拆分为六类含有中文姓氏;含有名字;含有英文名字;含有简单数字;含有常用短语;含有日期;本发明拆分的属性不局限于以上三种,实际应用时可根据需求,先拆分一部分的属性来进行分析。每一个属性有两个可能的值true和false。本实施的云计算分布式系统包含32个节点,单节点配置如下表所示
权利要求
1.一种基于生成元扩展彩虹表的密码恢复系统,其特征在于,包括包含扩展彩虹表生成模块、扩展彩虹表口令恢复模块的若干客户端,即网络节点,以及与若干网络节点相连接的包含数据挖掘模块、存储器以及系统初始化模块的服务器,其中用户通过管理终端网站管理服务器的数据挖掘模块和系统初始化模块的工作,服务器中的数据挖掘模块生成生成元字典,服务器中的系统初始化模块生成包含生成元字典信息的分布式初始化配置文件,服务器中的系统初始化模块与网络节点中的扩展彩虹表生成模块和扩展彩虹表口令恢复模块相连接并传输系统初始化配置信息;所述的系统初始化配置信息包括扩展彩虹表的生成和破解算法信息、扩展彩虹表的链长信息、扩展彩虹表的链数信息、扩展彩虹表的分布式生成序号信息、扩展彩虹表号信息、扩展彩虹表的生成元个数信息、扩展彩虹表所需的生成元字典个数信息、扩展彩虹表生成元模式信息、扩展彩虹表存储路径和文件名以及扩展彩虹表生成所需的各个生成元字典路径信息。
2.根据权利要求1所述的系统,其特征是,所述的数据挖掘模块通过属性拆分以及聚类分析获得扩展彩虹表生成元,该模块具体包括属性特征单元、属性值计算单元和聚类分析单元,其中属性特征单元将客户端输入的口令进行依照属性特征的拆分,并将拆分得到的分类号与拆分序号输出至属性值计算单元,属性值计算单元根据分类号与拆分序号加权计算得到一条口令所对应的属性值并输出至聚类分析单元,聚类分析单元通过数据挖掘的聚类分析方法,将属性值生成所需的扩展彩虹表生成元字典,供扩展彩虹表生成模块和扩展彩虹表口令恢复模块加载。
3.根据权利要求1所述的系统,其特征是,所述的系统初始化模块,在服务器根据用户需求生成系统初始化配置信息,供扩展彩虹表生成模块和扩展彩虹表口令恢复模块加载。
4.根据权利要求1所述的系统,其特征是,所述的扩展彩虹表生成模块包括加载单元、排序单元和保存单元,其中加载单元在网络节点加载扩展彩虹表生成元字典文件和分布式节点配置文件,根据ChainCnt参数和Part参数生成扩展彩虹表链首,根据Alg参数选择哈希算法,根据Table参数决定扩展R函数,根据ChainCnt和ChainLen参数生成所需条数和长度的扩展彩虹链,排序单元根据加载单元所得到的扩展彩虹链的链尾的大小将所有的链首链尾对进行排序,最后由保存单元将排好序的链首链尾对根据outpUt_addr参数所示的路径和名称存入扩展彩虹表文件中。
5.根据权利要求1所述的系统,其特征是,所述的扩展彩虹表口令恢复模块包括读取单元和口令恢复单元,其中读取单元在网络节点加载扩展彩虹表生成元字典文件、待恢复口令哈希文件以及分布式节点配置文件,读取本机存储的扩展彩虹表到内存中,口令恢复单元根据内存中的扩展彩虹表,从待恢复口令哈希文件中读入一行文本格式的哈希值,开始进行口令恢复,直到将待恢复口令哈希文件中最后一条哈希恢复完成,最后将恢复结果汇总。
6.一种根据权利要求1-5中任一系统的密码恢复方法,其特征在于,通过对来自口令库的真实口令进行属性拆分和聚类分析,获得多种生成元,并基于生成元生成扩展彩虹表生成元字典文件;然后根据用户需求产生系统初始化配置信息,并分布式地生成扩展彩虹表,最后分布式地实现扩展彩虹表口令恢复。
7.根据权利要求6所述的方法,其特征是,具体包括以下步骤第一步、通过数据挖掘的方式获得扩展彩虹表生成元,具体步骤包括1. O打开并初始化用户口令库文件;.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)将各节点口令恢复结果汇总。
8.根据权利要求7所述的方法,其特征是,所述的扩展彩虹链的生成过程包括.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运算的结果作为链尾。
9.根据权利要求8所述的方法,其特征是,步骤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参数的位数决定。
10.根据权利要求7所述的方法,其特征是,步骤4.3)中所述的口令恢复,具体包括以下步骤.4.3.1)将读入的文本格式哈希值进行初始化格式转换,得到二进制格式哈希值;.4.3. 2)将扩展彩虹表链尾进行哈希运算,并将所得到的结果与待恢复口令哈希值进行比对,当比较结果一致,则判定找到待恢复口令,扩展彩虹表口令恢复过程结束;否则继续执行步骤4. 3. 3);.4.3.3)将待恢复口令哈希值进行R运算;.4.3. 4)初始化当前位置值,并根据ChainLen参数逐列搜索待恢复口令;.4.3.5)如果找到该条待恢复口令则扩展彩虹表口令恢复成功,否则恢复失败。
11.根据权利要求10所述的方法,其特征是,步骤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参数的位数决定。
12.根据权利要求10所述的方法,其特征是,步骤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)步骤进行逐列搜索,直到找到待恢复口令或将全部扩展彩虹表列都遍历完毕。
13.根据权利要求12所述的方法,其特征是,步骤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)步骤,直到到达当前位置。
全文摘要
一种计算机安全技术领域的基于生成元扩展彩虹表的密码恢复系统及其恢复方法,该系统包括包含扩展彩虹表生成模块、扩展彩虹表口令恢复模块的若干客户端以及与若干网络节点相连接的包含数据挖掘模块、存储器以及系统初始化模块的服务器,用户通过管理终端网站管理服务器的数据挖掘模块和系统初始化模块的工作,服务器中的数据挖掘模块生成生成元字典,服务器中的系统初始化模块生成包含生成元字典信息的分布式初始化配置文件,服务器中的系统初始化模块与网络节点中的扩展彩虹表生成模块和扩展彩虹表口令恢复模块相连接并传输系统初始化配置信息。本发明以减小明文空间的方法来达到在可接受时间范围内生成长口令彩虹表的目的,能够大大降低人为口令的恢复时间。
文档编号G06F21/62GK103049709SQ201310022268
公开日2013年4月17日 申请日期2013年1月22日 优先权日2013年1月22日
发明者邱卫东, 王扬德, 刘伯仲, 张琛岭, 郭奕东, 江琳 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1