圖4中IPSec協(xié)議的IKE密鑰交換、策略管理、SAD手工注入由實時操作系統(tǒng)來處理,而IPSec輸入輸出引擎的協(xié)議解析、安全策略庫(SAD、SPD)、密鑰快速查找(CAM)、加解密算法、GMAC通信接口等由硬件模塊構(gòu)造。通信接口實現(xiàn)以太網(wǎng)鏈路幀的接收、發(fā)送、校驗等功能。芯片中還應(yīng)設(shè)計看門狗,用于防止系統(tǒng)死機(jī);另外,要設(shè)計跟蹤模塊,用于系統(tǒng)軟硬件調(diào)試。
綜上所述,在實現(xiàn)IPSec協(xié)議的SoC芯片中,主要協(xié)議棧處理都由硬件模塊實現(xiàn),CPu負(fù)責(zé)管理調(diào)度和密鑰配置。
3.2 功能實現(xiàn)
(1)lPSec協(xié)議的輸出與輸入引擎處理
對于輸出數(shù)據(jù)包,IPSec協(xié)議輸出引擎先調(diào)用策略管理模塊,查詢SPD,確定數(shù)據(jù)包應(yīng)使用的安全策略。根據(jù)策略管理模塊的指示,協(xié)議引擎對該數(shù)據(jù)包作出如下3種可能的處理:
①如存在有效的SA,則取出相應(yīng)的參數(shù),將數(shù)據(jù)包封裝(包括加密、驗證,添加IPSec頭和IP頭等),然后發(fā)送。
②如尚未建立SA,策略管理模塊啟動或觸發(fā)IKE協(xié)商。協(xié)商成功后,按①中的步驟處理;不成功則應(yīng)將數(shù)據(jù)包丟棄,并記錄出錯信息。
③如存在SA但無效,策略管理模塊將此信息向IKE通告,請求協(xié)商新的SA,協(xié)商成功后按①中的步驟處理,不成功則應(yīng)將數(shù)據(jù)包丟棄。
對于輸入數(shù)據(jù)包,IPSec協(xié)議引擎先調(diào)用策略管理模塊,查詢SAD。如得到有效的SA,則對數(shù)據(jù)包進(jìn)行解封(還原),再查詢SPD,驗證為該數(shù)據(jù)包提供的安全保護(hù)是否與策略配置的相符。如相符,則將還原后的數(shù)據(jù)包交給TCP層或轉(zhuǎn)發(fā)。如不相符,或要求應(yīng)用IPSec但未建立SA,或SA無效,則將數(shù)據(jù)包丟棄,并記錄出錯信息。
(2)SPDB和SADB實現(xiàn)技術(shù)
IPSec協(xié)議處理數(shù)據(jù)報文的過程中需要通過不斷地查詢SADB和SPDB來驗證數(shù)據(jù)的合法性和取出密鑰進(jìn)行數(shù)據(jù)報的加解密處理,因此,對IPSec處理性能而言,如何選擇保存SADB和SPDB的數(shù)據(jù)結(jié)構(gòu)至關(guān)重要。另外由于SA和SP的數(shù)量都是動態(tài)地變化的,必須選擇合適的存儲結(jié)構(gòu)。如用軟件方法設(shè)計一個合理的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,在系統(tǒng)的SADB和SPDB規(guī)模比較小時SA和SP的查詢速度還可以接受,但隨著SADB和sPDB規(guī)模的擴(kuò)大,系統(tǒng)的查詢能力必然下降。因為在查詢中最好的情況是一次命中,而大多數(shù)情況下都不會是一次命中,查詢的效率必然下降,從而影響IPSec協(xié)議的處理。要從根本上解決查詢效率的問題必須分析SADB和SPDB的設(shè)計要求,才能找到解決方法。
SPDB和SADB的設(shè)計基于每一個SA對應(yīng)一條SPD。SA和SPD在各數(shù)據(jù)庫中具有相同的地址。利用指針互指,只要在其中一個數(shù)據(jù)庫查找到匹配的字段,就能同時得到兩個數(shù)據(jù)庫的地址指針。因此,SPDB和SADB的設(shè)計應(yīng)該滿足下列要求:
①對于該數(shù)據(jù)結(jié)構(gòu)能夠有效地進(jìn)行查詢,得到確切的或者基于選擇符的匹配結(jié)果,包括源地址、目的地址、協(xié)議和SPI。
②能夠為選擇符保存通配、范圍或確切的值。
③隱藏指向SADB和SPDB的指針,保證兩個結(jié)構(gòu)間的同步。
④對SA/SP條目進(jìn)行排序保存,以便匹配查找一直能快速完成。
采用硬件設(shè)計技術(shù)通常是提高協(xié)議處理速度的好方法。其中,CAM(Content_Addressable Memory)是按內(nèi)容尋址存儲器,是由控制和匹配兩大部分組成的。通過控制部分,可以把需要寫進(jìn)CAM中的數(shù)據(jù)通過SPDB和SADB管理模塊寫進(jìn)CAM中,供查找時使用。在匹配口可以輸入數(shù)據(jù),找出該匹配數(shù)據(jù)所在地址并返回。在實際設(shè)計中,SADB或SPDB數(shù)據(jù)庫內(nèi)容連續(xù)存儲在RAM空間中。CAM中寫入需要查找的匹配輸入項<SPI,目標(biāo)地址,協(xié)議>三元組等,匹配輸出是32位作為查詢SADB和SPDB在RAM中的地址,這種匹配方法一次查詢只需幾個時鐘周期即可完成。在SADB和SPDB規(guī)模很大時系統(tǒng)的查詢速度不會降低。目前CAM的匹配速度很快,查找速度可以達(dá)到1億次/s,而在一個1000Mb/s的網(wǎng)絡(luò)口上每秒連續(xù)傳最大包的個數(shù)為1000×1024×1024/(8×96)=1 365 330,完全滿足系統(tǒng)查找的需要。匹配成功即可查找出對應(yīng)的數(shù)據(jù)庫中起始地址,大大節(jié)省了查表的時間,提高IPSec處理的效率。
(3)密碼算法的實現(xiàn)
在IPSec實現(xiàn)過程中涉及了一系列的密碼運(yùn)算,其中包括實現(xiàn)AH和ESP的加密算法和認(rèn)證算法,實現(xiàn)IKE所需要的密鑰交換算法以及密鑰生成算法。為獲得較高的密碼運(yùn)算效率,可以采用流水線技術(shù)設(shè)計專門的密碼運(yùn)算協(xié)處理器;設(shè)計硬件隨機(jī)數(shù)發(fā)生器,為密碼設(shè)備產(chǎn)生消息密鑰;設(shè)計密鑰安全控制器,以保護(hù)密鑰安全。
(4)其余功能的實現(xiàn)
IKE密鑰交換、策略管理、SAD手工注入和硬件初始化(如SPD和SAD的管理)等由實時操作系統(tǒng)實現(xiàn)。
結(jié)語
本文介紹了基于Soc的IPSec協(xié)議實現(xiàn)技術(shù),適用于千兆位VPN設(shè)備等高端應(yīng)用。至于速度要求不高的低端應(yīng)用,SoC中可以由CPU實現(xiàn)協(xié)議處理,而密碼算法由硬件實現(xiàn),以降低硬件規(guī)模和設(shè)計成本,使設(shè)備獲得較高的性價比?傊,以SoC構(gòu)筑安全平臺,是提高安全產(chǎn)品安全性、可靠性和時效性的有效途徑。
研發(fā)基于自主知識產(chǎn)權(quán)的、基于SoC的安全產(chǎn)品,可以充分利用SoC中CPU效率高、硬件可編程能力強(qiáng),以及芯片規(guī)模大、速度快的特點(diǎn),極大地提高安全產(chǎn)品的性能。該技術(shù)不僅對信息安全產(chǎn)品具有重要的實用價值,而且對密碼工程技術(shù)具有重要的學(xué)術(shù)意義。





