于金剛, 趙培培, 仲啟強(qiáng), 王海汀, 李 姝
1(中國科學(xué)院大學(xué), 北京 100049)
2(中國科學(xué)院 沈陽計(jì)算技術(shù)研究所, 沈陽 110168)
3(中國礦業(yè)大學(xué)(北京), 北京 100083)
4(沈陽理工大學(xué) 裝備工程學(xué)院, 沈陽 110159)
工業(yè)互聯(lián)網(wǎng)通過開放的、全球化的通信網(wǎng)絡(luò)平臺,把設(shè)備、生產(chǎn)線、員工、工廠、倉庫、供應(yīng)商、產(chǎn)品和客戶緊密地連接在一起, 共享工業(yè)生產(chǎn)全流程的各種要素資源, 工業(yè)互聯(lián)網(wǎng)平臺面向數(shù)字化、自動(dòng)化、智能化以及網(wǎng)絡(luò)化, 實(shí)現(xiàn)了效率的提升和成本的降低.通過對海量的數(shù)據(jù)采集、匯聚和分析, 來實(shí)現(xiàn)資源的優(yōu)化配置.數(shù)據(jù)是工業(yè)互聯(lián)網(wǎng)平臺的核心, 數(shù)據(jù)安全是工業(yè)互聯(lián)網(wǎng)平臺的命脈同時(shí)也是制約工業(yè)互聯(lián)網(wǎng)發(fā)展的瓶頸, 目前如何保證平臺數(shù)據(jù)的完整性、可用性、防篡改以及防止數(shù)據(jù)泄漏是困擾其發(fā)展的主要問題.
區(qū)塊鏈也稱分布式共享賬本, 是由密碼學(xué)保護(hù)的不可變的記錄數(shù)據(jù)庫.它允許數(shù)字資產(chǎn)的交換與存儲(chǔ),而不需要第三方的監(jiān)督.區(qū)塊鏈技術(shù)有去中心化存儲(chǔ)、全網(wǎng)驗(yàn)證、自動(dòng)執(zhí)行三大特性, 從根本上保證了工業(yè)互聯(lián)網(wǎng)平臺的數(shù)據(jù)完整性、可用性和可持續(xù)性, 避免了數(shù)據(jù)的泄漏和污染問題, 極大地提高了平臺的安全性.
Hyperledger是由Linux基金會(huì)[1]托管的一組開源的工業(yè)區(qū)塊鏈框架項(xiàng)目, 如Fabric、Sawtooth、Burrow和Iroha等.Hyperledger Fabric 是 IBM 提供的一個(gè)開源的區(qū)塊鏈開發(fā)平臺[2], 開發(fā)者可以根據(jù)自己的項(xiàng)目需求進(jìn)行平臺開發(fā).Hyperledger Fabric提供模塊化架構(gòu)、成員組件來創(chuàng)建靈活的許可區(qū)塊鏈平臺.智能合約在Fabric中被稱為鏈碼(chain code), 鏈碼是用于實(shí)現(xiàn)應(yīng)用邏輯和事務(wù)功能的編程代碼.Fabric使用執(zhí)行-排序-確認(rèn)的架構(gòu)模式而不是排序-執(zhí)行[3]的架構(gòu)模式,克服了許可區(qū)塊鏈所存在的并發(fā)事務(wù)執(zhí)行的不確定性、所有節(jié)點(diǎn)執(zhí)行、信任模型不靈活、硬編碼一致性等問題.
Hyperledger Fabric包含一個(gè)賬本子系統(tǒng), 這個(gè)子系統(tǒng)包括兩個(gè)組件: 世界狀態(tài)和交易日志.世界狀態(tài)組件描述了賬本的當(dāng)前狀態(tài), 它是賬本的數(shù)據(jù)庫.而交易日志包括所有交易的歷史, 它是世界狀態(tài)的更新歷史.賬本則是世界狀態(tài)數(shù)據(jù)庫和交易歷史日志的集合.如果一個(gè)事務(wù)改變了已經(jīng)存儲(chǔ)在賬本上的任何值, 或者向賬本添加了新的數(shù)據(jù), 這被認(rèn)為是區(qū)塊鏈的新狀態(tài),它將被永久保存, 并且不能撤銷區(qū)塊鏈的先前狀態(tài)[4].
在Fabric中智能合約被稱為鏈碼, 鏈碼是一組可編程的功能函數(shù), 存儲(chǔ)在區(qū)塊鏈上并自動(dòng)執(zhí)行其條款,而不需要可信的中介.鏈碼的功能幾乎和傳統(tǒng)合同一樣, 傳統(tǒng)合同包括各方都有義務(wù)遵守的條件, 因此鏈碼被設(shè)計(jì)成通過自動(dòng)驗(yàn)證條件并根據(jù)條件結(jié)果自動(dòng)運(yùn)行后續(xù)步驟來自動(dòng)化相同的任務(wù).從而, 鏈碼可以使交易自動(dòng)化, 而不需要中央權(quán)威機(jī)構(gòu)的干預(yù).大多數(shù)情況下,鏈碼只會(huì)訪問賬本的數(shù)據(jù)庫組件和世界狀態(tài), 但不會(huì)查詢交易記錄.通過使用鏈碼, 我們可以在區(qū)塊鏈上定義特定條件下更復(fù)雜的交易, 可以開發(fā)相應(yīng)的應(yīng)用程序, 而不僅是傳輸如供應(yīng)鏈、業(yè)務(wù)流程管理和醫(yī)療保健等各式各樣的數(shù)字貨幣.
當(dāng)前區(qū)塊鏈、物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)和共享經(jīng)濟(jì)在各自領(lǐng)域都已經(jīng)經(jīng)過了長期的研究和發(fā)展, 形成了各自比較成熟的體系, 但是, 在工業(yè)互聯(lián)網(wǎng)面臨轉(zhuǎn)型的關(guān)鍵期背景下, 工業(yè)互聯(lián)網(wǎng)與區(qū)塊鏈的融合研究和開發(fā)還處于初始階段.當(dāng)前, 工業(yè)互聯(lián)網(wǎng)設(shè)備每天產(chǎn)生大量的數(shù)據(jù), 必須要以安全的方式對其進(jìn)行整理、處理和存儲(chǔ).
Internet Engineering Task Force (IETF) ACE[5]提出了一種在受限的環(huán)境下進(jìn)行身份驗(yàn)證和授權(quán)的通用框架, 訪問終端設(shè)備需要進(jìn)行身份的驗(yàn)證和授權(quán), 以此來保證系統(tǒng)的安全.Object SeCurity ARchitecture for the Internet of things (OSCAR) 通過保護(hù)應(yīng)用層的付費(fèi)負(fù)載, 解決了數(shù)據(jù)報(bào)傳輸層安全(DTLS)協(xié)議[6]的主要限制.這種方法允許高效的多路廣播、異步通信和緩存,資源服務(wù)器將受保護(hù)的資源存儲(chǔ)在本地, 或者以加密和簽名的格式存儲(chǔ)在代理服務(wù)器上, 客戶端向負(fù)責(zé)的密鑰服務(wù)器請求解密密鑰, 可以通過使用不同的密鑰加密不同的資源來提供訪問控制.Yu等人也提出基于區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享模型[7], 利用智能網(wǎng)關(guān)將物聯(lián)網(wǎng)設(shè)備產(chǎn)生的數(shù)據(jù)上傳到區(qū)塊鏈中實(shí)現(xiàn)共享, 解決了對傳統(tǒng)中心化機(jī)構(gòu)信任的問題.
終端設(shè)備的監(jiān)視和管理對工業(yè)互聯(lián)網(wǎng)平臺的安全十分重要, 它保證了工業(yè)設(shè)備的持續(xù)、高效和無故障運(yùn)行.目前, 大多數(shù)流行的網(wǎng)絡(luò)監(jiān)管系統(tǒng)和工具[8]主要是對網(wǎng)絡(luò)的狀態(tài)進(jìn)行測量和跟蹤.他們通過插件和擴(kuò)展提供不同級別的管理.網(wǎng)絡(luò)監(jiān)視的一種方法是利用探針測量網(wǎng)絡(luò)的指標(biāo)進(jìn)行主動(dòng)的監(jiān)視終端設(shè)備狀態(tài),通過配置成對的網(wǎng)絡(luò)設(shè)備, 向網(wǎng)絡(luò)中注入額外的流量,以監(jiān)控關(guān)鍵指標(biāo), 保證設(shè)備運(yùn)行的質(zhì)量.主動(dòng)網(wǎng)絡(luò)測量方法有IETF提出的單向主動(dòng)測量協(xié)議(OWAMP)[9]和雙向主動(dòng)測量協(xié)議(TWAMP)[10], 其缺點(diǎn)就是需要額外的流量以及對資源的影響.
本文提出了一種基于區(qū)塊鏈技術(shù)的工業(yè)互聯(lián)網(wǎng)安全平臺架構(gòu), 網(wǎng)絡(luò)管理員首先通過身份認(rèn)證進(jìn)行身份授權(quán), 然后將更改的設(shè)備配置文件上傳到區(qū)塊鏈網(wǎng)絡(luò)中來間接地控制網(wǎng)絡(luò)終端設(shè)備, 網(wǎng)絡(luò)終端設(shè)備通過獲取區(qū)塊鏈網(wǎng)絡(luò)中與自己相關(guān)的配置文件來更新自身的配置.另外, 終端設(shè)備所產(chǎn)生的數(shù)據(jù)對其進(jìn)行簽名打包,在區(qū)塊鏈系統(tǒng)中達(dá)成共識[11]后, 存入分布式數(shù)據(jù)庫中,進(jìn)一步增強(qiáng)了終端數(shù)據(jù)的安全性, 這與傳統(tǒng)工業(yè)互聯(lián)網(wǎng)平臺架構(gòu)模式形成了鮮明的對比.
在本節(jié)中, 我們介紹了目前區(qū)塊鏈技術(shù)在物聯(lián)網(wǎng)和工業(yè)互聯(lián)網(wǎng)的研究現(xiàn)狀, 并對當(dāng)前工業(yè)互聯(lián)網(wǎng)在安全管理方面的技術(shù)和缺點(diǎn)進(jìn)行了分析.本文其余部分的結(jié)構(gòu)如下: 在第3節(jié)中, 敘述了基于區(qū)塊鏈的工業(yè)互聯(lián)網(wǎng)安全平臺具體設(shè)計(jì)細(xì)節(jié).第4節(jié)通過實(shí)驗(yàn)數(shù)據(jù)對平臺的性能進(jìn)行了測試和分析.結(jié)論和未來的工作將在第5節(jié)中敘述.
本文基于區(qū)塊鏈的設(shè)備及數(shù)據(jù)管理架構(gòu)設(shè)計(jì)如圖1所示, 操作人員使用數(shù)字證書對自己進(jìn)行身份驗(yàn)證, 然后擁有對特定設(shè)備或者設(shè)備組權(quán)限的操作人員可以修改記錄在區(qū)塊鏈上的設(shè)備配置文件.對于操作人員的訪問控制方法, 本文使用了基于角色的訪問控制方法和基于規(guī)則的控制方法, 根據(jù)用戶在系統(tǒng)中的角色來規(guī)范用戶的訪問行為.此外, 系統(tǒng)還規(guī)定了誰有權(quán)通過提交事務(wù)來更改其他用戶的訪問權(quán)限, 并且所有的事務(wù)記錄都將永久的保存在區(qū)塊鏈上, 沒有人可以刪除或者更改.對于設(shè)備配置文件的更改先通過語法驗(yàn)證來檢查配置文件的正確性, 來盡量避免因人為錯(cuò)誤導(dǎo)致配置文件錯(cuò)誤從而影響終端設(shè)備的正常運(yùn)轉(zhuǎn).操作人員的數(shù)字證書還用于對新配置文件的簽名, 以便對配置文件進(jìn)行標(biāo)志和歸屬.
圖1 基于區(qū)塊鏈的設(shè)備及數(shù)據(jù)管理架構(gòu)
事務(wù)是由時(shí)間戳、操作人員ID、設(shè)備ID以及加密的設(shè)備配置文件的散列值組成.一旦事務(wù)被寫入新的區(qū)塊中并添加在區(qū)塊鏈上, 事務(wù)信息就會(huì)被分發(fā)到區(qū)塊鏈網(wǎng)絡(luò)中的各個(gè)對等節(jié)點(diǎn).配置文件被上傳到區(qū)塊鏈網(wǎng)絡(luò)后, 新的區(qū)塊將觸發(fā)事件, 所有被操作人員管理的設(shè)備將檢查新的配置文件是否影響自己, 對受影響的設(shè)備, 設(shè)備ID從區(qū)塊鏈網(wǎng)絡(luò)中下載新的配置文件,然后設(shè)備使用其私有密鑰解密從區(qū)塊鏈中下載的加密配置文件, 并應(yīng)用修改后的配置信息.區(qū)塊鏈網(wǎng)絡(luò)中保存所有更改的歷史記錄, 供安全和審計(jì)人員審查.
通過區(qū)塊鏈的身份權(quán)限特點(diǎn), 本文為終端每個(gè)終端設(shè)備生成不同的公鑰和私鑰, 每個(gè)終端設(shè)備都有自身IP地址與該地址在系統(tǒng)平臺中所對應(yīng)的身份證書,從而形成一張?jiān)O(shè)備終端(IP)與公私鑰對應(yīng)的列表[12].從而杜絕了因?yàn)榻K端設(shè)備的隨意接入和惡意替換導(dǎo)致的設(shè)備數(shù)據(jù)污染問題.除此之外, 目前的工業(yè)互聯(lián)網(wǎng)終端設(shè)備生產(chǎn)數(shù)據(jù)的數(shù)據(jù)都是高頻數(shù)據(jù)采集, 對網(wǎng)絡(luò)傳輸、數(shù)據(jù)緩存等方面帶來性能和成本上的巨大壓力,利用區(qū)塊鏈技術(shù)的分布式存儲(chǔ), 可以有效地解決中心化采集的弊端, 減輕系統(tǒng)數(shù)據(jù)存儲(chǔ)壓力和設(shè)備邊緣數(shù)據(jù)緩存的壓力.
對于存儲(chǔ)在系統(tǒng)中的數(shù)據(jù), 操作人員通過身份驗(yàn)證后進(jìn)行訪問操作, 系統(tǒng)根據(jù)不同角色的權(quán)限來受限訪問數(shù)據(jù)庫中的數(shù)據(jù)信息, 從而達(dá)到根據(jù)角色權(quán)限等級達(dá)到數(shù)據(jù)隔離的目的.本文中對于擁有終端設(shè)備配置文件操作的角色即擁有該終端設(shè)備所產(chǎn)生數(shù)據(jù)的訪問權(quán), 因?yàn)閿?shù)據(jù)是用設(shè)備的公鑰進(jìn)行加密存儲(chǔ)的, 只有擁有的設(shè)備私鑰的操作人員才能解密數(shù)據(jù).因此, 只有擁有終端設(shè)備操作權(quán)限的角色, 才擁有終端設(shè)備的公私鑰, 才能查看其產(chǎn)生的數(shù)據(jù).而且, 每次數(shù)據(jù)庫操作的記錄都會(huì)永久的存儲(chǔ)在區(qū)塊鏈上, 任何人無法更改訪問記錄, 供安全和審計(jì)人員審查.
本文使用Hyperledger Composer框架[13]來實(shí)現(xiàn)系統(tǒng)的訪問權(quán)限控制, 它是Fabric的上層架構(gòu).所有組件都可以由Composer模塊化結(jié)構(gòu)的定義, 然后將其打包為一個(gè)組件并部署到Fabric區(qū)塊鏈上.Composer模塊的主要部分是model文件集、訪問控制語言文件、查詢文件和JavaScript文件集.
在model模塊中, 本文定義了參與者、資產(chǎn)、事務(wù)和事件.參與者是系統(tǒng)中的所有用戶以及需要經(jīng)過身份驗(yàn)證的其他用戶, 參與者有唯一的字符ID作為標(biāo)識; 資產(chǎn)是系統(tǒng)的物理場所(比如: 終端設(shè)備、數(shù)據(jù)以及歷史記錄), 通過智能合約和訪問控制文件來管理這些資產(chǎn); 事務(wù)的提交表示區(qū)塊鏈的預(yù)先定義的條件狀態(tài)更改, 比如用事務(wù)來授權(quán)用戶的訪問權(quán)限或者用事務(wù)來撤銷用戶的訪問權(quán)限.事件是系統(tǒng)中參與者所觸發(fā)的行為, 參與者對歷史記錄的查看、對終端設(shè)備配置文件的更改和對數(shù)據(jù)的訪問都是一個(gè)事件.
訪問控制語言(ACL)中定義了訪問控制的策略,具體的訪問策略包括如下幾部分:
1) 系統(tǒng)的訪問權(quán)限, 系統(tǒng)訪問權(quán)限規(guī)定了誰可以進(jìn)入系統(tǒng), 因?yàn)镕abric是聯(lián)盟鏈, 參與者實(shí)行準(zhǔn)入原則,沒有許可的參與者無法進(jìn)入系統(tǒng);
2) 系統(tǒng)管理員的訪問權(quán)限, 系統(tǒng)管理員擁有系統(tǒng)的最高權(quán)限, 它可以給普通的參與者分配角色, 也是維護(hù)系統(tǒng)運(yùn)行的主要負(fù)責(zé)人;
3) 不同角色在系統(tǒng)默認(rèn)情況下可以訪問的系統(tǒng)資源不同, 有的角色能查看終端設(shè)備配置文件能夠訪問數(shù)據(jù)庫數(shù)據(jù), 還有的角色無權(quán)訪問特定終端設(shè)備配置文件和無權(quán)訪問數(shù)據(jù)庫中的數(shù)據(jù);
4) 不同角色可以發(fā)送的事務(wù), 系統(tǒng)中不同的角色可以發(fā)送的事務(wù)不同, 有的可以更改終端設(shè)備的配置,有的角色則無權(quán)更改只能查看;
5) 系統(tǒng)中所有參與者都可以訪問的歷史記錄, 這些記錄包括參與者對終端設(shè)備修改的日志, 以及參與者訪問系統(tǒng)的日志, 以供安全審計(jì).
ACL模塊由5個(gè)不同的集合定義: 參與者集合、資源集合、行為集合、條件集合和操作集合.在本系統(tǒng)中, 用戶可以根據(jù)系統(tǒng)中定義的角色來訪問資源, 因此本文的訪問控制策略是基于角色的訪問控制策略[14].本文在model文件中定義了不同類型的參與者, 它們分別對應(yīng)著系統(tǒng)中不同的角色, 特定的角色訪問特定的資源并對資源進(jìn)行特定的操作并做出特定的行為:如創(chuàng)建、讀取、更新、刪除(CRUD).因此ACL模塊就是基于角色訪問控制的核心, 通過ACL模塊對特定角色進(jìn)行特定的訪問控制操作, 從而保護(hù)系統(tǒng)中資產(chǎn)的安全.
事務(wù)處理函數(shù)是JavaScript文件的一部分, 可以將它轉(zhuǎn)化為Fabric上的鏈碼, 因此其作用可以視為智能合約.事務(wù)處理函數(shù)預(yù)先定義好每個(gè)事務(wù)的處理邏輯以及需要滿足的條件.當(dāng)提交相應(yīng)的事務(wù)時(shí), 將自動(dòng)調(diào)用事務(wù)處理函數(shù).圖2展示了基于ACL模塊的訪問權(quán)限過程.
圖2 基于ACL模塊的訪問權(quán)限流程
查詢文件是基于防篡改的查詢策略, 根據(jù)區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu)特點(diǎn)可以保證查詢的數(shù)據(jù)沒有被篡改或者刪除.Hyperledger Composer提供了歷史記錄, 歷史記錄詳細(xì)地記錄了參與者的信息以及其行為.歷史記錄模板如圖3所示.
圖3 歷史事務(wù)記錄
對于工業(yè)互聯(lián)網(wǎng)終端設(shè)備的管理, 被授權(quán)的管理員使用自己的數(shù)字證書[15]進(jìn)行身份驗(yàn)證, 然后管理員可以修改對被授權(quán)的特定設(shè)備或設(shè)備組在區(qū)塊鏈網(wǎng)絡(luò)中的設(shè)備配置文件, 最后管理員使用自己的數(shù)字證書對修改的配置文件進(jìn)行簽名, 以便標(biāo)識和安全審計(jì).修改后的配置文件經(jīng)過語法驗(yàn)證來驗(yàn)證新配置文件的正確性, 以此盡量減少因?yàn)槿藶橐蛩貙?dǎo)致終端設(shè)備宕機(jī)故障的發(fā)生.通過語義驗(yàn)證后, 新的設(shè)備配置文件信息經(jīng)過加密會(huì)被分發(fā)到區(qū)塊鏈網(wǎng)絡(luò)中各個(gè)peer節(jié)點(diǎn)[16],并通知所有被管理的終端設(shè)備, 終端設(shè)備檢查新的配置文件更改是否影響其配置, 對產(chǎn)生影響的設(shè)備, 通過設(shè)備自身私鑰下載區(qū)塊鏈網(wǎng)絡(luò)中新的設(shè)備配置文件進(jìn)行更新, 并應(yīng)用修改后的配置文件.具體執(zhí)行流程如圖4.
圖4 設(shè)備配置文件更改時(shí)序圖
該流程為設(shè)備配置文件更改的過程, 具體時(shí)序如下:
1) 終端Ax(a1,an)從區(qū)塊鏈上加載設(shè)備Dy(d1,dn)或設(shè)備組Gz(g1,gn)的配置文件, 并使用終端的自身的密鑰Sx對配置文件進(jìn)行解密.
2) 終端Ax修改配置文件.
3) 發(fā)送新的配置文件進(jìn)行語義驗(yàn)證, 將人為的錯(cuò)誤最小化.
4) 經(jīng)過語義驗(yàn)證的配置文件被加密并寫入到一個(gè)新的區(qū)塊中, 同時(shí)終端ID、設(shè)備ID和時(shí)間戳等一并寫入, 區(qū)塊被添加到區(qū)塊鏈中.
5) 終端會(huì)收到一個(gè)關(guān)于新區(qū)塊的通知.
6) 受影響的設(shè)備Dy將會(huì)下載新區(qū)塊中的配置文件, 解密配置文件并應(yīng)用更改.
7) 設(shè)備Dy將添加一個(gè)新區(qū)塊到區(qū)塊鏈中, 新區(qū)塊信息包括新的配置文件是否已應(yīng)用成功、配置文件的散列值以及下載和應(yīng)用的時(shí)間戳.
安全是本文對工業(yè)互聯(lián)網(wǎng)平臺設(shè)計(jì)的核心, 鏈碼是支撐系統(tǒng)安全最重要的組成部分, 它處理身份驗(yàn)證、授權(quán)、加密、語法驗(yàn)證、訪問控制和安全審計(jì).為了增強(qiáng)平臺的安全性, 鏈碼設(shè)計(jì)的重要原則是鏈碼不能包含任何的密鑰, 所有必須的密鑰必須作為參數(shù)傳遞[17], 用戶的身份信息是由用戶名和密碼組成一組鍵值對, 必須向鏈碼提交正確的身份密鑰, 才能對區(qū)塊鏈網(wǎng)絡(luò)中終端設(shè)備配置文件進(jìn)行CRUD操作.如果用戶只能提供正確的登錄密碼而不能提供正確的密鑰,那么用戶可以進(jìn)入系統(tǒng)但是CRUD任何一個(gè)操作將會(huì)失敗.由于鏈碼將嘗試解密配置文件作為一種安全措施, 如果解密失敗, 整個(gè)請求失敗, 這就是本文前面提到的密鑰驗(yàn)證程序.
CRUD (創(chuàng)建、讀取、更新、刪除)是對終端配置文件主要操作, 所以其操作設(shè)計(jì)首先要具備安全性.
創(chuàng)建操作通過鏈碼請求來創(chuàng)建設(shè)備新的配置文件,通過ACL模塊對用戶的用戶名和密碼進(jìn)行身份驗(yàn)證,如果身份驗(yàn)證成功, 調(diào)用鏈碼的授權(quán)函數(shù)對用戶進(jìn)行授權(quán), 將用戶創(chuàng)建的配置文件進(jìn)行加密并存儲(chǔ)到區(qū)塊鏈中.配置文件的數(shù)據(jù)通過哈希運(yùn)算, 把其哈希值作為事務(wù)的參數(shù)一并存儲(chǔ)到區(qū)塊鏈中.初始化創(chuàng)建操作后,管理員將被通知結(jié)果并獲得配置文件哈希值以及要?jiǎng)?chuàng)建的終端設(shè)備ID, 創(chuàng)建操作的記錄將被存儲(chǔ)到區(qū)塊鏈中.
讀取操作包含登錄名、密碼、解密密鑰和配置文件ID等字段.讀取操作的驗(yàn)證和授權(quán)的執(zhí)行過程與創(chuàng)建操作相同.如果成功, 將執(zhí)行一個(gè)密鑰驗(yàn)證過程.密鑰驗(yàn)證過程嘗試使用提供的密鑰解密配置文件.一旦解密, 原先存儲(chǔ)的配置文件哈希值將與新計(jì)算的配置文件哈希值進(jìn)行比較.如果哈希值相等, 密鑰驗(yàn)證成功并解密, 根據(jù)發(fā)起者的請求將配置文件發(fā)送給管理員或設(shè)備.如果請求來自互聯(lián)網(wǎng)設(shè)備, 則有關(guān)應(yīng)用程序狀態(tài)的消息被發(fā)送到區(qū)塊鏈中, 讀取操作全過程被記錄在區(qū)塊鏈上.
更新操作與讀取操作流程很類似, 更新操作請求包含諸如登錄用戶名、密碼、解密密鑰、原始配置文件ID和一個(gè)新的配置文件ID等參數(shù).身份驗(yàn)證和授權(quán)成功后, 將執(zhí)行密鑰驗(yàn)證過程.如果成功, 則使用新的配置文件更新存儲(chǔ)在區(qū)塊鏈中的原始配置文件, 計(jì)算新配置文件的哈希值并存儲(chǔ)到區(qū)塊鏈網(wǎng)絡(luò)中.操作記錄會(huì)存儲(chǔ)在區(qū)塊鏈上, 并將操作結(jié)果通知管理員.
刪除操作與其他操作一樣, 需要執(zhí)行身份驗(yàn)證、授權(quán)和密鑰驗(yàn)證等過程.如果刪除操作執(zhí)行成功, 終端設(shè)備ID的配置文件被標(biāo)記為已刪除, 不允許進(jìn)一步操作, 后續(xù)的讀取、更新或刪除操作結(jié)果與給定設(shè)備ID下沒有存儲(chǔ)配置文件的操作結(jié)果相同, 刪除操作的記錄也會(huì)永久的存儲(chǔ)在區(qū)塊鏈上, 并通知管理員刪除操作的結(jié)果.
保證終端數(shù)據(jù)的完整性、可用性和安全性一直是工業(yè)互聯(lián)網(wǎng)平臺研究的重點(diǎn)之一, 區(qū)塊鏈技術(shù)的出現(xiàn)為解決這一問題提供了理論和技術(shù)支持[18].區(qū)塊鏈技術(shù)是結(jié)合密碼學(xué)的分布式架構(gòu), 因此可以利用密碼學(xué)的非對稱加密算法, 為每一個(gè)終端設(shè)備生成各自的公私鑰, 終端設(shè)備唯一MAC地址與該設(shè)備在區(qū)塊鏈系統(tǒng)所對應(yīng)的公鑰形成一張?jiān)O(shè)備終端與公鑰對應(yīng)的列表,作為終端設(shè)備的身份證明, 從而保證了終端設(shè)備的唯一性及不可篡改性.
工業(yè)互聯(lián)網(wǎng)中數(shù)據(jù)的采集通常是高頻次, 對網(wǎng)絡(luò)傳輸造成了巨大的壓力[19], 利用區(qū)塊鏈分布式的特點(diǎn),可以將原本中心化的信息采集轉(zhuǎn)換為分布式的信息采集, 從而減輕工業(yè)互聯(lián)網(wǎng)平臺數(shù)據(jù)傳出、存儲(chǔ)和邊緣層數(shù)據(jù)緩存的壓力.終端設(shè)備產(chǎn)生的數(shù)據(jù), 利用其自身的公鑰對數(shù)據(jù)進(jìn)行加密處理即數(shù)據(jù)的簽名打包, 加密過的數(shù)據(jù)只有設(shè)備自身的私鑰可以對數(shù)據(jù)進(jìn)行解密,即使終端設(shè)備被惡意替換或者被破壞, 因?yàn)槠涿荑€的唯一性, 可以進(jìn)行及時(shí)的識別, 對沒有身份證明的設(shè)備所產(chǎn)生的數(shù)據(jù)在邊緣層數(shù)據(jù)處理過程中進(jìn)行刪除, 防止對平臺數(shù)據(jù)的污染, 杜絕了因設(shè)備的外部破壞對平臺造成的損失, 極大地提高了終端設(shè)備接入平臺的安全性.
通過上述對終端數(shù)據(jù)進(jìn)行簽名打包后, 經(jīng)過區(qū)塊鏈網(wǎng)絡(luò)的共識機(jī)制, 把打包好的數(shù)據(jù)信息存儲(chǔ)在區(qū)塊鏈上, 一經(jīng)上鏈的數(shù)據(jù)信息都將永久的保存在區(qū)塊鏈網(wǎng)絡(luò)中, 而且是分布式進(jìn)行存儲(chǔ), 避免了中心式服務(wù)器遭受攻擊, 導(dǎo)致整個(gè)平臺癱瘓的風(fēng)險(xiǎn).而且經(jīng)過加密后的數(shù)據(jù)只有擁有終端設(shè)備私鑰的管理員才能查看加密數(shù)據(jù)的詳細(xì)內(nèi)容[20], 保護(hù)了終端數(shù)據(jù)隱私安全.沒有權(quán)限的節(jié)點(diǎn), 可以起到對終端數(shù)據(jù)審計(jì)的作用, 數(shù)據(jù)一旦上鏈就會(huì)生成唯一的哈希值, 并永久的存儲(chǔ)在區(qū)塊鏈中, 如果管理員自身作弊, 就會(huì)改變數(shù)據(jù)自身的哈希值,從而改變整個(gè)區(qū)塊鏈網(wǎng)絡(luò)的數(shù)據(jù)結(jié)構(gòu), 此數(shù)據(jù)也就失去了可信性, 因此使用區(qū)塊鏈技術(shù)可以保障工業(yè)互聯(lián)網(wǎng)平臺數(shù)據(jù)的可用性以及完整性, 以此來防止平臺數(shù)據(jù)被惡意篡改.數(shù)據(jù)處理的整個(gè)過程如圖5所示.
圖5 數(shù)據(jù)存儲(chǔ)上鏈過程
在本文的系統(tǒng)模型中, 我們通過定義不同的參與者來設(shè)定系統(tǒng)中的不同角色, 每個(gè)角色都有不同的等級的訪問權(quán)限, 比如管理者和操作工.本文使用Hyperleager Caliper測試框架來測試系統(tǒng)模型的運(yùn)行性能, 根據(jù)測試框架的架構(gòu), 測試模塊有3個(gè)主要的函數(shù)分別是init()、run()、end(), 其中init()函數(shù)處理測試的初始化階段, run()函數(shù)以異步方式重復(fù)生成和提交多個(gè)事務(wù),end()函數(shù)完成測試的最后部分.本文將終端設(shè)備視為資產(chǎn), 并把資產(chǎn)分配給不同的部門角色去管理.使用init()函數(shù)來定義參與者的實(shí)例和資產(chǎn), 隨后測試事務(wù)通過run()函數(shù)被觸發(fā).測試結(jié)果表明, 本文的系統(tǒng)模型在測試階段能100%的正常運(yùn)行.圖6和表1給出了由Hyperledger Caliper報(bào)告的性能指標(biāo)和資源消耗的情況.
圖6 終端設(shè)備數(shù)據(jù)加密、解密、簽名、認(rèn)證的性能
表1 資源消耗
表2給出了設(shè)備配置文件在身份驗(yàn)證、下載和上傳所需時(shí)間的7次測量.為此場景設(shè)置了下載腳本的手動(dòng)調(diào)用, TCL腳本的大小為1.15 KB, 新配置文件的大小為1.97 KB, 設(shè)備之間的鏈接速度為100 Mb/s.對于7次不同時(shí)間測量的結(jié)果如表2所示.
表2 身份驗(yàn)證、配置文件下載和上傳時(shí)間的測量 (ms)
在集中式系統(tǒng)中, 對資源的訪問由第三方控制, 例如系統(tǒng)管理員, 他們完全控制系統(tǒng)的數(shù)據(jù)和操作, 因此他們總是遭受安全和信任問題的困擾.本文是一個(gè)基于區(qū)塊鏈技術(shù)的真實(shí)應(yīng)用程序的實(shí)現(xiàn), 用于探索區(qū)塊鏈技術(shù)在工業(yè)互聯(lián)網(wǎng)安全領(lǐng)域的應(yīng)用.通過利用Hyperledger Fabric和Hyperledger Composer的潛力,我們實(shí)現(xiàn)了一個(gè)基于授權(quán)區(qū)塊鏈的防篡改訪問控制應(yīng)用程序, 用于管理物理位置設(shè)備的訪問和操作權(quán)限.
系統(tǒng)提供了全面的事務(wù)日志查詢, 只對通過認(rèn)證和授權(quán)的用戶進(jìn)行訪問.此外, 系統(tǒng)的交易歷史是可信賴的, 因?yàn)樗鞘艿奖Wo(hù), 不接受非法的篡改.對終端設(shè)備配置文件的操作都會(huì)經(jīng)過嚴(yán)格的身份授權(quán)并通過對操作人員的密鑰驗(yàn)證來一步保障對終端設(shè)備的操作安全.由Hyperledger Caliper報(bào)告的分析結(jié)果說明了系統(tǒng)的穩(wěn)定性和可伸縮性非常理想, 包括100%的操作成功率和主要的性能指標(biāo).
在未來的工作中, 我們將繼續(xù)通過區(qū)塊鏈技術(shù)進(jìn)行訪問控制管理的研究來集成邏輯和物理的訪問控制,并采用可靠的方法分析安全方面的問題以及使用新技術(shù)來消除可能會(huì)被利用的漏洞.