馮云霞,王西賢
(青島科技大學(xué) 信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)
隨著各種技術(shù)的發(fā)展,大數(shù)據(jù)、云計(jì)算以及物聯(lián)網(wǎng)(Internet of Things,IoT)等創(chuàng)新理念的興起,也隨即將現(xiàn)代產(chǎn)業(yè)提升到一個(gè)新的高度[1]。在此情況下,工廠借助傳統(tǒng)工業(yè)平臺(tái)和新型的技術(shù),進(jìn)行深度的融合與集成,強(qiáng)化在工業(yè)終端方面的互聯(lián)互通,打造工業(yè)領(lǐng)域的物聯(lián)網(wǎng),實(shí)現(xiàn)泛在感知條件下的智能化制造,最大化地提升行業(yè)生產(chǎn)效率,這就是工業(yè)物聯(lián)網(wǎng)(Industrial Internet of Things,IIoT)。通過工業(yè)物聯(lián)網(wǎng),工廠中不同類型的工業(yè)設(shè)備實(shí)現(xiàn)集群交互,打破了數(shù)據(jù)孤島,使得數(shù)據(jù)不再是獨(dú)立的。通過數(shù)據(jù)之間的碰撞與融合,推動(dòng)制造過程的智能化、網(wǎng)絡(luò)化轉(zhuǎn)型升級[2]。
通過工業(yè)物聯(lián)網(wǎng),工業(yè)已進(jìn)入蓬勃發(fā)展時(shí)期。然而,隨著節(jié)點(diǎn)數(shù)量和網(wǎng)絡(luò)規(guī)模的增加,傳統(tǒng)的云服務(wù)平臺(tái)下的工業(yè)物聯(lián)網(wǎng)已經(jīng)不能為如此龐大的系統(tǒng)提供有效的支持。一方面,在平臺(tái)上共享數(shù)據(jù)將消耗大量帶寬資源,導(dǎo)致數(shù)據(jù)共享成本增加。另一方面,平臺(tái)上的數(shù)據(jù)在傳輸工程中也很容易被泄露,由于工業(yè)數(shù)據(jù)的高敏感性,數(shù)據(jù)泄露的后果極其嚴(yán)重。此外還會(huì)看到,共享數(shù)據(jù)應(yīng)是易于驗(yàn)證的,以防止重要數(shù)據(jù)被篡改,這是傳統(tǒng)的云服務(wù)平臺(tái)無法保證的。
因此,研究擬在工業(yè)物聯(lián)網(wǎng)中引入了區(qū)塊鏈架構(gòu),這是一種新興的分布式網(wǎng)絡(luò)構(gòu)建方案,以重塑傳統(tǒng)的云平臺(tái)工業(yè)物聯(lián)網(wǎng)架構(gòu)。區(qū)塊鏈技術(shù)是比特幣的底層技術(shù)之一,會(huì)生成多個(gè)相鏈接的數(shù)據(jù)塊,其中每個(gè)里面都包含重要信息,以驗(yàn)證其有效性,并生成下一個(gè)數(shù)據(jù)塊。區(qū)塊鏈作為一個(gè)分布式數(shù)據(jù)庫,具有不可篡改、隱私保護(hù)和去中心化等特點(diǎn)[3],有助于建立安全的數(shù)據(jù)共享機(jī)制,區(qū)塊鏈具有實(shí)現(xiàn)工業(yè)物聯(lián)網(wǎng)產(chǎn)生的工業(yè)大數(shù)據(jù)安全數(shù)據(jù)共享的潛力。
本文提出了一個(gè)基于橢圓曲線加密算法的工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)隱私保護(hù)方案,該方案基于以太網(wǎng)聯(lián)盟鏈的數(shù)據(jù)共享框架,通過智能合約對用戶進(jìn)行管理以及業(yè)務(wù)邏輯的監(jiān)督,并通過區(qū)塊鏈網(wǎng)絡(luò)為數(shù)據(jù)共享做準(zhǔn)備。為了確保數(shù)據(jù)在鏈上傳輸?shù)陌踩?,采用傳統(tǒng)的數(shù)據(jù)的隱私保護(hù)方法來加密數(shù)據(jù),利用一次性橢圓曲線加密算法對數(shù)據(jù)進(jìn)行加密,從而切實(shí)保障了數(shù)據(jù)傳輸中的數(shù)據(jù)隱私。
數(shù)據(jù)作為工業(yè)互聯(lián)網(wǎng)的核心要素,從最開始的終端收集到存儲(chǔ)以及后續(xù)的數(shù)據(jù)流轉(zhuǎn)都面臨著風(fēng)險(xiǎn),尤其是在傳輸?shù)倪^程中,保證數(shù)據(jù)不致泄露、被篡改是至關(guān)重要的。目前,陸續(xù)提出了多種關(guān)于在區(qū)塊鏈架構(gòu)下數(shù)據(jù)傳輸過程中保障數(shù)據(jù)隱私安全的技術(shù)方案。
區(qū)塊鏈作為一種新興的技術(shù),將密碼學(xué)、共識(shí)機(jī)制、分布式存儲(chǔ)融合在一起,是一種不可更改、不可偽造的分布式數(shù)據(jù)庫,有著去中心化、防篡改、可溯源等工業(yè)物聯(lián)網(wǎng)安全所需要的特點(diǎn)[4]。在加密貨幣零幣[5]中,使用傳統(tǒng)的加密方式來對交易內(nèi)容進(jìn)行隱藏,在不泄露任何交易內(nèi)容的前提下,只有發(fā)送方和接收方獲知交易金額,其它任何人無法得知具體的交易面額。Linder[6]提出了一套數(shù)據(jù)解密密鑰管理系統(tǒng),采用加密的智能合約,通過公私鑰方式保護(hù)公共隱私文件。Gai 等人[7]提出了一種將物聯(lián)網(wǎng)與邊緣計(jì)算和區(qū)塊鏈相結(jié)合的新方法,即基于區(qū)塊鏈的邊緣互聯(lián)網(wǎng)(BIoE)模型。充分利用邊緣計(jì)算、差分隱私保護(hù)和區(qū)塊鏈的優(yōu)勢建立隱私保護(hù)機(jī)制,提出的模型以節(jié)能的方式在不降低性能的情況下提高了隱私保護(hù)。Prajapati 等人[8]提出了生成多個(gè)密鑰的關(guān)鍵塊鏈接方法,生產(chǎn)密鑰塊用于單個(gè)明文塊的加密。Hammi 等人[9]擴(kuò)展了一次性密碼(One Time Password,OTP)的概念,并用其來生成一個(gè)新的密鑰,用于物聯(lián)網(wǎng)設(shè)備和服務(wù)器之間的每次交換,提出了一種基于橢圓曲線密碼(Elliptic Curve Cryptography,ECC)的OTP 生成方法,以確保物聯(lián)網(wǎng)的安全性。
在前文研究論述基礎(chǔ)上,本文提出了一種適用于區(qū)塊鏈架構(gòu)下工業(yè)物聯(lián)網(wǎng)中的節(jié)點(diǎn)數(shù)據(jù)隱私保護(hù)方案。首先指出區(qū)塊鏈架構(gòu)下工業(yè)物聯(lián)網(wǎng)中節(jié)點(diǎn)數(shù)據(jù)的交換方式,根據(jù)實(shí)際情況,利用傳統(tǒng)的數(shù)據(jù)隱私保護(hù)方法、即數(shù)據(jù)加密來保護(hù)數(shù)據(jù)隱私安全,然后根據(jù)工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)量大、數(shù)據(jù)操作頻繁等特點(diǎn),采用一次性密碼生成加密密鑰對數(shù)據(jù)進(jìn)行加密,并結(jié)合區(qū)塊鏈特點(diǎn),構(gòu)建區(qū)塊鏈架構(gòu)下適用于工業(yè)物聯(lián)網(wǎng)的節(jié)點(diǎn)數(shù)據(jù)隱私保護(hù)方案。最后給出方案設(shè)計(jì)及安全性分析。
對于工業(yè)物聯(lián)網(wǎng)中的節(jié)點(diǎn)數(shù)據(jù)隱私保護(hù)方案需要解決以下3 個(gè)問題。一是節(jié)點(diǎn)之間的身份確認(rèn),二是節(jié)點(diǎn)數(shù)據(jù)的保護(hù),三是節(jié)點(diǎn)數(shù)據(jù)的完整性驗(yàn)證。對此可做闡釋論述如下。
(1)對于節(jié)點(diǎn)之間的身份確認(rèn)問題。區(qū)塊鏈作為一個(gè)去中心化的平臺(tái)可以通過智能合約得到解決。在聯(lián)盟鏈的架構(gòu)下,用戶想要加入鏈內(nèi)、訪問信息,需要經(jīng)過聯(lián)盟鏈中管理員的許可,這樣就在一定程度上確保了節(jié)點(diǎn)的身份。
(2)對于數(shù)據(jù)保護(hù)問題。常用的加密技術(shù)有2種,即對稱加密算法和非對稱加密算法[10]。在對稱加密算法中,由于對明文的加密和密文解密使用相同的密鑰,因此要保證密鑰傳輸?shù)陌踩_保密鑰不被泄露。而在非對稱加密算法中,采用公鑰加密、私鑰解密的方式,公鑰公開、私鑰保密,無需像對稱加密一樣保證密鑰安全傳輸。在這種情況下,加密和解密使用的密鑰并不相同,在數(shù)據(jù)傳輸環(huán)境不太信任的情況下具有較大的安全優(yōu)勢,與對稱加密相比,非對稱加密可以較好地保證私鑰的安全,確保數(shù)據(jù)不被泄露。
但是,一直使用相同的密鑰可能會(huì)導(dǎo)致嚴(yán)重的安全問題。為了應(yīng)對這一安全風(fēng)險(xiǎn),本文再次將OTP 的概念拓展開來。在每次進(jìn)行數(shù)據(jù)傳輸前由數(shù)據(jù)接收者生成一個(gè)新的密鑰,發(fā)送給數(shù)據(jù)發(fā)送者,讓數(shù)據(jù)發(fā)送者用于本次兩者之間的數(shù)據(jù)傳輸。
(3)對于數(shù)據(jù)的完整性驗(yàn)證。安全哈希算法是一種迭代的、單向的哈希函數(shù),可以將消息通過處理生成稱為消息摘要的一種壓縮算法[11]。這種算法可以確定消息的完整性,并且對消息的任何更改都將極有可能生成不同的消息摘要。
安全哈希算法有很多種,輸出的結(jié)果稱為消息摘要。消息摘要的長度從160~512 位不等,具體取決于所采用的算法。安全哈希算法通常與其他加密算法一起使用,例如數(shù)字簽名算法和鍵控哈希消息驗(yàn)證碼,或者在隨機(jī)數(shù)的生成中使用。哈希算法之所以被稱為安全算法,是因?yàn)閷τ诮o定的算法來說,在計(jì)算上是不可行的:
(1)找到與給定消息摘要相對應(yīng)的消息。
(2)找到產(chǎn)生相同消息摘要的2 個(gè)不同消息。
對消息的任何更改都極有可能產(chǎn)生不同的消息摘要。其中,SHA-256 算法由于在散列或消息摘要大小期間使用的塊和數(shù)據(jù)字的大小方面有著強(qiáng)大優(yōu)勢,因此采用SHA-256 算法。
在本方案中,數(shù)據(jù)發(fā)送者與數(shù)據(jù)接收者均屬于聯(lián)盟鏈成員,數(shù)據(jù)接收者向數(shù)據(jù)發(fā)送者共享一個(gè)一次性密碼的公鑰,數(shù)據(jù)發(fā)送者收到后對數(shù)據(jù)加密得到密文和摘要,再將摘要發(fā)送給數(shù)據(jù)接收者。這樣就完成了一次安全的數(shù)據(jù)共享。
該方案可以分為4 個(gè)主要階段,依次為:一次性密鑰生成、密鑰獲取及數(shù)據(jù)加密、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收與驗(yàn)證,整個(gè)數(shù)據(jù)隱私方案的設(shè)計(jì)流程如圖1 所示。數(shù)據(jù)從數(shù)據(jù)發(fā)送者到數(shù)據(jù)接收者之間的轉(zhuǎn)移流程擬展開研究分述如下。
圖1 數(shù)據(jù)隱私方案流程圖Fig. 1 Flow chart of data privacy scheme
(1)一次性密鑰生成階段:數(shù)據(jù)接收者在本地生成一個(gè)一次性的公私鑰對,該公私鑰對由橢圓曲線加密算法生成。橢圓曲線加密算法相比于RSA和DSA 算法速度更快,存儲(chǔ)空間占用小,帶寬要求低,安全性高。通過這樣一個(gè)一次性的公私鑰對可以有效提高數(shù)據(jù)的安全性。公鑰可以直接通過智能合約發(fā)送給數(shù)據(jù)發(fā)送者,無需做過多的防護(hù)。
(2)密鑰獲取及數(shù)據(jù)加密階段:數(shù)據(jù)發(fā)送者在接收到公鑰后對需要發(fā)送的數(shù)據(jù)進(jìn)行加密得到密文;再將原始數(shù)據(jù)進(jìn)行哈希計(jì)算得到一個(gè)摘要。
(3)數(shù)據(jù)發(fā)送階段:將(2)中所得的密文和摘要發(fā)送給數(shù)據(jù)接收者。
(4)數(shù)據(jù)接收與驗(yàn)證階段:數(shù)據(jù)接收者在收到密文和摘要后,先用私鑰對密文進(jìn)行解密,得到明文,再將明文進(jìn)行哈希計(jì)算得到摘要與收到的摘要做對比,若相等,則證明數(shù)據(jù)完整,安全可信。
根據(jù)上文的描述可以得知,數(shù)據(jù)隱私方案主要包含4 個(gè)算法。算法中,secp256k1 曲線的參數(shù)如下:E代表橢圓曲線secp256k1,其有限域?yàn)镕(p)。G是曲線E的循環(huán)子群,生成元是P,其階是n。這里可給出重點(diǎn)論述如下。
(1)一次性密鑰生成算法:數(shù)據(jù)接收者在本地生成一個(gè)一次性的公私鑰對,該公私鑰對由secp256k1 曲線生成。在給定的曲線secp256k1 上,隨機(jī)輸入一個(gè)合法私鑰d,d∈[1,n -1],此時(shí)將輸出:
(2)橢圓曲線加密算法:數(shù)據(jù)發(fā)送者在接收到公鑰K后對需要發(fā)送的數(shù)據(jù)M進(jìn)行加密得到密文C;選取隨機(jī)數(shù)r,r∈[1,n -1],具體可經(jīng)由如下公式進(jìn)行計(jì)算:
則密文C就是(c1,c2) 。
(3)橢圓曲線解密算法:數(shù)據(jù)接收者在收到密文(c1,c2) 后,用私鑰對密文進(jìn)行解密,得到明文,推得的公式可寫為:
(4)SHA-256 安全哈希函數(shù)算法:數(shù)據(jù)發(fā)送者對需要發(fā)送的數(shù)據(jù)進(jìn)行哈希計(jì)算;數(shù)據(jù)接收者對解密后的明文也要進(jìn)行哈希計(jì)算。將數(shù)據(jù)輸入后,經(jīng)過預(yù)處理和哈希計(jì)算兩個(gè)階段后輸出256 位的消息摘要。
該方案的實(shí)現(xiàn)需要通過智能合約來對業(yè)務(wù)邏輯進(jìn)行管理。數(shù)據(jù)接收者將公鑰上傳的同時(shí)要包含數(shù)據(jù)發(fā)送者的地址,這樣數(shù)據(jù)發(fā)送者便能根據(jù)數(shù)據(jù)發(fā)送者自己的地址查詢到加密公鑰;同理,數(shù)據(jù)發(fā)送者在上傳數(shù)據(jù)的時(shí)候也要加上數(shù)據(jù)接收者的地址,以便數(shù)據(jù)接收者根據(jù)自己的地址和加密公鑰查詢到數(shù)據(jù)。這都需要智能合約進(jìn)行管理。
合約的目的是管理數(shù)據(jù)共享者與數(shù)據(jù)接收者,該合約針對不同的主體:數(shù)據(jù)發(fā)送者和數(shù)據(jù)接收者,各有2 個(gè)功能函數(shù),具體見表1。
表1 數(shù)據(jù)分享合約中函數(shù)功能說明表Tab.1 Functions description table in the data sharing contract
其中,addpk,getdatapack是數(shù)據(jù)接收者所調(diào)用的函數(shù);addatapack,getpk則是數(shù)據(jù)發(fā)送者所調(diào)用的函數(shù)。數(shù)據(jù)發(fā)送者和數(shù)據(jù)接收者指的是在一次數(shù)據(jù)分享中的2 個(gè)用戶之間,而并不是一個(gè)用戶只能是數(shù)據(jù)接收者或只能是數(shù)據(jù)發(fā)送者,二者并不是一成不變的。
本文的實(shí)驗(yàn)環(huán)境如下:在Windows 10 的操作系統(tǒng)下,在Ubuntu 虛擬機(jī)中使用FISCO BCOS 企業(yè)級金融聯(lián)盟鏈底層平臺(tái)和微眾銀行開源的自研區(qū)塊鏈中間件平臺(tái)WeBASE 平臺(tái),在本地搭建起一個(gè)聯(lián)盟鏈,通過solidity 語言來編寫智能合約,進(jìn)行仿真實(shí)驗(yàn),驗(yàn)證方案的可行性。在實(shí)驗(yàn)中將模擬數(shù)據(jù)接收者從生成一次性密鑰直至接收到密文的哈希驗(yàn)證階段,并在最后給出了方案的安全性分析。
將本地聯(lián)盟鏈啟動(dòng),啟動(dòng)多個(gè)節(jié)點(diǎn)做好準(zhǔn)備工作,再將數(shù)據(jù)隱私保護(hù)方案所需智能合約進(jìn)行上鏈部署,并進(jìn)行數(shù)據(jù)分享。在數(shù)據(jù)接收者上傳了公鑰、數(shù)據(jù)發(fā)送者接收了公鑰、并上傳數(shù)據(jù)后,進(jìn)行查詢。對預(yù)期結(jié)果和實(shí)驗(yàn)結(jié)果分別做出解析概述如下。
(1)預(yù)期結(jié)果:根據(jù)加密公鑰和數(shù)據(jù)接收者地址信息查詢到數(shù)據(jù)。
(2)實(shí)驗(yàn)結(jié)果:返回?cái)?shù)據(jù)發(fā)送者上傳的數(shù)據(jù)。如圖2 所示。圖2 中顯示的是查詢結(jié)果。根據(jù)圖2中的交易回執(zhí),message:“Success”說明合約正常執(zhí)行,通過查詢,返回一個(gè)output,可以獲得一個(gè)密文及一個(gè)摘要。其中,content 為加密后的明文,zhaiyao則是明文通過哈希計(jì)算的值。
圖2 數(shù)據(jù)查詢回執(zhí)Fig. 2 Data query receipt
下一步進(jìn)行密文解密,輸入加密公鑰和與之對應(yīng)的私鑰、以及密文,對數(shù)據(jù)進(jìn)行解密。對得到的明文進(jìn)行哈希計(jì)算,得到摘要,與收到的zhaiyao 相對比。對預(yù)期結(jié)果和得到的實(shí)驗(yàn)結(jié)果將分別給出評析綜述如下。
(1)預(yù)期結(jié)果:密文解密后得到明文,對明文的哈希計(jì)算結(jié)果與收到的zhaiyao 相同。
(2)實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)結(jié)果如圖3、圖4 所示。哈希值對比詳見表2。
圖3 密文解密Fig. 3 Decryption of ciphertext
圖4 明文的哈希計(jì)算結(jié)果Fig. 4 Hash calculation result of plaintext
表2 哈希值對比Tab.2 Hash value comparison
通過表2 可以發(fā)現(xiàn),在對解密后明文進(jìn)行哈希計(jì)算后所得結(jié)果值與收到的摘要相等,說明數(shù)據(jù)從數(shù)據(jù)發(fā)送者到數(shù)據(jù)接收者是一樣的,數(shù)據(jù)是完整的。
假設(shè)其他節(jié)點(diǎn)從數(shù)據(jù)發(fā)送者到數(shù)據(jù)接收者之間的通信中收集到加密公鑰P和密文C,然后試圖從密文C中獲得消息M。但是要想解密密文C必須要知道私鑰d,P =d*G,這種攻擊是不可能的,因?yàn)楣粽咝枰鎸E圓曲線離散對數(shù)的困難。因此,第三方攻擊并不適用于所提議的方案。
其他節(jié)點(diǎn)雖然在知道公鑰和數(shù)據(jù)接收者地址的情況下也可獲得密文,但因?yàn)椴恢浪借€將無法解密密文,就不能得知數(shù)據(jù),防止了數(shù)據(jù)的泄露。
通過對工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)的隱私保護(hù)可以有效提高工業(yè)物聯(lián)網(wǎng)的安全,加快工業(yè)物聯(lián)網(wǎng)的發(fā)展,但該方案還是有著較大的局限性,只能用于保護(hù)數(shù)據(jù)的隱私,對于數(shù)據(jù)傳輸?shù)膬煞經(jīng)]有進(jìn)行保護(hù),這在某些情況下也是不安全的。下一步的工作是繼續(xù)深入研究,在確保數(shù)據(jù)隱私安全的情況下保護(hù)用戶身份的隱私。