一种用户自定义应用的识别方法及系统[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010277600.8
(22)申请日 2020.04.10
(71)申请人 武汉思普崚技术有限公司
地址 430070 湖北省武汉市东湖开发区光
谷大道308号光谷动力节能环保产业
园一期11栋
(72)发明人 李化森 
(74)专利代理机构 武汉智嘉联合知识产权代理
事务所(普通合伙) 42231
代理人 江慧
(51)Int.Cl.
G06F  9/445(2018.01)
H04L  29/06(2006.01)
(54)发明名称
一种用户自定义应用的识别方法及系统
(57)摘要
本发明公开一种用户自定义应用的识别方
法及系统,属于用户自定义应用识别技术领域,
解决了现有技术中自定义应用识别性能会随着
自定义应用规则个数、维度增加呈明显下降的问
题。一种用户自定义应用的识别方法,初始化全
局变量;新增自定义应用规则,保存所述自定义
应用的维度信息,为所述维度信息申请内存,并
将维度信息赋值给对应的bitmap指针;根据所述
自定义应用的ID,则对未置位维度信息所在的位
进行置位;解析报文得到所述维度信息,得到对
应的bitmap指针信息,对所述bitmap指针信息进
行位与操作,得到最终的自定义应用的ID。实现
了在用户自定义应用识别过程中随着自定义规
则个数、维度的增加,用户自定义应用的识别性
能不会明显下降。权利要求书1页  说明书6页  附图2页CN 111552520 A 2020.08.18
C N  111552520
A
1.一种用户自定义应用的识别方法,其特征在于,包括用户自定义应用加载方法和用户自定义应用匹配方法,所述用户自定义应用加载方法,具体包括以下步骤:
在网络安全设备启动时初始化全局变量;
新增自定义应用规则,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,为所述维度信息申请内存,并将维度信息赋值给对应的bitmap指针;
根据所述自定义应用的ID,查所述维度信息所在的位是否置位,若否,则对所述维度信息所在的位进行置位;
所述用户自定义应用匹配方法,具体包括以下步骤:
解析报文得到所述维度信息,根据所述维度信息获取对应的结构体;
根据所述结构体得到对应的bitmap指针信息,对所述bitmap指针信息进行位与操作,得到最终的自定义应用的ID。
2.根据权利要求1所述的一种用户自定义应用的识别方法,其特征在于,所述维度信息具体为端口信息或者IP信息。
3.根据权利要求1所述的用户自定义应用的识别方法,其特征在于,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,具体包括,通过二分查法在所述全局变量的结构体对应数组中搜索,以获取所述自定义应用的维度信息的最佳保存位置,并将所述自定义应用的维度信息保存在所述最佳保存位置中。
4.根据权利要求1所述的用户自定义应用的识别方法,其特征在于,还包括,若对所述bitmap指针信息进行位与操作后,得到多个位均是1,则选择最低位为1的位作为位与操作后的结果。
5.一种用户自定义应用的识别系统,其特征在于,包括初始化模块、维度信息处理模块、置位模块、结构体获取模块及自定义应用ID获取模块;
所述初始化模块,用于在网络安全设备启动时初始化全局变量;
所述维度信息处理模块,用于新增自定义应用规则,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,为所述维度信息申请内存,并将维度信息赋值给对应的bitmap指针;
所述置位模块,用于根据所述自定义应用的ID,查所述维度信息所在的位是否置位,若否,则对所述维度信息所在的位进行置位;
所述结构体获取模块,用于解析报文得到所述维度信息,根据所述维度信息获取对应的结构体;
所述自定义应用ID获取模块,用于根据所述结构体得到对应的bitmap指针信息,对所述bitmap指针信息进行位与操作,得到最终的自定义应用的ID。
6.根据权利要求5所述的用户自定义应用的识别系统,其特征在于,所述维度信息处理模块,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,具体包括,通过二分查法在所述全局变量的结构体对应数组中搜索,以获取所述自定义应用的维度信息的最佳保存位置,并将所述自定义应用的维度信息保存在所述最佳保存位置中。
7.根据权利要求5所述的用户自定义应用的识别系统,其特征在于,还包括位选择模块,所述位选择模块,用于在对所述bitmap指针信息进行位与操作后,得到多个位均是1的情况下,选择最低位为1的位作为位与操作后的结果。
权 利 要 求 书1/1页CN 111552520 A
一种用户自定义应用的识别方法及系统
技术领域
[0001]本发明涉及用户自定义应用识别技术领域,尤其是涉及一种用户自定义应用的识别方法及系统。
背景技术
[0002]随着互联网业务的迅速发展,互联网上的应用数量快速增加,作为一个网络安全厂商,需要定期分析应用特征,并更新预定义的应用特征,进行应用识别;但预定义的应用数量无法满足客户所有的需求,同时特定的应用场景,比如在一个内网环境中,需要用户根据内网环境中的流量特征自己指定一个应用名称,并对指定的应用进行策略匹配处理;当用户在网络安全设备上配置了多条自定义应用的规则,则自定义应用识别的性能问题也成为一个重要的性能影响部分。
[0003]目前大多数安全厂商是基于链表遍历的方式实现自定义应用规则查询功能,具体实现过程为:用户配置自定义规则,比如指定一个自应用名称为test,配置端口、IP、域名信息;上述的自定义规则以链表的数据结构进行保存;当用户访问互联网或者内网时,网络安全设备会进行报文的解析,解析
出端口、IP信息,再对链表进行遍历对比,同时匹配到IP,端口、域名信息时则认为匹配到自定义应用,同时停止匹配,返回链表节点,得到链表结构上保存的自定义应用名称。
[0004]基于通过遍历链表进行端口、IP比较的方式可以达到查自定义应用的效果,当配置的规则数目少时性能不会有太大的影响,但也存在很多缺陷,具体如下:(1)自定义应用识别性能会随着自定义应用规则个数增加呈明显下降;当用户配置多条自定义规则时,比如配置200条自定义规则,使用链表遍历的结构时,则最坏的情况下每一个报文都需要进行匹配200次才能确定是否匹配到自定义应用;使用该方法的时间复杂度为O(n),因此在处理多条自定义规则时,匹配时长会线性的增加;(2)性能随着自定义应用规则维度的增加而明显降低;现在大多数厂商的用户自定义识别维度只有端口、IP、域名;当后续增加识别维度,比如IP层协议号、报文方向时则会因每个维度匹配而引起性能的下降。
发明内容
[0005]本发明的目的在于至少克服上述一种技术不足,提出一种用户自定义应用的识别方法及系统。
[0006]一方面,本发明提供了一种用户自定义应用的识别方法,包括用户自定义应用加载方法和用户自定义应用匹配方法,所述用户自定义应用加载方法,具体包括以下步骤:[0007]在网络安全设备启动时初始化全局变量;
[0008]新增自定义应用规则,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,为所述维度信息申请内存,并将维度信息赋值给对应的bitmap指针;[0009]根据所述自定义应用的ID,查所述维度信息所在的位是否置位,若否,则对所述维度信息所在的位进行置位;
[0010]所述用户自定义应用匹配方法,具体包括以下步骤:
[0011]解析报文得到所述维度信息,根据所述维度信息获取对应的结构体;
[0012]根据所述结构体得到对应的bitmap指针信息,对所述bitmap指针信息进行位与操作,得到最终的自定义应用的ID。
[0013]进一步地,所述维度信息具体为端口信息或者IP信息。
[0014]进一步地,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,具体包括,通过二分查法在所述全局变量的结构体对应数组中搜索,以获取所述自定义应用的维度信息的最佳保存位置,并将所述自定义应用的维度信息保存在所述最佳保存位置中。
[0015]进一步地,所述用户自定义应用的识别方法,还包括,若对所述bitmap指针信息进行位与操作后,得到多个位均是1,则选择最低位为1的位作为位与操作后的结果。[0016]另一方面,本发明还提供了一种用户自定义应用的识别系统,包括初始化模块、维度信息处理模块、置位模块、结构体获取
模块及自定义应用ID获取模块;
[0017]所述初始化模块,用于在网络安全设备启动时初始化全局变量;
[0018]所述维度信息处理模块,用于新增自定义应用规则,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,为所述维度信息申请内存,并将维度信息赋值给对应的bitmap指针;
[0019]所述置位模块,用于根据所述自定义应用的ID,查所述维度信息所在的位是否置位,若否,则对所述维度信息所在的位进行置位;
[0020]所述结构体获取模块,用于解析报文得到所述维度信息,根据所述维度信息获取对应的结构体;
[0021]所述自定义应用ID获取模块,用于根据所述结构体得到对应的bitmap指针信息,对所述bitmap指针信息进行位与操作,得到最终的自定义应用的ID。
[0022]进一步地,所述维度信息处理模块,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,具体包括,通过二分查法在所述全局变量的结构体对应数组中搜索,以获取所述自定义应用的维度信息的最佳保存位置,并将所述自定义应用的维度信息保存在所述最佳保存位置中。
[0023]进一步地,所述用户自定义应用的识别系统,还包括位选择模块,所述位选择模块,用于在对所述bitmap指针信息进行位与操作后,得到多个位均是1的情况下,选择最低位为1的位作为位与操作后的结果。
[0024]与现有技术相比,本发明的有益效果包括:在用户自定义应用加载时,在网络安全设备启动时初始化全局变量;新增自定义应用规则,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,为所述维度信息申请内存,并将维度信息赋值给对应的bitmap指针;根据所述自定义应用的ID,查所述维度信息所在的位是否置位,若否,则对所述维度信息所在的位进行置位;在用户自定义应用匹配时,解析报文得到所述维度信息,根据所述维度信息获取对应的结构体;根据所述结构体得到对应的bitmap指针信息,对所述bitmap指针信息进行位与操作,得到最终的自定义应用的ID;实现了在用户自定义应用识别过程中随着自定义规则个数、维度的增加,用户自定义应用的识别性能不会明显下降。
附图说明
[0025]图1是本发明实施例1所述的用户自定义应用加载方法的流程示意图;
[0026]图2是本发明实施例1所述的用户自定义应用匹配方法的流程示意图;
[0027]图3是本发明实施例1所述的内部维护数组结构示意图;
[0028]图4是本发明实施例1所述的用户自定义应用加载方法的详细流程示意图。
具体实施方式
[0029]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0030]实施例1
[0031]本发明实施例提供了一种用户自定义应用的识别方法,包括用户自定义应用加载方法和用户自定义应用匹配方法,所述用户自定义应用加载方法的流程示意图,如图1所示,所述所述用户自定义应用加载方法,具体包括以下步骤:
[0032]在网络安全设备启动时初始化全局变量;
[0033]新增自定义应用规则,在所述全局变量的结构体对应数组中保存所述自定义应用的维度信息,为所述维度信息申请内存,并将维度信息赋值给对应的bitmap指针;[0034]根据所述自定义应用的ID,查所述维度信息所在的位是否置位,若否,则对所述维度信息所在的位进行置位;
[0035]所述用户自定义应用匹配方法的流程示意图,如图2所示,所述用户自定义应用匹配方法,具体包括以下步骤:
[0036]解析报文得到所述维度信息,根据所述维度信息获取对应的结构体;
[0037]根据所述结构体得到对应的bitmap指针信息,对所述bitmap指针信息进行位与操作,得到最终的自定义应用的ID。
[0038]需要说明的是,采用Bitmap数据结构来保存自定义应用(规则)中各个维度,比如端口、IP,每一个维度都独立使用Bitmap来保存对应的自定义ID,自定义应用(规则)中的每个维度都独立使用一个结构体数组全局变量来保存该维度的信息,比如端口,则该结构体数组全局变量中保存的为端口信息,且根据端口信息进行排序;
[0039]在BitMap数据结构中,所述内部维护数组char M[N],可以存储N*8个数据,但是最大的数只能是N*8-1,若要存储的数据范围为0-15,则只需要使得N=1,这样就可以把数据存进去,内部维护数组结构示意图,如图3所示;对于内部数组char M[8*1024],这样做,能存8K*8=64K个bit;存放的字节位置和位位置分别为0~8191、0~7;内部实现均采用位操作,比如将第1234个位置1,字节序1234>>3=154;位序0x80>>(1234&0x07)=2,那么1234放在M的下标154字节处,把该字节的2号位(0~7)置为1;
[0040]对于置位操作(设操作第k个位),M[k>>3]|=(0x80>>(k&0x07)),其可解释为,M [第k个标志位所在的字节(k/8取整)]|=(第k个标志位在所在字节中的位数(取余)),对于复位操作(设操作第k个位),M[
k>>3]&=~(0x80>>(k&0x07)),其可解释为,M[第k个标志位所在的字节(k/8取整)]&=~(第k个标志位在所在字节中的位数(取余)),对于访问操作(设操作第k个位),return M[k>>3]&(0x80>>(k&0x07)),其可解释为,M[第k个标志位所在

本文发布于:2024-09-21 21:40:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/398088.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:应用   信息   维度
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议