葉海明,徐曉東
(1.中國人民解放軍95910部隊,甘肅 酒泉 735000;2. 中國人民解放軍94456部隊,山東 威海 264200)
隨著部隊作戰任務需求不斷變化,作戰樣式及地域持續擴展,從原有的固定訓練靶場向山林、丘陵、沙漠等真實作戰環境延伸,部隊內網從有線網絡為主轉向有線無線網絡混合發展;數據傳輸類型從原有的語音通話、態勢信息,逐步轉換為語音、視頻、數據多種內容的交互共享發展;數據交互范圍從原有的小范圍通信,逐步轉換為跨區域、跨部門、跨業務領域的交互。作戰保障網絡終端(簡稱網絡終端)類型從原有的基于有線網絡的電腦終端,逐步轉向為電腦終端與無線手持終端的混合使用;網絡終端部署的要求也發生了變化,布設從原來的小范圍單建筑單體布設,向大范圍、多區域、快速布設轉變,突出特點為網終端設備的稀疏分散,獨立作戰單位的各類型網絡終端可能分布在十幾平方公里內以多個節點進行接入,各網絡終端之間需保持數據交互。上述變化讓網絡終端管理工作的難度進一步提升,對網絡終端的身份識別及安全認證(簡稱鑒權認證)提出了更高的要求。
傳統的網絡終端鑒權認證方式是基于中心式的集中授權,網絡終端通過證書、口令、硬件信息等方式,通過網絡訪問授權中心獲取授權,驗證后進行服務訪問或數據利用,但該授權認證方式與作戰實際需求存在差異,在鑒權認證的有效性和穩定性方面存在短板。
集中鑒權認證方式可以較好地滿足有線網絡、固定終端的鑒權認證需求,但無法滿足當前近似作戰環境下多種網絡結構并存、多操作系統、多類型硬件設備、多種授權方式下手持終端和PC設備混合組網的終端入網鑒權認證需求,尤其是基于有線網絡和無線網絡業務互通的端到端的服務鑒權認證機制還不完善,單個鑒權服務器的故障即可導致鑒權體系的失效。在作戰期間,任何可疑終端的違規接入,非法進行數據交互、對高密級業務的越權訪問都會造成不可估量的損失。
為解決該問題,提出基于區塊鏈技術,利用其中心化、分布式存儲及信息無法篡改等特性,設計區塊體數據結構,實現網絡終端信息的分布式存儲,并利用AES算法對敏感數據進行加密傳輸,實現網絡終端設備的鑒權認證,滿足作戰保障對網絡終端設備鑒權所需的低成本、抗損毀、高兼容性要求。
隨著作戰保障需求的提高,要求作戰保障網絡能夠實現對所屬戰場環境的時間、空間信息實現實時采集、實時監測、作戰信息的實時傳輸。能夠為作戰單元的指揮維修提供及時、有效、可靠的數據支撐。因此,原有的范圍固定、功能單一的作戰信息保障模式已經無法滿足現有需求,作戰通信網絡已逐步由單一的數據傳送網絡或話音傳送網絡向數據、話音、視頻和交互式多媒體等多種類型信息的綜合傳輸服務演進,網絡服務逐漸向多樣化的方向發展,終端類型更加多樣、網絡結構也變得更加復雜,具備分散性、異構性、融合性的發展[1]發展趨勢,網絡結構可見下圖1所示。網絡終端類型更加多樣,其服務內容逐漸向多樣化的方向發展,更有效滿足通信和信息獲取的需求。主要體現在是在移動無線網絡與固定有線網絡的融合互通以及無線自組網設備的互聯互通上。作戰相關的信息保障任務主要是通過兩類終端完成:1)基于有線網絡的PC終端,用于態勢數據的存儲、計算及分析應用;2)基于無線網絡的手持終端,用于現場的指揮調度、動態數據的采集存儲及作戰保障相關業務數據的訪問。

圖1 異構網絡框架
新的網絡架構及終端類型必然對應新的需求,網絡終端的權限鑒別成為影響作戰保障網絡安全的瓶頸因素,由于網絡規模龐大,終端設備從硬件類型到操作系統均有較大差異,如何能夠進行統一的鑒權驗證,確保入網終端的安全可靠是必須要關注的問題。作戰保障網絡對網絡終端認證,在保證安全性的前提下,有以下幾方面的需求:1)抗損毀效果好,穩定性強,單個或多個網絡交換節點機鑒權認證設備的損壞不會造成重大影響;2)兼容性好,對終端設備的硬件類型、操作系統、業務應用有較好的兼容性;3)維護性強,運行維護成本極低,對維護人員及各種備品備件要求低,能夠實現在野外等惡劣情況下的快速維修。
現階段主流的網絡終端鑒權模式還是基于同構網絡的集中鑒權模式為主,實際上是基于中心式的C/S模式,實現方式為以下幾種:1)基于網絡接入設備或交換設備的硬件形式的鑒權認證,即采用基于網絡硬件設備的IPSOURCEGUARD授權認證方式;2)基于鑒權服務器的軟件或加密卡等定制軟硬件結合產品的授權認證方案,即采用星型、總線型的混合拓撲結構,通過集中安管設備進行接入終端的認證授權。
集中式鑒權驗證模式針對使用相同技術體制、網絡架構且終端集中部署的專網有成熟的解決方案及有較多的成熟產品,能夠滿足現有的民用需求。但考慮到實戰過程中無法保證數據鏈路的穩定性,在實戰環境下部分網絡交換節點甚至包括核心交換節點均存在被破壞的可能性,一旦交換節點被破壞,基于集中式的網絡終端的鑒權驗證就無法實現,會允許未經授權終端訪問敏感數據,造成失泄密問題。為解決這一問題,現在主要的解決措施是在集中式鑒權驗證的基礎上進行分區域的多重多次鑒權,將多個在業務上較為獨立的子網進行統一整合,在實現基層網絡層互聯互通的基礎上,各業務的授權認證體系進行整合,形成多重授權的結構[2]。因此A區域終端訪問C區域終端的拓撲結構可簡化為以授權設備為核心的多個星型拓撲結構的連接,如終端ClientA1與ClientC1實現交互,必須通過Authen A、Authen B、Authen C三次授權認證通過后方可進行互聯互通,如圖2所示。

圖2 集中式授權拓撲結構圖
該模式存在的缺點:1)抗損毀能力弱,該模式較單一網絡授權認證設備的集中授權模式抗損毀性確有提升,但依賴單獨授權認證設備的問題并未得到根本解決,要求任何一個業務區域必須存在授權認證設備,一旦該授權認證設備被損毀,還是會導致該區域無法實現網絡終端鑒權;2)兼容性不理想,該方案縱向橫向兼容性均不理想,不同業務子網的授權驗證方式不同,有通過域安全授權認證、有通過基于硬件的IPSOURCEGUARD授權認證、有通過RADIUS方式授權認證,差異較大,會出現授權認證體系無法兼容導致情況;3)靈活性不高,授權方式固定,入網終端必須與授權設備聯網后方可實現授權認證,且需要通過專用硬件實現,性能提升空間不大;4)成本偏高,作戰保障網絡入網終端分布地域面積廣、終端數量并不多,一個C類地址段可滿足網絡終端入網需求,如使用集中式鑒權模式,需配置大量的鑒權認證設備,維護成本高昂。因此,集中式網絡鑒權模式很難滿足作戰保障網絡終端鑒權的需求。
作戰保障網絡可進行簡化,即各個業務子網中各終端可以互相訪問也可通過匯聚交換機與其他業務子網中的終端進行訪問,即可視為多個P2P網絡組成的異構網絡。因此,嘗試通過使用區塊鏈技術將集中式的C/S模式的入網終端認證模式,進行簡化轉變為基于P2P網絡(Peer-to-peer networking,對等網絡)終端鑒權認證模式[3],不再依賴于單一的授權鑒權設備,而是實現每一臺入網終端既訪問數據也為提供入網終端的鑒權服務。
P2P網絡終端鑒權的技術特點體現在以下幾個方面:
1)去中心化[4],網絡中的所有資源和服務分散在所有節點上,信息的傳輸和服務的實現都直接在節點之間進行,無需中間環節和服務器的介入。
2)可擴展性,在P2P網絡中,隨著終端的接入,不僅服務的需求增加了,系統整體的資源和服務能力也在同步地擴充,始終能比較容易地滿足需要。
3)健壯性,P2P架構天生具有耐攻擊、高容錯的優點,由于鑒權服務是分散在各個終端設備之間進行的,部分設備或網絡節點遭到破壞對其它部分的影響很小。由于對等網絡不需要專門的服務器來做網絡支持,因此組網成本較低,維護性高。
4)安全性[5-6],基于密碼學技術保證,未經授權終端即使能夠訪問到區塊鏈數據,但無法解析數據內容,能夠確保數據的安全性。
設計私有區塊鏈[7-8],區塊鏈中的每個區塊包含著終端詳細信息及對應的權限限制,同時包含著前一數據塊的哈希值,在網絡中任意一臺入網終端都能夠訪問,合法終端通過加密算法可以對區塊鏈信息進行讀取,從讀取的信息中判斷該終端的類型及訪問行為是否合法。
該算法對在區塊鏈交易算法的基礎上進行了改進,取消了POW工作量驗證機制及transactions交易機制,不需要重復挖礦、不設置Proof驗證,避免挖礦導致的硬件資源大量占用的情況。具體步驟如下:
步驟1:創建區塊信息。合法網絡終端設備通過一個公私密鑰對與區塊鏈網絡交互,創建入網終端的區塊信息。區塊的組成內容包括加密后的基本信息及hash頭兩部分,基本信息包括該入網終端的IP地址、MAC地址及訪問權限;hash頭信息,基于入網終端基本信息,使用sha256算法進行封裝生成hash頭,可確保一旦區塊中的信息被篡改,hash頭信息均會改變,該區塊失效,確保在區塊鏈中記錄的信息無法被篡改。
步驟2:形成區塊鏈。通過socket/http端口向臨近的對等終端進行組播,接收端對合法區塊進行驗證,驗證后加入到區塊鏈中,形成區塊鏈如圖3所示。

圖3 區塊鏈組成圖
步驟3:形成共識。通過socket/http端口進行組播,網絡內的對等終端電腦如出現區塊認知沖突,則通過比較最長區塊鏈獲取共識信息,并通過該鏈識別網內終端電腦的授權是否合法,因此形成共識的工作分為兩步,第一步將區塊信息向專網內部所有終端以單播或廣播形式發送;第二步,網內終端區塊鏈信息不一致時,通過比較最長區塊鏈獲得共識信息,并以最長區塊鏈為合法區塊鏈。
步驟4:全網終端授權鑒權完成。一旦有新終端入網則自動重復步驟1~3,實現新終端的鑒權認證;
步驟5:被訪問設備監聽訪問消息,并從區塊鏈數據記錄中獲取提交訪問需求設備的信息,確定該設備是否能進行數據訪問,并將上述內容添加到區塊鏈中向全網進行廣播。
步驟6:網絡內部任意終端設備受到廣播消息后,驗證消息是否有效,若無效則丟棄,有效則向其下一跳節點轉發。最后,將有效的交易消息傳播到整個區塊鏈網絡。
網絡終端鑒權的區塊鏈實際上屬于私有鏈(private block chains),主要功能是對入網終端設備訪問行為進行鑒權,如符合權限要求則允許進行數據訪問;如出現越權訪問請求則禁止數據交互行為并將該終端設備標記為非法終端,同時將非法終端數據添加到區塊鏈里,禁止所有合法終端與該終端進行數據交互。
3.1.1 區塊鏈設計
針對網絡終端鑒權的要求,對區塊的區塊頭及區塊體進行設計,詳情如表1所示,區塊頭由本區塊的hash碼、前一區塊的hash碼及本區塊產生的時間戳信息組成;區塊體由入網終端注冊的IP地址、MAC地址、訪問權限及該設備的行為屬性信息。最終,由上述區塊組成一個完整的區塊鏈。
區塊體的代碼實現如下:
def __init__(self):
self.chain=[]
self.hash = None

表1 區塊鏈數據結構
self.previous_hash = None
self.timestamp = time.time()
如果還有其他的數據內容添加進來,則選取它的hash值作為本數據塊的previous_hash,組建區塊頭
def link(self, block):
self.previous_hash = block['hash']
def create_block(self,data):
JsonData={
'timestamp':time.time(),
'data':data
}
生成區塊鏈的哈希碼
JsonData_serialized = json.dumps(JsonData, sort_keys=True).encode('utf-8')
JsonData_hash = hashlib.sha256(JsonData_serialized).hexdigest()
if len(self.chain)>0:
self.link(self.chain[-1])
構建區塊信息
block={
'timestamp':time.time(),
'hash':JsonData_hash,
'pre_hash':self.previous_hash,
'data':data
}
self.chain.append(block)
return block
3.1.2 共識算法實現
通過socket/http端口進行組播,通過比較最長區塊鏈獲取共識信息,并通過該鏈識別網內終端的授權級別及訪問行為是否合法。形成共識的工作分為兩步:
步驟1:將區塊信息向專網內部所有終端以單播或廣播形式發送,區塊信息網內廣播。
def sendToNode(self,ip,block):
將區塊信息向專網內部所有終端進行發送
sendSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sendSocket.sendto(msg, (ip,NETWORK_PORT))
def broadcastSync(self):
self.broadcastPacket(packet_sync_request)
以廣播形式將區塊信息向網內進行發送
def broadcastPacket(self,packet):
broadcastSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
broadcastSocket.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
broadcastSocket.sendto(packet, ("255.255.255.255",NETWORK_PORT))
步驟2:網內終端區塊鏈信息不一致時,通過比較最長區塊鏈獲得共識信息,并以最長區塊鏈為合法區塊鏈。
獲得專網內部所有終端的IP地址信息,用于進行區塊鏈共識比較
def register_nodes(self):
values = request.get_json()
nodes = values.get('nodes')
if nodes is None:
return "Error: 節點序列", 400
for node in nodes:
blockchain.register_node(node)
response = {"message": "新的節點已經被添","total_nodes":list(blockchain.nodes)}
return jsonify(response), 201
進行共識比較
def resolve_conflicts(self):
neighbours = self.nodes
new_chain = None
max_length = len(self.chain)
使用http端口從網內終端獲取區塊鏈,選最長的區塊鏈為合法的共識鏈
for node in neighbours:
print('http://' + node + '/chain')
response = requests.get('http://' + node + '/chain')
if response.status_code == 200:
length = response.json()['length']
chain = response.json()['chain']
找到最長的區塊鏈,進行替換
if length > max_length and self.valid_chain(chain):
max_length = length
new_chain = chain
if new_chain:
self.chain = new_chain
return True

圖4 區塊鏈數據內容
3.1.3 區塊體數據加密實現
使用批量加密算法AES加密區塊鏈信息,主要是對區塊體中的IP、MAC、level、ActionAttribute等信息進行加密,確保只有合法用戶才能訪問區塊鏈中的信息。
{
timestamp:1581080747.2656
this_hash:c1cefc158fc196005836bba24554b3c7a87dc3ea35a7c7
83a12e587d51cfe432
previous_hash:5847ed1b0023d2dab298f56c3a69525e591ead81c
a153933d3ed1d84ac04b683
IP:192.168.1.201
MAC:01-AF-3B-BA-CA-AC
level:normal
ActionAttribute:legal
}
只對區塊體數據進行加密,區塊體經AES加密后,區塊鏈數據如下所示:
{
timestamp:1581080747.2656
this_hash:c1cefc158fc196005836bba24554b3c7a87dc3ea35a7
c783a12e587d51cfe432
previous_hash:5847ed1b0023d2dab298f56c3a69525e591ead8
1ca153933d3ed1d84ac04b683
IP:jfLJIMw0oL2UkkP2AZ0URQ==
MAC:CREbYAbe1sKN7jqbsvROMg7NNJpqWFF51d5qiBheVf4=
level:Fy1lCln1MqM2S5JmT4XvdQ==
ActionAttribute:0gy0FTQHOUxaGDUU84fXuQ==
}
通過sqlite數據庫對區塊鏈中的區塊信息進行數據進行存儲,核心是將區塊鏈信息轉換為JSON,并讀取JSON中的數據內容存儲至終端內部的sqlite數據庫中,實現區塊鏈信息的持久化存儲[9]。對區塊鏈信息解密后存儲至sqlite數據庫后數據內容如圖4所示。
使用基于區塊鏈技術的分布式鑒權認證模式,可實現在網絡狀態不穩定、入網終端分散、維護力量薄弱的情況下實現入網終端的鑒權工作。基于區塊鏈的分布式入網終端鑒權和集中式入網終端鑒權在安全性和性能方面的綜合比較如表2所示。

表2 性能對照表
根據區塊鏈的工作原理及技術特征,結合作戰保障的實際應用場景,針對網絡通信狀態不穩定、節點設備易損壞、維護人員不足的現實情況,設計了基于區塊鏈的分布式入網終端鑒權體系[10],并解決了區塊數據結構設計、共識算法實現、區塊鏈數據持久化及數據加密實現等幾個核心技術問題,搭建了分布式網絡終端授權系統,并與傳統的集中式鑒權模式從性能方面進行了比較,為構建符合作戰保障需求的網絡終端入網鑒權服務的實現進行了探索。