陳傳坤,谷立祥,顏廷貴
(1.北京宇航系統工程研究所,北京 100076; 2.中國運載火箭技術研究院,北京 100076)
在信息化時代背景下,指揮信息系統正向網絡中心化方向快速發展,作為指控指令、情報、作戰平臺狀態等軍事信息獲取、傳遞、處理、分析的統一平臺,指揮信息系統連接地理上分布的作戰單元,將作戰信息集中于網絡,能夠保障各作戰單元間有效的數據交互與共享。但隨著信息化程度的提高,其應用服務、數據、終端不斷增加,面對當前日益復雜的網絡攻擊,指揮信息系統的數據安全問題日漸嚴峻。目前,指揮信息系統主要依靠中心化架構實現,一旦中心化服務器被攻擊,系統將面臨數據篡改和泄漏的風險,同時,中心化架構難以有效滿足分布式、網絡化作戰的需求[1]。以防火墻、訪問控制為代表的傳統安全手段可控性較差,安全管理效率較低,難以有效保障系統的數據安全[2]。
作為近期引起廣泛關注的新興技術,區塊鏈技術具有去中心化、去信任化、集體維護、數據不可篡改和可追溯等優勢[3],契合指揮信息系統對數據保護提出的數據可信、可審計追蹤、分布式存儲與驗證等要求。然而,在區塊鏈系統中,各參與方以對等節點的形式參與區塊鏈維護,且都擁有全局賬本,這使得數據保護無法利用傳統的中心化方式解決,因此,如何將區塊鏈的原生優勢與數據保護進行有效結合是當前指揮信息系統面臨的一大難題[4]。文中對當前基于區塊鏈的數據保護方案進行了研究,分析了適用于指揮信息系統的區塊鏈方案,設計并實現了基于混合加密的數據保護智能合約,搭建了基于聯盟鏈的指揮信息系統進行方案驗證,結果證明該方案能夠實現細粒度的數據保護,并可以高效地進行機密數據的授權共享。
數據保護的核心在于對數據進行完整性和機密性保護,得益于區塊鏈在數據安全可信方面的原生優勢,相關技術現已被廣泛應用于多種數據保護場景中。目前,基于區塊鏈的數據保護方案可分為以下四類。
(1)明文上鏈:交易數據明文記錄在區塊鏈上,利用區塊只增不減、歷史區塊不可篡改的特性實現數據的完整性保護,該方案主要應用在以比特幣(Bitcoin)[5]、以太坊(Ethereum)[6]為代表的區塊鏈平臺上。趙赫等人將該方案應用于采樣機器人系統,保證數據記錄的真實性、完整性[7];Enis等人提出了基于區塊鏈的空域指揮控制系統,以保障情報數據真實可信[8]。這種方案的缺點是鏈上明文數據對其他節點可見,無法對數據共享進行有效控制,進而無法保證數據的機密性,存在極大的數據泄露風險[9]。
(2)對稱加密上鏈:數據在鏈下經對稱加密后上傳至區塊鏈存儲,加密密鑰由節點自身或密鑰管理中心存儲。文獻[10-12]中的區塊鏈系統均采用本方案對隱私數據進行有效保護。該方案中,由于區塊鏈僅存儲密文,數據的完整性和機密性都能夠得到有效保障,但數據共享需要在鏈下進行密鑰傳輸,共享過程不透明,無法對該過程進行有效追溯和審計,因此,該方案依然存在數據泄露的風險。
(3)非對稱加密上鏈:數據上傳節點利用接收節點公鑰對數據進行非對稱加密后上傳至區塊鏈存儲,文獻[13-14]應用該方案對醫療數據進行隱私保護,以避免患者隱私被非法利用。該方案能夠有效實現數據的完整性、機密性保護,數據共享結果可追溯,但其缺點是非對稱加密算法加密效率低,與多個節點共享數據時需進行多次加密計算,系統性能難以保證。
(4)數據哈希上鏈:僅將數據哈希值存儲在區塊鏈上,原始數據以哈希值為索引加密存儲在鏈下數據庫中。目前,大多數針對文檔的數據保護系統[15-16]采用此方案。該方案的優點是數據存儲與管理分離,系統性能通常較高,但由于區塊鏈不存儲原始數據,無法充分發揮區塊鏈的去中心化優勢,一旦鏈下數據發生丟失或篡改,原始數據無法恢復。
區塊鏈技術是一種將數據以區塊形式存儲并鏈式連接的分布式數據庫技術,以P2P(peer-to-peer)網絡作為底層通信載體,利用密碼學保障數據隱私,并依靠分布式共識機制保障數據一致性[17]。目前,按照節點記賬權的歸屬,區塊鏈的應用模式可分為公有鏈、私有鏈和聯盟鏈:
(1)公有鏈:完全去中心化,任何節點都擁有記賬權,并能夠自由進出區塊鏈網絡,利用PoW(proof of work)等共識機制維護區塊鏈的數據一致性,交易吞吐率最低(比特幣約為7 TPS)且交易確認時間長[18];
(2)私有鏈:僅運行于組織機構內部,新區塊由特定節點生成,數據讀寫權限僅向內部節點開放,利用中心化程度較高的共識機制大幅縮短交易確認時間,提升交易吞吐率;
(3)聯盟鏈:作為公有鏈和私有鏈的中間態,聯盟鏈運行于多個組織之上,節點進入網絡前需經過認證許可,通常采用拜占庭容錯的共識機制,由多個成員共同參與共識過程,交易吞吐率可達2 000 TPS且交易確認時間可控制在毫秒級[19]。
作為軍事作戰的核心要素,指揮信息系統應保證系統內部存儲和傳輸的數據安全可信,具體地,有以下的數據保護需求:(1)數據不可被惡意篡改;(2)數據來源可追溯;(3)支持數據的授權共享,對非授權節點隔離;(4)數據完整性可驗證;(5)數據分布式存儲;(6)數據處理效率高。綜上,聯盟鏈呈現出多中心化的特征,能夠較好地平衡區塊鏈的安全性和系統性能。而Hyperledger Fabric[20]作為當前應用最為廣泛的企業級聯盟鏈,具有節點授權準入、實名身份認證、高性能共識機制等特點,結合可編程的數據保護智能合約,Fabric能夠有效滿足指揮信息系統對數據安全保護的需求,因此,文中選擇采用聯盟鏈Hyperledger Fabric作為系統的區塊鏈實現平臺。
基于聯盟鏈的指揮信息系統整體架構如圖1所示,由用戶層、智能合約層、區塊鏈層協同實現:用戶層的各個組織節點參與聯盟鏈的管理,調用智能合約接口與對應的合約交互;智能合約層利用其可編程特性,對數據及其訪問控制實施靈活的配置和管理;區塊鏈層利用歷史區塊的不可篡改性,為加密數據的存儲與共享提供支撐。

圖1 基于聯盟鏈的指揮信息系統整體架構
為了便于分析,文中抽象出系統用戶層模型。如圖2所示,用戶層由一個指揮控制中心、兩個預警探測節點、兩個次級指控中心和附屬于次級指控中心的四個作戰平臺節點構成。其中,預警探測節點主要由預警雷達、預警機和偵查衛星構成,負責為指揮控制中心生成情報信息;指揮控制中心一般為固定指揮所,負責戰場信息的接收、處理和指揮決策下達;次級指控中心通常由移動指揮車組成,主要任務是根據指揮控制中心下達的任務要求求解火控數據;作戰平臺節點由火力單元構成,負責依據火控數據實施具體的作戰任務。兩類指控中心和預警探測節點通常具有較強的計算、存儲性能以及較高的帶寬,能夠作為聯盟鏈的Peer(對等)節點,存儲全部區塊鏈數據并響應客戶端請求,其他節點僅作為客戶端節點向Peer節點發送請求。

圖2 系統用戶層模型
由于指揮信息系統的數據機密性較高,針對不同類型節點應提供不同的數據訪問策略,文中建立了記錄不同類型數據的三條獨立通道:(1)情報通道,維護情報類數據,數據僅在指揮控制中心和預警探測節點內部共享;(2)指控通道,維護指控指令類、作戰平臺狀態類數據,僅對指揮控制中心與次級指揮控制中心可見;(3)共享數據通道,記錄所有節點共享的全局數據。每條通道維護一條獨立的區塊鏈,從而保證數據對通道內節點共享、對外隔離。
作為數據保護方案的核心,可編程智能合約利用混合加密的方式支持數據的高效加密與授權共享,從而在通道相互獨立的基礎上,以單條數據的粒度保障機密性。文中的智能合約由加密密鑰控制合約、數據共享與保護合約兩部分構成。
2.3.1 加密密鑰控制合約
加密密鑰控制合約主要負責用戶非對稱加密密鑰的注冊與控制,包括密鑰申請模塊、密鑰更改模塊和密鑰撤回模塊,該合約僅由指揮控制中心節點審核執行,以保證指揮控制中心作為最高權限機構的權威性。非對稱加密采用NTRU算法[21],相較于傳統的ECC和RSA算法,NTRU算法具有計算量小、硬件資源要求低、安全強度高的特點,加解密速度可達ECC和RSA算法的20倍以上[22]。
密鑰申請模塊為用戶生成全局唯一的身份標識以及對應的NTRU密鑰對
2.3.2 數據共享與保護合約
數據共享與保護合約包括數據共享存儲模塊和數據獲取模塊。其中,數據共享存儲模塊流程如算法1所示,用戶將原始數據data和接收節點列表List
算法1:dataUpload(data,List
1: ownId=getCreator()
2:hash=sha256(data)
3:dataId=getDataId()
4:key=AES.generateKey()
5:for recId:List
6:pubKey=getState(composUser(recId))
7:if pubKey==nil
8:return userNotExistError()
9:end if
10:encryptKey=NTRUencrypt(key,pubKey)
11:putState(composKey(dataId,recId),encryptKey)
12:end for
13:cipher=AESencrypt(data,key)
14:dataJson=jsonify(ownId,cipher,hash,List
15:putState(composData(dataId),dataJSON)
16:return dataId
數據獲取流程如算法2所示,客戶端節點將包含目標數據標識的請求簽名后發送至智能合約處理,在驗證節點證書通過后,該模塊獲取節點標識targetId,并在區塊鏈中查詢得到數據標識dataId對應的數據對象dataJSON,驗證請求節點標識是否在數據對象的接收節點列表中,若為否,則返回拒絕訪問錯誤。最后,根據dataId和targetId獲取加密后的對稱密鑰,并將密文cipher、被公鑰加密的密鑰encryKey以及原始數據哈希hash返回請求節點。
算法2:dataAccess(dataId)
1: targetId=getCreator()
2:dataJSON=getState(composData(dataId))
3:if dataJSON==nil
4:return dataNotFoundError()
5:end if
6: parse(dataJSON,ownId,cipher,hash,List
7:if validateAuthority(List
8:return PermissionDeniedError()
9:end if
10:encryKey=getState(composKey(dataId, targetId))
11:return cipher,encryKey,hash
客戶端節點收到數據獲取模塊返回的數據后,執行算法3對數據解密并進行完整性驗證,客戶端節點利用本地存儲的私鑰priKey對encryKey解密后得到對稱密鑰key,利用對稱解密算法解密cipher得到plainText并計算其哈希值dataHash,若與區塊鏈中記錄的哈希值hash不一致,則說明數據曾被篡改過,報告哈希驗證錯誤,否則,返回正常的解密數據。
算法3::decryptAndVerify(cipher,encryKey,hash)
1: priKey=NTRU.getPrivateKey()
2:key=NTRUdeceypt(encryKey,priKey)
3:plainText=AESdecrypt(cipher,key)
4:dataHash=sha256(plainText)
5:if dataHash!=hash
6: return hashVerificationError()
7:end if
8:return plainText
與現有的數據保護方案相比,文中基于混合加密的數據保護方案有以下優勢:(1)全部數據加密上鏈,充分發揮區塊鏈分布式、不可篡改的優勢;(2)充分利用對稱加密速度快與非對稱加密算法安全強度大的特點,滿足指揮信息系統在數據處理速度方面的需求;(3)每條數據對應一個對稱密鑰,可有效防止數據大規模泄露;(4)數據共享信息存儲于區塊鏈上,從而保證信息透明、可審計追溯;(5)指揮控制中心負責管理所有節點的加密密鑰,從而保證其作為指揮控制中樞的權威。
系統方案實現由三部分構成:Fabric網絡環境搭建、多通道配置和智能合約實現。下面將介紹各部分的具體實現。
Fabric網絡提供了聯盟區塊鏈系統的核心服務:(1)區塊鏈服務,維護各通道對應的區塊鏈,并根據區塊鏈的歷史交易數據更新最新數據狀態;(2)智能合約服務,為智能合約運行提供安全、隔離且輕量化的Docker運行環境;(3)成員管理服務,利用公鑰基礎設施實現節點的身份證書創建、管理以及交易的簽名驗證;(4)共識服務,接收并驗證各通道的交易請求,并將其打包為區塊返回至各個通道。在以上基礎服務之上,文中根據圖2用戶層模型搭建Fabric網絡環境,編寫YAML配置文件定義各個組織的屬性,具體屬性如表1所示。

表1 指揮信息系統組織信息
各組織生成一個Peer節點參與區塊鏈管理并存儲全部區塊數據,同時,每個組織包含一個代表自身的客戶端節點用于調用智能合約,作戰平臺節點受限于硬件資源,僅作為次級指控中心的客戶端節點參與到網絡中。最后,利用Fabric編譯工具cryptogen和configtxgen生成各組織節點的證書文件、系統的創世區塊以及通道配置區塊等信息。
為了對機密數據實行訪問控制,利用配置文件將系統組織劃分為三個相互獨立的通道,各通道配置如表2所示。其中,情報通道包含指揮控制中心和兩個預警探測節點,情報數據僅在這三個組織內流通,次級指揮控制中心沒有權限也無需存儲情報通道數據,從而降低存儲和帶寬的需求;同理,指控通道包含指揮控制中心和兩個次級指揮控制中心;共享數據通道包含所有組織以實現全局通用數據的共享。每個通道內均有多個組織對數據進行分布式存儲,從而保障系統有較強的抗毀傷能力,有效避免單點失效問題。

表2 通道配置信息
文中使用Go語言實現上述智能合約,在完成通道配置后,任一客戶端節點可調用智能合約的instantiate方法在所屬通道內對合約進行實例化,并調用Init方法初始化合約。在完成上述過程后,區塊鏈網絡搭建完成,客戶端節點可調用Invoke方法執行對應的智能合約。
本系統的環境搭建工作在VMware虛擬機內完成,虛擬機的配置如下:操作系統為Ubuntu16.04,處理器數量為1,內存為2 GB,硬盤容量為20 GB。
下面以情報通道為例,對智能合約的主要功能進行測試。預警探測節點OrgInfo1調用密鑰申請模塊注冊加密密鑰,結果如圖3所示。

圖3 密鑰申請模塊調用結果
預警探測節點OrgInfo1發現敵方目標后,將目標類型、坐標、速度等信息封裝為合約參數,調用數據共享存儲模塊,并將數據設置為與OrgCC共享,調用結果如圖4所示。通道內的OrgCC節點調用數據獲取模塊并對結果進行解密,可獲取相關情報數據,最終調用結果如圖5所示。

圖4 數據共享存儲模塊調用結果

圖5 數據獲取存儲模塊調用成功
通道內的OrgInfo2節點不在該數據的共享節點列表中,因此,沒有該數據的訪問權限,調用數據獲取模塊會導致失敗,其結果如圖6所示。

圖6 數據獲取存儲模塊調用失敗
由于加密密鑰控制合約調用次數較少,因此,以下性能分析主要集中于數據共享與保護合約上。圖7展示了系統執行多次數據共享存儲和數據獲取請求的響應延遲。整體上,共享存儲請求的響應延遲高于數據獲取請求的延遲,這主要是因為執行共享存儲請求時會生成用于存儲數據的新區塊,區塊的生成以及在各節點間的同步需消耗一定的時間,而數據獲取請求僅需在Peer節點中執行查詢操作,不存在生成新區塊的時間開銷,響應更快。對于共享存儲請求,系統的響應延遲穩定在0.15 s至0.25 s,平均響應時間為0.198 s;數據獲取請求的響應延遲在0.1 s至0.15 s間波動,平均響應延遲為0.126 s,數據寫入和讀取請求都能夠得到較快的系統響應。因此,系統中各節點能夠快速地將戰場信息上傳至區塊鏈,通道內的其他節點可以及時跟蹤所需信息,保障戰場環境下的數據安全可信。

圖7 區塊鏈請求響應延遲
指揮信息系統的部分節點硬件資源性能受限,因此,文中測試了各節點以及鏈碼的Docker容器內存開銷,在各通道執行1 000次數據存儲合約調用后,具體的內存占用情況如表3所示。其中,所有Peer節點容器所占用的內存均小于50 MB,客戶端容器、鏈碼容器的內存占用分別小于2 MB和8 MB,因此,本系統可運行在無人機等小型便攜計算設備上,從而進一步拓展信息廣度和維度,保障戰場的多域信息協同。

表3 節點容器內存占用情況

續表3
針對目前指揮信息系統存在的數據安全難以有效保障的問題,提出了基于聯盟鏈的指揮信息系統數據保護方案。方案在Fabric的基礎上,搭建了小型指揮信息系統網絡,依靠Fabric節點授權準入、通道相互隔離等特性,極大地避免了非授權節點的入侵。同時,為了對數據安全進行細粒度控制,開發了基于混合加密的數據保護智能合約,數據與加密密鑰一一對應,防止數據大規模泄漏,且數據授權共享結果可追溯審計,有效地提高了數據的安全性。測試結果顯示,系統對請求的響應延遲在0.25 s內;客戶端節點和Peer節點所占用內存空間分別小于2 MB和50 MB,說明本系統可運行在性能受限的小型計算設備上,有利于信息的多域協同。綜上,區塊鏈技術與指揮信息系統的結合,能夠保障數據的機密性、完整性,滿足指揮信息系統數據安全保護的需求。文中是區塊鏈應用于指揮信息系統上的初步探索,下一步將繼續完善區塊鏈在該領域的工程應用,提升系統的擴展性,為指揮信息系統提供更高效、安全的數據保護平臺。