摘 要:由于傳統區塊鏈技術處理交易能力弱、吞吐量低,不僅難以處理工業環境下的海量數據,而且其訪問控制策略權限管理效率低,安全性不足。針對上述問題,提出了基于主側鏈合作的區塊鏈訪問控制模型策略,該策略首先通過 plasma 方案對區塊鏈進行側鏈擴容,其次針對工業物聯網的節點特點和主側鏈區塊鏈的運行環境,設計了適用于主側鏈環境的訪問控制模型,編寫成智能合約后放至側鏈上;以側鏈負責合約執行,主鏈負責數據批量驗證的方式實現設備的訪問控制。最后,通過實驗結果表明,該策略既對基于工業物聯網的區塊鏈傳輸速度和穩定性進行了有效的優化,又提高了控制策略的管理效率和安全性,滿足了工業物聯網中的使用需求。
劉晶; 朱炳旭; 梁佳杭; 任女爾; 季海鵬, 計算機工程 發表時間:2021-09-16
關鍵詞:工業物聯網;區塊鏈;訪問控制;智能合約;擴容技術
0 概述
在美國先進制造戰略、德國工業 4.0 戰略和中國制造 2025 戰略[1]的大背景下,新一輪科技革命和產業變革蓬勃興起。作為新一代信息技術與制造業深度融合的產物,工業物聯網日益成為新工業革命的關鍵支撐。在工業物聯網急速發展的過程中,物聯網也承受著來自工業的海量數據[2]。然而對于高度依賴中心化服務器的傳統工業物聯網系統來說,數據的隱私保護,數據的可靠傳輸等致命缺點正嚴重影響著工業物聯網的發展[3]。訪問控制是一種可以保障數據僅能被認可的用戶訪問的一種數據保護技術,但當前的訪問控制多采用集中式服務器來完成授權決策[4],這種設計很容易發生單點故障問題,可靠性較低。同時,傳統的訪問控制在數據傳輸過程中容易被第三方截取篡改。因此,如何解決工業物聯網中訪問控制的數據可靠傳輸和單點故障問題成為了工業物聯網發展的熱點問題。
區塊鏈是一種新興的去中心化分布式存儲技術,能夠在一個無中心的網絡環境中建立信任關系。區塊鏈從技術層面解決了中心化授權實體帶來的安全問題,通過將區塊鏈與訪問控制結合,能夠有效避免單點故障問題,提高訪問控制的可靠性和安全性[5]。目前,已有學者將區塊鏈技術應用到物聯網中與訪問控制相結合來解決單點故障和數據的可靠傳輸問題,并取得了不錯的效果。文獻[6]介紹了物聯網環境下的單點故障和數據篡改問題,設計并實現出一種基于智能合約的物聯網訪問控制系統;文獻 [7]針對目前傳統訪問控制模型比較復雜的問題提出了一種新的結合區塊鏈的訪問控制模型,具備伸縮性細粒度等特性,可在物聯網系統中進行有效部署。
上述文獻都在一定程度上解決了物聯網環境中訪問控制的單點故障問題,但在實際應用中,尤其是在工業物聯網中存在著海量的工業數據傳輸,要求工業物聯網中的區塊鏈系統具有較高的吞吐率和較短的交易確認時間。針對上述問題,文獻[8]提出了一種在許可環境下的可信交易框架,增加單位時間的交易處理能力來提升數據傳輸速度;文獻[9]設計了一種分層擴展式區塊鏈來滿足工業環境中的高效、安全。上述方案都在一定程度上解決了區塊鏈的數據傳輸吞吐率的問題, 然而工業物聯網環境下的訪問控制每次進行訪問請求都需要區塊鏈進行驗證,盡管對區塊鏈結構進行了優化,但在海量節點的環境下,再高效的驗證機制也會因節點的龐大數量而降低數據的傳輸速度。
側鏈技術是一種區塊鏈二層擴容技術,該技術通過將一些頻繁、小額的交易轉移到側鏈上進行來降低主網的交易壓力,有效提高交易效率[10]。在工業物聯網環境下,絕大部分節點的資源訪問請求內容是相同的,但訪問頻率十分之高;對于這類請求,在驗證了節點安全性之后僅需要批量進行區塊驗證即可達到目的。因此,可以在以太坊上部署對應的側鏈技術,將這些高頻節點的訪問請求放到側鏈上進行處理;主網僅需要對區塊進行批量驗證即可在解決單點故障問題的同時,保證數據的傳輸速度。
綜上所述,針對工業物聯網環境下訪問控制需要同時解決單點故障和高效傳輸的問題,本文提出了一種基于主側鏈合作的工業物聯網訪問控制模型策略。與現有方法相比,該方法引入側鏈來對區塊鏈進行擴容,進一步提高區塊鏈的數據承載能力;并設計了適用于主側鏈區塊鏈結構的訪問控制模型,滿足數據高速傳輸的需求。
本文創新點如下:
(1)為應對區塊鏈性能無法滿足工業物聯網海量終端節點的問題,提出主側鏈合作的方式來對區塊鏈進行擴容,使其滿足工業物聯網的應用需求。
(2)針對傳統訪問控制模型不適配主側鏈高速傳輸環境和工業物聯網設備節點特點的問題,提出一種適應主側鏈區塊鏈的訪問控制模型,實現主側鏈環境下的高速傳輸以及訪控策略管理效率和安全性的提升。
1 相關理論基礎
1.1 區塊鏈技術
區塊鏈技術是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。它起源于《Bitcoin: A Peer-to Peer Electronic Cash System》[11],其中第一次出現了區塊鏈的概念。其中去中心化是區塊鏈的一個顯著特點,區塊鏈使用分布式核算儲存自成一體,不依賴任何中心機構,也沒有中心管制,任何節點的權力和義務都是均等的,系統中的數據由整個系統來維護。另外,在區塊鏈中,交易的私有信息被加密,其它數據對所有人開發,所有人都可以通過公開接口查詢區塊鏈數據和開發的相關應用,這個系統信息高度透明。并且區塊鏈通過哈希算法讓所有節點都產生信任,無法人為干預,各區塊節點的身份信息不需要公開或驗證讓對方產生信任,只需要遵循固定的算法,就可以達到數據交互的信任。
1.2 以太坊擴容
區塊鏈作為一種分布式網絡存儲技術,同樣存在性能瓶頸,其中最為突出的就是區塊鏈可擴展性非常差。一直以來,以太坊公有鏈的核心限制是每一筆交易都要由網絡中的每一個節點進行處理。這也就意味著以太坊整個網絡的吞吐量(TPS)不能高于以太坊單個節點的吞吐量。理論上以太坊可以通過提高節點的區塊工作量來實現擴容[12],但這是以去中心化為代價的,因為節點做的工作多了,意味著算力小的計算機可能會退出網絡。這一問題一直以來都是限制區塊鏈發展的一大隱患,但由于起初用戶量較小,其弊端并沒有顯現出來。然而隨著區塊鏈技術的不斷火熱,越來越多的人開始嘗試這項新技術,海量的用戶讓以太坊變得非常擁堵。同時可以預見到,未來會有越來越多的項目在以太坊的基礎上構建。因此,解決以太坊擴容這一難題勢在必行。
目前常見的擴容技術可以分為 Layer1 層擴容和 Layer2 層擴容兩種。Layer1 層的擴容方案采用分片技術[13],即讓區塊鏈不同的節點子集處理區塊鏈的不同部分,通過分割數據以減少區塊鏈節點必須存儲和處理的數量。由此來達到擴容效果。但由于分片涉及到區塊鏈底層協議的更改,所以分片技術提出后并沒用出現實際的應用。并且分片的數量受制于整個網絡的節點數量和處理能力,因此 Layer1 層的擴容方案逐漸被廢棄了。Layer2 層的擴容方案則是線下擴容[14],即區塊鏈主鏈不作改變,而是將所有計算委托給一組強大的節點來完成,這組節點并不直接鏈在主鏈上,因此其計算能力并不會受區塊鏈網絡條件的制約。在交易速度上,以太坊目前的交易速度約是每秒 15 筆,而根據 Layer2 層的解決方案,以太坊的交易速度可達 2000-4000 筆每秒。因此 Layer2 層的解決方案成為了目前主要的擴容方向。Layer2 層的擴容方案比較著名的方案有:狀態通道、Plasma、Rollup 等。
1.3 Plasma 方案和 Loom 側鏈
Plasma 方案是由 Vitalik Buterin(以太坊創始人)和 Joseph Poon(閃電網絡創始人)在 2017 年共同提出。它是一個在以太坊上構建可擴展應用的框架,允許創建附加在以太坊主鏈上的子鏈;同時,這些子鏈也可以產生他們自己的子鏈。其結果就是這些子鏈只需與以太坊主鏈進行極少量的交互就能運行擁有數千名用戶的整個應用程序[15];由于子鏈上的操作不需要在整個以太坊區塊鏈存留副本,因此子鏈的運行速度更快,交易費用更低。Loom 側鏈則是一條實現了 Plasma Cash 框架模型的高性能 DPOS 側鏈,它由以太坊底層網絡安全背書,因此能夠享受 DPOS 算法帶來的高性能共識。同時,Loom 團隊設計了能夠快速搭建屬于用戶自己區塊鏈的 Loom SDK(工具集),使用戶可以根據自身需求設計自己的區塊鏈。
1.4 工業物聯網的數據訪問與管理
物聯網是一個以數據為核心的網絡,尤其是在工業物聯網中,各終端設備之間的互聯互通都是以數據作為中介。因此,數據的訪問和管理是整個工業物聯網互聯的關鍵所在。由于工業物聯網中的終端設備存在類型復雜,存儲能力、計算能力大小不一等問題,目前數據的訪問和管理通常由一個集中式的可信第三方實體實現。可信實體通過集中式服務器進行管理,依據訪控策略和其他屬性信息進行決策[16]。同時,為解決終端節點傳輸的海量數據所帶來的訪問和管理壓力,工業物聯網中主要通過建立多個數據中心、構建分布式架構等方式進行應對。
2 基于主側鏈合作的區塊鏈訪問控制
2.1 策略架構
在物聯網領域,訪問控制需要做到對請求的快速響應和回復。為滿足上述需求,在物聯網領域使用區塊鏈的訪問控制策略中,常用的方法是將架構分為區塊鏈端和物聯網設備端兩個部分[17]。但在工業物聯網領域,不僅節點數目龐大,而且很多節點并不需要同時完成資源的請求和上傳兩項工作。同時,許多的工業數據對廠商來說極為重要,因此不僅要確認訪問控制模型的安全性,還要對連入物聯網的各設備進行安全性驗證。
針對上述工業物聯網領域的訪問控制架構問題,本文設計了一種針對工業物聯網的策略架構,如圖 1 所示。該架構根據對資源的使用情況分成三個部分:客戶端,區塊鏈端,設備端。客戶端和設備端分別是資源的上傳者和請求者,其中客戶端負責資源上傳、策略制定以及資源使用授權,同時客戶端配臵了與區塊鏈相連接的 SDK,實現客戶端與區塊鏈網絡的連接;設備端則是對一些資源進行請求使用,這部分的設備通常為一些邊緣終端,運算能力較弱,因此通過網關與區塊鏈網絡相連接,發送對資源的請求。通過統一各終端的請求流向并進行分離,避免了請求沖突的出現,實現了請求的高速傳輸。
區塊鏈網絡是主要的策略邏輯部分,為保證區塊鏈網絡的安全,設計了對物聯網設備的身份驗證,即對于連入區塊鏈網絡的終端都需要預先進行登錄驗證,之后才會被允許連入。對以太坊的數據確認過程進行分析可以發現,在以太坊上,每進行一次操作就需要進行一次全節點確認,這是以太坊吞吐率低的主要原因。但在工業物聯網的環境下,由于終端操作存在批量重復請求的原因,其并不需要每一次操作都進行全節點的確認,僅需要對關鍵操作進行確認即可[18]。因此,本文區塊鏈將智能合約模塊放到側鏈上,由側鏈進行訪問控制策略的執行。該方法大幅減少了以太坊上的確認次數,提高了區塊鏈的使用效率。側鏈的數據通過礦工 Operator 打包發給與以太坊相連的 Plasma 合約,分批次進行發送。以太坊作為主鏈,僅需要按批次的通過 Plasma 合約獲取交易的哈希值,并將其同步到以太坊進行鎖定即可。這樣即提高了訪問控制的速度,又實現了去中心化的訪問控制。
2.2 訪問控制模型
在工業物聯網的訪問控制中,既要做到對權限有簡單明確的劃分,又要防止發生過度授權,出現隱私數據泄露等風險。所以需要根據使用場景特點進行有針對性的訪問控制權限劃分。對于工業物聯網場景來說,最重要是要防止數據的泄露,盡管各常見的模型設計了一些方法比如角色集、權限集等方法來防范非法訪問,但這種方法對保護措施的設計都有很高的要求[19]。并且如果防范方法被破解,不法者就能迅速獲取各種數據資源,讓工廠遭受無法挽回的損失。為更有效的防范數據泄露,本文設計了提出了一種基于主側鏈合作的訪問控制模型。通過執行點將資源與策略的管理相分離,每次的訪問都僅能收到請求資源的返回,由此來從根源上切斷數據的泄露,達到數據安全防范的效果。模型的架構如圖 2 所示。
模型在與主客體直接相連的部分設計了主體信息點和客體信息點,主體執行點是與主體交互的訪問控制執行點,負責傳遞主體的訪問請求和主體信息,以及返回處理請求后的執行結果。客體信息點是與客體資源交互的執行點,負責收集客體以及資源的屬性,當出現訪問請求時上傳所需客體資源信息,供訪問控制策略參考。這種設計阻隔了外部實體對模型內部的直接訪問,避免了非法入侵[20]。同時,數據的輸出通過執行點直接返回給各自連接的實體,有效避免了數據的泄露。信息處理點的設計則是將訪問控制策略的執行與存儲分離,出現請求時處理點直接調取設計好的訪問控制策略對請求進行判斷,處理點只有調取訪控策略的權限,并不能修改策略。并且每次查看策略的權限在完成本次訪問請求后將會收回,有效的避免了訪問控制策略的泄露,極大的增強了模型的安全性。
2.3 合約設計
為實現上述訪問控制策略,這里通過三個部署在側鏈上的智能合約來完成訪問控制權限的決策授權和決策的信息管理,三個合約分別是前臵合約,訪問控制合約和監管合約。合約的交互方式如下圖 3 所示。
在側鏈上,區塊鏈的頭部部署前臵合約,它維護一張信息表,用來記錄監管合約和訪問控制合約的相關信息。之后在下一個區塊上部署監管合約,合約里包含了時間容忍度函數,用來對訪問者的訪問頻率進行監控,對規定范圍的訪問進行批量允許訪問。同時,監管合約維護一張違規訪問表,用來記錄違規的訪問者,并進行一定的懲戒。之后的區塊里用來放臵訪問控制合約,每個區塊鏈向不同的物聯網設備,訪問控制合約維護訪問策略表和訪問記錄表,當出現訪問請求時,訪問控制合約會根據制定的訪問策略以及監管合約的檢測結果,對訪問請求進行回應。并且當有新的訪問控制策略加入時,只需繼續在鏈上添加新的訪問控制合約即可。
2.4 數據同步驗證
為了防止數據被篡改,區塊鏈需要對數據進行同步驗證。區塊鏈中使用的是默克爾樹算法,該算法下各數據通過哈希算法求出哈希值,區塊鏈中僅保留最終產生的根哈希即可對數據進行同步驗證。但這種算法同樣存在弊端,該算法在驗證某個數據不存在于區塊中時會十分困難。因此 Plasma Cash 框架中使用了稀疏默克爾樹算法[21],該算法下通過將鏈上數據按照元素序號順序進行排列,由此形成一個有序的葉子節點序列。當某處沒有交易時,葉子節點直接存儲一個空值。當需要驗證數據不存在性時,只需根據數據位臵查找,找到空位臵即可完成不存在性證明。訪問控制信息存儲到側鏈上以后,使用稀疏默克爾樹算法進行哈希鎖定,并將默克爾根同步到以太坊主鏈。一旦信息被篡改,默克爾根也會隨之改變[22]。主鏈負責數據的驗證,側鏈負責數據的存儲和請求的處理。既保證了數據的真實性,又大幅提高了區塊鏈的吞吐率。稀疏默克爾樹算法流程如圖 4 所示。
3 實驗分析
通過仿真實驗,對文中所提出的訪問控制模型以及側鏈的性能進行測試,并對其安全性和存儲占用進行分析。側鏈通過 Loom SDK 部署,采用 DPOS 共識機制,使用 10 個節點來處理交易;主鏈通過 Geth 部署,采用 POA 共識機制,部署 5 個節點進行驗證。主側鏈實驗環境如下:處理器 Intel(R) Core(TM)i7-9750H,主頻 2.60GHz,內存大小為 16GB,操作系統為 ubuntu18.04LTS,Node.js 版本為 v8.10.0。
3.1 模型性能分析
訪問控制策略的生成時間是衡量一個訪問控制模型優劣的一個重要指標。為驗證本文模型在策略生成方面的效果,實驗參考設計了一個傳統的區塊鏈物聯網訪問控制模型來進行對比實驗。此次實驗準備了一組試驗次數為 50 次、100 次、200 次、500 次、800 次的并發實驗,對兩個模型均進行測試并進行記錄該訪問次數下的平均時間。由于側鏈無需進行區塊確認,所以為更加直觀的看到模型控制策略的生成速度,本次模型選擇放到以太坊測試鏈上進行實驗,結果如下圖 5 所示。
從圖中顯示的數據可以看到,傳統的訪問控制模型的策略生成時間與本文的模型相比,策略的生成時間會隨著并發次數的增加有較高的上升。而主側鏈合作訪問控制模型能更快的生成訪問策略,并且生成策略的延遲在高頻訪問時趨于穩定。由實驗數據可知,主側鏈合作訪問控制模型更適用于工業物聯網海量終端節點的應用情況。
3.2 側鏈性能測試與分析
工業物聯網下的訪問控制要求區塊鏈既要保障數據的穩定傳輸,又要降低數據傳輸的延遲以保證數據請求的時效性。為測試側鏈的穩定性,實驗選擇將前臵合約分別部署于以太坊測試鏈和 plasma 側鏈上,模擬向合約里寫入訪問控制合約相關信息。實驗進行的寫入次數分別為 50 次、100 次、200 次、 500 次、800 次。實驗結果如下圖 6 所示。
從圖中數據可以看出,在以太坊測試鏈上由于受到區塊同步等因素的影響,數據寫入的延遲起伏較大,且延遲時間較高。對于工業物聯網來說,保持數據傳輸的穩定是重中之重,因此以太坊區塊鏈并不完全適配于工業物聯網環境。但可以看到在 plasma 側鏈上,寫入數據的延遲一直維持在一個很低的時間且在不同的寫入次數下都能保持穩定。說明對于工業物聯網環境 plasma 側鏈更加符合要求。
吞吐量是衡量一個訪問控制模型策略傳輸速度的重要指標[23]。在測試了側鏈的穩定性之后,還需要測試側鏈的吞吐量以保證面對海量數據傳輸時不會出現數據擁堵和側鏈宕機的情況。為測試側鏈應對不同數據量時的吞吐量,實驗通過 docker 容器模擬 10 個客戶端節點向側鏈發送 50 次、100 次、 200〃次、400 次、700 次、1100 次、1600 次并發請求,分別對策略寫入請求和訪問資源請求進行記錄,實驗結果如圖 7、圖 8 所示。從圖中數據可以看出,面對不同數量級的并發請求時,側鏈的吞吐量一直穩定在 210TPS 左右,策略寫入請求和訪問資源請求基本沒有差異,具備承載工業物聯網訪問控制的能力。
3.3 安全性分析
(1) 透明性
本文通過區塊鏈上的智能合約實現分布式的訪問控制機制。客體的違規記錄、資源的授權、訪控策略的存儲均由區塊鏈負責,實現整個授權過程中的透明性。
(2) 不可偽造性
Loom 側鏈基于 Plasma Cash 框架模型實現,該框架下每進行一次操作就會分配一個唯一的 ID,并將操作記錄在稀疏 Merkle 樹中[24]。通過這個 ID 可以檢索到 Merkle 樹結點的位臵,進而找到操作記錄。通過 ID 的不可偽造性防止側鏈作惡,實現側鏈的安全。
(3) 隱私性
在整個訪問過程中,客體和主體之間不發生直接接觸,雙方的請求和資源均由信息點收集和發送,互相無法得到對方的信息,保證了隱私性[25]。
3.4 訪問控制策略存儲占用分析
隨著工業物聯網中設備、請求數量的不斷增加,訪問控制合約的代碼量也隨之飛速增長,對區塊鏈的存儲造成了不小的壓力。由于不同訪問控制策略的架構不同,因此存儲空間占用的大小和增速也不同。所以在訪問控制合約設計時,應當充分考慮對區塊鏈造成的存儲壓力。目前常用的防控策略主要有 RBAC(基于角色的訪問控制)和 ABAC(基于屬性的訪問控制)兩種。RBAC 策略將角色和權限關聯,用戶通過系統給予的角色來獲得相應的權限 [26]。該策略能夠支持物聯網環境的跨域控制、設備異構等特性。ABAC 策略則是將屬性作為控制權限的關鍵要素,通過屬性關聯權限,實現動態化的節點安全接入[27]。為分析訪控策略對區塊鏈造成的存儲壓力,實驗參考設計了兩種常用的訪控策略與本文策略進行對比實驗,分析合約大小隨設備數目增長情況。合約的相關信息如表 1 所示。
因此這里假設設備數量為 n ,每個設備都會發起訪問控制請求。那么訪控策略中設備端每需要部署 a 個合約,就會產生 a 個主體客體對,即該策略中就會部署 a n 個合約。由此可以得到合約大小隨設備數量增長的表達式:本文策略: f x x ( ) 65.13 * 65.05 ? ? RBAC 策略: 2 g x x ( ) 20.5 * 34.9 ? ? ABAC 策略: h x x ( ) 180.13 * 160.07
根據函數表達式繪制出如圖 9 所示的函數圖像。可以發現,RBAC 策略的代碼量隨著設備數目的增加迅速增長,4 個設備以上就高于本文所設計的策略。ABAC 策略代碼增長率雖然小于 RBAC 策略,但與本文策略相比增速依然很快。相較于其他常用策略,本文提出的策略在保證數據傳輸效率的同時,節省了大量的存儲空間,更適用于工業物聯網海量節點的使用場景。
4 結束語
本文提出了一種基于主側鏈合作的工業物聯網訪問控制模型策略,首先,為了解決海量數據傳輸時區塊鏈性能不足的問題,通過 Plasma 方案對區塊鏈進行側鏈擴容。通過側鏈負責智能合約執行,主鏈負責數據批量驗證的方式實現主側鏈合作的數據高效傳輸。其次,在訪問控制模型的設計上,在與主客體直接相連的部分設計了執行點,將資源與策略的管理相分離。不僅從根源上切斷數據的泄露,達到數據安全防范的效果;而且更有利于工業物聯網中輕量級節點設備的請求和資源傳輸,提高策略的管理效率,滿足工業物聯網環境下訪問控制的需求。
下一步的研究中將橫向對比各種側鏈協議進行線下部署實驗,從中選取更加符合工業物聯網環境的高性能側鏈技術,最終實現策略的實際落地實現。
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >