李小娟 臧義華 吳楫捷
1(華北計算技術研究所 北京 100083)2(地理信息工程國家重點實驗室 西安 710054)
隨著信息技術的發展,互聯網與傳統產業不斷融合,數據采集、網絡通信、信息處理和控制的需求不斷向末端延伸,承擔最后一公里信息服務的邊緣服務設備[1-2]發揮著越來越重要的作用.國內外提供邊緣服務的設備主要是各種感知設備、通信終端和單兵系統[3-5]等.感知設備主要用于為制造流程中的各個過程提供感知、操作和管理手段,通信終端主要用于提供通信服務;以通信功能為基礎的單兵系統具備導航定位、態勢感知、信息處理等多種功能領域,具備多樣化保障能力.但實用中也逐步暴露出以下一系列問題:
1)工業領域網絡化進程加快,邊緣設備的可靠接入能力受限,身份識別、設備管理成為工業安全隱患;
2)現有邊緣設備大多采用單節點訪問控制措施,一旦安全網關被攻破或某個設備被控制,整個網絡系統也被控制,網絡中的所有數據和設備面臨安全威脅;
3)現有邊緣設備提供的信息真實性無法驗證,一旦有設備發布偽造的控制指令,可能會導致設備損壞或系統癱瘓的嚴重后果,同時沒有經過驗證的信息也難以滿足事后分析的需要;
4)現有邊緣設備之間缺乏安全的信息共享手段,無法實現安全的設計協同、生產協同和服務協同.
因此在生產、制造及供應鏈等多個工業應用場景中,如何保證數據的安全、服務的安全、控制的安全和設備的自主可靠協同成為邊緣服務亟待解決的問題.
區塊鏈技術作為一種新的分布式基礎機構與計算方式,具備信息透明、不可篡改的特點,能夠解決復雜環境中不平等信任模式下的信任構建問題[6-7],能夠在節點不可信、信道不可靠的環境中確保信息一致性,可以通過縝密的程序和算法構建一套完善的機制,為邊緣節點提供安全、高效的服務支撐手段,主要包括以下幾個方面:
1)共識機制確保安全性.
隨著工業的網絡化和智能化發展,工業邊緣設備如果通信過程中沒有有效的加密措施容易被攻擊者截獲信息、篡改數據,并且缺乏有效手段進行識別.在區塊鏈網絡中,新節點加入時,需要高于一定比例的節點背書方能成功,對入侵與偵測構筑了堡壘.此外,在區塊鏈中執行任何操作均會留下痕跡并能夠被溯源,對反偵測與事后追蹤提供了便利.
整個邊緣服務系統效能的充分發揮都依賴可信的數據,數據的安全性主要體現在數據的一致性、機密性和完整性.在區塊鏈網絡中數據以分布式方式記錄,整個網絡的每個節點都保存有1份完整的數據副本,數據的驗證和維護工作通過共識機制自動完成[8-9],數據一旦存儲就不可更改,數據的安全性可以得到有效保證.
2)智能合約提升邊緣節點自治能力.
區塊鏈中智能合約的執行基于“事件觸發”機制,可以針對不同任務制定智能合約,實現任務的自動觸發和自動執行,各個邊緣節點互相對等,同時又互相協作,提升邊緣節點的自治能力,使每個邊緣節點都成為智能的自治個體,能獨立自主地完成一定的任務,一方面提升了通信聯絡的魯棒性,另一方面提升了任務執行的效率.
3)去中心化特征提升邊緣服務的魯棒性.
區塊鏈系統是一種分布式的開放系統,節點之間通過P2P網絡協議通信,每個節點即充當服務器的角色又充當客戶端的角色,彼此地位平等,以對等工作模式存在,每一個節點都具有平等的數據權限.在復雜邊緣服務環境下,即使部分邊緣節點遭受攻擊也不會影響其他節點的正常工作,可以有效提升服務的魯棒性[10-11].
本文根據邊緣服務的特點基于區塊鏈技術設計安全的網絡架構,為邊緣節點提供安全的通信聯絡、信息共享能力.
區塊鏈本質是一個不可篡改的分布式數據賬本,現有區塊鏈系統多為單鏈系統,單鏈系統中1個賬本維護區塊鏈網絡中所有節點的數據,賬本數據十分復雜,且存在大量冗余,每個成員都可以看到所有數據,不利于邊緣服務環境下的隱私保護.為了滿足復雜環境下的邊緣節點通信需求,本文提出一種由1個主鏈、1個安全密鑰鏈和多個業務單鏈組成的多鏈系統,將原有內容復雜、規模龐大的賬本數據拆分成一個個功能細化的小賬本,由不同的子鏈進行維護.
區塊鏈是由包含交易信息的區塊從后向前有序鏈接起來的數據結構,每個區塊都指向前一個區塊,最終組成區塊鏈[12-14].本文在已有區塊鏈數據結構的基礎上采用有向無環圖(directed acyclic graph, DAG)數據結構完成鏈結構的搭建.
DAG是指任意一條邊有方向且不存在環路的圖[15].本文基于DAG數據結構搭建區塊鏈網絡,鏈網絡的子鏈需要不斷將子鏈的區塊哈希信息錨定到主鏈上,不斷錨定的哈希信息相當于主鏈聯系到子鏈的關聯關系,多個子鏈與主鏈間不斷創建的關系組合成一個規則的DAG,如圖1所示:

圖1 鏈網絡示意圖
在邊緣節點通信過程中,節點的身份授權、準入校驗機制非常重要,影響著整個系統的信息安全等級.本文采用P2P對等網絡的網絡運行環境,基于拜占庭容錯共識算法[16-18]和智能合約執行引擎,設計了一個獨立運行的區塊鏈應用,即安全密鑰鏈,用于存儲節點預設密鑰和密鑰更新信息,同時作為網絡中節點間身份認證的唯一憑證,負責整個邊緣服務網絡的節點管理,包括節點的加入、退出等.安全密鑰鏈結構如圖2所示,每一個區塊由區塊頭和區塊體組成,區塊頭數據包括:前一區塊的哈希值、時間戳、Merkle根、節點簽名、黑名單、候選人名單.區塊體數據包括:工作人員編號、公鑰地址、生成時間、存儲保護密鑰、密鑰加密密鑰、有效期.

圖2 安全密鑰鏈結構
工業環境中,為了確保安全性,密鑰初始化會在邊緣節點設備下發之后、網絡體系觸發之前進行。邊緣節點設備加入區塊鏈網絡時,利用內嵌密碼芯片生成初始的公私鑰對.其中,公鑰信息包含節點設備編號、密碼芯片產生公鑰、簽發時間和有效起止時間.私鑰用來對信息進行加密.
鏈網絡創建時,多個原始邊緣節點的公鑰自動加入安全密鑰鏈.鏈網絡創建后新的邊緣節點加入鏈網絡時,需要由已有鏈網絡的成員節點使用其私鑰對新節點的公鑰和主鏈標識進行簽名,簽名信息由密鑰鏈驗證通過后才能正式加入鏈網絡.
如節點A加入鏈網絡,需要由鏈網絡成員的節點B對節點A的公鑰和主鏈標識進行簽名,即簽名信息SignInfo:
SignInfo=Privatekey(B)
(PubLlickey(A)+chainId)+B.
安全密鑰鏈通過節點成員公鑰列表的公鑰對簽名信息SignInfo進行驗證,驗證通過后節點A加入到鏈網絡,并將節點A的公鑰加入到對應成員公鑰列表.某個邊緣節點退出時,銷毀節點設備中存儲的全部密鑰,當節點需要再次接入到網絡時利用密碼芯片生成新的密鑰,然后重新驗證通過方可加入網絡.
在工業生產和服務環境當中,設備之間為了更好地進行協同工作,會比較頻繁地進行信息交互,為了實現設備安全、數據安全、控制安全和事后總結分析,需要將節點設備的業務數據信息進行實時鏈上存證.區塊鏈具有大眾共識、不可篡改、安全透明等技術特性,可幫助邊緣服務系統實現實時數據的存證,為事后數據梳理、總結分析提供可信的數據源[16].數據上鏈之前首先進行數據哈希,然后按照圖3所示過程進行上鏈存證:

圖3 數據鏈存證流程
每個邊緣服務設備包含1個區塊鏈節點,區塊鏈節點在區塊鏈網絡中進行信息傳輸時使用非對稱加密算法,確保信息傳輸安全.非對稱加密算法中包含1對密鑰,即公鑰和私鑰,其中公鑰由安全密鑰鏈進行維護管理,私鑰保存在硬件私鑰存儲模塊中,私鑰存儲的流程如圖4所示:

圖4 私鑰存儲流程
當用戶向區塊鏈節點發送數據獲取請求或其他服務請求時,會向私鑰存儲設備請求簽名,等到簽名的結果返回之后才能進行業務交互,并與其他邊緣節點進行區塊鏈信息同步,在整個區塊鏈達成共識后,節點將最終結果返回給用戶.
在工業環境下,硬件存儲設備的電子攻擊主要包括侵入式攻擊和非侵入式攻擊.典型的非侵入式攻擊是電子探測攻擊,攻擊方式包括SPA和DPA攻擊,使用安全模塊的硬件私鑰存儲設備由于不提供調試接口,無法繞開芯片系統讀取存儲器數據,比普通ARM芯片更能有效抵御攻擊,對于各種形式的電子探測攻擊都能作出針對性的防護.
因此本文針對私鑰的安全存儲和計算需求,采用內置ARM SC000安全核的安全私鑰存儲設備,支持硬件真隨機數、國密算法、USB/7816接口,可以實現私鑰生成、簽名,公鑰導出、PIN碼驗證、恢復詞導入導出等功能.存儲結構如圖5所示:

圖5 硬件私鑰存儲結構
復雜的工業環境下,節點設備除了基本的通信功能,還具備豐富的信息感知和處理能力,對節點設備上敏感數據、處理服務及其結果進行有效的權限控制至關重要,本文采用鏈上動態審計技術對邊緣節點設備的數據使用和服務調用提供審計管理手段.
首先將每個邊緣節點的公鑰作為其安全屬性標識,節點存儲的數據和安裝服務均通過數據存證鏈進行記錄,并具備唯一的標識.然后定義訪問控制規則,規定邊緣節點對數據和服務的訪問權限,通過智能合約實現訪問控制規則的執行,實現安全訪問控制.如圖6所示,動態審計流程如下:

圖6 動態審計流程
1)應用層向服務管理模塊發起服務調用請求;
2)服務管理模塊向區塊鏈發起驗證請求,驗證是否符合安全訪問控制規則;
3)區塊鏈驗證是否符合安全訪問控制規則后,返回對應的審批信息給服務管理模塊;
4)服務管理模塊向應用層返回審批信息;
5)服務管理模塊向鏈上審計分析系統上報審批信息;
6)服務管理模塊同意后,應用層向服務方發起請求,請求流經請求方和服務方動態審計模塊;
7)請求方動態審計模塊進行合規性檢查,向鏈上動態審計分析模塊上報日志;
8)服務方動態審計模塊進行合規性檢查,向鏈上動態審計分析模塊上報日志.
為了保證邊緣節點之間的通信效率和機密性,同時避免資源消耗過高,本文采用對稱加密和非對稱加密相結合的方法進行數據傳輸.圖7是邊緣節點A給邊緣節點B發送信息的主要流程.

圖7 數據發送流程
首先采用SM3[19]對信息數據進行求取摘要,然后使用SM2[20]和發送方私鑰對信息摘要簽名得到信息的數字簽名.
采用對稱加密算法SM1,利用密鑰加密密鑰對信息數據及數字簽名進行加密得到密文.同時對密鑰加密密鑰用B的公鑰進行加密得到數字信封.
將密文和數字信封通過區塊鏈網絡發送給節點B.
數據接收流程如圖8所示.B端收到傳過來的信息后,首先利用私鑰對數字信封進行解密得到密鑰加密密鑰.然后利用密鑰加密密鑰對密文進行解密,解密后得到數據信息和數字簽名.

圖8 數據接收流程
之后將得到的數據信息利用哈希算法求得哈希值,同時利用A的公鑰對數字簽名進行驗證得到發送過來的信息摘要.對比計算所得和接收的2個信息摘要,若相同則信息完整,若不同則信息受損.
為了更好地完成邊緣服務任務,需要根據任務執行情況和節點的狀態變化,動態調整邊緣服務網絡架構和拓撲.
新的邊緣節點加入時,將自己的信息發送至網絡中,經過安全密鑰鏈許可校驗方加入網絡,其公鑰加入節點成員的公鑰列表.
當某邊緣節點失效時,其他單一節點可以發起對該節點身份失效的聲明,并將聲明寫到區塊鏈上,供整個區塊鏈網絡中其他節點進行審核,其他節點如果認為該聲明可信,可以為該聲明簽名背書,如果認為該聲明不可信,則可在鏈上寫入撤銷該聲明的聲明.若失效聲明收集到足夠多的簽名背書(閾值事前確定,如全網節點數量的2/3),則可通過智能合約自動將失效設備的公鑰進行失效處理,并將該節點從網絡中刪除.
為了驗證本文安全機制的有效性,構建邊緣服務系統,并基于軟硬件實驗環境開展實驗驗證工作.
基于本文安全機制設計的邊緣服務系統組成如圖9所示,從下至上分別為硬件層、操作系統、區塊鏈層、服務框架層、服務層.區塊鏈層由賬本數據、跨鏈算法、共識算法、密碼學算法、智能合約、區塊鏈網絡、數據安全訪問控制、服務注冊與發現模塊組成;服務框架層包括服務注冊、路由管理與彈性服務,日志系統,集中配置管理和監控系統等模塊組成;服務層包括網絡與通信管理、數據存證、數據傳輸審計、服務信息管理等模塊組成.

圖9 邊緣服務系統組成
其中硬件層包括區塊鏈節點、私鑰存儲設備、計算機終端和通信網絡;軟件由區塊鏈層、服務框架層和服務層組成.此外,為了開展實驗,還需使用的軟件包括:邊緣配置軟件、Iperf網絡測試工具、Docker、網絡仿真軟件等.
本實驗構建3個區塊鏈子網,3個子網組成一個區塊鏈網絡,基于該網絡對區塊鏈網絡的管理、數據存證和數據安全傳輸等多方面進行實驗驗證.表1所示為典型的實驗內容及結果.

表1 典型實驗內容及結果
實驗結果表明,基于多策略安全機制構建的邊緣服務系統能夠支持可用網絡規模不小于32個獨立節點,支持不小于3個獨立子網協同,支持節點的身份認證功能,具備信息防篡改、可恢復能力,能夠提升邊緣節點的抗攻擊能力,能夠提供數據的可信存證手段,可以為邊緣節點執行各類任務時提供安全的通信聯絡、數據存儲和傳輸等綜合保障能力.
萬物互聯的信息時代,數據安全、服務安全、控制安全和設備安全至關重要.本文基于區塊鏈技術設計了安全網絡架構,結合硬件私鑰存儲機制、鏈上動態審計技術、數據安全傳輸技術等建立了完備的安全機制,既可保證數據傳輸的安全,又能夠保證控制訪問的安全,同時可以確保數據的一致性,能夠建立從設備連接、數據采集、存儲分析到設計生產的全流程安全控制體系,實現工業數據的協作共享和防偽溯源,同時實現工業鏈中所有節點的自治化管理,為打破行業壁壘、形成資源共享的服務體系奠定堅實的基礎.