摘要:針對(duì)物聯(lián)網(wǎng)(IoT)數(shù)據(jù)共享過(guò)程中存在的安全漏洞和隱私泄露風(fēng)險(xiǎn),提出一種基于區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享方案.采用數(shù)據(jù)的不可篡改、分布式存儲(chǔ)、隱私保護(hù)、可追溯及訪問(wèn)控制,將消息隊(duì)列遙測(cè)傳輸(MQTT)作為通信協(xié)議和中間件,并為其提供身份認(rèn)證和主題權(quán)限管理.結(jié)合國(guó)產(chǎn)加密算法實(shí)現(xiàn)密鑰交換、數(shù)據(jù)摘要和加密傳輸,通過(guò)區(qū)塊鏈記錄設(shè)備的行為,在提高可信度的同時(shí)提供追溯的能力,采用智能合約對(duì)數(shù)據(jù)和主題進(jìn)行共享和管理,實(shí)現(xiàn)鏈上鏈下數(shù)據(jù)協(xié)同保障數(shù)據(jù)的一致性.通過(guò)系統(tǒng)原型實(shí)現(xiàn)與測(cè)試,結(jié)果表明:該方案能夠確保物聯(lián)網(wǎng)設(shè)備之間共享數(shù)據(jù)時(shí)的安全性和隱私性,滿足物聯(lián)網(wǎng)應(yīng)用性能需求,具有可行性.
關(guān)鍵詞:區(qū)塊鏈; 物聯(lián)網(wǎng); 智能合約; 數(shù)據(jù)共享; 消息隊(duì)列遙測(cè)傳輸
中圖分類號(hào): TP 311.13; TP 319文獻(xiàn)標(biāo)志碼: A 文章編號(hào): 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
物聯(lián)網(wǎng)(internet of things,IoT)將數(shù)以億計(jì)的設(shè)備連接到互聯(lián)網(wǎng),使生活、生產(chǎn)更加智能、便利、高效和自動(dòng)化,被廣泛應(yīng)用于各個(gè)領(lǐng)域[1].隨著海量的物聯(lián)網(wǎng)節(jié)點(diǎn)的接入及多源異構(gòu)數(shù)據(jù)的爆炸式增長(zhǎng),物聯(lián)網(wǎng)設(shè)備之間通過(guò)數(shù)據(jù)交換獲取更豐富的信息,以便做出更加合理的決策,從而提高任務(wù)效率[2].同時(shí),物聯(lián)網(wǎng)應(yīng)用的指數(shù)級(jí)增長(zhǎng)導(dǎo)致大量安全漏洞的出現(xiàn),且大規(guī)模物聯(lián)網(wǎng)系統(tǒng)數(shù)據(jù)在傳輸、處理和存儲(chǔ)過(guò)程中的泄露會(huì)嚴(yán)重影響個(gè)人隱私,造成嚴(yán)重后果[3].物聯(lián)網(wǎng)系統(tǒng)通常沒(méi)有中央管理系統(tǒng),缺乏記錄物聯(lián)網(wǎng)設(shè)備行為的良好基礎(chǔ)設(shè)施,因此很難為設(shè)備生成信任評(píng)級(jí)及行為追溯[4].區(qū)塊鏈作為一種分布式存儲(chǔ)技術(shù),可以為物聯(lián)網(wǎng)中安全、隱私、可追溯性、可靠性和互操作性相關(guān)的問(wèn)題提供解決方案[5].
目前,已有許多學(xué)者通過(guò)研究測(cè)試證明區(qū)塊鏈技術(shù)能夠使物聯(lián)網(wǎng)系統(tǒng)具有更高的安全級(jí)別及更好的隱私保護(hù)能力,其中,包括構(gòu)建區(qū)塊鏈用作物聯(lián)網(wǎng)設(shè)備身份認(rèn)證和訪問(wèn)控制管理,結(jié)合聚合簽名、密文策略屬性基加密和同態(tài)加密等技術(shù),以及與云存儲(chǔ)相結(jié)合的混合架構(gòu)來(lái)實(shí)現(xiàn)物聯(lián)網(wǎng)安全共享數(shù)據(jù)[6-11].文獻(xiàn)[12-13]的方案保障了數(shù)據(jù)的安全共享,但缺乏可靠的物聯(lián)網(wǎng)設(shè)備及用戶行為存證,并且授權(quán)信息得不到監(jiān)管和記錄,忽略了設(shè)備的共享效率.
綜合上述討論,本文提出一種采用區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享方案,將消息隊(duì)列遙測(cè)傳輸(MQTT)作為物聯(lián)網(wǎng)設(shè)備之間的通信協(xié)議和系統(tǒng)中間件,利用區(qū)塊鏈和智能合約實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備的身份認(rèn)證、訪問(wèn)控制、密鑰管理及行為記錄,采用鏈上鏈下協(xié)同[14]的方式共享數(shù)據(jù).
1 系統(tǒng)架構(gòu)
將MQTT協(xié)議作為設(shè)備之間的傳輸協(xié)議,實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備之間無(wú)需直接連接或同時(shí)在線就可交換數(shù)據(jù),使用超級(jí)賬本(hyperledger)搭建聯(lián)盟鏈為數(shù)據(jù)存儲(chǔ)和共享提供安全保障,通過(guò)智能合約實(shí)現(xiàn)區(qū)塊鏈的應(yīng)用接口,將系統(tǒng)中非敏感數(shù)據(jù)和敏感數(shù)據(jù)分別存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(MySQL)和星際文件系統(tǒng)(IPFS)數(shù)據(jù)庫(kù)中.設(shè)備之間通過(guò)發(fā)布和訂閱的方式實(shí)時(shí)共享較小的數(shù)據(jù),文檔、圖片、音頻、視頻等較大的敏感數(shù)據(jù)則通過(guò)數(shù)據(jù)庫(kù)共享.文中方案的系統(tǒng)架構(gòu),如圖1所示,主要包括區(qū)塊鏈平臺(tái)、智能合約、應(yīng)用模塊、設(shè)備、MQTT服務(wù)器及數(shù)據(jù)庫(kù).
區(qū)塊鏈?zhǔn)怯啥鄠€(gè)組織共同參與維護(hù)的聯(lián)盟鏈實(shí)現(xiàn)數(shù)據(jù)的多中心化分布式存儲(chǔ).由于MQTT協(xié)議運(yùn)行于傳輸控制協(xié)議(TCP)之上,以明文方式傳輸,且缺少一些安全措施[15],為此,文中方案通過(guò)結(jié)合區(qū)塊鏈技術(shù)為MQTT服務(wù)器添加了身份認(rèn)證和訪問(wèn)控制,保障數(shù)據(jù)的安全傳輸和數(shù)據(jù)隱私,MQTT服務(wù)器負(fù)責(zé)物聯(lián)網(wǎng)設(shè)備之間的數(shù)據(jù)轉(zhuǎn)發(fā)及主題管理,會(huì)對(duì)設(shè)備的登錄、退出、異常離線、發(fā)布主題、訂閱主題及退訂主題等操作執(zhí)行智能合約上鏈記錄,將設(shè)備信息、用戶信息和在線狀態(tài)等非敏感數(shù)據(jù)寫入MySQL數(shù)據(jù)庫(kù)中,將設(shè)備發(fā)布的加密后的敏感數(shù)據(jù)寫入IPFS數(shù)據(jù)庫(kù)中,并提取數(shù)據(jù)摘要和數(shù)據(jù)地址等信息上鏈存儲(chǔ).
應(yīng)用模塊主要包括用戶和設(shè)備的注冊(cè)管理、設(shè)備主題信息管理、設(shè)備歷史事件查詢和主題數(shù)據(jù)共享管理等功能.物聯(lián)網(wǎng)設(shè)備中預(yù)設(shè)客戶端身份標(biāo)識(shí)號(hào)(ID)、用戶簽名和區(qū)塊鏈服務(wù)器公鑰,設(shè)備根據(jù)分組密碼算法SM4生成通信密鑰并使用服務(wù)器公鑰加密,通過(guò)向MQTT服務(wù)器登錄請(qǐng)求時(shí)提交密鑰,將敏感數(shù)據(jù)經(jīng)過(guò)SM4加密后由MQTT服務(wù)器進(jìn)行轉(zhuǎn)發(fā).
2 物聯(lián)網(wǎng)數(shù)據(jù)共享方案
2.1 網(wǎng)絡(luò)結(jié)構(gòu)
用戶通過(guò)應(yīng)用程序?qū)崿F(xiàn)對(duì)智能合約的調(diào)用及對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),物聯(lián)網(wǎng)設(shè)備與MQTT服務(wù)器通信完成發(fā)布和訂閱主題,MQTT服務(wù)器利用智能合約執(zhí)行服務(wù)器相關(guān)合約方法和數(shù)據(jù)上傳,并將數(shù)據(jù)寫入數(shù)據(jù)庫(kù).系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示.應(yīng)用程序和MQTT服務(wù)器采用遠(yuǎn)程過(guò)程調(diào)用(gRPC)協(xié)議與區(qū)塊鏈節(jié)點(diǎn)通信,提交調(diào)用請(qǐng)求時(shí)需要認(rèn)證由證書授權(quán)中心(CA)頒發(fā)的X.509數(shù)字證書的合法性和訪問(wèn)權(quán)限才能執(zhí)行相應(yīng)的合約方法,使用傳輸層安全性協(xié)議(TLS)來(lái)確保gRPC通信時(shí)傳輸層的安全性,設(shè)備與MQTT服務(wù)器進(jìn)行通信時(shí)會(huì)對(duì)設(shè)備身份進(jìn)行驗(yàn)證,同時(shí)開(kāi)啟TLS保障通信安全和數(shù)據(jù)完整性.
2.2 智能合約
智能合約與賬本一起構(gòu)成了超級(jí)賬本區(qū)塊鏈系統(tǒng)的核心,在超級(jí)賬本Fabric中智能合約又被稱為鏈碼(chaincode),它是部署到Fabric中通道上實(shí)現(xiàn)業(yè)務(wù)邏輯的軟件,能夠執(zhí)行讀取、更改鍵值對(duì)及其他狀態(tài)數(shù)據(jù)庫(kù)操作的指令規(guī)則[16].
文中方案使用智能合約實(shí)現(xiàn)系統(tǒng)中物聯(lián)網(wǎng)設(shè)備的注冊(cè)和主題權(quán)限管理,MQTT服務(wù)器的登錄認(rèn)證、設(shè)備行為記錄、權(quán)限管理及數(shù)據(jù)的查詢等功能,其智能合約函數(shù),如表1所示.
由于Fabric無(wú)法對(duì)智能合約中方法的執(zhí)行進(jìn)行權(quán)限管理,所以,在執(zhí)行涉及物聯(lián)網(wǎng)設(shè)備相關(guān)操作的函數(shù)時(shí),為驗(yàn)證用戶對(duì)設(shè)備操作的合法性,智能合約會(huì)對(duì)比用戶所使用的X.509數(shù)字證書信息是否與該設(shè)備在區(qū)塊鏈中存儲(chǔ)的用戶信息一致,MQTT服務(wù)器在執(zhí)行合約時(shí)則需要相應(yīng)的管理員證書.
物聯(lián)網(wǎng)設(shè)備信息在區(qū)塊鏈中主要包括客戶端標(biāo)識(shí)、所屬用戶的名稱、設(shè)備描述、訂閱主題信息及發(fā)布主題信息.
其中,用戶名稱與用戶在區(qū)塊鏈組織中的名稱一致并且與用戶的SM2公鑰為一對(duì)鍵值存儲(chǔ),設(shè)備發(fā)布主題和訂閱主題中包含設(shè)備所發(fā)布和訂閱的所有主題的信息.發(fā)布主題信息包含主題公開(kāi)標(biāo)識(shí)、數(shù)據(jù)類型、數(shù)據(jù)說(shuō)明及服務(wù)質(zhì)量(QoS),設(shè)備訂閱主題信息以主題名稱與訂閱主題數(shù)據(jù)結(jié)構(gòu)一一對(duì)應(yīng)的集合存儲(chǔ).訂閱主題數(shù)據(jù)結(jié)構(gòu)包括主題發(fā)布方的客戶端標(biāo)識(shí)和用戶名、用于共享主題的一次性口令、主題訂閱起始時(shí)間和截止時(shí)間,以及相應(yīng)主題的發(fā)布信息.
物聯(lián)網(wǎng)設(shè)備通過(guò)向MQTT服務(wù)器發(fā)送clientID,username和password 3個(gè)字段進(jìn)行登錄認(rèn)證和密鑰交換,其中,clientID為設(shè)備在區(qū)塊鏈中合法注冊(cè)的客戶端標(biāo)識(shí),username為設(shè)備所屬的用戶名稱,password為用戶私鑰對(duì)客戶端標(biāo)識(shí)簽名后得到的密文,服務(wù)器調(diào)用登錄認(rèn)證的合約方法,智能合約以u(píng)sername為鍵查詢區(qū)塊鏈賬本獲取對(duì)應(yīng)用戶的公鑰,使用用戶公鑰驗(yàn)證password是否為私鑰對(duì)clientID簽名后的結(jié)果,從而驗(yàn)證設(shè)備的合法性.當(dāng)服務(wù)器判斷字段clientID滿足〈用戶名〉/〈通信密鑰類型〉/〈客戶端ID〉對(duì)應(yīng)的數(shù)據(jù)類型時(shí),則執(zhí)行對(duì)稱密鑰上傳,這時(shí)設(shè)備上傳的username為使用服務(wù)器公鑰對(duì)通信密鑰加密后的密文,智能合約先通過(guò)clientID字段中的用戶名、客戶端ID及password字段中的密文執(zhí)行登錄認(rèn)證方法,確定設(shè)備的合法性后,使用服務(wù)器私鑰解密username,獲取對(duì)稱密鑰并將其與clientID字段中的通信密鑰類型上鏈存儲(chǔ),對(duì)于對(duì)稱密鑰的獲取,需要驗(yàn)證合法用戶的證書或得到相應(yīng)資源的授權(quán)權(quán)限.
物聯(lián)網(wǎng)設(shè)備在請(qǐng)求訂閱主題時(shí),MQTT服務(wù)器會(huì)執(zhí)行訂閱主題權(quán)限驗(yàn)證,檢查設(shè)備是否已獲取該主題的訂閱權(quán)限,用戶可以通過(guò)添加訂閱主題的方法為設(shè)備添加公開(kāi)或非公開(kāi)的主題,其中,執(zhí)行方法的參數(shù)token為發(fā)布方提供的一次性共享口令.
2.3 系統(tǒng)流程
2.3.1 用戶、設(shè)備注冊(cè) 準(zhǔn)備階段中的設(shè)備注冊(cè)流程,如圖3所示.應(yīng)用程序發(fā)送隨機(jī)數(shù)來(lái)注冊(cè)用于管理物聯(lián)網(wǎng)設(shè)備的用戶身份,智能合約生成SM2非對(duì)稱密鑰對(duì)并返回私鑰,以用戶名為鍵存儲(chǔ)公鑰并與用戶的區(qū)塊鏈證書綁定,完成后用戶便可以注冊(cè)設(shè)備并預(yù)設(shè)設(shè)備ID、用戶私鑰簽名設(shè)備ID及服務(wù)器公鑰.設(shè)備通過(guò)向MQTT服務(wù)器發(fā)送包含預(yù)設(shè)的登錄憑證及經(jīng)過(guò)服務(wù)器公鑰加密后的通信密鑰,由MQTT服務(wù)器調(diào)用密鑰上傳的合約方法,以此實(shí)現(xiàn)在區(qū)塊鏈中存儲(chǔ)設(shè)備的通信密鑰.
2.3.2 設(shè)備訪問(wèn)控制 物聯(lián)網(wǎng)設(shè)備在登錄MQTT服務(wù)器時(shí),需要提交設(shè)備ID、所屬用戶名及對(duì)設(shè)備ID的簽名,服務(wù)器執(zhí)行智能合約中的相關(guān)方法驗(yàn)證設(shè)備的合法性.當(dāng)驗(yàn)證成功后,智能合約會(huì)上鏈記錄設(shè)備登錄時(shí)間和互聯(lián)網(wǎng)協(xié)議(IP)地址等信息,設(shè)備與服務(wù)器建立連接之后便可以發(fā)布和訂閱,其中,發(fā)布的主題數(shù)據(jù)由服務(wù)器轉(zhuǎn)發(fā)給其他設(shè)備并存儲(chǔ)到數(shù)據(jù)庫(kù)中,訂閱主題時(shí)服務(wù)器同樣通過(guò)智能合約審核訂閱權(quán)限并上鏈記錄.設(shè)備訪問(wèn)控制流程,如圖4所示.
2.3.3 主題、鏈下數(shù)據(jù)共享 系統(tǒng)共享的數(shù)據(jù)資源主要包括MQTT的主題及數(shù)據(jù)庫(kù)中存儲(chǔ)的加密數(shù)據(jù).主題共享流程圖,如圖5所示.用戶A通過(guò)程序?yàn)槲锫?lián)網(wǎng)設(shè)備添加發(fā)布主題信息并獲取用于訂閱主題的一次性口令,用戶B通過(guò)一次性口令為其設(shè)備添加訂閱主題,當(dāng)設(shè)備訂閱主題時(shí)由智能合約決策設(shè)備的訂閱權(quán)限同時(shí)上鏈記錄,再由MQTT服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù).
數(shù)據(jù)共享流程,如圖6所示.MQTT服務(wù)器將設(shè)備發(fā)布的數(shù)據(jù)寫入數(shù)據(jù)庫(kù),按條數(shù)打包成數(shù)據(jù)塊并
提取SM3雜湊字串,與數(shù)據(jù)地址、時(shí)間范圍等信息一起上傳至區(qū)塊鏈,以雜湊字串為鍵存儲(chǔ)數(shù)據(jù)信息及通信密鑰.用戶A向用戶B提供包含數(shù)據(jù)摘要和通信密鑰等信息的一次性數(shù)據(jù)共享口令來(lái)授權(quán)數(shù)據(jù)的訪問(wèn)權(quán)限,用戶B便可通過(guò)數(shù)據(jù)地址獲取加密數(shù)據(jù),使用數(shù)據(jù)摘要驗(yàn)證數(shù)據(jù)完整性,再通過(guò)對(duì)稱密鑰解密獲取明文數(shù)據(jù).
3 安全性分析和性能測(cè)試
3.1 物聯(lián)網(wǎng)數(shù)據(jù)共享方案對(duì)比
文獻(xiàn)[10]所提方案利用密文屬性策略基加密對(duì)數(shù)據(jù)進(jìn)行加密后,同時(shí)存儲(chǔ)在云平臺(tái)和區(qū)塊鏈中,用戶從云平臺(tái)獲取加密數(shù)據(jù)解密后,對(duì)比區(qū)塊鏈中的數(shù)據(jù),保障其一致性.文獻(xiàn)[12]將物聯(lián)網(wǎng)數(shù)據(jù)統(tǒng)一格式后存儲(chǔ)在區(qū)塊鏈帳本中,采用通道隔離的方式建立多賬本和身份認(rèn)證,實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)管理.區(qū)塊鏈網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)通常會(huì)備份所有賬本數(shù)據(jù),如果將物聯(lián)網(wǎng)系統(tǒng)產(chǎn)生的所有數(shù)據(jù)都存儲(chǔ)在區(qū)塊鏈中,不僅會(huì)給各個(gè)節(jié)點(diǎn)帶來(lái)嚴(yán)重的內(nèi)存壓力,查詢數(shù)據(jù)所帶來(lái)的時(shí)間開(kāi)銷也不利于數(shù)據(jù)的共享,為了提升共享效率、保護(hù)數(shù)據(jù)隱私及消除節(jié)點(diǎn)存儲(chǔ)壓力,采用鏈上鏈下協(xié)同存儲(chǔ),數(shù)據(jù)經(jīng)過(guò)對(duì)稱加密算法加密后,存儲(chǔ)在IPFS中,數(shù)據(jù)摘要和加密數(shù)據(jù)存儲(chǔ)地址等信息存儲(chǔ)在區(qū)塊鏈中,建立鏈上與鏈下數(shù)據(jù)的鏈接,同時(shí)保障數(shù)據(jù)的一致性.文獻(xiàn)[11]提出的方案中,由邊緣服務(wù)器加密物聯(lián)網(wǎng)數(shù)據(jù)后提交至云服務(wù)器中,同時(shí)在區(qū)塊鏈中存儲(chǔ)數(shù)據(jù)摘要,用戶通過(guò)向云服務(wù)器提交訪問(wèn)請(qǐng)求獲取解密后的數(shù)據(jù).文獻(xiàn)[13]將MQTT代理作為中間件,處理物聯(lián)網(wǎng)設(shè)備發(fā)送的請(qǐng)求,執(zhí)行相應(yīng)的合約方法,同時(shí),將物聯(lián)網(wǎng)設(shè)備發(fā)送的加密數(shù)據(jù)存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中,通過(guò)區(qū)塊鏈中存儲(chǔ)的訪問(wèn)控制列表實(shí)現(xiàn)數(shù)據(jù)共享.上述方案都實(shí)現(xiàn)通過(guò)區(qū)塊鏈保障鏈下數(shù)據(jù)的共享安全,但無(wú)法滿足部分物聯(lián)網(wǎng)場(chǎng)景下設(shè)備實(shí)時(shí)共享數(shù)據(jù)的需求,因此,利用MQTT協(xié)議實(shí)時(shí)轉(zhuǎn)發(fā)加密后的物聯(lián)網(wǎng)數(shù)據(jù),并且為保障數(shù)據(jù)的訪問(wèn)安全,設(shè)備和用戶需要通過(guò)身份認(rèn)證才能連接MQTT服務(wù)器和執(zhí)行智能合約,通過(guò)合約實(shí)現(xiàn)訪問(wèn)控制及主題權(quán)限管理.與其他方案相比,文中方案在架構(gòu)設(shè)計(jì)上避免使用區(qū)塊鏈直接存儲(chǔ)或作為平臺(tái)交換物聯(lián)網(wǎng)數(shù)據(jù),而是采用區(qū)塊鏈來(lái)保護(hù)設(shè)備之間通過(guò)MQTT服務(wù)器交換數(shù)據(jù)過(guò)程中的安全性和隱私性,以此來(lái)保障物聯(lián)網(wǎng)數(shù)據(jù)的共享效率,提供細(xì)粒化的數(shù)據(jù)訪問(wèn)控制,與此同時(shí),將設(shè)備行為、數(shù)據(jù)共享記錄及授權(quán)憑證上鏈存儲(chǔ)以便追溯.不同物聯(lián)網(wǎng)數(shù)據(jù)共享方案的對(duì)比,如表2所示.
3.2 安全性分析
在安全方面,將國(guó)密算法SM2,SM3和SM4分別用作對(duì)稱加密、哈希函數(shù)和非對(duì)稱加密,數(shù)據(jù)使用對(duì)稱加密算法加密,非對(duì)稱加密用于設(shè)備身份認(rèn)證及安全地交換對(duì)稱密鑰,鏈下數(shù)據(jù)提取哈希值存儲(chǔ)在區(qū)塊鏈中,以保證數(shù)據(jù)的一致性和完整性.執(zhí)行智能合約需要驗(yàn)證區(qū)塊鏈中的合法身份,MQTT協(xié)議和gRPC協(xié)議傳輸過(guò)程開(kāi)啟TLS提供保密性和數(shù)據(jù)完整性.文中系統(tǒng)的安全特性具體如下.
3.2.1 防篡改 采用Fabric搭建多方共同維護(hù)的許可鏈,節(jié)點(diǎn)需通過(guò)驗(yàn)證登記證書和通信證書接入,大大降低了惡意節(jié)點(diǎn)入侵的風(fēng)險(xiǎn),使用Raft崩潰容錯(cuò)共識(shí)算法實(shí)現(xiàn)分布式賬本的一致性,允許故障節(jié)點(diǎn)數(shù)量在不多于正常節(jié)點(diǎn)的情況下工作.通過(guò)節(jié)點(diǎn)共識(shí)、分布式賬本等技術(shù)保證鏈上數(shù)據(jù)的不可篡改性,采用鏈上鏈下協(xié)同的存儲(chǔ)方法,加密文件存儲(chǔ)在鏈下,少量的文件信息存儲(chǔ)在鏈上,鏈下數(shù)據(jù)通過(guò)鏈上數(shù)據(jù)進(jìn)行檢索;通信過(guò)程中,通過(guò)哈希檢測(cè)保障數(shù)據(jù)完整性和一致性.
3.2.2 機(jī)密性 物聯(lián)網(wǎng)設(shè)備通過(guò)非對(duì)稱密鑰將用于安全通信的對(duì)稱密鑰加密后上傳至區(qū)塊鏈中,只有使用服務(wù)器的私鑰才能解密獲得設(shè)備的對(duì)稱密鑰,設(shè)備之間通過(guò)對(duì)稱密鑰進(jìn)行通信,數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)也是經(jīng)過(guò)對(duì)稱密鑰加密后的密文.在共享主題和加密文件時(shí),用戶需要通過(guò)授權(quán)的一次性口令獲取主題訂閱權(quán)限、數(shù)據(jù)地址及對(duì)稱密鑰,執(zhí)行該操作需要區(qū)塊鏈中的合法證書.
3.2.3 身份驗(yàn)證 用戶在執(zhí)行注冊(cè)、查詢及其他區(qū)塊鏈操作時(shí),通過(guò)gRPC協(xié)議與區(qū)塊鏈節(jié)點(diǎn)通信并驗(yàn)證區(qū)塊鏈用戶證書.物聯(lián)網(wǎng)設(shè)備在連接MQTT服務(wù)器之前,需要用戶進(jìn)行注冊(cè)并在設(shè)備中預(yù)設(shè)登錄憑證,設(shè)備通過(guò)向服務(wù)器提供簽名密文驗(yàn)證設(shè)備連接的合法性.
3.2.4 權(quán)限管理 通過(guò)對(duì)物聯(lián)網(wǎng)設(shè)備訂閱主題的權(quán)限控制,避免越權(quán)訪問(wèn)、發(fā)布惡意內(nèi)容和訂閱主題捕獲數(shù)據(jù)等攻擊;對(duì)用戶執(zhí)行物聯(lián)網(wǎng)設(shè)備信息修改、增加主題和共享數(shù)據(jù)等操作,合約會(huì)檢驗(yàn)其是否為相關(guān)設(shè)備所屬的合法用戶;用戶只能通過(guò)數(shù)據(jù)所屬方提供的一次性共享密鑰來(lái)添加主題的訂閱權(quán)限和獲取鏈下存儲(chǔ)的數(shù)據(jù).
3.2.5 行為追溯 物聯(lián)網(wǎng)設(shè)備連接服務(wù)器、交換密鑰和訂閱主題等操作的信息均會(huì)存儲(chǔ)在區(qū)塊鏈中,數(shù)據(jù)共享和獲取行為也將在區(qū)塊鏈中永久留痕,區(qū)塊鏈中的所有節(jié)點(diǎn)都將存儲(chǔ)行為記錄,使記錄難以被篡改,從而提供可靠的行為追溯.
3.3 性能測(cè)試
為了驗(yàn)證文中方案的可行性,使用Fabric 2.2和Golang語(yǔ)言實(shí)現(xiàn)方案原型,將1臺(tái)2核、4 GB內(nèi)存、80 GB固態(tài)硬盤(SSD),Ubuntu Server 18.04.1 LTS 64 bit操作系統(tǒng)的騰訊云應(yīng)用服務(wù)器作為服務(wù)端;將1臺(tái)Windows 10操作系統(tǒng)的筆記本電腦作為客戶端.測(cè)試環(huán)境中,區(qū)塊鏈?zhǔn)怯?個(gè)組織組成的聯(lián)盟鏈,通過(guò)Docker部署4個(gè)Peer節(jié)點(diǎn)及1個(gè)Order節(jié)點(diǎn),將CouchDB作為存儲(chǔ)方式.
性能測(cè)試主要研究系統(tǒng)處理不同事件的時(shí)延和吞吐量(TXN(事件數(shù))·s-1),物聯(lián)網(wǎng)設(shè)備之間共享數(shù)據(jù)的效率主要取決于MQTT服務(wù)器的性能,測(cè)試中所采用的MQTT服務(wù)器通過(guò)發(fā)布訂閱進(jìn)行數(shù)據(jù)交換的飽和吞吐量達(dá)到70 000 TXN·s-1,MQTT服務(wù)器查詢區(qū)塊鏈數(shù)據(jù)的飽和吞吐量為2 700 TXN·s-1,文獻(xiàn)[12]和文獻(xiàn)[13]的方案分別以Fabric和以太坊作為數(shù)據(jù)的共享平臺(tái),其吞吐量分別為60,0.54 TXN·s-1.
系統(tǒng)中的時(shí)間開(kāi)銷主要用于設(shè)備身份認(rèn)證和密鑰交換,對(duì)MQTT登錄認(rèn)證進(jìn)行測(cè)試,其登錄認(rèn)證時(shí)延,如圖7所示.圖7中:N為并發(fā)數(shù);t為登陸請(qǐng)求響應(yīng)時(shí)延.在20個(gè)并發(fā)請(qǐng)求下,時(shí)延為277 ms,飽和吞吐量可以達(dá)到420 TXN·s-1.
密鑰交換涉及區(qū)塊鏈賬本的查詢、修改及SM2驗(yàn)簽和私鑰解密,是方案中最耗時(shí)的合約方法.交換密鑰時(shí)延,如圖8所示.在20個(gè)并發(fā)數(shù)下,時(shí)延為480 ms,飽和吞吐量為100 TXN·s-1.
4 結(jié)束語(yǔ)
針對(duì)物聯(lián)網(wǎng)數(shù)據(jù)共享過(guò)程中存在的安全漏洞、隱私泄露風(fēng)險(xiǎn)及共享靈活性不足等問(wèn)題,提出一種采用區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享方案.利用鏈上鏈下協(xié)同的方式存儲(chǔ)和共享數(shù)據(jù),將MQTT作為物聯(lián)網(wǎng)設(shè)備之間的通信協(xié)議和系統(tǒng)中間件,實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備交換數(shù)據(jù)時(shí),無(wú)需互相連接或同時(shí)在線,只需要連接同一個(gè)利用智能合約進(jìn)行身份認(rèn)證的可信MQTT消息代理,從而保障數(shù)據(jù)共享過(guò)程的安全性.采用智能合約實(shí)現(xiàn)設(shè)備主題管理和鏈下數(shù)據(jù)共享,并記錄設(shè)備的連接、離線及訂閱等歷史操作以便追溯,通過(guò)加密算法保障共享數(shù)據(jù)過(guò)程中的一致性和隱私性.在下一步研究中,將對(duì)物聯(lián)網(wǎng)設(shè)備的訪問(wèn)控制和資源管理的細(xì)?;M(jìn)行研究,在保證安全性和有效性的前提下,進(jìn)一步提高數(shù)據(jù)的共享效率.
參考文獻(xiàn):
[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]楊業(yè)平,林德威,黃芳芳,等.基于區(qū)塊鏈的物聯(lián)網(wǎng)安全數(shù)據(jù)共享系統(tǒng)[J].福州大學(xué)學(xué)報(bào)(自然科學(xué)版),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]于金剛,張弘,李姝,等.基于區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享模型[J].小型微型計(jì)算機(jī)系統(tǒng),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]梁秀波,吳俊涵,趙昱,等.區(qū)塊鏈數(shù)據(jù)安全管理和隱私保護(hù)技術(shù)研究綜述[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),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.
(責(zé)任編輯:" 黃曉楠 英文審校: 吳逢鐵)
收稿日期: 2022-04-26
通信作者: 李國(guó)剛(1973-),男,副教授,博士,主要從事嵌入式系統(tǒng)設(shè)計(jì)、信息安全研究與實(shí)現(xiàn)、區(qū)塊鏈、物聯(lián)網(wǎng)應(yīng)用的研究.E-mail:lgg@hqu.edu.cn.
基金項(xiàng)目: 國(guó)家自然科學(xué)基金資助項(xiàng)目(61370007)