陳靖宇
(中國船舶重工集團公司第七二三研究所,江蘇 揚州 225101)
隨著網絡技術的快速發展,網絡已廣泛應用于現代軍事領域,人民防空(以下簡稱人防)也加快了信息化建設的步伐[1]。但其中的人防雷達組網通訊時受環境與成本等因素限制,難以自建專用保密網絡,而往往租用電信網絡專線進行信息交互,其網絡設備與民用設備沒有完全隔離,易受到敵方的入侵,安全性難以保障;另一方面,由于其安全等級較部隊的武器裝備低,較少使用軍用密碼機進行加密傳輸,一般使用簡單的加密方法甚至直接采用明碼傳輸,通訊協議又多采用不可靠的用戶數據報協議(UDP),易被敵方獲取并破解進而造成泄密,對人防工程具有較大的危害。因此需要采用一種不易破解、通用化、開發成本低、實時性高的安全措施將各雷達間的信息進行加密傳輸,保障其信息安全。
安全套接層協議(SSL)以及后續的傳輸層安全協議(TLS)和數據傳輸層協議(DTLS)是網絡通信的常用安全協議。SSL利用數據加密技術廣泛應用于Internet網絡通訊,可確保數據在網絡傳輸過程中不會被截取及竊聽,為數據通訊提供安全支持。雖然早期版本有心臟漏血的漏洞,但很快進行了修補,其安全性有較高的保障,且得到了長期驗證。TLS支持傳輸控制協議(TCP),但是對于人防雷達組網通訊常用的UDP協議則無法支持。DTLS則是在TLS協議的基礎上進行了擴展,提供了對UDP的支持,可以看做是UDP版本的TLS,具備了同樣的安全機制和防護等級。 DTLS協議簡單易用,開發成本低,已被廣泛用于電子郵件協議(如交互郵件訪問協議(IMAP)和郵局協議(POP)等)。
針對人防雷達組網通訊中常用的UDP協議安全問題,本文提出一種在人防雷達組網通訊中利用OpenSSL開發包,實現基于DTLS協議的密鑰生成與管理、數據加密解密和身份驗證的軟件方案,提高人防雷達組網通訊的安全性。
由于人防雷達組網時多采用公用網絡,因此首先要保證網絡鏈路的安全,需要在構建網絡環境時注意以下幾點:
(1) 雷達系統與外網應采取物理隔離,不可接入外網交換機或計算機;
(2) 使用訪問控制設備或軟件限制各節點的訪問權限,防止超出權限的數據訪問;
(3) 安裝防火墻與安全軟件對入侵者進行防范,可及時發現非授權設備接入并將其隔離;
(4) 可采用雙冗余網絡、雙服務器的方式提高網絡與數據的可靠性與安全性。
一個典型的人防雷達網絡構架一般由一個控制中心、若干部雷達以及防空武器組成,之間通過光纖與網絡交換機、路由器等連接,如圖1所示。

圖1 人防雷達網結結構示意圖
控制中心一般安裝有多部計算機,配置有網絡防火墻、殺毒軟件等安全設備,安全保障條件與設施較為全面。因此在控制中心設有訪問管理服務器與認證服務器,作為DTLS的服務器端,而雷達顯示與控制終端計算機(簡稱用戶終端)與遠端的雷達與防空武器作為客戶端。訪問控制(AC)服務器是一個可信任的資源服務器,其中存儲了網絡中各雷達節點的權限,另一個則是認證授權(CA)。在網絡中,身份由服務器的公鑰密碼體制(PKC)建立,由X.509證書提供。X.509證書中包括有證書版本、序列號、簽名算法標識符、簽發人、有效期以及最核心主體公鑰信息,認證中心CA通過證書簽名標記確認證書擁有者的身份,防止攻擊者通過偽造證書假冒節點身份,并使接收者可以檢測證書是否被修改[2]。
控制中心的用戶終端計算機可以與AC服務器進行認證,并請求對雷達節點接入授權,AC服務器檢查用戶的訪問權限決定是否允許建立連接,如允許則建立兩者間的DTLS握手。管理服務器與認證服務器的環境構建本文不做描述,下文將重點說明使用DTLS協議的握手與傳輸過程。
DTLS 協議是在UDP的套接字上實現了客戶機與服務器的握手連接,在握手過程中通過使用算法實現了數據加密,利用驗證機制和證書實現了通信雙方的身份認證。另外,DTLS還有一個簡單的超時重傳機制來處理UDP丟包問題。
DTLS 協議介于TCP/IP的網絡傳輸層和應用層之間(見圖2),與常規的TCP/IP發送方式不同的是,應用層數據不是直接發送給傳輸層,而是發送給SSL層,SSL層對應用層數據進行加密并增加SSL加密信息頭(簡稱SSL頭),SSL層處理后的數據作為傳輸層輸入之后與正常TCP/IP協議一樣發送到網絡上。接收與之相反,在傳輸層收到數據后去除SSL頭并對數據解密后,將明文發送到接收方的應用層。

圖2 SSL在TCP/IP協議中的位置
DLTS協議的模型由上層的握手消息、應用數據、改變密碼規則、警告消息以及記錄層組成,如圖3所示。
當客戶端與服務器需要通過DTLS協議發送數據時,首先對應用層數據進行分段、壓縮與加密,之后添加DTLS記錄頭,封裝協議后調用UDP的套接字進行發送。接收過程則與之相反,不過接收方需先判斷消息是否被加密,進而需解密后方可讀取出正確的數據。建立數據報文的過程如圖4所示。

圖3 DTLS協議模型
DTLS的傳輸過程則分為握手和握手建立之后的數據傳輸。其中握手過程分為4個階段,如圖5所示。

圖4 DTLS協議數據包的建立過程

圖5 DTLS握手過程
第一階段:建立安全能力。
客戶端向服務端發送Client Hello(客戶機握手)消息,并等待服務端響應;服務端向客戶端發送Server Hello(服務器握手)消息,包含服務器選擇的連接參數。
第二階段:服務器認證與秘鑰交換。
服務器端向客戶端發送 Certificate(即證書),使客戶機能用服務器證書中的服務器公鑰認證服務器。服務器端請求客戶端數字證書,客戶端在 Certificate Verify 消息中證明自己的身份,服務端向客戶端發送Server Hello消息,標示客戶機可以驗證服務器發送的X.509證書。
第三階段:客戶機認證與秘鑰交換。
服務器端請求客戶端數字證書,如客戶端有證書即對身份進行雙向認證,如沒有證書時則隨機生成。
第四階段:完成。
客戶機發送改變加密規范(Change Cipher Specs)、完成(Finished)消息,后服務器發送改變加密規范(Change Cipher Specs)、完成(Finished)消息。
客戶端收到服務器發來的會話秘鑰與Finished報文后,標志整個握手階段的結束,便可發送應用數據,并且應用數據會一直用會話秘鑰加密,從而保證通訊內容的安全性[3]。
雷達組網通訊中實現DTLS通訊最為便捷的方法是利用開源的OpenSSL開發包。OpenSSL 采用C語言作為開發語言,支持Windows、Linux等多種平臺,對SSL和TLS 提供了較好的支持。早期的版本只支持TCP,經過擴展,新版已支持UDP。OpenSSL開發包內置有SSL協議庫、應用程序以及密碼算法庫,提供了主要的密碼算法、密鑰和證書管理功能以及SSL協議[4]。
使用OpenSSL 開發包實現網絡的加密傳輸可分為服務器端與客戶端2種。服務器端的通信過程一般包括: SSL 庫初始化,載入證書和私鑰,創建 SSL,利用 SSL 進行收發,產生私鑰與公鑰。創建好套接字后與服務器端連接產生SSL,將套接字加入到 SSL 當中,建立SSL通信后就可以利用 SSL進行收發數據(使用OpenSSL庫的加密算法)等操作,操作結束后關閉并釋放 SSL,整個連接請求完成后系統可關閉連接并釋放 SSL_CTX[5]。客戶端通信過程與之基本相似,只是少了對私鑰與公鑰的產生與管理。使用OpenSSL實現服務器端與客戶端通訊的過程如圖6所示。

圖6 使用OpenSSL實現服務器端與客戶端通訊的過程
軟件實現的流程圖如圖7所示,OpenSSL也提供了例程可供參考。

圖7 使用OpenSSL 開發DTLS通訊的軟件流程圖
由于本文設計的系統中通訊硬件采用的是小型嵌入式處理器,運算能力有限,因此我們選用簡化的預共享密鑰(PSK)交換算法,即在服務端預置密鑰,簡化了密鑰交換過程,可快速完成信息交換。 缺點是一旦PSK泄露,將無法保證安全性。OpenSSL自帶有多種加密算法庫,如高級加密標準(AES)、非對稱加密復法(RSA)、對稱密碼體制DES、PSK等,開發者可直接調用。因此對于加密算法,本文不再贅述。但需注意的是,不同算法帶來的數據傳輸及計算性能開銷是不同的,需要針對不同的情況選擇合適的算法。
通過簡化握手過程與加密算法等手段,在實際使用過程中,采用DTLS協議在無較大數據量的情況下收發網絡數據較常規方式對處理器的占用與數據的實時性影響不大,不影響整個系統的性能。
人民防空是一項重要的國防安全戰略,人防雷達組網可大大提升整體防空能力,但組網后的網絡安全并未得到足夠的重視,戰時易受到敵方攻擊。近幾年人防建設投入持續加大,但針對人防雷達組網通訊安全的研究則相對較少。本文基于廣泛應用于互聯網的DTLS協議,提出了一種雷達組網通訊上端到端的安全傳輸實現方案,該方案主要利用OpenSSL實現DTLS協議的握手過程以及對用戶和節點身份的雙向認證,并對數據進行加密傳輸。本方案軟件開發成本低,實現難度小,可以大大提高人防雷達組網通訊的安全性。