基于随机森林的协议加密算法类型识别方法与流程

文档序号:18451203发布日期:2019-08-17 01:16阅读:605来源:国知局
基于随机森林的协议加密算法类型识别方法与流程

本发明属于网络信息安全领域,涉及一种对互联网上存在应用层加密的加密算法类型识别的方法。



背景技术:

近年移动终端的逐渐普及和网络的蓬勃发展催生了新型互联网结构的诞生,促进了网络流量的增长。在如此庞大的网络背后,对网络流量的有效监管是网络安全保护的基石。用户在网络应用上保存了大量隐私信息,尤其是在网上支付、社交网络等应用上,这些信息若被恶意流量或应用泄露,将会对用户个人信息安全造成极大威胁,故对于用户信息的保密尤为重要,现今许多互联网流量都对上层数据进行了加密。但是对于网络监管来说,必须要对各个应用进行规范和督查,因此,对于线上加密流量的分析尤为重要。

用户主要产生的流量大致来源于分享音乐、视频等文件,浏览网络上的网页,收发电子邮件,社交中的聊天、视频等操作,网上购物等。网页、邮件内容主要是通过http、https、smtp、pop3协议进行传输,其中https、ssh协议涉及到加密流量的传输,用以保证用户信息的安全传输。

许多流量都采用了加密应用数据的方法来保证用户信息在链路传输时的安全性,例如skype、http、ssh等。对于加密应用数据来说,对该部分数据文本特征进行分析,与一定的算法相结合,可以识别出密文的具体加密算法。对于加密数据的研究现在也逐渐引入了机器学习算法。alshammari等使用了聚类方法来识别voip流量,改变以往基于ip地址、端口的方式,采用流特征的方式较好的识别了gtalk、skype流量,引入了c4.5决策树、遗传编程等算法,在着重分析了加密流量的属性特征基础上,实现了对加密流量的有效分类。对于加密的ssh协议,dusi等使用了gmm算法、svm算法,以数据流的包大小、方向为特征对协议流量进行识别,并取得了较好的成果。李继中等将基于贝叶斯决策与加密算法的识别模型相结合,针对密码算法指令条数、子程序指令使用频度和基本连续块信息频度等方式来实现加密算法的度量,针对加密软件md5calculator、keygen等,成功的识别出了上述加密软件中的核心加密算法。吴杨等使用改进型k-means算法对由aes、camellia、des、3des等加密算法加密的文件内容进行初始聚类划分,最终识别的精确率超过85%,取得了较好的实验成果。

将机器学习的算法思想与加密算法识别相结合有着一定的优势:首先,以数据流为单位的特征无法被隐藏,即使通过加密,也能通过对数据流进行一定的辨别和归类;其次,统计特征是对整体数据流进行分析得到的,不需要对所有数据包逐个进行深层包处理和高层应用协议识别,可以加快协议的识别效率。



技术实现要素:

本发明的目的是提供一种基于随机森林的协议加密算法类型识别方法,该方法可以对互联网上的加密应用数据进行初步的分析,分析其加密算法类型。

本发明的目的是通过以下技术方案实现的:

一种基于随机森林的协议加密算法类型识别方法,包括如下步骤:

步骤一、训练阶段:

(1)从https数据流中提取加密应用数据,分析提取密文特性并构建特征,组成具有m维的特征f={f1,f2,...,fm},m=11,通过该方式将原始数据处理为可以被随机森林识别的数据集,数据集包括训练集和测试集两个部分;

(2)将训练集输入到包含10棵c4.5决策树的随机森林中,每棵决策树使用自助采样法选取训练子集t′,自助抽样法的使用会随机从训练集中抽出一部分子集,从而针对每一棵子树训练出不同的决策树;

(3)每棵决策树在训练时,随机丢弃部分特征维度,使用剩下的特征f′进行信息增益比的判断,直到每个结点上的样本个数小于阈值;

(4)当所有决策树训练完毕后,选择结点上占比最大的加密类型作为该结点的加密类型,其中:决策树训练完毕的标志为每棵树的节点在样本点纯度上都达到给定的要求;

步骤二、测试阶段:

(1)由于测试集中存在多种不同类型的协议,而本方法针对https协议进行进行分析,故将测试集按照不同协议类型分开,针对其中的https协议,作为随机森林测试集;

(2)将测试集的样本数据输入到使用https协议应用密文训练的随机森林模型中;

(3)随机森林中的每棵决策树给出分类结果,依据相对多数投票法则选出最终的分类结果。

相比于现有技术,本发明具有如下优点:

本发明针对流量应用数据所使用的加密算法类型的识别,提出了基于随机森林的算法模型。若直接对所有网络数据进行加密算法类型识别,由于非加密应用数据的存在,不仅影响识别效果的准确性,也会因为处理了太多的无关数据影响到算法的执行效率。因此,本发明提出的加密算法类型识别模型建立于对各类协议初步分类的基础之上,在不同的协议类别中针对其中进行了应用数据加密的协议类别,依据协议流特性对其密文进行特征构建,建立随机森林算法模型对不同的加密算法进行分类。分类方法建立在聚类算法的基础上,规避了未加密的应用数据,既减少了算法处理的数据量,也可以得到更好的识别结果。

附图说明

图1是html文本图。

图2是随机森林算法流程图。

图3是本发明整体算法流程图。

具体实施方式

下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。

本发明第一步将对应用密文进行分析和处理,通过对不同密文的分析,可以得知密文由乱码字符、字母、数字组成,对于使用不同加密算法创建的密文,密码文本中的乱码、字母、数字等字符分布存在着一定差异。本发明主要针对https协议的应用数据进行密文分析。http中传输的数据使用ascii码表示,文件中大部分字符为字母,少部分为数字和换行符等控制字符。html文本如图1所示。

除了对密文各类数字、字母、非ascii码字符出现的频率分析之外,本发明增加随机性检测方案的分析方法。分析方法如下:

码元频数检测是以二进制方式读取ascii编码类型的密文流,对于二进制密文序列中的0、1的出现频率进行检测,计算时首先将密文流e={e1,e2,...,en}进行变换,变换为x={x1,x2,...,xn},变换公式如公式(1)所示:

xi=2ei-1(1)。

进行变换后,对x逐位求和,将每一位的xi值相加,并将结果规格化,计算公式如式(2)所示:

游程检测以二进制读取密文流,针对二进制密文流中连续的0、1位进行检测,主要的判断依据为当前位和后继位是否相等,以r(k)表示第k位和第k+1位是否相等,若相等该值为1,反之为0,计算公式为公式(3)所示:

块内频数检测以二进制读取密文流,用于检测密文流分组内部0和1的出现频率,分组长度的选择与加密算法的分组相同,通常为64比特,计算时首先要将密文流以分组为单位分开,由于加密时就对最后一个不满足分组长度的数据段进行了扩充,所以对于加密数据,其长度一定可整除检测分组。将密文流分为长度为m的n个分组,在每一块分组中,统计比特1出现的比例(mj代表当前位是否为1),计算公式如公式(4)所示:

基于上述公式和经验判断,采用的特征为各种类型字符所占比例,最终将特征定义为表1所展示的特征。

表1

不同加密算法在某部分较为接近,这是由于加密过程中一般遵循了扩散和混乱的原则。但如果加密数据完全遵循随机原则,那么对于密文的解密将无从下手,故加密的密文仍是“有规律”、“可逆转”的扩散和混乱,本发明的分析要点即为各个数据之间的不同之处,在不同之处上构建特性,以此区分不同密文。

在进行了特征构建之后,即可将原始数据处理得到数据集,在数据集中的样本点特征的最后一个维度上添加该应用数据的具体加密类型,对于https来说,其会话中使用的加密算法可以通过对流进行分析得到。经过上述处理,密文训练集构建完毕。

在进行了特征工程后,需要在https协议中抽取不同数量的训练集和测试集,由于在https类别中包含着一些http流,而http流的应用数据是未进行加密的,分类的结果中需要对未加密的数据视为一类,即拟定的类别数量为测试的加密算法类型的数量加1。

随机森林的核心思想是集成学习,将多棵决策树聚合到一起进行分类,决策树是随机森林的组成单位。随机森林的每个单位都是一个分类器,那么对于任意一个输入的样本而言,不同的决策树可能会输出不同的分类结果,而随机森林则将所有决策树的结果集成到一起,将投票次数最多的类别指定为最后的输出。

基于自助采样法进行采样,可得到多个有部分样本点重复的训练子集,利用不同的训练子集对随机森林中的决策树进行训练,最终使用相对多数投票的方式对不同决策树给出的结果进行决策。不同于传统决策树,随机森林中的决策树可以不使用全部特征维度,一般选择k种维度中的d种维度组成新的特征,在该特征的不同维度中寻找划分维度用于分裂。当d和k相等时,随机森林内部训练的树均和传统的决策树相同。一般可以使用如下公式(5)确定d值:

d=log2k(5)。

若训练集t={t1,t2,...,tn}拥有n个样本,每个样本为ti,特征f={f1,f2,...,fm}有m维特征,每一维用fi表示,类别集合c={c1,c2,...,cl}有l种类别,每个类别用ci表示,测试集d={d1,d2,...,dλ}有λ个测试样本,每个样本用di表示。

则随机森林的算法流程如下所示:

1、在训练集t中,使用自助抽样法的有放回的选择样本,组成训练子集t′;

2、对于训练子集t′,从特征f中抽取m个特征,作为决策树分裂的依据,从根结点起始,自上到下生成决策树;

3、重复多次步骤1、2,得到n个训练子集,训练得到n个决策树,即随机森林训练完毕;

4、测试集中有λ个测试样本,将测试集d的样本之一输入到随机森林中,让每个决策树对样本进行决策,使用相对多数投票法对决策结果进行投票决定样本的类别,相对多数投票法会选择最多的投票结果作为随机森林最终的分类结果,若有多个标记获得最高票,则随机选取一个最高票作为最终结果。

5、重复步骤4λ次,直到所有测试样本分类完毕。

随机森林的建立和决策过程如图2。

随机森林内设置10棵c4.5决策树,每棵决策树通过自助采样法选择数据子集,在m维特征中,随机选择m维度(m<m)。训练过程后为测试过程,将测试集中的每个样本数据输入到随机森林中,对于每棵决策树给出的结果,使用多数投票法决定最后的样本类别。

如图3所示,加密算法识别的主要流程如下:

1、训练阶段:

(1)从https数据流中提取加密应用数据,分析提取密文特性并构建特征,按照表1中所示,组成具有11维的特征f={f1,f2,...,f11};

(2)将具有n个样本点的训练集t={t1,t2,...,tn}输入到随机森林中,随机森林内包含10棵c4.5决策树,每棵决策树使用自助采样法选取训练子集;

(3)训练随机森林,每棵决策树在训练时,随机丢弃部分特征维度,使用剩下的特征f′进行信息增益比的判断,直到每个结点上的样本个数小于阈值;

(4)用结点上占比最大的加密类型作为该结点的加密类型;

(5)随机森林模型训练完毕的标志为内部包含的所有c4.5决策树训练完毕。

2、测试阶段:

(6)将测试集输入到使用https协议应用密文训练的随机森林模型中;

(7)随机森林中的每棵决策树给出分类结果,依据相对多数投票法则选出最终的分类结果。

通过上述流程,即可将https协议中的应用密文的加密算法类型进行识别和分类。将其中使用了aes、3des、rc2等不同加密算法的应用层数据分开。

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