首页 / 专利库 / 人工智能 / 机器学习 / 人工神经网络 / 递归神经网络 / 密码字典生成方法及计算机可读存储介质

密码字典生成方法及计算机可读存储介质

阅读:102发布:2020-05-12

专利汇可以提供密码字典生成方法及计算机可读存储介质专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种密码字典生成方法及计算机可读存储介质,方法包括:收集密码集;生成测试集;通过 递归神经网络 模型对当前的密码集进行训练,得到字典模型;根据字典模型生成字典;根据测试集,得到当前的密码集的命中率;随机 修改 当前的密码集,得到新的密码集;通过递归神经网络模型对新的密码集进行训练,得到新的字典模型;根据新的字典模型生成新的字典;根据测试集,得到新的密码集的命中率;若新的密码集的命中率大于当前的密码集的命中率,则令更新次数加一,并将新的密码集作为当前的密码集;当更新次数达到预设的第一次数时,根据当前的密码集对应的字典模型,生成密码字典。本发明最终生成的密码字典可提高密码恢复的成功率。,下面是密码字典生成方法及计算机可读存储介质专利的具体信息内容。

1.一种密码字典生成方法,其特征在于,包括:
收集密码集,所述密码集包括真实密码和虚拟密码;
生成测试集,所述测试集包括明文密码;
通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
根据所述字典模型,生成字典;
根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
随机修改当前的密码集中的虚拟密码,得到新的密码集;
通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
根据所述新的字典模型,生成新的字典;
根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
判断新的密码集对应的命中率是否大于当前的密码集对应的命中率;
若否,则返回执行所述随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
若是,则令更新次数加一,并将所述新的密码集作为当前的密码集;
当更新次数未达到预设的第一次数时,返回执行随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
当更新次数达到预设的第一次数时,根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典;
所述“通过递归神经网络模型对当前的密码集进行训练,得到字典模型”具体为:
构建递归神经网络模型,所述递归神经网络模型包括输入层、隐含层和输出层,所述隐含层包括三个GRU层,所述GRU为控循环单元;
从当前的密码集中读取一组密码,每组密码包括随机从密码集中取出的预设的第一个数的密码;
将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量;
将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵;
将所述二阶矩阵输入到输出层,得到第一个数的数值序列;
根据代价函数,计算得到所述数值序列的预测结果与实际结果的偏差;
根据所述偏差以及预设的学习率,通过优化算法调整所述三个GRU层的神经元的权重参数;
返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集中的所有密码完成一次训练;
返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集完成预设第二次数的训练;
获取三个GRU层的神经元的权重参数,得到字典模型。
2.根据权利要求1所述的密码字典生成方法,其特征在于,所述“根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率”具体为:
计算所述字典中与所述测试集中的明文密码相同的密码条数;
计算所述密码条数与所述测试集中的明文密码的总数之商,得到当前的密码集对应的命中率。
3.根据权利要求1所述的密码字典生成方法,其特征在于,所述“将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量”之前,进一步包括:
用0将所述第一个数的密码填充到预设的长度。
4.根据权利要求1所述的密码字典生成方法,其特征在于,所述“将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵”之前,进一步包括:
根据随机丢弃算法,随机选取每个GRU层的预设比例的神经元,并使所述神经元失效。
5.根据权利要求1所述的密码字典生成方法,其特征在于,所述“根据所述字典模型,生成字典”具体为:
获取字符集;
从所述字符集中随机选取一个字符作为一密码的第一个字符;
将所述字符作为当前字符,并根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率;
获取概率最大的预设的第二个数的字符,并从所述第二个数的字符中随机选取一个字符作为所述一密码的下一个字符;
判断所述下一个字符是否为预设的结束符;
若否,则所述下一个字符作为当前字符,返回执行所述根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率的步骤;
若是,则将所述一密码加入字典;
返回执行所述从所述字符集中随机选取一个字符作为一密码的第一个字符的步骤,直至所述字典中密码的个数达到预设的第三个数。
6.根据权利要求5所述的密码字典生成方法,其特征在于,所述“将所述一密码加入字典”之后,进一步包括:
对所述一密码以及字典中已有的密码进行排重。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述该程序被处理器执行时实现以下步骤:
收集密码集,所述密码集包括真实密码和虚拟密码;
生成测试集,所述测试集包括明文密码;
通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
根据所述字典模型,生成字典;
根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
随机修改当前的密码集中的虚拟密码,得到新的密码集;
通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
根据所述新的字典模型,生成新的字典;
根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
判断新的密码集对应的命中率是否大于当前的密码集对应的命中率;
若否,则返回执行所述随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
若是,则令更新次数加一,并将所述新的密码集作为当前的密码集;
当更新次数未达到预设的第一次数时,返回执行随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
当更新次数达到预设的第一次数时,根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典;
所述“通过递归神经网络模型对当前的密码集进行训练,得到字典模型”具体为:
构建递归神经网络模型,所述递归神经网络模型包括输入层、隐含层和输出层,所述隐含层包括三个GRU层,所述GRU为门控循环单元;
从当前的密码集中读取一组密码,每组密码包括随机从密码集中取出的预设的第一个数的密码;
将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量;
将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵;
将所述二阶矩阵输入到输出层,得到第一个数的数值序列;
根据代价函数,计算得到所述数值序列的预测结果与实际结果的偏差;
根据所述偏差以及预设的学习率,通过优化算法调整所述三个GRU层的神经元的权重参数;
返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集中的所有密码完成一次训练;
返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集完成预设第二次数的训练;
获取三个GRU层的神经元的权重参数,得到字典模型。
8.根据权利要求7所述的计算机可读存储介质,其特征在于,所述“根据所述字典模型,生成字典”具体为:
获取字符集;
从所述字符集中随机选取一个字符作为一密码的第一个字符;
将所述字符作为当前字符,并根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率;
获取概率最大的预设的第二个数的字符,并从所述第二个数的字符中随机选取一个字符作为所述一密码的下一个字符;
判断所述下一个字符是否为预设的结束符;
若否,则所述下一个字符作为当前字符,返回执行所述根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率的步骤;
若是,则将所述一密码加入字典;
返回执行所述从所述字符集中随机选取一个字符作为一密码的第一个字符的步骤,直至所述字典中密码的个数达到预设的第三个数。

说明书全文

密码字典生成方法及计算机可读存储介质

技术领域

[0001] 本发明涉及密码技术领域,尤其涉及一种密码字典生成方法及计算机可读存储介质。

背景技术

[0002] 暴遍历和字典遍历是目前密码恢复中最常用的两种遍历方式。暴力遍历就是对用户制定的规则内的所有密码进行遍历,字典遍历则是对字典文件中的密码进行遍历。暴力方式往往需要较多的规则来覆盖尽可能大的密码空间以提高密码恢复的成功率,但密码空间太大将造成遍历时间倍增,甚至需要成百上千年的时间,使密码恢复失去意义。字典遍历方式的成功率往往受限于字典中的密码数,由于字典的密码数一般不会太多,因此可以短时间内完成密码的遍历,但一般只能恢复出常用的密码,对于一些复杂密码则无能为力。
[0003] 如何在有效的时间内恢复出尽可能复杂的密码是当前的主要研究方向。目前,针对暴力方式,研究主要集中在通过各种硬件加速算法优化、分布式技术来提高遍历的速度,以此来缩短遍历的时间。但是通过提高遍历速度的方法只能使遍历时间线性减小,而密码长度增长、密码字符集增大却使遍历时间几何级数增大;而针对字典遍历,研究主要集中在对字典的收集方面,收集的密码数比较有限。
[0004] 研究者对大量密码进行社会工程学研究,统计分析密码设置的规律和特点,以此总结出一些密码遍历的规则来提高密码恢复的成功率,例如常用的姓名拼音加生日的规则、英文单词加数字的规则等等。但是密码样本数量非常巨大,密码分布杂乱无章,有些密码设置的规律又很难被发现,人工统计总结的规则有很大的局限性。
[0005] 在公开号为CN104717058A的中国专利公开文件中,公开了一种密码遍历方法和装置,包括:获取进行密码遍历的预设字符集;获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子;以及根据概率因子集和关联因子集确定遍历密码。上述方案中,根据密码字符的分布规律以及关联概率设计的密码遍历算法,虽然可以降低遍历时间并优先构造概率高的密码,提高成功率,但该算法没有分析密码的设置规律,不能根据密码规律去扩展密码字典,具有一定的局限性。

发明内容

[0006] 本发明所要解决的技术问题是:提供一种密码字典生成方法及计算机可读存储介质,生成的密码字典可提高密码恢复的成功率。
[0007] 为了解决上述技术问题,本发明采用的技术方案为:一种密码字典生成方法,包括:
[0008] 收集密码集,所述密码集包括真实密码和虚拟密码;
[0009] 生成测试集,所述测试集包括明文密码;
[0010] 通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
[0011] 根据所述字典模型,生成字典;
[0012] 根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
[0013] 随机修改当前的密码集中的虚拟密码,得到新的密码集;
[0014] 通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
[0015] 根据所述新的字典模型,生成新的字典;
[0016] 根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
[0017] 判断新的密码集对应的命中率是否大于当前的密码集对应的命中率;
[0018] 若否,则返回执行所述随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0019] 若是,则令更新次数加一,并将所述新的密码集作为当前的密码集;
[0020] 当更新次数未达到预设的第一次数时,返回执行随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0021] 当更新次数达到预设的第一次数时,根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典。
[0022] 本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述该程序被处理器执行时实现以下步骤:
[0023] 收集密码集,所述密码集包括真实密码和虚拟密码;
[0024] 生成测试集,所述测试集包括明文密码;
[0025] 通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
[0026] 根据所述字典模型,生成字典;
[0027] 根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
[0028] 随机修改当前的密码集中的虚拟密码,得到新的密码集;
[0029] 通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
[0030] 根据所述新的字典模型,生成新的字典;
[0031] 根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
[0032] 判断新的密码集对应的命中率是否大于当前的密码集对应的命中率;
[0033] 若否,则返回执行所述随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0034] 若是,则令更新次数加一,并将所述新的密码集作为当前的密码集;
[0035] 当更新次数未达到预设的第一次数时,返回执行随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0036] 当更新次数达到预设的第一次数时,根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典。
[0037] 本发明的有益效果在于:利用千万级的密码集做学习样本,通过适合于学习密码规律的神经网络生成相应的字典模型,利用该字典模型生成一个字典,并通过不断修改密码集中的密码,选取与测试集重合度更高的字典对应的密码集,继续进行训练、修改、命中率的比较,使神经网络不断地学习样本中的密码的设置规律,根据最终的字典模型生成新的密码字典,由于新的密码都是满足样本中密码设置的规则,更贴近于实际应用,因此对提高密码恢复的成功率更有作用。本发明通过运用神经网络学习密码样本中的密码规律,并用学习到的密码规律生成新的密码,后续可用于密码恢复,由于有效学习到了密码的设置规律,因此可大大提高密码恢复的成功率,在密码恢复领域具有极大的应用价值。附图说明
[0038] 图1为本发明实施例一的一种密码字典生成方法的流程图
[0039] 图2为本发明实施例二中步骤S3的方法流程图;
[0040] 图3为本发明实施例三中步骤S4的方法流程图。

具体实施方式

[0041] 为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
[0042] 本发明最关键的构思在于:通过运用神经网络学习密码样本中的密码规律,并用学习到的密码规律生成新的密码,用于密码恢复。
[0043] 请参阅图1,一种密码字典生成方法,包括:
[0044] 收集密码集,所述密码集包括真实密码和虚拟密码;
[0045] 生成测试集,所述测试集包括明文密码;
[0046] 通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
[0047] 根据所述字典模型,生成字典;
[0048] 根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
[0049] 随机修改当前的密码集中的虚拟密码,得到新的密码集;
[0050] 通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
[0051] 根据所述新的字典模型,生成新的字典;
[0052] 根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
[0053] 判断新的密码集对应的命中率是否大于当前的密码集对应的命中率;
[0054] 若否,则返回执行所述随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0055] 若是,则令更新次数加一,并将所述新的密码集作为当前的密码集;
[0056] 当更新次数未达到预设的第一次数时,返回执行随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0057] 当更新次数达到预设的第一次数时,根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典。
[0058] 从上述描述可知,本发明的有益效果在于:通过运用神经网络学习密码样本中的密码规律,并用学习到的密码规律生成新的密码,后续可用于密码恢复,由于有效学习到了密码的设置规律,因此可大大提高密码恢复的成功率。
[0059] 进一步地,所述“根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率”具体为:
[0060] 计算所述字典中与所述测试集中的明文密码相同的密码条数;
[0061] 计算所述密码条数与所述测试集中的明文密码的总数之商,得到当前的密码集对应的命中率。
[0062] 进一步地,所述“通过递归神经网络模型对当前的密码集进行训练,得到字典模型”具体为:
[0063] 构建递归神经网络模型,所述递归神经网络模型包括输入层、隐含层和输出层,所述隐含层包括三个GRU层;
[0064] 从当前的密码集中读取一组密码,每组密码包括随机从密码集中取出的预设的第一个数的密码;
[0065] 将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量;
[0066] 将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵;
[0067] 将所述二阶矩阵输入到输出层,得到第一个数的数值序列;
[0068] 根据代价函数,计算得到所述数值序列的预测结果与实际结果的偏差;
[0069] 根据所述偏差以及预设的学习率,通过优化算法调整所述三个GRU层的神经元的权重参数;
[0070] 返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集中的所有密码完成一次训练;
[0071] 返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集完成预设第二次数的训练;
[0072] 获取三个GRU层的神经元的权重参数,得到字典模型。
[0073] 由上述描述可知,通过设计适合于学习密码规律的神经网络,并通过该神经网络生成相应的密码字典模型,可有效学习到密码样本中的密码设置规律,提高后续密码恢复的成功率。
[0074] 进一步地,所述“将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量”之前,进一步包括:
[0075] 用0将所述第一个数的密码填充到预设的长度。
[0076] 由上述描述可知,保证神经网络处理的是同样大小的数据。
[0077] 进一步地,所述“将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵”之前,进一步包括:
[0078] 根据随机丢弃算法,随机选取每个GRU层的预设比例的神经元,并使所述神经元失效。
[0079] 由上述描述可知,不仅能有效防止过拟合,还提高神经网络的性能。
[0080] 进一步地,所述“根据所述字典模型,生成字典”具体为:
[0081] 获取字符集;
[0082] 从所述字符集中随机选取一个字符作为一密码的第一个字符;
[0083] 将所述字符作为当前字符,并根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率;
[0084] 获取概率最大的预设的第二个数的字符,并从所述第二个数的字符中随机选取一个字符作为所述一密码的下一个字符;
[0085] 判断所述下一个字符是否为预设的结束符;
[0086] 若否,则所述下一个字符作为当前字符,返回执行所述根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率的步骤;
[0087] 若是,则将所述一密码加入字典;
[0088] 返回执行所述从所述字符集中随机选取一个字符作为一密码的第一个字符的步骤,直至所述字典中密码的个数达到预设的第三个数。
[0089] 进一步地,所述“将所述一密码加入字典”之后,进一步包括:
[0090] 对所述一密码以及字典中已有的密码进行排重。
[0091] 由上述描述可知,可保证字典中的密码不重复。
[0092] 本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,所述该程序被处理器执行时实现以下步骤:
[0093] 收集密码集,所述密码集包括真实密码和虚拟密码;
[0094] 生成测试集,所述测试集包括明文密码;
[0095] 通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
[0096] 根据所述字典模型,生成字典;
[0097] 根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
[0098] 随机修改当前的密码集中的虚拟密码,得到新的密码集;
[0099] 通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
[0100] 根据所述新的字典模型,生成新的字典;
[0101] 根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
[0102] 判断新的密码集对应的命中率是否大于当前的密码集对应的命中率;
[0103] 若否,则返回执行所述随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0104] 若是,则令更新次数加一,并将所述新的密码集作为当前的密码集;
[0105] 当更新次数未达到预设的第一次数时,返回执行随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0106] 当更新次数达到预设的第一次数时,根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典。
[0107] 进一步地,所述“根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率”具体为:
[0108] 计算所述字典中与所述测试集中的明文密码相同的密码条数;
[0109] 计算所述密码条数与所述测试集中的明文密码的总数之商,得到当前的密码集对应的命中率。
[0110] 进一步地,所述“通过递归神经网络模型对当前的密码集进行训练,得到字典模型”具体为:
[0111] 构建递归神经网络模型,所述递归神经网络模型包括输入层、隐含层和输出层,所述隐含层包括三个GRU层;
[0112] 从当前的密码集中读取一组密码,每组密码包括随机从密码集中取出的预设的第一个数的密码;
[0113] 将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量;
[0114] 将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵;
[0115] 将所述二阶矩阵输入到输出层,得到第一个数的数值序列;
[0116] 根据代价函数,计算得到所述数值序列的预测结果与实际结果的偏差;
[0117] 根据所述偏差以及预设的学习率,通过优化算法调整所述三个GRU层的神经元的权重参数;
[0118] 返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集中的所有密码完成一次训练;
[0119] 返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集完成预设第二次数的训练;
[0120] 获取三个GRU层的神经元的权重参数,得到字典模型。
[0121] 进一步地,所述“将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量”之前,进一步包括:
[0122] 用0将所述第一个数的密码填充到预设的长度。
[0123] 进一步地,所述“将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵”之前,进一步包括:
[0124] 根据随机丢弃算法,随机选取每个GRU层的预设比例的神经元,并使所述神经元失效。
[0125] 进一步地,所述“根据所述字典模型,生成字典”具体为:
[0126] 获取字符集;
[0127] 从所述字符集中随机选取一个字符作为一密码的第一个字符;
[0128] 将所述字符作为当前字符,并根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率;
[0129] 获取概率最大的预设的第二个数的字符,并从所述第二个数的字符中随机选取一个字符作为所述一密码的下一个字符;
[0130] 判断所述下一个字符是否为预设的结束符;
[0131] 若否,则所述下一个字符作为当前字符,返回执行所述根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率的步骤;
[0132] 若是,则将所述一密码加入字典;
[0133] 返回执行所述从所述字符集中随机选取一个字符作为一密码的第一个字符的步骤,直至所述字典中密码的个数达到预设的第三个数。
[0134] 进一步地,所述“将所述一密码加入字典”之后,进一步包括:
[0135] 对所述一密码以及字典中已有的密码进行排重。
[0136] 实施例一
[0137] 请参照图1,本发明的实施例一为:一种密码字典生成方法,所述方法基于基于递归神经网络,得到的密码字典可用于密码恢复;所述方法包括如下步骤:
[0138] S1:收集密码集,所述密码集包括真实密码和虚拟密码;为了防止过拟合,密码集由两部分组成,第一部分来自于真实的网站或信息管理系统数据库中的真实密码,第二部分是用常用密码关键词(例如admin等)加随机生成的后缀组成的虚拟密码;进一步地,第一部分占密码集总容量的70%,第二部分占30%,总容量不低于1000万条。
[0139] S2:生成测试集,所述测试集包括明文密码;测试集的总容量不低于100万条;进一步地,所述测试集中的密码与所述密码集中的密码各不相同,即测试集的100万条密码不在密码集的1000万条密码中。
[0140] 由于单个密码从字符上下文来看有些字符关联较弱,故没有必要对密码进行分词,直接以每一个密码作为序列单元。
[0141] S3:通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
[0142] S4:根据所述字典模型,生成字典;
[0143] S5:根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
[0144] S6:随机修改当前的密码集中的虚拟密码,得到新的密码集;具体地,可以动态插入的方式间隔一定时间改变虚拟密码。
[0145] S7:通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
[0146] S8:根据所述新的字典模型,生成新的字典;
[0147] S9:根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
[0148] S10:判断新的密码集对应的命中率是否大于当前的密码集对应的命中率,若是,则执行步骤S11,若否,则执行步骤S6。
[0149] S11:令更新次数加一,并将所述新的密码集作为当前的密码集;所述更新次数的初始值为0。
[0150] S12:判断更新次数是否达到预设的第一次数,若是,则执行步骤S13,若否,则执行步骤S6。优选地,所述预设的第一次数为100,即以原始的密码集被成功更新100次为终止条件。
[0151] S13:根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典。
[0152] 其中,对于步骤S5中对于命中率的计算具体为:计算所述字典中与所述测试集中的明文密码相同的密码条数;计算所述密码条数与所述测试集中的明文密码的总数之商,得到当前的密码集对应的命中率。即,如果字典中的一个密码与测试集中100万条密码中的一个密码相同即为命中一条,假设命中N条,则命中率为N/1000000。步骤S9中的命中率计算以此类推。
[0153] 进一步地,对于步骤S13得到的密码字典,后续可用于密码恢复,[0154] 本实施例利用千万级的密码集做学习样本,通过适合于学习密码规律的神经网络生成相应的字典模型,利用该字典模型生成一个字典,并通过不断修改密码集中的密码,选取与测试集重合度更高的字典对应的密码集,继续进行训练、修改、命中率的比较,使神经网络不断地学习样本中的密码的设置规律,根据最终的字典模型生成新的密码字典,由于新的密码都是满足样本中密码设置的规则,更贴近于实际应用,因此对提高密码恢复的成功率更有作用。
[0155] 实施例二
[0156] 请参照图2,本实施例是实施例一中步骤S3和S7的进一步拓展,以步骤S3为例,步骤S3包括如下步骤:
[0157] S301:构建递归神经网络模型,所述递归神经网络模型包括输入层、隐含层和输出层,所述隐含层包括三个GRU层。
[0158] 具体地,采用递归神经网络作为模型的基准结构,其中,为了拥有到对长时间信息序列上下文的记忆能力,采用长短时记忆网络层(LSTM)为模型的基本单元,为了提高效率,减少运算量,进一步采用了该网络的变种模型——控循环单元(GRU),将原LSTM模型忘记门和输入门合成更新门,在保持精度的前提下提高了字典生成速度。
[0159] 其中,由于密码长度基本不会超过128个字符,因此将最长密码序列长度设为128个字符,每一个GRU权值矩阵以高斯标准差0.05初始化,隐含层宽度设为128个字符,偏置初始化为常数0;为了方便控制信息流动,以非线性S型函数(sigmoid函数)来控制门限,其优点为非线性,单调递增,并在定义域可微。
[0160] 为了防止过拟合(过拟合就是对训练的样本学习得很好,但是对不在训练样本中的密码命中率很低),本实施例给每个GRU层添加随机丢弃算法(dropout算法),其比例设为0.2,不仅能有效防止过拟合,还提高神经网络的性能。
[0161] 本实施例中的神经网络以softmax_cross_entropy_with_logits(概率交叉熵)为代价函数,代价函数是用来判断预测结果与实际结果的偏差。以带有衰减系数的梯度下降算法(RMSProp算法)为一种优化器,通过引入一个衰减系数,得到自适应权重的能力。初始学习率设置为0.0001,以每轮训练20%的衰减率进行逐步衰减。
[0162] S302:从当前的密码集中读取一组密码,每组密码包括随机从密码集中取出的预设的第一个数的密码;其中,所述第一个数可根据需要设置,优选地,所述第一个数为1024。即将当前的密码集作为密码样本,每次随机读取出1024个密码,批量导入递归神经网络模型进行训练,可提高处理速度。
[0163] S303:用0将所述第一个数的密码填充到预设的长度,即将1024个密码用0填充到同一长度;进一步地所述预设的长度为128个字符。
[0164] S304:将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量;本实施例中,数值向量的大小为1024×128。进一步地,可先预设字符与数字的关联关系,一般一个字符对应一个数字;然后根据该关联关系,将密码从字符串转换为数值向量。
[0165] S305:根据随机丢弃算法(dropout算法),随机选取每个GRU层的预设比例的神经元,并使所述神经元失效。本实施例中,所述预设比例为20%,即经过一个GRU层的这些20%的神经元的密码不参与该GRU层的计算。
[0166] S306:将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵;即将输入层的数据经过一个GRU层的计算以及结合随机丢弃算法,丢弃了其中随机选取的20%的GRU层的影响,得到一个1024×128的二阶矩阵,将这个二阶矩阵再次经过一个GRU层的计算,即重复上述步骤,总共经过3个GRU层的计算,得到最终的1024×128的二阶矩阵。
[0167] S307:将所述二阶矩阵输入到输出层,得到第一个数的数值序列;即将GRU层的计算得到的结构输入到输出层,得到1024个数值序列。
[0168] S308:根据代价函数,计算得到所述数值序列的预测结果与实际结果的偏差;
[0169] S309:根据所述偏差以及预设的学习率,通过优化算法(RMSProp算法)调整所述三个GRU层的神经元的权重参数;进一步地,还可同时调整偏置量。
[0170] S310:判断当前的密码集中的所有密码是否均完成一次训练,即是否都参与一次训练,若是,则表示当前的密码集成功完成一次训练,执行步骤S311,若否,则执行步骤S302。
[0171] S311:判断当前的密码集是否完成预设第二次数的训练,若是,则执行步骤S312,若否,则执行步骤S302。其中,第二次数表示训练多长时间后比较训练前后模型的效果,不是固定值,由于测试模型效果比较耗时,训练间隔不宜太短,太长则不利于监控训练效果。本实施例中,第二次数为10。密码集中的所有密码都参与训练一次,即完成一轮完整训练,当训练10轮后,则执行步骤S312。
[0172] S312:获取三个GRU层的神经元的权重参数,得到字典模型。经过上述步骤,不断地对权重参数进行调整,获取最终调整后的权重参数,即为字典模型。
[0173] 本实施例通过设计适合于学习密码规律的神经网络,并通过该神经网络生成相应的密码字典模型,可有效学习到密码样本中的密码设置规律,提高后续密码恢复的成功率。
[0174] 实施例三
[0175] 请参照图3,本实施例是上述实施例中步骤S4和S8的进一步拓展,以步骤S4为例,步骤S4包括如下步骤:
[0176] S401:获取字符集,所述字符集中包括a-z、0-9以及各特殊字符。
[0177] S402:从所述字符集中随机选取一个字符作为一密码的第一个字符;
[0178] S403:将所述字符作为当前字符,并根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率,即各字符出现在当前字符后的概率。
[0179] S404:获取概率最大的预设的第二个数的字符,并从所述第二个数的字符中随机选取一个字符作为所述一密码的下一个字符;本实施例中,所述第二个数为5个,即从概率最大的5个字符中随时选取出一个字符。
[0180] S405:判断所述下一个字符是否为预设的结束符,若是,则执行步骤S406,若否,则将所述下一个字符作为当前字符,并结合字典模型通过代价函数计算各字符出现在该字符后的概率,即返回执行步骤S403。本实施例中,结束符可为“eos”。
[0181] S406:将所述一密码加入字典;
[0182] S407:对所述一密码以及字典中已有的密码进行排重;即判断字典已有的密码中是否存在与所述一密码相同的密码,若存在,则删除所述一密码,保证字典中的密码不重复。
[0183] S408:判断字典中的密码个数是否达到预设的第三个数,若是,则执行步骤S409,若否,则再从字符集中随机选取一个字符作为新的一密码的第一个字符,即返回执行步骤S402。本实施例中,所述第三个数为1亿个。
[0184] S409:得到字典。
[0185] 本实施例通过神经网络学习到的字典模型来生成字典,后续将所述字典与测试集进行命中率的计算,可有效反映出神经网络的学习程度。
[0186] 实施例四
[0187] 本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述该程序被处理器执行时实现以下步骤:
[0188] 收集密码集,所述密码集包括真实密码和虚拟密码;
[0189] 生成测试集,所述测试集包括明文密码;
[0190] 通过递归神经网络模型对当前的密码集进行训练,得到字典模型;
[0191] 根据所述字典模型,生成字典;
[0192] 根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率;
[0193] 随机修改当前的密码集中的虚拟密码,得到新的密码集;
[0194] 通过递归神经网络模型对所述新的密码集进行训练,得到新的字典模型;
[0195] 根据所述新的字典模型,生成新的字典;
[0196] 根据所述测试集,对所述新的字典进行测试,得到新的密码集对应的命中率;
[0197] 判断新的密码集对应的命中率是否大于当前的密码集对应的命中率;
[0198] 若否,则返回执行所述随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0199] 若是,则令更新次数加一,并将所述新的密码集作为当前的密码集;
[0200] 当更新次数未达到预设的第一次数时,返回执行随机修改当前的密码集中的虚拟密码,得到新的密码集的步骤;
[0201] 当更新次数达到预设的第一次数时,根据当前的密码集通过递归神经网络模型训练得到的字典模型,生成密码字典。
[0202] 进一步地,所述“根据所述测试集,对所述字典进行测试,得到当前的密码集对应的命中率”具体为:
[0203] 计算所述字典中与所述测试集中的明文密码相同的密码条数;
[0204] 计算所述密码条数与所述测试集中的明文密码的总数之商,得到当前的密码集对应的命中率。
[0205] 进一步地,所述“通过递归神经网络模型对当前的密码集进行训练,得到字典模型”具体为:
[0206] 构建递归神经网络模型,所述递归神经网络模型包括输入层、隐含层和输出层,所述隐含层包括三个GRU层;
[0207] 从当前的密码集中读取一组密码,每组密码包括随机从密码集中取出的预设的第一个数的密码;
[0208] 将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量;
[0209] 将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵;
[0210] 将所述二阶矩阵输入到输出层,得到第一个数的数值序列;
[0211] 根据代价函数,计算得到所述数值序列的预测结果与实际结果的偏差;
[0212] 根据所述偏差以及预设的学习率,通过优化算法调整所述三个GRU层的神经元的权重参数;
[0213] 返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集中的所有密码完成一次训练;
[0214] 返回执行所述从当前的密码集中读取一组密码的步骤,直至所述密码集完成预设第二次数的训练;
[0215] 获取三个GRU层的神经元的权重参数,得到字典模型。
[0216] 进一步地,所述“将所述第一个数的密码导入递归神经网络模型,并在输入层将所述密码从字符串转换为数值向量”之前,进一步包括:
[0217] 用0将所述第一个数的密码填充到预设的长度。
[0218] 进一步地,所述“将转换后的第一个数的密码经过三个GRU层的计算,得到二阶矩阵”之前,进一步包括:
[0219] 根据随机丢弃算法,随机选取每个GRU层的预设比例的神经元,并使所述神经元失效。
[0220] 进一步地,所述“根据所述字典模型,生成字典”具体为:
[0221] 获取字符集;
[0222] 从所述字符集中随机选取一个字符作为一密码的第一个字符;
[0223] 将所述字符作为当前字符,并根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率;
[0224] 获取概率最大的预设的第二个数的字符,并从所述第二个数的字符中随机选取一个字符作为所述一密码的下一个字符;
[0225] 判断所述下一个字符是否为预设的结束符;
[0226] 若否,则所述下一个字符作为当前字符,返回执行所述根据当前字符以及所述字典模型,通过代价函数计算得到各字符出现的概率的步骤;
[0227] 若是,则将所述一密码加入字典;
[0228] 返回执行所述从所述字符集中随机选取一个字符作为一密码的第一个字符的步骤,直至所述字典中密码的个数达到预设的第三个数。
[0229] 进一步地,所述“将所述一密码加入字典”之后,进一步包括:
[0230] 对所述一密码以及字典中已有的密码进行排重。
[0231] 综上所述,本发明提供的一种密码字典生成方法及计算机可读存储介质,利用千万级的密码集做学习样本,通过适合于学习密码规律的神经网络生成相应的字典模型,利用该字典模型生成一个字典,并通过不断修改密码集中的密码,选取与测试集重合度更高的字典对应的密码集,继续进行训练、修改、命中率的比较,使神经网络不断地学习样本中的密码的设置规律,根据最终的字典模型生成新的密码字典,由于新的密码都是满足样本中密码设置的规则,更贴近于实际应用,因此对提高密码恢复的成功率更有作用。本发明通过运用神经网络学习密码样本中的密码规律,并用学习到的密码规律生成新的密码,后续可用于密码恢复,由于有效学习到了密码的设置规律,因此可大大提高密码恢复的成功率,在密码恢复领域具有极大的应用价值。
[0232] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈