一种基于网络轨迹的安全协议格式的挖掘方法及装置与流程

文档序号:17090305发布日期:2019-03-13 23:22阅读:178来源:国知局
一种基于网络轨迹的安全协议格式的挖掘方法及装置与流程

本发明涉及信息安全技术领域,具体涉及一种基于网络轨迹的安全协议格式的挖掘方法及装置。



背景技术:

安全协议是保障网络空间安全的基石。基于网络轨迹的安全协议格式挖掘方法仅通过捕获安全应用产生的据包,分析出数据包的关键词,分隔符,进而分析未知安全协议的安全性。该方法对于保障通信安全、网络攻防和入侵检测有重大意义。安全协议为处于各种网络环境的不同实体间提供安全服务。人们的生活和工作等各个方面都和网络空间安全密切相关,但是许多证明是安全的安全协议在实施过程中与协议规范不符,会产生安全隐患。通过基于网络轨迹的安全协议关键词挖掘方法,及时发现应用在金融或军事机密等方面存在的安全协议实施存在的隐患,能避免造成重大损失。

目前,人们集中在研究安全协议抽象规范的安全性分析和验证方面,对安全协议实施的安全性不够重视。由于安全协议在实施的过程中难免出现错误或安全漏洞,导致安全协议实施安全性与抽象规范不一致,引入了新的安全问题。软件公司通过未知的安全协议规范开发软件,为了保护软件知识产权,很难获取安全协议客户端和服务器端实施。

现有技术中,关于安全协议格式的挖掘通常采用人工推理与分析的方法。本发明申请人在实施本发明的过程中,发现现有技术中至少存在如下技术问题:安全协议格式推理主要依赖于人工,其工作量大、耗时长、效率低。由此可知,现有技术中的方法存在工作量大、效率低的技术问题。

因而,自动化的基于网络轨迹的安全协议消息格式分析工具对建设网络空间安全有着重大意义。



技术实现要素:

有鉴于此,本发明提供了一种基于网络轨迹的安全协议格式的挖掘方法及装置,用以解决或者至少部分解决现有技术中的方法存在工作量大、效率低的技术问题。

本发明第一方面提供了一种基于网络轨迹的安全协议格式的挖掘方法,包括:消息划分步骤和分隔符分离步骤,

其中,消息划分步骤具体包括:

步骤s1:基于消息轨迹采用最长公共子序列的文本比较算法获得协议关键词元组,基于所述协议关键词元组,采用滑动窗口方法输出关键词分布数组,并基于关键词分布数组获得关键词一阶分布;

步骤s2:根据所述关键词分布数组和关键词一阶分布,判断是否存在极值,如果存在则执行步骤s3,否则执行步骤s4;

步骤s3:根据所述协议关键词元组、关键词分布数组、关键词一阶分布,采用预设关键词统计方法,合并相似关键词,然后将相似关键词输入基于余弦相似度方法中,计算所有协议消息的相似度,选择平均相似度最高的消息作为中心消息,采用中心消息的关键词将消息划分为子消息,输出子消息、关键词的概率及相对位置,并将输出作为步骤s1的输入,直到步骤s2中不存在极值;

分隔符分离步骤具体包括:

步骤s4:采用基于树的字符串比对方法,比较每个关键词的首尾,通过寻找最多遍历路径分离出分隔符。

在一种实现方式中,输入的安全协议消息为<message,mnum>,message为输入的安全协议消息数组,n为消息数组的最大个数,步骤s1具体包括:

步骤s1.1:从n个消息中随机抽取m个消息,m为偶数,求mnum个消息的长度并按照从小到大排列,然后依次两两分组,获得m/2个分组;

步骤s1.2:采用最长公共子序列的文本比较算法对m/2个分组进行比对,得到公共序列,以公共序列中的连续字符为关键词key,计算key到消息头部的绝对位置location、key与绝对位置与消息总长度的比值plocation,并获得协议关键词元组,其中,关键词元组为五元组<num,key,knum,location,plocation>,num为公共字符串编号,key为关键词,knum为公共字符串中关键词key的编号;

步骤s1.3:根据关键词五元组<mnum,key,knum,location,plocation>和滑动窗口法,获得关键词分布数组d[i],其中,d[i]表示相对位置分布落在[i-l,i+l]的key的个数,i为相对位置,l为滑动窗口长度;

步骤s1.4:根据关键词分布数组d[i]和计算公式d[i+1]-d[i]=d1[i],获得一阶关键词分布d1[i]。

在一种实现方式中,步骤s2具体包括:

步骤s2.1:将步骤s1获得的关键词分布数组和关键词一阶分布输入预设判别器,通过一阶分布和极值点判别方法寻找极值点;

步骤s2.2:判断极值点是否满足判别条件,如果不满足,判别器输出false且执行步骤s4,如果满足,判别器输出true,输出极值点分布m[i],并执行步骤s3,其中,m[i]表示相对位置i处存在的极值。

在一种实现方式中,步骤s3具体包括:

步骤s3.1:输入关键词五元组<mnum,key,knum,location,plocation>和极值点分布m[i],通过预设关键词统计方法,统计[t-pl,t+pl]区间内关键词种类及其数量,合并相似的不同类的关键词,最终输出关键词分布五元组<key,knum,krate,t,pl>,其中,t为从pm[i]中取出的极值,pm[i]为从m[i]中取出极值点并转化成的关键词概率分布,pm[i]用以表征在极值点i处不同key的出现概率,pl为以极值t为中心选取的预设长度区间,所述关键词分布五元组表示在区间[t-pl,t+pl]中关键词key的出现次数为knum,出现频率为krate;

步骤s3.2:将关键词分布五元组输入到余弦相似度方法中,两两计算不同消息的相似度,并选择平均相似度最大的消息作为中心消息并输出,然后采用中心消息所包含的关键词对所有消息进行划分,输出子消息,子消息的格式为<key,submessage,smnum>其中,smnum为指向子消息所属的源消息,然后将submessage输入到步骤s1。

在一种实现方式中,步骤s4具体包括:

步骤s4.1:分别从输入的关键词中抽取出关键字前缀和关键字后缀;

步骤s4.2:将抽取出的关键字前缀和关键字后缀输入基于树的字符串比对方法进行两两对比,将路径权值最大的字符串作为输出,将其作为分隔符。

在一种实现方式中,步骤s3.2具体包括:

s3.2.1:输入消息message,关键词集key以及key对应的频率krate;

s3.2.2:对于每一条message对应的四元组,在对应的四元组中搜索关键词集key中的每一个关键词,对一条消息的每个key输出四元组<num,key,knum,krate>,如果key不存在则krate为空;

s3.2.3:对四元组<num,key,knum,krate>采用tf-idf加权法,tf表示词频,idf表示词的权重,df(w)表示含有词w的消息条数,n表示消息总条数,c为常数,值为loge(n+0.01),其中tf=krate,w=key,n=num,并且对于每一个key搜索包含该key的消息的数目df(w);

s3.2.4:根据式(1)计算权重idf,根据式(2)计算词w的权重weight(w);

weight(w)=tf*idf(式2)

s3.2.5:对每条消息,对消息中包的关键词,采用余弦相似度方法,两两计算余弦相似度,然后求出平均余弦相似度,并找出平均余弦相似度最高的消息,并作为中心消息,其中,s和t的相似度的计算公式如式3所示:

其中,s和t表示两条消息的关键词w数组,wi表示权重weight。

基于同样的发明构思,本发明第二方面提供了一种基于网络轨迹的安全协议格式的挖掘装置,包括:消息划分模块和分隔符分离模块,

其中,消息划分模块具体用于执行步骤s1~步骤s3,

步骤s1:基于消息轨迹采用最长公共子序列的文本比较算法获得协议关键词元组,基于所述协议关键词元组,采用滑动窗口方法输出关键词分布数组,并基于关键词分布数组获得关键词一阶分布;

步骤s2:根据所述关键词分布数组和关键词一阶分布,判断是否存在极值,如果存在则执行步骤s3,否则执行步骤s4;

步骤s3:根据所述协议关键词元组、关键词分布数组、关键词一阶分布,采用预设关键词统计方法,合并相似关键词,然后将相似关键词输入基于余弦相似度方法中,计算所有协议消息的相似度,选择平均相似度最高的消息作为中心消息,采用中心消息的关键词将消息划分为子消息,输出子消息、关键词的概率及相对位置,并将输出作为步骤s1的输入,直到步骤s2中不存在极值;

分隔符分离模块具体用于执行步骤s4,

步骤s4:采用基于树的字符串比对方法,比较每个关键词的首尾,通过寻找最多遍历路径分离出分隔符。

在一种实现方式中,输入的安全协议消息为<message,mnum>,message为输入的安全协议消息数组,n为消息数组的最大个数,消息划分模块还用于执行步骤s1.1~s1.4,

步骤s1.1:从n个消息中随机抽取m个消息,m为偶数,求mnum个消息的长度并按照从小到大排列,然后依次两两分组,获得m/2个分组;

步骤s1.2:采用最长公共子序列的文本比较算法对m/2个分组进行比对,得到公共序列,以公共序列中的连续字符为关键词key,计算key到消息头部的绝对位置location、key与绝对位置与消息总长度的比值plocation,并获得协议关键词元组,其中,关键词元组为五元组<num,key,knum,location,plocation>,num为公共字符串编号,key为关键词,knum为公共字符串中关键词key的编号;

步骤s1.3:根据关键词五元组<mnum,key,knum,location,plocation>和滑动窗口法,获得关键词分布数组d[i],其中,d[i]表示相对位置分布落在[i-l,i+l]的key的个数,i为相对位置,l为滑动窗口长度;

步骤s1.4:根据关键词分布数组d[i]和计算公式d[i+1]-d[i]=d1[i],获得一阶关键词分布d1[i]。

在一种实现方式中,消息划分模块还用于执行步骤s2.1~s2.2,

步骤s2.1:将步骤s1获得的关键词分布数组和关键词一阶分布输入预设判别器,通过一阶分布和极值点判别方法寻找极值点;

步骤s2.2:判断极值点是否满足判别条件,如果不满足,判别器输出false且执行步骤s4,如果满足,判别器输出true,输出极值点分布m[i],并执行步骤s3,其中,m[i]表示相对位置i处存在的极值。

基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现第一方面所述的方法。

本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:

本发明提出了一种基于网络轨迹的安全协议格式的挖掘方法,通过消息划分步骤,可以将消息划分为关键词和可变字段,通过分隔符分离步骤可以从关键词中分离出分隔词,最终将待处理的文本协议消息划分为由关键词、分隔符和可变字段组成的子消息,并输出关键词出现的概率和相对位置,从而可以获得安全协议消息格式。相对于现有技术中的人工推理方法而言,本发明中的方法基于最长公共子序列的文本比较算法获得协议关键词元组、采用滑动窗口方法输出关键词分布数组,并基于关键词分布数组获得关键词一阶分布,然后通过极值判断方法判断是否存在关键词、基于余弦相似度方法确定出中心消息,最后采用基于树的字符串比对方法,分离出分隔符,最终得到包含关键词、可变字段和分隔符的子消息、以及关键词出现的概率和相对位置,从而可以自动挖掘与分析安全协议的格式,大大提高了分析的效率,解决了现有技术中的方法存在工作量大、效率低的技术问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一种实施方案中基于网络轨迹的安全协议格式的挖掘方法的流程图;

图2为一种实施方案中基于网络轨迹的安全协议格式挖掘方法的总体流程;

图3为原始文本消息处理成关键词五元组、关键词分布数组和一阶关键词分布的流程图;

图4为极值点判别方法的流程;

图5为基于中心消息的子消息划分方法的流程图;

图6为基于树的字符串比对方法的流程图;

图7为基于needleman-wunsch方法建立的矩阵示意图;

图8为基于needleman-wunsch方法相似度得分计算方法示意图;

图9为基于needleman-wunsch方法得到的输出结果示意图;

图10为关键词五元组随plocation的分布示意图;

图11为关键词key的数量随着plocation的分布示意图;

图12为关键词一阶分布d1[i]的示意图;

图13为一种实施方式中基于网络轨迹的安全协议格式的挖掘装置的结构框图;

图14为本发明实施例中计算机可读存储介质的结构图。

具体实施方式

本发明实施例提供了一种基于网络轨迹的安全协议格式的挖掘方法,通过将原始的消息格式划分为包含关键词、分隔符号和可变字段的子消息,并输出关键词出现的概率和相对位置,进而获得安全协议消息格式,从而可以自动挖掘与分析安全协议的格式,大大提高了分析的效率,解决了现有技术中的方法存在工作量大、效率低的技术问题。

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

实施例一

本实施例提供了一种基于网络轨迹的安全协议格式的挖掘方法,请参见图1,该方法包括消息划分步骤和分隔符分离步骤,

其中,消息划分步骤具体包括:

步骤s1:基于消息轨迹采用最长公共子序列的文本比较算法获得协议关键词元组,基于所述协议关键词元组,采用滑动窗口方法输出关键词分布数组,并基于关键词分布数组获得关键词一阶分布;

步骤s2:根据所述关键词分布数组和关键词一阶分布,判断是否存在极值,如果存在则执行步骤s3,否则执行步骤s4;

步骤s3:根据所述协议关键词元组、关键词分布数组、关键词一阶分布,采用关键词统计方法,合并相似关键词,然后将相似关键词输入基于余弦相似度方法中,计算所有协议消息的相似度,选择平均相似度最高的消息作为中心消息,采用中心消息的关键词将消息划分为子消息,输出子消息、关键词的概率及相对位置,并将输出作为步骤s1的输入,直到步骤s2中不存在极值;

具体来说,最长公共子序列的文本比较算法为needleman-wunsch方法,可以对分组的消息进行比对,获得关键词五元组。滑动窗口方法用于统计区间内的关键词五元组得到关键词分布数组。极值判断可以采用现有的极值点判别方法。

分隔符分离步骤具体包括:

步骤s4:采用基于树的字符串比对方法,比较每个关键词的首尾,通过寻找最多遍历路径分离出分隔符。

具体来说,步骤s4的输入为关键词,关键词的首尾包括前缀和后缀,前缀和后缀的字符数可以根据实际情况进行设置,例如2位、3位、4位、5位等等。并根据遍历出的路径权值大小分离出分隔符。

在一种实施方式中,输入的安全协议消息为<message,mnum>,message为输入的安全协议消息数组,n为消息数组的最大个数,步骤s1具体包括:

步骤s1.1:从n个消息中随机抽取m个消息,m为偶数,求mnum个消息的长度并按照从小到大排列,然后依次两两分组,获得m/2个分组;

步骤s1.2:采用最长公共子序列的文本比较算法对m/2个分组进行比对,得到公共序列,以公共序列中的连续字符为关键词key,计算key到消息头部的绝对位置location、key与绝对位置与消息总长度的比值plocation,并获得协议关键词元组,其中,关键词元组为五元组<num,key,knum,location,plocation>,num为公共字符串编号,key为关键词,knum为公共字符串中关键词key的编号;

步骤s1.3:根据关键词五元组<mnum,key,knum,location,plocation>和滑动窗口法,获得关键词分布数组d[i],其中,d[i]表示相对位置分布落在[i-l,i+l]的key的个数,i为相对位置,l为滑动窗口长度;

步骤s1.4:根据关键词分布数组d[i]和计算公式d[i+1]-d[i]=d1[i],获得一阶关键词分布d1[i]。

具体来说,请参见图3,为原始文本消息处理成关键词五元组、关键词分布数组和一阶关键词分布的流程图,首先输入原始的文本协议消息字符串,然后采用needleman-wunsch方法对分组的消息进行两两比对,输入关键词五元组<num,key,knum,location,plocation>,接着将五元组通过滑动窗口方法,输出分布数组d[i]和一阶分布数据d1[i]。

其中,步骤s1.2中needleman-wunsch方法是序列比对方法,通过选取合适的sij,能够优先排列相同的连续字段,输出比对序列的关键词。该方法的输入是两条消息a、b,分别位于矩阵mij的第0行和第0列,i的大小为length(a),j的大小为length(b)。矩阵第0行,第0列填写0,在0<i<length(a)和0<j<length(b)范围内。mij的取值按照式4选取,其中w为惩罚间隙,sij为消息a的第i个字符与b的第j个字符的相似度其取值按照式5计算,k为相似加分,p为参数。回溯从mij开始,选择mij的上、左、左上格最大的值,如遇到相同大小的两个格,可以任意选取。其中,式4和式5的具体形式如下:

mij=max{mi-1,j-1+sij,mi,j-1+w,mi-1,j+w}(式4)

needleman-wunsch方法,具体实例描述如下包括过程:

在式5中p=0,k=1,公式4中w=0执行needleman-wunsch方法。从右下角单元格出发,优先选择该单元格的左,左上和上三个单元格的最大值,如果左和左上单元格大小相同则选择左上,如果上和左上单元格大小相同则选择左上,在回溯阶段,以比对的第一条消息为准,即遇到上,不输出,遇到左,输出?。对比report/dc01477&uin和rep0rt/dc00321&u得到report/dc01???&u??,其中?为未匹配字段。匹配矩阵如图7所示,相似度得分计算如图8所示。

其中,计算第一个字符串到公共字符串的距离,按照match(匹配)得分为k,mismatch与gap得分为w来处理,其中k=1,w=0,则相似度得分为12。相似度为相似度得分score与长度length的比值如6所示。

图9为基于needleman-wunsch方法得到的输出结果示意图,needleman-wunsch方法输出公共字符串和相似度得分。

为了更清楚地说明needleman-wunsch方法的应用,步骤s1.2的具体实施流程如下所示:

1、输入两个字符串str1,str2,和空字符串str3。

2、初始化矩阵mij,其中i为length(str1+1),j为length(str2+1),将矩阵全部赋值为0,score为0。

3、根据公式1填写矩阵m。

4、回溯条件:比较左值、左上值、上值,输出最大值,如果最大值有2个以上,优先输出左上值其次输出左值。

5、从矩阵mij开始回溯,直至回溯到m11停止并记录回溯路径l。

6、初始化score为0,k为匹配得分,w为间隙罚分。公共字符串为str3从l的末端开始遍历l。l输出为左上时,m中相应字符直接输出到str3,并且score=score+k;当l输出为左时,把空字符?输出到str3,当l输出为上时,不输出。并且score=score-w。

7、输出str3和score。

8、定义关键词五元组<mnum,key,knum,location,plocation>:num为公共字符串编号,key为关键词,knum为第num个公共字符串中关键词序号location为关键词在公共字符串的相对位置,plocation为location与第num个公共字符串长度的比值。

9、依次检索所有关键词五元组str3,将字符填入key直至遇到空字符,计算key到str3起始点的距离,填入location,然后填入knum和plocation,继续检索到下一个key迭代的使用该方法直至到str3的末尾。

10、输出五元组<mnum,key,knum,location,plocation>。

在上述介绍步骤s1.2采用needleman-wunsch方法得到的输出公共字符串和相似度得分后,下面详细介绍步骤s1.3的实现过程:

首先输入关键词五元组<mnum,key,knum,location,plocation>,设置滑动窗口长度为l,初始化矩阵d[i]=0,0<i<10000-l+1,按照plocation*10000向上取整。对于每个i从0增加到10000-l+1,统计在区间[i,i+l]的key的个数,并输入到d[i]。其中,图10为关键词五元组随plocation的分布示意图。图11为关键词key数量随着plocation的分布d[i]的示意图。

在具体的实施过程中,步骤s1.4可以通过下述方法来实现:

输入为数组分布:d[i],0<i<=10000-l+1,滑动窗口长度为l,然后求出关键词数组的一阶分布:d1[i],如图12所示,为关键词一阶分布d1[i]的示意图,0<i<=10000-l,对于每个i,i从1增加到10000-l+1,d1[i]=d[i]-d[i-1]。

在一种实现方式中,步骤s2具体包括:

步骤s2.1:将步骤s1获得的关键词分布数组和关键词一阶分布输入预设判别器,通过一阶分布和极值点判别方法寻找极值点;

步骤s2.2:判断极值点是否满足判别条件,如果不满足,判别器输出false且执行步骤s4,如果满足,判别器输出true,输出极值点分布m[i],并执行步骤s3,其中,m[i]表示相对位置i处存在的极值。

在具体的实施过程中,步骤s2.1的输入为一阶分布d1[i],0<i<=10000-l,和分布d[i],0<i<=10000,判别条件可以为在长度为2l的区间内,存在一个i,0<i<=10000-l存在0<d1[i-1]&0<d1[i-2]……&0<d1[i-l],且满足d1[i+l]<0&d1[i+l-1]<0…&d1[i-1]<0,认为i处是极值,当d1[i-l]到d1[i+l]区间中,有个别点不满足判断条件,则判定i是极值。

判断分布d端点是否存在极值,若

在i取值为0,判断ds<d[l]……d[2]<d[1]<d[0];

在i取值为10000时ds<d[1000-l]……d[9999]<d[10000];

其中,ds为两个极值点之间的平均分布数量,d[0]的分布高于ds,且随着i增加(0<i<l),d[0+i]有下降的趋势,判定d[0]是极值。d[10000]的分布高于ds,且随着i的增加(0<i<l),d[10000-i]有下降的趋势,判定d[10000]是极值。

将极值点i输出到m[i]中,m[i]为极值点分布,图11为一阶分布d1[i]的示意图。

当m[i]为空时则判定没有极值,此时判别器输出false,当m[i]不为空时,判定存在极值,输出true和极值点分布m[i]。

在一种实现方式中,步骤s3具体包括:

步骤s3.1:输入关键词五元组<mnum,key,knum,location,plocation>和极值点分布m[i],通过预设关键词统计方法,统计[t-pl,t+pl]区间内关键词种类及其数量,合并相似的不同类的关键词,最终输出关键词分布五元组<key,knum,krate,t,pl>,其中,t为从pm[i]中取出的极值,pm[i]为从m[i]中取出极值点并转化成的关键词概率分布,pm[i]用以表征在极值点i处不同key的出现概率,pl为以极值t为中心选取的预设长度区间,所述关键词分布五元组表示在区间[t-pl,t+pl]中关键词key的出现次数为knum,出现频率为krate;

步骤s3.2:将关键词分布五元组输入到余弦相似度方法中,两两计算不同消息的相似度,并选择平均相似度最大的消息作为中心消息并输出,然后采用中心消息所包含的关键词对所有消息进行划分,输出子消息,子消息的格式为<key,submessage,smnum>其中,smnum为指向子消息所属的源消息,然后将submessage输入到步骤s1。

其中,步骤s3.2具体包括:

s3.2.1:输入消息message,关键词集key以及key对应的频率krate;

s3.2.2:对于每一条message对应的四元组,在对应的四元组中搜索关键词集key中的每一个关键词,对一条消息的每个key输出四元组<num,key,knum,krate>,如果key不存在则krate为空;

s3.2.3:对四元组<num,key,knum,krate>采用tf-idf加权法,tf表示词频,idf表示词的权重,df(w)表示含有词w的消息条数,n表示消息总条数,c为常数,值为loge(n+0.01),其中tf=krate,w=key,n=num,并且对于每一个key搜索包含该key的消息的数目df(w);

s3.2.4:根据式(1)计算权重idf,根据式(2)计算词w的权重weight(w);

weight(w)=tf*idf(式2)

s3.2.5:对每条消息,对消息中包的关键词,采用余弦相似度方法,两两计算余弦相似度,然后求出平均余弦相似度,并找出平均余弦相似度最高的消息,并作为中心消息,其中,s和t的相似度的计算公式如式3所示:

其中,s和t表示两条消息的关键词w数组,wi表示权重weight。

在一种实现方式中,步骤s4具体包括:

步骤s4.1:分别从输入的关键词中抽取出关键字前缀和关键字后缀;

步骤s4.2:将抽取出的关键字前缀和关键字后缀输入基于树的字符串比对方法进行两两对比,将路径权值最大的字符串作为输出,将其作为分隔符。

在具体的实施过程中,取关键词key的前缀字符和后缀字符,形成前缀字符数组str1[]和后缀字符数组str2[],分别输入到基于树的字符串比对方法。经过筛选,输出前缀和后缀。其中,基于树的字符串比对方法具体可以通过下述步骤来实现:

第一步,输入字符串数组str[];

第二步,取出str[1]中的字符构成链表,逐个取出str[2]并与str[1]链表进行比较,如果相等就将到达该结点的路径的权值自增1,不相同就产生分支。如果首不相等的字符串就另外形成一个新节点,后续节点接着与原有的树进行比较。

第三步,将所有字符串依次与链表进行比较,最后以路径权值最大的字符串作为输出;

第四步,输出路径权值最大的路径,得到分隔符。

为了更清楚地表示网络轨迹的安全协议格式挖掘方法的总体流程,请参见图2,本发明通过将输入的消息(消息1、消息2....消息n)通过消息划分方法得到关键词,接着通过分隔符推断方法分离出分隔符,最终得到包含关键词、分隔符的子消息。其中,消息划分方法主要包括步骤a、步骤b和步骤c,分隔符推断方法包括步骤d。消息划分方法首先从消息序列中随机抽取出消息对,然后将每个消息对输入needleman-wunsch方法中,得到关键词、相对位置以及分布,接着判断是否存在极值点,如果是,则进行关键词统计、余弦相似度方法计算相似度得到中心消息,再根据中心消息序列的固定区域将消息划分为子消息,如果否则步骤c结束,直接进入步骤d。其中,步骤a、b、c和d的具体步骤可以参见前文具体实施方式中的相关介绍,在此不再详细描述。例如,一条消息为“version:sec/1.10.2\r\nid:1234\r\niput:sec\r\npassword:hxd123\r\n”,采用本发明的挖掘方法,可以将其划分为包含关键词和分隔符的子消息:version:sec/1.10.2、\r\nid:1234、\r\niput:sec和\r\npassword:hxd123。

实施例二

本实施例提供了一种基于网络轨迹的安全协议格式的挖掘装置,请参见图13,该装置包括:消息划分模块201和分隔符分离模块202,

其中,消息划分模块201具体用于执行步骤s1~步骤s3,

步骤s1:基于消息轨迹采用最长公共子序列的文本比较算法获得协议关键词元组,基于所述协议关键词元组,采用滑动窗口方法输出关键词分布数组,并基于关键词分布数组获得关键词一阶分布;

步骤s2:根据所述关键词分布数组和关键词一阶分布,判断是否存在极值,如果存在则执行步骤s3,否则执行步骤s4;

步骤s3:根据所述协议关键词元组、关键词分布数组、关键词一阶分布,采用预设关键词统计方法,合并相似关键词,然后将相似关键词输入基于余弦相似度方法中,计算所有协议消息的相似度,选择平均相似度最高的消息作为中心消息,采用中心消息的关键词将消息划分为子消息,输出子消息、关键词的概率及相对位置,并将输出作为步骤s1的输入,直到步骤s2中不存在极值;

分隔符分离模块202具体用于执行步骤s4,

步骤s4:采用基于树的字符串比对方法,比较每个关键词的首尾,通过寻找最多遍历路径分离出分隔符。

在一种实现方式中,输入的安全协议消息为<message,mnum>,message为输入的安全协议消息数组,n为消息数组的最大个数,消息划分模块201还用于执行步骤s1.1~s1.4,

步骤s1.1:从n个消息中随机抽取m个消息,m为偶数,求mnum个消息的长度并按照从小到大排列,然后依次两两分组,获得m/2个分组;

步骤s1.2:采用最长公共子序列的文本比较算法对m/2个分组进行比对,得到公共序列,以公共序列中的连续字符为关键词key,计算key到消息头部的绝对位置location、key与绝对位置与消息总长度的比值plocation,并获得协议关键词元组,其中,关键词元组为五元组<num,key,knum,location,plocation>,num为公共字符串编号,key为关键词,knum为公共字符串中关键词key的编号;

步骤s1.3:根据关键词五元组<mnum,key,knum,location,plocation>和滑动窗口法,获得关键词分布数组d[i],其中,d[i]表示相对位置分布落在[i-l,i+l]的key的个数,i为相对位置,l为滑动窗口长度;

步骤s1.4:根据关键词分布数组d[i]和计算公式d[i+1]-d[i]=d1[i],获得一阶关键词分布d1[i]。

在一种实现方式中,消息划分模块202还用于执行步骤s2.1~s2.2,

步骤s2.1:将步骤s1获得的关键词分布数组和关键词一阶分布输入预设判别器,通过一阶分布和极值点判别方法寻找极值点;

步骤s2.2:判断极值点是否满足判别条件,如果不满足,判别器输出false且执行步骤s4,如果满足,判别器输出true,输出极值点分布m[i],并执行步骤s3,其中,m[i]表示相对位置i处存在的极值。

由于本发明实施例二所介绍的装置,为实施本发明实施例一中基于网络轨迹的安全协议格式的挖掘方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。

实施例三

基于同一发明构思,本申请还提供了一种计算机可读存储介质300,请参见图14,其上存储有计算机程序311,该程序被执行时实现实施例一中的方法。

由于本发明实施例三所介绍的计算机可读存储介质,为实施本发明实施例一中基于网络轨迹的安全协议格式的挖掘方法所采用的计算机可读存储介质,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机可读存储介质的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的计算机可读存储介质都属于本发明所欲保护的范围。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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