一种基于密文特征识别加密算法类型的方法与系统与流程

文档序号:26050976发布日期:2021-07-27 15:26阅读:313来源:国知局
一种基于密文特征识别加密算法类型的方法与系统与流程

【技术领域】

本发明涉及密码学技术领域,尤其涉及密文特征识别加密算法类型的方法。



背景技术:

在当今商业活动中,总是会有许多重要的机密数据,为了防止数据泄露,经常会对这些数据采取加密算法进行加密,保护数据安全。然而由于各类数据的重要和保密等级不一样,因此对于不同的数据,必须采取不同的加密算法进行加密,避免数据被泄露和影响数据的正常使用。对加密算法进行破解的难度很大,本发明并不对算法进行破解,我们的目标是对加密后的算法,识别其加密类型,在加密类型不符合安全标准的时候,能够进行针对性的提醒,帮助企业或者事业单位获得系统安全性。因此为了确保正确使用加密算法,对加密算法的种类进行识别是非常重要的手段。

深度学习是机器学习的一种,自2006提出深度学习以来,深度学习在许多领域都得到了广泛应用,在加密算法识别领域也不例外。2013年,就有学者提出了基于神经网络的区分攻击方法,这种方法利用语言学和信息检索方法,从mars、rc6、rijndael、serpent、twofish加密的密文中生成分类模型;但是前人的方法,识别的错误率较高,对于识别错误后,也无法提取更加有效的特征进行正确率优化,因此无法保障很好的识别,错误识别的内容也无法减少。



技术实现要素:

本发明提供了一种基于密文特征识别加密算法类型的方法,所述方法包括:

爬取信息安全网站上的明文密码信息,并进行数据预处理;采用openssl开源加密库采用不同种类的加密算法进行加密,获得加密后的密文集合,作为训练数据;进行基于gru模型的深度学习的模型训练,对训练完的模型进行测试,获得分类错误的类别,对错误类别所对应的加密后的密码字符串进行基于n-gram的提取,获取n-gram片段,记录片段位置和元组数,对两个n-gram元组之间的数据进行隐藏,实现重要特征的提升,并再次进行测试,当测试结果有阈值程度提升时停止训练,否则改变n-gram元组数和隐藏的片段位置。

进一步可选地,如上所述的方法中,所述爬虫信息安全网站上的明文密码信息,主要还包括:

在信息安全相关网站上通过正则表达式匹配关键字为“常见密码”或各大信息安全论坛匹配“密码设置为:”这几个字的相关的报表内容或带有数字、符号、字母的信息;并对里面存在的数据缺陷和空格做处理。

进一步可选地,如上所述的方法中,所述openssl开源加密库采用不同种类的加密算法进行加密,主要还包括:

选取openssl开源加密库中的加密算法作为标准加密算法,从中分别挑选不同种类的加密算法对所述明文密码进行数据加密,并将这些密文按照加密算法的种类进行储存,得到不同种类的加密算法输出的密文集合,选取各种类密文长度相比小于预设阈值的密文作为训练数据。

进一步可选地,如上所述的方法中,所述进行基于gru模型的深度学习的模型训练,对训练完的模型进行测试,获得分类错误的类别,主要还包括:根据密文集合进行不同种类加密算法样本作为特征,将该种类算法作为标注值,得到训练集,构建基于gru神经网络的加密算法种类识别模型,并在其中加入dropout层和正则化;

通过该模型输入测试集样本识别出测试结果,包括正确分类的数据和错误分类的数据。

进一步可选地,如上所述的方法中,所述对错误类别所对应的加密后的密码字符串进行基于n-gram的提取,获取n-gram片段,记录片段位置和元组数,主要还包括:

抽取错误分类的数据特征,根据其对称特征性,进行分组;所述分组包括,通过n-gram算法对密码进行多元切分;分析是否存在相同的n-gram片段,并记录片段的位置;将不同的n-gram片段进行分开,根据分开的内容实现分组。

进一步可选地,如上所述的方法中,所述对两个n-gram元组之间的数据进行隐藏,实现重要特征的提升,主要还包括:

将两个n-gram特征的中间部分数据做隐藏,当隐藏的部分中包含有其他n-gram串时,则不作隐藏;当n-gram中间隔的字符串大于预设的长度时,也不作隐藏。

进一步可选地,如上所述的方法中,所述当测试结果有阈值程度提升时停止训练,否则改变n-gram元组数和隐藏的片段位置,主要还包括:

如果发现并没有正确率上的提升,则变化n-gram的元组数,从提取二元组变成三元组,使特征更加凸显;或者,改变隐藏的片段位置,只将两个元组最中间的n个字符串进行隐藏而不是全部隐藏,以此提升n-gram周边元素的特征值。

本发明公开了一种基于密文特征识别加密算法类型的系统,所述系统包括:

数据获取模块,用于通过爬虫获取可用于测试的密码内容;

深度学习训练与测试模块,用于采用深度学习gru模型训练并测试模型正确率;

n-gram提取模块,用于对错误的内容识别其n-gram特征,以便后续测试改进;

片段隐藏模块,用于对不重要的片段进行隐藏,实现重要特征的增强。

本发明提供的技术方案可以包括以下有益效果:

本发明针对加密算法识别问题,提出了一种基于密文特征识别加密算法类型的方法,经过正确的训练后,只要输入密文,就能高效、准确的识别处密文所属的加密算法种类。并且本发明能够针对错误的分类结果,进行特征的抽取和不相干数据的隐藏,实现了正确率的提升和优化。

【附图说明】

图1为本发明一种基于密文特征识别加密算法类型的方法的流程图。

图2为本发明一种基于密文特征识别加密算法类型的方法的结构图。

【具体实施方式】

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

图1为本发明一种基于密文特征识别加密算法类型的方法的流程图。如图1所示,本实施例一种基于密文特征识别加密算法类型的方法和系统具体可以包括如下步骤:

不同加密算法加密后输出的密文,其密文随机分布特征是不一样的。密文也可以视为一段自然语言文本,通过不同加密算法加密后输出的密文,就像不同种的语言一样,基于这种思想,可以利用深度学习中的gru神经网络提取密文特征,从而识别加密算法。

步骤一:利用爬虫技术从网络上爬取各个信息安全论坛上的相关明文密码数据,并对数据进行预处理。

基于python语言的scrapy框架,编写爬虫程序,通过正则表达式匹配关键字为“常见密码”,或各大信息安全论坛如“密码设置为:”几个字的相关的报表或带有数字、符号、字母的信息。

接着对其中的数据进行数据清洗或预处理。从网络中爬取得到的数据一般都有缺陷,或是有空值或是数据出现错误,不能直接利用这些数据。此时可利用python中的pandas库对数据进行数据清洗,得到正确的数据。例如:步骤一中得到的某个数据表格中,拥有1200项数据,其中6个为空值,若直接进行加密处理,则会导致原本不是密码原文的内容也会变加密为密码,造成输出密文和原始数据的不对应,因此利用pandas进行空值填充,在这6个空值处都填入nan值。在进行密码加密运算时,就能提取出里面的空值,进行特殊的处理。

步骤二:利用加密算法对数据加密,获取采用不同种类的加密算法后,得到的密文集合。

openssl是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份,这个库中也包含加密库。选取openssl开源加密库中的加密算法作为标准加密算法,从中分别挑选不同种类的加密算法对步骤一中得到的数据进行加密,将这些密文按照加密算法的种类进行储存,得到不同的加密算法输出密文集合。选取密文位数差距小于预设阈值例如64位的内容作为有价值的训练数据。避免有些密文过长,有些过短。如果有多种类别的加密算法,则进行多种加密和存储。

例如:对于“今日收入1000元”这段数据,经过md5加密后得到密文是“8ff695b12a854ed9da69ce82f5c948d2“,经过sah1加密后得到密文是“b3ff0a58f4a88fe9549fd319d09f353d51f2462e”,经过aes加密后得到是密文“vkxv+pltxvvs7qhtv/cwyjakbwsxljs1l/1/3hemn+q=”,将加密后的密文分别存储到名为“md5”,“sah1“,“aes”的txt文件中。其他种类的加密算法以此类推。

步骤三:将标签进行编码,并构建加密算法种类识别模型,并进行训练。

对步骤二中得到的密文集合进行加密算法种类的编码,进行标注,得到标签集合,构建基于gru神经网络的加密算法种类识别模型,其中加入dropout层和正则化。gru神经网络模型是lstm神经网络模型的变种,也是循环神经网络的一种,它比lstm少一个门函数,只有更新门和重置门,因此在参数的数量上要少于lstm,整体训练速度也要快于lstm。加入dropout层和正则化为了避免神经网络模型过拟合,造成只对训练集分类准确率高的结果。

例如:按照映射表{“md5“:0,”sah1“:1,”aes“:2}对加密算法种类进行编码,得到的编码表{0,1,2}作为标签,构建堆叠层数为64的gru层,无偏置量,接着是一个dropout层,并在输出的dense层加入l1正则化参数(0.01)。

步骤四:训练加密算法种类识别模型,得到识别结果。

将步骤二中得到的密文集合分为训练集、验证集和测试集,测试集和验证集与步骤三中得到的标签集合输入步骤三构建的gru神经网络模型中,得到对于密文集合的加密算法种类识别结果。其中,验证集是为了防止加密算法种类识别模型过拟合和更好的调整模型的超参数设置的。

例如:现有“md5”,“sah1“,“aes”的密文集合各3000万个txt文件,将它们按照5:2:3的比例分为训练集、验证集和测试集,将训练集和验证集输入加密算法种类识别模型中训练100个epochs,设置callbacks回调参数功能为当训练集误差降低而验证集误差增加时停止训练。当训练75个epochs后,模型自动停止训练。通过测试集进行测试,看看是否能够正确分类几种算法,判断哪些特征的密码算法是被识别错误的。

步骤五,对错误的分类进行再次优化。

首先,抽取错误分类的数据特,根据其对称特征性,进行分组。所述分组方法包括,通过n-gram算法对密码进行多元切分。分析是否存在相同的n-gram片段,并记录片段的位置。将不同的n-gram片段进行分开,根据分开的内容分组。

其中,n-gram算法能够将重复出现的小段字符串进行自动识别和抽取,例如md5加密后得到密文是“8ff695b12a854ed9da69ce82f5c948d2“,其中69这个二元的片段出现了两次。同样的,有些三元、四元的字符串也会经常相似出现。

步骤六,隐藏部分非n-gram的字符串信息片段,提升总体的n-gram特征。密码类型之所以无法被正确识别,很大原因是找不到该密码串的特征,而n-gram是重复性的,更加容易被判别的特征。隐藏部分非n-gram特征有利于提升n-gram的权重。其中隐藏方式是,将两个n-gram特征的中间部分数据做隐藏,当隐藏的部分中包含有其他n-gram串时,则不作隐藏。当n-gram中间隔的字符串大于预设的长度时,也不作隐藏。其他情况则进行数据隐藏以提升特征权重。

步骤七,对分类后的错误数据进行再次测试,获得新的特征和分类结果。

对本来分类错误的数据集,经过n-gram处理后,再次采用模型进行分类测试,经过算法的改进后,特征得到凸显,有新的分类测试结果,并且有一些可以被正确分类了。例如由原来总体正确率87.91%,总正确率达到88.82%时,则认为模型有所提升。如果发现并没有正确率上的提升,则变化n-gram的元数,如果发现并没有正确率上的提升,则变化n-gram的元组数,从提取二元组变成三元组,使特征更加凸显;或者,改变隐藏的片段位置,只将两个元组最中间的n个字符串进行隐藏而不是全部隐藏,以此提升n-gram周边元素的特征值。避免了有数据特征的关联信息被删除。

步骤八:利用selenium测试工具在网络的在线加密网站中将特定文本进行加密,然后将加密得到的密文输入加密算法种类识别模型进行识别,进行更大规模的自动化测试,将测试结果进行调整。这样有利于在特征调整的过程中,能够得到大规模的数据,并获得最优的参数步骤。

selenium是一个用于web应用程序测试的工具,它直接运行在浏览器中,就像真正的人类在操作一样。利用这个软件,我们可以将特定文本直接在加密网站中进行网页端的加密,并获得加密后的密文,将加密后的密文输入加密算法种类识别模型中进行识别,若识别结果不是正确的加密算法,则将这段密文加入对应的密文集合中,对该模型重新进行训练。

例如:利用selenium在在线加密网站chahuo.com上对信息安全网站上的明文密码信息进行md5加密,每次加密字数不超过10字,得到一个密文集合,将这个密文集合输入加密算法种类识别模型中进行识别,得到识别的种类为md5的识别正确率81.27%,sah1是54.29%,aes算法的是65.44%,于是将识别错误的种类最多的,专门对其进行重新输入和调整n-gram特征隐藏的元组数,使加密算法在该种类识别模型中进行针对性优化训练。使错误率高的算法能够得到更大的提升。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1