陳何雄,羅宇薇,韋云凱*,郭威,杭菲璐,毛正雄,張振紅,何映軍,羅震宇,謝林江,楊寧
(1.云南電網(wǎng)有限責任公司 信息中心,昆明 650011;2.電子科技大學(xué) 長三角研究院(衢州),浙江 衢州 324003;3.電子科技大學(xué) 信息與通信工程學(xué)院,成都 611731)
隨著大數(shù)據(jù)、物聯(lián)網(wǎng)等技術(shù)的發(fā)展,人們對網(wǎng)絡(luò)性能及其靈活性有了更高的要求,而在傳統(tǒng)網(wǎng)絡(luò)中,由于網(wǎng)絡(luò)控制邏輯和數(shù)據(jù)轉(zhuǎn)發(fā)無法分離,使得網(wǎng)絡(luò)的管理維護日益復(fù)雜,難以適應(yīng)多樣化的場景應(yīng)用。軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)通過分離控制平面和數(shù)據(jù)平面提升網(wǎng)絡(luò)部署的靈活性[1],提供了一種新的方式來設(shè)計、建立和管理通信網(wǎng)絡(luò),簡化了網(wǎng)絡(luò)管理[2]。開放式網(wǎng)絡(luò)基金會發(fā)布的軟件定義網(wǎng)絡(luò)白皮書[3]規(guī)定,SDN 分為三層結(jié)構(gòu):應(yīng)用層、控制層和數(shù)據(jù)層。其中,控制層分別通過北向接口、南向接口與應(yīng)用層、數(shù)據(jù)層進行數(shù)據(jù)交互。處于控制層的控制器提供了網(wǎng)絡(luò)的全局視圖,使得網(wǎng)絡(luò)運營商和管理者可以依據(jù)應(yīng)用層功能需求以編程的方式配置網(wǎng)絡(luò)對網(wǎng)絡(luò)交換設(shè)備下發(fā)控制策略,數(shù)據(jù)層則根據(jù)所接收到的執(zhí)行指令進行數(shù)據(jù)轉(zhuǎn)發(fā)、存儲、上傳等工作[4]。因此,SDN 能夠在控制層的配合下自動、快速、動態(tài)地配置和優(yōu)化網(wǎng)絡(luò)資源,有利于實現(xiàn)異構(gòu)網(wǎng)絡(luò)互連、網(wǎng)絡(luò)管理、資源動態(tài)管控等相關(guān)業(yè)務(wù)[5];從而,SDN技術(shù)被廣泛應(yīng)用于車聯(lián)網(wǎng)、電力行業(yè)、銀行行業(yè)等領(lǐng)域[6]。與此同時,SDN 的廣泛應(yīng)用也吸引了更多的攻擊行為,重要方式之一是偽造或篡改數(shù)據(jù)幀以消耗網(wǎng)絡(luò)資源、破壞正常通信、威脅業(yè)務(wù)安全。為了增強SDN 的通信安全,進而保障網(wǎng)絡(luò)所承載的業(yè)務(wù)安全,必須對其中傳輸?shù)臄?shù)據(jù)幀實施有效的安全驗證,以構(gòu)建安全高效的網(wǎng)絡(luò)環(huán)境。
目前,針對SDN 提出的驗證機制主要包括對數(shù)據(jù)幀的源地址可靠性驗證、數(shù)據(jù)幀完整性驗證、轉(zhuǎn)發(fā)路徑正確性驗證等。文獻[7-9]采取了集中式的驗證與密鑰信息維護架構(gòu),其中,文獻[7]由終端使用密鑰生成屬性標識來保證源地址可靠性,實現(xiàn)訪問控制,但并未為數(shù)據(jù)幀內(nèi)容完整性提供保障;文獻[8]由終端用戶使用與控制器共享的密鑰對數(shù)據(jù)報文生成消息驗證碼(Message Authentication Code,MAC)作為驗證標識保障數(shù)據(jù)的真實性和完整性;文獻[9]結(jié)合MAC 與交換機的流量統(tǒng)計值對數(shù)據(jù)幀源地址、內(nèi)容與轉(zhuǎn)發(fā)路徑實施隨機認證,但是在集中式的驗證架構(gòu)下,驗證操作及驗證信息維護都將增加中心節(jié)點的負擔,且當中心節(jié)點被攻擊失效,該架構(gòu)下的驗證有效性與密鑰信息安全都將受到極大影響。文獻[10-12]采取分布式驗證與集中式密鑰維護架構(gòu),在文獻[10]中,數(shù)據(jù)幀的轉(zhuǎn)發(fā)交換機基于流表信息向該幀添加驗證標識,并進行路徑驗證,以保證轉(zhuǎn)發(fā)策略的正確執(zhí)行;文獻[11]中提出由控制器設(shè)置對稱密鑰與交換機共享,由交換機對數(shù)據(jù)幀內(nèi)容完整性與轉(zhuǎn)發(fā)路徑進行驗證,其中,數(shù)據(jù)幀的入網(wǎng)、出網(wǎng)交換機分別負責添加、移除驗證標識,但上述兩種方案均不能保證數(shù)據(jù)幀源地址可靠性;文獻[12]中的控制器負責與用戶協(xié)商共享對稱密鑰,將驗證功能下放給SDN交換機來實施基于密碼標識轉(zhuǎn)發(fā)驗證以保證數(shù)據(jù)幀源地址可靠性與內(nèi)容完整性,但是對稱密鑰在分發(fā)和存儲時存在泄露或被篡改的安全威脅。因此,集中式驗證架構(gòu)將面臨單點故障問題,而在密鑰信息的集中式維護下,即使采取分布式的驗證架構(gòu),也難以避免由于驗證設(shè)備受惡意控制而導(dǎo)致的驗證體系失效問題。
本文結(jié)合區(qū)塊鏈的分布式特性,提出基于區(qū)塊鏈的軟件定義網(wǎng)絡(luò)數(shù)據(jù)幀安全驗證機制,簡稱為基于區(qū)塊鏈的幀驗證(BlockChain-based Frame Verification,BCFV)機制。該機制在不可信網(wǎng)絡(luò)環(huán)境、單點故障等情況下,都可保持對SDN數(shù)據(jù)幀的有效驗證。本文主要工作如下:
1)利用區(qū)塊鏈防篡改、可追溯等特性,建立基于區(qū)塊鏈的數(shù)據(jù)幀安全驗證機制,在網(wǎng)絡(luò)與設(shè)備不可信情況下,實現(xiàn)分布式、可靠的數(shù)據(jù)幀安全驗證。
2)結(jié)合SDN 特征及設(shè)備的資源限制,設(shè)計了基于幀轉(zhuǎn)發(fā)證明(Proof of Frame Forwarding,PoFF)的輕量型共識算法,實現(xiàn)極低開銷的區(qū)塊鏈系統(tǒng)維護,降低驗證機制中引入?yún)^(qū)塊鏈對系統(tǒng)帶來的資源壓力。
3)提出了半隨機選擇驗證模式,結(jié)合網(wǎng)絡(luò)實時負載與安全等級,靈活調(diào)整傳輸路徑上的轉(zhuǎn)發(fā)設(shè)備對于數(shù)據(jù)幀的驗證概率,實現(xiàn)驗證有效性與系統(tǒng)開銷兩者間的兼顧。
本文驗證機制針對軟件定義網(wǎng)絡(luò)中的數(shù)據(jù)安全問題提出,主要應(yīng)用數(shù)字簽名、區(qū)塊鏈等技術(shù)手段,保證數(shù)據(jù)來源可靠性與內(nèi)容完整性、驗證信息維護的安全性,進而保障網(wǎng)絡(luò)承載業(yè)務(wù)的安全,下面分別對數(shù)字簽名、區(qū)塊鏈及共識算法進行簡要介紹。
數(shù)字簽名技術(shù)最早由Diffie等[13]在1976 年提出,旨在盡量減少對安全密鑰分發(fā)的途徑并提供相當于書面簽名的標識,基本原理是任何人都可以很容易地識別出簽名的真實性,但除了合法簽名者之外,沒有人能生成它,這種單向身份驗證技術(shù)提供了防止第三方偽造的保護。隨后,RSA(Rivest,Shamir,Adleman)數(shù)字簽名算法[14]、Merkle 數(shù)字簽名算法、Elgamal 數(shù)字簽名算法[15]等被相繼提出。數(shù)字簽名算法允許實體驗證簽名數(shù)據(jù)的完整性和簽名者的身份,適用于電子數(shù)據(jù)交換、數(shù)據(jù)存儲以及其他需要數(shù)據(jù)完整性保證和數(shù)據(jù)源認證的應(yīng)用場景。
根據(jù)數(shù)字簽名實現(xiàn)的方法,可以將數(shù)字簽名分為采用對稱加密算法的數(shù)字簽名和采用公鑰加密算法的數(shù)字簽名兩種[16]。在公鑰密碼學(xué)中,密鑰是由公鑰和私鑰組成的密鑰對,由于無法從公鑰推導(dǎo)出私鑰,公鑰密鑰外泄的可能性遠低于對稱密鑰外泄的可能性,故基于公鑰的簽名在密鑰分發(fā)和管理上面臨更少的風險。
區(qū)塊鏈技術(shù)最早由Nakamoto[17]在比特幣中提出并應(yīng)用,具有防篡改、可追溯等特點[18]。該技術(shù)使用哈希指針將數(shù)據(jù)區(qū)塊按時間順序鏈接成特定數(shù)據(jù)結(jié)構(gòu),利用加密鏈式區(qū)塊結(jié)構(gòu)來驗證與存儲數(shù)據(jù),利用分布式節(jié)點共識算法來生成和更新數(shù)據(jù),以密碼學(xué)方式保證數(shù)據(jù)不可篡改和不可偽造[19],為中心化機構(gòu)普遍存在的高成本、低效率和數(shù)據(jù)存儲不安全等問題提供了解決方案,被廣泛應(yīng)用于數(shù)據(jù)存儲、數(shù)據(jù)鑒證、數(shù)據(jù)保護等場景中[20-21]。
在區(qū)塊鏈系統(tǒng)中,各節(jié)點共享信息,所有參與節(jié)點必須對這些信息的合法性達成一致認識,決定共識如何達成的算法就是共識算法,這是區(qū)塊鏈系統(tǒng)中的核心機制[22]。其中,比特幣采用的是基于工作量證明(Proof of Work,PoW)的共識算法,節(jié)點通過不斷計算來搜索得到符合系統(tǒng)難度要求的哈希值,以此競爭獲得產(chǎn)生有效區(qū)塊的權(quán)力;但是這種共識算法存在算力浪費問題,不利于推廣。King等[23]在2012 年提出了基于權(quán)益證明(Proof of Stake,PoS)的PPCoin,其權(quán)益體現(xiàn)為節(jié)點對持有貨幣的數(shù)量與幣齡的乘積,這種共識算法在一定程度上解決了PoW 的算力浪費問題并縮短了達成共識的時間。Dziembowski等[24]提出了基于空間證明(Proof of Space,PoSp)的共識算法,要求節(jié)點必須出具一定數(shù)量的磁盤空間來競爭出塊權(quán),以貢獻磁盤空間的方式換取算力消耗的減少。然而,不論是算力資源還是磁盤空間的消耗,都會給SDN 中的相關(guān)設(shè)備帶來沉重的資源壓力。
SDN 中的各種設(shè)備都存在被惡意攻擊或者控制的風險,其數(shù)據(jù)平面存在虛假數(shù)據(jù)幀注入、數(shù)據(jù)幀篡改等安全威脅。針對SDN 面臨的這些風險,本文設(shè)計了基于區(qū)塊鏈的數(shù)據(jù)幀安全驗證機制,該機制采用公鑰加密算法,基于數(shù)據(jù)幀內(nèi)容及隨幀隨機數(shù)構(gòu)建數(shù)字簽名,并采用區(qū)塊鏈技術(shù)維護公鑰加密中的關(guān)鍵驗證信息。
如圖1 所示,基于區(qū)塊鏈的數(shù)據(jù)幀安全驗證機制主要由兩個部分組成:數(shù)據(jù)幀驗證與信息維護算法和基于幀轉(zhuǎn)發(fā)證明的共識算法。其中,數(shù)據(jù)幀驗證與信息維護算法利用區(qū)塊鏈防篡改、可追溯等特性實現(xiàn)對驗證信息的可靠維護,并在此基礎(chǔ)上實現(xiàn)在網(wǎng)絡(luò)設(shè)備不可信情況下的分布式可靠數(shù)據(jù)幀驗證。而基于幀轉(zhuǎn)發(fā)證明的共識算法充分考慮SDN 特征及設(shè)備的資源限制,實現(xiàn)以極低開銷對區(qū)塊鏈系統(tǒng)進行維護,降低驗證機制中引入?yún)^(qū)塊鏈對系統(tǒng)帶來的資源壓力。
數(shù)據(jù)幀驗證與信息維護算法包含兩部分:低開銷彈性數(shù)據(jù)幀驗證過程和基于區(qū)塊鏈的驗證信息維護過程。在低開銷彈性數(shù)據(jù)幀驗證過程中,本文采用基于公鑰的數(shù)字簽名技術(shù)作為驗證手段,由主機生成數(shù)字簽名作為驗證標識隨幀傳輸,由數(shù)據(jù)幀的轉(zhuǎn)發(fā)交換機實施分布式驗證,以抵御由驗證主體受控引起的驗證失效問題。在此基礎(chǔ)上,進一步考慮兼容驗證準確性和系統(tǒng)開銷的半隨機選擇驗證,通過設(shè)定驗證概率并結(jié)合轉(zhuǎn)發(fā)路徑,以半隨機方式選擇交換機實施驗證,從而避免逐跳驗證帶來的巨大負擔。其中,驗證概率可結(jié)合網(wǎng)絡(luò)實時負載與安全等級靈活調(diào)整,在較低的開銷代價下,保證驗證系統(tǒng)高效運行。在基于區(qū)塊鏈的驗證信息維護過程中為保證密鑰的新鮮性,主機將根據(jù)偽隨機數(shù)定期生成密鑰,對包含新密鑰的驗證信息將應(yīng)用區(qū)塊鏈技術(shù)進行維護。交換機作為區(qū)塊鏈運行的載體,依據(jù)基于幀轉(zhuǎn)發(fā)證明共識算法的規(guī)則將通過確認的驗證信息寫入?yún)^(qū)塊鏈,從而保證驗證信息真實且不可篡改。
為構(gòu)建上述用于數(shù)據(jù)幀安全驗證的區(qū)塊鏈系統(tǒng),本文設(shè)計了基于幀轉(zhuǎn)發(fā)證明的共識算法,將SDN 交換機在對數(shù)據(jù)幀執(zhí)行轉(zhuǎn)發(fā)驗證時獲得的數(shù)字簽名作為幀轉(zhuǎn)發(fā)證明,在利用哈希運算與簽名值的隨機性保證出塊隨機性的同時,使得網(wǎng)絡(luò)關(guān)聯(lián)度和活躍度越高的交換機越具有競爭優(yōu)勢。該算法主要包含三個階段:證明收集階段、出塊權(quán)競爭階段、區(qū)塊共識階段。交換機作為區(qū)塊鏈運行載體,在證明收集階段中按共識算法規(guī)則驗證并保存簽名及相關(guān)信息;在出塊權(quán)競爭階段來臨時,利用在證明收集階段獲得的最小簽名參與出塊權(quán)競爭;在區(qū)塊共識階段中,全網(wǎng)最小簽名的記錄者獲得出塊權(quán),發(fā)布新區(qū)塊,未獲得出塊權(quán)的交換機則等待確認新區(qū)塊。經(jīng)過上述階段,網(wǎng)絡(luò)交換機達成對區(qū)塊鏈更新數(shù)據(jù)的共識?;趲D(zhuǎn)發(fā)證明的共識算法將出塊權(quán)的競爭轉(zhuǎn)化為獲得最小簽名值的競爭,改變了PoS、PoSp 等共識算法為降低PoW 算力浪費所基于的資源,通過結(jié)合SDN 特征及其交換設(shè)備的行為特征降低區(qū)塊鏈維護開銷,為構(gòu)建輕量型區(qū)塊鏈系統(tǒng)提出了新的解決方案。
在上述數(shù)據(jù)幀驗證與信息維護算法和基于幀轉(zhuǎn)發(fā)證明的共識算法的作用下,本文所提出的BCFV 機制具有如下優(yōu)勢:
1)解決了集中式驗證架構(gòu)的單點故障問題。在BCFV機制中,SDN 控制器主要負責適時更新驗證概率與周期下發(fā)偽隨機數(shù)。若控制器失效或被惡意控制,將導(dǎo)致驗證概率發(fā)送與偽隨機數(shù)發(fā)送出現(xiàn)延遲,此時系統(tǒng)延續(xù)上一輪次的驗證概率與偽隨機數(shù)。這對系統(tǒng)效率與安全性雖然有一定影響,但基于區(qū)塊鏈的去中心、不可篡改特性,上述異常行為可被及時發(fā)現(xiàn)并采取維修措施。不僅如此,仿真結(jié)果表明,即使在維修期間系統(tǒng)仍可保持良好的驗證性能與效率。
2)規(guī)避了由于密鑰泄露可能導(dǎo)致的驗證體系失效問題。BCFV 機制利用區(qū)塊鏈對密鑰信息實施分布式可靠維護,防止了密鑰信息遭偽造或篡改,并應(yīng)用基于幀轉(zhuǎn)發(fā)證明的共識算法,關(guān)聯(lián)驗證設(shè)備與區(qū)塊鏈載體,防范異常設(shè)備在區(qū)塊鏈維護過程中傳播錯誤密鑰。
3)在合理的通信代價與資源開銷下,構(gòu)建可信的網(wǎng)絡(luò)環(huán)境。在BCFV 機制中,應(yīng)用了基于幀轉(zhuǎn)發(fā)證明的共識算法,以極低開銷維護區(qū)塊鏈系統(tǒng),減輕引入?yún)^(qū)塊鏈對系統(tǒng)帶來的資源壓力;設(shè)計了半隨機選擇驗證模式,可靈活調(diào)節(jié)驗證概率以實現(xiàn)對驗證效率與資源開銷的兼顧。
本章簡要介紹了基于區(qū)塊鏈的數(shù)據(jù)幀安全驗證機制的基本思想、整體架構(gòu)和特有優(yōu)勢。為了便于敘述,本文后續(xù)內(nèi)容中,將先介紹基于幀轉(zhuǎn)發(fā)證明的共識算法,再在此基礎(chǔ)上說明數(shù)據(jù)幀驗證與信息維護算法。
考慮到作為區(qū)塊鏈載體的SDN 交換機算力有限,為降低區(qū)塊鏈維護的開銷,本文設(shè)計了基于幀轉(zhuǎn)發(fā)證明的共識算法作為構(gòu)建輕量型區(qū)塊鏈系統(tǒng)的基礎(chǔ)。
鑒于交換機無法刻意偽造主機生成的數(shù)字簽名,同時為避免同一簽名被多臺轉(zhuǎn)發(fā)交換機收集,交換機將收集其直連主機生成的簽名作為幀轉(zhuǎn)發(fā)證明。在SDN中,將交換機集合表示為S,交換機數(shù)量為m(m∈N+),則S={s1,s2,…,sm};將主機集合表示為H,主機數(shù)量為n(n∈N+),則H={h1,h2,…,hn}。將交換機si與主機hj之間的鏈路表示為則si與hj的連接關(guān)系如式(1)所示:
將基于幀轉(zhuǎn)發(fā)證明的共識算法周期表示為Tfull,則Tfull=Tcol+Tcmp+Tcon。其中:Tcol為證明收集周期;Tcmp為出塊權(quán)競爭周期;Tcon為區(qū)塊共識周期。在Tcol內(nèi),將網(wǎng)絡(luò)中所有主機產(chǎn)生的數(shù)字簽名所構(gòu)成集合表示為G,數(shù)字簽名數(shù)量為a(a∈N+),則G={g1,g2,…,ga} 。將主機hj和數(shù)字簽名gk之間的關(guān)聯(lián)表示為,則hj與gk的生成關(guān)系如式(2):
由于主機直連的交換機有且僅有一臺,因此,在i≠j時,必然有=?。將共識周期內(nèi)的最小數(shù)字簽名表示為gmin,則交換機si獲得出塊權(quán)的概率如式(4)所示:
由式(3)~(4)可知,交換機收集到的數(shù)字簽名總量取決于直連主機數(shù)量與直連主機產(chǎn)生的簽名數(shù)量,而由于數(shù)字簽名是隨數(shù)據(jù)幀傳輸?shù)?,故交換機轉(zhuǎn)發(fā)的數(shù)據(jù)幀總量越大,在出塊權(quán)的競爭中具有更大優(yōu)勢。這種優(yōu)勢在某一次具體的出塊過程中是隨機的,從而保證每一輪出塊權(quán)的隨機性;同時,在長期運行過程中的統(tǒng)計概率上這種優(yōu)勢是確定的,保證網(wǎng)絡(luò)關(guān)聯(lián)度、活躍度更高的交換機可獲得更多的出塊權(quán)。因此,基于幀轉(zhuǎn)發(fā)證明的共識算法保證了出塊權(quán)競爭公平性的同時又結(jié)合了交換機的正常轉(zhuǎn)發(fā)工作,不會給交換機帶來過多的額外開銷。
共識算法的具體流程如圖2 所示,基于幀轉(zhuǎn)發(fā)的共識算法流程可分為證明收集階段、出塊權(quán)競爭階段和區(qū)塊共識階段。將交換機si在證明收集階段新收到的來自直連主機hj的數(shù)字簽名表示為將si在證明收集階段結(jié)束后保存的局部最小簽名表示為記錄時間表示為;si在出塊權(quán)競爭階段結(jié)束后保留的最小簽名表示為,記錄時間表示為;將新區(qū)塊表示為B;tcol、tcmp、tcon分別為證明收集階段、出塊權(quán)競爭階段、區(qū)塊共識階段的計時變量,當計時變量被置0時,表明相應(yīng)階段的開始,當計時達到或超過對應(yīng)階段的給定周期,則表示該階段結(jié)束,準備進入下一階段或下一共識周期。設(shè)定act_flag是收集與轉(zhuǎn)發(fā)標識,當其被置0 時進入證明收集階段,置1 時進入出塊權(quán)競爭階段;con_flag是區(qū)塊共識標識,當其被置0 時進入?yún)^(qū)塊共識階段,置1 時準備進入下一個共識周期。
3.2.1 證明收集階段
交換機si在該階段收集直連主機發(fā)送的數(shù)據(jù)幀上的數(shù)字簽名,為出塊權(quán)競爭做準備。證明收集算法流程如下。
算法1 證明收集算法。
輸出si的局部最小簽名。
證明收集階段開始時,將tcol、act_flag初始化為0,隨后,si在收到來自直連主機的數(shù)據(jù)幀時,對該幀進行驗證,若驗證通過,則將該幀的簽名及其相關(guān)信息按算法規(guī)則進行保存。如此,在證明收集階段結(jié)束后,si得到局部最小數(shù)字簽名。其中,記錄簽名時間是為了給si在出塊權(quán)競爭階段中遇到同值數(shù)字簽名時提供判斷依據(jù)。
3.2.2 出塊權(quán)競爭階段
基于最小簽名記錄者獲得當前共識周期出塊權(quán)的競爭原則,在出塊權(quán)競爭階段,網(wǎng)絡(luò)中所有交換機利用此前得到的局部最小簽名來競爭出塊權(quán),并對全網(wǎng)最小簽名記錄者(即出塊權(quán)獲得者)達成一致認識。出塊權(quán)競爭算法流程如下。
算法2 出塊權(quán)競爭算法。
輸入 局部最小簽名,計時變量tcmp。
輸出 全網(wǎng)最小簽名。
出塊權(quán)共識階段開始時,將tcmp、初始化為0,交換機si向其他交換機sk發(fā)送及相關(guān)信息的同時,接收并驗證,然后按照算法規(guī)則更新。如此,在出塊權(quán)共識階段結(jié)束后,各交換機對全網(wǎng)最小簽名記錄達成一致認識,全網(wǎng)最小簽名的記錄者獲得當輪出塊權(quán)。
3.2.3 區(qū)塊共識階段
區(qū)塊共識階段來臨時,出塊權(quán)獲得者發(fā)布新區(qū)塊,未獲得出塊權(quán)的交換機則等待接收并確認新區(qū)塊。區(qū)塊共識算法如下。
算法3 區(qū)塊共識算法。
輸入 全網(wǎng)最小簽名。
輸出 新區(qū)塊B。
在區(qū)塊共識階段開始時,將tcon、con_flag初始化為0,若si獲得出塊權(quán),則發(fā)布新區(qū)塊B;若si未獲得出塊權(quán),則等待接收新區(qū)塊B,并對收到的新區(qū)塊B進行確認。其中,si對新區(qū)塊B的確認包括有效性確認與合法性確認,有效性確認是通過檢驗新區(qū)塊發(fā)布者與當前共識周期中最小簽名記錄的一致性來實現(xiàn),目的在于確認區(qū)塊發(fā)布者是否為的記錄者,合法性是指對區(qū)塊包含的驗證信息真實性的確認。si在等待新區(qū)塊B時,可以主動向獲得出塊權(quán)的sk請求新區(qū)塊B。當con_flag被置1,意味著交換機完成當輪區(qū)塊鏈的同步,準備進入下一個共識周期。
本文驗證機制采取基于公鑰的數(shù)字簽名作為驗證手段,并進一步提出半隨機選擇驗證以兼顧驗證效率與系統(tǒng)開銷;同時,設(shè)計了基于區(qū)塊鏈的驗證信息維護機制實現(xiàn)對驗證信息的可靠維護。
數(shù)據(jù)幀驗證包括基本驗證模式與半隨機選擇驗證模式,下面將分別對這兩種驗證模式進行具體說明。
4.1.1 基本驗證
將交換機si與主機hj之間的鏈路表示為,假定交換機si、su(i≠u)分別與主機hj、hv(j≠v)有單跳連接,將主機hj向主機hv發(fā)送的數(shù)據(jù)幀表示為f(i,j)-(u,v)。在基本驗證模式下,數(shù)據(jù)幀的入網(wǎng)、出網(wǎng)交換機必須執(zhí)行驗證,而轉(zhuǎn)發(fā)路徑上的其余交換機不做驗證。交換機將依據(jù)數(shù)據(jù)幀的源、目的地址與該幀的收、發(fā)端口上所連設(shè)備的匹配情況來判斷當前是否為該幀的入網(wǎng)或出網(wǎng)交換機。結(jié)合式(1),則f(i,j)-(u,v)和f(u,v)-(i,j)的轉(zhuǎn)發(fā)交換機sk的驗證概率psk取值如式(5)所示:
如圖3 所示,基本驗證的實施過程如下:
1)驗證標識生成。為實現(xiàn)對源地址可靠性和內(nèi)容完整性的驗證,保證驗證標識的隨機性,將f(i,j)-(u,v)包含的隨機數(shù)(由主機hj生成)與源地址、數(shù)據(jù)內(nèi)容等字段共同作為待驗證數(shù)據(jù)表示為,主機hj的私鑰表示為skj,公鑰表示為pkj,則主機hj據(jù)式(6)得到f(i,j)-(u,v)上的簽名g(i,j)。
2)轉(zhuǎn)發(fā)驗證執(zhí)行。入網(wǎng)交換機si(出網(wǎng)交換機su的處理邏輯同si)首先從區(qū)塊鏈中獲得與數(shù)據(jù)幀源地址匹配的公鑰pkj,然后據(jù)式(7)對f(i,j)-(u,v)進行驗證。
其中:TRUE 表示驗證通過,si將正常轉(zhuǎn)發(fā)f(i,j)-(u,v);FALSE 表示驗證不通過,si將丟棄f(i,j)-(u,v)。
4.1.2 半隨機選擇驗證
半隨機選擇驗證由控制器與交換機協(xié)同實施。本文的半隨機選擇指的是對數(shù)據(jù)幀轉(zhuǎn)發(fā)路徑上的驗證節(jié)點進行的選擇,而非驗證節(jié)點對數(shù)據(jù)幀的選擇。結(jié)合式(1),在半隨機選擇驗證下,f(i,j)-(u,v)與f(u,v)-(i,j)的轉(zhuǎn)發(fā)交換機sk(k≠i≠u)的驗證概率取值如式(9):
在入網(wǎng)交換機上驗證可以盡早過濾虛假數(shù)據(jù)幀以節(jié)省網(wǎng)絡(luò)資源,在出網(wǎng)交換機上驗證是為了保證交付給目的主機的數(shù)據(jù)幀是沒有被篡改的,而途經(jīng)交換機的驗證則可以阻止受到篡改的數(shù)據(jù)幀在網(wǎng)絡(luò)中進一步傳播。
將網(wǎng)絡(luò)用戶可接受的最大平均延遲表示為D,網(wǎng)絡(luò)的理論吞吐量為TPtheory,實際吞吐量為TPactual,則網(wǎng)絡(luò)負載率L=TPactualTPtheory(0 ≤L≤1)。由于網(wǎng)絡(luò)負載率L與轉(zhuǎn)發(fā)延遲dload的關(guān)系將隨網(wǎng)絡(luò)規(guī)模、設(shè)備性能等硬件設(shè)備與轉(zhuǎn)發(fā)規(guī)則等軟件因素的變化而變化,故將L與dload之間的關(guān)系表示為Rlt1,將普通轉(zhuǎn)發(fā)處理與排隊等過程引入的轉(zhuǎn)發(fā)延遲表示為dload,則dload=Rlt1(L);將驗證概率p與驗證延遲dveri之間的關(guān)系表示為Rlt2,將驗證處理引入的驗證延遲表示為dveri,則dveri=Rlt2(p)。從而,驗證概率p在取值時應(yīng)滿足式(10):
通過結(jié)合數(shù)據(jù)幀轉(zhuǎn)發(fā)路徑對驗證節(jié)點的半隨機選擇,以及對驗證概率的靈活調(diào)整,實現(xiàn)對驗證機制的系統(tǒng)開銷和驗證有效性的兼顧。
基于區(qū)塊鏈的驗證信息維護利用區(qū)塊鏈防篡改、可追溯的特點來保障驗證信息的安全。
如圖4 所示,為了增強驗證機制的安全性,網(wǎng)絡(luò)主機將使用由控制器周期下發(fā)的偽隨機數(shù)更新密鑰。出于對偽隨機數(shù)有效性的考慮,由獲得出塊權(quán)的交換機負責生成偽隨機數(shù),控制器負責將偽隨機數(shù)周期地發(fā)給網(wǎng)絡(luò)主機。然后,主機結(jié)合偽隨機數(shù)與自身信息更新密鑰,交換機以區(qū)塊鏈形式對驗證信息進行維護。
將密鑰更新周期表示為Tupd,驗證信息更新的具體流程如下:
1)獲得出塊權(quán)的交換機在發(fā)布新區(qū)塊的同時,將使用梅森旋轉(zhuǎn)(Mersenne Twister)算法[25]生成偽隨機數(shù)Rkey發(fā)給控制器,控制器接收并存儲Rkey,并按照周期Tupd將Rkey以組播方式發(fā)給網(wǎng)絡(luò)主機;
2)主機收到偽隨機數(shù)Rkey后,結(jié)合自身信息完成密鑰更新,將私鑰保存在本地,將“主機新公鑰”“主機MAC 地址”“主機舊公鑰”“主機舊私鑰數(shù)字簽名”“時間t”按約定格式以組播方式發(fā)給網(wǎng)絡(luò)中的交換機;
3)交換機收到來自主機發(fā)布的驗證信息后,通過驗證“主機舊私鑰數(shù)字簽名”對驗證信息進行完整性確認,通過從區(qū)塊鏈的歷史信息中搜索滿足“主機新公鑰”為當前驗證信息中的“主機舊公鑰”的信息,對驗證信息進行合法性確認;
4)通過確認的驗證信息將被交換機保存并等待被寫入?yún)^(qū)塊鏈,未通過確認的驗證信息將被丟棄。
在密鑰更新過程中,存在密鑰同步的時間差問題,體現(xiàn)在兩個方面:在新密鑰寫入?yún)^(qū)塊鏈之前使用新密鑰生成簽名,在新密鑰寫入?yún)^(qū)塊鏈之后仍使用舊密鑰生成簽名。這兩種情況均會造成正常數(shù)據(jù)幀的驗證失誤,影響網(wǎng)絡(luò)正常通信。其中,第一種情況可以通過設(shè)置主機新密鑰啟用間隔時間Tsta(Tsta<Tupd)來解決,以保證新密鑰在寫入?yún)^(qū)塊鏈后才能被啟用;第二種情況可以通過設(shè)置密鑰有效周期Teff來解決,以保證主機啟用的密鑰與交換機驗證時使用的公鑰是匹配的。其中,密鑰更新周期Tupd、密鑰啟用間隔Tsta和密鑰有效周期Teff的具體數(shù)值應(yīng)根據(jù)網(wǎng)絡(luò)規(guī)模、負載狀態(tài)及安全等級等實際因素進行調(diào)整。
本文仿真設(shè)定使用Aurora 420 交換機[26]相關(guān)參數(shù),交換機存儲空間大小為64 GB,處理器為英特爾凌動C2558,包轉(zhuǎn)發(fā)率為14.48 Mpps。仿真拓撲結(jié)構(gòu)為二元胖樹拓撲,包含4臺邊緣、4 臺聚合、2 臺核心交換機與8 臺終端主機,最大網(wǎng)絡(luò)負載為1 071 Mpps。為了對本文驗證機制的性能進行評估,設(shè)定該網(wǎng)絡(luò)拓撲下每條鏈路的流量均相等。分別從轉(zhuǎn)發(fā)延遲、驗證可靠性、算力占用角度,將本文所提機制與基于哈希鏈的驗證機制[11]進行了對比,并針對BCFV 機制在存儲需求方面隨網(wǎng)絡(luò)規(guī)模變化的情況進行了分析說明;同時,從SDN控制器單點故障的角度切入,對比本文所提機制與集中式驗證架構(gòu)機制[8]的驗證性能。
本節(jié)通過分析驗證機制下的漏檢概率來評估所提機制的驗證可靠性。將漏檢概率定義為虛假的或遭篡改的數(shù)據(jù)幀順利到達目的主機的概率,交換機在受惡意控制狀態(tài)下不會對數(shù)據(jù)幀進行驗證,但仍然執(zhí)行正常轉(zhuǎn)發(fā)工作。以1∶1 的比例向網(wǎng)絡(luò)注入虛假數(shù)據(jù)幀和篡改數(shù)據(jù)幀,分析在受惡意控制交換機占比提高情況下,基于哈希鏈的驗證模式與本文BCFV 模式在不同驗證概率下的漏檢概率,結(jié)果如圖5所示。
在基于哈希鏈的驗證模式中,數(shù)據(jù)幀的入網(wǎng)交換機負責將數(shù)據(jù)幀消息告知控制器,并根據(jù)控制器下發(fā)的隨機數(shù)計算消息驗證碼插入數(shù)據(jù)幀,若入網(wǎng)交換機受到惡意控制,則該驗證模式將失效。由于該模式下的驗證不包括對數(shù)據(jù)幀的源地址可靠性的驗證,故即使交換機均正常工作,也未能識別虛假數(shù)據(jù)幀,因此,基于哈希鏈的驗證模式的漏檢概率較高。
在本文所提的驗證機制下,交換機的驗證處理相對獨立,不會因為個別交換機被惡意控制而導(dǎo)致驗證體系失效,且在數(shù)據(jù)幀轉(zhuǎn)發(fā)路徑上任一臺交換機執(zhí)行驗證都可以對數(shù)據(jù)幀來源可靠性與內(nèi)容完整性進行識別。因此,在BCFV 模式下,隨著受惡意控制交換機占比增加,BCFV 模式(p=0)的漏檢概率總是低于基于哈希鏈的驗證模式的漏檢概率,且驗證概率p越高,BCFV 模式的漏檢概率越低。其中,在受控交換機占比40%時,這種降低更為顯著,此時采用BCFV 模式(p=0)的漏檢概率低于32%,而輔助以半隨機驗證后,BCFV 模式(p=0.5)與BCFV 模式(p=1)的漏檢概率分別降低到15%和7%,均遠低于基于哈希鏈的驗證模式72%的漏檢概率,綜上,本文驗證機制的驗證可靠性高于基于哈希鏈的驗證模式。
往仿真拓撲中的每條鏈路上均等注入流量,通過改變網(wǎng)絡(luò)負載,分析數(shù)據(jù)幀在無驗證的普通轉(zhuǎn)發(fā)模式、基于哈希鏈的驗證模式以及BCFV 模式的不同概率下的平均轉(zhuǎn)發(fā)延遲,結(jié)果如圖6 所示。
驗證機制的引入在提高網(wǎng)絡(luò)安全性的同時也增加了交換機在轉(zhuǎn)發(fā)數(shù)據(jù)幀時的處理開銷?;诠f湹尿炞C模式通過添加消息驗證碼與構(gòu)建哈希鏈來實現(xiàn)數(shù)據(jù)幀轉(zhuǎn)發(fā)路徑與數(shù)據(jù)幀內(nèi)容完整性的保證,將導(dǎo)致轉(zhuǎn)發(fā)延遲的增加,且增加的延遲無法通過改變某個參數(shù)來調(diào)整;相較于無驗證轉(zhuǎn)發(fā)模式,本文所提的BCFV 模式下延遲增加的原因是添加了驗證處理,保障了數(shù)據(jù)幀來源可靠性與內(nèi)容完整性;而驗證概率的設(shè)置使得引入的轉(zhuǎn)發(fā)延遲可以被調(diào)整,便于適應(yīng)不同負載的網(wǎng)絡(luò)環(huán)境。
從圖6 可知,各驗證模式下的轉(zhuǎn)發(fā)延遲總是高于無驗證轉(zhuǎn)發(fā)模式下的。相較于無驗證轉(zhuǎn)發(fā)模式,隨著網(wǎng)絡(luò)負載的增大,在基于哈希鏈的驗證模式下,轉(zhuǎn)發(fā)延遲平均增加了3.95 ms;在BCFV 模式下,當驗證概率p分別取0、0.5、1時,平均轉(zhuǎn)發(fā)延遲分別增加了約2.05 ms、3.14 ms、4.94 ms。結(jié)合圖5 可知,由BCFV 模式(p=0.5)引入的平均延遲與基于哈希鏈的驗證模式引入的平均延遲相近,但是具有更低的漏檢概率,驗證可靠性更高。
在本文提出的BCFV 模式中,驗證概率可根據(jù)實際網(wǎng)絡(luò)規(guī)模和負載狀態(tài)進行調(diào)整,考慮到BCFV 模式(p=0.5)與基于哈希鏈的驗證模式有相近的延遲開銷,故選擇這兩種驗證模式來進行對比分析,分別計算在網(wǎng)絡(luò)負載增加時,兩種驗證模式下的數(shù)據(jù)幀轉(zhuǎn)發(fā)、數(shù)據(jù)幀驗證等對交換機的算力占用情況,結(jié)果如圖7 所示。
在網(wǎng)絡(luò)負載從10%增大到80%的過程中,BCFV 模式(p=0.5)的算力占用從15%增加到約95%,基于哈希鏈的驗證模式的算力占用從12%增加到約90%,這表明,相較于基于哈希鏈的驗證模式,BCFV 模式(p=0.5)在具有更高驗證可靠性的情況下,算力占用并未明顯增加。
在BCFV 模式(p=0.5)下,用于數(shù)據(jù)幀轉(zhuǎn)發(fā)的算力超過已用算力的60%,相較于轉(zhuǎn)發(fā)數(shù)據(jù)幀帶來的算力開銷,數(shù)據(jù)幀驗證與區(qū)塊鏈維護兩者共同所增加的算力增長平緩且較為平穩(wěn);另一方面,本文驗證機制增強了網(wǎng)絡(luò)環(huán)境安全性,區(qū)塊鏈的應(yīng)用通過為驗證信息提供可靠維護保障了驗證機制的有效運行,鞏固了驗證機制帶來的安全性。綜上,本文所提驗證機制增加的算力開銷在可接受范圍內(nèi)。
區(qū)塊鏈的存儲需求與驗證信息更新周期、區(qū)塊共識周期、網(wǎng)絡(luò)用戶主機數(shù)等因素相關(guān)。考慮到4.2 節(jié)中提及的時間差問題,假定驗證信息更新周期將隨著用戶主機數(shù)的增加而延長,初始驗證信息更新周期Tupd為120 s,共識周期為60 s,區(qū)塊鏈(1 年)的存儲需求隨網(wǎng)絡(luò)規(guī)模擴大的變化如圖8所示。
隨著網(wǎng)絡(luò)規(guī)模的擴大,用戶主機數(shù)增加,區(qū)塊鏈(1 年)的存儲需求無明顯增長趨勢,這主要是由于在用戶主機數(shù)量增加的同時,更新的驗證信息與區(qū)塊的傳播時間隨之增加,而驗證信息更新周期會由于傳播時間的增加而延長,在單位時間內(nèi)產(chǎn)生的驗證信息量會有所減少。
在共識周期一定的情況下,雖然單位時間內(nèi)產(chǎn)生區(qū)塊的數(shù)量穩(wěn)定,但是單個區(qū)塊的存儲量減小了,從而單位時間內(nèi)區(qū)塊鏈整體存儲需求變化較為穩(wěn)定,不會因為網(wǎng)絡(luò)規(guī)模擴大有明顯增長。在網(wǎng)絡(luò)用戶主機數(shù)從500 到5 000 的變化過程中,區(qū)塊鏈整體存儲需求平均約為每年510 MB,考慮到目前的硬件設(shè)備性能不斷提高,且可以通過定期對網(wǎng)絡(luò)終端重新進行認證等方式將歷史的區(qū)塊鏈信息離線存儲等手段,釋放存儲空間來減小交換機的存儲壓力,因此,區(qū)塊鏈引入的存儲需求尚在可接受范圍內(nèi)。
在BCFV 機制中,SDN 控制器主要負責周期下發(fā)偽隨機數(shù)以供用戶主機更新簽名密鑰,和適時更新驗證概率以兼顧驗證性能與效率。因此,在SDN 控制器出現(xiàn)失效、被惡意控制等單點故障情況下,將會導(dǎo)致偽隨機數(shù)的發(fā)送異常與驗證概率的更新異常。從而,本節(jié)分別針對這兩種情況來分析SDN 控制器單點故障對BCFV 機制的影響。
1)偽隨機數(shù)發(fā)送異常。
在BCFV 機制中,SDN 控制器以Tupd為周期下發(fā)偽隨機數(shù)輔助密鑰更新,以防止攻擊者破解密鑰來偽造或篡改數(shù)據(jù)幀。當SDN 控制器失效或被惡意控制時,將導(dǎo)致偽隨機數(shù)不能及時更新,以采用brainpoolP160r1 橢圓曲線加密算法[27]與安全散列算法1(Secure Hash Algorithm 1,SHA 1)共同實現(xiàn)的數(shù)字簽名、且偽隨機數(shù)發(fā)送周期Tupd(即密鑰更新周期)為120 s 為例。據(jù)文獻[28]可知,該簽名算法安全位數(shù)為80位,如果使用暴力破解方式,需要進行280次計算,在使用47 000 MH/s(即每秒47 000 百萬次哈希計算,作為對比,NVIDIA GeForce RTX 3090 24G 的算力為122 MH/s)的計算機進行破解時,所需時間約為2×1013s(約6.34×105a)。密鑰在一定故障時間內(nèi)被破解的概率如表1 所示。
表1 故障時間內(nèi)密鑰的破解概率Tab.1 Probability of key cracking during failure time
可見,即使偽隨機數(shù)發(fā)送異常導(dǎo)致密鑰無法正常更新,密鑰在故障時間內(nèi)被破解的概率仍然是極低的。此外,基于區(qū)塊鏈的去中心、不可篡改特性,這類異??杀幌到y(tǒng)在短時間內(nèi)及時發(fā)現(xiàn),并采取維修措施。維修期間,雖系統(tǒng)安全性略有降低,但仍可保持正常運行。
2)驗證概率發(fā)送異常。
在BCFV 機制中,SDN 控制器可據(jù)實際網(wǎng)絡(luò)負載適時地調(diào)整驗證概率,若SDN 控制器出現(xiàn)單點故障,驗證概率將不再適時更新,BCFV 機制的轉(zhuǎn)發(fā)延遲與檢驗準確率將受到影響。圖9 展示了BCFV 機制下,SDN 控制器正常工作時(p據(jù)負載變化),以及SDN 控制器故障時(p分別取固定值0、0.5和1)的轉(zhuǎn)發(fā)延遲變化。
SDN 控制器失效前,若BCFV 機制的驗證概率p=1,則SDN 控制器單點故障后,驗證概率將仍保持為p=1。隨著網(wǎng)絡(luò)負載的增加,轉(zhuǎn)發(fā)延遲也將增加,BCFV 模式(p=1)相較于BCFV 模式(p據(jù)負載變化)的轉(zhuǎn)發(fā)延遲平均增加了約1.5 ms,可見,此時系統(tǒng)效率略有降低,但仍在可接受范圍內(nèi)。而SDN 控制器失效后,BCFV 機制驗證概率保持在p=0.5時,其轉(zhuǎn)發(fā)延遲與BCFV 模式(p據(jù)負載變化)的轉(zhuǎn)發(fā)延遲相近,可見,非極端情況下,驗證概率的發(fā)送異常對BCFV 機制的影響較小。若SDN 控制器受到惡意控制,驗證概率被設(shè)置為p=0,此時驗證性能降低,但驗證延遲隨之降低,并未增加系統(tǒng)開銷。
在以1∶1 的比例向網(wǎng)絡(luò)注入虛假數(shù)據(jù)幀和篡改數(shù)據(jù)幀的情況下,繪制BCFV 模式(p=0)、BCFV 模式(p=0.5)、BCFV 模式(p=1)與BCFV 模式(p據(jù)負載變化)與集中式驗證機制隨網(wǎng)絡(luò)負載增加的漏檢概率變化,如圖10 所示。
若SDN 控制器失效或受到惡意控制時,驗證概率被設(shè)置為0 后不再更新,隨著網(wǎng)絡(luò)負載的增加,BCFV 模式(p=0)的漏檢概率相較于BCFV 模式(p據(jù)負載變化)有較大幅度的惡化,但仍能保持一定的驗證可靠性;若控制器單點故障時,驗證概率p=0.5,此時相較于BCFV 模式(p據(jù)負載變化),BCFV 模式(p=0.5)的漏檢概率仍能保持不高于30%;而在集中式驗證機制中,當控制器單點故障時,其驗證體系將無法識別對偽造或受篡改數(shù)據(jù)幀。另外,如果控制器單點故障時驗證概率p=1,結(jié)合圖9~10 可見,此時驗證性能得到提升,但系統(tǒng)開銷將有所增加。
綜上,在SDN 控制器單點故障的情況下,驗證概率發(fā)送機制可能出現(xiàn)異常,雖然會影響系統(tǒng)性能和驗證效率,卻無法中止系統(tǒng)的基本驗證行為,整體驗證系統(tǒng)仍可保持良好的驗證性能與效率。因此,BCFV 機制解決了集中式驗證機制中因單點故障導(dǎo)致整體驗證失效的問題。
本文提出了一種基于區(qū)塊鏈的數(shù)據(jù)幀安全驗證機制,利用數(shù)字簽名技術(shù)實現(xiàn)對數(shù)據(jù)幀來源可靠性與內(nèi)容完整性的驗證,充分利用區(qū)塊鏈可追溯、防篡改等特性實現(xiàn)對驗證信息實施可靠維護,并設(shè)計基于幀轉(zhuǎn)發(fā)證明的共識算法降低引入?yún)^(qū)塊鏈的開銷,同時,提出了可靈活調(diào)節(jié)的半隨機選擇驗證模式,實現(xiàn)對驗證有效性與系統(tǒng)開銷的兼顧。最后的仿真結(jié)果表明,BCFV 機制較好地解決了集中式驗證架構(gòu)中的單點故障問題,在驗證設(shè)備受到惡意控制時,本文提出的驗證機制可在合理的開銷代價下有效識別偽造與受篡改的數(shù)據(jù)幀,保持較低漏檢概率,且引入的轉(zhuǎn)發(fā)延遲、算力和存儲開銷均處于可接受范圍內(nèi)。在未來的工作中,一方面可結(jié)合應(yīng)用環(huán)境的具體安全等級、網(wǎng)絡(luò)負載和傳輸效率等多種因素分析驗證概率與驗證信息更新周期的優(yōu)化策略,提高本文驗證機制的適用性;另一方面,可以研究將BCFV 機制擴展應(yīng)用于SDN 之外的其他分布式網(wǎng)絡(luò)環(huán)境中,進行分布式、可信任的網(wǎng)絡(luò)數(shù)據(jù)幀驗證,擴大BCFV 機制的適用范圍。