






摘要:針對物聯網(IoT)數據共享過程中存在的安全漏洞和隱私泄露風險,提出一種基于區塊鏈的物聯網數據共享方案.采用數據的不可篡改、分布式存儲、隱私保護、可追溯及訪問控制,將消息隊列遙測傳輸(MQTT)作為通信協議和中間件,并為其提供身份認證和主題權限管理.結合國產加密算法實現密鑰交換、數據摘要和加密傳輸,通過區塊鏈記錄設備的行為,在提高可信度的同時提供追溯的能力,采用智能合約對數據和主題進行共享和管理,實現鏈上鏈下數據協同保障數據的一致性.通過系統原型實現與測試,結果表明:該方案能夠確保物聯網設備之間共享數據時的安全性和隱私性,滿足物聯網應用性能需求,具有可行性.
關鍵詞:區塊鏈; 物聯網; 智能合約; 數據共享; 消息隊列遙測傳輸
中圖分類號: TP 311.13; TP 319文獻標志碼: A 文章編號: 1000-5013(2023)02-0257-07
Data Sharing Scheme for Internet of Things Using Blockchain
FU Wenlong1,2, LI Guogang1,2, XIE Tong1,2
(1. College of Information Science and Engineering, Huaqiao University, Xiamen 361021, China;
2. Xiamen City Key Laboratory of Application Specific Integrated Circuit System, Xiamen 361021, China)
Abstract: Aiming at the security vulnerabilities and privacy leakage risks in the process of internet of things (IoT) data sharing, a data sharing scheme for IoT based on blockchain is proposed. The blockchain is used to realize data tamper-proof, distributed storage, privacy protection, traceability and access control. The message queue telemetry transport (MQTT) is used as a communication protocol and middleware, and provides identity authentication and topic permission management for it. The key exchange, data synopses and encrypted transmission are realized by combining the domestic encryption algorithm. The behavior of the device is recorded through the blockchain, and the traceability is provided while improving the credibility. The smart contract is used to share and manage the data and topics, and the on-chain and off-chain data coordination is achieved to ensure the consistency of the data. Through the system prototype implementation and testing, the results show that the scheme can ensure the security and privacy of data sharing between IoT devices, and meet the performance requirements of IoT applications, which is feasible.
Keywords: blockchain; internet of things (IoT) ; smart contract; data sharing; message queuing telemetry transport
物聯網(internet of things,IoT)將數以億計的設備連接到互聯網,使生活、生產更加智能、便利、高效和自動化,被廣泛應用于各個領域[1].隨著海量的物聯網節點的接入及多源異構數據的爆炸式增長,物聯網設備之間通過數據交換獲取更豐富的信息,以便做出更加合理的決策,從而提高任務效率[2].同時,物聯網應用的指數級增長導致大量安全漏洞的出現,且大規模物聯網系統數據在傳輸、處理和存儲過程中的泄露會嚴重影響個人隱私,造成嚴重后果[3].物聯網系統通常沒有中央管理系統,缺乏記錄物聯網設備行為的良好基礎設施,因此很難為設備生成信任評級及行為追溯[4].區塊鏈作為一種分布式存儲技術,可以為物聯網中安全、隱私、可追溯性、可靠性和互操作性相關的問題提供解決方案[5].
目前,已有許多學者通過研究測試證明區塊鏈技術能夠使物聯網系統具有更高的安全級別及更好的隱私保護能力,其中,包括構建區塊鏈用作物聯網設備身份認證和訪問控制管理,結合聚合簽名、密文策略屬性基加密和同態加密等技術,以及與云存儲相結合的混合架構來實現物聯網安全共享數據[6-11].文獻[12-13]的方案保障了數據的安全共享,但缺乏可靠的物聯網設備及用戶行為存證,并且授權信息得不到監管和記錄,忽略了設備的共享效率.
綜合上述討論,本文提出一種采用區塊鏈的物聯網數據共享方案,將消息隊列遙測傳輸(MQTT)作為物聯網設備之間的通信協議和系統中間件,利用區塊鏈和智能合約實現物聯網設備的身份認證、訪問控制、密鑰管理及行為記錄,采用鏈上鏈下協同[14]的方式共享數據.
1 系統架構
將MQTT協議作為設備之間的傳輸協議,實現物聯網設備之間無需直接連接或同時在線就可交換數據,使用超級賬本(hyperledger)搭建聯盟鏈為數據存儲和共享提供安全保障,通過智能合約實現區塊鏈的應用接口,將系統中非敏感數據和敏感數據分別存儲在關系型數據庫管理系統(MySQL)和星際文件系統(IPFS)數據庫中.設備之間通過發布和訂閱的方式實時共享較小的數據,文檔、圖片、音頻、視頻等較大的敏感數據則通過數據庫共享.文中方案的系統架構,如圖1所示,主要包括區塊鏈平臺、智能合約、應用模塊、設備、MQTT服務器及數據庫.
區塊鏈是由多個組織共同參與維護的聯盟鏈實現數據的多中心化分布式存儲.由于MQTT協議運行于傳輸控制協議(TCP)之上,以明文方式傳輸,且缺少一些安全措施[15],為此,文中方案通過結合區塊鏈技術為MQTT服務器添加了身份認證和訪問控制,保障數據的安全傳輸和數據隱私,MQTT服務器負責物聯網設備之間的數據轉發及主題管理,會對設備的登錄、退出、異常離線、發布主題、訂閱主題及退訂主題等操作執行智能合約上鏈記錄,將設備信息、用戶信息和在線狀態等非敏感數據寫入MySQL數據庫中,將設備發布的加密后的敏感數據寫入IPFS數據庫中,并提取數據摘要和數據地址等信息上鏈存儲.
應用模塊主要包括用戶和設備的注冊管理、設備主題信息管理、設備歷史事件查詢和主題數據共享管理等功能.物聯網設備中預設客戶端身份標識號(ID)、用戶簽名和區塊鏈服務器公鑰,設備根據分組密碼算法SM4生成通信密鑰并使用服務器公鑰加密,通過向MQTT服務器登錄請求時提交密鑰,將敏感數據經過SM4加密后由MQTT服務器進行轉發.
2 物聯網數據共享方案
2.1 網絡結構
用戶通過應用程序實現對智能合約的調用及對數據庫的訪問,物聯網設備與MQTT服務器通信完成發布和訂閱主題,MQTT服務器利用智能合約執行服務器相關合約方法和數據上傳,并將數據寫入數據庫.系統網絡結構,如圖2所示.應用程序和MQTT服務器采用遠程過程調用(gRPC)協議與區塊鏈節點通信,提交調用請求時需要認證由證書授權中心(CA)頒發的X.509數字證書的合法性和訪問權限才能執行相應的合約方法,使用傳輸層安全性協議(TLS)來確保gRPC通信時傳輸層的安全性,設備與MQTT服務器進行通信時會對設備身份進行驗證,同時開啟TLS保障通信安全和數據完整性.
2.2 智能合約
智能合約與賬本一起構成了超級賬本區塊鏈系統的核心,在超級賬本Fabric中智能合約又被稱為鏈碼(chaincode),它是部署到Fabric中通道上實現業務邏輯的軟件,能夠執行讀取、更改鍵值對及其他狀態數據庫操作的指令規則[16].
文中方案使用智能合約實現系統中物聯網設備的注冊和主題權限管理,MQTT服務器的登錄認證、設備行為記錄、權限管理及數據的查詢等功能,其智能合約函數,如表1所示.
由于Fabric無法對智能合約中方法的執行進行權限管理,所以,在執行涉及物聯網設備相關操作的函數時,為驗證用戶對設備操作的合法性,智能合約會對比用戶所使用的X.509數字證書信息是否與該設備在區塊鏈中存儲的用戶信息一致,MQTT服務器在執行合約時則需要相應的管理員證書.
物聯網設備信息在區塊鏈中主要包括客戶端標識、所屬用戶的名稱、設備描述、訂閱主題信息及發布主題信息.
其中,用戶名稱與用戶在區塊鏈組織中的名稱一致并且與用戶的SM2公鑰為一對鍵值存儲,設備發布主題和訂閱主題中包含設備所發布和訂閱的所有主題的信息.發布主題信息包含主題公開標識、數據類型、數據說明及服務質量(QoS),設備訂閱主題信息以主題名稱與訂閱主題數據結構一一對應的集合存儲.訂閱主題數據結構包括主題發布方的客戶端標識和用戶名、用于共享主題的一次性口令、主題訂閱起始時間和截止時間,以及相應主題的發布信息.
物聯網設備通過向MQTT服務器發送clientID,username和password 3個字段進行登錄認證和密鑰交換,其中,clientID為設備在區塊鏈中合法注冊的客戶端標識,username為設備所屬的用戶名稱,password為用戶私鑰對客戶端標識簽名后得到的密文,服務器調用登錄認證的合約方法,智能合約以username為鍵查詢區塊鏈賬本獲取對應用戶的公鑰,使用用戶公鑰驗證password是否為私鑰對clientID簽名后的結果,從而驗證設備的合法性.當服務器判斷字段clientID滿足〈用戶名〉/〈通信密鑰類型〉/〈客戶端ID〉對應的數據類型時,則執行對稱密鑰上傳,這時設備上傳的username為使用服務器公鑰對通信密鑰加密后的密文,智能合約先通過clientID字段中的用戶名、客戶端ID及password字段中的密文執行登錄認證方法,確定設備的合法性后,使用服務器私鑰解密username,獲取對稱密鑰并將其與clientID字段中的通信密鑰類型上鏈存儲,對于對稱密鑰的獲取,需要驗證合法用戶的證書或得到相應資源的授權權限.
物聯網設備在請求訂閱主題時,MQTT服務器會執行訂閱主題權限驗證,檢查設備是否已獲取該主題的訂閱權限,用戶可以通過添加訂閱主題的方法為設備添加公開或非公開的主題,其中,執行方法的參數token為發布方提供的一次性共享口令.
2.3 系統流程
2.3.1 用戶、設備注冊 準備階段中的設備注冊流程,如圖3所示.應用程序發送隨機數來注冊用于管理物聯網設備的用戶身份,智能合約生成SM2非對稱密鑰對并返回私鑰,以用戶名為鍵存儲公鑰并與用戶的區塊鏈證書綁定,完成后用戶便可以注冊設備并預設設備ID、用戶私鑰簽名設備ID及服務器公鑰.設備通過向MQTT服務器發送包含預設的登錄憑證及經過服務器公鑰加密后的通信密鑰,由MQTT服務器調用密鑰上傳的合約方法,以此實現在區塊鏈中存儲設備的通信密鑰.
2.3.2 設備訪問控制 物聯網設備在登錄MQTT服務器時,需要提交設備ID、所屬用戶名及對設備ID的簽名,服務器執行智能合約中的相關方法驗證設備的合法性.當驗證成功后,智能合約會上鏈記錄設備登錄時間和互聯網協議(IP)地址等信息,設備與服務器建立連接之后便可以發布和訂閱,其中,發布的主題數據由服務器轉發給其他設備并存儲到數據庫中,訂閱主題時服務器同樣通過智能合約審核訂閱權限并上鏈記錄.設備訪問控制流程,如圖4所示.
2.3.3 主題、鏈下數據共享 系統共享的數據資源主要包括MQTT的主題及數據庫中存儲的加密數據.主題共享流程圖,如圖5所示.用戶A通過程序為物聯網設備添加發布主題信息并獲取用于訂閱主題的一次性口令,用戶B通過一次性口令為其設備添加訂閱主題,當設備訂閱主題時由智能合約決策設備的訂閱權限同時上鏈記錄,再由MQTT服務器轉發數據.
數據共享流程,如圖6所示.MQTT服務器將設備發布的數據寫入數據庫,按條數打包成數據塊并
提取SM3雜湊字串,與數據地址、時間范圍等信息一起上傳至區塊鏈,以雜湊字串為鍵存儲數據信息及通信密鑰.用戶A向用戶B提供包含數據摘要和通信密鑰等信息的一次性數據共享口令來授權數據的訪問權限,用戶B便可通過數據地址獲取加密數據,使用數據摘要驗證數據完整性,再通過對稱密鑰解密獲取明文數據.
3 安全性分析和性能測試
3.1 物聯網數據共享方案對比
文獻[10]所提方案利用密文屬性策略基加密對數據進行加密后,同時存儲在云平臺和區塊鏈中,用戶從云平臺獲取加密數據解密后,對比區塊鏈中的數據,保障其一致性.文獻[12]將物聯網數據統一格式后存儲在區塊鏈帳本中,采用通道隔離的方式建立多賬本和身份認證,實現數據訪問管理.區塊鏈網絡中的各個節點通常會備份所有賬本數據,如果將物聯網系統產生的所有數據都存儲在區塊鏈中,不僅會給各個節點帶來嚴重的內存壓力,查詢數據所帶來的時間開銷也不利于數據的共享,為了提升共享效率、保護數據隱私及消除節點存儲壓力,采用鏈上鏈下協同存儲,數據經過對稱加密算法加密后,存儲在IPFS中,數據摘要和加密數據存儲地址等信息存儲在區塊鏈中,建立鏈上與鏈下數據的鏈接,同時保障數據的一致性.文獻[11]提出的方案中,由邊緣服務器加密物聯網數據后提交至云服務器中,同時在區塊鏈中存儲數據摘要,用戶通過向云服務器提交訪問請求獲取解密后的數據.文獻[13]將MQTT代理作為中間件,處理物聯網設備發送的請求,執行相應的合約方法,同時,將物聯網設備發送的加密數據存儲在分布式數據庫中,通過區塊鏈中存儲的訪問控制列表實現數據共享.上述方案都實現通過區塊鏈保障鏈下數據的共享安全,但無法滿足部分物聯網場景下設備實時共享數據的需求,因此,利用MQTT協議實時轉發加密后的物聯網數據,并且為保障數據的訪問安全,設備和用戶需要通過身份認證才能連接MQTT服務器和執行智能合約,通過合約實現訪問控制及主題權限管理.與其他方案相比,文中方案在架構設計上避免使用區塊鏈直接存儲或作為平臺交換物聯網數據,而是采用區塊鏈來保護設備之間通過MQTT服務器交換數據過程中的安全性和隱私性,以此來保障物聯網數據的共享效率,提供細粒化的數據訪問控制,與此同時,將設備行為、數據共享記錄及授權憑證上鏈存儲以便追溯.不同物聯網數據共享方案的對比,如表2所示.
3.2 安全性分析
在安全方面,將國密算法SM2,SM3和SM4分別用作對稱加密、哈希函數和非對稱加密,數據使用對稱加密算法加密,非對稱加密用于設備身份認證及安全地交換對稱密鑰,鏈下數據提取哈希值存儲在區塊鏈中,以保證數據的一致性和完整性.執行智能合約需要驗證區塊鏈中的合法身份,MQTT協議和gRPC協議傳輸過程開啟TLS提供保密性和數據完整性.文中系統的安全特性具體如下.
3.2.1 防篡改 采用Fabric搭建多方共同維護的許可鏈,節點需通過驗證登記證書和通信證書接入,大大降低了惡意節點入侵的風險,使用Raft崩潰容錯共識算法實現分布式賬本的一致性,允許故障節點數量在不多于正常節點的情況下工作.通過節點共識、分布式賬本等技術保證鏈上數據的不可篡改性,采用鏈上鏈下協同的存儲方法,加密文件存儲在鏈下,少量的文件信息存儲在鏈上,鏈下數據通過鏈上數據進行檢索;通信過程中,通過哈希檢測保障數據完整性和一致性.
3.2.2 機密性 物聯網設備通過非對稱密鑰將用于安全通信的對稱密鑰加密后上傳至區塊鏈中,只有使用服務器的私鑰才能解密獲得設備的對稱密鑰,設備之間通過對稱密鑰進行通信,數據庫中存儲的數據也是經過對稱密鑰加密后的密文.在共享主題和加密文件時,用戶需要通過授權的一次性口令獲取主題訂閱權限、數據地址及對稱密鑰,執行該操作需要區塊鏈中的合法證書.
3.2.3 身份驗證 用戶在執行注冊、查詢及其他區塊鏈操作時,通過gRPC協議與區塊鏈節點通信并驗證區塊鏈用戶證書.物聯網設備在連接MQTT服務器之前,需要用戶進行注冊并在設備中預設登錄憑證,設備通過向服務器提供簽名密文驗證設備連接的合法性.
3.2.4 權限管理 通過對物聯網設備訂閱主題的權限控制,避免越權訪問、發布惡意內容和訂閱主題捕獲數據等攻擊;對用戶執行物聯網設備信息修改、增加主題和共享數據等操作,合約會檢驗其是否為相關設備所屬的合法用戶;用戶只能通過數據所屬方提供的一次性共享密鑰來添加主題的訂閱權限和獲取鏈下存儲的數據.
3.2.5 行為追溯 物聯網設備連接服務器、交換密鑰和訂閱主題等操作的信息均會存儲在區塊鏈中,數據共享和獲取行為也將在區塊鏈中永久留痕,區塊鏈中的所有節點都將存儲行為記錄,使記錄難以被篡改,從而提供可靠的行為追溯.
3.3 性能測試
為了驗證文中方案的可行性,使用Fabric 2.2和Golang語言實現方案原型,將1臺2核、4 GB內存、80 GB固態硬盤(SSD),Ubuntu Server 18.04.1 LTS 64 bit操作系統的騰訊云應用服務器作為服務端;將1臺Windows 10操作系統的筆記本電腦作為客戶端.測試環境中,區塊鏈是由2個組織組成的聯盟鏈,通過Docker部署4個Peer節點及1個Order節點,將CouchDB作為存儲方式.
性能測試主要研究系統處理不同事件的時延和吞吐量(TXN(事件數)·s-1),物聯網設備之間共享數據的效率主要取決于MQTT服務器的性能,測試中所采用的MQTT服務器通過發布訂閱進行數據交換的飽和吞吐量達到70 000 TXN·s-1,MQTT服務器查詢區塊鏈數據的飽和吞吐量為2 700 TXN·s-1,文獻[12]和文獻[13]的方案分別以Fabric和以太坊作為數據的共享平臺,其吞吐量分別為60,0.54 TXN·s-1.
系統中的時間開銷主要用于設備身份認證和密鑰交換,對MQTT登錄認證進行測試,其登錄認證時延,如圖7所示.圖7中:N為并發數;t為登陸請求響應時延.在20個并發請求下,時延為277 ms,飽和吞吐量可以達到420 TXN·s-1.
密鑰交換涉及區塊鏈賬本的查詢、修改及SM2驗簽和私鑰解密,是方案中最耗時的合約方法.交換密鑰時延,如圖8所示.在20個并發數下,時延為480 ms,飽和吞吐量為100 TXN·s-1.
4 結束語
針對物聯網數據共享過程中存在的安全漏洞、隱私泄露風險及共享靈活性不足等問題,提出一種采用區塊鏈的物聯網數據共享方案.利用鏈上鏈下協同的方式存儲和共享數據,將MQTT作為物聯網設備之間的通信協議和系統中間件,實現物聯網設備交換數據時,無需互相連接或同時在線,只需要連接同一個利用智能合約進行身份認證的可信MQTT消息代理,從而保障數據共享過程的安全性.采用智能合約實現設備主題管理和鏈下數據共享,并記錄設備的連接、離線及訂閱等歷史操作以便追溯,通過加密算法保障共享數據過程中的一致性和隱私性.在下一步研究中,將對物聯網設備的訪問控制和資源管理的細粒化進行研究,在保證安全性和有效性的前提下,進一步提高數據的共享效率.
參考文獻:
[1]ALAM N,VATS P,KASHYAP N.Internet of Things: A literature review[C]∥Recent Developments in Control,Automation and Power Engineering.Noida:IEEE Press,2017:192-197.DOI:10.1109/RDCAPE.2017.83582 65.
[2]MOHANTY J,MISHRA S,PATRA S,et al.IoT security, challenges, and solutions: A review[C]∥Progress in Advanced Computing and Intelligent Engineering.[S.l.]:Springer,2021:493-504.DOI:10.1007/978-981-15-6353- 9_46.
[3]SAXENA S,BHUSHAN B,AHAD M A.Blockchain based solutions to secure IoT: Background, integration trends and a way forward[J].Journal of Network and Computer Applications,2021,181:103050.DOI:10.1016/j.jnca.2021.103050.
[4]WANG Qin,ZHU Xinqi,NI Yiyang,et al.Blockchain for the IoT and industrial IoT: A review[J].Internet of Things,2020,10:100081.DOI:10.1016/j.iot.2019.100081.
[5]UMER M,IBRAR Y,KHALED S,et al.Blockchain for IoT-based smart cities: Recent advances, requirements, and future challenges[J].Journal of Network and Computer Applications,2021,181:103007.DOI:10.1016/j.jnca.2021.103007.
[6]BANOUN N,DIARRA N.Authentication of mobile IoT devices using hyperledger fabric blockchain[C]∥Eighth International Conference on Software Defined Systems.Gandia:IEEE Press,2021:1-6.DOI:10.1109/SDS54264.2021.9732141.
[7]HOU Mingyu,KANG Tianyu,GUO Li.A blockchain based architecture for IoT data sharing systems[C]∥IEEE International Conference on Pervasive Computing and Communications Workshops.Austin:IEEE Press,2020:1-6.DOI:10.1109/PerComWorkshops48775.2020.9156107.
[8]SULTANA T,ALMOGREN A,AKBAR M,et al.Data sharing system integrating access control mechanism using blockchain-based smart contracts for IoT devices[J].Applied Sciences,2020,10(2):488.DOI:10.3390/app100204 88.
[9]MANZOOR A,BRAEKEN A,KANHERE S S,et al.Proxy re-encryption enabled secure and anonymous IoT data sharing platform based on blockchain[J].Journal of Network and Computer Applications,2021,176:102917.DOI:10.1016/j.jnca.2020.102917.
[10]楊業平,林德威,黃芳芳,等.基于區塊鏈的物聯網安全數據共享系統[J].福州大學學報(自然科學版),2021,49(6):739-746.DOI:10.7631/issn.1000-2243.21326.
[11]SUN Shuang,DU Rong,CHEN Shudong.A secure and computable blockchain-based data sharing scheme in IoT system[J].Information (Switzerland),2021,12(2):47.DOI:10.3390/info12020047.
[12]于金剛,張弘,李姝,等.基于區塊鏈的物聯網數據共享模型[J].小型微型計算機系統,2019,40(11):2324-2329.DOI:10.3969/j.issn.1000-1220.2019.11.015.
[13]CARVALHO K,GRANJAL J.Security and privacy for mobile IoT applications using blockchain[J].Sensors,2021,21(17):5931.DOI:10.3390/s21175931.
[14]梁秀波,吳俊涵,趙昱,等.區塊鏈數據安全管理和隱私保護技術研究綜述[J].浙江大學學報(工學版),2022,56(1):1-15.DOI:10.3785/j.issn.1008-973X.2022.01.001.
[15]HINTAW A J,MANICKAM S,ABOALMAALY M F,et al.MQTT vulnerabilities, attack vectors and solutions in the internet of things (IoT)[J/OL].IETE Journal of Research,2021:1-30.[2022-04-19].https:∥doi.org/10.1080/03772063.2021.1912651.
[16]ZOU Weiqin,LO D,KOCHHAR P S,et al.Smart contract development: Challenges and opportunities[J].IEEE Transactions on Software Engineering,2019,47(10):2084-2106.DOI:10.1109/TSE.2019.2942301.
(責任編輯:" 黃曉楠 英文審校: 吳逢鐵)
收稿日期: 2022-04-26
通信作者: 李國剛(1973-),男,副教授,博士,主要從事嵌入式系統設計、信息安全研究與實現、區塊鏈、物聯網應用的研究.E-mail:lgg@hqu.edu.cn.
基金項目: 國家自然科學基金資助項目(61370007)