龔 智,劉 超,付 強
(武漢船舶通信研究所,湖北 武漢 430205)
天地一體化網(wǎng)絡是由高軌衛(wèi)星、低軌衛(wèi)星以及地面站點組成的一體化網(wǎng)絡,是基于IP技術的通信網(wǎng)路。由于TCP(Transmission Control Protocol)/IP協(xié)議具有開放性和靈活性的特點,使網(wǎng)絡上傳輸?shù)拿鲬B(tài)IP數(shù)據(jù)包易遭受竊聽、篡改等攻擊,給網(wǎng)絡數(shù)據(jù)安全傳輸帶來較大威脅。因此,構建一個具有機密性、完整性和可認證性等安全特性的天地一體化網(wǎng)絡愈發(fā)重要[1]。
IPSec協(xié)議是IETF(Internet Engineering Task Force)提供的在因特網(wǎng)上進行安全通信的一系列規(guī)范,它為局域網(wǎng)、專用網(wǎng)、公用廣域網(wǎng)和因特網(wǎng)上傳輸?shù)腎P數(shù)據(jù)報提供安全通信能力,保證其高質量、保密性和可操作性,為私有信息通過公用網(wǎng)提供了安全保障。使用IPSec協(xié)議設計實現(xiàn)的虛擬專用網(wǎng)網(wǎng)關具有數(shù)據(jù)機密性、完整性、可認證性以及成本低等優(yōu)點。IPSec協(xié)議主要包括兩種安全協(xié)議,即驗證頭(Authentication Header,AH)協(xié)議和封裝安全載荷(ESP)協(xié)議。AH協(xié)議通過使用數(shù)據(jù)完整性檢查,不僅可判定數(shù)據(jù)包在傳輸過程中是否被修改,過濾通信流,還可防止地址欺騙攻擊和重放攻擊。ESP協(xié)議包含凈負荷封裝與加密,為IP層提供的安全服務包括機密性、數(shù)據(jù)源驗證、抗重播、數(shù)據(jù)完整性和有限流量控制等。相較于AH協(xié)議,ESP協(xié)議安全性更高,實現(xiàn)復雜性也較高[2-3]。
文獻[4]基于IPSec的網(wǎng)絡安全系統(tǒng)設計與VPN構建實現(xiàn)和文獻[5]基于IPSec協(xié)議的VPN安全網(wǎng)關的設計與實現(xiàn)介紹的方案都是采用傳統(tǒng)單主機同時連接內、外網(wǎng)處理單元設計網(wǎng)絡安全設備,存在非授權用戶通過外網(wǎng)直接訪問受保護內網(wǎng)的風險。雖然文獻[5]在軟件設計中加入了防火墻的安全防護技術,能夠防御外部非法攻擊,但由于互聯(lián)網(wǎng)分組軟件和信息需要經(jīng)過防火墻的過濾,這可能導致出現(xiàn)網(wǎng)絡交通瓶頸的。例如當攻擊性分組出現(xiàn)時,攻擊者一直寄出分組,以此使防火墻疲于分組。因此,一些合法的信息和軟件都不能正常進出防火墻[6]。
為解決上述問題,本文提供了一種基于紅黑隔離架構的網(wǎng)絡安全設備新方案。該網(wǎng)絡安全設備具有抗攻擊能力強、加密算法可更換以及加密速率高等優(yōu)勢,是天地一體化網(wǎng)絡安全通信的重要組成部分。部署在天地一體化網(wǎng)絡中的網(wǎng)關、服務器等節(jié)點設備或一個子網(wǎng)的一側,采用ESP協(xié)議,負責為傳輸?shù)臉I(yè)務/信令數(shù)據(jù)提供門衛(wèi)式IP層加密保護。
網(wǎng)絡安全設備基于Linux的TCP/IP協(xié)議棧核心中的商用IPSec框架進行設計,采用高級加密標準(Advanced Encryption Standard,AES)算法和SM4算法等加密算法,并支持算法動態(tài)切換。負責對IP數(shù)據(jù)包實行基于源IP地址、源端口、目的IP地址、目的端口以及協(xié)議號等5個要素(簡稱“五元組”)的安全保密規(guī)則合法性驗證,并采用自定義IPSec隧道加密協(xié)議進行IP數(shù)據(jù)包加密。
本文選用的AES算法是為替代DES(Data Encryption Standard)發(fā)布的新一代數(shù)據(jù)高級加密標準,具有運行快、安全性高以及資源消耗少等特點[7-8]。SM4算法是國密標準中的分組對稱密鑰算法,可用于國際信息安全相關各個領域。在IPSec加密過程中需使用SM4分組密碼算法[9-10]。
網(wǎng)絡安全設備組成原理如圖1所示。
圖1 網(wǎng)絡安全設備組成原理Figure 1. Principle of network security device composition
網(wǎng)絡安全設備按照物理“紅黑隔離”架構進行設計,包含紅區(qū)內網(wǎng)處理、黑區(qū)外網(wǎng)處理和安全服務區(qū)3個各自獨立的模塊單元。紅區(qū)、黑區(qū)處理單元對外與傳輸信道關聯(lián),完成網(wǎng)絡接入、協(xié)議解析、數(shù)據(jù)提取以及協(xié)議封裝等功能。紅區(qū)處理單元連接天地一體化網(wǎng)絡中的本地受保護單機或子網(wǎng),實現(xiàn)內網(wǎng)明態(tài)IP包的處理。黑區(qū)處理單元連接天地一體化網(wǎng)絡中的公網(wǎng),實現(xiàn)公網(wǎng)密態(tài)IP包的處理。安全服務模塊主要用于實現(xiàn)對天地一體化網(wǎng)絡上傳輸?shù)臉I(yè)務/信令數(shù)據(jù)的加解密處理,并通過內部總線分別連接紅區(qū)處理單元和黑區(qū)處理單元,完成紅區(qū)和黑區(qū)業(yè)務通道的有效隔離和業(yè)務信息轉發(fā)[11-13]。
當本地受保護單機或子網(wǎng)通過網(wǎng)絡安全設備發(fā)送業(yè)務/信令數(shù)據(jù)IP包給遠端時,網(wǎng)絡安全設備加密轉發(fā)本地受保護單機或子網(wǎng)業(yè)務/信令數(shù)據(jù)的原理流程如圖2所示。
圖2 加密轉發(fā)本地數(shù)據(jù)原理Figure 2. Principle of encrypted forwarding local data
本地受保護單機或子網(wǎng)發(fā)送業(yè)務/信令數(shù)據(jù)給網(wǎng)絡安全設備,內網(wǎng)處理模塊按照基于“五元組”的安全保密規(guī)則對業(yè)務/信令數(shù)據(jù)IP包進行合法性驗證。如果受保護的源IP地址、源端口、目的IP地址、目的端口以及協(xié)議號等與內置的安全保密策略一致,則安全保密規(guī)則驗證通過,并按自定義IPSec隧道加密協(xié)議完成ESP封裝,再轉至安全服務模塊,否則直接丟棄。安全服務模塊通過選定的加密算法(AES算法或SM4算法)實現(xiàn)ESP封裝報文的加密處理,并在完成加密后將密態(tài)ESP封裝報文轉至外網(wǎng)處理模塊,由外網(wǎng)處理模塊發(fā)至遠端受保護單機或子網(wǎng)。
當本地受保護單機或子網(wǎng)通過網(wǎng)絡安全設備接收遠端業(yè)務/信令密態(tài)數(shù)據(jù)IP包時,網(wǎng)絡安全設備解密轉發(fā)遠端業(yè)務/信令數(shù)據(jù)的原理流程如圖3所示。
圖3 解密轉發(fā)遠端數(shù)據(jù)原理Figure 3. Principle of decrypted forwarding remote data
網(wǎng)絡安全設備接收遠端業(yè)務/信令密態(tài)數(shù)據(jù)IP包,外網(wǎng)處理模塊將密態(tài)數(shù)據(jù)IP包轉至安全服務模塊,安全服務模塊通過選定的加密算法(AES算法或SM4算法)實現(xiàn)解密處理,并在完成解密后將明態(tài)ESP封裝報文轉至內網(wǎng)處理模塊。內網(wǎng)處理模塊首先去掉ESP封裝,并還原得遠端業(yè)務/信令數(shù)據(jù)IP包,再按照基于“五元組”的安全保密規(guī)則對IP包進行合法性驗證,如果受保護的源IP地址、源端口、目的IP地址、目的端口以及協(xié)議號等與內置的安全保密策略一致,則驗證通過,并轉至本地受保護單機或子網(wǎng),否則直接丟棄。
網(wǎng)絡安全設備硬件主要由內網(wǎng)處理模塊硬件、外網(wǎng)處理模塊硬件和安全服務模塊硬件等組成。各模塊的連接關系如圖4所示。
圖4 網(wǎng)絡安全設備硬件組成Figure 4. Network security device hardware components
內網(wǎng)處理模塊和外網(wǎng)處理模塊上的CPU均采用32位A8系列ARM芯片AM3352[14]作為主處理器。該芯片工作頻率為720 MHz,總線寬帶為32 bit,工作溫度為-40~+90 ℃,集成了EMIF接口、UART接口、以太網(wǎng)MAC接口等,可以連接多種外圍設備和存儲器以及同步、異步器件等。其上運行內核版本為3.2.0的Linux操作系統(tǒng),分別承載網(wǎng)絡安全設備的內、外網(wǎng)嵌入式軟件,通過EMIF總線接口掛載NANDFLASH芯片和SDRAM芯片,用于存儲和運行嵌入式軟件二進制執(zhí)行程序,通過UART串口對外提供指令輸入,實現(xiàn)加密算法二進制執(zhí)行程序的動態(tài)切換,通過網(wǎng)絡PHY芯片對外提供10/100自適應電口用戶接入。
安全服務模塊的處理核心為FPGA(Field Programmable Gate Arrcry),采用5CGTFD7D5F27I7N[15]芯片。該芯片具有149 500個LE單元,工作頻率高達550 MHz,工作溫度為-40~+100 ℃,支持多種IO接口。I/O引腳為480個,并具有高達7.696 Mbit的片內RAM,適合在片內構造AES或SM4加密算法邏輯,用于實現(xiàn)網(wǎng)絡安全設備的加密運算。此外,通過數(shù)據(jù)總線掛載NANDFLASH芯片和SDRAM芯片,用于存儲和運行加密算法二進制執(zhí)行程序,通過SPI接口掛載噪聲源發(fā)生器和NORFLASH芯片,用于產(chǎn)生和存儲加密用的安全參數(shù),通過GPIO控制指示燈進行設備狀態(tài)顯示,通過各個獨立的32位讀數(shù)據(jù)總線和寫數(shù)據(jù)總線與內網(wǎng)處理模塊、外網(wǎng)處理模塊進行數(shù)據(jù)交互,安全服務模塊實現(xiàn)業(yè)務數(shù)據(jù)的高速加解密處理。電源模塊為各功能模塊提供相應的直流電源。
內網(wǎng)處理模塊軟件基于嵌入式Linux操作系統(tǒng),主要完成本地受保護單機或子網(wǎng)業(yè)務/信令數(shù)據(jù)IP包收發(fā)、安全保密規(guī)則合法性驗證、ESP封裝與解封以及設備故障報警等功能。
內網(wǎng)處理模塊接收本地IP包處理流程如圖5所示。
圖5 內網(wǎng)處理模塊接收本地IP包處理流程Figure 5. Intranet module receives local IP packet process
當內網(wǎng)處理模塊接收來自本地受保護單機或子網(wǎng)業(yè)務/信令明態(tài)數(shù)據(jù)IP包時,首先由網(wǎng)絡驅動程序獲取明態(tài)數(shù)據(jù)IP包,調用netif_receive_skb(·)函數(shù)進行處理,該函數(shù)通過調用packet_type數(shù)據(jù)結構中的注冊函數(shù)ip_rcv(·)函數(shù),將IP包上傳至網(wǎng)絡層。在網(wǎng)絡層ip_rcv(·)函數(shù)通過調用ip_rcv_finish(·)函數(shù),將IP包交給ip_route_input_common(·)函數(shù)進行路由處理。由于此時網(wǎng)絡安全設備的內網(wǎng)口未連接能訪問遠端受保護單機或子網(wǎng)的路由器,無法找到下一跳路由。如果按照ip_route_input_common(·)函數(shù)的默認處理流程,則導致IP包因找不到正確的路由路徑而報錯退出。因此,本文修改了ip_route_input_common(·)函數(shù)的處理流程。當IP包為需要ESP封裝加密的通信報文時,ip_route_input_common(·)函數(shù)強制調用ip_forward(·)函數(shù),將IP包轉發(fā)到下一步處理。在ip_forward(·)函數(shù)中,通過調用xfrm4_policy_check(·)函數(shù)實現(xiàn)基于“五元組”的安全保密規(guī)則合法性驗證,如果IP包的源IP地址、目的IP地址、源端口、目的端口以及協(xié)議號等與內置的安全保密策略一致,則驗證通過,并繼續(xù)調用xfrm4_route_forward(·)函數(shù)查找協(xié)商產(chǎn)生的安全聯(lián)盟SA,否則將驗證失敗的IP包直接丟棄。ip_forward(·)函數(shù)在找到安全聯(lián)盟SA后,調用ip_forward_finish(·)函數(shù),將IP包轉交至xfrm4_output(·)函數(shù)開啟ESP封裝加密變換。本文根據(jù)自定義IPSec隧道加密協(xié)議,修改了xfrm4_output(·)函數(shù)逐層調用的xfrm_output2(·)、xfrm_state_check_space(·)、xfrm4_mode_tunnel_output(·)及esp_output(·)等函數(shù),實現(xiàn)了在原IP報頭前添加新的外網(wǎng)IP報頭和ESP報頭,在原IP包尾部添加計算得到的加密填充長度值、下一個頭協(xié)議值以及填充數(shù)據(jù),并將完成ESP封裝的報文通過32位數(shù)據(jù)總線發(fā)送到安全服務模塊進行加密處理。其中,xfrm_state_check_space(·)函數(shù)實現(xiàn)根據(jù)自定義IPSec隧道加密協(xié)議計算分組加密需要的填充長度值,xfrm4_mode_tunnel_output(·)函數(shù)實現(xiàn)為新增的外網(wǎng)IP報頭和ESP報頭分配存儲空間,并對外網(wǎng)IP報頭的各協(xié)議字段賦值,外網(wǎng)IP報頭中的源IP地址和目的IP地址均從安全聯(lián)盟SA中獲取,協(xié)議字段賦值為表示ESP協(xié)議的50,esp_output(·)函數(shù)實現(xiàn)為新增的加密填充長度字段、下一個頭協(xié)議字段以及填充數(shù)據(jù)區(qū)等分配存儲空間并賦值,還實現(xiàn)將安全聯(lián)盟SA中協(xié)商產(chǎn)生的用于選取加密密鑰的版本號、安全參數(shù)索引等信息,以及由隨機數(shù)發(fā)生器產(chǎn)生的本次加密用的初始化向量等信息賦值給ESP報頭各協(xié)議字段,遠端受保護單機或子網(wǎng)可根據(jù)這些信息找到對應的安全聯(lián)盟SA,完成ESP報文解密。xfrm_output2(·)函數(shù)通過調用send_to_fpga(·)函數(shù),將完成ESP封裝的報文通過32位數(shù)據(jù)總線發(fā)送到安全服務模塊進行加密。如果IP包目的地為網(wǎng)絡安全設備內網(wǎng)IP地址,則認為IP包為一般網(wǎng)絡協(xié)議報文,例如ping命令、udp報文以及tcp報文等,此時按照ip_route_input_common(·)函數(shù)的默認流程處理,該函數(shù)調用ip_local_deliver(·)函數(shù),將IP包轉交本地處理。ip_local_deliver(·)函數(shù)調用ip_local_deliver_finish(·)函數(shù),該函數(shù)會根據(jù)IP報頭協(xié)議字段值生成的HASH鍵值,從net_protocol數(shù)據(jù)結構中選擇對應的注冊函數(shù),例如icmp_rcv(·)函數(shù)、udp_rcv(·)函數(shù)、tcp_v4_rcv(·)函數(shù)等完成一般網(wǎng)絡協(xié)議報文的本地處理[16-18]。
內網(wǎng)處理模塊接收安全服務模塊ESP封裝報文處理流程如圖6所示。
圖6 內網(wǎng)處理模塊接收ESP封裝報文處理流程Figure 6. Intranet module receives ESP packet process
當內網(wǎng)處理模塊接收來自安全服務模塊發(fā)來的解密后ESP封裝報文時,CPU首先通過調用read_esp_data(·)函數(shù),實現(xiàn)從32位數(shù)據(jù)總線上讀取解密后的ESP封裝報文,并在完成以太網(wǎng)協(xié)議合法性驗證后,通過調用netif_rx(·)觸發(fā)調用netif_receive_skb(·)函數(shù),通過調用packet_type數(shù)據(jù)結構中的注冊函數(shù)ip_rcv(·),將該ESP封裝報文上傳至網(wǎng)絡層。由于此時接收來自安全服務模塊的ESP封裝報文,因此,本文修改了ip_rcv(·)函數(shù),新增dpram_input_intern(·)函數(shù)調用,該函數(shù)先通過調用xfrm_state_lookup(·)函數(shù)找到對應的安全聯(lián)盟SA,再進行抗重放檢測。如果檢測通過,則更新包序號和包流量計數(shù),并去掉原IP報頭前的外網(wǎng)IP報頭、ESP報頭以及原IP包尾部的填充長度字段、下一個頭協(xié)議字段以及填充數(shù)據(jù)等,還原得到遠端業(yè)務/信令明態(tài)數(shù)據(jù)IP包,否則直接丟棄。ip_rcv(·)函數(shù)繼續(xù)調用ip_rcv_finish(·)函數(shù),該函數(shù)將IP包交給ip_route_input_common(·)函數(shù)進行路由處理。由于網(wǎng)絡安全設備的內網(wǎng)口與本地受保護單機或子網(wǎng)相連,因此按照ip_route_input_common(·)函數(shù)的默認處理流程,該函數(shù)可為IP包查找到正確的路由路徑,并通過調用ip_forward(·)函數(shù)將其轉發(fā)到下一步處理。在ip_forward(·)函數(shù)中,通過調用xfrm4_policy_check(·)函數(shù)實現(xiàn)基于“五元組”的安全保密規(guī)則合法性驗證,如果IP包源IP地址、目的IP地址、源端口、目的端口、以及協(xié)議號等與內置的安全保密策略一致,則驗證通過,否則將驗證失敗的IP包直接丟棄。ip_forward(·)函數(shù)繼續(xù)調用ip_forward_finish(·)函數(shù),將IP包轉至常規(guī)的出口函數(shù),例如單播ip_output(·)函數(shù),實現(xiàn)經(jīng)網(wǎng)絡驅動程序發(fā)往本地受保護單機或子網(wǎng)[16-18]。
內網(wǎng)處理模塊也完成網(wǎng)絡安全設備故障告警功能,如果設備正常,則進行正常的內網(wǎng)數(shù)據(jù)收發(fā)處理,否則通過FPGA控制故障指示燈告警。
外網(wǎng)處理模塊軟件基于嵌入式Linux操作系統(tǒng),主要完成遠端受保護單機或子網(wǎng)業(yè)務/信令密態(tài)數(shù)據(jù)IP包收發(fā)。
外網(wǎng)處理模塊接收遠端密態(tài)數(shù)據(jù)IP包流程如圖7所示。當外網(wǎng)處理模塊接收來自遠端受保護單機或子網(wǎng)的密態(tài)數(shù)據(jù)IP包時,首先由網(wǎng)絡驅動程序獲取IP包,調用netif_receive_skb(·)函數(shù)進行處理,該函數(shù)通過調用packet_type數(shù)據(jù)結構中的注冊函數(shù)ip_rcv(·),將IP包上傳至網(wǎng)絡層。在網(wǎng)絡層ip_rcv(·)函數(shù)通過調用ip_rcv_finish(·)函數(shù),將IP包交給ip_route_input_common(·)函數(shù)進行路由處理。如果IP包的目的地為網(wǎng)絡安全設備的外網(wǎng)IP地址,則按照ip_route_input_common(·)函數(shù)的默認流程處理,將IP包轉至ip_local_deliver(·)函數(shù)進行本地處理,否則報錯退出。ip_local_deliver(·)函數(shù)調用ip_local_deliver_finish(·)函數(shù),該函數(shù)根據(jù)IP報頭協(xié)議字段值生成的HASH鍵值,從net_protocol數(shù)據(jù)結構中選擇對應的注冊函數(shù)。一般網(wǎng)絡協(xié)議報文選擇例如icmp_rcv(·)函數(shù)、udp_rcv(·)函數(shù)、tcp_v4_rcv(·)函數(shù)等完成一般網(wǎng)絡協(xié)議的本地處理,密態(tài)數(shù)據(jù)IP包選擇xfrm4_rcv(·)函數(shù)開啟ESP封裝解密變換處理。本文根據(jù)自定義IPSec隧道加密協(xié)議修改了xfrm4_rcv(·)函數(shù)調用的xfrm_input(·)函數(shù)。該函數(shù)先從IP包的ESP報頭里提取加密密鑰版本號和安全參數(shù)索引信息,再通過這些信息調用xfrm_state_lookup(·)函數(shù)查找相應的安全聯(lián)盟SA,如果查找成功,則通過調用send_to_fpga(·)函數(shù),實現(xiàn)將該密態(tài)數(shù)據(jù)IP包通過32位數(shù)據(jù)總線發(fā)送到安全服務模塊進行解密的處理;否則將密態(tài)數(shù)據(jù)IP包直接丟棄[16-18]。
圖7 外網(wǎng)處理模塊接收遠端IP包處理流程Figure 7. Process for the extranet processing module to receive remote IP packets
外網(wǎng)處理模塊接收安全服務模塊ESP封裝報文處理流程如圖8所示。
圖8 外網(wǎng)處理模塊接收ESP封裝報文處理流程Figure 8. Process for the extranet processing module to receive ESP packets
當外網(wǎng)處理模塊接收來自安全服務模塊發(fā)來的加密后的ESP封裝報文時,CPU首先通過調用read_esp_data(·)函數(shù),實現(xiàn)從32位數(shù)據(jù)總線上讀取加密后的ESP封裝報文,并在完成以太網(wǎng)協(xié)議合法性驗證后,通過調用netif_rx(·)函數(shù)觸發(fā)調用netif_receive_skb(·)函數(shù),進而通過調用packet_type數(shù)據(jù)結構中的注冊函數(shù)ip_rcv(·)將該ESP封裝報文上傳至網(wǎng)絡層。網(wǎng)絡層ip_rcv(·)函數(shù)通過調用ip_rcv_finish(·)函數(shù),將IP包交給ip_route_input_common(·)函數(shù)進行路由處理。由于網(wǎng)絡安全設備的外網(wǎng)口與公網(wǎng)相連,因此按照ip_route_input_common(·)函數(shù)的默認處理流程,該函數(shù)可為IP包查找到正確的下一跳路由路徑,并通過調用ip_forward(·)函數(shù)將其轉發(fā)到下一步處理。ip_forward(·)函數(shù)通過調用ip_forward_finish(·)函數(shù),將IP包轉至常規(guī)的出口函數(shù)(例如單播ip_output(·)函數(shù)),實現(xiàn)經(jīng)網(wǎng)絡驅動程序發(fā)往遠端受保護單機或子網(wǎng)[16-18]。
安全服務模塊軟件主要完成通信保密功能,其安全服務工作流程如圖9所示。
圖9 安全服務工作流程Figure 9. Security services process
安全服務模塊完成對IP包的加解密功能,遵照自定義IPSec隧道加密協(xié)議進行處理。安全服務模塊上電啟動,默認加載SM4算法二進制執(zhí)行程序,使用SM4算法完成IP包的加解密處理。用戶也可通過串口將console控制臺終端直連網(wǎng)絡安全設備內網(wǎng)處理模塊,采用在console控制臺終端中輸入指令的方式,完成加密算法二進制執(zhí)行程序的動態(tài)切換,使用切換后的加密算法(AES算法或SM4算法)完成IP包的加解密處理。
在加密時,安全服務模塊首先根據(jù)ESP報頭中的加密密鑰版本號和安全參數(shù)索引選取加密密鑰,然后使用加密密鑰和從ESP報頭中提取的初始化向量,調用選定的加密算法加密ESP封裝報文,最后將完成加密的ESP封裝報文發(fā)至外網(wǎng)處理模塊。
在解密時,安全服務模塊首先根據(jù)ESP報頭中的加密密鑰版本號和安全參數(shù)索引選取解密密鑰,然后使用解密密鑰和從ESP報頭中提取的初始化向量,調用選定的加密算法解密密態(tài)ESP封裝報文,最后將完成解密的ESP封裝報文發(fā)至內網(wǎng)處理模塊。
IPsec隧道加密協(xié)議的密報頭ESP封裝結構如下所示。
structip_esp_hdr {
豬傳染性胸膜肺炎具有顯著的季節(jié)性特點,常發(fā)于春秋兩季,年齡段在6周-6個月的生豬為發(fā)病的主要群體,以3個月的仔豬為高發(fā)群體。該疾病的發(fā)病特征主要分為最急性型、急性型、亞急性型和慢性型等幾類,發(fā)病率與致死率超過50%,最高可達100%。
__be16 kV; //密鑰版本號
__be16 spi; //安全參數(shù)索引
__be32 seq_no; //序列號
__u8 iv[16]; //會話密鑰
__u8 enc_data[0]; //加密報文緩沖區(qū)
} esph;
基于紅黑隔離架構的網(wǎng)絡安全設備電路板如圖10所示。
圖10 絡安全設備電路板Figure 10. Circuit board of network security device
為驗證網(wǎng)絡安全設備的功能和性能,本文基于該設備搭建了IPSec VPN隧道通信驗證場景,其部署如圖11所示。本文使用命令ping來測試隧道加密通信功能。此外,通過外部輸入指令,控制FPGA動態(tài)加載選定的加密算法,并通過命令ping的通斷測試實現(xiàn)加密算法動態(tài)更換功能驗證。最后,使用命令iperf實現(xiàn)百兆帶寬條件下不同IP包長加密速率性能測試驗證。
圖11 IPSecVPN隧道測試部署Figure 11. IPSec VPN tunnel testing deployment
1)網(wǎng)絡安全設備1配接在子網(wǎng)1用戶計算機,其內網(wǎng)IP地址為210.150.150.15,外網(wǎng)IP地址為192.168.1.180,子網(wǎng)1用戶計算機IP地址為210.150.150.23。
2)網(wǎng)絡安全設備2配接在子網(wǎng)2用戶計算機,其內網(wǎng)IP地址為11.11.11.11,外網(wǎng)IP地址為192.168.1.190,子網(wǎng)2用戶計算機IP地址為11.11.11.10。
3)網(wǎng)絡安全設備1的內網(wǎng)口通過以太網(wǎng)線直連子網(wǎng)1用戶計算機。
4)網(wǎng)絡安全設備2的內網(wǎng)口通過以太網(wǎng)線直連子網(wǎng)2用戶計算機。
5)網(wǎng)絡安全設備1與網(wǎng)絡安全設備2的外網(wǎng)口通過以太網(wǎng)線直連。
6)子網(wǎng)1用戶計算機也作為console控制臺終端。
7)console控制臺終端通過UART串口分別連接網(wǎng)絡安全設備1和網(wǎng)絡安全設備2的內網(wǎng)處理模塊。
IPSecVPN隧道加密通信和加密算法動態(tài)更換功能測試驗證流程如下所示:
1)在console控制臺終端中打開SecureCRT串口軟件,分別通過Serial-COM10窗口連接網(wǎng)絡安全設備1內網(wǎng)處理模塊、Serial-COM12窗口連接網(wǎng)絡安全設備2內網(wǎng)處理模塊。
2)在子網(wǎng)1用戶計算機中打開cmd.exe程序,輸入指令查看子網(wǎng)1用戶計算機的IP地址為210.150.150.23,默認網(wǎng)關為網(wǎng)絡安全設備1的內網(wǎng)IP地址,為210.150.150.15,如圖12所示。
圖12 子網(wǎng)1用戶計算機的網(wǎng)絡配置Figure 12. Network configuration of subnet 1 user computer
3)在cmd.exe程序中,使用命令ping子網(wǎng)2用戶計算機的IP地址,驗證兩個不在同一IP網(wǎng)段的用戶計算機可以通過其配接的網(wǎng)絡安全設備達到互通的目的,如圖13所示。
圖13 使用相同SM4算法的互通Figure 13. Interoperability using the same SM4 algorithm
4)先在Serial-COM10窗口中,輸入debug_ctl-changealg aes指令,將網(wǎng)絡安全設備1的加密算法動態(tài)切換為AES算法,保持網(wǎng)絡安全設備2使用的SM4算法不變。再在cmd.exe程序中,使用命令ping子網(wǎng)2用戶計算機IP地址,驗證此時兩個子網(wǎng)的用戶計算機無法通過其配接的網(wǎng)絡安全設備實現(xiàn)互通,如圖14所示。
圖14 使用不同加密算法的互通Figure 14. Interoperability using different algorithms
5)先在Serial-COM12窗口中,輸入debug_ctl -changealg aes指令,將網(wǎng)絡安全設備2的加密算法動態(tài)切換為AES算法,保持網(wǎng)絡安全設備1使用的AES算法不變,再在cmd.exe程序中,使用命令ping子網(wǎng)2用戶計算機IP地址,驗證此時兩個子網(wǎng)的用戶計算機又能通過其配接的網(wǎng)絡安全設備實現(xiàn)互通,如圖15所示。
圖15 使用相同AES算法的互通Figure 15. Interoperability using the same AES algorithm
根據(jù)上述功能測試流程,得到的VPN隧道加密互通結果如表1所示,加密算法動態(tài)更換結果如表2和表3所示。
表1 VPN隧道加密互通測試Table 1. VPN tunnel encryption interoperability test
表2 更換不同加密算法互通測試Table 2. Interoperability test replacing different algorithm
表3 更換相同加密算法互通測試Table 3. Interoperability test replacing the same algorithm
由表1的測試結果可知,不在同一IP網(wǎng)段的兩個子網(wǎng)用戶計算機通過各自連接的加載了相同SM4加密算法的網(wǎng)絡安全設備,可實現(xiàn)命令ping的VPN隧道互通。從表2和表3的測試結果可知,網(wǎng)絡安全設備支持加密算法的動態(tài)更換。當兩個網(wǎng)絡安全設備建立了VPN隧道互通,如果動態(tài)更換其中一個的加密算法,由于此時已無法正確進行傳輸數(shù)據(jù)的加解密處理,則VPN隧道互通就會中斷。如果動態(tài)更換另一個的加密算法,使兩個網(wǎng)絡安全設備恢復加載相同的加密算法,由于此時已恢復了正確的傳輸數(shù)據(jù)加解密,則可恢復VPN隧道互通。
網(wǎng)絡安全設備的加密速率性能采用命令iperf,在100 Mbit·s-1帶寬條件下,通過測試不同IP包長的UDP傳輸性能進行測試驗證[19],測試流程如圖16所示。
圖16 不同IP包長加密速率測試Figure 16. Encryption rate test for different IP packet lengths
根據(jù)上述加密速率測試流程,得到的性能測試結果如表4所示。
表4 100 Mbit·s-1帶寬條件下不同IP包長加密速率測試Table 4.Rate test for IP packet sizes under 100 Mbit·s-1 bandwidth
從表4的測試結果可知,網(wǎng)絡安全設備的加密速率達不到百兆帶寬的理論峰值。這是因為網(wǎng)絡安全設備不僅需要對傳輸?shù)腎P包進行常規(guī)TCP/IP協(xié)議處理,還需要完成基于“五元組”安全保密規(guī)則的合法性驗證、IPSecESP協(xié)議封裝與解封裝變換以及加解密處理等操作,這些操作累加產(chǎn)生一定的處理時延,從而導致實際速度偏低。在理論上,包長越長,加密速率應該越快。在實測時,在包長不超過1 024 Byte時,符合該預期。但當包長超過1 024 Byte時,由于經(jīng)IPSec ESP協(xié)議封裝變換和加解密處理后,包長會超過TCP/IP協(xié)議規(guī)定的最大傳輸單元(Maximum Transmission Unit,MTU)規(guī)定的1 500 Byte,導致IP包分片,使加密速率變低。因此,根據(jù)實驗結果分析可知,1 024 Byte包長測得的50.8 Mbit·s-1速率為較優(yōu)的加密速率。
本文網(wǎng)絡安全設備采用紅黑分區(qū)的設計理念,紅區(qū)與黑區(qū)之間的數(shù)據(jù)交換都應通過安全服務模塊進行處理,從而實現(xiàn)紅區(qū)和黑區(qū)之間的相互隔離,無法通過網(wǎng)絡側或信道直接訪問受保護單機或子網(wǎng)。該設計方法消除了紅區(qū)和黑區(qū)之間可能存在的任何隱式通道,有效保障了紅區(qū)的安全。同時,網(wǎng)絡安全設備采用IPSec的ESP封裝協(xié)議對傳輸?shù)臄?shù)據(jù)進行加密保護,降低了數(shù)據(jù)被竊取和篡改的風險,確保了數(shù)據(jù)傳輸?shù)陌踩浴?/p>