一种未知工控协议分类方法及装置
未命名
10-19
阅读:169
评论:0
1.本技术涉及工业控制网络领域,尤其是涉及到一种未知工控协议分类方法及装置。
背景技术:
2.随着工业控制系统数字化、网络化、智能化的发展,大量异构的工控协议涌现。因此,大量工控协议的结构信息是未知的,使得现有面向互联网的协议分类方法无法对未知的工控协议进行分类。因此,未知工控协议的分类成为工控领域亟待破解的难题。
3.为了解决未知工控协议分类的问题,学术界和工业界对此进行了深入研究,并将逆向工程思想引入到未知工控协议分类。协议逆向工程是对未知协议的报文数据进行分析,以获取该协议的格式规范、报文语义和行为规范。然而,协议逆向工程在多种工控协议混合传输的情况下会产生误差,因此需要对多种工控协议进行分类,以便对同一种的工控协议进行协议逆向解析,提高协议解析的准确率。
4.现有的未知协议分类方法主要面向互联网协议,以支持向量机、机器学习、聚类等方法为主,但相较于互联网协议,工控协议旨在获取测量值、状态值和控制设备,因此,工控协议报文通常带有功能码字段,以指定接收的内容和响应的内容。工控协议具有报文简短且以字节为单元划分各个功能块的特点,所以传统的未知协议分类方法难以适配工控协议的分类。
5.然而,对于未知工控协议的分类方法仍处于起步阶段,已有的未知工控协议分类方法解决了对相同类型的未知工控协议分类的问题,但当多种类型的未知工控协议混合传输时,其分类结果存在误差。
技术实现要素:
6.有鉴于此,本技术提供了一种未知工控协议分类方法及装置,主要目的在于通过计算和比较未知工控协议的字符距离,可以进行细粒度的相似性判别,从而实现高精度的未知工控协议分类,避免了多种类型的未知工控协议混合传输时,其分类结果存在误差的情况。
7.根据本技术的一个方面,提供了一种未知工控协议分类方法,所述方法包括:
8.(1)捕获未知工控协议报文;
9.(2)构建每个未知工控协议报文对应的二进制特征序列;
10.(3)计算各二进制特征序列之间的字符距离,根据所述字符距离,确定最大平均字符距离;
11.(4)根据最大平均字符距离,确定最佳聚类k值;
12.(5)根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组;
13.(6)将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议
类别。
14.可选地,所述捕获未知工控协议报文,包括如下步骤:
15.(1-1)捕获未知工控协议的原始报文:通过预设协议分析软件,根据工控设备的mac地址或ip地址,捕获m个未知工控协议的原始报文;
16.(1-2)提取应用层数据:提取m个所述未知工控协议原始报文的应用层数据,构建未知工控协议报文应用层数据集,记为a={a1,...,am,...,am},其中am表示第m个未知工控协议报文的应用层数据。
17.可选地,所述构建每个未知工控协议报文对应的二进制特征序列,包括如下步骤:
18.(2-1)截取特征序列:截取am的前l个字节作为特征序列bm(m=1,2,...,m);
19.(2-2)二进制转换:将bm转换成二进制特征序列cm,过程如下:
20.cm=encode(bm),m=1,2,...,m
21.其中,bm表示第m个特征序列,encode(
·
)表示特征序列转换成二进制特征序列cm=[c
m1
,c
m2
,...,c
mn
,...,c
mn
],n表示二进制特征序列的位数,c
mn
表示第m个二进制特征序列的第n位。
[0022]
可选地,所述计算各二进制特征序列之间的字符距离,根据所述字符距离,确定最大平均字符距离,包括如下步骤:
[0023]
(3-1)构建样本集合:构建二进制特征序列样本集合,记为c={c1,...,cm,...,cm};
[0024]
(3-2)计算特征序列间字符距离:计算任意两个二进制特征序列m和p的字符距离,过程如下:
[0025][0026]
其中,表示异或运算,如果c
mn
和c
pn
值不相同,结果为1;如果c
mn
和c
pn
值相同,结果为0;
[0027]
所述字符距离,是两个二进制特征序列之间,对应二进制数取值不同的位的个数;
[0028]
(3-3)计算最大平均字符距离:计算m个二进制特征序列的最大平均字符距离,过程如下:
[0029][0030]
可选地,所述根据最大平均字符距离,确定最佳聚类k值,包括如下步骤:
[0031]
(4-1)选择类别中心:从c中随机取二进制特征序列cj作为中心,并将cj从c中移除,生成一个新的类别dj,cj∈dj;
[0032]
(4-2)计算特征序列与类别中心的字符距离:计算移除cj后的c中所有二进制特征序列到dj中cj的字符距离d
mj
,过程如下:
[0033][0034]
其中,d
mj
表示移除cj后的c中第m个二进制特征序列与dj中cj的字符距离;
[0035]
(4-3)进行特征序列归类:将所有字符距离小于所述最大平均字符距离(d
mj
<d
avg
)
的二进制特征序列归为dj,并从c中移除;
[0036]
(4-4)依次重复步骤(4-1)到(4-3),直到c为空,形成多个类别dj(j=1,2,...,k),得到最佳聚类k值,记为k
*
。
[0037]
可选地,所述根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组,包括如下步骤:
[0038]
(5-1)确定初始聚类中心:从c中随机选取k
*
个二进制特征序列作为初始聚类中心ek(k=1,2,...,k
*
);
[0039]
(5-2)计算特征序列与聚类中心的字符距离:计算m-k
*
个二进制特征序列与k
*
个聚类中心的字符距离,过程如下:
[0040][0041]
其中,e
kn
表示第k个聚类中心二进制特征序列的第n位,d
mk
表示第m个二进制特征序列与第k个聚类中心的二进制特征序列的字符距离;
[0042]
(5-3)比较特征序列与聚类中心的字符距离:比较并计算二进制特征序列m到k
*
个聚类中心的最小字符距离,过程如下:
[0043][0044]
(5-4)确定特征序列类别:根据计算所得的最小字符距离确定二进制特征序列cm的类别k,过程如下:
[0045]k←
f-1
(d
mk
),
[0046]
其中,f-1
(
·
)表示根据所述最小字符距离获取的二进制特征序列cm所属的类别k;
[0047]
(5-5)更新聚类中心:找出类别k内最小字符距离所对应的二进制特征序列,作为新的聚类中心,过程如下:
[0048][0049]
其中,||fk||表示类别k内的二进制特征序列数量,根据计算得出k内最小字符距离所对应的二进制特征序列cz,将其作为新的聚类中心e
′k=cz;
[0050]
(5-6)依次重复步骤(5-2)到(5-5),直到类别k内部的二进制特征序列不再变化,即聚类结束。
[0051]
可选地,所述将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别,包括如下步骤:
[0052]
(6-1)确定工控协议的类别:根据计算得出的二进制特征序列cm所属类别k,将cm所对应的未知工控协议am归类为类别k,即am∈fk;
[0053]
(6-2)依次重复步骤(6-1),直到a为空,即完成未知工控协议分类。
[0054]
根据本技术的另一方面,提供了一种未知工控协议分类装置,所述装置包括:
[0055]
协议捕获模块,用于捕获未知工控协议报文;
[0056]
协议处理模块,用于构建每个未知工控协议报文对应的二进制特征序列,计算各二进制特征序列之间的字符距离,确定最大平均字符距离;
[0057]
聚类模块,用于根据最大平均字符距离,确定最佳聚类k值;并根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组;
[0058]
分类模块,用于将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别。
[0059]
可选地,所述协议捕获模块,还用于:
[0060]
(1-1)捕获未知工控协议的原始报文:通过预设协议分析软件,根据工控设备的mac地址或ip地址,捕获m个未知工控协议的原始报文;
[0061]
(1-2)提取应用层数据:提取m个所述未知工控协议原始报文的应用层数据,构建未知工控协议报文应用层数据集,记为a={a1,...,am,...,am},其中am表示第m个未知工控协议报文的应用层数据。
[0062]
可选地,所述协议处理模块,还用于:
[0063]
(2-1)截取特征序列:截取am的前l个字节作为特征序列bm(m=1,2,...,m);
[0064]
(2-2)二进制转换:将bm转换成二进制特征序列cm,过程如下:
[0065]cm
=encode(bm),m=1,2,...,m
[0066]
其中,bm表示第m个特征序列,encode(
·
)表示特征序列转换成二进制特征序列cm=[c
m1
,c
m2
,...,c
mn
,...,c
mn
],n表示二进制特征序列的位数,c
mn
表示第m个二进制特征序列的第n位。
[0067]
可选地,所述协议处理模块,还用于:
[0068]
(3-1)构建样本集合:构建二进制特征序列样本集合,记为c={c1,...,cm,...,cm};
[0069]
(3-2)计算特征序列间字符距离:计算任意两个二进制特征序列m和p的字符距离,过程如下:
[0070][0071]
其中,表示异或运算,如果c
mn
和c
pn
值不相同,结果为1;如果c
mn
和c
pn
值相同,结果为0;
[0072]
所述字符距离,是两个二进制特征序列之间,对应二进制数取值不同的位的个数;
[0073]
(3-3)计算最大平均字符距离:计算m个二进制特征序列的最大平均字符距离,过程如下:
[0074][0075]
可选地,所述聚类模块,还用于:
[0076]
(4-1)选择类别中心:从c中随机取二进制特征序列cj作为中心,并将cj从c中移除,生成一个新的类别dj,cj∈dj;
[0077]
(4-2)计算特征序列与类别中心的字符距离:计算移除cj后的c中所有二进制特征序列到dj中cj的字符距离d
mj
,过程如下:
[0078][0079]
其中,d
mj
表示移除cj后的c中第m个二进制特征序列与dj中cj的字符距离;
[0080]
(4-3)进行特征序列归类:将所有字符距离小于所述最大平均字符距离(d
mj
<d
avg
)
的二进制特征序列归为dj,并从c中移除;
[0081]
(4-4)依次重复步骤(4-1)到(4-3),直到c为空,形成多个类别dj(j=1,2,...,k),得到最佳聚类k值,记为k
*
。
[0082]
可选地,聚类模块,还用于:
[0083]
(5-1)确定初始聚类中心:从c中随机选取k
*
个二进制特征序列作为初始聚类中心ek(k=1,2,...,k
*
);
[0084]
(5-2)计算特征序列与聚类中心的字符距离:计算m-k
*
个二进制特征序列与k
*
个聚类中心的字符距离,过程如下:
[0085][0086]
其中,e
kn
表示第k个聚类中心二进制特征序列的第n位,d
mk
表示第m个二进制特征序列与第k个聚类中心的二进制特征序列的字符距离;
[0087]
(5-3)比较特征序列与聚类中心的字符距离:比较并计算二进制特征序列m到k
*
个聚类中心的最小字符距离,过程如下:
[0088][0089]
(5-4)确定特征序列类别:根据计算所得的最小字符距离确定二进制特征序列cm的类别k,过程如下:
[0090]k←
f-1
(d
mk
),
[0091]
其中,f-1
(
·
)表示根据所述最小字符距离获取的二进制特征序列cm所属的类别k;
[0092]
(5-5)更新聚类中心:找出类别k内最小字符距离所对应的二进制特征序列,作为新的聚类中心,过程如下:
[0093][0094]
其中,||fk||表示类别k内的二进制特征序列数量,根据计算得出k内最小字符距离所对应的二进制特征序列cz,将其作为新的聚类中心e
′k=cz;
[0095]
(5-6)依次重复步骤(5-2)到(5-5),直到类别k内部的二进制特征序列不再变化,即聚类结束。
[0096]
可选地,所述分类模块,还用于:
[0097]
(6-1)确定工控协议的类别:根据计算得出的二进制特征序列cm所属类别k,将cm所对应的未知工控协议am归类为类别k,即am∈fk;
[0098]
(6-2)依次重复步骤(6-1),直到a为空,即完成未知工控协议分类。
[0099]
借由上述技术方案,本技术提供的一种未知工控协议分类方法及装置,首先捕获未知工控协议的原始报文,构建每个未知工控协议报文对应的二进制特征序列,其次计算各二进制特征序列之间的字符距离,根据所述字符距离,确定最大平均字符距离,根据最大平均字符距离,确定最佳聚类k值,最后根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组,将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别。本技术通过计算和比较未知工控协议的字符距离,可以进行细粒度的相似性判别,从而实现高精度的未知工控协议分类,避免了当多种类型的未知工控协议混合传输时,其分类结果存在误差的情况,为未知工控协议识别奠定基础,支持工控系统
安全监测。
[0100]
上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
[0101]
此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
[0102]
图1示出了本技术实施例提供的一种未知工控协议分类方法的流程示意图;
[0103]
图2示出了本技术实施例提供的捕获未知工控协议报文的流程示意图;
[0104]
图3示出了本技术实施例提供的构建每个未知工控协议报文对应的二进制特征序列的流程示意图;
[0105]
图4示出了本技术实施例提供的确定最大平均字符距离的流程示意图;
[0106]
图5示出了本技术实施例提供的确定最佳聚类k值的流程示意图;
[0107]
图6示出了本技术实施例提供的对各二进制特征序列进行聚类的流程示意图;
[0108]
图7示出了本技术实施例提供的对未知工控协议分类的流程示意图;
[0109]
图8示出了本技术实施例提供的一种未知工控协议分类装置的结构示意图。
具体实施方式
[0110]
下文中将参考附图并结合实施例来详细说明本技术。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
[0111]
在本实施例中提供了一种未知工控协议分类方法,如图1所示,该方法包括:
[0112]
步骤(1),捕获未知工控协议报文。
[0113]
在本技术实施例提供的未知工控协议分类方法可以应用在工业控制系统中,用于对未知工控协议进行分类。首先,如图2所示,通过预设协议分析软件,根据工控设备的mac地址或ip地址,捕获m个未知工控协议的原始报文。在捕获m个未知工控协议的原始报文后,提取m个未知工控协议的原始报文的应用层数据,根据m个应用层数据,构建未知工控协议报文应用层数据集,记为a={a1,...,am,...,am},其中am表示第m个未知工控协议报文的应用层数据。
[0114]
步骤(2),构建每个未知工控协议报文对应的二进制特征序列。
[0115]
接着,在构建未知工控协议报文应用层数据集后,如图3所示,按照从前到后的顺序,截取am的前l个字节作为特征序列bm(m=1,2,...,m),并将bm进行二进制特征序列转换,得到cm,具体转换过程如下:
[0116]cm
=encode(bm),m=1,2,...,m
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0117]
其中,bm表示第m个特征序列,encode(
·
)表示特征序列转换成二进制特征序列cm=[c
m1
,c
m2
,...,c
mn
,...,c
mn
],n表示二进制特征序列的位数,c
mn
表示第m个二进制特征序列的第n位。
[0118]
步骤(3),计算各二进制特征序列之间的字符距离,根据所述字符距离,确定最大平均字符距离。
[0119]
接着,如图4所示,根据每个二进制特征序列,构建二进制特征序列样本集合,记为c={c1,...,cm,...,cm},并计算二进制特征序列样本集合中任意两个二进制特征序列m和p的字符距离,具体过程如下:
[0120][0121]
其中,表示异或运算,如果c
mn
和c
pn
值不相同,结果为1;如果c
mn
和c
pn
值相同,结果为0。
[0122]
其中,字符距离是两个二进制特征序列之间,对应二进制数取值不同的位的个数。
[0123]
计算二进制特征序列样本集合中m个二进制特征序列的最大平均字符距离,具体过程如下:
[0124][0125]
步骤(4),根据最大平均字符距离,确定最佳聚类k值。
[0126]
接着,如图5所示,在二进制特征序列样本集合c中随机选取二进制特征序列cj作为中心,并将二进制特征序列cj从二进制特征序列样本集合c中移除,生成一个新的类别dj,cj∈dj。
[0127]
计算移除二进制特征序列cj后的二进制特征序列样本集合c中所有二进制特征序列到类别dj中二进制特征序列cj的字符距离d
mj
,具体过程如下:
[0128][0129]
其中,d
mj
表示移除cj后的c中第m个二进制特征序列与dj中cj的字符距离。
[0130]
将所有字符距离小于最大平均字符距离(d
mj
<d
avg
)的二进制特征序列归为类别dj,并从二进制特征序列样本集合c中移除。
[0131]
依次重复上述步骤,直到二进制特征序列样本集合c为空,形成多个类别dj(j=1,2,...,k),得到最佳聚类k值,记为k
*
。
[0132]
步骤(5),根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组。
[0133]
接着,如图6所示,从二进制特征序列样本集合c中选取k
*
个二进制特征序列作为初始聚类中心ek(k=1,2,...,k
*
),并计算m-k
*
个二进制特征序列与k
*
个聚类中心的字符距离,具体过程如下:
[0134][0135]
其中,e
kn
表示第k个聚类中心二进制特征序列的第n位,d
mk
表示第m个二进制特征序列与第k个聚类中心的二进制特征序列的字符距离。
[0136]
比较二进制特征序列m到k
*
个聚类中心的最小字符距离,具体过程如下:
[0137][0138]
根据计算所得的最小字符距离确定二进制特征序列cm的类别k,过程如下:
[0139]k←
f-1
(d
mk
),
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0140]
其中,f-1
(
·
)表示根据所述最小字符距离获取的二进制特征序列cm所属的类别k。
[0141]
找出类别k内最小字符距离所对应的二进制特征序列,作为新的聚类中心,具体过程如下:
[0142][0143]
其中,||fk||表示类别k内的二进制特征序列数量,根据计算得出k内最小字符距离所对应的二进制特征序列cz,将其作为新的聚类中心ek′
=cz。
[0144]
依次重复上述步骤,直到类别k内部的二进制特征序列不再变化,即聚类结束。
[0145]
步骤(6),将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别。
[0146]
最后,如图7所示,根据计算得出二进制特征序列cm所属类别k,将cm所对应的未知工控协议am归类为类别k,即am∈fk。
[0147]
依次重复上述步骤,直到a为空,即完成未知工控协议分类。
[0148]
通过应用本实施例的技术方案,基于字符距离聚类对未知工控协议进行分类,提出了最佳聚类k值确定方法,可以根据工控协议的协议标识符动态确定k值,解决了对于混合传输的多类型未知工控协议聚类过程中k值难以确定的问题。并根据工控协议报文格式精简且广泛采用二进制序列的特点,通过计算和比较未知工控协议的字符距离,可以进行细粒度的相似性判别,解决了对于传统文本协议报文聚类算法难以准确反映未知工控协议报文相似性的问题,从而实现对未知工控协议的高精度分类,避免了当多种类型的未知工控协议混合传输时,其分类结果存在误差的情况。
[0149]
进一步的,作为图1方法的具体实现,本技术实施例提供了一种未知工控协议分类装置,如图8所示,该装置包括:
[0150]
协议捕获模块,用于捕获未知工控协议报文;
[0151]
协议处理模块,用于构建每个未知工控协议报文对应的二进制特征序列,计算各二进制特征序列之间的字符距离,确定最大平均字符距离;
[0152]
聚类模块,用于根据最大平均字符距离,确定最佳聚类k值;并根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组;
[0153]
分类模块,用于将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别。
[0154]
可选地,所述协议捕获模块,还用于:
[0155]
(1-1)捕获未知工控协议的原始报文:通过预设协议分析软件,根据工控设备的mac地址或ip地址,捕获m个未知工控协议的原始报文;
[0156]
(1-2)提取应用层数据:提取m个所述未知工控协议原始报文的应用层数据,构建未知工控协议报文应用层数据集,记为a={a1,...,am,...,am},其中am表示第m个未知工控协议报文的应用层数据。
[0157]
可选地,所述协议处理模块,还用于:
[0158]
(2-1)截取特征序列:截取am的前l个字节作为特征序列bm(m=1,2,...,m);
[0159]
(2-2)二进制转换:将bm转换成二进制特征序列cm,过程如下:
[0160]cm
=encode(bm),m=1,2,...,m
[0161]
其中,bm表示第m个特征序列,encode(
·
)表示特征序列转换成二进制特征序列cm=[c
m1
,c
m2
,...,c
mn
,...,c
mn
],n表示二进制特征序列的位数,c
mn
表示第m个二进制特征序列的第n位。
[0162]
可选地,所述协议处理模块,还用于:
[0163]
(3-1)构建样本集合:构建二进制特征序列样本集合,记为c={c1,...,cm,...,cm};
[0164]
(3-2)计算特征序列间字符距离:计算任意两个二进制特征序列m和p的字符距离,过程如下:
[0165][0166]
其中,表示异或运算,如果c
mn
和c
pn
值不相同,结果为1;如果c
mn
和c
pn
值相同,结果为0;
[0167]
所述字符距离,是两个二进制特征序列之间,对应二进制数取值不同的位的个数;
[0168]
(3-3)计算最大平均字符距离:计算m个二进制特征序列的最大平均字符距离,过程如下:
[0169][0170]
可选地,所述聚类模块,还用于:
[0171]
(4-1)选择类别中心:从c中随机取二进制特征序列cj作为中心,并将cj从c中移除,生成一个新的类别dj,cj∈dj;
[0172]
(4-2)计算特征序列与类别中心的字符距离:计算移除cj后的c中所有二进制特征序列到dj中cj的字符距离d
mj
,过程如下:
[0173][0174]
其中,d
mj
表示移除cj后的c中第m个二进制特征序列与dj中cj的字符距离;
[0175]
(4-3)进行特征序列归类:将所有字符距离小于所述最大平均字符距离(d
mj
<d
avg
)的二进制特征序列归为dj,并从c中移除;
[0176]
(4-4)依次重复步骤(4-1)到(4-3),直到c为空,形成多个类别dj(j=1,2,...,k),得到最佳聚类k值,记为k
*
。
[0177]
可选地,聚类模块,还用于:
[0178]
(5-1)确定初始聚类中心:从c中随机选取k
*
个二进制特征序列作为初始聚类中心ek(k=1,2,...,k
*
);
[0179]
(5-2)计算特征序列与聚类中心的字符距离:计算m-k
*
个二进制特征序列与k
*
个聚类中心的字符距离,过程如下:
[0180][0181]
其中,e
kn
表示第k个聚类中心二进制特征序列的第n位,d
mk
表示第m个二进制特征序列与第k个聚类中心的二进制特征序列的字符距离;
[0182]
(5-3)比较特征序列与聚类中心的字符距离:比较并计算二进制特征序列m到k
*
个聚类中心的最小字符距离,过程如下:
[0183][0184]
(5-4)确定特征序列类别:根据计算所得的最小字符距离确定二进制特征序列cm的类别k,过程如下:
[0185]k←
f-1
(d
mk
),
[0186]
其中,f-1
(
·
)表示根据所述最小字符距离获取的二进制特征序列cm所属的类别k;
[0187]
(5-5)更新聚类中心:找出类别k内最小字符距离所对应的二进制特征序列,作为新的聚类中心,过程如下:
[0188][0189]
其中,||fk||表示类别k内的二进制特征序列数量,根据计算得出k内最小字符距离所对应的二进制特征序列cz,将其作为新的聚类中心e
′k=cz;
[0190]
(5-6)依次重复步骤(5-2)到(5-5),直到类别k内部的二进制特征序列不再变化,即聚类结束。
[0191]
可选地,所述分类模块,还用于:
[0192]
(6-1)确定工控协议的类别:根据计算得出的二进制特征序列cm所属类别k,将cm所对应的未知工控协议am归类为类别k,即am∈fk;
[0193]
(6-2)依次重复步骤(6-1),直到a为空,即完成未知工控协议分类。
[0194]
需要说明的是,本技术实施例提供的一种未知工控协议分类装置所涉及各功能单元的其他相应描述,可以参考图1方法中的对应描述,在此不再赘述。
[0195]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0196]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
技术特征:
1.一种未知工控协议分类方法,其特征在于,包括如下步骤:(1)捕获未知工控协议报文;(2)构建每个未知工控协议报文对应的二进制特征序列;(3)计算各二进制特征序列之间的字符距离,根据所述字符距离,确定最大平均字符距离;(4)根据最大平均字符距离,确定最佳聚类k值;(5)根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组;(6)将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别。2.根据权利要求1所述一种未知工控协议分类方法,其特征在于,所述捕获未知工控协议报文,包括如下步骤:(1-1)捕获未知工控协议的原始报文:通过预设协议分析软件,根据工控设备的mac地址或ip地址,捕获m个未知工控协议的原始报文;(1-2)提取应用层数据:提取m个所述未知工控协议原始报文的应用层数据,构建未知工控协议报文应用层数据集,记为a={a1,...,a
m
,...,a
m
},其中a
m
表示第m个未知工控协议报文的应用层数据。3.根据权利要求1所述一种未知工控协议分类方法,其特征在于,所述构建每个未知工控协议报文对应的二进制特征序列,包括如下步骤:(2-1)截取特征序列:截取a
m
的前l个字节作为特征序列b
m
(m=1,2,...,m);(2-2)二进制转换:将b
m
转换成二进制特征序列c
m
,过程如下:c
m
=encode(b
m
),m=1,2,...,m其中,b
m
表示第m个特征序列,encode(
·
)表示特征序列转换成二进制特征序列c
m
=[c
m1
,c
m2
,...,c
mn
,...,c
mn
],n表示二进制特征序列的位数,c
mn
表示第m个二进制特征序列的第n位。4.根据权利要求1所述一种未知工控协议分类方法,其特征在于,所述计算各二进制特征序列之间的字符距离,根据所述字符距离,确定最大平均字符距离,包括如下步骤:(3-1)构建样本集合:构建二进制特征序列样本集合,记为c={c1,...,c
m
,...,c
m
};(3-2)计算特征序列间字符距离:计算任意两个二进制特征序列m和p的字符距离,过程如下:其中,表示异或运算,如果c
mn
和c
pn
值不相同,结果为1;如果c
mn
和c
pn
值相同,结果为0;所述字符距离,是两个二进制特征序列之间,对应二进制数取值不同的位的个数;(3-3)计算最大平均字符距离:计算m个二进制特征序列的最大平均字符距离,过程如下:
5.根据权利要求1所述一种未知工控协议分类方法,其特征在于,所述根据最大平均字符距离,确定最佳聚类k值,包括如下步骤:(4-1)选择类别中心:从c中随机取二进制特征序列c
j
作为中心,并将c
j
从c中移除,生成一个新的类别d
j
,c
j
∈d
j
;(4-2)计算特征序列与类别中心的字符距离:计算移除c
j
后的c中所有二进制特征序列到d
j
中c
j
的字符距离d
mj
,过程如下:其中,d
mj
表示移除c
j
后的c中第m个二进制特征序列与d
j
中c
j
的字符距离;(4-3)进行特征序列归类:将所有字符距离小于所述最大平均字符距离(d
mj
<d
avg
)的二进制特征序列归为d
j
,并从c中移除;(4-4)依次重复步骤(4-1)到(4-3),直到c为空,形成多个类别d
j
(j=1,2,...,k),得到最佳聚类k值,记为k
*
。6.根据权利要求1所述一种未知工控协议分类方法,其特征在于,所述根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组,包括如下步骤:(5-1)确定初始聚类中心:从c中随机选取k
*
个二进制特征序列作为初始聚类中心e
k
(k=1,2,...,k
*
);(5-2)计算特征序列与聚类中心的字符距离:计算m-k
*
个二进制特征序列与k
*
个聚类中心的字符距离,过程如下:其中,e
kn
表示第k个聚类中心二进制特征序列的第n位,d
mk
表示第m个二进制特征序列与第k个聚类中心的二进制特征序列的字符距离;(5-3)比较特征序列与聚类中心的字符距离:比较并计算二进制特征序列m到k
*
个聚类中心的最小字符距离,过程如下:(5-4)确定特征序列类别:根据计算所得的最小字符距离确定二进制特征序列c
m
的类别k,过程如下:k
←
f-1
(d
mk
),其中,f-1
(
·
)表示根据所述最小字符距离获取的二进制特征序列c
m
所属的类别k;(5-5)更新聚类中心:找出类别k内最小字符距离所对应的二进制特征序列,作为新的聚类中心,过程如下:其中,||f
k
||表示类别k内的二进制特征序列数量,根据计算得出k内最小字符距离所对应的二进制特征序列c
z
,将其作为新的聚类中心e
′
k
=c
z
;(5-6)依次重复步骤(5-2)到(5-5),直到类别k内部的二进制特征序列不再变化,即聚类结束。7.根据权利要求1所述一种未知工控协议分类方法,其特征在于,所述将每个二进制特
征序列组对应的未知工控协议报文,分别作为一个工控协议类别,包括如下步骤:(6-1)确定工控协议的类别:根据计算得出的二进制特征序列c
m
所属类别k,将c
m
所对应的未知工控协议a
m
归类为类别k,即a
m
∈f
k
;(6-2)依次重复步骤(6-1),直到a为空,即完成未知工控协议分类。8.一种未知工控协议分类装置,其特征在于,所述装置包括:协议捕获模块,用于捕获未知工控协议报文;协议处理模块,用于构建每个未知工控协议报文对应的二进制特征序列,计算各二进制特征序列之间的字符距离,确定最大平均字符距离;聚类模块,用于根据最大平均字符距离,确定最佳聚类k值;并根据所述最佳聚类k值,对各二进制特征序列进行聚类,得到k个二进制特征序列组;分类模块,用于将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别。
技术总结
本申请涉及工业控制网络领域,公开了一种未知工控协议分类方法及装置,该方法包括:捕获未知工控协议报文;构建每个未知工控协议报文对应的二进制特征序列;计算各二进制特征序列之间的字符距离,根据所述字符距离,确定最大平均字符距离;根据最大平均字符距离,确定最佳聚类K值;根据所述最佳聚类K值,对各二进制特征序列进行聚类,得到K个二进制特征序列组;将每个二进制特征序列组对应的未知工控协议报文,分别作为一个工控协议类别。本申请通过计算和比较未知工控协议的字符距离,可以进行细粒度的相似性判别,实现高精度的未知工控协议分类,为未知工控协议识别奠定基础,支持工控系统安全监测。工控系统安全监测。工控系统安全监测。
技术研发人员:许驰 屠雅春 杜昕宜 夏长清 金曦
受保护的技术使用者:中国科学院沈阳自动化研究所
技术研发日:2023.06.13
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
