一种SSL加密网络流的应用类型识别方法与装置
技术领域
本发明涉及一种SSL加密网络流的应用类型识别方法与装置。
背景技术
为了提高网络数据在传输过程中的安全性和隐私性,SSL(Secure SocketsLayer,安全套接层)协议被广泛地应用在各个领域(例如网上银行、邮箱服务、VPN等)的信息加密传输过程中。正是由于SSL的加密功能,使得基于SSL建立的会话通道上所传输的数据并不可见,从而加大了系统(网络审计以及流量控制系统)识别网络流应用类型的难度。
传统基于端口的检测方法仅仅能够识别出SSL协议,并不能识别出SSL加密网络流所属的应用类型。而目前企业最常用的深度包检测(Deep Packet Inspection,DPI)方法对于不可见的应用层载荷信息也较难识别,并且解密的方法有可能会涉及到侵犯隐私的问题。
发明内容
本发明的主要目的在于提出一种SSL加密网络流的应用类型识别方法,能够在不侵犯隐私的前提下,快速有效地识别出SSL加密网络流的应用类型。
本发明为达上述目的所提出的技术方案如下:
一种SSL加密网络流的应用类型识别方法,包括以下步骤:
S1、对一数据包进行第一预处理,以得到该数据包所属应用类型的同会话应用标识号,并以所述同会话应用标识号为索引值,查询预先建立的第一缓存哈希表中是否存在与所述数据包的同会话应用标识号相匹配的第一映射关系:若是,则执行步骤S2;若否,则执行步骤S3;
其中所述第一缓存哈希表中存储有多对所述第一映射关系<APP-ID-1,Type>,Type为某一应用类型,APP-ID-1为所述某一应用类型对应的同会话应用标识号;
S2、将与所述数据包的同会话应用标识号相匹配的第一映射关系中的Type识别为所述数据包所属的应用类型;对下一数据包返回步骤S1;
S3、对所述数据包进行第二预处理以获取所述数据包所属应用类型的跨会话应用标识号,并以所述跨会话应用标识号为索引值,查询预先建立的第二缓存哈希表中是否存在与所述数据包的跨会话应用标识号相匹配的第二映射关系:若是,且所述数据包与上一已识别数据包的时间间隔小于一预设阈值,则执行步骤S4;若否,则执行步骤S5;
其中所述第二缓存哈希表中存储有多对所述第二映射关系<APP-ID-2,Type>,Type为所述某一应用类型,APP-ID-2为所述某一应用类型对应的跨会话应用标识号;
S4、将与所述数据包的跨会话应用标识号相匹配的第二映射关系中的Type识别为所述数据包所属的应用类型;对下一数据包返回步骤S1;
S5、筛选SSL类型数据包;
S6、从SSL类型数据包中的一预定数据包提取指纹信息,并与特征库中的特征信息进行比对,根据比对结果判断所述预定数据包所属的应用类型;对所述预定数据包的下一数据包返回步骤S1;
S7、将所述预定数据包所属的应用类型及对应的同会话应用标识号、跨会话应用标识号分别形成新的第一映射关系和新的第二映射关系,以分别更新所述第一缓存哈希表、所述第二缓存哈希表。
网络流是由很多个数据包组成的,尤其是对于SSL加密网络流来说,通常是在握手阶段建立了加密通道之后,才开始在通道上传输加密数据,所以同一网络流中(同一会话)握手阶段的数据包载荷是透明的,且处于网络流的早期阶段。而传输通道上相同应用类型的同一网络流的数据包一定具有相同APP-ID-1(同会话应用标识号);传输通道上在短时间内(数据包时间间隔小于预设阈值)相同应用类型不同网络流的数据包的五元组信息中仅是源端口号不同,则具有相同APP-ID-2(跨会话应用标识号)。因此,采用本发明提供的上述识别方法,能够快速有效地识别出SSL加密网络流的应用类型,具体分析如下:当获取到一数据包的APP-ID-1后,如果在第一缓存哈希表中能够查询得到匹配的第一映射关系,则说明该数据包的同类(应用类型和网络流均相同)数据包在此之前已被识别出应用类型,使得该数据包的识别非常之快速(仅需要计算APP-ID-1并作哈希表查询);而如果第一缓存哈希表中不存在与该数据包的APP-ID-1匹配的第一映射关系,说明该数据包是其所属网络流中的第1个数据包,该类网络流的数据包此前并未被识别过,此时获取该数据包的APP-ID-2,若在第二缓存哈希表中能够查询得到匹配的第二映射关系,则说明该类网络流的数据包虽未被识别过但与该类网络流具有相同应用类型的网络流已被识别,使得本次的该数据包的识别也能够较为快速(仅需查询两次哈希表)。而如果在查询了第二缓存哈希表后仍未查询到匹配结果,则需先判断该数据包是否为SSL类型的数据包,如果不是,则在本识别方法中可以不予处理,如果是,才执行进一步的应用类型识别(即步骤S6),而在步骤S6中,仅需对所述预定数据包进行进一步的应用类型识别,得到该预定数据包的应用类型后,将其更新到缓存哈希表,如此一来,本次通信会话中,该预定数据包之后的数据包识别,只需计算这些数据包的APP-ID-1、APP-ID-2并进行哈希表查询即可确定应用类型,从而达到快速、有效识别的效果,解决审计系统、流量控制系统、网络管理系统等加密流的过滤和控制问题。同时也可看出,本发明的识别方法克服了识别加密数据的困难性,同时也不会涉及侵犯数据隐私的问题。
更进一步地,步骤S1中的第一预处理具体包括:提取所述数据包的五元组信息并进行哈希运算;步骤S3中的第二预处理具体包括:提取所述数据包的四元组信息并进行哈希运算;其中,五元组信息包括源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议,四元组信息包括源IP地址、目的IP地址、目的端口号以及传输层协议。
更进一步地,步骤S5具体包括:提取所述数据包的目的端口号以及应用层载荷首部特征,采用过滤规则筛选SSL类型数据包。
更进一步地,所述过滤规则如下:
filterRule={dir=0,count=1,dstport=443}&&{dir=0,count=3,off_set=0,feature=0x16}
其中:dir表示数据包的传输方向,所述传输方向包括从客户端到服务器端以及从服务器端到客户端,count表示数据包属于同一网络流的第几个数据包,dstport表示数据包的目的端口号,off_set表示应用层载荷偏移量,feature表示在某一偏移量的指纹信息;
在所述过滤规则中:{dir=0,count=1,dstport=443}表示从客户端到服务器端的第1个数据包的目的端口号为443;{dir=0,count=3,off_set=0,feature=0x16}表示从客户端到服务器端的第3个数据包的应用层载荷偏移量为0,且该第3个数据包从第一个字节开始,填充有指纹信息0X16。
更进一步地,步骤S6中,所述预定数据包是指SSL握手阶段从服务器端到客户端、且用于交换证书的证书数据包;所述证书数据包的指纹信息包含可用于识别应用类型的记录。
更进一步地,步骤S6中进行所述比对的过程具体包括:将所述指纹信息中的所述记录以及所述指纹信息在应用层载荷的位置以二进制形式表示为链表,并分别计算所述链表与特征库中的各条特征信息之间的相似度。
更进一步地,所述相似度的计算基于汉明距离,相似度Sim(F,Fk)的计算如下:
其中:F为所述链表,Fk为特征库中的第k条特征信息,fj表示链表F的第j位,fkj表示第k条特征信息的第j位,链表F的长度以及特征库中每条特征信息的长度同为n;
当Sim(F,Fk)=0时,将第k条特征信息所对应的应用类型识别为所述预定数据包所属的应用类型。
本发明另还提出一种SSL加密网络流的应用类型识别装置,包括:
第一缓存哈希表,存储有多对第一映射关系<APP-ID-1,Type>,Type为某一应用类型,APP-ID-1为所述某一应用类型的同会话应用标识号;
第二缓存哈希表,存储有多对第二映射关系<APP-ID-2,Type>,Type为所述某一应用类型,APP-ID-2为所述某一应用类型的跨会话应用标识号;
特征库,存储有多条特征信息,每条特征信息表示一种应用类型;
第一数据包预处理模块,用于对一数据包进行第一预处理以得到该数据包所属应用类型的同会话应用标识号;
第二数据包预处理模块,用于对一数据包进行第二预处理以得到该数据包所属应用类型的跨会话应用标识号;
第一查询匹配模块,连接于第一数据包预处理模块,用于:以所述同会话应用标识号为索引值查询第一缓存哈希表中是否存在与所述数据包的同会话应用标识号相匹配的第一映射关系并输出查询结果,查询结果包括:存在和不存在;
第二查询匹配模块,连接于第一查询匹配模块和第二数据包预处理模块,用于:当第一查询匹配模块输出的查询结果为不存在时,以所述跨会话应用标识号为索引值查询第二缓存哈希表中是否存在与所述数据包的跨会话应用标识号相匹配的第二映射关系并输出查询结果,查询结果包括:存在和不存在;
应用类型确定模块,连接于第一查询匹配模块和第二查询匹配模块,用于:当第一查询匹配模块的查询结果为存在时,将与所述数据包的同会话应用标识号相匹配的第一映射关系中的Type识别为所述数据包所属的应用类型;以及当第二查询匹配模块的查询结果为存在,且所述数据包与上一已识别数据包的时间间隔小于一预设阈值时,将与所述数据包的跨会话应用标识号相匹配的第二映射关系中的Type识别为所述数据包所属的应用类型;
筛选模块,连接于第二查询匹配模块,用于:当第二查询匹配模块的查询结果为不存在时,筛选属于SSL加密网络流的数据包;
比对识别模块,连接于筛选模块,用于:从属于SSL加密网络流的一预定数据包中提取指纹信息,并与特征库中的特征信息进行比对,根据比对结果判断所述预定数据包所属的应用类型;
更新模块,连接于比对识别模块和第一、第二缓存哈希表,用于:将所述预定数据包所属的应用类型及对应的同会话应用标识号、跨会话应用标识号分别形成新的第一映射关系和新的第二映射关系,并分别更新至所述第一缓存哈希表、所述第二缓存哈希表。
更进一步地,所述第一数据包预处理模块包括:五元组信息提取单元,提取所述数据包的五元组信息;其中,五元组信息包括源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议;以及,第一哈希运算单元,对提取的五元组信息进行哈希运算,以得到所述数据包所属应用类型的同会话应用标识号;
所述第二数据包预处理模块包括:四元组信息提取单元,提取所述数据包的四元组信息;其中,四元组信息包括源IP地址、目的IP地址、目的端口号以及传输层协议;以及,第二哈希运算单元,对提取的四元组信息进行哈希运算,以得到所述数据包所属应用类型的跨会话应用标识号。
本发明提供的前述识别装置,能够快速有效地识别SSL加密网络流的应用类型,可应用于例如防火墙处,解决审计系统、流量控制系统、网络管理系统等加密流的过滤和控制问题。
附图说明
图1是本发明具体实施方式提供的SSL加密网络流的应用类型识别方法的流程图。
具体实施方式
下面结合附图和优选的实施方式对本发明作进一步说明。
本发明的具体实施方式提供一种SSL加密网络流的应用类型识别方法,可用于例如审计系统、流量控制系统或网络管理系统中识别SSL加密网络流所属的应用类型。参考图1,该识别方法包括以下步骤一至七:
步骤一、对一数据包进行第一预处理,以得到该数据包所属应用类型的同会话应用标识号(APP-ID-1),并以APP-ID-1为索引值,查询预先建立的第一缓存哈希表中是否存在与所述数据包的APP-ID-1相匹配的第一映射关系:若是,则执行步骤二;若否,则执行步骤三。此处的数据包可以是通信会话(即网络流)中的任一数据包。其中所述第一缓存哈希表中存储有多对所述第一映射关系<APP-ID-1,Type>,Type为某一应用类型,APP-ID-1为所述某一应用类型对应的同会话应用标识号。具体地,某一种应用类型的APP-ID-1可通过如下方法获得:同种应用类型且属于同一网络流(同一会话)的数据包具有相同的五元组信息(即源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议),通过对五元组信息进行哈希计算可得到APP-ID-1。第一缓存哈希表中存储的内容例如可以包括:<0001,Type1>,<0010,Type1>,<0011,Type1>,<0100,Type2>,<0101,Type3>,……,其中的<0001,Type1>、<0010,Type1>以及<0011,Type1>表示应用类型Type1的三种映射关系,其APP-ID-1分别为0001、0010、0011,表示了同属于应用类型Type1的三种不同网络流。
步骤二、将与所述数据包的同会话应用标识号APP-ID-1相匹配的第一映射关系中的Type识别为所述数据包所属的应用类型;然后对下一数据包进行识别,即返回步骤一;
步骤三、对所述数据包进行第二预处理以获取所述数据包所属应用类型的跨会话应用标识号APP-ID-2,并以APP-ID-2为索引值,查询预先建立的第二缓存哈希表中是否存在与APP-ID-2相匹配的第二映射关系:若是,且所述数据包与上一已识别数据包的时间间隔小于一预设阈值,则执行步骤四;若否,则执行步骤五。其中,所述第二缓存哈希表中存储有多对所述第二映射关系<APP-ID-2,Type>,Type为所述某一应用类型,APP-ID-2为所述某一应用类型对应的跨会话应用标识号。具体地,某一种应用类型的APP-ID-2可通过如下方法获得:不同网络流但属于同种应用类型的数据包具有相同的四元组信息(即源IP地址、目的IP地址、目的端口号以及传输层协议),通过对四元组信息进行哈希计算可得到APP-ID-2。
步骤四、将与所述数据包的跨会话应用标识号相匹配的第二映射关系中的Type识别为所述数据包所属的应用类型;然后识别下一数据包,即返回步骤一。
步骤五、筛选SSL类型数据包。如果经前述步骤仍未确定数据包类型,则有可能该数据包及其网络流并非SSL网络流,需先进行筛选识别是否为SSL类型数据包。筛选的方法具体是:提取所述数据包的目的端口号以及应用层载荷首部特征,采用过滤规则筛选出SSL类型数据包。所述过滤规则如下:filterRule={dir=0,count=1,dstport=443}&&{dir=0,count=3,off_set=0,feature=0x16}其中:dir表示数据包的传输方向,所述传输方向包括dir=0(从客户端到服务器端)以及dir=1(从服务器端到客户端),count表示数据包属于同一网络流的第几个数据包,dstport表示数据包的目的端口号,off_set表示应用层载荷偏移量,
feature表示在某一偏移量的指纹信息;
在所述过滤规则中:{dir=0,count=1,dstport=443}表示从客户端到服务器端的第1个数据包的目的端口号为443;{dir=0,count=3,off_set=0,feature=0x16}表示从客户端到服务器端的第3个数据包的应用层载荷偏移量为0,且该第3个数据包从第一个字节开始,填充有指纹信息0X16。
当该网络流的所述第1个数据包及第3个数据包满足所述过滤规则所设定的条件时,即可认为后续具有相同五元组信息的数据包(即该网络流的后续数据包)都是SSL类型的。
步骤六、从SSL类型数据包中的一预定数据包提取指纹信息(或称识别名信息,Distinguished Name,DN),并与特征库(也是预先建立的)中的特征信息进行比对,根据比对结果判断所述预定数据包所属的应用类型,然后返回步骤一对该预定数据包之后的数据包进行识别;同时将所述预定数据包所属的应用类型及对应的同会话应用标识号、跨会话应用标识号分别形成新的第一、第二映射关系,分别更新至所述第一、第二缓存哈希表。所述预定数据包是指SSL握手阶段从服务器端到客户端、且用于交换证书的证书数据包,一般而言在第5个数据包(即dir=1,count=5)交换证书X.509;所述证书数据包的指纹信息包含可用于识别应用类型的记录,这些记录至少包括commonName(CN)、organizationalUnitName(OU)以及organizationName(O),这些记录能够唯一识别证书签发的对象实体(即证书的使用者),也能够用来识别应用类型。例如,163邮箱:CN=*.163.com,OU=MAIL Dept.,O=NetEase(Hangzhou)Network Co.;支付宝应用:CN=*.alipay.com,OU=Operations Department,O=Alipay.com Co.,Ltd。
因此,一般而言,只需对用于交换证书的数据包进行步骤六,将其指纹信息中的所述记录以及所述指纹信息在应用层载荷的位置(应用层载荷偏移量)以二进制形式表示为链表,并分别计算所述链表与特征库中的各条特征信息之间的相似度。基于汉明距离的相似度计算如下:
上式中,F为所述链表(实质上是一个包含n个元素的向量),Fk为特征库中的第k条特征信息(同样为包含n个元素的向量),fj表示链表F的第j位,fkj表示第k条特征信息的第j位,链表F的总长度为n,同时特征库中的每条特征信息的长度也为n;
当Sim(F,Fk)=0时,即表示链表与特征库中的第k条特征信息相比,对应位全部相同,则将第k条特征信息所对应的应用类型识别为所述预定数据包(即通常的第5个数据包)所属的应用类型。确定应用类型后,将新增的应用类型及其对应的APP-ID-1、APP-ID-2分别形成新的第一映射关系、第二映射关系,分别更新至第一、第二缓存哈希表,为后续数据包的快速识别奠定基础。一般而言,证书数据包的后续数据包(只要数据包之间的时间间隔小于一预设阈值,该预设阈值根据具体的通信类型来确定)的应用类型与证书数据包相同(即它们至少具有相同的四元组信息),因此这些后续数据包的识别只需计算相应的APP-ID-1、APP-ID-2即可识别,使得整个识别过程加快。
本发明的具体实施方式另提供了一种SSL加密网络流的应用类型识别装置,包括:
第一缓存哈希表,存储有多对第一映射关系<APP-ID-1,Type>,Type为某一应用类型,APP-ID-1为所述某一应用类型的同会话应用标识号;
第二缓存哈希表,存储有多对第二映射关系<APP-ID-2,Type>,Type为所述某一应用类型,APP-ID-2为所述某一应用类型的跨会话应用标识号;
特征库,存储有多条特征信息,每条特征信息表示一种应用类型;
第一数据包预处理模块,用于对一数据包进行第一预处理以得到该数据包所属应用类型的同会话应用标识号;
第二数据包预处理模块,用于对一数据包进行第二预处理以得到该数据包所属应用类型的跨会话应用标识号;
第一查询匹配模块,连接于第一数据包预处理模块,用于:以所述同会话应用标识号为索引值查询第一缓存哈希表中是否存在与所述数据包的同会话应用标识号相匹配的第一映射关系并输出查询结果,查询结果包括:存在和不存在;
第二查询匹配模块,连接于第一查询匹配模块和第二数据包预处理模块,用于:当第一查询匹配模块输出的查询结果为不存在时,以所述跨会话应用标识号为索引值查询第二缓存哈希表中是否存在与所述数据包的跨会话应用标识号相匹配的第二映射关系并输出查询结果,查询结果包括:存在和不存在;
应用类型确定模块,连接于第一查询匹配模块和第二查询匹配模块,用于:当第一查询匹配模块的查询结果为存在时,将与所述数据包的同会话应用标识号相匹配的第一映射关系中的Type识别为所述数据包所属的应用类型;以及当第二查询匹配模块的查询结果为存在,且所述数据包与上一已识别数据包的时间间隔小于一预设阈值时,将与所述数据包的跨会话应用标识号相匹配的第二映射关系中的Type识别为所述数据包所属的应用类型;
筛选模块,连接于第二查询匹配模块,用于:当第二查询匹配模块的查询结果为不存在时,筛选属于SSL加密网络流的数据包;
比对识别模块,连接于筛选模块,用于:从属于SSL加密网络流的一预定数据包中提取指纹信息,并与特征库中的特征信息进行比对,根据比对结果判断所述预定数据包所属的应用类型;
更新模块,连接于比对识别模块和第一、第二缓存哈希表,用于:将所述预定数据包所属的应用类型及对应的同会话应用标识号、跨会话应用标识号分别形成新的第一映射关系和新的第二映射关系,并分别更新至所述第一缓存哈希表、所述第二缓存哈希表。
在一种具体实施例中,所述第一数据包预处理模块包括:
五元组信息提取单元,提取所述数据包的五元组信息;其中,五元组信息包括源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议;以及
第一哈希运算单元,对提取的五元组信息进行哈希运算,以得到所述数据包所属应用类型的同会话应用标识号;
所述第二数据包预处理模块包括:
四元组信息提取单元,提取所述数据包的四元组信息;其中,四元组信息包括源IP地址、目的IP地址、目的端口号以及传输层协议;以及
第二哈希运算单元,对提取的四元组信息进行哈希运算,以得到所述数据包所属应用类型的跨会话应用标识号。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。