一种基于改进随机森林算法的分组密码体制识别方法

文档序号:651936 发布日期:2021-04-23 浏览:22次 >En<

阅读说明:本技术 一种基于改进随机森林算法的分组密码体制识别方法 (Block cipher system identification method based on improved random forest algorithm ) 是由 袁科 黄雅冰 李家保 周素芳 杜展飞 张文超 戴琦 于 2020-12-04 设计创作,主要内容包括:本发明提供一种基于改进随机森林算法的分组密码体制识别方法。该方法包括:基于随机性检测方法对已知对应密码体制的一组密文文件F-1,F-2,...,F-n的内容进行密文特征提取,得到一组特征集其中任一密文特征均是维数为d的向量,i=1,2,...,n;根据所述特征集Fea~F构建一组基分类器,通过对每个基分类器预测进行投票以进行分类,得到随机森林模型,然后利用随机森林模型学习到的树构造新特征集;对新特征集中的特征进行one-hot编码;采用逻辑回归算法对编码后的新特征集进行分类训练,得到训练好的分类模型;基于随机性检测方法对待识别密文文件FT-1,FT-2,...,FT-s的内容进行特征提取,得到特征集将特征集输入到训练好的分类模型中,输出待识别密文的密码体制标签。(The invention provides a block cipher system identification method based on an improved random forest algorithm. The method comprises the following steps: a group of ciphertext files F of a known corresponding cryptosystem based on a randomness detection method 1 ,F 2 ,...,F n The content is subjected to ciphertext feature extraction to obtain a group of feature sets Any of the ciphertext features Are vectors of dimension d, i ═ 1, 2.., n; according to the feature set Fea F Constructing a group of base classifiers, classifying by voting for prediction of each base classifier to obtain a random forest model, and constructing a new feature set by using a tree learned by the random forest model(ii) a One-hot coding is carried out on the characteristics in the new characteristic set; carrying out classification training on the encoded new feature set by adopting a logistic regression algorithm to obtain a trained classification model; ciphertext file FT to be identified based on randomness detection method 1 ,FT 2 ,...,FT s The content is subjected to feature extraction to obtain a feature set Set of features And inputting the ciphertext into the trained classification model, and outputting the cryptosystem label of the ciphertext to be recognized.)

一种基于改进随机森林算法的分组密码体制识别方法

技术领域

本发明涉及密码体制识别技术领域,尤其涉及一种唯密文场景下基于改进随机森林算法的分组密码体制识别方法。

背景技术

随着密码算法的广泛应用,密码体制的安全性备受关注。密码研究学者和网络安全研究人员也都对现有的密码体系进行了更深入地研究。但现有的大多数密码分析技术均是在假设密文所属密码体制已知的条件下展开相关的分析工作。但在实际情况中面对所得到的密文数据,研究者通常并不知道其所属的加密算法,且当前各类加密算法层出不穷,为了针对性地制定出密文数据分析的解决方案,识别密文所属的密码体制成为密文数据分析者面临的首要任务。因此开展密码体制识别研究具有重要的理论意义和实际应用价值。

机器学习是开展密码体制识别的重要方法之一。2016年,Tan和Ji提出一种基于SVM的密码体制识别方案,对五种常见的分组密码算法进行识别,分别为AES、Blowfish、3DES、RC5和DES。对这五种算法在四种不同的情况下进行实验,即训练和测试密文的密钥是否相同,在此基础上,用其他四种加密算法与AES进行一一识别,当模型训练阶段和测试阶段所使用的加密密钥相同时,识别率较高。2017年,黄良韬等人提出基于随机森林的密码体制分层识别方案,并介绍了三种簇分方式:CM-簇分、CSN-簇分和CSBP-簇分。结果表明,加入分层的识别方案较单分的密码体制识别效果更佳。2018年,Tan等人提出基于CBC模式的密码体制识别方案。该方案用五种算法进行多类识别和一对一识别,在此基础上考虑了训练和测试时使用的密钥及初始向量是否相同的情况。2019年,赵志诚等人(“赵志诚,赵亚群,刘凤梅.基于随机性测试的分组密码体制识别方案[J].密码学报,2019,6(2):177-190.”)采用随机性测试进行密文特征提取,提出了基于随机森林的识别方案。该方案中对六种分组密码进行两两识别,在不同的特征下其识别率各有差异,部分特征下其识别率能达到80%以上。

虽然越来越多的研究者将机器学习方法应用到密码体制识别领域,但目前的研究仅仅是模式化地把密码体制识别任务套入机器学习分类任务的框架,忽略了密码体制和密文的特殊性,所以需要从密文特征提取和单分识别两个部分考虑。然而,目前大部分研究仍仅从密文特征提取部分展开,如上述提到的“基于随机性测试的分组密码体制识别方案”就是如此,这样就导致密码体制识别的准确率有待提高。

发明内容

针对传统的密码体制识别方法因仅考虑密文特征提取而忽略了密码体制和密文特殊性造成识别准确率低的问题,本发明提供一种基于改进随机森林算法的分组密码体制识别方法。

本发明提供一种基于改进随机森林算法的分组密码体制识别方法,包括:

步骤1、基于随机性检测方法对已知对应密码体制的一组密文文件F1,F2,...,Fn的内容进行密文特征提取,得到一组特征集其中任一密文特征均是维数为d的向量,i=1,2,...,n,d为特征维数;

步骤2、根据所述特征集FeaF构建一组基分类器,通过对每个基分类器的预测进行投票以进行分类,得到随机森林模型,然后利用随机森林模型学习到的树构造新特征集;

步骤3、对所述新特征集中的特征进行one-hot编码;

步骤4、采用逻辑回归算法对编码后的新特征集进行分类训练,得到训练好的分类模型;

步骤5、基于随机性检测方法对待识别密文文件FT1,FT2,...,FTs的内容进行特征提取,得到特征集将特征集 输入到训练好的分类模型中,输出的识别结果即为所述待识别密文的密码体制标签。

进一步地,待识别密文文件的分组密码体制包括AES、3DES、Blowfish、CAST和RC2中的至少一种。

进一步地,将所述特征集中的密文特征表示为如公式(1)所示的四元组:

fea=(C,orga,NIST,d), (1)

其中,C为密文数据的表示方式,NIST=(nist1,nist2,...,nist15)为SP 800-22标准中的15种随机性测试程序,orga为nistt要求的密文数据组织形式,t=1,2,3,...,15。

进一步地,所述步骤2包括:

步骤2.1:将步骤1中的n个密文文件的密码体制标签形成一个n维向量Lab=(lab11,lab2,...,labn),记由FeaF和Lab组成的二元组为原始数据集T;

步骤2.2:设定随机森林中树的数量为k,并将原始数据集T作为输入;其中,每个密文文件的密文特征表示一个样本;

步骤2.3:采用有放回取样,随机在原始数据集T中抽取M个样本,形成Bootstrap样本集T*

步骤2.4:在Bootstrap样本集T*中随机地从d个特征中选取m个属性作为候选属性,并计算最佳分裂属性;

步骤2.5:基于最佳分裂属性的每种取值类型,对本次放回抽样所产生的样本集T*进行水平分割得到数据集P1,P2,...,Pj

步骤2.6:对数据集P1,P2,...,Pj中的每个子数据集,随机选取m个属性,并从中选取最佳分裂属性,然后再次水平分割当前子数据集;

步骤2.7:重复步骤2.3至步骤2.6以建立k棵决策树,构建得到随机森林模型,进而利用所述随机森林模型得到分类数据集D(R(P1),R(P2),...,R(Pj));

步骤2.8:根据特征的重要性对所述分类数据集D(R(P1),R(P2),...,R(Pj))中的特征进行排序,并筛选出重要性强的特征组成新特征集F(P1,P2,...,Pj)。

本发明的有益效果:

相较于传统的分类算法模型,随机森林集成学习模型虽然在很大程度上提高了分类精度,而且具有较强的稳定性,但在某些噪音比较大的样本集上容易陷入过拟合,此外取值划分比较多的特征容易对随机森林的决策产生更大的影响,从而影响拟合模型的效果。本发明通过使用逻辑回归对随机森林分类器进行改进,先用原始特征训练随机森林模型,然后利用随机森林模型学习到的树来构造新特征,再将新特征做one-hot编码,最后把这些新特征加入原有特征一起训练分类模型,从而可以解决随机森林在某些噪音比较大的样本集上容易陷入过拟合的问题。

并且,相比于传统的密码体制识别方法,本发明通过混合随机森林和逻辑回归算法,其二分类的识别精度最高可达到77.8%,五分类精度为38%,高于单一随机森林分类器的58%和28.8%,显著优于二分类50%以及11分类20%的随机猜测正确率。

附图说明

图1为本发明实施例提供的一种基于改进随机森林算法的分组密码体制识别方法的流程示意图;

图2为本发明实施例提供的密文特征间的关系热度图;

图3为本发明实施例提供的八种分类模型对不同文件大小的密文做密码体制识别得到的ROC图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供一种基于改进随机森林算法的分组密码体制识别方法,包括:

S101、基于随机性检测方法对已知对应密码体制的一组密文文件F1,F2,...,Fn的内容进行密文特征提取,得到一组特征集其中任一密文特征均是维数为d的向量,i=1,2,...,n,d为特征维数;

具体地,将所述特征集中的密文特征表示为如公式(1)所示的四元组:

fea=(C,orga,NIST,d), (1)

其中,C为密文数据的表示方式,NIST=(nist1,nist2,...,nist15)为SP800-22标准中的15种随机性测试程序,orga为nistt要求的以将密文分块、各块内相同位置再组合、不同类型字符组合为例的密文数据组织形式,t=1,2,3,...,15。

作为一种可实施方式,本发明实施例在由python编写的开源工具sp80022tests-master基础上进行改进以实现密文特征提取。主程序负责从磁盘读取密文文件,每种随机性测试程序被封装成一个子模块,各子模块间相互独立,互不干扰,在做特征提取时各模块并行执行。基于上述方法选择有意义的10种随机性检测开展密文特征提取,得到10组返回值。

其中,15种不同的随机性测试程序具体为:

(1)频率测试:测试的重点是整个序列中0和1的比例。此测试的目的是确定一个序列中的1和0的数量是否与真实随机序列的预期数量大致相同。测试的目的是评估1在序列中的占比与1/2的接近程度,即,一个序列中的1和0的数量应该大致相同。该测试有一个返回值,要求待检测序列的长度不小于100。

(2)块内频数检验:测试的重点是M比特块中0和1的比例。测试的目的是确定一个M位块的频率是否约为M/2。该测试有一个返回值,要求待测序列长度不小于100,分组比特长度至少为20且分组比特长度大于二元序列比特长度的1%。

(3)游程测试:测试的重点是待检测序列中0游程和1游程的总数。长度为k的游程由k个相同的二进制单位组成,游程检验展示了二元序列中0游程和1游程之间的距离(即振幅)与真随机序列相比是否太大或太小。运行测试的目的是确定各种长度的1和0的运行次数是否符合随机序列的预期。该测试有一个返回值,要求待测序列长度不小于100。

(4)块内最长游程检验:测试的重点是M位块中最长的运行时间。该测试的目的是确定被测序列中最长序列的长度与随机序列中预期的最长序列的长度是否一致。该测试返回1个值,要求待检测序列长度最少为128。

(5)随机二进制矩阵秩检验:测试的重点是整个序列的不相交子矩阵的等级。该测试的目的是检查原始序列的固定长度子串之间的线性相关性。该测试返回1个值,要求待检测序列长度n>M×N,其中M和N分别为矩阵的行列数(NIST默认M=N=32)

(6)离散傅立叶变换(频谱)测试:该测试的重点是离散快速傅立叶变换中的峰值数目。该测试的目的是检测被测序列中的周期性特征(即彼此接近的重复模式),这些特征将指示与随机性假设的偏差。该测试返回1个值,要求待检测序列长度最少为1000。

(7)非重叠(非周期性)模板匹配测试:该测试的重点是待测序列中预定义目标子序列的出现次数。该测试的目的是拒绝显示给定的非周期性(非周期性)模式出现过多的序列。该测试对待测序列未给出明确规定。

(8)重叠(定期)模板匹配测试:该测试与非重叠模板匹配检测相似,重点是待测序列中预定义目标子序列的出现次数,其目的也是检测待测试序列中匹配预设模板的次数是否符合随机性的要求。不同之处在于,该测试不论当前子块是否与模板匹配,检测窗口都只向前移动一个比特。测试返回1个值,要求待检测序列长度不小于106

(9)Maurer通用检验:该测试的重点是匹配模式之间的位数。该测试的目的是检测序列是否可以显著压缩而不会丢失信息,过度压缩的序列被认为是非随机的。该测试返回1个值,要求待检测序列长度大于等于387840。

(10)线性复杂度测试:该测试的重点是生成反馈寄存器的长度。该测试的目的是确定序列是否足够复杂以至于不能认为是随机的。该测试返回1个值,要求待检测序列长度至少为106,且子序列长度在500到5000范围内。

(11)重叠子序列测试:该测试的重点是整个序列中每个重叠的m位模式的频率。该测试的目的是检测序列中所有m位组合子串出现的次数是否与真随机序列中的情况近似相同,如果是则序列符合随机性要求。该测试返回1个值,要求待检测序列长度小于

(12)近似熵检验:此测试的重点是每个重叠的m位模式的频率。该测试的目的是将两个长度分别为m位与(m-1)位的重叠块的频率与随机序列的预期结果进行比较。该测试返回1个值,要求待检测序列长度小于

(13)累积总和(Cusum)测试:该测试的重点是由序列中调整后的(-1,+1)位数字的累加和所定义的随机游动的最大偏移(从零开始)。该测试的目的是检测序列中的部分和是否太大或太小,太大或太小均被认为是非随机的。该测试返回2个值。该测试要求待检测序列长度至少为100。

(14)随机游动检验:该测试的重点是在累积总和随机游动中恰好有K次访问的周期数。该测试的目的是确定对随机游走状态的访问次数是否超过对随机序列的访问次数。该测试返回8个值,要求待检测序列长度大于等于106

(15)随机游动状态频数检验:该测试的重点是特定状态在累积总和随机游动中发生的次数。该测试的目的是检测与随机游走中各种状态的预期出现次数之间的偏差。该测试返回8个值,要求待检测序列长度大于等于106

S102、根据所述特征集构建一组基分类器,通过对每个基分类器的预测进行投票以进行分类,得到随机森林模型,然后利用随机森林模型学习到的树构造新特征集;

S103、对所述新特征集中的特征进行one-hot编码;

S104、采用逻辑回归算法对编码后的新特征集进行分类训练,得到训练好的分类模型;

S105、基于随机性检测方法对待识别密文文件FT1,FT2,...,FTs的内容进行特征提取,得到特征集将特征集 输入到训练好的分类模型中,输出的识别结果即为所述待识别密文的密码体制标签。

具体地,待识别的密文文件的分组密码体制包括AES、3DES、Blowfish、CAST和RC2中的至少一种。

相较于传统的分类算法模型,随机森林集成学习模型虽然很大程度上提高了分类精度,而且具有较强的稳定性,但在某些噪音较大的样本集上容易陷入过拟合,此外取值划分比较多的特征容易对随机森林的决策产生更大的影响,从而影响拟合模型的效果。本发明实施例通过使用逻辑回归对随机森林分类器进行改进,先用原始特征训练随机森林模型,然后利用随机森林模型学习而得的树来构造新特征,再将新特征进行one-hot编码,最后把这些新特征加入原有特征一起训练分类模型,从而可以解决随机森林在某些噪音比较大的样本集上容易陷入过拟合的问题。

在上述实施例的基础上,本发明实施例对上述的步骤S102进一步优化,具体包括:

S1021:将步骤S101中的n个密文文件的密码体制标签形成一个n维向量Lab=(lab1,lab2,...,labn),记由FeaF和Lab组成的二元组为原始数据集T;

S1022:设定随机森林中树的数量为k,并将原始数据集T作为输入;其中,每个密文文件的密文特征表示一个样本;

S1023:采用有放回取样,随机在原始数据集T中抽取M个样本,形成Bootstrap样本集T*,将Bootstrap样本集T*作为决策树根节点处的样本;

S1024:在Bootstrap样本集T*中随机地从d个特征中选取m个属性作为候选属性,并计算最佳分裂属性;

S1025:基于最佳分裂属性的每种取值类型,对本次放回抽样所产生的样本集T*进行水平分割得到数据集P1,P2,...,Pj

S1026:对数据集P1,P2,...,Pj中的每个子数据集,随机选取m个属性,并从中选取最佳分裂属性,然后再次水平分割当前子数据集;

S1027:重复步骤S1023至步骤S1026以建立k棵决策树,构建得到随机森林模型,进而利用所述随机森林模型得到分类数据集D(R(P1),R(P2),...,R(Pj));

S1028:根据特征的重要性对所述分类数据集D(R(P1),R(P2),...,R(Pj))中的特征进行排序,并筛选出重要性强的特征组成新特征集F(P1,P2...,Pj)

具体地,随机森林的基本单元是决策树,分类器构建多个决策树,并将其进行整合以获得最佳的决策结果。对于树模型的集成学习,主要采用bootstrap、aggregating或bagging。当输入待分类样本时,随机森林输出的分类结果由每个决策树的分类结果进行多数投票决定,每棵决策树并行处理且不需要剪枝。因此其速度不慢于普通的CART决策树,适用于密码体制识别中的分类任务。

本发明采用改进随机森林算法构造分类器,并以提取到的各类密文特征数据作为分类器的输入,经分类模型的训练与测试,最终完成对密码体制的识别任务。

为了验证本发明提供的基于改进随机森林算法的分组密码体制识别方法的有效性,提供以下验证实验。

(一)数据准备

本发明实验选择以由python的Crypto密码算法库进行加密。实验所用到的明文是由Python的Crypto加密模块,使用FortunaAccumulator方法生成的随机数据。明文大小包括1kb、8kb、64kb、256kb和512kb,共500个文件。加密密钥和初始化向量使用Crypto的Cipher加密模块生成,密文使用AES、3DES、Blowfish、CAST和RC2这5种分组密码体制的ECB模式加密。实验过程中,每种密码算法加密的密文样本量均为500份。使用本发明中介绍的密文特征提取方法,计算所有密文的特征值,每个密文样本对应一组特征,将这些数值保存下来。对实验数据(即对密文文件提取特征所得到的数据,如表1所示)进行重复随机子抽样验证,随机抽样80%作为训练集,其余20%作为测试集。如图2所示,为随机性检测提取到的密文特征之间的关系热度图,从该热度图可以看出随机性检测提取到的密文特征之间相关性较低,各特征相互独立。以十折重复随机子抽样验证测试集识别的平均准确率作为识别效果的度量。对5种分组密码体制的二分类与五分类分别进行了分类实验。表2为进行密文数据采集的5种分组密码体制的具体参数列表。

表1根据特征的重要性降序排列选出的10组特征

序号 特征 重要性
(1) revt 0.13801613
(2) runs 0.13581399
(3) aet 0.10710113
(4) dft 0.1029428
(5) ft 0.10193625
(6) lrobt 0.09278933
(7) ret 0.08530066
(8) fwbt 0.08430448
(9) st 0.07669906
(10) cust 0.07509615

表2 5种分组密码体制的具体参数列表

标记 结构 密钥 工作模式 参数规模 实现方式
AES SP 选定 ECB 固定参数 Crypto
3DES Feistel 选定 ECB 固定参数 Crypto
Blowfish Feistel 选定 ECB 固定参数 Crypto
CAST Feistel 选定 ECB 固定参数 Crypto
RC2 Feistel 选定 ECB 固定参数 Crypto

(二)分类结果评价标准

在本发明所研究的密码体制识别任务中,注重的是分类器对所有密码体制识别的准确率,本发明以查准率/查全率和F1作为评价分类器性能的标准。

查准率/查全率和F1,利用混淆矩阵对模型进行评价,其目的是通过显示每个加密算法的正确分类数和预测分类数来获得分类模型的有效度量。混淆矩阵总共产生四种结果如表3所示,TP(真正例)、TN(真反例)、FP(假正例)和FN(假反例)。

表3分类混淆矩阵

Sensitivity、Specificity及精度分别定义为:

为了平衡查准率和查全率,可以使用F1分数评价分类器的性能

(三)实验结果

表4密文特征二分类识别结果

基于十折重复随机子抽样验证使用支持向量机(Support Vector Machine,简称SVM)、高斯朴素贝叶斯(Gaussian Naive Bayes,简称GNB)、随机森林(LogisticRegression,简称RF)、逻辑回归(Logistic Regression,简称LR)、决策树(Decision Tree,简称DT)、K最近邻(k-Nearest Neighbor,简称KNN)、AdaBoost及本发明方法(简称HRFLR)对AES和3DES加密的密文文件做二分类的测试结果如表4所示。

四种分类评价指标中,Accuracy表示十折重复随机子抽样验证测试集识别的平均准确率,precision为测试集识别精度,recall为测试集的召回率,f1-score为测试集的F1得分。从表4可以看出,在AES与3DES两密码体制加密得到文件大小不同的密文文件二分类问题上,SVM分类模型的准确率平均值为0.552,GNB分类模型的准确率平均值为0.556,RF分类模型的准确率平均值为0.536,LR分类模型的准确率平均值为0.516,DT分类模型的准确率平均值为0.552,KNN分类模型的准确率平均值为0.492,Adaboost分类模型的准确率平均值为0.512,HRFLR分类模型的准确率平均值为0.712。此外,HRFLR模型的识别准确率受密文大小影响,在大小为512kb的密文文件上准确率最高,但其对密文文件的识别率均不低于70%。

图3为实验中使用的八种分类模型在AES和3DES密码体制识别中的接受者操作特性曲线(Receiver Operating Characteristic curve,简称ROC)。如图3所示,在二分类问题上,由于密文文件大小不同,不同分类模型表现不同。如图3中(a)所示,在密文文件大小1kb的密码体制分类任务中除HRFLR外,其余分类模型的AUC(Area UnderCharacteristic)值均低于0.5;如图3中(b)所示,在密文文件大小8kb的密码体制分类任务中除HRFLR和GNB模型外,其余模型的AUC值低于0.5;如图3中(c)所示,在密文文件大小256kb的密码体制分类任务中除HRFLR和DT模型外,其余模型的AUC值低于0.5;分别如图3中(d)、(e)所示,在64kb、512kb的密码体制分类任务中,八种模型AUC值均高于0.5。除此之外,HRFLR模型在五种不同文件大小的密码体制识别任务中均有意义(AUC>0.5)且AUC值最高;

基于十折重复随机子抽样验证使用支持向量机(Support Vector Machine,简称SVM)、高斯朴素贝叶斯(Gaussian Naive Bayes,简称GNB)、随机森林(LogisticRegression,简称RF)、逻辑回归(Logistic Regression,简称LR)、决策树(Decision Tree,简称DT)、K最近邻(k-Nearest Neighbor,简称KNN)、AdaBoost及本发明方法对AES、3DES、Blowfish、CAST和RC2共五种加密算法的密文文件做五分类的测试结果如表5所示。

表5密文特征五分类识别结果

从表5可以看出,在AES、3DES、Blowfish、CAST和RC2五种密码体制五分类问题上,HRFLR模型的识别准确率受密文大小影响,但其对密文文件的识别率均不低于30%,在大小为1kb的密文文件上精度最高,达到38%。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于区块链技术的数字产品安全交易系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!