吳云軍 溫玉屏 紀 巍 魏 華
(1.火箭軍裝備部駐武漢地區第二軍事代表室 武漢 430000)(2.武漢船舶通信研究所 武漢 430205)
IPSec(IP Security)是IETF制定的為保證在Internet上傳送數據的安全保密性能的三層隧道加密協議。IPSec在IP層對IP報文提供安全服務,并定義了如何在IP數據包中增加字段來保證IP包的完整性、私有性和真實性,以及如何加密數據包。使用IPsec,數據就可以安全地在公網上傳輸。
由于網絡通信速率越來越高,因此在IPsec協議實現過程中如何快速地根據報文特征搜索到相應的安全策略是影響高速網絡數據包處理性能的關鍵技術。IPsec的安全策略多為范圍匹配,并不是常規的精確匹配,因此目前在IPsec設備中的安全策略搜索解決方案多采用TCAM芯片。TCAM芯片是基于內容查找匹配地址的存儲器,最初是在交換路由設備中應用,因其高速搜索性能目前廣泛應用于網絡安全系統的硬件防火墻的五元組匹配、入侵檢測、病毒識別中的模式匹配等。但是TCAM解決方案的功耗和成本很高,不適合對體積、功耗和成本非常敏感的微小型IPsec設備。
針對微小型IPsec設備體積小、功耗低和成本敏感特點,本文采用并行查找及流水線的思路,提出了一種基于FPGA的安全策略搜索設計方法,該方法不僅實現簡單且易于擴展,占用很少的邏輯資源可實現1K條以上的范圍安全策略搜索,性能達到1Gbps以上。是安全關聯的集合,使用一個或者多個選擇符來確定每一個條目,每個條目指向一個或多個安全關聯,每個安全關聯由一個安全索引、一個源/目的IP地址組和一個IPSec協議組成。
IPsec中SPD主要根據根據流五元組信息(源/目的IP地址、源/目的端口、服務類型)識別不同的數據流,并且安全策略針對五元組進行范圍配置來減少IPsec配置難度和配置工作量,但是范圍匹配不能用常規的簡單hash方法來實現,這無疑增加了SPD快速搜索的難度。
IPSec協議不是一個單獨的協議,它給出了應用于IP層上網絡數據安全的一整套體系結構,包括網絡認證協議Authentication Header(AH)、封裝安全載荷協議Encapsulating Security Payload(ESP)、密鑰管理協議Internet Key Exchange(IKE)和用于網絡認證及加密的一些算法等。這些協議用于提供數據認證、數據完整性和加密性三種保護形式。AH和ESP都可以提供認證服務,但AH提供的認證服務要強于ESP。而IKE主要是對密鑰進行交換管理,對算法、協議和密鑰三個方面進行協商。IPSec規定了如何在對等層之間選擇安全協議、確定安全算法和密鑰交換,向上提供了訪問控制、數據源認證、數據加密等網絡安全服務。
互聯網上IPSec隧道的建立是在原來IP數據包上加上IPSec協議標簽,然后封裝在一個新的IP包里通過公網Internet進行傳輸。IPSec對報文數據的處理過程中需要搜索安全策略庫(Security Policy Database)和安全關聯庫(Security Association Database),驗證數據的合法性并檢索密鑰,從而對數據進行加/解密處理。其中SPD為安全策略的集合,安全策略定義對特定數據包執行的操作類型,主要包括丟棄、繞過IPSec協議和加密傳輸等;SAD

圖1 IPsec業務處理流程
從FPGA硬件實現角度,IPsec業務處理硬件架構如圖2。

圖2 IPsec業務處理硬件架構
1)外出方向:業務數據經內網的千兆以太網MAC接口輸入。在幀解析模塊對數據包進行協議解析,對于非IP數據包直接轉發給CPU進行處理,對于IP數據包則提取出五元組特征。在策略搜索模塊,根據IP數據包的五元組進行快速安全策略搜索,如果搜索到該IP數據包的策略,則將相應的操作指示及SA數據庫地址發送給IPsec封裝模塊;如果沒有搜索到該IP數據包的策略,則根據全局配置將該數據包轉發至CPU觸發密鑰協商流程或將該IP數據包丟棄。IPsec封裝模塊根據策略搜索的結果,將IP數據包按照SA和ESP數據包格式進行封裝。加密模塊根據SA的要求對封裝好的ESP數據幀相應部分進行加密處理。最后ESP封裝格式的IP數據包從千兆以太網接口輸出到外網。
2)進入方向:業務數據經外網的千兆以太網MAC接口輸入。在幀解析模塊對數據包進行協議解析,對于非IP數據包直接轉發給CPU進行處理,對于非ESP格式的IP數據包則提取出五元組特征,對于ESP格式的IP數據包則提取出ESP數據包的三元組特征。在策略搜索模塊,根據非ESP格式IP數據包的五元組或ESP格式IP數據包的三元組進行快速策略搜索,如果匹配到該IP數據包的策略,則將相應的SA數據庫地址發送給解密模塊;如果沒有匹配到該IP數據包的策略,則根據全局配置將該數據包轉發至CPU觸發密鑰協商流程或將該IP數據包丟棄。解密模塊根據SA的配置對需要解密的ESP數據幀相應部分進行解密處理。對于解密正確的ESP格式的IP數據包,還需要經過抗重放模塊進行抗重放處理,抵御以太網重放攻擊。經過抗重放檢測的ESP格式IP數據包,IPsec解封裝模塊將其中的IP數據包進行還原,并經過千兆以太網接口輸出到內網。
由硬件架構可以看出,安全策略搜索模塊無論在進入方向還是外出方向都是非常關鍵的一個模塊,其數據處理性能直接關系到IPsec協議處理性能。
本文提出的高速安全策略搜索設計方法,采用的是并行查找和流水線查找的思路,實現1G速率下1K條以上的高速模糊策略搜索。
根據以太網數據包的特點,最短數據包長為64字節。對于1Gbps的以太網數據包來說,也就意味著在滿流量時每64拍會有一個以太網數據包進來,并啟動一次安全策略搜索。根據數據流輸入特點,將1K條模糊策略分解成16個比較器,按照流水線的方式串聯起來,就可以實現16路五元組信息并行進行1K條策略搜索。第一組五元組信息進入比較器1后經過64個時鐘周期完成對安全策略庫第0~63條策略的搜索,然后進入比較器2再經過64個時鐘周期完成對64~127條策略的搜索。當第一組五元組信息出比較器1后,第二組五元組信息則可以流水進入到比較器1中開始搜索。這樣本安全策略搜索模塊可以流水完成16組五元組信息的并行查找。
安全策略規則的內容包括兩部分,一部分是比較符,一部分是操作指示及SA地址。比較符指模糊策略規則中五元組各字段的上下限范圍值,操作指示及SA地址指該策略規則對應的操作及對應的SA地址。為了實現16個比較器對策略的并行查找,把1024條規則的條件按照16段分別存儲在16個比較器中。將策略規則的結果全部存儲在查詢結果模塊內,當接收到策略搜索地址后,根據策略搜索地址查詢到該策略規則對應的的操作方式和對應的SA地址并作為結果輸出。在配置安全策略時,地址低的優先級高。

圖3 安全策略搜索模塊實現

圖4 安全策略存儲結構示意圖
基于上述設計方法,本文在Xilinx K7系列的325T芯片上進行了策略搜索模塊的實現。
策略搜索模塊的接口主要分為策略搜索輸入接口、配置接口和策略搜索結果輸出接口。
1)策列匹配輸入接口:tactic_5_match_en為策略搜索啟動信號,sip[31:0]、dip[31:0]、sport、dport和protocol為幀解析模塊從數據流種提取出的五元組特征,即源IP地址、目的IP地址、源端口號、目的端口號和協議號。
2)策略配置信號:cfg_en為配置使能信號。Cfg_rule[207:0]為策略規則條件,cfg_action[3:0]為策略規則對應的操作,cfg_sa_addr[15:0]為策略規則對應的SA地址。

圖5 安全策略存儲分配示意圖
3)策略搜索結果接口:result_en表示結果有效。Result高電平表示擊中匹配策略,低電平則表示未找到匹配的策略。Result_action和result_sa_addr為擊中匹配策略后,該策略規定的操作類型及對應的SA地址。
策略搜索模塊FPGA實現如圖7所示,comparator_1、comparator_2、……comparator_16為16個比較器,每一個比較器完成64個策略表項的查找。16個比較器可以實現16路五元組并行查找1024個表項。Search_result模塊則是根據策略搜索的結果,讀出擊中的策略規則對應的操作及SA地址。

圖6 安全策略模塊接口信號

圖7 安全策略搜索模塊FPGA模塊圖
對策略搜索模塊tactic_5_match搭建仿真測試平臺,由仿真測試平臺輸出測試激勵給tactic_5_match模塊。Tactic_5_match模塊的時鐘為125Mhz。仿真激勵配置16條不同的策略分布在不同的比較器內,按照最短數據包64拍間隔啟動1次安全策略搜索,一共啟動32次安全策略搜索。仿真波形如圖8~9。從圖8仿真波形可以看出,安全策略搜索均按照預期得到相應的搜索結果。從圖9可以看出,第一組五元組信息從進入到輸出搜索結果用了1026拍,即8.21μs。

圖8 仿真波形(全部)

圖9 仿真波形(第一組五元組搜索結果)
圖10是安全策略搜索模塊的資源占用情況,其中BRAM主要是用來存儲安全策略庫,邏輯占用資源很少,不僅僅易于在微小型IPsec設備中實現,而且功耗低。

圖10 資源報告
針對微小型IPsec設備采用TCAM芯片實現安全策略搜索具有功耗高、成本高的問題,本文采用并行查找和流水線查找的思路,提出了一種基于FPGA的安全策略搜索設計方法。該方法不僅實現簡單且易于擴展,占用很少的邏輯資源可實現1K條以上的范圍安全策略搜索,性能達到1Gbps以上,非常適合應用于微小型IPsec設備中實現高速安全策略搜索。