吳平,常朝穩,馬瑩瑩
(信息工程大學密碼工程學院,河南 鄭州 450004)
軟件定義網絡(SDN,software-defined networking)起源于Clean Slate 研究課題并于2008 年由Mckeown 教授[1]提出,與傳統網絡相比,SDN將數據平面與控制平面分離,其體系結構分為應用平面、控制平面和數據平面。SDN 體系架構如圖1所示,應用平面位于SDN 架構的頂層,主要運行不同類型的業務和應用;控制平面包括邏輯中心化的控制器,基于應用平面請求產生網絡規則,集中維護網絡狀態,一方面,實時維護全網的拓撲和狀態信息,并為應用平面提供可擴展的編程接口,另一方面,通過與數據平面基礎設施之間的接口獲取底層設施信息,對數據平面的資源進行編排,通過標準南向接口(如OpenFlow 等[2])向交換機下發數據轉發規則;數據平面由網絡底層的轉發設備組成,主要負責數據的處理、狀態收集并依規則轉發數據。開放式網絡基金會(ONF,open networking foundation)按照接口與控制平面的位置關系,分別定義了SDN 架構中的南向接口和北向接口。南向接口定義了開放的OpenFlow 協議標準,而北向接口由于應用平面中各類業務和應用的多樣性與復雜性,目前尚無統一的規范和標準。

圖1 SDN 體系架構
SDN 以其靈活性、可編程性在為管理配置網絡和快速部署新協議帶來便利的同時,不可避免地產生了許多安全問題:應用層安全、北向接口安全、控制平面安全、南向接口安全、數據平面安全[3],這些安全問題既包括傳統網絡安全問題,也包括SDN 專有的安全問題,解決這些安全問題是未來部署和生產SDN 的重要條件[3-4]。
當前,許多SDN 安全問題的研究集中于控制平面[5-7]。然而,數據平面面臨的安全威脅主要包括DDoS(distributed denial of service)/DoS(denial of service)攻擊、惡意/虛假流規則注入、非法訪問、數據泄露、交換機自身的配置缺陷和身份假冒等,惡意的交換機能夠在未授權的路徑上重定向數據流,對數據流實施竊聽、中間人攻擊或者繞過安全中間設備,且能夠針對其他設備實施DoS 攻擊、丟棄數據分組等攻擊行為[3,8]。
在新興的SDN 中,交換機或路由器作為網絡的核心設備,控制著數據分組的轉發,惡意交換機可實施注入、丟棄、篡改或重放。因此,如何實現準確、高效的分組轉發驗證,保證分組轉發的正確性并定位網絡異常一直是被廣泛研究的重要課題。
數據源認證與轉發驗證是緩解網絡攻擊(如DoS攻擊、地址欺騙、數據流重定向)的有效機制[9],使數據流路徑與ISP、企業或數據中心策略一致。傳統IP 網絡數據源認證與轉發驗證典型方案主要方法包括通過標簽或簽名實現驗證[10-11]、數據分組探測方法[12-13]以及通過計算交換機端口上的數據分組流量分析檢測異常[14-15]等,這些方案或者在自治系統(AS,autonomous system)間通過Diffifie-Hellman計算共享密鑰或者在源AS 和目的AS 間預先建立安全通道協商通信參數,因插入額外的數據分組頭引入了巨大的通信與運算開銷,且交換機或AS 間交互式的通信參數與密鑰協商也不適用于SDN。
為解決SDN 中現有的轉發驗證機制通過增加額外的分組驗證字段而引入的通信與運算開銷大的問題,利用SDN 控制與轉發分離、網絡可編程等特性,提出基于端址重載的SDN 包轉發驗證機制(PAO-PFV,port address overloading based packet forwarding verification)。本文貢獻包括以下幾點。
1) 提出一個基于端址重載的SDN 包轉發驗證機制PAO-PFV,通過重載端址,PAO-PFV 不產生任何額外的數據分組頭開銷,以較小的開銷實現高效轉發。
2) 針對PAO-PFV 機制中惡意的注入與丟棄攻擊,通過理論分析給出了有效的異常檢測閾值。
3) 通過擴展可編程的協議無關報文處理(P4,programming protocol-independent packet processors)交換機模型[16]實現了PAO-PFV,并在虛擬網絡環境中對其性能進行了評估。
SDN 中,為驗證數據的來源、防止數據分組偽造,近年來,一些學者提出了許多優秀的方案。Yao等[17]通過在控制器開發安全模塊進行實時監控和檢測,提出虛擬源地址驗證邊界(VAVE,virtual source address validation edge)安全框架來防止源IP地址欺騙,其在控制器中嵌入源地址驗證模塊對偽造地址進行過濾,邊界交換機通過接收控制器安裝的過濾規則實現敏捷靈活的源地址驗證操作,但無法應對路徑中惡意節點的篡改與丟棄攻擊。Casado等[18]提出了一個安全架構保護企業網絡來自惡意交換機的攻擊,但缺少數據流路徑一致性驗證機制,并將錯誤恢復機制交給終端用戶。文獻[19-20]依托SDN 架構,將SDN 交換機作為數據分組重定向平臺,其工作側重于重定向網絡流到安全設備,實現網絡流量的分析、定位網絡中的配置錯誤與網絡調試。文獻[21]提出了一種適用于SDN 的高效的數據源認證與路徑驗證方案OPT(origin and path trace),OPT 通過動態的密鑰協商協議 DRkey(dynamically recreatable key),使用戶終端與中間節點動態建立對稱共享密鑰,DRkey 需要額外的協議交互協商共享密鑰,任一數據分組都需要源終端插入供后續節點的驗證分組頭,這帶來了不小的通信開銷,且該機制不能有效應對惡意節點實施的數據丟棄攻擊。周啟釗等[22]重點研究了SDN 環境下動態的源地址配置技術。王首一等[23]提出了一個輕量級的數據分組轉發驗證機制LPV(lightweight packet forwarding verification),該機制將數據流分為2 類,一類是需要驗證的數據流,另一類是不需要驗證的數據流。LPV 任意分組都需要插入隨機的標簽信息且分組的驗證都需要控制器干預,未能解決在敵對環境中惡意行為對中間節點的攻擊。Dhawan 等[24]提出了一種基于流量分析的異常檢測方法,通過對流圖進行抽象,獲取網絡更新的實時信息和性能并檢測對網絡拓撲和數據轉發已知和未知的威脅。該方法通過動態學習網絡信息,對異常產生警報,然而這需要控制器記錄所有流量的數量并實現在納秒級內對這些數據進行比較,需要巨大的計算和通信開銷。文獻[25]提出了一個擴展的SDNsec(SDN security extension)框架,SDNsec 中控制平面與數據平面中任一交換機共享對稱密鑰,控制器加密下發的流規則給路徑上的源入口交換機,下游交換機通過共享密鑰解密源交換機在分組頭攜帶的流規則,依規則轉發數據,同時,各交換機通過共享密鑰計算消息認證碼形成驗證哈希鏈。SDNsec 存在的問題主要包括:數據流下游的交換機不能確認數據是否真實地來自源入口交換機;針對任一數據分組,目的出口交換機需向控制器發送Packet-IN 消息,并最終由控制器驗證路徑的一致性,這必將大大增加控制器的負擔;缺少有效的異常節點定位機制,未能抵御惡意節點的丟棄與劫持攻擊。祝現威等[26]提出了基于屬性基的訪問控制方案ACFlow,該方案通過修改終端用戶網絡協議棧并嵌入基于屬性的標簽,實現基于屬性標簽的轉發驗證,屬性標簽由基于身份屬性的簽名算法生成,任一數據分組都需源和目的交換機的簽名驗證,其缺點是數據分組頭所占開銷大,復雜的驗證過程引入了巨大的網絡傳輸時延,同樣該機制未能有效應對惡意的丟棄與劫持攻擊。
本文克服了現有機制中通過嵌入驗證標簽實現轉發驗證所引入的通信與運算開銷大的問題,提出基于端址重載的包轉發驗證機制PAO-PFV,其優點是不需要額外附加數據分組頭即可實現高效的轉發驗證;此外,針對PAO-PFV 中節點的注入與丟棄攻擊,理論分析了惡意注入與丟棄攻擊的異常檢測閾值,能夠有效實施異常定位;最后通過擴展的P4 軟件交換機模型實現了所提機制并在虛擬的網絡環境中對其進行了評估。
一個典型的SDN 是由控制器下發轉發策略,數據平面交換機遵循控制器授權的策略轉發數據。當存在非誠實的交換機時,數據流未必遵循既定的轉發策略。一個運算能力有限的攻擊者通過篡改、丟棄、重放、注入等攻擊破壞終端之間的通信,SDN可能面臨如下的攻擊行為破壞數據分組的轉發。
數據分組劫持。攻擊者控制數據流路徑中的某一交換機,重定向數據流至另一非控制器所授權的路徑。
數據分組丟棄。攻擊者控制某一交換機并丟棄某一特定路徑數據流的數據分組。
數據分組注入。攻擊者控制路徑中某一交換機并向路徑中的后繼節點注入數據。
數據分組篡改。攻擊者控制的交換機可以篡改數據分組的任意部分,如數據分組頭信息、負載數據等。
數據分組重放。攻擊者控制某一交換機并重放以前的數據分組。
攻擊者的目標是控制某一路徑上的惡意交換機并破壞數據流的正常轉發。數據分組的劫持攻擊可等價于丟棄原路徑上正常轉發的數據分組;數據分組的重放可等價于重復的數據分組注入攻擊;數據分組的篡改等同于丟棄原數據分組并注入偽造的數據分組。
以上的幾類攻擊可等價劃分為注入和丟棄攻擊這2 類攻擊,因此,惡意的數據分組注入與丟棄是SDN 數據平面面臨的最基本的安全威脅,針對這2 類攻擊,給出如下定義。
定義1路徑向量 PATHFlowSN= (R0,R1,…,RL)表示某一流FlowSN 通過控制器授權的路徑,其中Ri為路徑中各交換機的身份標識,相鄰節點分別稱為前驅和后繼,路徑向量中可能存在惡意的交換機節點。
定義2任意數據流FlowSN 持續運行時間t是由一系列連續的、隨機的時間間隔ti組成的,即t=t1+t2+…+tn。
定義3注入攻擊Ainject(P,Ri,x)表示在時間即隨機的時間間隔內,路徑P上存在一惡意交換機Ri向其后繼節點注入x個數據分組。
定義4丟棄攻擊Adrop(P,Ri,y)表示在時間內,路徑P上存在一惡意交換機Ri丟棄了比例y的數據分組。
本文假設邏輯集中的控制器是安全的,控制器與數據平面的通信信道是安全的,數據流入口與出口交換機為合法交換機,攻擊者無法獲取合法節點的數據信息與流表項等信息,任一轉發路徑中不存在相鄰的2 個或2 個以上惡意節點。此外,數據的機密性由終端用戶保證。
本文目標是實現高效的SDN 包轉發驗證與異常定位,增強數據平面安全,具體包括以下幾個方面。
1) 數據轉發可驗證
目的主機收到正確的、未經篡改的數據,實現數據源認證與數據完整性驗證。
2) 異常定位
檢測惡意節點注入與丟棄攻擊,能夠有效定位網絡異常,確保網絡功能正常。
3) 性能目標
摒棄現有典型機制中因嵌入固定或可變長度的驗證標簽信息引入較大開銷的方式,以較低的運算與通信開銷,實現高效轉發。
本文設計實現PAO-PFV 存在的挑戰主要包括以下幾點。
1) 如何以很少甚至無任何額外的數據分組頭開銷實現數據的轉發驗證?現有機制大多通過在數據分組中插入密碼標簽或其他驗證信息實現轉發驗證。
2) 如何高效實現數據分組源認證與完整性驗證?簡單的簽名機制驗證會導致數據分組轉發過程中引入巨大的計算開銷,降低網絡性能。
本節將闡述如何解決PAO-PFV 面臨的上述設計挑戰并實現安全目標。表1 為PAO-PFV 部分標識符及含義。

表1 PAO-PFV 部分標識符及含義
本節簡述PAO-PFV 中如何實現數據分組端址重載、基于端址重載的概率驗證以及異常定位。
數據分組端址重載。當數據流進入網絡第一跳入口交換機后,交換機查詢流表,若失配,表明這是一條新數據流;交換機計算分組頭相關字段生成流標識符,將流標識符、數據分組以及二者的消息認證碼向控制器發送Packet-IN 消息,控制器驗證通過后計算新流的路徑向量,以Packet-Out 消息和Flow-Mod 消息向入口交換機發送路徑向量,并向路徑上的交換機發送以流標識符為關鍵字的轉發策略,控制器保存如圖2 所示的流路徑向量以及地址與端口信息。

圖2 流標識符、端址及路徑向量映射表
入口交換機在接收到控制器發送的路徑向量后,計算與路徑上的各交換機共享密鑰并生成短消息認證碼,重構數據分組頭域中的端口和地址信息實現端址重載,依流表項轉發至下一跳。重載后的端地址信息如圖3 所示,中間陰影部分是重載前的原始TCP/UDP-IP 相關域:源和目的地址,源和目的端口號。重載后數據分組頭格式如圖3 虛線框所示,各字段含義如下。

圖3 重載的數據分組頭端址字段
FlowSN:20 bit 流標識號。
TimeID:16 bit 隨機時間間隔tj標識。
MacOffset:6 bit 短消息認證碼偏移指針。
MACi:ηbit 短消息認證碼。
利用惰性氣體氮氣不與克勞斯系統內硫磺、硫化亞鐵、硫蒸氣及其他物質發生化學反應的原理,在硫磺回收裝置停工期間,采用熱氮氣對制硫系統進行吹硫,保證制硫系統潔凈。吹硫期間,尾氣系統正常運行,吹硫過程氣進入尾氣處理系統,經過加氫還原吸收后,送入其他正常運行的制硫系統進行處理,減少SO2排放。待氮氣吹掃穩定后,補入一定量的工廠風對制硫系統設備和催化劑床層進行鈍化。嚴格控制工廠風量,防止設備和催化劑床層超溫、加氫催化劑床層過氧。鈍化后期,可選擇將制硫系統過程氣引入急冷塔堿液吸收后排入尾氣焚燒爐,或直接將過程氣切入尾氣焚燒爐。
Padding:填充字段。
圖3 為基于IPv4 的數據分組頭端址重載,對于IPv6 的處理方式類似,不同的是IPv6 基本首部長度為固定的40 B,源與目的地址為16 B,與IPv4 相比,重載的端址信息長度由12 B 增加為36 B。
基于端址重載的概率驗證。路徑中的后繼交換機在接收到數據分組后,解析數據分組頭,基于重載的端址信息,計算短消息認證碼MAC′i,若與分組頭中對應的MACi相等,表明此消息以概率ρ= 1/2η通過數據源認證與完整性驗證,交換機查詢流表并轉發數據;若驗證失敗,表明這是一個非法的數據分組,丟棄。同時,交換機更新在時間間隔tj內接收到的驗證成功與失敗的數據分組計數信息。
異常定位。控制器統計收集在時間t內路徑上各交換機的轉發驗證成功與失敗的數據分組信息,當某一交換機接收的數據分組統計信息超過丟棄檢測閾值ψdrop或注入檢測閾值ψinject時,表明路徑中存在惡意節點,控制器將定位并從網絡拓撲中刪除惡意鏈路、重新規劃數據流路徑。
基于Hess-IBS[27]中Setup 和Extract 算法,密鑰生成中心PKG 生成主密鑰s,為控制器C、數據平面交換機分配密鑰,完成系統初始化,并公開系統參數 Params:

下面,詳細討論入口交換機實現端址重載的基本算法步驟。在數據流到達第一跳交換機時,交換機重構數據分組頭并完成端址重載,其執行如下操作。
1) 根據數據分組頭信息,執行操作FlowSN=H(srcIP||dstIP||sport||dport),查詢以FlowSN 流標識符為關鍵字的交換機路徑向量表{FlowSN,PATHFlowSN= (R0,…,Ri,…,RL)}和流表項,若存在此數據流的路徑向量和流表項,執行步驟 2),否則交換機將計算與控制器的共享密鑰,生成流標識符。將流標識符、數據分組和通過共享密鑰與二者所生成的消息認證碼以Packet-IN 消息向控制器C 發送。控制器通過驗證后發送新流的路徑向量信息和流表信息保存并更新圖 2 所示的流標識與分組頭端址信息字段的映射表。
2) 解析數據流的路徑向量 PATHFlowSN,獲取數據流路徑上交換機標識,重構如圖3 虛線框所示的數據分組頭域,實現端址信息重載,依流表項轉發送數據。
對路徑向量中的各交換機Ri,R0可通過一次雙線性對[27]計算得到與Ri的對稱會話密鑰,即R0與其路徑向量中的所有后繼節點Ri均通過雙線性對計算實現非交互的密鑰協商,以此密鑰計算MACi并重構分組頭中的地址與端口字段域,各后繼交換機驗證對應的MACi域實現基于該短消息認證碼的數據源認證與完整性概率驗證。
R0按式(2)獲取與路徑上的后繼節點共享密鑰,并按式(3)計算短消息MACi驗證域并重載分組頭,其中,TTL 為IP 頭TTL 值。R0實現端址重載基本流程如圖4 所示。

圖4 入口交換機R0 重載端址


由式(3)可知,MACi除對數據分組頭和負載實現短消息認證,同時也包含了對 MACi+1,…,MACL的驗證,路徑中惡意交換機Rj對其后繼交換機對應的ηbit 短消息認證碼的改變,Ri能以概率ρ=1 ? 1/2η檢測出MACi的非一致性并更新數據分組驗證計數,否則,數據易遭受假冒攻擊,致使異常定位失敗。在重載端址信息,轉發數據至下一跳交換機之前,需要填充端址字段空閑的比特,即Padding←Hash(Nonce),Nonce是隨機數。
入口交換機R0重構數據分組頭實現端址信息重載后,向其后繼節點發送端址重載后的數據分組,路徑向量中后繼交換機Ri(1 ≤i≤L)基于重載的端址信息中ηbit 短消息認證碼實現數據源認證與完整性概率驗證。對新數據流的首個數據分組,Ri按式(4)計算與源入口交換機的共享密鑰,也即路徑向量上交換機Ri與其入口交換機R0計算共享密鑰K(i,0)。

注意到,根據雙線性對性質有K(i,0)=K(0,i),在后續的數據傳輸中,不需要重復計算。基于端址重載的概率驗證算法流程如圖5 所示。

圖5 交換機Ri 概率驗證
在時間間隔tj內,Ri將按式(3)對數據源和數據完整性進行驗證,計算短消息認證碼MA,若MA= MACi,則表明數據通過驗證且以概率ρ= 1/2η為有效數據,Ri依流表轉發數據至下一跳交換機Ri+1,若MA≠ MACi,表明驗證失敗,則丟棄數據;不論成功與否,Ri將更新計數和,在下一個間隔tj+1開始后,Ri向控制器發送在間隔tj內的分組驗證計數信息和。
圖5 中當交換機是目的節點交換機時,需要將端址重載后的數據分組頭恢復為原始的數據分組頭,由圖2 可知,在控制器為新的數據流計算路徑向量時,保存了原始數據分組頭的端址域字段信息,通 過 如 OpenFlow 協 議 命 令OPFAT_SET_NW_SRC、OPFAT_SET_NW_DST、OPFAT_SET_TP_SRC、OPFAT_SET_TP_DST[2]等命令,在最后一跳目的交換機執行以上命令恢復原始數據分組的端址字段域,轉發數據至終端。
網絡啟動后,控制器建立SDN 全局視圖,實時獲取全網的狀態信息,并根據網絡策略向交換機下發流表。本文實現了控制器路徑向量計算組件(PVCC,path vector computation component),收到來自入口交換機Packet-IN 請求信息時,為新流計算路徑向量 PATHFlowSN= (R0,…,Ri,…,RL),構建如圖 2 所示的路徑向量映射表{FlowSN,PATHFlowSN}。
在敵對環境中的異常定位只能定位與惡意節點相鄰的鏈路,而非惡意節點本身。PAO-PFV 中控制器通過統計在時間,即路徑節點在n個連續隨機間隔內轉發驗證成功和失敗的包計數信息,i∈ PATHFlowSN定位異常,異常定位算法流程如圖6 所示,其總的復雜度為Θ(L)。

圖6 控制器異常檢測
圖6 中控制器接收Ri在隨機間隔tj內的計數消息 MSG||MACK(i,C)(MSG),其中,K(i,C)是Ri與控制器 C 通過式(2)計算所得到的共享密鑰、MSG=(Ri,tj,FlowSN,)。控制器在收到路徑中的交換機計數消息MSG、驗證并獲取計數,執行異常判定算法,當下游節點接收驗證錯誤的數據分組超過閾值ψinject時,即,其中,表明有來自上游節點的惡意注入與篡改,與此節點連接的鏈路將被判定為惡意鏈路;當相鄰的2 個節點Ri?1與Ri接收的有效數據分組個數與和上游節點Ri?1接收的有效數據分組的比例超過閾值ψdrop,也即,表明Ri?1與Ri間的鏈路為惡意鏈路。對于如何設定惡意注入與丟棄攻擊檢測閾值ψinject與ψdrop,將關系到異常定位的準確性,第5 節將對此給出詳細的理論分析。
本節將通過理論分析給出PAO-PFV 機制異常定位檢測閾值,并討論機制的安全性、算法復雜度以及相關機制的分組頭開銷和運算開銷。
在執行異常檢測時,由于網絡擁塞或傳輸出錯引發的鏈路自然數據分組丟失等原因,可能存在的情況是在時間內,Ri接收且驗證有效的數據分組計數值小 于Ri?1計 數,即,但這也并不意味著Ri?1執行了惡意丟棄動作。同樣,若某一Ri返回的,意味著存在惡意交換機注入數據的行為,但這并不等價于其前驅節點交換機Ri?1為惡意節點。考慮到基于端址重載的概率驗證,設短消息認證碼為η=3 bit MAC,可能存在的情況是交換機Ri?2為惡意節點,其注入的數據恰好在Ri?1處以概率1/2η= 0.125通過了概率驗證,并轉發給節點Ri,在Ri處驗證失敗,此時Ri將更新計數,但Ri?1為非惡意節點,即Ri?1與Ri之間的鏈路lki并非異常鏈路。
本節將針對惡意節點注入與丟棄的異常檢測,在設定的誤報率與漏報率下,通過理論分析,給出異常檢測定位的閾值ψdrop和ψinject。



證明傳輸鏈路由于網絡擁塞、傳輸錯誤等原因,會引發網絡自然數據分組丟失,設某一路徑向量PATH= (R0,R1,R2,…,RL),各節點間鏈路lk1,lk2,lki,lkL平均自然數據分組丟失率為αi(1≤i≤L)。惡意節點丟棄異常定位監測閾值ψdrop設定過高或過低將引發較大的漏報或誤報。當節點Ri?1與Ri間鏈路數據分組丟失率α*超過了檢測閾值ψdrop,鏈路lki將被判定為異常鏈路。在無惡意丟棄的條件下,節點接收驗證成功的分組數的期望值滿足如下關系

其中,αi(1≤i≤L)為自然數據分組丟失率,N為第一跳交換機在時間t內接收的終端數據分組數。假設各鏈路自然數據分組丟失率相等,即α1=α2=…αi=,上式可表示為ui=(1?)iN,當Ri?1存在惡意的丟棄使鏈路lki數據分組丟失率α*超過了檢測閾值ψdrop,Ri接收的分組有如下關系

為使漏報率Pfn≤λ,滿足式(16)成立。

基于切諾夫界,則有

因此有

其中,d是路徑中節點Rd與源節點的距離。對于誤報率可得同樣的結果,證畢。
本節討論PAO-PFV 機制的安全性。如第3 節所述,惡意節點篡改、丟棄、注入及重放等攻擊可等價劃分為注入與丟棄攻擊2 類。
數據注入。惡意節點Ri注入虛假數據,必將會使得短消息驗證碼MACi+1以概率ρ=1 ? (1/2η)驗證失敗,并增加計數值,異常檢測算法可有效定位。

現有的各典型方案提供的安全功能如表2 所示。

表2 典型方案安全功能分析
PAO-PFV 中數據流路徑向量和共享密鑰是流的首個分組到來時動態建立的,在新數據流入網后,第一跳源交換機R0需要根據路徑向量通過L(L為路徑長度)次對運算建立與各交換機之間的共享密鑰,各后繼交換機Ri僅需要通過一次對運算建立與第一跳交換機R0的共享密鑰,并進行一次短消息認證碼驗證,在后續的通信中,由于暫存了共享密鑰,R0僅需L次摘要運算;而Ri僅需一次認證碼驗證計算;控制器C 通過一次掃描實現異常檢測,其算法復雜度為Θ(L)。表3 為相似方案在單次數據傳輸中各節點的算法復雜度,其中P 表示一次對運算,M 表示一次摘要運算,E 表示加解密運算,N 表示屬性簽名中的屬性元個數。

表3 相似方案計算復雜度
本節討論現有典型機制的數據分組頭開銷情況。基于屬性基的ACFlow 機制需要修改用戶終端網絡協議棧[26],嵌入屬性標簽,其分組頭開銷隨路徑增加維持為一固定值,假設簽名信息為1 024 bit,分組頭開銷達144 B。SDNsec[25]固定分組頭開銷為22 B,路徑長度增加1,分組頭長度將增加8 B用于加密下發流表規則,分組頭總長度為(22+8L) B。OPT[21]路徑長度增加1,分組頭長度將增加16 B,為(52+16L) B。圖7 為PAO-PFV、SDNsec、ACFlow、OPT 方案分組頭在負載為600 B,路徑長度為2、4、6、8、10 時,數據分組頭所占開銷曲線變化。

圖7 分組頭開銷隨路徑長度變化
由圖7 可知,ACFlow 分組頭所占開銷約占數據分組的17%;隨著路徑長度的增加,SDNsec 分組頭開銷約占8%~14%,OPT 分組頭開銷約10%~26%;PAO-PFV 通過端址重載,無任何分組頭開銷,明顯優于SDNsec 與ACFlow 和OPT 等機制。
本節搭建了一個簡單的模擬網絡環境,通過擴展相關仿真組件對方案攻擊檢測的有效性進行評估,最后評估網絡傳輸時延、網絡吞吐率等性能。
實驗使用聯想 Lenovo E580 作為運行平臺,配置為Inter(R) Core(TM)i7-8550 CPU、1.8 GHz,8 GB內存,操作系統運行64位Ubuntu14.06,使用Mininet模擬網絡環境,可編程P4 軟件交換機、擴展的交換機行為模型(BMV2,behavioral-model version 2)[16]以及基于P4Runtime 接口實現的控制器相關組件,模擬網絡采用分布式拓撲,由30 個虛擬P4 交換機及若干虛擬主機終端組成。
實驗采用PBC[29]庫實現雙線性對運算,一次對運算和一次消息認證碼計算時間分別為0.60 ms 及10 μs 左右。基于對P4、BMV2 模型的擴展,以下將對方案攻擊檢測有效性和網絡性能進行評估。
實驗選擇一條路徑長L=8 的簡單路徑PATH= (R0,R1,…,RL),惡意節點R4實施數據丟棄和注入攻擊,本實驗用于檢測在5.1 節中理論設定的誤報與漏報率λ條件下,異常定位惡意鏈路真實的誤報率與漏報率及算法有效性。
定義惡意節點的一次攻擊是在某一單獨的隨機時間間隔ti內或若干連續的間隔內實施的注入、丟棄或二者的組合,設惡意節點攻擊次數為M,將控制器檢測到一次攻擊并有效定位異常稱為一次命中,令未檢測到的惡意攻擊次數為S、檢測到攻擊但不能實現異常定位的次數為N,則漏報率(FN,false negative)可表示為FN=(S+N)/M;控制器檢測到惡意攻擊但定位錯誤的次數為P、無惡意攻擊但引發錯誤定位異常的次數為T,則誤報率(FP,false positive)可表示為FP=(P+T)/(M+T)。實驗1~實驗4 中選取理論誤報與漏報率λ=1%,其他λ設定值實驗與此類似。
實驗1。本實驗共進行5 次,每次節點R4分別以injectrate=0.1%、0.5%、1%、2%、4%的概率在隨機選擇的時間間隔內向路徑中的后繼節點注入虛假數據,MAC 長度η=2 bit。通過iperf 以持續時間t=1 500 s 向R0發送數據,隨機的時間間隔ti設定為100 ms ≤ti≤ 200 ms,控制器統計節點轉發信息實施異常檢測,結果如圖8 所示。

圖8 注入攻擊檢測
從圖8 可以看出,節點以極小概率實施數據注入攻擊時,定位算法未能及時捕獲攻擊行為,漏報率較高,這是由于計數值小于檢測閾值,控制器檢測到攻擊但不能定位;在達到檢測閾值時依然存在小概率定位錯誤引發誤報;注入數據率增大,漏報誤報率隨之降低,注入數據率在2%與4%時,誤報與漏報率低于預設的λ=1%,約為0.5%~0.8%。
實驗2。節點R4同樣以injectrate=0.1%、0.5%、1%、2%、4%的概率向路徑中的后繼節點注入虛假數據,檢測MAC 長度分別為η=3 bit 和η=4 bit時檢測算法的漏報率。通過iperf 以持續時間t=1 500 s向R0發送數據,實驗結果如圖9 所示。

圖9 不同MAC 位長注入漏報率
由圖9 可以看出,MAC 位長度增加,檢測定位算法的漏報率也隨之降低。對給定的λ,MAC長度η增大,注入的虛假數據通過驗證的概率減小,則驗證失敗計數概率ρ值增大,檢測閾值減小,此時漏報率將減小,當injectrate=2%時,漏報率約為0.4%。
實驗3。該實驗共進行4 次,節點R4每次分別以數據分組丟失率droprate=0.5%、1%、2%、4%的概率在隨機選擇的時間間隔內丟棄數據分組,網絡自然數據分組丟失率α=0.4%~0.8%,平均數據分組丟失率≈0.6%,通過iperf 以持續時間t=1 500 s 向R0發送數據,實驗結果取平均值,如圖10 所示。
圖10 中,在惡意數據分組丟失率較低的情況下,定位檢測的誤報率與漏報率較高。在檢測時間t較短時,惡意數據分組丟失數較少,未能達到檢測閾值,將發生漏報,而由于受自然數據分組丟失率α的動態變化的影響使錯誤定位異常也將引發誤報。隨著節點惡意數據分組丟失率的增大,誤報與漏報率明顯減少,這與理論設定的λ值相近,約為0.6%。

圖10 丟棄攻擊檢測
實驗4。組合攻擊實驗,共進行3 次,惡意節點R4分別以injectrate=2%、droprate=2%,injectrate=4%、droprate=4%以及 injectrate=2%、droprate=4%在隨機選取的間隔內實施組合攻擊。η= 3 bit,平均數據分組丟失率≈0.6%。iperf以持續時間t=1 500 s 向R0發送數據,結果取平均值,如圖11 所示,定位檢測算法可以有效實施定位,誤報率與漏報率為0.2%~0.5%。

圖11 組合攻擊檢測
基于以上分析可知,受檢測閾值影響,異常檢測結果存在漏報與誤報的可能,檢測算法不可能同時避免這2 類誤差。惡意節點以極小概率實施注入與丟棄攻擊時,異常檢測漏報率較高,以較大概率實施攻擊時,漏報率減小。在惡意節點以極小概率實施攻擊時,可通過累加間隔ti統計信息,獲取足夠的驗證信息可以減少誤報;在惡意節點以較大概率實施攻擊時,可以適當減少間隔ti統計信息,減小漏報,以快速定位異常鏈路。
本節對網絡性能進行評估,需要說明的是,該仿真實驗是在單機平臺上的模擬網絡環境,與真實網絡環境在性能上存在很大差異,評價參數包括往返時延(RTT,round trip time)和數據吞吐率。實驗測量了運行PAO-PFV 協議以及未運行PAO-PFV(UN-PAO-PFV)也即運行基本的SDN 網絡協議的網絡性能,并對同類方案OPT[21]、SDNsec[25]和ACflow[26]的性能進行了評估。
實驗5。PAO-PFV 中不需要修改終端協議棧,其往返時延RTT 的測量可通過PING 數據分組來測量。選取長度為2、4、6、8、10 的路徑進行測試,實驗結果分別如圖12 和圖13 所示。
圖12 是路徑長度L=6 時,最初開始的6 個數據分組的往返時延,運行基本協議與運行PAO-PFV協議往返時延RTT 曲線對比。從圖12 可以看出,新數據流的第一個測試分組比后續的數據分組往返時延多了約18 ms,這是由于第一個數據分組在數據傳輸的過程中需要計算與路徑向量上的相關節點的共享密鑰,在隨后的測試中,二者的往返時延差約為1 ms。

圖12 路徑長度L=6 時,最初開始的6 個數據分組的往返時延
圖13 是不同路徑長度下類似方案 OPT、SDNsec、ACflow 與UN-PAO-PFV 和PAO-PFV 的往返時延,路徑長度為8 時PAO-PFV 的RTT 約為23 ms,UN-PAO-PFV 的RTT 為21 ms,PAO-PFV引入了不超過10%的單向網絡傳輸時延,OPT 與SDNsec 相當,為24~25 ms,高于PAO-PFV,引入了14%~15%的時延,而ACflow 因分組的驗證都需經過對運算,時延最大,引入了約20%的時延。

圖13 不同路徑長度下不同方案的往返時延
實驗6。通過iperf 向網絡中注入數據,測試數據吞吐率。與往返時延測試類似,實驗對PAO-PFV協議、UN-PAO-PFV 以及OPT、SDNsec 和ACflow進行了測試。
圖14 和圖15 分別表示路徑長度為4 和8、終端之間數據吞吐率在負載為300~1 200 B 時的變化情況。可以看到,PAO-PFV 協議的終端間的數據吞吐率與UN-PAO-PFV 的數據吞吐率十分接近,可達到基本協議的93%以上,PAO-PFV 中通過端址重載實現包轉發驗證所帶來的通信開銷損失小于7%~8%,而OPT 與SDNsec 通信開銷損失在11%~12%,ACflow 開銷損失最大,占16%~17%。實驗5 和實驗6 結果表明,PAO-PFV 機制在安全性提高的前提下,并未以大量犧牲網絡性能為代價。

圖14 路徑長度為4 時不同負載的數據吞吐率

圖15 路徑長度為8 時不同負載的數據吞吐率
SDN 中現有的轉發驗證機制大多通過附加固定或可變長度的分組驗證字段或標簽實現轉發驗證,引入了較大的通信開銷與運算開銷,降低了網絡性能。利用SDN 轉發控制分離與網絡可編程的特點,本文提出了基于端址重載的SDN 分組轉發驗證機制PAO-PFV。PAO-PFV 中源交換機重構分組頭端口和地址信息實現端址重載,各后繼交換機基于重載的端址信息實現分組轉發驗證,控制器統計流路徑中節點在隨機時間間隔內接收驗證正確與錯誤的分組計數信息并定位異常;為有效定位異常,理論分析了惡意注入與丟棄攻擊的異常檢測閾值;最后,通過擴展P4 軟件交換機實現了所提機制。通過重載端址,PAO-PFV 最大的優點在于無任何額外的數據分組頭開銷,可有效檢測惡意的注入與丟棄攻擊;分析與實驗結果表明,該機制優于同類方案,以引入不超過10%的網絡傳輸時延和低于8%的吞吐率損失實現了高效轉發驗證,下一步的工作將基于P4 硬件交換機評價其在真實環境中的性能。