<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 基于SoC的IPSec協(xié)議實(shí)現(xiàn)技術(shù)

          基于SoC的IPSec協(xié)議實(shí)現(xiàn)技術(shù)

          ——
          作者:林中輝 吳卓 沈亮 時(shí)間:2006-04-30 來(lái)源:?jiǎn)纹瑱C(jī)及嵌入式系統(tǒng)應(yīng)用 收藏
          引  言  

          IPSe[1]作為一種實(shí)現(xiàn)VPN的安全協(xié)議體系,目前已在VPN設(shè)備中廣泛使用。但是,隨著千兆位高速網(wǎng)絡(luò)的技術(shù)發(fā)展,對(duì)VPN設(shè)備在時(shí)效性等方面提出了更高的要求。因此,必須從體系結(jié)構(gòu)等方面,研究新的技術(shù)方法實(shí)現(xiàn)IPSec。在IPSec安全設(shè)備中,技術(shù)將是一種較好的選擇。soC將系統(tǒng)的CPU、I/O接口、存儲(chǔ)器、算法、協(xié)議處理等模塊全部集成到單一半導(dǎo)體芯片上,實(shí)現(xiàn)IPSec協(xié)議的全部功能,成為構(gòu)筑IPSec安全設(shè)備的核心部件,極大地提高了高速V。PN網(wǎng)絡(luò)的安全性、可靠性、時(shí)效性以及較高的性能價(jià)格比。

           

          1  IPSec協(xié)議  

          IPSec協(xié)議是因特網(wǎng)工程任務(wù)組(IETF)針對(duì)TCP/IP協(xié)議沒(méi)有安全機(jī)制的嚴(yán)重缺陷而專門制定的IP安全標(biāo)準(zhǔn),用以在IP層實(shí)現(xiàn)訪問(wèn)控制、無(wú)連接完整性、數(shù)據(jù)源驗(yàn)證、抗重播、數(shù)據(jù)加密和有限的業(yè)務(wù)流機(jī)密性等多種安全服務(wù)。該標(biāo)準(zhǔn)由一系列協(xié)議組成,各協(xié)議之間的關(guān)系如圖1所示。


          *基金項(xiàng)目:“十五”期間國(guó)家密碼發(fā)展基金密碼理論研究課題“密碼soc芯片的體系結(jié)構(gòu)和安全性研究”。    

          有關(guān)協(xié)議的解釋如下:  

          ①AH[2] (Authentication Header)是一個(gè)安全協(xié)議頭,在傳輸模式下為IP層數(shù)據(jù)流提供數(shù)據(jù)完整性、數(shù)據(jù)源身份認(rèn)證、一些可選的和有限的抗重播服務(wù)。    

          ②EsP[3] (Encapsulating Security Payload)是一個(gè)插入到IP數(shù)據(jù)報(bào)內(nèi)部的協(xié)議頭,為IP層流量數(shù)據(jù)提供機(jī)密性、數(shù)據(jù)源身份認(rèn)證、抗重播以及數(shù)據(jù)完整性等安全服務(wù)。  

          ③認(rèn)證與加密算法是IPSec實(shí)現(xiàn)安全數(shù)據(jù)傳輸?shù)暮诵?,其中,加密算法用于ESP,可以采用DES、IDEA等密碼算法;認(rèn)證算法用于AH,可以采用3DES、RC5等算法。    

          ④IKE[4](Internet Key Exchange)是密鑰交換協(xié)議,用于在IPSec通信雙方建立共享安全參數(shù)及驗(yàn)證過(guò)的密鑰,以建立一種安全關(guān)聯(lián)關(guān)系。    

          ⑤DoI(Domain of Interpretation)是一個(gè)單獨(dú)的文檔,用于存放IKE協(xié)商的參數(shù)。    

          ⑥SA(Security ASSOCiation)是安全關(guān)聯(lián)協(xié)議,是主機(jī)、路由器兩個(gè)應(yīng)用IPS ec實(shí)體之間的一種單向邏輯連接。sA有安全策略庫(kù)(sPDB)和安全關(guān)聯(lián)庫(kù)(sADB),存儲(chǔ)了安全策略的具體細(xì)節(jié),包括保護(hù)的內(nèi)容、保護(hù)的方式、保護(hù)通信數(shù)據(jù)的主體等策略。

           

          2  技術(shù)  

          目前,平臺(tái)主要用于CSoC、SoPC、EPGA等芯片開(kāi)發(fā)。其中,CSoC稱為可配置系統(tǒng)級(jí)芯片,一般包括1個(gè)處理器內(nèi)核、可編程邏輯陣列和其它一些通用部件;SoPC是可編程的單芯片系統(tǒng),如Altera的Nios內(nèi)核模塊;EPGA是以FPGA為主體的SoC芯片。使用這些SoC開(kāi)發(fā)平臺(tái),可以充分利用系統(tǒng)級(jí)芯片集成度高和性能優(yōu)越的特點(diǎn),靈活設(shè)計(jì)開(kāi)發(fā)各種專用Soc芯片。

          (1)開(kāi)發(fā)平臺(tái)的選擇  

          SoC平臺(tái)開(kāi)發(fā)套件包括:各種工具與資源軟件、可以重構(gòu)的硬件電路結(jié)構(gòu)驗(yàn)證平臺(tái)和使用說(shuō)明書等。其可用軟件資源包括:供選用的多種嵌入式處理器核,硬件模塊設(shè)計(jì)語(yǔ)言及其編譯器,仿真、綜合和布局、布線工具等;設(shè)計(jì)語(yǔ)言包括HDL、C/C++等。開(kāi)發(fā)平臺(tái)的選擇取決于器件的來(lái)源:當(dāng)選用商品化器件時(shí),可以選擇Altera的SOPC開(kāi)發(fā)環(huán)境QUARTUSII;當(dāng)選擇自主研發(fā)Soc時(shí),應(yīng)使用相關(guān)的專用開(kāi)發(fā)平臺(tái)。

          (2)lP庫(kù)的選擇  

          IP庫(kù)的選擇應(yīng)針對(duì)器件類型,選擇通用的IP核。對(duì)安全性要求較高的算法模塊,應(yīng)采取訪問(wèn)控制、抗解剖分析等技術(shù)措施;對(duì)可變邏輯模塊,應(yīng)采用FPGA,以保證可編程的特點(diǎn)。

          (3)芯片結(jié)構(gòu)的選擇  

          SoC的主體部分由CPU和組成。在設(shè)計(jì)過(guò)程中,芯片結(jié)構(gòu)的選擇應(yīng)從系統(tǒng)應(yīng)用規(guī)劃、協(xié)議處理速度要求、便于實(shí)現(xiàn)、Vetilog HDL編程實(shí)現(xiàn)結(jié)構(gòu)化,以及所用邏輯模塊的實(shí)際結(jié)構(gòu)等幾個(gè)角度入手。    

          Altera的SoC芯片[5]構(gòu)成如圖2所示。


          (4)軟硬件系統(tǒng)設(shè)計(jì)  

          SoC的基本結(jié)構(gòu)是具有一個(gè)成多個(gè)微處理器,以及可編程硬件邏輯,因此,在SoC設(shè)計(jì)中必須進(jìn)行軟硬件的協(xié)同設(shè)計(jì)。軟硬件協(xié)同設(shè)計(jì)的技術(shù)性很強(qiáng),它既有SoC設(shè)計(jì)的靈活性,又有SoC設(shè)計(jì)中難以揣摩、充滿變數(shù)的復(fù)雜性,將涉及到硬件資源的規(guī)劃和整個(gè)系統(tǒng)性能的實(shí)現(xiàn)。

          (5)系統(tǒng)集成設(shè)計(jì)  

          系統(tǒng)集成設(shè)計(jì)的關(guān)鍵技術(shù),主要是IP核的無(wú)縫連接系統(tǒng)設(shè)計(jì)和相關(guān)的可測(cè)試技術(shù),包括緊密耦合、傳輸特性、時(shí)鐘綜合和測(cè)試接口等。

          (6)低功耗管理設(shè)計(jì)  

          低功耗設(shè)計(jì)是對(duì)有相關(guān)要求的器件進(jìn)行的一種設(shè)計(jì)技術(shù),設(shè)計(jì)中主要通過(guò)一些系統(tǒng)狀態(tài)、橋接控制等來(lái)實(shí)現(xiàn)。

           

          3  基于SoC的IPSec實(shí)現(xiàn)技術(shù)

          3.1  基本結(jié)構(gòu)    

          以SoC實(shí)現(xiàn)IPSec的多協(xié)議模塊包括:①IPSec協(xié)議輸入、輸出引擎,是通過(guò)協(xié)議解析,決定數(shù)據(jù)流程的處理;②安全關(guān)聯(lián)、密鑰交換、密碼算法等,其中,安全關(guān)聯(lián)模塊為其直接提供所需參數(shù),密鑰交換模塊用于IKE自動(dòng)管理的SAD,算法模塊是實(shí)現(xiàn)IP數(shù)據(jù)加解密和認(rèn)證的基本模塊;③接口模塊,是IPSec與IPV4/IPv6協(xié)議的接口界面。SoC中的CPU核,實(shí)施系統(tǒng)管理、策略管理和密鑰管理等功能。  

          基于SoC的IPSec協(xié)議結(jié)構(gòu)如圖3所示。  


          IPSec的主體部分是多協(xié)議處理的硬件模塊。在SoC設(shè)計(jì)過(guò)程中,應(yīng)通過(guò)優(yōu)化設(shè)計(jì),以滿足IPSec的功能和性能要求;采用片上操作系統(tǒng),以滿足設(shè)計(jì)的靈活性、可繼承性和可復(fù)用性等IP特性;結(jié)合CPU的結(jié)構(gòu)、性能和指令系統(tǒng),進(jìn)行軟硬件系統(tǒng)設(shè)計(jì),以達(dá)到各個(gè)模塊之間的通信、傳輸和控制等一體化設(shè)計(jì)。  

          基于SoC的IPSec芯片結(jié)構(gòu)如圖4所示。  


          圖4中IPSec協(xié)議的IKE密鑰交換、策略管理、SAD手工注入由實(shí)時(shí)操作系統(tǒng)來(lái)處理,而IPSec輸入輸出引擎的協(xié)議解析、安全策略庫(kù)(SAD、SPD)、密鑰快速查找(CAM)、加解密算法、GMAC通信接口等由硬件模塊構(gòu)造。通信接口實(shí)現(xiàn)以太網(wǎng)鏈路幀的接收、發(fā)送、校驗(yàn)等功能。芯片中還應(yīng)設(shè)計(jì)看門狗,用于防止系統(tǒng)死機(jī);另外,要設(shè)計(jì)跟蹤模塊,用于系統(tǒng)軟硬件調(diào)試。  

          綜上所述,在實(shí)現(xiàn)IPSec協(xié)議的SoC芯片中,主要協(xié)議棧處理都由硬件模塊實(shí)現(xiàn),CPu負(fù)責(zé)管理調(diào)度和密鑰配置。

          3.2  功能實(shí)現(xiàn)

          (1)lPSec協(xié)議的輸出與輸入引擎處理  

          對(duì)于輸出數(shù)據(jù)包,IPSec協(xié)議輸出引擎先調(diào)用策略管理模塊,查詢SPD,確定數(shù)據(jù)包應(yīng)使用的安全策略。根據(jù)策略管理模塊的指示,協(xié)議引擎對(duì)該數(shù)據(jù)包作出如下3種可能的處理:    

          ①如存在有效的SA,則取出相應(yīng)的參數(shù),將數(shù)據(jù)包封裝(包括加密、驗(yàn)證,添加IPSec頭和IP頭等),然后發(fā)送。  

          ②如尚未建立SA,策略管理模塊啟動(dòng)或觸發(fā)IKE協(xié)商。協(xié)商成功后,按①中的步驟處理;不成功則應(yīng)將數(shù)據(jù)包丟棄,并記錄出錯(cuò)信息。  

          ③如存在SA但無(wú)效,策略管理模塊將此信息向IKE通告,請(qǐng)求協(xié)商新的SA,協(xié)商成功后按①中的步驟處理,不成功則應(yīng)將數(shù)據(jù)包丟棄。  

          對(duì)于輸入數(shù)據(jù)包,IPSec協(xié)議引擎先調(diào)用策略管理模塊,查詢SAD。如得到有效的SA,則對(duì)數(shù)據(jù)包進(jìn)行解封(還原),再查詢SPD,驗(yàn)證為該數(shù)據(jù)包提供的安全保護(hù)是否與策略配置的相符。如相符,則將還原后的數(shù)據(jù)包交給TCP層或轉(zhuǎn)發(fā)。如不相符,或要求應(yīng)用IPSec但未建立SA,或SA無(wú)效,則將數(shù)據(jù)包丟棄,并記錄出錯(cuò)信息。

          (2)SPDB和SADB實(shí)現(xiàn)技術(shù)  

          IPSec協(xié)議處理數(shù)據(jù)報(bào)文的過(guò)程中需要通過(guò)不斷地查詢SADB和SPDB來(lái)驗(yàn)證數(shù)據(jù)的合法性和取出密鑰進(jìn)行數(shù)據(jù)報(bào)的加解密處理,因此,對(duì)IPSec處理性能而言,如何選擇保存SADB和SPDB的數(shù)據(jù)結(jié)構(gòu)至關(guān)重要。另外由于SA和SP的數(shù)量都是動(dòng)態(tài)地變化的,必須選擇合適的存儲(chǔ)結(jié)構(gòu)。如用軟件方法設(shè)計(jì)一個(gè)合理的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),在系統(tǒng)的SADB和SPDB規(guī)模比較小時(shí)SA和SP的查詢速度還可以接受,但隨著SADB和sPDB規(guī)模的擴(kuò)大,系統(tǒng)的查詢能力必然下降。因?yàn)樵诓樵冎凶詈玫那闆r是一次命中,而大多數(shù)情況下都不會(huì)是一次命中,查詢的效率必然下降,從而影響IPSec協(xié)議的處理。要從根本上解決查詢效率的問(wèn)題必須分析SADB和SPDB的設(shè)計(jì)要求,才能找到解決方法。

          SPDB和SADB的設(shè)計(jì)基于每一個(gè)SA對(duì)應(yīng)一條SPD。SA和SPD在各數(shù)據(jù)庫(kù)中具有相同的地址。利用指針互指,只要在其中一個(gè)數(shù)據(jù)庫(kù)查找到匹配的字段,就能同時(shí)得到兩個(gè)數(shù)據(jù)庫(kù)的地址指針。因此,SPDB和SADB的設(shè)計(jì)應(yīng)該滿足下列要求:  

          ①對(duì)于該數(shù)據(jù)結(jié)構(gòu)能夠有效地進(jìn)行查詢,得到確切的或者基于選擇符的匹配結(jié)果,包括源地址、目的地址、協(xié)議和SPI。    

          ②能夠?yàn)檫x擇符保存通配、范圍或確切的值。    

          ③隱藏指向SADB和SPDB的指針,保證兩個(gè)結(jié)構(gòu)間的同步。    

          ④對(duì)SA/SP條目進(jìn)行排序保存,以便匹配查找一直能快速完成。  

          采用硬件設(shè)計(jì)技術(shù)通常是提高協(xié)議處理速度的好方法。其中,CAM(Content_Addressable Memory)是按內(nèi)容尋址存儲(chǔ)器,是由控制和匹配兩大部分組成的。通過(guò)控制部分,可以把需要寫進(jìn)CAM中的數(shù)據(jù)通過(guò)SPDB和SADB管理模塊寫進(jìn)CAM中,供查找時(shí)使用。在匹配口可以輸入數(shù)據(jù),找出該匹配數(shù)據(jù)所在地址并返回。在實(shí)際設(shè)計(jì)中,SADB或SPDB數(shù)據(jù)庫(kù)內(nèi)容連續(xù)存儲(chǔ)在RAM空間中。CAM中寫入需要查找的匹配輸入項(xiàng)<SPI,目標(biāo)地址,協(xié)議>三元組等,匹配輸出是32位作為查詢SADB和SPDB在RAM中的地址,這種匹配方法一次查詢只需幾個(gè)時(shí)鐘周期即可完成。在SADB和SPDB規(guī)模很大時(shí)系統(tǒng)的查詢速度不會(huì)降低。目前CAM的匹配速度很快,查找速度可以達(dá)到1億次/s,而在一個(gè)1000Mb/s的網(wǎng)絡(luò)口上每秒連續(xù)傳最大包的個(gè)數(shù)為1000


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();