(南京郵電大學 江蘇 210003)
物聯網是繼計算機、互聯網與移動通信網之后信息產業的第三次浪潮,被視為第四次工業革命的核心支撐。物聯網層次結構自底向上可分為3 層:感知層、網絡層和應用層。感知層主要負責數據采集;網絡層利用無線或有線的網絡將來自感知層的各類數據信息進行組網傳輸匯聚;應用層作為結構模型的頂層,通過云計算平臺等對所獲得的數據進行處理,為用戶提供基于數據的應用。引入區塊鏈技術后,設計出了可信物聯網架構。

圖1 可信物聯網架構
從這個頂層架構中,第一層是資產層,用戶的設備將與物理資產相連,用戶的物理資產狀態數據會被發送到云后端,也就是第二層,云后端將托管所有必要的安全服務和其他服務,管理用戶的物聯網解決方案,第三層是區塊鏈層,用來存儲不同類型的應用程序的資產相關的數據,一個混合架構將云和區塊鏈共同組成一個非常強大的后端以支持物聯網應用程序,將區塊鏈整合到物聯網生態系統。涵蓋了大量的物聯網應用程序和用例,第一種是從資產到物聯網云,再到區塊鏈,這是企業和工業物聯網應用中非常流行并且典型的集成模式,第二種模式更側重于低功耗的物聯網設備,需要通過物聯網網關或fog節點到達后端,此外,一些集成模式更注重于考慮未來的計算范式,如邊緣計算和fog 計算。
物聯網中的設備層是接入層,為保證物聯網中的設備之間可以實現安全的數據交流,在信息發送到這些平臺之前,能夠通過物聯網網關來改善物聯網數據的隱私保護。因此,需要物聯網網關更好的控制私有物聯網資源集,保護收集的個人數據及其隱私。為此,我們提出通過物聯網網關節點,來實現物聯網聯合區塊鏈領域動態、靈活的隱私保護解決方案。
網關節點可以是網關、存儲或公共節點。這些節點需要高內存和存儲能力來存儲公共區塊鏈。每個物聯網網絡節點都有一對唯一的公鑰和私鑰。公鑰是物聯網中的其他公共節點網絡中公開的,作為一個獨特的通信節點的標識符,發送/接收事務的公共物聯網網絡中的其他節點。私鑰是保密的,用于簽署交易之前發送它們產生的簽名。
隨著越來越多的物聯網設備接入物聯網,分布式網絡中互不信任節點間需要建立共識的規則與方法。在各種公鏈不斷介入的同時,跨鏈資產之間的交易需求也是日益增長。此前區塊鏈間呈現出來的是孤島效應,價值無法自由快速流通,生態無法快速對接,體系無法增長。
開放聯盟網關協議OFGP(Open Federated Gateway Protocol 簡稱“OFGP”)是iBitcome 錢包聯合去中心化交易所DEx.top 開發的一個開源的網關協議。開放聯盟網關協議OFGP 是一個通用的去中心化網關系統,可以完成公有鏈上的資產抵押認證,將價值傳遞到側鏈,依托側鏈所具備的高性能及能夠支持復雜場景應用的特性。
不同區塊鏈間的交互過程中,會出現跨鏈用戶的作惡情況,如何降低或杜絕跨鏈用戶的作惡情況值得深思。同時拜占庭容錯包含的側鏈節點之間的信任問題,在出現少數節點作惡的情況下依然能夠保證整條側鏈的安全。當出現普通跨鏈用戶增多,節點數量無法滿足需求,用戶通過向中間人提交信息,中間人再將信息傳遞至節點。
基于OFGP 協議,其開放的聯盟網關協議,任何機構或者組織都可以通過開源代碼部署自己的網關聯盟,完成主鏈上的數字化資質以及信用審查認證,將該信息傳遞到側鏈,實現跨鏈的系統管理交互,解決了不同區塊鏈之間的拓展問題,實現多個公有鏈孤島的信息交互。
網絡層作為OFGP 基礎部分,每個賬本形成獨立的一個側鏈,成為鏈1 到鏈n。每個鏈與鏈之間相應的形成每個節點,會生成帶節點多簽地址,具有多簽密鑰的安全管理。每個節點作為OFGP 協議軟件程序的運行節點,承擔數據驗證,維護節點的責任;main 鏈是具有獨立區塊數據,共識協議的公共區塊鏈系統,OFGP 協議承擔著連接各個公鏈的責任。
共識層作為各條公鏈信息交互以及維護節點間需要遵守的協議,維護著整個OFGP 協議系統信息安全傳遞及穩定運行。各個節點依托權益算法,達到拜占庭容錯的目的;跨鏈協議包括監聽,信息傳遞,合約注冊,權限管理等多事務。數字化的信用機制通過共識流程,將節點動態加入退出機制,使得在跨鏈運算時,主/側鏈進行同時監聽,各個區塊鏈之間的信息得以交互,通過交易簽名,將簽名信息傳遞,通過交易廣播、驗證,主/側鏈之間得到響應,最終形成穩定數據庫。
多重簽名技術通過多個用戶同時對一個數字資產進行簽名,一個數字資產賬戶多個人擁有簽名權和支付權。私鑰管理方案分為三大部分,密鑰存儲服務,密鑰管理服務,私鑰代理服務。OFGP 的多簽名流程實現復雜,保障了在私鑰安全的情況下完成簽名,加強了多簽地址中資產的安全性。
基于OFGP 跨鏈技術權益算法,支持拜占庭容錯,在不超過(n-1)/3 個節點(節點總數為n,n>=4)出現異常的情況下可以正常運行。協議保證在正常運行時區塊鏈不會出現暫時或永久的分叉,一次確認即為可靠確認。且交易確認速度可以達到秒級,節點運營方均為實名,并且有嚴格的增刪節點機制,以保證網絡質量以及異常情況可追責。
Main 鏈數最少為3 個,且需要滿足2f+1(f >0,且為整數)的限制,惡意節點數小于等于f 時,網絡可以正常運行;當需要有新的數據寫入區塊時必須有超過2f+1 個節點的驗證同意。Side 鏈分為Leader,Candidate,Follower。服務器節點處于三種狀態之一,正常狀態下只有一個服務器作為Leader,剩下的節點都可以被定義為Follower,Candidate 從Follower 中產生,Candidate 作為一個狀態,在正常運行沒有出現選舉的情況下節點中不會產生Candidate,且Candidate 過程非常短暫。Leader 負責打包區塊并廣播給所有的Follower,Follower 負責對打包區塊進行驗證。
區塊鏈技術實現之后,智能合約才真正得到實踐。智能合約以代碼為依據,從構建到存儲再到最后的執行都在區塊鏈上被所有節點共同監督,實現了高度自治的邏輯閉環。智能合約系統會定期進行自動機狀態檢查,定時檢查是否已經發生相關事件,產生了合約執行的觸發條件。如果滿足觸發條件,經過節點驗證后達成共識后,智能合約系統會自動執行合約內容并通知用戶。基于區塊鏈的智能合約構建及執行包括如下幾個方面。
注冊成為區塊鏈用戶,區塊鏈返回給用戶一對公鑰和私鑰;多個用戶根據需要共同商定一份承諾,承諾中包含了各方的權利和義務,智能合約語言會將權利和義務數字化,并編譯成字節碼。將簽名后的智能合約發送到區塊鏈網絡。
智能合約通過P2P 的方式在區塊鏈全網中擴散,區塊鏈中驗證節點會將收到的智能合約先保存在內存中,等待新一輪的共識時間,觸發對該份智能合約的共識和處理。共識時間到了,驗證節點會集中最近一段時間內保存的所有智能合約,并算出這個智能合約集合的哈希值,將這個智能合約集合的哈希值組裝成一個區塊結構,擴散到全網,比較哈希值。最新達成的合約集合會以區塊的形式擴散到全網,如下圖所示,每個區塊包含以下信息:當前區塊的哈希值、前一區塊的哈希值、達成共識時間的時間戳,以及其他描述信息。
智能合約會定期檢查自動機狀態,逐條遍歷每個智能合約內包含的狀態機、事務以及觸發條件;將條件滿足的事務推送到待驗證的隊列中,等待共識;未滿足觸發條件的事務將繼續存放在區塊鏈上。進入最新一輪驗證的事務,會擴散到每一個驗證節點,驗證節點首先進行簽名驗證,確保事務的有效性;驗證通過的事務會進入待共識集合,等驗證節點達成共識后,事務會成功執行并通知用戶。

圖2 合約區塊鏈
區塊鏈智能合約可以在不同的物聯網進程之間建立信任,降低系統成本,在圖中看到,通過區塊鏈技術和智能合約,我們可以構建可信的物聯網系統,以支持不同領域的物聯網大規模應用。同時,基于區塊鏈的可信物聯網安全模型有效解決數據隱私安全問題、中心服務器單點故障問題等,以此來構建數據安全的生態系統。