汪 剛
(湖北開放大學(xué),武漢 430074)
物聯(lián)網(wǎng)(IoT)系統(tǒng)已廣泛應(yīng)用于智能農(nóng)業(yè),可以有效提高農(nóng)業(yè)生產(chǎn)效率、降低生產(chǎn)成本,主要包括無線傳感器、轉(zhuǎn)換網(wǎng)絡(luò)、數(shù)據(jù)庫和自動控制技術(shù),以支持實時監(jiān)控和決策。工作時,其通過不同位置的傳感器以及其他類型的智能設(shè)備將實時數(shù)據(jù)發(fā)送回系統(tǒng),然后分析數(shù)據(jù)并做出決策。在整個過程中,數(shù)據(jù)的準(zhǔn)確性和安全性對于農(nóng)業(yè)決策十分重要[1-4]。因此,保證農(nóng)業(yè)生產(chǎn)中的真實數(shù)據(jù)是發(fā)展智慧農(nóng)業(yè)的基礎(chǔ)。
隨著越來越多的設(shè)備與系統(tǒng)連接,系統(tǒng)被攻擊的風(fēng)險逐步提升[5]。例如,物聯(lián)網(wǎng)中的數(shù)據(jù)交換和存儲面臨巨大風(fēng)險,黑客、偽造的數(shù)據(jù)生成器或故障設(shè)備會篡改和破壞捕獲的數(shù)據(jù)。在醫(yī)療保健物聯(lián)網(wǎng)應(yīng)用中,被篡改的傳感器可能會暴露私人數(shù)據(jù)或提供錯誤的心率測量值,從而導(dǎo)致處方錯誤;在智能交通系統(tǒng)(ITS)中,如果紅綠燈控制系統(tǒng)被入侵,會導(dǎo)致交通安全事故的發(fā)生;在農(nóng)業(yè)生產(chǎn)中,安全問題會進(jìn)一步導(dǎo)致農(nóng)業(yè)生產(chǎn)機(jī)密泄露,由于數(shù)據(jù)安全性控制不當(dāng)對種植作物造成一定的影響及經(jīng)濟(jì)損失[6-10],如收集溫室的實時數(shù)據(jù)用于決策,篡改數(shù)據(jù)會導(dǎo)致灌溉時間和灌水量計算錯誤,農(nóng)戶收到錯誤決策后不能及時、高效地進(jìn)行農(nóng)作物管理,影響農(nóng)作物的生長,限制了作物產(chǎn)量的提升,甚至還會造成嚴(yán)重的經(jīng)濟(jì)損失[11-13]。傳統(tǒng)的存儲方式已無法滿足農(nóng)業(yè)物聯(lián)網(wǎng)的發(fā)展需要,目前物聯(lián)網(wǎng)數(shù)據(jù)存儲和計算的主流技術(shù)都是基于云計算的。云服務(wù)提供商在自己的服務(wù)器上處理數(shù)據(jù),為用戶提供更方便、更安全的數(shù)據(jù)存儲方式;但是,當(dāng)中央服務(wù)器宕機(jī)或發(fā)生其他錯誤,數(shù)據(jù)將無法訪問與追蹤,且存在很大的被篡改風(fēng)險[13-15]。
區(qū)塊鏈技術(shù)是基于現(xiàn)代密碼學(xué)、分布式一致性協(xié)議、點(diǎn)對點(diǎn)網(wǎng)絡(luò)通信技術(shù)和智能合約編程語言的多方參與者之間的數(shù)據(jù)交換、處理和存儲技術(shù)的組合[16-19]。
針對以上問題,設(shè)計了一種基于IPFS存儲的雙區(qū)塊鏈解決方案,用于物聯(lián)網(wǎng)網(wǎng)絡(luò)中的農(nóng)業(yè)采樣數(shù)據(jù)安全性的保護(hù)。系統(tǒng)可以通過預(yù)言機(jī)機(jī)制檢索完整的數(shù)據(jù)段,使用私有云區(qū)塊鏈技術(shù)從物聯(lián)網(wǎng)設(shè)備中提取信息,并將提取的記錄存儲到區(qū)塊鏈中,以保持位于不同地點(diǎn)的各種用戶之間的透明度,并對系統(tǒng)進(jìn)行測試,研究結(jié)果可為提高農(nóng)業(yè)物聯(lián)網(wǎng)數(shù)據(jù)安全提供技術(shù)參考與借鑒。
目前,農(nóng)業(yè)物聯(lián)網(wǎng)應(yīng)用的區(qū)塊鏈解決方案主要基于以太坊等公鏈或超級賬本等聯(lián)盟鏈[20-22]。公有鏈的每秒交易數(shù)(TPS)通常在10~18tps,無法支持系統(tǒng)實時計算。針對以上問題,本研究以太坊等公鏈支持?jǐn)?shù)據(jù)及時上傳和下載的能力不足且數(shù)據(jù)安全可能成為問題,農(nóng)業(yè)網(wǎng)絡(luò)數(shù)據(jù)仍然存在被篡改的風(fēng)險,故將公鏈、聯(lián)盟鏈和文件存儲的技術(shù)結(jié)合起來,提出了農(nóng)業(yè)物聯(lián)網(wǎng)數(shù)據(jù)安全的雙鏈解決方案。
區(qū)塊鏈?zhǔn)且环N新的分布式基礎(chǔ)設(shè)施,結(jié)合了散列算法、默克爾樹、工作量證明(PoW)以及數(shù)字簽名、公鑰、零知識證明等密碼技術(shù),可為用戶提供分布式賬本,數(shù)據(jù)可以在其上自治驗證、共享、計算和存儲在網(wǎng)絡(luò)中,為傳統(tǒng)的物聯(lián)網(wǎng)系統(tǒng)提供分布式數(shù)據(jù)共享和存儲。數(shù)據(jù)將不再只是在本地服務(wù)器或數(shù)據(jù)庫上,而是在網(wǎng)絡(luò)上廣播,任何對廣播數(shù)據(jù)感興趣的節(jié)點(diǎn)(服務(wù)器、PC等)都可以下載數(shù)據(jù)并將其記錄到自己的數(shù)據(jù)庫中;當(dāng)數(shù)據(jù)在源頭被篡改或破壞,其它節(jié)點(diǎn)可以在別處檢索未更改的數(shù)據(jù)。
本研究將系統(tǒng)部署在兩個區(qū)塊鏈上:以太坊是一個開放的公共區(qū)塊鏈平臺,為用戶提供智能合約機(jī)制,智能合約由基于密碼學(xué)的去中心化以太坊虛擬機(jī)處理;另一方面,系統(tǒng)由跨鏈技術(shù)Polkadot保護(hù),支持鏈間數(shù)據(jù)交換隱私,減少系統(tǒng)冗余。
在實際生產(chǎn)中,區(qū)塊鏈的應(yīng)用將增加物聯(lián)網(wǎng)設(shè)備的計算負(fù)載,因為系統(tǒng)將調(diào)用區(qū)塊鏈應(yīng)用程序接口(API)對文檔進(jìn)行散列處理,API調(diào)用幾乎不會消耗額外的系統(tǒng)資源,且單次上傳農(nóng)業(yè)物聯(lián)網(wǎng)數(shù)據(jù)的散列成本也相對較低。
系統(tǒng)整體結(jié)構(gòu)設(shè)計如圖1所示。該系統(tǒng)具有3個網(wǎng)絡(luò)層,主要包括數(shù)據(jù)處理的不同階段:第1個網(wǎng)絡(luò)建立在IPFS之上,采樣數(shù)據(jù)被遠(yuǎn)程傳感器發(fā)回后,會被立即存儲在IPFS網(wǎng)絡(luò)中,同時生成IPFS內(nèi)容的散列結(jié)果;然后,將IPFS散列值上傳到第二層的ASDC鏈,在ASDC鏈中每個塊將存儲多個IPFS散列值,且每個塊也將計算一個ASDC鏈散列結(jié)果,通過這種方式ASDC鏈將處理更少的數(shù)據(jù)并且易于維護(hù);最后,ASDC鏈將區(qū)塊散列上傳到以太坊進(jìn)行備份和公開查詢。通過雙區(qū)塊鏈機(jī)制,系統(tǒng)使用兩個散列函數(shù)和以太坊保護(hù)實時采樣數(shù)據(jù),可以在以太坊和IPFS上追蹤數(shù)據(jù),從而提高了數(shù)據(jù)的安全性,避免數(shù)據(jù)受惡意篡改。

圖1 系統(tǒng)結(jié)構(gòu)設(shè)計示意圖Fig.1 System structure design schematic
在設(shè)計的系統(tǒng)中,有兩條區(qū)塊鏈涉及數(shù)據(jù)散列值和散列值索引的存儲和傳輸,以及用于數(shù)據(jù)存儲和格式化的IPFS網(wǎng)絡(luò):主鏈?zhǔn)且蕴?它提供基于內(nèi)容的公共搜索;另一條鏈名為農(nóng)業(yè)樣本數(shù)據(jù)區(qū)塊鏈(ASDC),可以為每個類別的采樣數(shù)據(jù)創(chuàng)建一個帳戶,以塊的形式相應(yīng)地存儲數(shù)據(jù),并將IPFS網(wǎng)絡(luò)引入系統(tǒng)中,負(fù)責(zé)原始數(shù)據(jù)的傳輸、存儲和散列值生成。
進(jìn)行農(nóng)業(yè)數(shù)據(jù)交換時,傳感器將數(shù)據(jù)上傳到 IPFS,同時對上傳的數(shù)據(jù)進(jìn)行散列運(yùn)算,將得到的散列指傳給ASDC,并將數(shù)據(jù)散列存儲在每個農(nóng)產(chǎn)品對應(yīng)的賬戶域中(賬戶存儲域在Object tree中),ASDC將區(qū)塊散列發(fā)送到以太坊并保存在以太坊中,以確保ASDC的安全性。系統(tǒng)工作流程圖如圖2所示。Inter Planetary File System (IPFS)是系統(tǒng)的第1層,適用于分布式數(shù)據(jù)存儲,如農(nóng)業(yè)數(shù)據(jù)網(wǎng)絡(luò)系統(tǒng)由位于不同位置和遠(yuǎn)程位置的傳感器、圖像采集器、路由器、服務(wù)器和其他計算設(shè)備組成。收到原始數(shù)據(jù)后,IPFS將它們轉(zhuǎn)換為json格式并存儲數(shù)據(jù),網(wǎng)絡(luò)中的任何用戶都可以通過其內(nèi)容地址來提供文件。

圖2 系統(tǒng)工作流程圖Fig.2 System workflow diagram
數(shù)據(jù)上傳處理流程如圖3所示。傳感器網(wǎng)絡(luò)將實時采樣數(shù)據(jù)傳輸?shù)絀PFS網(wǎng)絡(luò)和 ASDC,智能合約協(xié)議將數(shù)據(jù)寫入ASDC所需的格式; ASDC 將數(shù)據(jù)存儲在塊中后,生成塊散列并上傳到以太坊。數(shù)據(jù)下載流程圖如圖4所示。工作時,公共用戶向ASDC發(fā)起查詢,ASDC向IPFS發(fā)送下載請求,IPFS將原始數(shù)據(jù)發(fā)送給用戶。

圖3 數(shù)據(jù)上傳流程示意圖Fig.3 Schematic diagram of data upload process

圖4 數(shù)據(jù)下載流程示意圖Fig.4 Schematic diagram of data download process
與傳統(tǒng)的物聯(lián)網(wǎng)或僅公鏈或聯(lián)盟鏈技術(shù)相比,系統(tǒng)更加安全。傳統(tǒng)物聯(lián)網(wǎng)的云服務(wù)器被黑客入侵,所有數(shù)據(jù)都會暴露;另一方面,聯(lián)盟鏈并不是完全去中心化的,中心節(jié)點(diǎn)上的惡意行為會導(dǎo)致網(wǎng)絡(luò)混亂,同時面臨著女巫攻擊、雙花攻擊等高風(fēng)險。本研究基于雙鏈結(jié)構(gòu)、IPFS存儲網(wǎng)絡(luò)、Polkadot和以太坊技術(shù)共同構(gòu)建了一個更加安全的農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)。與傳統(tǒng)系統(tǒng)相比主要區(qū)別如下:
1)IPFS 擁有分布式持久化文件存儲和共享傳輸協(xié)議,還可以在上傳到ASDC鏈之前對基于內(nèi)容的數(shù)據(jù)進(jìn)行加密,可以保證數(shù)據(jù)的私密的、完整性、不可篡改性。
2)以太坊有成熟的生態(tài)系統(tǒng),并得到了廣泛的應(yīng)用,但以太坊的系統(tǒng)性能和吞吐量相對較低,通常吞吐量在10~18tps之間,會導(dǎo)致無法容忍的時間延。
3)本研究為農(nóng)業(yè)采樣數(shù)據(jù)設(shè)計的區(qū)塊鏈ASDC使用區(qū)塊鏈來存儲IPFS文件的散列值, ASDC 生成對應(yīng)的賬戶(類似于以太坊賬戶樹),將采樣數(shù)據(jù)及其與數(shù)據(jù)相關(guān)的散列信息作為內(nèi)容散列存儲在帳戶樹的數(shù)據(jù)字段中。同時,ASDC 的區(qū)塊散列值上傳并存儲在以太坊上,以便 ASDC能夠及時發(fā)現(xiàn)并阻止數(shù)據(jù)被修改的分叉攻擊。
4)Polkadot跨鏈技術(shù)可以保證ASDC鏈與以太坊之間信息傳輸?shù)陌踩?防止信息被偽造。
5)以太坊有很多節(jié)點(diǎn)和大量的維護(hù)者,修改ASDC上的數(shù)據(jù)需要強(qiáng)制分叉ASDC并更改存儲在以太坊上的區(qū)塊散列值,這將給攻擊者帶來巨大的運(yùn)行成本。
與其它常見的系統(tǒng)的相比,本研究設(shè)計的雙區(qū)塊鏈系統(tǒng)具有高安全性、高去中心化以及快速的上傳和下載速度。系統(tǒng)間對比如表1所示。

表1 不同系統(tǒng)之間的對比Table 1 Comparison between different systems
設(shè)計的系統(tǒng)測試由 Ubuntu 18.04 系統(tǒng)實施,具有Core i7 CPU和16GB RAM。網(wǎng)絡(luò)速度為50Mbps,具體區(qū)塊鏈?zhǔn)鞘褂胓eth(go-ethereum)構(gòu)建的,部分算法程序如圖5所示。

圖5 部分算法程序Fig.5 Part of the algorithm program
本研究將數(shù)據(jù)存儲在IPFS上,且為了保證數(shù)據(jù)不被篡改,將數(shù)據(jù)的Hash存儲在區(qū)塊鏈上確保數(shù)據(jù)未被惡意篡改,并對云存儲系統(tǒng)、基于區(qū)塊鏈的系統(tǒng)和基于區(qū)塊鏈-IPFS的系統(tǒng)進(jìn)行實驗。為了測試數(shù)據(jù)上傳速率,將數(shù)據(jù)分為5組,分別為1、10、50、100、300M,并比較數(shù)據(jù)上傳和下載時間。
測試結(jié)果如圖6(a)所示。在數(shù)據(jù)上傳效率方面,IPFS存儲方式效率最高;在存儲速度方面,IPFS的速度是區(qū)塊鏈快近5倍,比云存儲快21.6%。這主要是由于IPFS使用點(diǎn)對點(diǎn)的存儲機(jī)制,網(wǎng)絡(luò)節(jié)點(diǎn)越多,其內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)加速性能越好,存儲效率和安全性也越高。

圖6 3種系統(tǒng)下數(shù)據(jù)傳輸速率對比示意圖Fig.6 Comparison of data transmission rate under 3 systems
數(shù)據(jù)下載速率如圖6(b)所示。由圖6(b)可知:IPFS比其他兩種效率更高,云存儲和區(qū)塊鏈存儲的讀取速度差別較小。
針對目前農(nóng)業(yè)數(shù)據(jù)的網(wǎng)絡(luò)安全問題,創(chuàng)新提出了一種基于雙區(qū)塊鏈的物聯(lián)網(wǎng)農(nóng)業(yè)數(shù)據(jù)監(jiān)控安全解決方案。有兩條區(qū)塊鏈涉及數(shù)據(jù)散列值和散列值索引的存儲和傳輸,以及用于數(shù)據(jù)存儲的 IPFS 網(wǎng)絡(luò)。主鏈?zhǔn)且蕴?它提供基于內(nèi)容的公共搜索;另一條鏈名為農(nóng)業(yè)樣本數(shù)據(jù)鏈(ASDC),專為特定的物聯(lián)網(wǎng)應(yīng)用系統(tǒng)而構(gòu)建,為每個類別的采樣數(shù)據(jù)創(chuàng)建一個帳戶。IPFS存儲雙鏈系統(tǒng)下農(nóng)業(yè)物聯(lián)網(wǎng)采樣數(shù)據(jù)比傳統(tǒng)的物聯(lián)網(wǎng)存儲網(wǎng)絡(luò)和以太坊網(wǎng)絡(luò)具有更高的安全級別。系統(tǒng)的測試結(jié)果表明:該系統(tǒng)比云存儲和僅區(qū)塊鏈存儲的響應(yīng)時間更短,同時還可提高農(nóng)業(yè)網(wǎng)絡(luò)安全性能。但是,當(dāng)網(wǎng)絡(luò)不穩(wěn)定時,雙鏈傳輸可能會出現(xiàn)同步延遲。另一方面,隨著農(nóng)業(yè)物聯(lián)網(wǎng)網(wǎng)絡(luò)越來越大,系統(tǒng)連接的東西越來越多,物聯(lián)網(wǎng)網(wǎng)絡(luò)和區(qū)塊鏈網(wǎng)絡(luò)的系統(tǒng)吞吐量都將承受更大的壓力。目前,傳輸速度、容錯率以及系統(tǒng)負(fù)載和傳輸速度之間的平衡都會受到進(jìn)一步的影響,未來應(yīng)該進(jìn)每一步考慮方系統(tǒng)的擴(kuò)展性和兼容性。