劉 晶,朱炳旭,梁佳杭,任女爾,季海鵬
(1.河北工業大學 人工智能與數據科學學院,天津 300400;2.河北省數據驅動工業智能工程研究中心,天津 300400;3.天津開發區精諾瀚海數據科技有限公司,天津 300400;4.河北工業大學 材料科學與工程學院,天津 300400;5.中汽數據(天津)有限公司,天津 300393)
在美國先進制造戰略、德國工業4.0 戰略和中國制造2025 戰略[1]的大背景下,新一輪科技革命和產業變革蓬勃興起。作為新一代信息技術與制造業深度融合的產物,工業物聯網成為新工業革命的關鍵支撐。在工業物聯網急速發展的過程中,物聯網也承受著來自工業的海量數據[2]。然而對于高度依賴中心化服務器的傳統工業物聯網系統來說,數據的隱私保護、數據的可靠傳輸等致命缺點正嚴重影響著工業物聯網的發展[3]。訪問控制是一種可以保障數據僅能被認可的用戶訪問的一種數據保護技術,但當前的訪問控制多采用集中式服務器來完成授權決策[4],這種設計很容易發生單點故障問題,可靠性較低。同時,傳統的訪問控制在數據傳輸過程中容易被第三方截取篡改。因此,如何解決工業物聯網中訪問控制的數據可靠傳輸和單點故障問題成為工業物聯網發展的研究熱點。
區塊鏈是一種新興的去中心化分布式存儲技術,能夠在一個無中心的網絡環境中建立信任關系。區塊鏈從技術層面解決了中心化授權實體帶來的安全問題,通過將區塊鏈與訪問控制相結合,能夠有效避免單點故障問題,提高訪問控制的可靠性和安全性[5]。目前,已有研究人員將區塊鏈技術應用到物聯網中與訪問控制相結合來解決單點故障和數據的可靠傳輸問題,并取得了較好的效果。文獻[6]介紹了物聯網環境下的單點故障和數據篡改問題,設計并實現一種基于智能合約的物聯網訪問控制系統;文獻[7]針對目前傳統訪問控制模型比較復雜的問題,提出一種新的結合區塊鏈的訪問控制模型,具備伸縮性、細粒度等特性,可在物聯網系統中進行有效部署。
上述文獻都在一定程度上解決了物聯網環境中訪問控制的單點故障問題,但在實際應用中,尤其是在工業物聯網中存在著海量的工業數據傳輸,要求工業物聯網中的區塊鏈系統具有較高的吞吐率和較短的交易確認時間。針對上述問題,文獻[8]提出一種在許可環境下的可信交易框架,增加單位時間的交易處理能力來提升數據傳輸速度;文獻[9]設計一種滿足工業環境要求的高效與安全分層擴展式區塊鏈。上述方案都在一定程度上解決了區塊鏈的數據傳輸吞吐率的問題,然而在工業物聯網環境下的訪問控制每次進行訪問請求時都需要區塊鏈進行驗證,盡管對區塊鏈結構進行了優化,但在海量節點的環境下,再高效的驗證機制也會因節點的龐大數量而降低數據的傳輸速度。
側鏈技術是一種區塊鏈二層擴容技術,該技術通過將一些頻繁、小額的交易轉移到側鏈上來降低主網的交易壓力,有效提高交易效率[10]。在工業物聯網環境下,絕大部分節點的資源訪問請求內容是相同的,但訪問頻率較高,對于這類請求,在驗證了節點安全性之后僅需要批量進行區塊驗證即可達到目的。因此,可以在以太坊上部署對應的側鏈技術,將這些高頻節點的訪問請求放到側鏈上進行處理;主網僅需要對區塊進行批量驗證即可在解決單點故障問題的同時,保證數據的傳輸速度。
針對工業物聯網環境下訪問控制的單點故障和高效傳輸問題,本文提出一種基于主側鏈合作的工業物聯網訪問控制策略。該策略引入側鏈對區塊鏈進行擴容,提高區塊鏈的數據承載能力,并設計適用于主側鏈區塊鏈結構的訪問控制模型,以滿足數據高速傳輸的需求。
區塊鏈技術是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式,它起源于《Bitcoin:A Peer-to Peer Electronic Cash System》[11],其中去中心化是區塊鏈的一個顯著特點,區塊鏈使用分布式核算儲存自成一體,不依賴于任何中心機構,也沒有中心管制,任何節點的權力和義務都是均等的,系統中的數據由整個系統來維護。另外,在區塊鏈中,交易的私有信息被加密,其他數據對所有人開放,所有人都可以通過公開接口查詢區塊鏈數據和開發的相關應用,該系統信息高度透明。區塊鏈通過哈希算法使所有節點都產生信任,無法人為干預,各區塊節點的身份信息不需要公開或驗證使對方產生信任,只需要遵循固定的算法,就可以達到數據交互的信任。
區塊鏈作為一種分布式網絡存儲技術,同樣存在性能瓶頸,其中最突出的是區塊鏈可擴展性非常差。以太坊公有鏈的核心限制是每一筆交易都要由網絡中的每一個節點進行處理,這意味著以太坊整個網絡的吞吐量(TPS)不能高于以太坊單個節點的吞吐量。理論上,以太坊可以通過提高節點的區塊工作量來實現擴容[12],但這是以去中心化為代價的,因為節點的工作多,意味著算力小的計算機可能會退出網絡。這一問題一直以來都是限制區塊鏈發展的一大隱患,但由于起初用戶量較小,其弊端并沒有顯現出來。然而,隨著區塊鏈技術的不斷發展,越來越多的研究人員開始嘗試這項新技術,海量的用戶使以太坊變得非常擁堵,同時可以預見到未來會有越來越多的項目在以太坊的基礎上構建。因此,解決以太坊擴容這一難題勢在必行。
目前常見的擴容技術可以分為Layer1 層擴容和Layer2 層擴容兩種。Layer1 層的擴容方案采用分片技術[13],即讓區塊鏈不同的節點子集處理區塊鏈的不同部分,通過分割數據以減少區塊鏈節點必須存儲和處理的數量,由此來達到擴容效果。但由于分片涉及到區塊鏈底層協議的更改,因此分片技術提出后并沒有進行實際的應用。并且分片的數量受制于整個網絡的節點數量和處理能力,因此Layer1 層的擴容方案逐漸被廢棄。Layer2 層的擴容方案則是線下擴容[14],即區塊鏈主鏈不作改變,而是將所有計算委托給一組強大的節點來完成,這組節點并不直接鏈在主鏈上,因此其計算能力并不會受區塊鏈網絡條件的制約。在交易速度上,以太坊目前的交易速度約是15 筆/s,而根據Layer2 層的解決方案,以太坊的交易速度可達2 000~4 000 筆/s。因此,Layer2層的解決方案成為目前主要的擴容方向。Layer2 層的擴容方案比較著名的有狀態通道、Plasma、Rollup 等。
Plasma 方案是由BUTERIN(以太坊創始人)和POON(閃電網絡創始人)在2017 年共同提出的,它是一個在以太坊上構建可擴展應用的框架,允許創建附加在以太坊主鏈上的子鏈;同時,這些子鏈也可以產生自己的子鏈。其結果就是這些子鏈只需與以太坊主鏈進行極少量的交互就能運行擁有數千名用戶的整個應用程序[15]。由于子鏈上的操作不需要在整個以太坊區塊鏈存留副本,因此子鏈的運行速度更快,交易費用更低。Loom 側鏈則是一條實現了Plasma Cash 框架模型的高性能DPOS 側鏈,它由以太坊底層網絡安全背書,因此能夠享受DPOS 算法帶來的高性能共識。同時,Loom 團隊設計了能夠快速搭建屬于用戶自己區塊鏈的Loom SDK(工具集),使用戶可以根據自身需求設計自己的區塊鏈。
物聯網是一個以數據為核心的網絡,尤其是在工業物聯網中,各終端設備之間的互聯互通都是以數據作為中介。因此,數據的訪問和管理是整個工業物聯網互聯的關鍵所在。由于工業物聯網中的終端設備存在類型復雜、存儲能力、計算能力大小不一等問題,目前數據的訪問和管理通常由一個集中式的可信第三方實體實現。可信實體通過集中式服務器進行管理,依據訪控策略和其他屬性信息進行決策[16]。同時,為解決終端節點傳輸的海量數據所帶來的訪問和管理壓力,在工業物聯網中主要通過建立多個數據中心、構建分布式架構等方式進行應對。
在物聯網領域,訪問控制需要做到對請求的快速響應和回復。為滿足上述需求,在物聯網領域使用區塊鏈的訪問控制策略中,常用的方法是將架構分為區塊鏈端和物聯網設備端兩個部分[17]。但在工業物聯網領域,不僅節點數目龐大,而且很多節點并不需要同時完成資源的請求和上傳兩項工作。同時,許多工業數據對廠商來說極為重要,因此不僅要確認訪問控制模型的安全性,而且還要對連入物聯網的各設備進行安全性驗證。
針對上述工業物聯網領域的訪問控制架構問題,本文設計一種針對工業物聯網的策略架構,如圖1 所示。該架構根據對資源的使用情況分成客戶端、區塊鏈網絡、設備端3 個部分,客戶端和設備端分別是資源的上傳者和請求者,其中:客戶端負責資源上傳、策略制定以及資源使用授權,同時客戶端配置了與區塊鏈相連接的SDK,實現客戶端與區塊鏈網絡的連接;設備端則是對一些資源進行請求使用,這部分的設備通常為一些邊緣終端,運算能力較弱,因此通過網關與區塊鏈網絡相連接,發送對資源的請求。通過統一各終端的請求流向并進行分離,避免了請求沖突的出現,實現了請求的高速傳輸。

圖1 工業物聯網策略架構Fig.1 Strategy architecture of industrial Internet of things
區塊鏈網絡是主要的策略邏輯部分,為保證區塊鏈網絡的安全,設計對物聯網設備的身份驗證,即對于連入區塊鏈網絡的終端都需要預先進行登錄驗證,之后才會被允許連入。對以太坊的數據確認過程進行分析可以發現,在以太坊上,每進行一次操作就需要進行一次全節點確認,這是以太坊吞吐率低的主要原因。但在工業物聯網的環境下,由于終端操作存在批量重復請求的原因,其并不需要每一次操作都進行全節點的確認,僅需要對關鍵操作進行確認即可[18]。因此,本文區塊鏈將智能合約模塊放到側鏈上,由側鏈進行訪問控制策略的執行。該方法大幅減少了以太坊上的確認次數,提高了區塊鏈的使用效率。側鏈的數據通過礦工Operator 打包發送給與以太坊相連的Plasma 合約,分批次進行發送。以太坊作為主鏈,僅需要按批次地通過Plasma 合約獲取交易的哈希值,并將其同步到以太坊進行鎖定即可,這樣既提高了訪問控制的速度,又實現了去中心化的訪問控制。
在工業物聯網的訪問控制中,既要做到對權限有簡單明確的劃分,又要防止發生過度授權,出現隱私數據泄露等風險。因此,需要根據使用場景特點進行有針對性的訪問控制權限劃分。對于工業物聯網場景來說,最重要的是要防止數據的泄露,盡管研究人員對各常見的模型設計一些方法,如角色集、權限集等方法來防范非法訪問,但這種方法對保護措施的設計都有很高的要求[19],并且如果防范方法被破解,不法者就能迅速獲取各種數據資源,使工廠遭受無法挽回的損失。為更有效地防范數據泄露,本文設計一種基于主側鏈合作的訪問控制模型。通過執行點將資源與策略的管理相分離,每次的訪問都僅能收到請求資源的返回,由此來從根源上切斷數據的泄露,達到數據安全防范的效果。模型架構如圖2 所示。

圖2 訪問控制模型架構Fig.2 Architecture of access control model
模型在與主客體直接相連的部分設計了主體信息點和客體信息點,主體信息點是與主體交互的訪問控制執行點,負責傳遞主體的訪問請求和主體信息,以及返回處理請求后的執行結果。客體信息點是與客體資源交互的執行點,負責收集客體以及資源的屬性,當出現訪問請求時上傳所需客體資源信息,供訪問控制策略參考。這種設計阻隔了外部實體對模型內部的直接訪問,避免了非法入侵[20]。同時,數據的輸出通過執行點直接返回給各自連接的實體,有效避免了數據的泄露。信息處理點的設計則是將訪問控制策略的執行與存儲分離,出現請求時處理點直接調取設計好的訪問控制策略對請求進行判斷,處理點只有調取訪控策略的權限,并不能修改策略。并且每次查看策略的權限在完成本次訪問請求后將會收回,有效地避免了訪問控制策略的泄露,極大增強了模型的安全性。
為實現上述訪問控制策略,本文通過3 個部署在側鏈上的智能合約來完成訪問控制權限的決策授權和決策的信息管理,3 個合約分別是前置合約、訪問控制合約和監管合約。合約的交互方式如圖3所示。

圖3 合約在側鏈上的交互方式Fig.3 Interaction way of contracts on the sidechain
在側鏈上,區塊鏈的頭部部署前置合約,它維護一張信息表用來記錄監管合約和訪問控制合約的相關信息。然后在下一個區塊上部署監管合約,合約中包含了時間容忍度函數,用來對訪問者的訪問頻率進行監控,對規定范圍的訪問進行批量允許訪問。同時,監管合約維護一張違規訪問表,用來記錄違規的訪問者并進行一定的懲戒。之后的區塊用來放置訪問控制合約,每個區塊鏈連接不同的物聯網設備,訪問控制合約維護訪問策略表和訪問記錄表,當出現訪問請求時,訪問控制合約會根據制定的訪問策略以及監管合約的檢測結果,對訪問請求進行回應,并且當有新的訪問控制策略加入時,只需繼續在鏈上添加新的訪問控制合約即可。
為防止數據被篡改,區塊鏈需要對數據進行同步驗證。區塊鏈中使用的是默克爾樹算法,在該算法下各數據通過哈希算法求出哈希值,區塊鏈中僅保留最終產生的根哈希即可對數據進行同步驗證。但這種算法同樣存在弊端,該算法在驗證某個數據不存在于區塊中時會十分困難。因此,Plasma Cash 框架中使用了稀疏默克爾樹算法[21],該算法通過將鏈上數據按照元素序號順序進行排列,由此形成一個有序的葉子節點序列。當某處沒有交易時,葉子節點直接存儲一個空值;當需要驗證數據不存在性時,只需根據數據位置查找,找到空位置即可完成不存在性證明。訪問控制信息存儲到側鏈上以后,使用稀疏默克爾樹算法進行哈希鎖定,并將默克爾根同步到以太坊主鏈。一旦信息被篡改,默克爾根也會隨之改變[22],主鏈負責數據的驗證,側鏈負責數據的存儲和請求的處理,既保證了數據的真實性,又大幅提高了區塊鏈的吞吐率。稀疏默克爾樹算法流程如圖4 所示。

圖4 稀疏默克爾樹算法流程Fig.4 Procedure of sparse Merkel tree algorithm
通過仿真實驗,對本文的訪問控制模型以及側鏈的性能進行測試,并對其安全性和存儲占用進行分析。側鏈通過Loom SDK 部署,采用DPOS 共識機制,使用10 個節點來處理交易;主鏈通過Geth 部署,采用POA 共識機制,部署5 個節點進行驗證。主側鏈實驗環境如下:處理器Intel?CoreTMi7-9750H,主頻2.60 GHz,內存大小為16 GB,操作系統為ubuntu18.04LTS,Node.js 版本為v8.10.0。
訪問控制策略的生成時間是衡量訪問控制模型優劣的一個重要指標。為驗證本文模型在策略生成方面的效果,設計了一個傳統的區塊鏈物聯網訪問控制模型來進行對比實驗。此次實驗準備了一組次數 為50 次、100 次、200 次、500 次、800次的并發實驗,對2 個模型均進行測試并進行記錄該訪問次數下的平均時間。由于側鏈無需進行區塊確認,因此為更加直觀地看到模型控制策略的生成速度,將本文模型放到以太坊測試鏈上進行實驗,結果如圖5所示。

圖5 訪問控制模型生成速度對比Fig.5 Comparison of generation speed of access control model
從圖5 可以看出:傳統訪問控制模型的策略生成時間與本文模型相比,策略的生成時間會隨著并發次數的增加有較高的上升;而主側鏈合作訪問控制模型能更快地生成訪問策略,并且生成策略的延遲在高頻訪問時趨于穩定。由實驗數據可知,主側鏈合作訪問控制模型更適用于工業物聯網海量終端節點的應用情況。
工業物聯網下的訪問控制要求區塊鏈既要保障數據的穩定傳輸,又要降低數據傳輸的延遲以保證數據請求的時效性。為測試側鏈的穩定性,實驗選擇將前置合約分別部署于以太坊測試鏈和Plasma 側鏈上,模擬向合約中寫入訪問控制合約相關信息。實驗進行的寫入次數分別為50 次、100 次、200 次、500 次、800 次。實驗結果如圖6所示。

圖6 以太坊測試鏈與側鏈寫入數據延遲對比Fig.6 Comparison of write data delay between Ethereum test chain and sidechain
從圖6 數據可以看出:在以太坊測試鏈上由于受到區塊同步等因素的影響,數據寫入的延遲起伏較大,且延遲時間較高。對于工業物聯網來說,保持數據傳輸的穩定是重中之重,因此以太坊區塊鏈并不完全適配于工業物聯網環境。但可以看到在Plasma 側鏈上,寫入數據的延遲一直維持在一個很低的時間,且在不同的寫入次數下都能保持穩定。說明對于工業物聯網環境,Plasma 側鏈更加符合要求。
吞吐量是衡量一個訪問控制模型策略傳輸速度的重要指標[23]。在測試側鏈的穩定性之后,還需要測試側鏈的吞吐量以保證面對海量數據傳輸時不會出現數據擁堵和側鏈宕機的情況。為測試側鏈應對不同數據量時的吞吐量,實驗通過docker 容器模擬10個客戶端節點向側鏈發送50 次、100 次、200 次、400 次、700 次、1 100 次、1 600 次并發請求,分別對策略寫入請求和訪問資源請求進行記錄,實驗結果如圖7、圖8 所示。從圖中數據可以看出:在面對不同數量級的并發請求時,側鏈的吞吐量一直穩定在210 Transactions/s 左右,策略寫入請求和訪問資源請求基本沒有差異,具備承載工業物聯網訪問控制的能力。

圖7 寫入請求測試結果Fig.7 Write request test result

圖8 訪問資源測試結果Fig.8 Access resource test result
安全性分析包括以下3 個方面:
1)透明性
本文通過區塊鏈上的智能合約實現分布式的訪問控制機制。客體的違規記錄、資源的授權、訪控策略的存儲均由區塊鏈負責,實現整個授權過程中的透明性。
2)不可偽造性
Loom 側鏈基于Plasma Cash 框架模型實現,該框架下每進行一次操作就會分配一個唯一的ID,并將操作記錄在稀疏Merkle樹中[24]。通過這個ID 可以檢索到Merkle 樹結點的位置,進而找到操作記錄。通過ID 的不可偽造性防止側鏈作惡,實現側鏈的安全。
3)隱私性
在整個訪問過程中,客體和主體之間不發生直接接觸,雙方的請求和資源均由信息點收集和發送,互相無法得到對方的信息,保證了隱私性[25]。
隨著工業物聯網中設備、請求數量的不斷增加,訪問控制合約的代碼量也隨之飛速增長,對區塊鏈的存儲造成了較大的壓力。由于訪問控制策略的架構不同,因此存儲空間占用的大小和增速也不同。所以,在訪問控制合約設計時,應當充分考慮對區塊鏈造成的存儲壓力。目前常用的防控策略主要有基于角色的訪問控制(RBAC)和基于屬性的訪問控制(ABAC)兩種。RBAC 策略將角色和權限關聯,用戶通過系統給予的角色來獲得相應的權限[26]。該策略能夠支持物聯網環境的跨域控制、設備異構等特性。ABAC 策略則是將屬性作為控制權限的關鍵要素,通過屬性關聯權限實現動態化的節點安全接入[27]。為分析訪控策略對區塊鏈造成的存儲壓力,實驗參考設計了兩種常用的訪控策略與本文策略進行對比實驗,分析合約大小隨設備數目增長情況。合約的相關信息如表1 所示。

表1 智能合約相關信息Table 1 Related information of smart contract kB
假設設備數量為n,每個設備都會發起訪問控制請求,那么訪控策略中設備端每需要部署a個合約,就會產生a個主體客體對,即該策略中就會部署na個合約。由此,可以得到合約大小隨設備數量增長的表達式。
本文策略公式如下:
f(x)=65.13x+65.05
RBAC 策略公式如下:
g(x)=20.5x2+34.9
ABAC 策略公式如下:
h(x)=180.13x+160.07
根據函數表達式繪制如圖9 所示的函數圖像。從圖9 可以看出:RBAC 策略的代碼量隨著設備數目的增加而迅速增長,在4 個設備以上就高于本文所設計的策略。ABAC 策略代碼增長率雖然小于RBAC 策略,但與本文策略相比增速依然很快。相較于其他常用策略,本文提出的策略在保證數據傳輸效率的同時,節省了大量的存儲空間,更適用于工業物聯網海量節點的使用場景。

圖9 訪問控制合約存儲空間增長對比Fig.9 Comparison of access control contract storage space growth
為解決海量數據傳輸時區塊鏈傳輸性能不足的問題,本文提出一種基于主側鏈合作的工業物聯網訪問控制策略。根據Plasma 方案對區塊鏈進行側鏈擴容,側鏈負責智能合約執行,而主鏈以數據批量驗證的方式實現主側鏈合作的數據高效傳輸。在訪問控制模型的設計上,在與主客體直接相連的部分設計執行點,將資源與策略的管理相分離,不僅從根源上切斷數據的泄露,達到數據安全防范的效果,而且更有利于工業物聯網中輕量級節點設備的請求和資源傳輸。實驗結果表明,該策略能夠提高控制模型的管理效率,滿足工業物聯網環境下訪問控制的需求。下一步將橫向對比各種側鏈協議并進行線下部署實驗,選取更加符合工業物聯網環境的高性能側鏈技術,以提高控制策略安全傳輸效果。