劉振鈞,李治輝,林 山(中國電子科技集團公司第三十研究所,四川成都610041)
基于FPGA的萬兆網的IPsec ESP協議設計與實現*
劉振鈞,李治輝,林 山
(中國電子科技集團公司第三十研究所,四川成都610041)
“Internet協議安全性(IPsec)”為IP層及其上層協議提供加解密和認證等安全服務。但對IPsec協議的處理已經成為高速網絡實現的瓶頸。隨著FPGA向著更大容量和更高速度方向發展,基于FPGA硬件實現的IPsec協議棧可以提供更高的網絡性能。文中介紹了一種基于FPGA的萬兆以太網IPsec ESP協議棧的設計,支持隧道模式和傳輸模式,具有抗重放能力。通過采用多級流水操作、多緩存乒乓操作、多進程并行處理等技術實現了萬兆線速。
FPGA 萬兆以太網 IPsec ESP協議
隨著網絡通信技術的不斷發展,萬兆以太網應用發展迅速同時,無處不在的安全威脅給萬兆以太網帶來了更大的挑戰。最初的IP版本缺乏保證安全的確定方法。因此,人們為IP引入了安全通信技術,稱之為IP安全性(IP Security),簡稱為IPsec[1]。隨著網絡通信速率的不斷提高。軟件方式實現的IPsec協議大大增加網關的負載,成為網絡的瓶頸[2],而FPGA具有高速并行的特點,可以實現更高的處理性能。基于FPGA的IPsec ESP協議的設計與實現,可以滿足萬兆IPsec ESP協議高速、低延遲、高吞吐率、協議復雜的特性。
IPsec是為IP網絡提供完整安全性解決方案的一系列服務和協議的集合。封裝安全性載荷(ESP, Encapsulating Security Payload),是IPsec的兩種核心協議之一,主要任務是為IP數據報的載荷提供加密保護[3]。
1.1 ESP格式
IPsecESP協議通過構建一個ESP頭在受保護數據之前,再追加一個ESP尾在受保護數據之后,生成一個ESP數據包。它定義了兩種具體的工作模式:隧道模式(tunnelmode)和傳輸模式(transport mode)。如圖1所示。

圖1 ESP幀格式Fig.1 ESP frame format
兩種模式的區別在于ESP保護的真正對象。在傳輸模式中,ESP頭插在IP頭和IP包的上層協議頭之間;隧道模式下,整個受保護的IP包都封裝在一個ESP頭中,還則增加了一個新的IP頭,使得整個IP數據在非受信網絡中都不可見。
1.2 安全聯盟
安全聯盟(SA)是構成IPsec的基礎。SA是兩個通信實體經協商建立起來的一種協定。安全參數索引(SPI)是一個32位的數據實體,用于獨一無二的標識出接收端上的一個SA。序列號(SN)是一個32位的字段,每次用SA來保護一個數據包,SN遞增1。
1.3 數據可靠性
在傳輸前對數據進行加密,可以保證在傳輸過程中,即使數據包遭截取,信息也無法被讀。IPsec ESP協議可以為IP數據提供數據加密服務。
1.4 數據完整性
防止傳輸過程中數據被篡改,確保發出數據和接收數據的一致性。ICV完整性驗證為每個數據包產生一個加密校驗和,接收方在打開包前先計算校驗和,若包遭篡改導致校驗和不相符,數據包即被丟棄。
1.5 IPsec抗重放功能
重放攻擊(Replay Attacks),又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發送一個目的主機已接收過的包,來達到欺騙系統的目的。主要用于身份認證過程,破壞認證的正確性。加密可以有效防止會話劫持,但是卻防止不了重放攻擊。重放攻擊在任何網絡通訊過程中都可能發生,是計算機世界黑客常用的攻擊方式之一。
每個IPSec包都包含了一個序列號(SN),序列號位于ESP頭內。如圖1所示,ESP協議不對ESP頭做加密保護,所以ESP隧道模式和傳輸模式都不具備抗重放能力。
IPsec抗重放服務通過單調遞增的序列號(SN)和滑動窗口機制阻擋抗重放攻擊[4]。確保每個IP包的唯一性,保證信息萬一被截取復制后,不能再被重新利用、重新傳輸回目的地址。
2.1 架構設計
本設計采用了Altera公司的Stratix 5系列FPGA。該芯片資源多,速度快,支持萬兆以太網等高速接口。
如圖2所示,FPGA外接萬兆光模塊實現萬兆以太網接入,加密算法芯片提供數據加密服務,解密算法芯片提供數據解密服務,SSRAM芯片存儲SA。FPGA內部主要包括封裝模塊完成ESP封裝,解封裝模塊完成ESP解封裝,兩個10G MAC,10G Base-R IP軟核。

圖2 FPGA架構設計Fig.2 FPGA architecture
2.2 封裝
如圖2所示,從受信網輸入的原始IP包首先進入封裝預處理。封裝預處理負責完成字節序調整、按指定數據位寬做對齊處理,訪問SSRAM讀取SA等工作。處理完成后將數據包送封裝前端。
封裝前端接收數據包。隧道模式時,使用SA內IP地址重新產生一個新的IP頭放于受保護數據之前,使用SA內SPI和SN構造ESP頭放于新IP頭之后,根據算法分組長度和加密保護數據長度構建ESP尾放于受保護數據之后。傳輸模式,修改IP頭內長度及相關字段,使用SA內SPI和SN構造ESP頭放于IP頭之后,根據算法分組長度和加密保護數據長度構建ESP尾放于受保護數據之后。隧道模式/傳輸模式封裝處理完成將數據包送入算法芯片做數據加密處理和ICV計算。
算法芯片將加密后數據送入封裝后端。隧道模式時,計算新IP頭校驗和,傳輸模式時,計算修改后的IP頭校驗和。進行字節序調整,按指定數據位寬做對齊處理。處理完成數據包經過萬兆以太網口進入非受信網絡。
2.3 解封裝
如圖2所示,從非受信網輸入的IP包首先進入解封裝預處理,解封裝預處理負責完成字節序調整、按指定數據位寬做對齊處理,訪問SSRAM讀取SA等工作。處理完成后將數據包送解封裝前端。
解封裝前端接收數據包。隧道模式時,提取新IP頭和ESP頭與SA內容比對,內容相符則向后轉發。傳輸模式,提取IP頭和ESP頭與SA內容比對,內容相符則向后轉發。處理完成將數據包送入算法芯片進行解密處理和ICV驗證。
算法芯片將解密后數據送入解封裝后端。提取ESP尾并驗證ESP尾正確性,驗證失敗丟棄數據包。提取ICV驗證結果,驗證失敗丟棄數據包。傳輸模式重新計算IP包長度和IP頭校驗和。提取SN進行重放包檢測,檢測失敗丟棄數據包。進行字節序調整,按指定數據位寬做對齊處理。處理完成數據包經過萬兆以太網接口進入受信網絡。
2.4 抗重放技術
數據包的可信度隨時間不斷衰減,滑動窗口技術通過窗口的滑動能夠很好的解決可信度衰減性問題[5]。保證近期行為的重要性和遠期行為的衰減性。單純的滑動窗口技術并不能提供抗重放功能,位圖能實現對重放包的過濾,只接收新數據包,確保每個IP包的唯一性。滑動窗口容易被惡意利用,將數據包SN值改為極大值,使近期數據包全處于窗口左側,造成網絡通信中斷,本設計中采用ICV與滑動窗口相結合防止惡意用戶攻擊。
圖3為一個16位的滑動重放窗口示意圖。位圖標識窗口內哪些數據包為新包,若輸入數據包SN在位圖內標識為新報則接收數據包,再檢測ICV完整性驗證結果,ICV驗證通過則修改位圖標識本SN的包已經收到。當收到數據包在位圖中標識非新包,則按重放包做丟棄處理。數據包在位圖中標識為新包,但ICV完整性驗證未通過,則按被篡改包做丟棄處理。n為窗口最小SN,若輸入數據包SN小于n則當作超時包丟棄。n+16為窗口內最大SN,若輸入數據包SN大于n+16,且ICV完整性驗證通過,則窗口向右滑動SN-n-16。若輸入數據包SN大于n+16,ICV完整性驗證未通過,則按惡意攻擊包做丟棄處理。

圖3 16位滑動重放窗口示意Fig.3 16 bit sliding window
3.1 多緩存乒乓技術
乒乓操作是一種常應用于數據流控制的處理技巧,解封裝將數據包由長包變短包,處理過程需要對數據包進行各種檢測和驗證,解封裝進程時序壓力大,而數據輸出進程大部分時間處于空閑狀態。多緩存乒乓技術使用多個緩存空間實現了數據流的串并轉換,使用面積換取速度,正適合于解封裝采用。典型的乒乓操作使用兩個數據緩存區,不能滿足萬兆高吞吐率特性,本設計在典型設計的基礎上通過增加數據緩存區減輕解封裝進程時序壓力,加快模塊數據轉發速度。
如圖4所示,解封裝進程根據輸入選擇單元的選擇將輸入數據流分配到多個數據緩存區。在第1個緩沖周期,將數據包緩存到數據緩沖區1,緩存完成將緩沖區1送入輸出選擇單元;以此類推,在第n個緩沖周期,將數據包緩存到數據緩沖區n,緩存完成將緩沖區n送入輸出選擇單元,如此循環。數據輸出進程根據輸出選擇單元的選擇,在第1個發送周期將緩沖區1的數據發送出去,發送完成將緩沖區1送入輸入選擇單元;以此類推,在第n個發送周期將緩沖區n的數據發送出去,發送完成將緩沖區n送入輸入選擇單元,如此循環。

圖4 多緩存乒乓操作示意Fig.4 Ping-pong operation
3.2 多級流水技術
多級流水技術是高速設計中一種常用的設計手段,能有效提高系統吞吐率。
圖5為一個三級流水的示意圖,每個數據包處理分成三個步驟,上一個步驟的輸出為下一個步驟的輸入,則將每個步驟作為一級流水線,三個步驟構成三級流水線。前一個步驟操作結束后,將結果直接送入下一個步驟,同時去處理下一個數據包,各個步驟并行執行互不影響。假設各級流水操作處理時間相同,不采用流水線操作,在T時間內只能處理(1+2/3)個數據包,采用三級流水操作,在T時間內能處理4至5個數據包,系統吞吐率顯著提高。

圖5 三級流水示意Fig.5 3-stage pipeline
ESP封裝和解封裝數據流都是單流向,本設計將ESP封裝和解封裝各分為三個步驟,步驟劃分原則為合理安排時序,保證三個步驟處理時間的連續性,使時間延遲均勻分布到各個步驟。ESP封裝被分為封裝預處理、封裝前端、封裝后端三個步驟,各個步驟已經在2.2節詳細介紹。ESP解封裝被分為解封裝預處理、解封裝前端、解封裝后端三個步驟,各個步驟已經在2.3節詳細介紹。
3.3 多進程并行處理技術
多進程并行處理技術是相對于單進程串行處理而言的,在相同核心頻率下,并行處理較串行處理具有更高的處理速度。并行處理可分為時間上的并行和空間上的并行,多級流水技術是建立在時間上的并行處理,而多進程并行處理技術則是建立在空間上的并行處理。多級流水按處理流程分步驟完成,而多進程并行處理技術則是按照功能將模塊各個功能項分配給多個進程并行處理,提高系統處理效率,減小系統延遲。
ESP封裝前端主要完成ESP隧道/傳輸封裝工作,按功能可分為數據接收、SA檢測、長度計算、封裝、數據發送五部分。本設計將各個功能點以單獨的進程獨立運行,在第一時間完成相應的操作,提高封裝速度,減小封裝產生的延遲。圖6為封裝前端模塊處理流程示意圖。

圖6 ESP封裝多進程并行處理示意Fig.6 ESP-encapsulation multiple processing
ESP解封裝后端主要完成ESP隧道/傳輸解封裝工作,按功能可分為解封裝、各種檢測、長度計算、傳輸IP頭校驗和計算、數據輸出五部分。本設計將各個功能點以單獨的進程獨立運行,在第一時間完成相應的操作,提高解封裝速度,減小解封裝產生的延遲。圖7為解封裝后端端模塊處理流程示意圖。

圖7 ESP解封裝多進程并行處理示意Fig.7 ESP-decapsulation multiple processing
本文介紹了一種基于FPGA的萬兆IPsec ESP協議的設計與實現。通過編譯之后,FPGA的核心頻率能夠達到250 MHz,外圍硬件接口可以達到250~300 MHz。實際測試中整個系統延遲在μs級,能夠實現萬兆線速轉發。本設計不僅適用于IPsec ESP協議的高速處理,對于其它高速數據處理也有較強的參考價值。
[1] 李莉.IPSec VPN中關鍵技術的研究[D].山東:山東大學,2008. LILi.Research of the IPSec VPN Key Technology.Shandong.Shandong University,2008.
[2] 李曦.基于高性能FPGA芯片的千兆網IPSec協議模塊[J].計算機工程與應用,2005(19):162-165. LIXi.Gigabit Net IPSec Protocol Module Research Based on High Performance FPGA[J].Computer Engineering and Applications,2005,19:162-165.
[3] Charles M.Kozierok.TCP/IP指南(卷1)底層核心協議[M].陳鳴,賈永興,宋麗華譯.北京:人民郵電出版社,2008:318-355. CHARLESM.Kozierok.CHENMing,JIA Yongxing,SONG Li.Translated.Then TCP/IPGuide A Comprehensive,Illustrated Internet Protocols Reference[M].Bei Jing: POSTS&TELECOMSPRESS.2008:318-355.
[4] 周俊.IPSec抗重放功能對網絡QoS的影響研究[J].信息安全與通信保密,2008(02):86-91. ZHOU Jun.Research on IPsec Anti-Replay's Influence Qos[J].Information Security and Communications Privacy,2008,2:86-91.
[5] 王培.網格環境下基于滑動窗口的信任模型研究[D].河北:燕山大學,2010. WANG Pei.Study of Trust Model Based on Sliding Window In Grid[D].He Bei:Yanshan University,2010.
LIU Zhen-jun(1975-),male,M.Sci., senior engineer,majoring in network security;
李治輝(1983—),女,學士,助理工程師,主要研究方向為網絡安全;
LIZhi-hui(1983-),female,B.Sci.,assistant engineer, majoring in network securityp;
林 山(1985—),男,碩士,助理工程師,主要研究方向為網絡安全。
LIN Shan(1985-),male,M.Sci.,assistant engineer, majoring in network security.
Design and Implementation of 10-Gigabit IPsec ESP Protocol based on FPGA
LIU Zhen-jun,LIZhi-hui,LIN Shan
(No.30 Institute of CETC,Chengdu Sichuan 610041,China)
IPsec(Internet Protocol Security)provides security services such as encryption/decryption and authentication for IP and upper layer protocols,and however IPsec protocol processing now becomes the bottleneck in the implementation of high-speed networks.As FPGA moves toward larger scale and higher speed direction,the IPsec protocol implementation based on FPGA hardware could provide even better network performance.This paper gives a new design for implementing the 10-gigabit Ethernet IPsec ESP protocol based on FPGA,thus to support the tunnelmode and transportmode,and anti-replay ability.The 10-gigabitwire-speed can be achieved by using multi-stage pipelining,multi-cache ping-pong operation,and multi-process parallel processing technology.
FPGA;10-gigabit Ethernet;IPsec ESP protocol
date:2014-09-30;Revised date:2015-01-15
TP393.08
A
1002-0802(2015)02-0242-05

劉振鈞(1975—),男,碩士,高級工程師,主要研究方向為網絡安全;
10.3969/j.issn.1002-0802.2015.02.026
2014-09-30;
2015-01-15