基于可编程数据平面的数据包转发攻击防御方法及系统

文档序号:33121982发布日期:2023-02-01 04:04阅读:48来源:国知局
基于可编程数据平面的数据包转发攻击防御方法及系统

1.本公开涉及网络安全技术领域,具体涉及一种基于可编程数据平面的sdn数据包转发攻击防御的方法及系统。


背景技术:

2.本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
3.软件定义网络(software defined network,sdn)是一种新型的网络架构,它是一种网络虚拟化的实现方式。sdn的核心思想就是要分离控制平面与数据平面,并使用集中式的控制器来完成对网络的可编程任务,正是这种集中式控制和数据控制分离(解耦)的特点使sdn具有了强大的可编程能力,这种强大的可编程性使网络能够真正地被软件所定义,达到简化网络运维、灵活管理调度的目标。
4.软件定义网络的出现,在一定程度上缓解了传统网络带来的问题但同时也面临着安全挑战。sdn架构从上到下分为应用平面、控制平面和数据平面。在数据平面中,所有的路由决策都由控制器做出,交换机只根据控制器的指令将数据从一个端口转发到另一个端口。当交换机从主机或其他交换机接收到带有新报头字段的数据包时,它就向控制器发送一个packet-in消息,以便获得通往目的地的路径,控制器用一个flow-add消息响应该交换机,该消息包含将数据转发到目的地的流规则。sdn数据平面由专门从事数据包转发的交换机和路由器等网络设备组成,与传统网络不同,这些只是简单的转发元素,没有嵌入式智能来做出自主决策,因此极易受到各类攻击。其中最常见的就是丢包攻击、注入攻击和中间人攻击:丢包攻击就是攻击者在数据包传输过程中非法截取并丢弃;注入攻击是指攻击者向正常工作的链路中恶意注入数据包,消耗现有资源,降低网络的传输效率;中间人攻击就是攻击者在数据包传输过程中恶意截取数据包,恶意修改用户发送的数据包中的数据信息或者目的ip地址,导致数据传达错误或者传达路径错误。这些攻击会对整个sdn网络产生威胁,可能会导致最终用户的隐私数据泄露以及服务质量下降,因此十分有必要提出高效的防御攻击的策略。
5.目前,已经有不少策略来防御针对sdn数据平面的攻击,大都依赖于控制平面和数据平面之间交互的openflow协议,openflow协议在逐渐完善演化过程中,表字段和表类型不断增加,但openflow并不弹性地支持增加匹配域,这增加了设计交换机的难度,也严重影响了openflow协议的版本稳定性。与此同时,由于sdn具有转控分离的特点,数据平面执行转发策略需要得到控制器的指示,这极大降低了执行效率。


技术实现要素:

6.本公开为了解决上述问题,提出了基于可编程数据平面的数据包转发攻击防御方法及系统,在一种可编程数据平面中,利用p4语言编程对软件定义网络数据包转发进行安全验证以及防御。
7.根据一些实施例,本公开采用如下技术方案:
8.基于可编程数据平面的数据包转发攻击防御方法,包括:
9.获取网络中的链路拓扑信息以及链路的端口实时状态信息,将其解析成p4语言编程的信息格式;
10.构造数据包并对构造的数据包进行转发,确定收发双方和路径,对传输的数据包进行动态攻击检测,检测所传输的数据包是否发生攻击,当确定数据包被攻击时,则判断发生攻击的类型,确定攻击的类型后启动相应的防御攻击过程。
11.根据一些实施例,本公开采用如下技术方案:
12.基于可编程数据平面的数据包转发攻击防御系统,包括:
13.信息获取模块,用于获取网络中的链路拓扑信息以及链路的端口实时状态信息,将其解析成p4语言编程的信息格式;
14.数据包构造模块,用于构造数据包并对构造的数据包进行转发,确定收发双方和路径;
15.动态检测攻击模块,用于对传输的数据包进行动态攻击检测,检测所传输的数据包是否发生攻击;
16.防御攻击模块,用于当确定数据包被攻击时,则判断发生攻击的类型,确定攻击的类型后启动相应的防御攻击过程。
17.根据一些实施例,本公开采用如下技术方案:
18.一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行所述的基于可编程数据平面的数据包转发攻击防御方法。
19.与现有技术相比,本公开的有益效果为:
20.本公开基于可编程数据平面、p4编程语言和软件定义网络架构,非常灵活地对数据平面传输的数据包进行验证,数据平面传输数据包不需要向控制器发送请求并等待控制器响应后再处理该数据包,极大地提高了数据包的转发效率。同时由于p4语言的协议无关性,在验证过程中无需引入相关协议。
21.针对丢包攻击和注入攻击,采用比较转发前后数据包的数量的方式简单准确检测攻击,同时采用概率方式对数据包进行验证,而并非对所有数据包进行验证,利用验证结果来灵活调节概率大小,在保证准确验证的同时降低了数据平面转发设备很大的开销,减少了数据计算量,从而减轻了整个系统的开销,利用加密方式防御数据包数据内容篡改攻击,同时引入控制器当作可信第三方充当证书颁发机构为数据包发送端与接收端发放证书,协商出密钥对数据包进行加密传输,但是数据包的转发和操作仍然通过p4编程实现,在保证系统的安全性的同时不会影响数据包在数据平面实现自主转发和处理。利用p4语言的灵活性,对传输的数据包结果添加附件,用于接收端验证,有效防御对于数据包转发路径的攻击,同时引入开销非常小。
附图说明
22.构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
23.图1为本公开实施例中所采用的网络拓扑图;
24.图2为本公开实施例中所述的基于p4环境以及sdn的可编程数据平面数据包丢包攻击和注入攻击的动态检测与防御系统的流程图;
25.图3为本公开实施例中国所述的基于p4环境以及sdn的可编程数据平面数据包中间人攻击的防御系统的流程图。
具体实施方式:
26.下面结合附图与实施例对本公开作进一步说明。
27.应该指出,以下详细说明都是实例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
28.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
29.实施例1
30.本公开的一种实施例中提供了一种基于可编程数据平面的数据包转发攻击防御方法,实施步骤为:
31.s1:获取网络中的链路拓扑信息以及链路的端口实时状态信息,将其解析成p4语言编程的信息格式;
32.s2:构造数据包并对构造的数据包进行转发,确定收发双方和路径,对传输的数据包进行动态攻击检测,检测所传输的数据包是否发生攻击,当确定数据包被攻击时,则判断发生攻击的类型,确定攻击的类型后启动相应的防御攻击过程。
33.其中,所述判断发生攻击的类型包括丢包攻击、注入攻击以及中间人攻击。
34.作为一种实施例,本公开的方法是基于可编程数据平面、p4编程语言以及软件定义网络的架构,具体的方法实施例的架构为:编写json脚本来描述网络的拓扑结构,指定p4编辑器和p4交换机。编写p4代码,在headers部分定义所需要的数据结构;parser部分将数据包中headers中的信息利用状态机解析并存储为p4能理解的数据结构;ingress部分定义数据包在转发过程中需要匹配的表和动作。
35.作为一种实施例,为了实现对数据包的动态检测,主要针对丢包攻击和注入攻击,在检测攻击之前首先判断概率值是否大于阈值来决定是否验证数据包。利用p4语言进行编程,通过概率值进行数据包转发验证,以减少对所有数据包进行验证产生的巨大开销。
36.具体的,选定概率值和阈值,概率值是一个根据验证结果变化的变量,阈值是经过分析实验得出的一个用于判断是否需要进行验证的最佳常量。设置这两个值是为了实现动态验证,只有概率值大于阈值时进行检测,不对所有数据包进行验证从而减小开销。当概率值大于阈值时进行数据包转发验证,否则不进行验证。如果验证成功则说明数据包未受到攻击,则减小概率值;如果验证失败则说明数据包受到了攻击,则增大概率值。为了避免概率值一直小于阈值而出现一直不进行数据包转发验证的情况,采取设置周期时间的策略,当概率值小于阈值后,经过一个周期时间就重新激活验证。
37.其中,所述数据包使用scapy流量生成工具生成不同服务类型的流量,并从不同的终端发送,构造的数据包中包括源ip地址、目的ip地址以及端口号等信息。
38.作为一种实施例,当有数据包要进行传输时,数据平面不必再询问控制器该如何处理该数据包,利用p4语言定义该数据包在数据平面的传输路径以及传输路径途中每个转发设备对它的操作,这样可以极大地减少数据包的处理时间。在传输数据包之前,首先判断概率值是否大于阈值,概率值若小于阈值则不进行验证,按照p4编程好的转发路径进行转发;概率值若大于阈值则进行验证,则具体的检测所传输的数据包是否发生丢包攻击或者注入攻击的方法为:发送端与接收端获取并存储当前链路中已经传输过的数据包数量的计数器值,发送端在发送数据包后将获取到的值增加1,在传输过程中所经过的交换机上只执行按端口转发动作,当接收端接收到数据包时,之前获取到的计数器值增加1,通过对比数据包传输前后计数器值来判断是否发生丢包攻击或者注入攻击。
39.具体的,假设h1主机向h8主机发送数据包,在传输数据包之前,对比数据包传输前后的计数器值来判断是否发生攻击,发送端与接收端获取系统中用于计算数据包传输数量的计数器值并分别存储为n1和n2,数据包开始传输时,n1=n1+1,当接收端收到数据包时,n2=n2+n(其中n为接受端接收到的数据包数量),经过正常传输数据包所需要的时间间隔后,比较n1与n2的值来判断是否发生攻击。
40.当接收端获取并存储到的当前链路中已经传输过的数据包数量的计数器值小于发送端获取并存储当前链路中已经传输过的数据包数量的计数器值,则判定发生了丢包攻击;当接收端获取并存储到的当前链路中已经传输过的数据包数量的计数器值大于发送端获取并存储当前链路中已经传输过的数据包数量的计数器值,则判定发生了注入攻击,即判断发生哪种攻击是通过比较n1和n2的值来判断的,若n1》n2,则发生了丢包攻击;若n1《n2,则发生了注入攻击;否则数据包传输正常。
41.进一步的,若发生丢包攻击,则通知发送端重新发送数据包;若发生注入攻击,则丢弃该时间段内接收到的数据包并通知发送端重新发送数据包。
42.上述所进行的阈值的选择是通过设置不同的阈值,然后根据检测攻击的准确率来选择阈值,动态检测通过一下步骤实现:
43.(1)首先令概率s,参数x,阈值c,当s》c时,对数据包进行验证,若验证成功,说明数据包没有受到攻击,则减小s,令s=s*x;若验证失败,说明数据包受到攻击,则增大s,令
44.(2)当s《c时,数据包在转发路径中正常转发,不执行验证操作,同时为其设置一个周期t,当数据包在系统中正常传输且不验证的时间t到达周期时间t时,重新触发验证。由此实现动态检测以减小开销。
45.作为一种实施例,对数据包转发路径发生中间人攻击的判断方法为:在数据包确认发送端与接受端双方后,将源ip地址与目的ip地址保存为另一个变量,附加到数据包结构中进行传输;当接受端接收到数据包后对其进行解析,判断自己的ip地址是否与该数据包中携带的目的ip地址一致,目的ip地址若一致则证明数据包传输路径并未遭受攻击,否则数据包受到攻击并通知发送端进行重传操作。
46.具体的,中间人攻击主要分为篡改数据包传输路径和篡改数据包数据内容两种,
利用p4语言特点和对数据包加密进行防御,包括:
47.编写json脚本来描述网络拓扑结构,指定p4编译器和p4交换机。与第一方面类似,需要编写p4代码来定义所需要的数据结构并将数据包中headers中的信息利用状态机解析并存储为p4能理解的数据结构,还需要定义数据包在转发过程中需要匹配的表和动作。
48.针对篡改数据包转发路径的攻击,利用p4语言的灵活性,在数据包确认发送端与接受端双方后,将源ip地址与目的ip地址保存为另一个变量,附加到数据包结构中进行传输。当接受端接收到数据包后对其进行解析,判断自己的ip地址是否与该数据包中携带的目的ip地址一致,目的ip地址若一致则证明数据包传输路径并未遭受攻击,否则数据包受到攻击并通知发送端进行重传操作。
49.针对篡改数据包数据内容的攻击,考虑到如果让发送端与接受端协商密钥然后加密数据包容易遭受中间人篡改密钥,不能达到防御攻击目的,因此将控制器功能引入。但并非回归传统sdn网络中的使用控制器指示数据平面数据包的转发与处理,只是让控制器作为可信第三方,充当证书颁发机构(ca)对数据平面设备进行验证并颁发证书,发送与接收端通过密钥协商得出密钥来加密解密数据包,而数据包的转发与处理依旧利用p4语言编程实现。
50.具体的,数据包数据内容篡改攻击防御为:h1向h8发送数据包,首先在控制器安装证书服务,将控制器作为证书颁发机构(ca),当有数据包传输时,发送端向ca提出证书请求,在双方验证完身份后,ca为其颁发证书。同理,ca也能给接收端颁发证书。至此,发送端与接收端可以通过密钥协商生成联合密钥作为后续通信的加密密钥。
51.数据包传输路径篡改攻击防御为:在发送端发送数据包之前将接收端ip地址再一次附加到该数据包结构中,经过一系列传输后,数据包到达接收端。接收端通过解析数据包结构中携带的附件,判断该数据包携带的附加信息中的ip地址是否与自己一致,若一致说明数据包传输正常,否则发送端重传该数据包。
52.具体的,涉及到了发送端和接收端协商密钥问题以及附加目的地址信息问题。首先使用随机数生成器选定一个数p,判断p是否是一个素数,然后根据p确定集合h={2,3,...,p-2},α∈h,将p和α作为域参数公开,协商双方从h中分别选定自己的私有参数a和b,发送端计算a=α
a mod p,接受端计算b=α
b mod p。此时,发送端与接收端已经通过ca的验证并得到其颁发的证书以及ca的公钥,双方交换ca为其颁发的证书,双方利用ca的公钥进行互相认证,认证成功后发送端计算密钥k
ab
=b
a mod p=(αb)amod p=α
ab mod p。同样地,计算密钥k
ab
=a
b mod p=(αa)
b mod p=α
ab mod p,这样发送端与接收端完成密钥协商。对于附加目的地址信息问题,利用p4语言在headers部分定义数据包数据结构,在其中定义用于存储目的地址信息的变量,当数据包确定接收端后并将其地址信息存储随数据包转发,到达接收端后解析数据包并通过判断附件信息与接收端地址信息是否一致判断该数据包是否按正常路径转发。
53.本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
54.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
55.上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1