掌桥专利:专业的专利平台
掌桥专利
首页

一种SDN网络中间人攻击的检测方法

文献发布时间:2023-06-19 16:08:01



技术领域

本发明涉及软件定义网络技术领域,具体地,涉及一种SDN网络中间人攻击的检测方法。

背景技术

相对于传统网络,软件定义网络(Software Defined Network,SDN)的最大特点为将网络中的控制与管理层集中到一个称为SDN控制器的网络单元中,实现了管理平面、控制平面与数据平面之间的一种分离,达到了网络可编程的效果。其灵活的特性却也带来了特别的安全问题,甚至制约了SDN的进一步广泛应用。SDN有着逻辑非常集中的控制平面,以及较为开放、且可编程的接口,更容易受到攻击,且攻击所带来的影响也更加严重。

中间人攻击(Man-in-the-Middle,MITM)的攻击者会分别对网关和受害主机进行ARP欺骗,让受害主机误以为攻击者的硬件地址为网关的硬件地址;同时让网关误以为攻击者的硬件地址为受害主机的硬件地址,转发网关与主机之间的信息,从而难以检测。而在SDN这种新的网络结构下则出现了一种新的针对SDN网络的中间人攻击,具体为针对SDN控制器与交换机之间的一种中间人攻击。

公开日为2020.03.31,公布号为CN110943979A的中国申请专利:SDN网络攻击检测方法、装置、设备和系统,其针对主机与主机之间的中间人攻击,通过统计转发时间,检查有没有时间过长的情况,以此检测SDN网络中是否存在中间人攻击。但是该方案无法有效处理上述针对SDN控制器与交换机之间的中间人攻击。

发明内容

针对现有技术的局限,本发明提出一种SDN网络中间人攻击的检测方法,本方法独特着眼于MITM攻击中,通过修改交换机中的流规则,进而修改这个流上的包的情况。并创新性地利用了布隆过滤器(Bloom Filter;BF)和布谷过滤器(Cuckoo Filter;CF)数据结构针对MITM攻击设计了一个认证——检测框架。该框架在实现了防御目标的同时仅要求较低的存储、计算消耗,充分考虑了网络中部分资源有限的情况。本发明采用的技术方案是:

一种SDN网络中间人攻击的检测方法,对于包含控制器与交换机的SDN网络:

在初始阶段,包括以下步骤:

S11,为SDN网络中的各交换机分别生成一个密钥,分发到对应的交换机中;将包含交换机的身份信息、以对应密钥作为指纹的元素保存进布谷过滤器CF中;

在检测阶段,包括以下步骤:

S21,向待检测流在SDN网络传播过程中经过的w个交换机发送检测请求;

S22,收集该w个交换机根据所述检测请求对所述待检测流中的包进行映射保存,并经过对应密钥加密后的布隆过滤器BF;

S23,利用所述布谷过滤器CF检测所述布隆过滤器BF对应的交换机身份的合法性,获得对应的密钥;

S24,通过对所述布隆过滤器BF进行解密与比对,判断是否发生了中间人攻击。

相较于现有技术,本发明所提供的方法充分利用了CF查找快、可删除的优点实现了控制器对交换机的快速认证,并实现了控制器与交换机之间密钥的轻量存储、快速检索与动态管理;并充分利用了BF空间占用极低、大幅去重、插入过程快的优点,在保证提取了必要信息的同时尽量减小了增加的通信量。整个检测框架在实现了安全目标的同时尽可能地减少了资源消耗。

作为一种优选方案,在初始阶段进行如下映射过程:

h

其中,k

作为一种优选方案,在所述步骤S24中,若该w个交换机提交的布隆过滤器BF解密结果都相同,则认为没有发生中间人攻击;若其中有交换机的解密结果与其它交换机的解密结果不同,则认为该交换机可能受到了中间人攻击。

作为一种优选方案,所述检测请求由五元组{f,s,e,m,n}构成,其中,f为所述待检测流的身份信息,即匹配域的完整内容;s和e分别为所述待检测流的包的开始编号和结束编号;m用于指定匹配域中用于保存进布隆过滤器BF的部分;n为将要保存进布隆过滤器BF的元素的个数,用于辅助构建布隆过滤器BF。

进一步的,交换机收到检测请求后,首先根据f定位到所述待检测流,再根据n来决定布隆过滤器BF的比特数组的长度L。

更进一步的,所述n、L、k之间的关系满足:

估算ln2并换算后得出L的计算公式:

更进一步的,该w个交换机分别通过初始化一个长度为L的比特数组,根据s和e定位所述待检测流的包,根据m将对应的匹配域信息哈希后保存进布隆过滤器BF中。

本发明还提供以下内容:

一种SDN网络中间人攻击的检测系统,包括初始化模块、请求模块、收集模块、合法性检测模块以及解密比对模块;其中:

所述初始化模块用于在初始阶段为SDN网络中的各交换机分别生成一个密钥,分发到对应的交换机中;将包含交换机的身份信息、以对应密钥作为指纹的元素保存进布谷过滤器CF中;

所述请求模块用于向待检测流在SDN网络传播过程中经过的w个交换机发送检测请求;

所述收集模块用于收集该w个交换机根据所述检测请求对所述待检测流中的包进行映射保存,并经过对应密钥加密后的布隆过滤器BF;

所述合法性检测模块用于利用所述布谷过滤器CF检测所述布隆过滤器BF对应的交换机身份的合法性,获得对应的密钥;

所述解密比对模块用于通过对所述布隆过滤器BF进行解密与比对,判断是否发生了中间人攻击。

一种存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现前述的SDN网络中间人攻击的检测方法的步骤。

一种网络设备,包括存储介质、处理器以及储存在所述存储介质中并可被所述处理器执行的计算机程序,所述计算机程序被处理器执行时实现前述SDN网络中间人攻击的检测方法的步骤。

附图说明

图1为MITM攻击的原理图;

图2为一种MITM攻击的示例图;

图3为本发明实施例1提供的SDN网络中间人攻击的检测方法初始阶段的步骤示意图;

图4为本发明实施例1提供的SDN网络中间人攻击的检测方法检测阶段的步骤示意图;

图5为流表项的结构示意图;

图6为匹配域的构成及其对应的传统网络的层级示意图;

图7为CF的结构示意图;

图8为本发明实施例1提供的检测算法伪代码;

图9为本发明实施例2提供的SDN网络中间人攻击的检测系统示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

应当明确,所描述的实施例仅仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请实施例保护的范围。

在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。以下结合附图和实施例对本发明做进一步的阐述。

为了解决现有技术的局限性,本实施例提供了一种技术方案,下面结合附图和实施例对本发明的技术方案做进一步的说明。

实施例1

本实施例将先从原理方面对本实施例的方案进行解释说明。本实施例关注的是SDN中的控制器和某个交换机之间的MITM攻击;攻击者通常会利用一些智能设备在固件升级上的漏洞,在客户端一侧安装一个客户端认证,从而实施KCI(key compromiseimpersonation)攻击,进而达到MITM攻击,控制器和交换机都会将发给对方的信息发给攻击者,与此同时,攻击者将收到的信息向对方转发(也许会修改后再转发)出去,则保持了双方的正常通信,从而实现隐蔽,即图1的效果。

中间人攻击常有的一种攻击模型为重定向攻击,以一个简易的例子:h1与h2之间进行着一个正常的通信,攻击者以控制器的身份,在h1与h2的通信链路上,对其中一个交换机下发一个修改包的流规则:将发往h2的包的目的IP改为h3的IP地址,同时,将h3发过来的包的源IP地址改为h2的IP地址,则原本h1与h2的通信变成了h1与h3的通信,而h1一直以为自己是在和h2通信,如图2所示。攻击者可以把包重定向到自己控制的主机,从而实现更大范围的攻击。

从以上的例子可以看到,MITM攻击的一个关键过程为冒充控制器来下发非法的修改包的流规则,最终导致包的控制信息(特别是匹配域中的信息)遭到非法修改。所以一种检测思路是:在交换机中保存这些修改,并将其上交到控制器进行提取、比对,找出那些非法的修改。

经过大量研究与实践,本实施例的着眼于MITM攻击中,通过修改交换机中的流规则进而修改这个流上的包的情况,创新性地利用了布隆过滤器(Bloom Filter;BF)和布谷过滤器(Cuckoo Filter;CF)数据结构针对MITM攻击设计了一个认证——检测框架。该框架在实现了防御目标的同时仅要求较低的存储、计算消耗,充分考虑了网络中部分资源有限的情况。

具体的,请参考图3和图4,一种SDN网络中间人攻击的检测方法,对于包含控制器与交换机的SDN网络:

在初始阶段,包括以下步骤:

S11,为SDN网络中的各交换机分别生成一个密钥,分发到对应的交换机中;将包含交换机的身份信息、以对应密钥作为指纹的元素保存进布谷过滤器CF中;

在检测阶段,包括以下步骤:

S21,向待检测流在SDN网络传播过程中经过的w个交换机发送检测请求;

S22,收集该w个交换机根据所述检测请求对所述待检测流中的包进行映射保存,并经过对应密钥加密后的布隆过滤器BF;

S23,利用所述布谷过滤器CF检测所述布隆过滤器BF对应的交换机身份的合法性,获得对应的密钥;

S24,通过对所述布隆过滤器BF进行解密与比对,判断是否发生了中间人攻击。

相较于现有技术,本发明所提供的方法充分利用了CF查找快、可删除的优点实现了控制器对交换机的快速认证,并实现了控制器与交换机之间密钥的轻量存储、快速检索与动态管理;并充分利用了BF空间占用极低、大幅去重、插入过程快的优点,在保证提取了必要信息的同时尽量减小了增加的通信量。整个检测框架在实现了安全目标的同时尽可能地减少了资源消耗。

具体的,本方法针对于南向接口为OpenFlow的SDN网络,在这种网络中,控制器和交换机之间利用OpenFlow协议进行通信。实现了OpenFlow的交换机,会保存一个流表。交换机会根据流表来处理数据包。表中的项,称为流表项。如图5所示,一条流表项由匹配域(Match Fields)、优先级(Priority)、处理指令(Instruction)和统计数据等字段构成。如图6所示,流表项中的匹配域用来对包进行识别。例如某个包从交换机的端口1进来,而流表中只有一个流表项,其匹配域里面的Ingress Port值为1,则认为这个包与这个流表项匹配,执行后面的处理指令里面的内容。

布隆过滤器BF是一个用于表示集合的概率性数据结构,主要部件为一个比特数组以及k个哈希函数(h

布谷过滤器CF也是用于表示集合的概率性数据结构,与BF不同的是,CF使用指纹(fingerprint)来表示元素,因此支持元素的删除。如图7所示,CF由一个桶(bucket)数组构成。每个桶有着多个槽(slot),每个槽可以存放一个指纹。除此之外,还有两个哈希函数(本质上为一个)h

h

插入元素x时,首先会生成x的指纹f,然后用h

因此,作为一种优选实施例,在初始阶段进行如下映射过程:

h

其中,k

作为一种优选实施例,在所述步骤S24中,若该w个交换机提交的布隆过滤器BF解密结果都相同,则认为没有发生中间人攻击;若其中有交换机的解密结果与其它交换机的解密结果不同,则认为该交换机可能受到了中间人攻击。

作为一种优选实施例,所述检测请求由五元组{f,s,e,m,n}构成,其中,f为所述待检测流的身份信息,即匹配域的完整内容;s和e分别为所述待检测流的包的开始编号和结束编号;m用于指定匹配域中用于保存进布隆过滤器BF的部分;n为将要保存进布隆过滤器BF的元素的个数,用于辅助构建布隆过滤器BF。

进一步的,交换机收到检测请求后,首先根据f定位到所述待检测流,再根据n来决定布隆过滤器BF的比特数组的长度L。

更进一步的,所述n、L、k之间的关系满足:

估算ln2并换算后得出L的计算公式:

更进一步的,该w个交换机分别通过初始化一个长度为L的比特数组,根据s和e定位所述待检测流的包,根据m将对应的匹配域信息哈希后保存进布隆过滤器BF中。

具体的,当保存进BF的元素个数达到峰值n时,交换机i使用各自的密钥k

实施例2

一种SDN网络中间人攻击的检测系统,请参阅图9,包括初始化模块11、请求模块21、收集模块22、合法性检测模块23以及解密比对模块24;其中:

所述初始化模块11用于在初始阶段为SDN网络中的各交换机分别生成一个密钥,分发到对应的交换机中;将包含交换机的身份信息、以对应密钥作为指纹的元素保存进布谷过滤器CF中;

所述请求模块21用于向待检测流在SDN网络传播过程中经过的w个交换机发送检测请求;

所述收集模块22用于收集该w个交换机根据所述检测请求对所述待检测流中的包进行映射保存,并经过对应密钥加密后的布隆过滤器BF;

所述合法性检测模块23用于利用所述布谷过滤器CF检测所述布隆过滤器BF对应的交换机身份的合法性,获得对应的密钥;

所述解密比对模块24用于通过对所述布隆过滤器BF进行解密与比对,判断是否发生了中间人攻击。

具体的,本实施例提供的SDN网络中间人攻击的检测系统可以作为SDN网络中SDN控制器的一个组成部分。

实施例3

一种存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现实施例1或2中的SDN网络中间人攻击的检测方法的步骤。

实施例4

一种网络设备,包括存储介质、处理器以及储存在所述存储介质中并可被所述处理器执行的计算机程序,所述计算机程序被处理器执行时实现实施例1或2中的SDN网络中间人攻击的检测方法的步骤。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

技术分类

06120114713718