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