本文摘要:摘 要 由于軟件定義網絡(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.zpfmc.com/dzlw/30405.html