本文摘要:摘 要 由于软件定义网络(SDN)的数据平面只负责流量转发,并不具备识别流规则是否正确的功能,使得攻击者可通过恶意向数据平面注入错误流规则,造成网络拥塞和信息泄露,甚至是网络瘫痪等严重后果.鉴于区块链的可追溯、不可篡改等特性,提出了一个在控制平面运行的基于
摘 要 由于软件定义网络(SDN)的数据平面只负责流量转发,并不具备识别流规则是否正确的功能,使得攻击者可通过恶意向数据平面注入错误流规则,造成网络拥塞和信息泄露,甚至是网络瘫痪等严重后果.鉴于区块链的可追溯、不可篡改等特性,提出了一个在控制平面运行的基于区块链的错误流规则检测(FFRD-BC)机制,当控制器向数据平面下发流规则的同时将其存储到区块链中,通过随机选择数据平面中的流规则并验证其是否存在于区块链中,来检测出数据平面中第三方行动者注入的错误流规则.其次,在FFRD-BC的流规则检测阶段,引入基于实用拜占庭容错共识算法的投票验证策略,避免由于区块链节点一致性不稳定而导致的误检情况.实验结果表明:随着检测次数的增加,提出的FFRD-BC机制能够有效检测数据平面中第三方行动者注入的错误流规则,并且与自主验证策略相比有效降低了误检率.
关键词 软件定义网络;区块链;流规则检测;共识算法
软件定义网络(Software-Defined Networking,SDN)是一种新型的网络体系架构,具有转控分离、集中控制的特点 .它的核心思想是将数据平面和控制平面解耦,通过控制平面下发流规则,从而实现灵活高效地网络流量控制[1-2].随着技术的发展及服务需求的增加,网络攻击更加频繁,具有隐蔽性、持续性的网络威胁增多[3].但由于SDN数据平面中的转发设备只负责转发操作,并不具备识别流规则是否正确的功能,如果交换机按照第三方行动者下发的错误流规则转发数据流,将造成网络拥塞、信息泄露、网络瘫痪等严重后果.因此,保证SDN数据平面接收到的流规则的正确性对SDN网络来说至关重要[4-5].
区块链技术将交易信息打包为区块,通过数字签名实现数据的安全传输、共识机制保证数据的一致性、哈希函数实现数据的可追溯与不可篡改,来解决数据的可信问题,为检测SDN数据平面中第三方行动者下发的错误流规则提供了新的解决方案[6-8].然而,在实际应用中,区块链节点通过共识机制完成一致性的效果受网络影响严重 .当网络同步性较差时,即使网络中没有恶意节点进行主动攻击,共识机制也无法稳定保持强一致性[9].使用区块链技术解决涉及流规则的 SDN 安全问题,主要是将区块链作为一个分布式存储平台,经过共识机制达成共识后将流规则等网络信息写入区块链中[6].
但该思路只能够保证流规则难以被恶意篡改,并没有考虑到第三方行动者恶意向数据平面中写入错误流规则的情况.为保证 SDN数据平面中流规则的正确性,本文提出一种基于区块链的错误流规则检测(FalseFlow Rule Detection based on Blockchain,FFRD-BC)机制,随机选择数据平面中的流规则并验证其是否存在于区块链中,以检测数据平面中第三方行动者注入的错误流规则 . 一旦检测到错误流规则,立即下发删除命令 . 此外,为了避免由于区块链节点之间一致性不稳定而导致误删正确流规则的情况,检测 阶 段 引 入 了 基 于 实 用 拜 占 庭 容 错(PracticalByzantine Fault Tolerance,PBFT)共识算法的投票验证策略,只有经过多数区块链节点投票验证后被检测为错误的流规则才会被删除,以达到有效而准确地检测错误流规则并将其从交换机中删除的目的.
1 问题描述及相关工作
在 SDN 网络中,数据平面根据控制平面的 SDN控制器下发的流规则来转发和处理网络流量 .由于SDN 转控分离的特点,数据平面只负责转发数据包,并不具备判断流规则是否合法的功能,因此下发到 SDN 数据平面的任何错误流规则都将对网络流量的转发和处理造成一定的影响 .流规则包括匹配域、动作等,通过匹配域将数据包与流规则进行匹配,通过动作对数据包进行相应的处理[1].
当 SDN交换机接收到一个流的数据包后,首先查找是否有相匹配的流规则,如果有,则执行相应的动作;如果没有,则向控制器发送一条Packet_in消息以请求流规则,由控制器向交换机发送 Packet_out 消息以下发流规则 . 在流规则的请求与响应过程中,第三方行动者能够获取控制器与交换机之间的通信会话,并向交换机中恶意写入错误流规则,以达到破坏网络的目的[4].从左到右分别给出了数据平面中产生错误流规则的3种情况:(1)第三方行动者直接篡改交换机中的流规则;(2)交换机与未经过授权认证的控制器建立连接,并接收到该恶意控制器下发的错误流规则;(3)第三方行动者插入控制器和交换机之间的通信会话,向交换机中恶意写入错误流规则.本文重点解决第一种和第三种由第三方行动者向交换机中注入错误流规则的情况.
区块链技术为保证 SDN 交换机中流规则安全性的主要思路是将区块链作为一个分布式存储平台来存储SDN中需要验证的网络信息(如控制器信息、流规则等),基于其本身可追溯、不可篡改的性质,避免这些网络信息被恶意篡改[6-8].目前,相关研究主要从网络信息完整性、控制平面安全性、控制平面与数据平面之间通信安全等方面展开.针对SDN网络信息完整性的保障,RAHMAN等人[10]提出用控制器集群维护一个分布式区块链账本,在更新流规则时,向所有控制器广播新规则,从而保证控制器规则集的一致性 .分布式区块链账本能够跟踪所有流规则的更新,通过REST API访问历史记录 .该方案只考虑了流规则的完整性以及一致性 .WENG 等人[11]设计了一个基于区块链的整体安全机制,在维护网络视图的同时,能够在所有控制器之间保持网络资源的一致性.
为克服传统SDN架构中流量缺乏可追溯性和可问责性的弱点,所有的流和网络行为都被记录在区块链上,以便重播网络状态,进行审核和调试.一些研究引入区块链保存节点认证信息,用于保证 SDN 控制平面的安全性 .WANG 等人[12]提出SDN 安全保障模型,将 SDN 流规则、控制器的全局信息等存储到区块链,通过对控制器进行分布式认证以及权限管理,提高网络的鲁棒性 .SHAO等人[13]提出一种SDN安全机制系统模型及保障机制,在控制平面采用区块链技术存储系统的安全验证信息 .该方案在初始阶段通过 SDN 控制器之间相互交换数据进行身份验证,来防止非法控制器的接入以及攻击者篡改共享数据库信息,但并没有考虑到第三方行动者恶意向交换机中写入流规则的情况.AZAB等人[14]提出对网络节点进行接入认证,通过多节点认证提高 SDN 的稳健性 .
节点通过认证后,控制器向节点发出相应的授权信息,每当节点的权限发生变化时,将最新的权限存储在区块链中,防止攻击者对数据的恶意篡改.确保控制器之间的一致性,可以避免 SDN控制平面流表管理的漏洞带来的安全威胁.HU等人[15]在SDN 中提供流规则一致性测试的新框架,并设计了流规则插入和验证的过程.TONG[16]等人通过构建水平-垂直架构的控制平面,使用区块链记录网络信息,防止恶意管理员威胁.LOKESH等人[17]提出每个网络集群引入控制器区块链网络,每个控制器拥有一对公钥和私钥,每个交换机通过会话密钥与控制器建立通信通道 .控制器使用交换机的会话密钥加密流规则等信息,以保证通信通道的安全性.
针对 SDN 网络中的中间人攻击,BOUKRIA [18]等人提出 BCFR 解决方案,以检测注入 SDN 数据平面中的错误流规则,其中的私有区块链网络由控制器与可信节点(虚拟机)组成 .当控制器向交换机下发流规则时,也向可信节点发送一个流规则的副本.交换机收到流规则后,验证自己收到的流规则与可信节点中的流规则是否相同,若相同,则不执行任何操作;若不同,则通知网络管理员 .该方案能够检测出所有注入SDN数据平面中的错误流规则.这些研究工作大部分并没有考虑到 SDN 数据平面中注入错误流规则的情况 .
文献[18]提出的BCFR 方案虽然能够检测出所有的错误流规则,但首先,该方案中交换机每收到一条流规则,都要立即对其进行检测,这一过程将消耗更多的处理时间,从而对网络性能造成一定影响;其次,该方案在检测到错误流规则后仅仅通知网络管理员,只能检测到错误流规则,而不能缓解错误流规则对网络的影响;最后,没有考虑到区块链节点之间一致性不稳定时,造成某些正常流规则没有上链,从而导致将正常流规则检测为错误流规则的情况.2 解决方案针对 SDN数据平面中注入的错误流规则,本文提出基于区块链的错误流规则检测机制 FFRD-BC.通过控制平面随机选择数据平面中的流规则并验证其是否存在于区块链中,来检测SDN数据平面中第三方行动者注入的错误流规则;当流规则检测结果为错误流规则时,立即下发删除命令,以缓解错误流规则对网络的影响 .
此外,针对区块链节点之间一致性不稳定而导致的误检情况,在检测阶段引入基于PBFT共识算法的投票验证策略.
2.1 系统模型
本文在控制平面采用水平分布式控制器架构[19-20].在数据平面将交换机划分为不同的区域,每个控制器单独控制其中的一个交换机区域 .控制器之间形成一个私有区块链网络. 在 SDN 网络运行时,控制平面中的控制器根据网络需求向数据平面下发流规则,数据平面中的交换机根据流规则进行网络流量的转发与处理工作 .区块链则负责流规则的存储,通过验证流规则是否存在于区块链中对流规则进行检测.
2.2 FFRD-BC机制
FFRD-BC机制的运行共包括3个阶段:流规则上链、流规则检测、流规则决策,其中流规则检测阶段又分为流规则选择和流规则验证两步骤。
第一阶段:流规则上链当控制平面向数据平面下发流规则时,将这条流规则格式化为一条交易并打包成一个区块并在区块链网络中进行广播,收到区块的控制器节点在经过共识后将它存储到自己的本地区块链中 .区块由区块哈希值、控制器ID、交易等元素组成,交易由流规则ID、匹配域、动作等元素组成.第二阶段:流规则检测(1)流规则选择——控制平面从数据平面中随机选择一台交换机,并从这台交换机的流规则集合中随机选择待检测的流规则.
(2)流规则验证——控制平面访问区块链,验证被选择的流规则是否存在于区块链中 . 如果存在,则检测结果为流规则正确;如果不存在,则检测结果为流规则错误.第三阶段:流规则决策控制平面根据流规则检测阶段的结果进行不执行任何操作或删除流规则的决策 .当检测结果为流规则正确时,则不执行任何操作;当检测结果为流规则错误时,则向数据平面下发删除该条流规则的命令.在 FFRD-BC 机制的 3个阶段中,最核心的是第二阶段,即流规则检测阶段,其中流规则验证尤为重要 . 由于区块链节点之间的一致性不稳定,只验证自己的本地区块链中是否存在待检测的流规则无法保证检测结果的准确性.
2.3 流规则验证策略
控制平面从数据平面中随机选择流规则 r,验证r是否存在于区块链中.如果存在,则流规则检测结果为正确,如果不存在,则流规则检测结果为错误.验证策略分为自主验证策略和投票验证策略.
2.3.1 自主验证控制器
从网络中的n个交换机中随机选择一台交换机si,从si的流规则集中随机选择一条流规则r.将得到的流规则 r 进行解析,从而得到流 ID、匹配域、动作等各项流规则元素 . 将所得到的各项流规则元素按顺序进行拼接,得到一条格式化的流规则r’.对于得到的格式化的流规则r’,验证自己的本地区块链中是否存在与r’相同的交易tx.如果存在,则流规则检测结果为正确;如果不存在,则流规则检测结果为错误 .算法 1 为自主验证的错误流规则检测算法的描述.
在自主验证的检测过程中,当区块链节点之间一致性不稳定时,对于正确的流规则 r,控制器节点在自己的本地区块链中没有找到与 r’相同的交易tx,那么,正确的流规则 r将被误检为错误流规则并被删除 . 这显然不符合设计 FFRD-BC 机制的初衷,因此本文在流规则检测阶段引入了基于 PBFT共识算法的投票验证策略,以减少误检情况.
2.3.2 投票验证
在投票验证策略中,将私有区块链网络中的控制器节点分为请求节点和验证节点,并随机选择一个节点作为主节点 .每个控制器都有可能成为请求节点或验证节点 . 当控制器广播投票请求时,则该控制器节点作为请求节点,其他控制器节点作为验证节点对需要投票的流规则进行验证.对于经自主验证后检测为错误的流规则 r’,引入基于 PBFT共识算法的投票验证策略对 r’进行检测.PBFT共识算法能够在失效节点不超过节点总数的 1/3 时保证共识结果的正确性,这里假设整个网络中失效节点个数为f。
3 评估与分析
3.1 实验平台
实验部署在 Ubuntu 16.04 系统上 . 使用 Mininet2.2.1 网络模拟器模拟 SDN 交换机和主机,选用Opendaylight 0.6.4 Carbon和Multichain[23]分别作为SDN控制器和区块链平台.Multichain能够快速构建区块链网络,为了降低区块链在低活动时期的磁盘使用情况,本文在初始化区块链时将mine-empty-rounds参数设置为0,即如果没有新的交易,则停止添加区块.实验模拟数据中心网络环境,网络拓扑如图4所示,网络中由 20 个交换机(s1~s20)和 16 个主机(h1~h16)构成一个胖树拓扑.其中,20个交换机分为5个子域,s1~s4构成子域1,s5~s8构成子域2,s9~s12构成子域3,s13~s16构成子域4,s17~s20构成子域5,这些子域分别由5台控制器(c1~c5)进行控制.
3.2 实验方案
3.2.1 实验设计
通过 Multichain 平台构建具有 5 个控制器节点c1~c5 的一个基于私有区块链的 SDN 网络 . 当网络运行时,每次控制器向交换机下发流规则,都会将该条流规则格式化为一条交易 tx 并打包成一个区块并在区块链网络中进行广播,收到区块的节点在经过共识后将该区块写进自己的本地区块链中 .区块结构和交易结构分别在表1和表2中给出.在控制平面使用Random方法随机生成交换机ID以及流规则ID,并从交换机中选择流规则r,并将其解析,得到表2所示的各项流规则元素,将这些流规则元素按顺序进行拼接,得到一条格式化的流规则r’.验证区块链中是否存在与r’相同的交易tx,如果存在,则流规则检测结果为正确;如果不存在,则流规则检测结果为错误.控制平面根据检测结果进行决策,如果检测结果为正确,则不执行任何操作;如果检测结果为错误,则向交换机下发删除流规则命令.
在检测阶段分别采用了两种选择方式和两种验证策略 .选择方式有全随机选择和先随机后顺序选择两种方式 . 全随机选择方式中,每次控制平面选择数据平面中的流规则时,都使用Random方法随机生成交换机ID以及流规则ID.先随机后顺序选择方式中,首先随机生成交换机 ID 以及流规则 ID,并对格式化的流规则 r’进行检测,如果检测结果为错误,则从该条流规则开始顺序选择 a 条流规则进行检测.本文在实验时取a等于10.验证策略分别采用 2.3节中给出的自主验证和投票验证两种策略.自主验证策略中,控制平面随机选择流规则r并将其格式化为r’,验证自己的本地区块链中是否存在与r’相同的交易tx,如果存在,则流规则检测结果为正确;如果不存在,则流规则检测结果为错误 .自主验证策略是完全自己做主对流规则进行验证并返回检测结果.投票验证策略中,当自主验证后返回流规则检测结果为错误时,该控制器节点作为请求节点向其他控制器节点广播投票请求 .其他控制器节点收到投票请求后,验证自己的本地区块链中是否存在与r’相同的交易tx,如果存在,则向请求节点投票0;如果不存在,则向请求节点投票1.其中,0表示投票 r’为正确,1表示投票 r’为错误 .
请求节点统计投票1的验证节点个数,如果超过一半以上的验证节点投票 1,则流规则检测结果为“错误”;否则流规则检测结果为“正确”.3.2.2 评价指标采用被检测为错误的流规则数量指标对两种选择方式进行检测效率方面的比较和评价,基于检测为错误的流规则数量中正常流规则占比指标对两种验证策略进行误检率方面的比较和评价.为了模拟实际网络中错误流量通常聚集出现的场景,每次测试向交换机s2和s3中一次性写入共100条错误流规则.
在全随机选择方式中,检测交换机中的哪条流规则完全由Random方法决定,而在先随机后顺序选择方式中,检测到一条错误流规则,将从该条流规则开始顺序选择10条流规则进行检测.因此在两种场景下,使用先随机后顺序选择方式时的检测效率都明显优于全随机选择方式.误检率的仿真实验分别在使用两种选择方式的场景下进行,对使用两种验证策略时的误检率进行对比.设定对于交易tx,单个区块链节点发生一致性不稳定的概率为 0.01,且区块链网络中的控制器节点都是可信节点.取10次测试平均值作为误检率.两种验证策略的误检率对比.
可以看到,无论在全随机选择场景还是在先随机后顺序选择场景下,随着网络中正常流规则数量的增多,使用自主验证策略时误检率都随之上升 .这是因为网络中正常流规则数量越多,单个区块链节点中发生一致性不稳定的交易数量也就越多,从而导致误检率的上升 . 在使用投票验证策略后,误检情况都得到了有效缓解,这是因为对于同一条交易 tx,在整个区块链网络中超过半数的节点在将 tx写进自己的本地区块链时同时发生一致性不稳定的概率非常小 .当对正常流规则 r’进行自主验证后的检测结果为“错误”时,将在整个区块链网络中对r’进行投票验证,由于超过半数节点的本地区块链中都不存在与 r’相同的交易 tx的概率非常小,使得大多数节点对 r’都投票为“正确”,因此,对正常流规则 r’进行投票验证后的检测结果为“正确”,从而有效降低了使用自主验证策略时的误检率.
4 总结与展望
由于 SDN网络特有的转控分离架构,实现了对网络流量的灵活高效处理,但其数据平面缺乏对流规则的认证,容易被第三方行动者恶意写入错误流规则,从而危害网络的有效性和可靠性 . 本文提出的 FFRD-BC 机制基于区块链本身可追溯不可篡改的性质,随机验证数据平面中流规则是否存在于区块链中以检测数据平面中的错误流规则;引入了基于 PBFT 共识算法的投票验证策略,缓解当区块链节点一致性不稳定时所导致的误检情况 .仿真实验表明:FFRD-BC机制能够有效检测出SDN数据平面中被第三方行动者恶意写入的错误流规则,且与不执行投票验证策略相比,能够有效降低流规则误检的发生 .下一步工作将考虑到区块链网络查找耗时的固有问题,提高区块链部分的验证速度,以实现更快的检测效率.
参 考 文 献
[1] KREUTZ D,RAMOS F M V,VERISSIMO P E,et al.Software-Defined Networking: A comprehensive survey[J]. Proceedings of the IEEE,2015,103(1):14-76.
[2] RAWAT D B,REDDY S R. Software-Defined Networkingarchitecture,security and energy efficiency:A survey[J]. IEEE Communications Surveys & Tutorials,2017,19(1):325-346.
[3] 陈兴蜀,曾雪梅,王文贤,等. 基于大数据的网络安全与情报分析[J]. 工程科学与技术,2017,49(3):1-12.[4] 董仕 . 软件定义网络安全问题研究综述[J]. 计算机科学,2021,48(3):295-306.
[5] LIU Y,ZHAO B,ZHAO P,et al. A survey:Typicalsecurity issues of Software-Defined Networking[J]. ChinaCommunications,2019,16(7):13-31.
[6] 徐恪,凌思通,李琦,等. 基于区块链的网络安全体系结构与关键技术研究进展[J]. 计算机学报,2021,44(1):55-83.
选自期刊《中南民族大学学报(自然科学版)》第 41 卷第 4 期
作者信息:张艳1,杨喜敏1,唐菀1*,刘艳萍2,刘宇宸1(1 中南民族大学 计算机科学学院,武汉 430074;2 华灵云科技有限公司,杭州 311121)
转载请注明来自发表学术论文网:http://www.fbxslw.com/dzlw/30405.html