劉 晶,朱炳旭,梁佳杭,任女爾,季海鵬
(1.河北工業(yè)大學(xué) 人工智能與數(shù)據(jù)科學(xué)學(xué)院,天津 300400;2.河北省數(shù)據(jù)驅(qū)動工業(yè)智能工程研究中心,天津 300400;3.天津開發(fā)區(qū)精諾瀚海數(shù)據(jù)科技有限公司,天津 300400;4.河北工業(yè)大學(xué) 材料科學(xué)與工程學(xué)院,天津 300400;5.中汽數(shù)據(jù)(天津)有限公司,天津 300393)
在美國先進(jìn)制造戰(zhàn)略、德國工業(yè)4.0 戰(zhàn)略和中國制造2025 戰(zhàn)略[1]的大背景下,新一輪科技革命和產(chǎn)業(yè)變革蓬勃興起。作為新一代信息技術(shù)與制造業(yè)深度融合的產(chǎn)物,工業(yè)物聯(lián)網(wǎng)成為新工業(yè)革命的關(guān)鍵支撐。在工業(yè)物聯(lián)網(wǎng)急速發(fā)展的過程中,物聯(lián)網(wǎng)也承受著來自工業(yè)的海量數(shù)據(jù)[2]。然而對于高度依賴中心化服務(wù)器的傳統(tǒng)工業(yè)物聯(lián)網(wǎng)系統(tǒng)來說,數(shù)據(jù)的隱私保護(hù)、數(shù)據(jù)的可靠傳輸?shù)戎旅秉c(diǎn)正嚴(yán)重影響著工業(yè)物聯(lián)網(wǎng)的發(fā)展[3]。訪問控制是一種可以保障數(shù)據(jù)僅能被認(rèn)可的用戶訪問的一種數(shù)據(jù)保護(hù)技術(shù),但當(dāng)前的訪問控制多采用集中式服務(wù)器來完成授權(quán)決策[4],這種設(shè)計(jì)很容易發(fā)生單點(diǎn)故障問題,可靠性較低。同時(shí),傳統(tǒng)的訪問控制在數(shù)據(jù)傳輸過程中容易被第三方截取篡改。因此,如何解決工業(yè)物聯(lián)網(wǎng)中訪問控制的數(shù)據(jù)可靠傳輸和單點(diǎn)故障問題成為工業(yè)物聯(lián)網(wǎng)發(fā)展的研究熱點(diǎn)。
區(qū)塊鏈?zhǔn)且环N新興的去中心化分布式存儲技術(shù),能夠在一個(gè)無中心的網(wǎng)絡(luò)環(huán)境中建立信任關(guān)系。區(qū)塊鏈從技術(shù)層面解決了中心化授權(quán)實(shí)體帶來的安全問題,通過將區(qū)塊鏈與訪問控制相結(jié)合,能夠有效避免單點(diǎn)故障問題,提高訪問控制的可靠性和安全性[5]。目前,已有研究人員將區(qū)塊鏈技術(shù)應(yīng)用到物聯(lián)網(wǎng)中與訪問控制相結(jié)合來解決單點(diǎn)故障和數(shù)據(jù)的可靠傳輸問題,并取得了較好的效果。文獻(xiàn)[6]介紹了物聯(lián)網(wǎng)環(huán)境下的單點(diǎn)故障和數(shù)據(jù)篡改問題,設(shè)計(jì)并實(shí)現(xiàn)一種基于智能合約的物聯(lián)網(wǎng)訪問控制系統(tǒng);文獻(xiàn)[7]針對目前傳統(tǒng)訪問控制模型比較復(fù)雜的問題,提出一種新的結(jié)合區(qū)塊鏈的訪問控制模型,具備伸縮性、細(xì)粒度等特性,可在物聯(lián)網(wǎng)系統(tǒng)中進(jìn)行有效部署。
上述文獻(xiàn)都在一定程度上解決了物聯(lián)網(wǎng)環(huán)境中訪問控制的單點(diǎn)故障問題,但在實(shí)際應(yīng)用中,尤其是在工業(yè)物聯(lián)網(wǎng)中存在著海量的工業(yè)數(shù)據(jù)傳輸,要求工業(yè)物聯(lián)網(wǎng)中的區(qū)塊鏈系統(tǒng)具有較高的吞吐率和較短的交易確認(rèn)時(shí)間。針對上述問題,文獻(xiàn)[8]提出一種在許可環(huán)境下的可信交易框架,增加單位時(shí)間的交易處理能力來提升數(shù)據(jù)傳輸速度;文獻(xiàn)[9]設(shè)計(jì)一種滿足工業(yè)環(huán)境要求的高效與安全分層擴(kuò)展式區(qū)塊鏈。上述方案都在一定程度上解決了區(qū)塊鏈的數(shù)據(jù)傳輸吞吐率的問題,然而在工業(yè)物聯(lián)網(wǎng)環(huán)境下的訪問控制每次進(jìn)行訪問請求時(shí)都需要區(qū)塊鏈進(jìn)行驗(yàn)證,盡管對區(qū)塊鏈結(jié)構(gòu)進(jìn)行了優(yōu)化,但在海量節(jié)點(diǎn)的環(huán)境下,再高效的驗(yàn)證機(jī)制也會因節(jié)點(diǎn)的龐大數(shù)量而降低數(shù)據(jù)的傳輸速度。
側(cè)鏈技術(shù)是一種區(qū)塊鏈二層擴(kuò)容技術(shù),該技術(shù)通過將一些頻繁、小額的交易轉(zhuǎn)移到側(cè)鏈上來降低主網(wǎng)的交易壓力,有效提高交易效率[10]。在工業(yè)物聯(lián)網(wǎng)環(huán)境下,絕大部分節(jié)點(diǎn)的資源訪問請求內(nèi)容是相同的,但訪問頻率較高,對于這類請求,在驗(yàn)證了節(jié)點(diǎn)安全性之后僅需要批量進(jìn)行區(qū)塊驗(yàn)證即可達(dá)到目的。因此,可以在以太坊上部署對應(yīng)的側(cè)鏈技術(shù),將這些高頻節(jié)點(diǎn)的訪問請求放到側(cè)鏈上進(jìn)行處理;主網(wǎng)僅需要對區(qū)塊進(jìn)行批量驗(yàn)證即可在解決單點(diǎn)故障問題的同時(shí),保證數(shù)據(jù)的傳輸速度。
針對工業(yè)物聯(lián)網(wǎng)環(huán)境下訪問控制的單點(diǎn)故障和高效傳輸問題,本文提出一種基于主側(cè)鏈合作的工業(yè)物聯(lián)網(wǎng)訪問控制策略。該策略引入側(cè)鏈對區(qū)塊鏈進(jìn)行擴(kuò)容,提高區(qū)塊鏈的數(shù)據(jù)承載能力,并設(shè)計(jì)適用于主側(cè)鏈區(qū)塊鏈結(jié)構(gòu)的訪問控制模型,以滿足數(shù)據(jù)高速傳輸?shù)男枨蟆?/p>
區(qū)塊鏈技術(shù)是分布式數(shù)據(jù)存儲、點(diǎn)對點(diǎn)傳輸、共識機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式,它起源于《Bitcoin:A Peer-to Peer Electronic Cash System》[11],其中去中心化是區(qū)塊鏈的一個(gè)顯著特點(diǎn),區(qū)塊鏈?zhǔn)褂梅植际胶怂銉Υ孀猿梢惑w,不依賴于任何中心機(jī)構(gòu),也沒有中心管制,任何節(jié)點(diǎn)的權(quán)力和義務(wù)都是均等的,系統(tǒng)中的數(shù)據(jù)由整個(gè)系統(tǒng)來維護(hù)。另外,在區(qū)塊鏈中,交易的私有信息被加密,其他數(shù)據(jù)對所有人開放,所有人都可以通過公開接口查詢區(qū)塊鏈數(shù)據(jù)和開發(fā)的相關(guān)應(yīng)用,該系統(tǒng)信息高度透明。區(qū)塊鏈通過哈希算法使所有節(jié)點(diǎn)都產(chǎn)生信任,無法人為干預(yù),各區(qū)塊節(jié)點(diǎn)的身份信息不需要公開或驗(yàn)證使對方產(chǎn)生信任,只需要遵循固定的算法,就可以達(dá)到數(shù)據(jù)交互的信任。
區(qū)塊鏈作為一種分布式網(wǎng)絡(luò)存儲技術(shù),同樣存在性能瓶頸,其中最突出的是區(qū)塊鏈可擴(kuò)展性非常差。以太坊公有鏈的核心限制是每一筆交易都要由網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)進(jìn)行處理,這意味著以太坊整個(gè)網(wǎng)絡(luò)的吞吐量(TPS)不能高于以太坊單個(gè)節(jié)點(diǎn)的吞吐量。理論上,以太坊可以通過提高節(jié)點(diǎn)的區(qū)塊工作量來實(shí)現(xiàn)擴(kuò)容[12],但這是以去中心化為代價(jià)的,因?yàn)楣?jié)點(diǎn)的工作多,意味著算力小的計(jì)算機(jī)可能會退出網(wǎng)絡(luò)。這一問題一直以來都是限制區(qū)塊鏈發(fā)展的一大隱患,但由于起初用戶量較小,其弊端并沒有顯現(xiàn)出來。然而,隨著區(qū)塊鏈技術(shù)的不斷發(fā)展,越來越多的研究人員開始嘗試這項(xiàng)新技術(shù),海量的用戶使以太坊變得非常擁堵,同時(shí)可以預(yù)見到未來會有越來越多的項(xiàng)目在以太坊的基礎(chǔ)上構(gòu)建。因此,解決以太坊擴(kuò)容這一難題勢在必行。
目前常見的擴(kuò)容技術(shù)可以分為Layer1 層擴(kuò)容和Layer2 層擴(kuò)容兩種。Layer1 層的擴(kuò)容方案采用分片技術(shù)[13],即讓區(qū)塊鏈不同的節(jié)點(diǎn)子集處理區(qū)塊鏈的不同部分,通過分割數(shù)據(jù)以減少區(qū)塊鏈節(jié)點(diǎn)必須存儲和處理的數(shù)量,由此來達(dá)到擴(kuò)容效果。但由于分片涉及到區(qū)塊鏈底層協(xié)議的更改,因此分片技術(shù)提出后并沒有進(jìn)行實(shí)際的應(yīng)用。并且分片的數(shù)量受制于整個(gè)網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)量和處理能力,因此Layer1 層的擴(kuò)容方案逐漸被廢棄。Layer2 層的擴(kuò)容方案則是線下擴(kuò)容[14],即區(qū)塊鏈主鏈不作改變,而是將所有計(jì)算委托給一組強(qiáng)大的節(jié)點(diǎn)來完成,這組節(jié)點(diǎn)并不直接鏈在主鏈上,因此其計(jì)算能力并不會受區(qū)塊鏈網(wǎng)絡(luò)條件的制約。在交易速度上,以太坊目前的交易速度約是15 筆/s,而根據(jù)Layer2 層的解決方案,以太坊的交易速度可達(dá)2 000~4 000 筆/s。因此,Layer2層的解決方案成為目前主要的擴(kuò)容方向。Layer2 層的擴(kuò)容方案比較著名的有狀態(tài)通道、Plasma、Rollup 等。
Plasma 方案是由BUTERIN(以太坊創(chuàng)始人)和POON(閃電網(wǎng)絡(luò)創(chuàng)始人)在2017 年共同提出的,它是一個(gè)在以太坊上構(gòu)建可擴(kuò)展應(yīng)用的框架,允許創(chuàng)建附加在以太坊主鏈上的子鏈;同時(shí),這些子鏈也可以產(chǎn)生自己的子鏈。其結(jié)果就是這些子鏈只需與以太坊主鏈進(jìn)行極少量的交互就能運(yùn)行擁有數(shù)千名用戶的整個(gè)應(yīng)用程序[15]。由于子鏈上的操作不需要在整個(gè)以太坊區(qū)塊鏈存留副本,因此子鏈的運(yùn)行速度更快,交易費(fèi)用更低。Loom 側(cè)鏈則是一條實(shí)現(xiàn)了Plasma Cash 框架模型的高性能DPOS 側(cè)鏈,它由以太坊底層網(wǎng)絡(luò)安全背書,因此能夠享受DPOS 算法帶來的高性能共識。同時(shí),Loom 團(tuán)隊(duì)設(shè)計(jì)了能夠快速搭建屬于用戶自己區(qū)塊鏈的Loom SDK(工具集),使用戶可以根據(jù)自身需求設(shè)計(jì)自己的區(qū)塊鏈。
物聯(lián)網(wǎng)是一個(gè)以數(shù)據(jù)為核心的網(wǎng)絡(luò),尤其是在工業(yè)物聯(lián)網(wǎng)中,各終端設(shè)備之間的互聯(lián)互通都是以數(shù)據(jù)作為中介。因此,數(shù)據(jù)的訪問和管理是整個(gè)工業(yè)物聯(lián)網(wǎng)互聯(lián)的關(guān)鍵所在。由于工業(yè)物聯(lián)網(wǎng)中的終端設(shè)備存在類型復(fù)雜、存儲能力、計(jì)算能力大小不一等問題,目前數(shù)據(jù)的訪問和管理通常由一個(gè)集中式的可信第三方實(shí)體實(shí)現(xiàn)。可信實(shí)體通過集中式服務(wù)器進(jìn)行管理,依據(jù)訪控策略和其他屬性信息進(jìn)行決策[16]。同時(shí),為解決終端節(jié)點(diǎn)傳輸?shù)暮A繑?shù)據(jù)所帶來的訪問和管理壓力,在工業(yè)物聯(lián)網(wǎng)中主要通過建立多個(gè)數(shù)據(jù)中心、構(gòu)建分布式架構(gòu)等方式進(jìn)行應(yīng)對。
在物聯(lián)網(wǎng)領(lǐng)域,訪問控制需要做到對請求的快速響應(yīng)和回復(fù)。為滿足上述需求,在物聯(lián)網(wǎng)領(lǐng)域使用區(qū)塊鏈的訪問控制策略中,常用的方法是將架構(gòu)分為區(qū)塊鏈端和物聯(lián)網(wǎng)設(shè)備端兩個(gè)部分[17]。但在工業(yè)物聯(lián)網(wǎng)領(lǐng)域,不僅節(jié)點(diǎn)數(shù)目龐大,而且很多節(jié)點(diǎn)并不需要同時(shí)完成資源的請求和上傳兩項(xiàng)工作。同時(shí),許多工業(yè)數(shù)據(jù)對廠商來說極為重要,因此不僅要確認(rèn)訪問控制模型的安全性,而且還要對連入物聯(lián)網(wǎng)的各設(shè)備進(jìn)行安全性驗(yàn)證。
針對上述工業(yè)物聯(lián)網(wǎng)領(lǐng)域的訪問控制架構(gòu)問題,本文設(shè)計(jì)一種針對工業(yè)物聯(lián)網(wǎng)的策略架構(gòu),如圖1 所示。該架構(gòu)根據(jù)對資源的使用情況分成客戶端、區(qū)塊鏈網(wǎng)絡(luò)、設(shè)備端3 個(gè)部分,客戶端和設(shè)備端分別是資源的上傳者和請求者,其中:客戶端負(fù)責(zé)資源上傳、策略制定以及資源使用授權(quán),同時(shí)客戶端配置了與區(qū)塊鏈相連接的SDK,實(shí)現(xiàn)客戶端與區(qū)塊鏈網(wǎng)絡(luò)的連接;設(shè)備端則是對一些資源進(jìn)行請求使用,這部分的設(shè)備通常為一些邊緣終端,運(yùn)算能力較弱,因此通過網(wǎng)關(guān)與區(qū)塊鏈網(wǎng)絡(luò)相連接,發(fā)送對資源的請求。通過統(tǒng)一各終端的請求流向并進(jìn)行分離,避免了請求沖突的出現(xiàn),實(shí)現(xiàn)了請求的高速傳輸。
圖1 工業(yè)物聯(lián)網(wǎng)策略架構(gòu)Fig.1 Strategy architecture of industrial Internet of things
區(qū)塊鏈網(wǎng)絡(luò)是主要的策略邏輯部分,為保證區(qū)塊鏈網(wǎng)絡(luò)的安全,設(shè)計(jì)對物聯(lián)網(wǎng)設(shè)備的身份驗(yàn)證,即對于連入?yún)^(qū)塊鏈網(wǎng)絡(luò)的終端都需要預(yù)先進(jìn)行登錄驗(yàn)證,之后才會被允許連入。對以太坊的數(shù)據(jù)確認(rèn)過程進(jìn)行分析可以發(fā)現(xiàn),在以太坊上,每進(jìn)行一次操作就需要進(jìn)行一次全節(jié)點(diǎn)確認(rèn),這是以太坊吞吐率低的主要原因。但在工業(yè)物聯(lián)網(wǎng)的環(huán)境下,由于終端操作存在批量重復(fù)請求的原因,其并不需要每一次操作都進(jìn)行全節(jié)點(diǎn)的確認(rèn),僅需要對關(guān)鍵操作進(jìn)行確認(rèn)即可[18]。因此,本文區(qū)塊鏈將智能合約模塊放到側(cè)鏈上,由側(cè)鏈進(jìn)行訪問控制策略的執(zhí)行。該方法大幅減少了以太坊上的確認(rèn)次數(shù),提高了區(qū)塊鏈的使用效率。側(cè)鏈的數(shù)據(jù)通過礦工Operator 打包發(fā)送給與以太坊相連的Plasma 合約,分批次進(jìn)行發(fā)送。以太坊作為主鏈,僅需要按批次地通過Plasma 合約獲取交易的哈希值,并將其同步到以太坊進(jìn)行鎖定即可,這樣既提高了訪問控制的速度,又實(shí)現(xiàn)了去中心化的訪問控制。
在工業(yè)物聯(lián)網(wǎng)的訪問控制中,既要做到對權(quán)限有簡單明確的劃分,又要防止發(fā)生過度授權(quán),出現(xiàn)隱私數(shù)據(jù)泄露等風(fēng)險(xiǎn)。因此,需要根據(jù)使用場景特點(diǎn)進(jìn)行有針對性的訪問控制權(quán)限劃分。對于工業(yè)物聯(lián)網(wǎng)場景來說,最重要的是要防止數(shù)據(jù)的泄露,盡管研究人員對各常見的模型設(shè)計(jì)一些方法,如角色集、權(quán)限集等方法來防范非法訪問,但這種方法對保護(hù)措施的設(shè)計(jì)都有很高的要求[19],并且如果防范方法被破解,不法者就能迅速獲取各種數(shù)據(jù)資源,使工廠遭受無法挽回的損失。為更有效地防范數(shù)據(jù)泄露,本文設(shè)計(jì)一種基于主側(cè)鏈合作的訪問控制模型。通過執(zhí)行點(diǎn)將資源與策略的管理相分離,每次的訪問都僅能收到請求資源的返回,由此來從根源上切斷數(shù)據(jù)的泄露,達(dá)到數(shù)據(jù)安全防范的效果。模型架構(gòu)如圖2 所示。
圖2 訪問控制模型架構(gòu)Fig.2 Architecture of access control model
模型在與主客體直接相連的部分設(shè)計(jì)了主體信息點(diǎn)和客體信息點(diǎn),主體信息點(diǎn)是與主體交互的訪問控制執(zhí)行點(diǎn),負(fù)責(zé)傳遞主體的訪問請求和主體信息,以及返回處理請求后的執(zhí)行結(jié)果。客體信息點(diǎn)是與客體資源交互的執(zhí)行點(diǎn),負(fù)責(zé)收集客體以及資源的屬性,當(dāng)出現(xiàn)訪問請求時(shí)上傳所需客體資源信息,供訪問控制策略參考。這種設(shè)計(jì)阻隔了外部實(shí)體對模型內(nèi)部的直接訪問,避免了非法入侵[20]。同時(shí),數(shù)據(jù)的輸出通過執(zhí)行點(diǎn)直接返回給各自連接的實(shí)體,有效避免了數(shù)據(jù)的泄露。信息處理點(diǎn)的設(shè)計(jì)則是將訪問控制策略的執(zhí)行與存儲分離,出現(xiàn)請求時(shí)處理點(diǎn)直接調(diào)取設(shè)計(jì)好的訪問控制策略對請求進(jìn)行判斷,處理點(diǎn)只有調(diào)取訪控策略的權(quán)限,并不能修改策略。并且每次查看策略的權(quán)限在完成本次訪問請求后將會收回,有效地避免了訪問控制策略的泄露,極大增強(qiáng)了模型的安全性。
為實(shí)現(xiàn)上述訪問控制策略,本文通過3 個(gè)部署在側(cè)鏈上的智能合約來完成訪問控制權(quán)限的決策授權(quán)和決策的信息管理,3 個(gè)合約分別是前置合約、訪問控制合約和監(jiān)管合約。合約的交互方式如圖3所示。
圖3 合約在側(cè)鏈上的交互方式Fig.3 Interaction way of contracts on the sidechain
在側(cè)鏈上,區(qū)塊鏈的頭部部署前置合約,它維護(hù)一張信息表用來記錄監(jiān)管合約和訪問控制合約的相關(guān)信息。然后在下一個(gè)區(qū)塊上部署監(jiān)管合約,合約中包含了時(shí)間容忍度函數(shù),用來對訪問者的訪問頻率進(jìn)行監(jiān)控,對規(guī)定范圍的訪問進(jìn)行批量允許訪問。同時(shí),監(jiān)管合約維護(hù)一張違規(guī)訪問表,用來記錄違規(guī)的訪問者并進(jìn)行一定的懲戒。之后的區(qū)塊用來放置訪問控制合約,每個(gè)區(qū)塊鏈連接不同的物聯(lián)網(wǎng)設(shè)備,訪問控制合約維護(hù)訪問策略表和訪問記錄表,當(dāng)出現(xiàn)訪問請求時(shí),訪問控制合約會根據(jù)制定的訪問策略以及監(jiān)管合約的檢測結(jié)果,對訪問請求進(jìn)行回應(yīng),并且當(dāng)有新的訪問控制策略加入時(shí),只需繼續(xù)在鏈上添加新的訪問控制合約即可。
為防止數(shù)據(jù)被篡改,區(qū)塊鏈需要對數(shù)據(jù)進(jìn)行同步驗(yàn)證。區(qū)塊鏈中使用的是默克爾樹算法,在該算法下各數(shù)據(jù)通過哈希算法求出哈希值,區(qū)塊鏈中僅保留最終產(chǎn)生的根哈希即可對數(shù)據(jù)進(jìn)行同步驗(yàn)證。但這種算法同樣存在弊端,該算法在驗(yàn)證某個(gè)數(shù)據(jù)不存在于區(qū)塊中時(shí)會十分困難。因此,Plasma Cash 框架中使用了稀疏默克爾樹算法[21],該算法通過將鏈上數(shù)據(jù)按照元素序號順序進(jìn)行排列,由此形成一個(gè)有序的葉子節(jié)點(diǎn)序列。當(dāng)某處沒有交易時(shí),葉子節(jié)點(diǎn)直接存儲一個(gè)空值;當(dāng)需要驗(yàn)證數(shù)據(jù)不存在性時(shí),只需根據(jù)數(shù)據(jù)位置查找,找到空位置即可完成不存在性證明。訪問控制信息存儲到側(cè)鏈上以后,使用稀疏默克爾樹算法進(jìn)行哈希鎖定,并將默克爾根同步到以太坊主鏈。一旦信息被篡改,默克爾根也會隨之改變[22],主鏈負(fù)責(zé)數(shù)據(jù)的驗(yàn)證,側(cè)鏈負(fù)責(zé)數(shù)據(jù)的存儲和請求的處理,既保證了數(shù)據(jù)的真實(shí)性,又大幅提高了區(qū)塊鏈的吞吐率。稀疏默克爾樹算法流程如圖4 所示。
圖4 稀疏默克爾樹算法流程Fig.4 Procedure of sparse Merkel tree algorithm
通過仿真實(shí)驗(yàn),對本文的訪問控制模型以及側(cè)鏈的性能進(jìn)行測試,并對其安全性和存儲占用進(jìn)行分析。側(cè)鏈通過Loom SDK 部署,采用DPOS 共識機(jī)制,使用10 個(gè)節(jié)點(diǎn)來處理交易;主鏈通過Geth 部署,采用POA 共識機(jī)制,部署5 個(gè)節(jié)點(diǎn)進(jìn)行驗(yàn)證。主側(cè)鏈實(shí)驗(yàn)環(huán)境如下:處理器Intel?CoreTMi7-9750H,主頻2.60 GHz,內(nèi)存大小為16 GB,操作系統(tǒng)為ubuntu18.04LTS,Node.js 版本為v8.10.0。
訪問控制策略的生成時(shí)間是衡量訪問控制模型優(yōu)劣的一個(gè)重要指標(biāo)。為驗(yàn)證本文模型在策略生成方面的效果,設(shè)計(jì)了一個(gè)傳統(tǒng)的區(qū)塊鏈物聯(lián)網(wǎng)訪問控制模型來進(jìn)行對比實(shí)驗(yàn)。此次實(shí)驗(yàn)準(zhǔn)備了一組次數(shù) 為50 次、100 次、200 次、500 次、800次的并發(fā)實(shí)驗(yàn),對2 個(gè)模型均進(jìn)行測試并進(jìn)行記錄該訪問次數(shù)下的平均時(shí)間。由于側(cè)鏈無需進(jìn)行區(qū)塊確認(rèn),因此為更加直觀地看到模型控制策略的生成速度,將本文模型放到以太坊測試鏈上進(jìn)行實(shí)驗(yàn),結(jié)果如圖5所示。
圖5 訪問控制模型生成速度對比Fig.5 Comparison of generation speed of access control model
從圖5 可以看出:傳統(tǒng)訪問控制模型的策略生成時(shí)間與本文模型相比,策略的生成時(shí)間會隨著并發(fā)次數(shù)的增加有較高的上升;而主側(cè)鏈合作訪問控制模型能更快地生成訪問策略,并且生成策略的延遲在高頻訪問時(shí)趨于穩(wěn)定。由實(shí)驗(yàn)數(shù)據(jù)可知,主側(cè)鏈合作訪問控制模型更適用于工業(yè)物聯(lián)網(wǎng)海量終端節(jié)點(diǎn)的應(yīng)用情況。
工業(yè)物聯(lián)網(wǎng)下的訪問控制要求區(qū)塊鏈既要保障數(shù)據(jù)的穩(wěn)定傳輸,又要降低數(shù)據(jù)傳輸?shù)难舆t以保證數(shù)據(jù)請求的時(shí)效性。為測試側(cè)鏈的穩(wěn)定性,實(shí)驗(yàn)選擇將前置合約分別部署于以太坊測試鏈和Plasma 側(cè)鏈上,模擬向合約中寫入訪問控制合約相關(guān)信息。實(shí)驗(yàn)進(jìn)行的寫入次數(shù)分別為50 次、100 次、200 次、500 次、800 次。實(shí)驗(yàn)結(jié)果如圖6所示。
圖6 以太坊測試鏈與側(cè)鏈寫入數(shù)據(jù)延遲對比Fig.6 Comparison of write data delay between Ethereum test chain and sidechain
從圖6 數(shù)據(jù)可以看出:在以太坊測試鏈上由于受到區(qū)塊同步等因素的影響,數(shù)據(jù)寫入的延遲起伏較大,且延遲時(shí)間較高。對于工業(yè)物聯(lián)網(wǎng)來說,保持?jǐn)?shù)據(jù)傳輸?shù)姆€(wěn)定是重中之重,因此以太坊區(qū)塊鏈并不完全適配于工業(yè)物聯(lián)網(wǎng)環(huán)境。但可以看到在Plasma 側(cè)鏈上,寫入數(shù)據(jù)的延遲一直維持在一個(gè)很低的時(shí)間,且在不同的寫入次數(shù)下都能保持穩(wěn)定。說明對于工業(yè)物聯(lián)網(wǎng)環(huán)境,Plasma 側(cè)鏈更加符合要求。
吞吐量是衡量一個(gè)訪問控制模型策略傳輸速度的重要指標(biāo)[23]。在測試側(cè)鏈的穩(wěn)定性之后,還需要測試側(cè)鏈的吞吐量以保證面對海量數(shù)據(jù)傳輸時(shí)不會出現(xiàn)數(shù)據(jù)擁堵和側(cè)鏈宕機(jī)的情況。為測試側(cè)鏈應(yīng)對不同數(shù)據(jù)量時(shí)的吞吐量,實(shí)驗(yàn)通過docker 容器模擬10個(gè)客戶端節(jié)點(diǎn)向側(cè)鏈發(fā)送50 次、100 次、200 次、400 次、700 次、1 100 次、1 600 次并發(fā)請求,分別對策略寫入請求和訪問資源請求進(jìn)行記錄,實(shí)驗(yàn)結(jié)果如圖7、圖8 所示。從圖中數(shù)據(jù)可以看出:在面對不同數(shù)量級的并發(fā)請求時(shí),側(cè)鏈的吞吐量一直穩(wěn)定在210 Transactions/s 左右,策略寫入請求和訪問資源請求基本沒有差異,具備承載工業(yè)物聯(lián)網(wǎng)訪問控制的能力。
圖7 寫入請求測試結(jié)果Fig.7 Write request test result
圖8 訪問資源測試結(jié)果Fig.8 Access resource test result
安全性分析包括以下3 個(gè)方面:
1)透明性
本文通過區(qū)塊鏈上的智能合約實(shí)現(xiàn)分布式的訪問控制機(jī)制??腕w的違規(guī)記錄、資源的授權(quán)、訪控策略的存儲均由區(qū)塊鏈負(fù)責(zé),實(shí)現(xiàn)整個(gè)授權(quán)過程中的透明性。
2)不可偽造性
Loom 側(cè)鏈基于Plasma Cash 框架模型實(shí)現(xiàn),該框架下每進(jìn)行一次操作就會分配一個(gè)唯一的ID,并將操作記錄在稀疏Merkle樹中[24]。通過這個(gè)ID 可以檢索到Merkle 樹結(jié)點(diǎn)的位置,進(jìn)而找到操作記錄。通過ID 的不可偽造性防止側(cè)鏈作惡,實(shí)現(xiàn)側(cè)鏈的安全。
3)隱私性
在整個(gè)訪問過程中,客體和主體之間不發(fā)生直接接觸,雙方的請求和資源均由信息點(diǎn)收集和發(fā)送,互相無法得到對方的信息,保證了隱私性[25]。
隨著工業(yè)物聯(lián)網(wǎng)中設(shè)備、請求數(shù)量的不斷增加,訪問控制合約的代碼量也隨之飛速增長,對區(qū)塊鏈的存儲造成了較大的壓力。由于訪問控制策略的架構(gòu)不同,因此存儲空間占用的大小和增速也不同。所以,在訪問控制合約設(shè)計(jì)時(shí),應(yīng)當(dāng)充分考慮對區(qū)塊鏈造成的存儲壓力。目前常用的防控策略主要有基于角色的訪問控制(RBAC)和基于屬性的訪問控制(ABAC)兩種。RBAC 策略將角色和權(quán)限關(guān)聯(lián),用戶通過系統(tǒng)給予的角色來獲得相應(yīng)的權(quán)限[26]。該策略能夠支持物聯(lián)網(wǎng)環(huán)境的跨域控制、設(shè)備異構(gòu)等特性。ABAC 策略則是將屬性作為控制權(quán)限的關(guān)鍵要素,通過屬性關(guān)聯(lián)權(quán)限實(shí)現(xiàn)動態(tài)化的節(jié)點(diǎn)安全接入[27]。為分析訪控策略對區(qū)塊鏈造成的存儲壓力,實(shí)驗(yàn)參考設(shè)計(jì)了兩種常用的訪控策略與本文策略進(jìn)行對比實(shí)驗(yàn),分析合約大小隨設(shè)備數(shù)目增長情況。合約的相關(guān)信息如表1 所示。
表1 智能合約相關(guān)信息Table 1 Related information of smart contract kB
假設(shè)設(shè)備數(shù)量為n,每個(gè)設(shè)備都會發(fā)起訪問控制請求,那么訪控策略中設(shè)備端每需要部署a個(gè)合約,就會產(chǎn)生a個(gè)主體客體對,即該策略中就會部署na個(gè)合約。由此,可以得到合約大小隨設(shè)備數(shù)量增長的表達(dá)式。
本文策略公式如下:
f(x)=65.13x+65.05
RBAC 策略公式如下:
g(x)=20.5x2+34.9
ABAC 策略公式如下:
h(x)=180.13x+160.07
根據(jù)函數(shù)表達(dá)式繪制如圖9 所示的函數(shù)圖像。從圖9 可以看出:RBAC 策略的代碼量隨著設(shè)備數(shù)目的增加而迅速增長,在4 個(gè)設(shè)備以上就高于本文所設(shè)計(jì)的策略。ABAC 策略代碼增長率雖然小于RBAC 策略,但與本文策略相比增速依然很快。相較于其他常用策略,本文提出的策略在保證數(shù)據(jù)傳輸效率的同時(shí),節(jié)省了大量的存儲空間,更適用于工業(yè)物聯(lián)網(wǎng)海量節(jié)點(diǎn)的使用場景。
圖9 訪問控制合約存儲空間增長對比Fig.9 Comparison of access control contract storage space growth
為解決海量數(shù)據(jù)傳輸時(shí)區(qū)塊鏈傳輸性能不足的問題,本文提出一種基于主側(cè)鏈合作的工業(yè)物聯(lián)網(wǎng)訪問控制策略。根據(jù)Plasma 方案對區(qū)塊鏈進(jìn)行側(cè)鏈擴(kuò)容,側(cè)鏈負(fù)責(zé)智能合約執(zhí)行,而主鏈以數(shù)據(jù)批量驗(yàn)證的方式實(shí)現(xiàn)主側(cè)鏈合作的數(shù)據(jù)高效傳輸。在訪問控制模型的設(shè)計(jì)上,在與主客體直接相連的部分設(shè)計(jì)執(zhí)行點(diǎn),將資源與策略的管理相分離,不僅從根源上切斷數(shù)據(jù)的泄露,達(dá)到數(shù)據(jù)安全防范的效果,而且更有利于工業(yè)物聯(lián)網(wǎng)中輕量級節(jié)點(diǎn)設(shè)備的請求和資源傳輸。實(shí)驗(yàn)結(jié)果表明,該策略能夠提高控制模型的管理效率,滿足工業(yè)物聯(lián)網(wǎng)環(huán)境下訪問控制的需求。下一步將橫向?qū)Ρ雀鞣N側(cè)鏈協(xié)議并進(jìn)行線下部署實(shí)驗(yàn),選取更加符合工業(yè)物聯(lián)網(wǎng)環(huán)境的高性能側(cè)鏈技術(shù),以提高控制策略安全傳輸效果。