專利名稱:包含安全性關(guān)聯(lián)處理器的虛擬專用網(wǎng)絡(luò)機(jī)制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信系統(tǒng),更具體地說涉及實(shí)現(xiàn)包括安全性關(guān)聯(lián)數(shù)據(jù)庫和相關(guān)處理器的虛擬專用網(wǎng)絡(luò)(VPN)的機(jī)制。
背景技術(shù):
近年來,全球目睹了因特網(wǎng)的爆發(fā)性增長。每年越來越多的主機(jī)加入因特網(wǎng),同時用戶數(shù)目似乎無限制地增長。因特網(wǎng)能夠?qū)崿F(xiàn)利用不同技術(shù)(包括遠(yuǎn)程計算機(jī)登錄、文件傳送、萬維網(wǎng)(WWW)瀏覽、電子郵件等)的通信。設(shè)計出各種各樣的協(xié)議,并且這些協(xié)議在因特網(wǎng)上用于處理各種通信。例如,文件傳送協(xié)議(FTP)用于文件傳送,超文本置標(biāo)語言(HTML)用于web通信等。通常,在包括OSI通信棧各層協(xié)議在內(nèi)的協(xié)議的傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)組的保護(hù)下,對和因特網(wǎng)通信相關(guān)的協(xié)議分組。
因特網(wǎng)的關(guān)鍵特征在于它是幾乎具有計算機(jī)、電話線和因特網(wǎng)服務(wù)提供者(ISP)賬戶的任何人可訪問的公共網(wǎng)絡(luò)。這種大規(guī)模公眾可接入性的最終趨勢是它便于黑客和意圖對因特網(wǎng)上的一個或多個主機(jī)采取惡意行動的其它人接近因特網(wǎng)上的一個或多個主機(jī)。對于設(shè)法侵入遠(yuǎn)程網(wǎng)絡(luò)的計算機(jī)并成功竊取通信數(shù)據(jù)的黑客來說,諸如惡意用戶竊取保密信息或者刪除重要文件之類非法行為是可能的。通過在允許因特網(wǎng)上的安全事務(wù)的IPv6中包括諸如加密和鑒權(quán)之類安全特征,因特網(wǎng)體系結(jié)構(gòu)委員會解決了關(guān)于安全性的需要。
為了對抗黑客的威脅和保護(hù)專用網(wǎng)絡(luò),目前通常在公司或機(jī)制的專用網(wǎng)絡(luò)的入口處設(shè)置防火墻。防火墻采用某一形式的分組過濾器,分組過濾器強(qiáng)制實(shí)現(xiàn)用戶定義的安全策略。防火墻是位于機(jī)制的本地網(wǎng)絡(luò)和全球因特網(wǎng)之間邊界處的系統(tǒng)。它實(shí)現(xiàn)所有數(shù)據(jù)通信的過濾,以便防止信息泄漏到外部網(wǎng)絡(luò),或者防止從外部未經(jīng)授權(quán)訪問內(nèi)部網(wǎng)絡(luò)。防火墻對接收的每個分組進(jìn)行拒絕/許可判定。
同時,對無線服務(wù)(即蜂窩電話機(jī)、雙向?qū)ず魴C(jī)、無繩設(shè)備等)和諸如膝上型計算機(jī)、PDA之類個人計算設(shè)備的需求日益增多。這些個人計算設(shè)備中的多數(shù)都包含無線通信電路,以便它們能夠通過無線網(wǎng)絡(luò)(例如蜂窩或者其它寬帶方案)與諸如因特網(wǎng)之類WAN網(wǎng)絡(luò)通信。從而,越來越多的PDA和蜂窩電話機(jī)正在連接到因特網(wǎng)上,從而這些設(shè)備存在安全風(fēng)險。這些設(shè)備最好采用某一類型的防火墻防范對該設(shè)備的未經(jīng)授權(quán)的訪問。但是,目前多數(shù)防火墻以軟件形式實(shí)現(xiàn),需要整個桌上型計算機(jī)的計算資源,導(dǎo)致在諸如蜂窩電話機(jī)或PDA之類便攜式計算設(shè)備中使用它們的成本很高或者不切實(shí)際。
從而,需要一種易于用適于包含在諸如蜂窩電話機(jī)和無線連接PDA之類小型便攜式電子計算設(shè)備中的小尺寸硬件實(shí)現(xiàn)的防火墻或分組過濾器。
發(fā)明內(nèi)容
本發(fā)明提供一種新穎的有用虛擬專用網(wǎng)絡(luò)(VPN)機(jī)制,以便提供實(shí)現(xiàn)加密/解密和鑒權(quán)必需的安全參數(shù)。VPN機(jī)制適合于以較低的成本用硬件實(shí)現(xiàn),從而能夠費(fèi)用低廉地將本發(fā)明結(jié)合到與因特網(wǎng)或其它廣域網(wǎng)連接的便攜式電子通信設(shè)備中,例如蜂窩電話機(jī)、個人數(shù)字助手(PDA)、膝上型計算機(jī)等。
本發(fā)明可和適于連接因特網(wǎng)的便攜式計算設(shè)備,例如蜂窩電話機(jī)和無線連接PDA中基于硬件或軟件的防火墻一起使用。還可用軟件或硬件和軟件的組合實(shí)現(xiàn)本發(fā)明的VPN機(jī)制。
從而,VPN機(jī)制可被用于實(shí)現(xiàn),例如通過WAN的安全分局(branch office)連接性、通過WAN的安全遠(yuǎn)程訪問或者通過WAN的安全電子商務(wù)交易。
VPN機(jī)制包括適于提供實(shí)現(xiàn)加密/解密和鑒權(quán)的安全性規(guī)范的IPSec組所需參數(shù)的安全性關(guān)聯(lián)數(shù)據(jù)庫(SAD)和相關(guān)電路。數(shù)據(jù)庫中的每個安全性關(guān)聯(lián)(SA)入口包括根據(jù)IPSec規(guī)范接收和傳送VPN分組所需的所有參數(shù)。
本發(fā)明對輸入分組流進(jìn)行涉及安全性關(guān)聯(lián)(SA)的處理。注意輸入分組流可包括入站分組和出站分組。通常,本發(fā)明被置于WAN(即因特網(wǎng))和本地LAN之間。這種情況下,VPN機(jī)制過濾從WAN發(fā)送給LAN的入站分組和從LNA發(fā)送給WAN的出站分組。
本發(fā)明的VPN機(jī)制保持稱為SAD的安全參數(shù)表,用于保存和單向連接相關(guān)的安全參數(shù)。對于雙向連接,需要產(chǎn)生兩個SA。新的安全性關(guān)聯(lián)被添加到SA數(shù)據(jù)庫中,并且一旦被產(chǎn)生,根據(jù)關(guān)于特定SA保存在數(shù)據(jù)庫中的參數(shù),處理與該SA相關(guān)的后續(xù)分組。根據(jù)該分組和SA參數(shù),分組可被加密、解密、鑒權(quán)或丟棄。注意只有當(dāng)分組符合在SA數(shù)據(jù)庫中規(guī)定的安全性時,才許可該分組。
雖然本發(fā)明特別適合于用硬件實(shí)現(xiàn),不過也可用軟件實(shí)現(xiàn)本發(fā)明。在一個實(shí)施例中,包括處理器、存儲器等的計算機(jī)執(zhí)行適于實(shí)現(xiàn)本發(fā)明的VPN機(jī)制和安全性關(guān)聯(lián)處理的軟件。
根據(jù)本發(fā)明,提供一種安全性關(guān)聯(lián)處理器電路,包括存儲多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù),當(dāng)收到未在安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,打開新的安全性關(guān)聯(lián)的裝置,根據(jù)分組的套接字搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的裝置,從安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù)的裝置,和將多個安全參數(shù)轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理的裝置。
根據(jù)本發(fā)明,還提供一種虛擬專用網(wǎng)絡(luò)(VPN)電路,包括保存多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫裝置,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù),多個安全引擎,每個安全引擎適合于執(zhí)行安全處理,當(dāng)收到未在安全性關(guān)聯(lián)數(shù)據(jù)庫裝置中找到的套接字時,打開新的安全性關(guān)聯(lián)的裝置,根據(jù)輸入分組的套接字搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的裝置,從安全性關(guān)聯(lián)數(shù)據(jù)庫裝置檢索多個安全參數(shù)的裝置,將多個安全參數(shù)轉(zhuǎn)發(fā)給至少一個安全引擎,以便以此執(zhí)行安全處理的裝置,和適合于利用輸入分組和安全處理的結(jié)果,根據(jù)特定的安全模式構(gòu)建輸出分組的分組建立裝置。
根據(jù)本發(fā)明,還提供一種便攜式計算設(shè)備,包括適于連接該設(shè)備和通信網(wǎng)絡(luò)的通信裝置,包括易失性和非易失性存儲器的存儲器裝置,非易失性存儲器適于保存程序代碼,與存儲器裝置和通信裝置耦接,執(zhí)行程序代碼的處理器,和虛擬專用網(wǎng)絡(luò)(VPN)電路,所述虛擬專用網(wǎng)絡(luò)(VPN)電路包括保存多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫裝置,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù),多個安全引擎,每個安全引擎適合于執(zhí)行安全處理,當(dāng)收到未在安全性關(guān)聯(lián)數(shù)據(jù)庫裝置中找到的套接字時,打開新的安全性關(guān)聯(lián)的裝置,根據(jù)輸入分組的套接字搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的裝置,從安全性關(guān)聯(lián)數(shù)據(jù)庫裝置檢索多個安全參數(shù)的裝置,將多個安全參數(shù)轉(zhuǎn)發(fā)給至少一個安全引擎,以便以此執(zhí)行安全處理的裝置,和適合于利用輸入分組和安全處理的結(jié)果,根據(jù)特定的安全模式構(gòu)建輸出分組的分組建立裝置。
根據(jù)本發(fā)明,還提供一種安全性關(guān)聯(lián)處理器電路,包括保存多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù),當(dāng)收到未在安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,適于打開新的安全性關(guān)聯(lián)的管理單元,適于根據(jù)輸入分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的識別單元,適于從安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù),并將它們轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理的主處理器單元,和包含散列函數(shù)和相關(guān)散列表,簡化保存的安全性關(guān)聯(lián)的搜索的散列單元。
根據(jù)本發(fā)明,還提供一種安全性關(guān)聯(lián)的方法,所述方法包括下述步驟建立適于保存多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫,安全性關(guān)聯(lián)數(shù)據(jù)庫內(nèi)的每個入口對應(yīng)于一個套接字,當(dāng)收到未在安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,打開新的安全性關(guān)聯(lián),根據(jù)分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián),從安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù),并將所述多個安全參數(shù)轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理。
根據(jù)本發(fā)明,還提供一種計算機(jī)可讀存儲介質(zhì),具有包含于其中的計算機(jī)可讀程序代碼單元,當(dāng)在計算機(jī)上執(zhí)行這種程序時,使適當(dāng)編程的計算機(jī)實(shí)現(xiàn)安全關(guān)聯(lián)性機(jī)制,所述計算機(jī)可讀存儲介質(zhì)包括使計算機(jī)建立適于保存多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫的計算機(jī)可讀程序代碼單元,安全性關(guān)聯(lián)數(shù)據(jù)庫內(nèi)的每個入口包括對應(yīng)于唯一套接字的安全性關(guān)聯(lián)數(shù)據(jù),當(dāng)收到未在安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,使計算機(jī)打開新的安全性關(guān)聯(lián)的計算機(jī)可讀程序代碼單元,使計算機(jī)根據(jù)分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的計算機(jī)可讀程序代碼單元,使計算機(jī)從安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù)的計算機(jī)可讀程序代碼單元,和使計算機(jī)將所述多個安全參數(shù)轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理的計算機(jī)可讀程序代碼單元。
下面參考附圖,舉例說明本發(fā)明,其中圖1是圖解說明在WAN或因特網(wǎng)環(huán)境中,本發(fā)明的虛擬專用網(wǎng)絡(luò)機(jī)制的幾種例證應(yīng)用的方框圖;圖2是圖解說明包括與本發(fā)明的虛擬專用網(wǎng)絡(luò)機(jī)制通信的本地和遠(yuǎn)程LAN、WAN和撥號用戶的例證網(wǎng)絡(luò)的方框圖;圖3是更詳細(xì)地圖解說明本發(fā)明的虛擬專用網(wǎng)絡(luò)機(jī)制的方框圖;圖4A和4B是圖解說明本發(fā)明的主SA處理器方法的流程圖;圖5圖解說明了確定與輸入分組相關(guān)的SA的散列技術(shù);圖6是圖解說明本發(fā)明的SA識別過程的散列方法的流程圖;圖7圖解說明了在主SA處理器進(jìn)行的檢查中執(zhí)行的防重放窗口機(jī)制;圖8是圖解說明本發(fā)明的防重放窗口方法的流程圖;圖9圖解說明了用于跟蹤SA失效(staleness)的最近最少使用的鏈路列表結(jié)構(gòu);圖10是圖解說明當(dāng)識別與輸入分組相關(guān)的SA時,更新LRU鏈接列表的方法的流程圖;圖11是圖解說明本發(fā)明的SA管理模塊的處理的流程圖;圖12是圖解說明由本發(fā)明的SA管理模塊執(zhí)行的打開SA的處理的流程圖;圖13是圖解說明由本發(fā)明的SA管理模塊執(zhí)行的關(guān)閉SA的處理的流程圖;圖14圖解說明了與每個SA記錄相關(guān)的最后打開的會話指針;圖15圖解說明了前一和下一會話指針,和匹配與每個會話記錄相關(guān)的SA指針;圖16圖解說明單一會話和單一SA記錄之間的例證關(guān)系;圖17圖解說明多個會話和單一SA記錄之間的例證關(guān)系;圖18是圖解說明適于實(shí)現(xiàn)本發(fā)明的VPN機(jī)制和相關(guān)的安全關(guān)聯(lián)處理的例證計算機(jī)處理系統(tǒng)-平臺的方框圖。
具體實(shí)施例方式
全文中使用的符號本文獻(xiàn)中自始至終使用下述符號術(shù)語 定義ARP 地址解析協(xié)議ARW 防重放窗口ASIC 專用集成電路ADSL 非對稱數(shù)字用戶線AH 鑒權(quán)信頭CPU 中央處理器CRC 循環(huán)冗余檢驗CBC 密碼分組鏈接DES 數(shù)據(jù)加密標(biāo)準(zhǔn)DAT 數(shù)字音頻帶DSP 數(shù)字信號處理器
DSL 數(shù)字用戶線DVD 數(shù)字通用光盤EEPROM 電可擦可編程只讀存儲器EEROM 電可擦除只讀存儲器ECB 電子密碼本ESP 封裝安全載荷ED 加密/解密EPROM 可擦可編程只讀存儲器FPGA現(xiàn)場可編程門陣列FTP 文件傳送協(xié)議HMAC信頭消息鑒權(quán)代碼HDSL高位速率數(shù)字用戶線HTML超文本置標(biāo)語言IAB 因特網(wǎng)體系結(jié)構(gòu)委員會ICMP因特網(wǎng)控制消息協(xié)議IKE 因特網(wǎng)密鑰交換IP 網(wǎng)際協(xié)議ISP 因特網(wǎng)服務(wù)提供商IV 初始向量IPSec IP安全性LRU 最近最少使用的LAN 局域網(wǎng)MTU 最大傳輸單元MAN 城域網(wǎng)MRU 最近最多使用的NIC 網(wǎng)絡(luò)接口卡OSI 開放系統(tǒng)互連PB 分組建立器PC 個人計算機(jī)
PDA個人數(shù)字助手PDU協(xié)議數(shù)據(jù)單元RAM隨機(jī)存取存儲器RIP遠(yuǎn)程IPROM只讀存儲器SA 安全關(guān)聯(lián)SAP安全關(guān)聯(lián)處理器SPD安全策略數(shù)據(jù)庫SPI安全參數(shù)索引TCP傳輸控制協(xié)議UDP用戶數(shù)據(jù)報協(xié)議VDSL 超高位速率數(shù)字用戶線VPN虛擬專用網(wǎng)絡(luò)WAN廣域網(wǎng)WWW萬維網(wǎng)本發(fā)明的詳細(xì)說明本發(fā)明提供一種新的有用虛擬專用網(wǎng)絡(luò)(VPN)機(jī)制,以便提供執(zhí)行加密/解密和鑒權(quán)所需的和安全相關(guān)的參數(shù)。VPN機(jī)制適合于以低成本硬件實(shí)現(xiàn),從而使得能夠費(fèi)用低廉地將本發(fā)明結(jié)合到諸如蜂窩電話機(jī)、個人數(shù)字助手(PDA)、膝上型計算機(jī)之類與因特網(wǎng)或其它廣域網(wǎng)連接的便攜式電子通信設(shè)備中。本發(fā)明可和諸如蜂窩電話機(jī)和無線連接PDA之類適于連接到因特網(wǎng)的便攜式計算設(shè)備中,基于硬件或軟件的防火墻一起使用。也可用軟件或者硬件和軟件的組合,實(shí)現(xiàn)本發(fā)明的VPN機(jī)制。
VPN機(jī)制包括適于提供實(shí)現(xiàn)關(guān)于加密/解密和鑒權(quán)的安全規(guī)范的IPSec組所需參數(shù)的安全關(guān)聯(lián)數(shù)據(jù)庫(SAD)和相關(guān)電路。數(shù)據(jù)庫中的每個安全關(guān)聯(lián)(SA)入口包括根據(jù)IPsec規(guī)范接收和傳送VPN分組所需的全部參數(shù)。注意最初在因特網(wǎng)密鑰交換(IKE)過程中協(xié)商SA。雖然可用軟件實(shí)現(xiàn)本發(fā)明,不過本發(fā)明的VPN機(jī)制特別適合于用能夠提供大大加速的安全處理的硬件實(shí)現(xiàn)。用硬件實(shí)現(xiàn)SAD和相關(guān)處理使得能夠在硬件中進(jìn)行所有IPSec加密/解密和鑒權(quán)處理。注意這適用于其中已建立SA的VPN會話。要指出的是還未建立SA的VPN會話非常少,從而對系統(tǒng)性能的影響可忽略不計。
通過使系統(tǒng)能夠選擇所需的安全協(xié)議,選擇要使用的算法,并將提供服務(wù)所需的密鑰投入使用,IPSec提供IP層的安全服務(wù)。IPSec中使用兩種協(xié)議提供安全性,包括表示成鑒權(quán)信頭(AH)的鑒權(quán)協(xié)議和表示成封裝安全載荷(ESP)的組合加密/解密協(xié)議。安全關(guān)聯(lián)或SA用在AH和ESP機(jī)制中。SA被定義成發(fā)送者和向其上攜帶的通信提供安全服務(wù)的接收者之間的單向關(guān)系。注意對于雙向安全交換來說,需要兩個SA。
本發(fā)膽對輸入分組流執(zhí)行和安全關(guān)聯(lián)(SA)相關(guān)的處理。注意輸入分組流既可包括入站分組又可包括出站分組。通常,本發(fā)明的VPN機(jī)制安置在WAN(即因特網(wǎng))和本地LAN之間。這種情況下,VPN機(jī)制發(fā)揮作用,既過濾從WAN發(fā)送給LAN的入站分組,又過濾從LAN發(fā)送給WAN的出站分組。
注意輸入流可包括和特定應(yīng)用相符的任意類型的輸入數(shù)據(jù),例如幀、分組、字節(jié)、PDU等。只是出于舉例說明的目的,輸入數(shù)據(jù)流被看作是一系列的分組。
要指出的是VPN機(jī)制和舉例說明的相關(guān)模塊只是作為一個例子給出,并不打算限制本發(fā)明的范圍。在不脫離本發(fā)明的范圍的情況下,利用這里說明的本發(fā)明的原理,本領(lǐng)域的技術(shù)人員可用硬件、軟件或者硬件和軟件的組合構(gòu)成其它VPN模塊,完成與安全性相關(guān)的處理和VPN實(shí)現(xiàn)。
本發(fā)明的VPN機(jī)制保持稱為安全關(guān)聯(lián)數(shù)據(jù)庫(SAD)的安全參數(shù)表,以便保存和單向連接相關(guān)的安全參數(shù)。對于雙向連接,需要產(chǎn)生兩個SA。新的安全關(guān)聯(lián)被加入SA數(shù)據(jù)庫中,并且一旦產(chǎn)生,則根據(jù)數(shù)據(jù)庫中保存的關(guān)于特定SA的參數(shù),處理與該SA相關(guān)的后續(xù)分組。根據(jù)分組和SA參數(shù),分組可能被加密、解密、鑒權(quán)或丟棄。注意只有當(dāng)分組符合在SA數(shù)據(jù)庫中規(guī)定的安全性時才許可該分組。
本發(fā)明的VPN機(jī)制在許多不同類型的系統(tǒng)中有著廣泛應(yīng)用。圖1中表示了圖解說明在WAN或因特網(wǎng)的環(huán)境中,本發(fā)明的VPN機(jī)制的幾種例證應(yīng)用的方框圖。一般來說,和防火墻一起構(gòu)成并使用VPN機(jī)制,以便防止未經(jīng)許可訪問受保護(hù)網(wǎng)絡(luò),如這里表示的三個例子中每個例子所示。
在第一例子中,VPN機(jī)制14和防火墻16一起使用,防火墻16實(shí)現(xiàn)于與網(wǎng)絡(luò)10進(jìn)行有線或無線通信的個人計算設(shè)備12中,網(wǎng)絡(luò)10可以是WAN或者因特網(wǎng)。個人計算設(shè)備可包括任意設(shè)備,例如個人數(shù)字助手(PDA)(例如手持式掌上機(jī)),蜂窩電話機(jī),無線手持機(jī)等。本例中,VPN機(jī)制和相關(guān)防火墻對在WAN/因特網(wǎng)和設(shè)備之間流動的分組進(jìn)行雙向安全處理。
在第二例子中,VPN機(jī)制20和防火墻22一起使用,從而VPN機(jī)制20和防火墻22都實(shí)現(xiàn)于與WAN或因特網(wǎng)10進(jìn)行有線或無線通信的電纜插頭適配器18中。設(shè)備18通常位于WAN/因特網(wǎng)和寬帶調(diào)制解調(diào)器24之間,寬帶調(diào)制解調(diào)器24連接LAN 26和WAN/因特網(wǎng)。電纜插頭適配器中的VPN機(jī)制對從WAN/因特網(wǎng)發(fā)送給LAN的分組,以及從LAN發(fā)送給WAN/因特網(wǎng)的分組進(jìn)行安全處理。寬帶調(diào)制解調(diào)器適合于調(diào)制和解調(diào)諸如xDSL(例如ADSL、HDSL、VDSL等)、衛(wèi)星、陸基RF、微波之類寬帶信號。
在第三例子中,VPN機(jī)制30和防火墻32一起使用,其中VPN機(jī)制30和防火墻32都實(shí)現(xiàn)于獨(dú)立的計算機(jī)28上,例如個人計算機(jī)(PC)、膝上型計算機(jī)等,計算機(jī)28與WAN或因特網(wǎng)進(jìn)行有線或無線通信。包含防火墻的計算機(jī)位于WAN/因特網(wǎng)和要保護(hù)的LAN 34之間。VPN機(jī)制對從WAN/因特網(wǎng)發(fā)送給LAN的分組,以及從LAN發(fā)送給WAN/因特網(wǎng)的分組進(jìn)行安全處理。
圖2中表示了圖解說明包括與本發(fā)明的虛擬專用網(wǎng)絡(luò)機(jī)制通信的本地和遠(yuǎn)程LAN、WAN和撥號用戶的例證網(wǎng)絡(luò)的方框圖。該例證網(wǎng)絡(luò)40包括兩個LAN,一個本地LAN 42和一個遠(yuǎn)程LAN 52。三個計算機(jī)A、B和C與該網(wǎng)絡(luò)連接并相互通信。計算機(jī)A、B和C可包括主機(jī)、工作站、用戶等。VPN網(wǎng)關(guān)48和防火墻46位于本地LAN的入口處,VPN網(wǎng)關(guān)56和防火墻58同樣位于遠(yuǎn)程LAN的入口處。兩個LAN通過WAN/因特網(wǎng)50連接。
用戶C也通過適當(dāng)?shù)难b置,例如撥號調(diào)制解調(diào)器,xDSL調(diào)制解調(diào)器接入等,與WAN/因特網(wǎng)連接,并且可包括VPN最終用戶,在VPN最終用戶中,它包含VPN網(wǎng)關(guān)或者可以是非VPN連接。
根據(jù)本發(fā)明,VPN機(jī)制適于進(jìn)行安全處理,包括產(chǎn)生、保存和管理在進(jìn)行加密、解密、鑒權(quán)等情況下,一個或多個安全處理器所需的安全參數(shù)。VPN機(jī)制既處理從WAN/因特網(wǎng)接收的指定給LAN的入站分組,又處理源于LAN,并指定給WAN/因特網(wǎng)的出站分組。
操作中,從LAN輸出的明文被VPN加密,并通過WAN傳送。類似地,從WAN入站的密文被VPN解密成明文,并通過LAN轉(zhuǎn)發(fā)給接收者。根據(jù)本發(fā)明,VPN機(jī)制適于提供實(shí)現(xiàn)IPSec規(guī)范所需的安全參數(shù)。
本發(fā)明包括由多個部件構(gòu)成的VPN模塊,所述多個部件一起發(fā)揮作用,從而實(shí)現(xiàn)VPN機(jī)制。圖3中表示了更詳細(xì)地圖解說明本發(fā)明的VPN模塊的方框圖。VPN模塊70包括總線接口72、緩存器/寄存器74、安全關(guān)聯(lián)處理器(SAP)75、VPN安全處理器88和分組建立器92。
安全關(guān)聯(lián)處理器包括SA識別模塊76、包括CPU接口79的主SA處理模塊78、SA管理模塊80、散列表82、SA最近最少使用(LRU)電路84和SA數(shù)據(jù)庫86,所有這些都通過總線與VPN安全處理器中的安全引擎和分組建立器通信。
VPN安全處理器包括多個安全引擎90,每個安全引擎90被修改和配置成執(zhí)行特定的涉及安全的操作。例如,VPN安全處理器包括進(jìn)行加密、解密、鑒權(quán)、DES算法、信頭消息鑒權(quán)代碼(HMAC)等的獨(dú)立安全引擎。
VPN模塊通過總線接口,在總線107上與主設(shè)備/CPU 96、信頭解碼器100、靜態(tài)過濾器102、動態(tài)過濾器104和內(nèi)容搜索單元106通信。
注意在本文獻(xiàn)中,假定VPN模塊通常位于WAN和LAN之間,并且既對入站分組又對出站分組執(zhí)行安全處理。入站分組指的是從WAN接收的去往LAN的分組,出站分組指的是從LAN接收的去往WAN的分組。從而,輸入分組流既可包括入站分組,又可包括出站分組。
輸入分組流98由主設(shè)備/CPU接收,其內(nèi)容被轉(zhuǎn)發(fā)給信頭解碼器,信頭解碼器譯解(或解析)分組的信頭部分。信頭解碼器抽取由VPN模塊使用的關(guān)心字段。信頭解碼器抽取的數(shù)據(jù)通過總線被轉(zhuǎn)發(fā)給其它模塊,包括靜態(tài)過濾器,動態(tài)過濾器和VPN模塊。該數(shù)據(jù)包括兩個散列值,兩個套接字(分別用于動態(tài)過濾器和SA處理)和分組的類型,例如ICMP、ARP、TCP、UDP等。用于SA和VPN處理的套接字包括SPI、RIP和協(xié)議。用于動態(tài)過濾的套接字包括源和目的地IP地址,源和目的地端口和協(xié)議。注意取決于實(shí)現(xiàn),信頭解碼器可構(gòu)成為外部模塊,或者與VPN模塊結(jié)合。
操作中,VPN模塊打開新SA,包括建立與LRU的連接和散列鏈接列表,確定輸入分組對應(yīng)于哪個SA,在成功處理分組之后更新SA的狀態(tài),和從連接表中去除未使用的SA。注意SA數(shù)據(jù)庫被實(shí)現(xiàn)和安排成以致能夠容易并快速地進(jìn)行SA識別和指針管理。
主SA處理模塊起安全關(guān)聯(lián)處理器的主處理塊的作用。它打開新的SA,處理現(xiàn)有SA和跟蹤SA的狀態(tài)。它還包括適合于實(shí)現(xiàn)防重放機(jī)制的電路,所述防重放機(jī)制包括更新入站分組的防重放窗口,遞增出站分組的序列號/更新入站分組的序列號,檢測序列號溢出。
主SA處理模塊還適合于更新與SA相關(guān)的狀態(tài),包括保持一組標(biāo)記,序列編號,遞減使用期變量,和在處理每個分組之后更新狀態(tài)寄存器。對于每個接收的分組,主SA處理器循環(huán)工作。該循環(huán)包括從SA數(shù)據(jù)庫檢索SA參數(shù),處理分組,即加密、解密等,和一旦完成處理,就更新SA數(shù)據(jù)庫。注意只有當(dāng)分組的安全處理不會導(dǎo)致錯誤并且該分組未被拒絕時,才更新SA數(shù)據(jù)庫。
主SA處理模塊還適合于計數(shù)按分組在每個SA上傳送的字節(jié)的數(shù)目,并且當(dāng)SA的使用期溢出時,產(chǎn)生通知。當(dāng)檢測到溢出時,管理器關(guān)閉(即刪除)該SA。
SA識別模塊接收套接字,并在SA數(shù)據(jù)庫中搜索和該套接字匹配的SA。套接字用于識別SA,并且包括安全參數(shù)索引(SPI),遠(yuǎn)程IP(RIP)和安全協(xié)議標(biāo)識符。SPI包括在參考特定SA的IKE過程之后,由CPU產(chǎn)生的32位隨機(jī)數(shù)。在AH和ESP信頭中傳送SPI,以使接收站能夠選擇按其處理接收分組的SA。遠(yuǎn)程IP是SA的目的地端點(diǎn)的IP地址,該SA可以是最終用戶或VPN網(wǎng)關(guān)或者具有VPN能力的任意設(shè)備。安全協(xié)議標(biāo)識符指示SA是AH還是ESP SA。
SA管理模塊保持SA數(shù)據(jù)庫。利用最近最少使用(LRU)雙重鏈接表管理SA數(shù)據(jù)庫,并利用散列表訪問SA數(shù)據(jù)庫。另外,管理器在入站和出站分組流上將新的SA插入數(shù)據(jù)庫。管理器還使與匹配分組相關(guān)的SA the MRU,就請求產(chǎn)生適用于CPU的多個未用SA,在時間方面檢查一個或多個SA的使用期,當(dāng)刪除SA時,更新LRU和散列鏈接表,并通知動態(tài)過濾器與該SA相關(guān)的會話將被刪除。
SA數(shù)據(jù)庫保存套接字和其它SA相關(guān)數(shù)據(jù),包括SA狀態(tài)和當(dāng)前狀態(tài),供VPN模塊的各個處理模塊使用。散列表被用于加速SA的識別。下面更詳細(xì)地說明這些組件。
主SA處理下面更詳細(xì)地說明主SA處理。圖4A和4B中表示了圖解說明本發(fā)明的主SA處理器方法的流程圖。構(gòu)成VPN模塊和安全關(guān)聯(lián)處理器,以便分三階段處理分組數(shù)據(jù),其中在第一階段中,從SA數(shù)據(jù)庫讀取分組,隨后在第二階段中處理數(shù)據(jù),并在第三階段中,將處理結(jié)果寫回SA數(shù)據(jù)庫。在處理階段中,對分組執(zhí)行一個或多個安全程序,并根據(jù)處理跟蹤SA狀態(tài)。
首先檢查接收的分組是入站分組還是出站分組(步驟110)。如果是出站分組,則檢查動態(tài)過濾器是否找到SA(步驟154)。通常,動態(tài)過濾器搜索其數(shù)據(jù)庫,尋找具有和接收分組的套接字相符的套接字的會話。對于每個會話,在動態(tài)過濾器中的會話數(shù)據(jù)庫中保存有相應(yīng)的SA。當(dāng)找到匹配的會話時,讀出對應(yīng)的SA并將其輸入SA處理器。在美國專利申請序列號No.09/851768(申請日2001年5月9日)“Dynamic Packet Filter Using Session Tracking”中更詳細(xì)地說明了動態(tài)過濾器的操作,該專利申請同樣被轉(zhuǎn)讓并作為參考整體包含于此。
如果關(guān)于該分組未找到SA(步驟154),則該分組被拒絕(步驟168),因為沒有SA,就不能處理該分組,隨后更新狀態(tài)寄存器(步驟146)。這種情況下,CPU打開新的SA,并將相對于該SA的指針保存在動態(tài)過濾器中的會話數(shù)據(jù)庫中。隨后重新拒絕該分組,但是這次動態(tài)過濾器識別出該會話,并將SA傳遞給SA處理器。
如果找到SA,則從SA數(shù)據(jù)庫檢索一個或多個安全參數(shù),分組最大傳送單元(MTU)和上標(biāo)記(upper flag)被傳送給VPN安全處理器中的一個或多個安全引擎(步驟156)。MTU代表允許無分段傳送的分組的最大大小。
加密/解密(ED)和信頭消息鑒權(quán)代碼(HMAC)是對分組數(shù)據(jù)執(zhí)行安全功能的安全引擎的例子。傳送給ED安全引擎的數(shù)據(jù)包括IPSec模式,特定的加密算法(例如DES、3DES等)、CBC或ECB、填充流類型(即0或遞增)、3DES中每個DES的類別、加密初始矢量(IV)(只適用于CBC模式)、加密密鑰和來自信頭解碼器的加密/解密指令。
傳送給HMAC安全引擎的數(shù)據(jù)包括IPSec模式、鑒權(quán)算法(例如SHA1、MD5等)、鑒權(quán)信頭大小(即96或160位)和鑒權(quán)密鑰。
套接字隨后被傳送給分組建立器,以便裝配成分組(步驟158)。傳送給PB的數(shù)據(jù)包括特定的IPSec模式、遠(yuǎn)程IP(如果實(shí)現(xiàn)隧道模式,則是網(wǎng)關(guān)IP)、SPI、遞增1的序列號和路徑MTU。
隨后從SA數(shù)據(jù)庫讀取序列號和使用期字段(步驟160)。隨后檢查序列號和使用期(步驟162)。檢查序列號是否發(fā)生了溢出。序列號溢出可以是硬溢出或軟溢出。如果發(fā)生硬溢出,則關(guān)閉SA(步驟164),拒絕該分組(步驟168),并據(jù)此更新狀態(tài)寄存器(步驟146)。如果發(fā)生軟溢出,則通過修改下標(biāo)記中的軟序列(SEQ)位,通知CPU,處理繼續(xù)步驟120。如果沒有發(fā)生序列號溢出,則控制轉(zhuǎn)到步驟120。
對于使用期,檢查是否發(fā)生了使用期溢出。注意主SA處理只依據(jù)字節(jié)檢查使用期。SA管理執(zhí)行依據(jù)字節(jié)的使用期檢查。從使用期的當(dāng)前值減去接收分組的大小,結(jié)果核實(shí)溢出。小于0的結(jié)果表示溢出。溢出可以是硬溢出或軟溢出。如果發(fā)生了硬溢出,則關(guān)閉SA(步驟164),拒絕該分組(步驟168),并據(jù)此更新狀態(tài)寄存器(步驟146)。如果發(fā)生了軟溢出,則通過修改下標(biāo)記中的軟使用期(SLT)位通知CPU,處理繼續(xù)執(zhí)行步驟S120。如果沒有發(fā)生使用期溢出,則控制轉(zhuǎn)到步驟120。
如果接收的分組是入站分組(步驟110),對該分組執(zhí)行安全關(guān)聯(lián)識別(步驟112),如下更詳細(xì)所述。通過散列SPI、遠(yuǎn)程IP/網(wǎng)關(guān)IP和協(xié)議識別SA。識別結(jié)果被返回給主SA處理器。如果在識別過程中沒有發(fā)現(xiàn)任何匹配SA入口,則拒絕該分組(和SA仍然不存在時的情況一樣)。如果識別找到匹配SA,則譯解該分組。動態(tài)過濾器將該分組識別成第一分組,打開新會話并連接該會話和SA。
如果IPSec模式失敗(步驟114),則拒絕該分組(步驟152),并更新狀態(tài)寄存器(步驟146)。如果IPSec模式未失敗,則將上標(biāo)記傳遞給安全引擎,例如ED、HMAC,和分組建立器(步驟116)。分組建立器裝配明文形式的分組,以便通過LAN轉(zhuǎn)發(fā)。
傳送給ED安全引擎的數(shù)據(jù)包括IPSec模式、加密算法(例如DES、3DES等)、CBC或ECB、填充流類型、3DES中每個DES的類別、加密密鑰和來自信頭解碼器的加密/解密指令(即是要進(jìn)行加密還是解密)。
傳送給HMAC安全引擎的數(shù)據(jù)包括IPSec模式、鑒權(quán)算法(例如SHA1、MD5等)、鑒權(quán)信頭和鑒權(quán)密鑰。
如果任意安全引擎產(chǎn)生錯誤(例如,如果填充失敗,由ED產(chǎn)生錯誤,或者如果鑒權(quán)失敗,由HMAC產(chǎn)生錯誤,等等),則拒絕該分組(步驟114)。
隨后執(zhí)行防重放窗口方法(步驟118),下面更詳細(xì)地說明。如果接收的序列號超過防重放窗口(ARW),則更新和改變接收的序列號以便調(diào)整接收的序列號。
如果SA是AH(步驟120),則AH密鑰被傳送給鑒權(quán)安全引擎(步驟148),控制轉(zhuǎn)到步驟140。SA可以是(1)AH單一SA或者(2)為ESP和AH SA束(bundle)一部分的AH SA。在后一情況下,在首次通過該方法的過程中,指針指向所述束的ESP部分,在第二次通過該方法的過程中,指針指向所述束的AH部分。
如果SA不同于AH SA,則檢查分組是否是入站分組(步驟122)以及是否是CBC(步驟124)。如果是,則IV被傳遞給ED安全引擎(步驟126)。如果分組不是入站分組或者不是CBC,則將ESP密鑰傳送給ED安全引擎(步驟128)。
如果接收的分組是ESP/AU分組(帶有鑒權(quán)的ESP)(步驟130),則將AH密鑰傳送給鑒權(quán)安全引擎(步驟148)。如果否,并且分組不是ESP(步驟132),而是入站分組(步驟136),則關(guān)于ESP和AH類分組指向AH SA部分(步驟137),控制隨后轉(zhuǎn)到步驟118。如果分組是出站分組,則控制轉(zhuǎn)到步驟162。如果接收分組不是ESP/AU分組(步驟130),而是ESP分組(步驟132),出站分組(步驟134)和CBC分組(步驟138),則將加密IV保存在SA數(shù)據(jù)庫中(步驟139)。
如果分組是入站分組(步驟134),則將ARW保存在SA數(shù)據(jù)庫中(步驟140),將更新的序列號保存在SA數(shù)據(jù)庫中(步驟142),更新下標(biāo)記(步驟144),更新狀態(tài)寄存器(步驟146)。在狀態(tài)寄存器更新之后,可出現(xiàn)中斷,發(fā)信號向CPU或者其它主設(shè)備通知主SA處理的完成。
安全關(guān)聯(lián)識別現(xiàn)在詳細(xì)說明SA識別過程。圖5中圖解說明確定與輸入分組相關(guān)的SA的散列技術(shù)。每個SA對應(yīng)于一個獨(dú)特的套接字。通過比較接收分組的套接字和與保存在SA數(shù)據(jù)庫中的先前打開的SA相關(guān)的套接字,識別SA。為了加速SA的識別,使用了散列表,所述散列表保存SA數(shù)據(jù)庫中的SA記錄的散列指針,并允許快速查找對應(yīng)于接收套接字的SA。
新的SA被保存在SA數(shù)據(jù)庫中,VPN模塊、SA處理器或者CPU計算關(guān)于套接字的散列。散列指針保存在散列表170(圖5)中散列結(jié)果指向的位置。如果一個以上的SA被保存在該位置,則將該SA添加到鏈接列表中。注意散列表中的各入口最初被初始化成NULL。
當(dāng)收到分組時,套接字172被輸入散列計算器176,散列計算器176產(chǎn)生并輸出散列結(jié)果178。散列結(jié)果被用作散列表170的索引,散列表170包括分別包含散列指針的多個入口180。散列指針指向SA數(shù)據(jù)庫中的SA 182的鏈接列表。記錄在數(shù)據(jù)庫中的每個SA記錄包括前一指針186和后一指針184,從而實(shí)現(xiàn)雙重鏈接列表。如果命中套接字,則必須檢查鏈接列表中的每個SA,直到找到與接收分組的套接字的匹配為止。
最好,選擇散列函數(shù)以便橫越散列表產(chǎn)生散列結(jié)果的盡可能均勻的展形(Spread)。散列函數(shù)可以是任意適當(dāng)?shù)暮瘮?shù),例如XOR函數(shù)或CRC。和簡單的XOR散列函數(shù)相比,在一個實(shí)施例中,通過使用隨機(jī)矢量174,根據(jù)下述等式計算散列結(jié)果,可提高性能。
SOCK1SOCK2SOCK3···SOCKN1×N⊗RV1RV2RV3···RVNRV2RV3RV4···RVN-1RV3RV4RV5···RVN-2···············RVRRVR+1RVR+2···RVR+N-1N×R=OUT1OUT2OUT3···OUTR1×R----(1)]]>其中運(yùn)算符被如下定義OUTi=(RVi1AND SOCK1)(RVi2AND SOCK2)...(RViNAND SOCKN)(2)OUTi代表輸出矩陣的第i個字節(jié);SOCKk代表輸入矩陣的第k個字節(jié);RVik代表隨機(jī)矢量矩陣的i,j字節(jié);表示XOR函數(shù);從而利用隨機(jī)矢量和輸入套接字?jǐn)?shù)據(jù)產(chǎn)生輸入套接字?jǐn)?shù)據(jù)1。
圖6中表示了圖解說明本發(fā)明的SA識別過程的散列方法的流程圖。第一步是從信頭解碼器獲得接收分組的散列指針(通常由信頭解碼器提供),套接字和序列號(步驟190)。散列值由散列計算器176產(chǎn)生。另一方面,信頭解碼器或其它實(shí)體可計算散列指針。查尋散列表,從散列表讀取散列指針(步驟191)。如果散列指針等于NULL(步驟192),則拒絕該分組。
如果散列指針不是NULL,則使用散列指針讀取和散列指針相關(guān)的鏈接列表中的第一SA和對應(yīng)于該SA的套接字(步驟194)。將該SA的套接字和接收分組中的套接字進(jìn)行比較(步驟196)。如果套接字匹配(步驟197),則發(fā)現(xiàn)SA匹配(步驟202),并向主SA過程報告。如果套接字不匹配(步驟197),從鏈接列表讀取下一散列指針(步驟198),該方法從步驟192開始重復(fù),直到最后的散列指針指向NULL或者發(fā)現(xiàn)SA匹配為止。
注意即使在鏈接列表中只保存一個SA的情況下,也總是對套接字進(jìn)行完全比較。另外注意本發(fā)明的范圍不受哪個實(shí)體更新和保持鏈接列表(即或者SA處理器或者CPU更新和保持鏈接列表)限制。散列表的深度可以是任意所需值。但是通常根據(jù)同時要保持的SA的數(shù)目設(shè)置深度。散列入口的數(shù)目最好是SA數(shù)目的一倍或兩倍,因為完全套接字比較費(fèi)時,副本過多是不可取的。
安全關(guān)聯(lián)數(shù)據(jù)庫現(xiàn)在更詳細(xì)地說明SA數(shù)據(jù)庫86(圖3)。如前所述,SA數(shù)據(jù)庫保存多個安全關(guān)聯(lián)性的涉及安全性的數(shù)據(jù)。SA數(shù)據(jù)庫的大小可根據(jù)實(shí)現(xiàn)和系統(tǒng)要求而變化。下表1中列舉了構(gòu)成數(shù)據(jù)庫的每個記錄的字段。
表1SA數(shù)據(jù)庫記錄字段字段號 字段說明 長度(位)1上標(biāo)記 162路徑MTU 163遠(yuǎn)程IP地址/網(wǎng)關(guān)地址 324安全參數(shù)索引(SPI) 32
5 下一SA束指針 166 前一SA束指針 167 下一散列指針 168 前一散列指針 169 下一LRU指針 1610 前一LRU指針 1611 下標(biāo)記1612 最后匹配會話指針 1613 序列號3214 防重放窗口(127:0) 12815 加密初始值(63:0) 6416 加密密鑰(191:0) 19217 鑒權(quán)密鑰/散列密鑰輸入(159:0) 16018 散列密鑰輸出(159:0) 16019 軟/硬使用期 32字段1和11分別保存上標(biāo)記和下標(biāo)記,上下標(biāo)記包含后面更詳細(xì)說明的多個狀態(tài)位。路徑MTU保存在字段2中,代表關(guān)于包括所有信頭的分組允許的最大大小。字段3中的遠(yuǎn)程IP/網(wǎng)關(guān)IP地址和字段4中的SPI構(gòu)成SA套接字及安全協(xié)議標(biāo)識符。下一SA指針和前一SA指針(字段5和6)用于構(gòu)成均與相同的安全策略數(shù)據(jù)庫(SPD)相關(guān)的SA的雙重鏈接列表。字段7和8保存前面說明的散列鏈接列表內(nèi)的下一和前一散列指針。在分組的SA識別過程中,使用散列鏈接列表。字段9和10保存LRU鏈接列表中的下一和前一LRU指針,用于按照陳舊性對SA排序。下面更詳細(xì)地說明LRU鏈接列表操作。
相對于具有該SA的最后打開的會話的指針保存在字段12中。該SA的當(dāng)前序列號保存在字段13中。字段14保存在ARW機(jī)制中用于拒絕重放分組的128位防重放窗口。字段15保存64位加密初始值(IV),字段16保存192位的加密密鑰,字段17保存160位的鑒權(quán)密鑰/散列密鑰輸入(HKI)。字段18保存160位散列密鑰輸出(HKO)值。字段19保存SA的軟/硬使用期,它被用于確定何時關(guān)閉特定SA。
HKI和HKO是在鑒權(quán)過程中產(chǎn)生的中間結(jié)果。它們都保存在該表中,以便當(dāng)收到后續(xù)分組時節(jié)省處理時間。HKI和HKO都由鑒權(quán)密鑰和預(yù)定填充值的散列計算得到。HKI值保存在SA數(shù)據(jù)庫中鑒權(quán)密鑰的位置,因為一旦計算得到HKI值,就不再需要初始密鑰。另一方面,鑒權(quán)密鑰、HKI和HKO值可單獨(dú)保存在數(shù)據(jù)庫中。SA數(shù)據(jù)庫從HMAC安全引擎接接收收首次使用SA時的HKI和HKO值。
如上所述,SA數(shù)據(jù)庫包括上標(biāo)記和下標(biāo)記,用于相對于CPU傳送狀態(tài)信息。上標(biāo)記狀態(tài)包括如下表2中所示的多個位。
表2上標(biāo)記位標(biāo)記定義 大小 值 描述0000 無VPN0001 傳送AH0010 隧道AH0011 傳送ESP0100 隧道ESP0101 傳送ESP/AUIPM IPSed模式4位0110 隧道ESP/AU0111 傳送ESP傳送AH1000 隧道ESP傳送AH1001 傳送ESP空(僅AU)1010 隧道ESP空(僅AU)1011 鑒權(quán)產(chǎn)生/檢查1100 加密/解密1101 加密/解密+鑒權(quán)DET DES類型 1位 0 DES1 3DESDEM DES模式 1位 0 ECB1 CBC
PAM PAD模式 1位 0 填充0的ESP1 填充遞增值的ESP000EEE001EED010EDE3DE 3DES類別 3位 011EDD100DEE101DED110DDE111DDDAHT AH類型1位 0 MD51 SHA1KEY密鑰的首次使用1位0 這是同一密鑰1 該密鑰的首次使用-產(chǎn)生HKI和HKOAHS AH大小1位 0 AH大小為961 AH大小為160AH AH或ESP1位 0 該SA是ESP1 該SA是AHDIR 目錄 1位 0 出站分組的SA1 入站分組的SAEMP 空1位 0 該SA被使用(SA有效)1 該SA為空(SA無效)所有上標(biāo)記由CPU設(shè)置并由SA處理器讀取。EMP標(biāo)記也可由SA處理器設(shè)置。當(dāng)SA為空,即無效時,SA處理器將該位設(shè)置為1。當(dāng)SA有效時,CPU將該位設(shè)置成0。IPM位指示具體的IPSec模式,即ESP、ESP/AU、僅AU、傳送、隧道等??蛇x的是,最后三種IPSec模式可用于實(shí)現(xiàn)輔助安全標(biāo)準(zhǔn),例如安全套接字層(SSL),從而對某一文件加密等。在這些模式中,單獨(dú)使用VPN引擎,而不具有分組建立功能。從而,VPN引擎起軟件加速器的作用,軟件加速器實(shí)現(xiàn)DES/3DES加密/解密引擎模式(IPM=1100),SHA-1/MD-5鑒權(quán)引擎模式(IPM=1011)或者加密和鑒權(quán)引擎模式(IPM=1101)。
DET位指示DES的類型或者為DES或者為3DES。DEM位指示DES模式或者為ECB或者為CBC。PAM位指示填充0的ESP或填充遞增值的ESP。3DE位指示特定的3DES類別。AHT位指示AH鑒權(quán)的類型或者為MD5或者為SHA1。AHS位指示AH的大小或者為96位或者為160位,AH位指示SA或者為ESP或者為AH,DIR位指示SA是用于出站分組還是用于入站分組。
SA數(shù)據(jù)庫還包括下標(biāo)記狀態(tài)寄存器,用于相對于CPU傳送狀態(tài)信息。下標(biāo)記狀態(tài)信息包括下表3中所示的多個位。
表3下標(biāo)記位標(biāo)記 定義 大小 值 描述00禁止防重放01防重放窗口=32ARW ARW大小2位 10防重放窗口=6411防重放窗口=128HSH HSAH中的第一個 1位 0 這不是本HASH入口中的第一SA1 這是本HASH入口中的第一SAHLD保持1位 01 不刪除本會話MAN手動鍵入1位 0 無關(guān)于該SA的手動鍵入1 關(guān)于該SA的手動鍵入SAL SA使用期模式 1位 0 以秒測量SA使用期1 以64字節(jié)為單位測量SA使用期SOH 軟或硬使用期 1位 0 該SA中的使用期為軟使用期1 該SA中的使用期為硬使用期SLT軟使用期1位 01 SA使用期達(dá)到軟溢出SEQ軟序列 1位 0
1 SA序列達(dá)到軟溢出ARW位位指示防重放窗口的大小(如果存在防重放窗口)。HLD位指示不刪除特定的SA。該標(biāo)記使SA入口免被SA處理器硬件刪除。MAN位指示是否存在關(guān)于SA的手動鍵入。如果配置了手動鍵入,則當(dāng)達(dá)到0xFFFFFFFF時,序列翻轉(zhuǎn),因為手動鍵入不允許被SA處理器刪除。SAL位指示是用時間還是用數(shù)據(jù),即用秒還是64字節(jié)單位測量SA使用期。SOH位指示使用期是軟使用期還是硬使用期。SLT位指示在軟使用期內(nèi)是否發(fā)生了軟溢出。SEQ位指示在SA序列中發(fā)生了軟溢出。注意ARW、HLD、MAN、SAL和SOH標(biāo)記由CPU設(shè)置并由SA處理器讀取。SLT和SEQ標(biāo)記由SA處理器設(shè)置并由CPU讀取。除非設(shè)置了HLD或MAN標(biāo)記,否則當(dāng)序列溢出時(0xFFFFFFFF),刪除該SA。
防重放窗口機(jī)制根據(jù)本發(fā)明,主SA處理適合于實(shí)現(xiàn)防重放機(jī)制,從而拒絕重放分組。防重放窗口機(jī)制跟蹤分組中的序列號,并拒絕其序列號小于許可的最小序列號的分組。圖7中表示了圖解說明檢查過程中,由主SA處理器執(zhí)行的防重放窗口機(jī)制。
x軸代表SA序列號,最小序列號為0x00000000,最大序列號為0xFFFFFFFF。產(chǎn)生一個窗口,稱為代表許可序列號的防重放窗口(ARW)(段212)。其序列號低于該窗口的接收分組被拒絕(段210)。另外,每個序列號只允許一個分組。從而,ARW包括落入其內(nèi)的每個序列號的一位。當(dāng)收到分組時,設(shè)置相應(yīng)的序列號位。其序列號位已被設(shè)置的接收分組被拒絕。
圖8中表示了圖解說明本發(fā)明的防重放窗口方法的流程圖。首先從接收的分組讀取序列號(步驟280)。從SA數(shù)據(jù)庫檢索防重放窗口的當(dāng)前位置(步驟282)。如果序列號在窗口內(nèi)(步驟284),則檢查是否已收到具有該序列號的分組(步驟286)。如果是,則拒絕該分組(步驟290)。如果否,則ARW機(jī)制允許該分組。
如果接收分組中的序列號在窗口之外(步驟284),則檢查它是低于還是高于ARW(步驟288)。如果低于窗口,則拒絕該分組。如果高于窗口,則許可該分組,并將ARW向上調(diào)節(jié)到新的序列號,即向右移動。
1 SA管理模塊根據(jù)本發(fā)明,SA管理模塊保持雙重鏈接列表,雙重鏈接列表按照最近最少使用順序保存SA。SA管理模塊實(shí)現(xiàn)與SA數(shù)據(jù)庫的保持和控制相關(guān)的幾種功能。SA管理模塊根據(jù)來自CPU的命令,檢查SA數(shù)據(jù)庫中SA的SA入口(即使用期)的有效性。當(dāng)收到檢查使用期的命令時,檢查SA數(shù)據(jù)庫中每個記錄的使用期字段。向CPU報告軟使用期溢出,在硬使用期溢出的情況下,刪除相應(yīng)的SA。對SA進(jìn)行使用期檢查,以便清洗已變得陳舊和由于某一原因未正常關(guān)閉的SA。例如,如果某一SA對應(yīng)于違反了安全規(guī)則的分組,則該SA可能變得陳舊。
當(dāng)SA被刪除時,SA管理模塊通過保持LRU和散列指針關(guān)系,保持和更新SA束,并通知動態(tài)過濾器模塊應(yīng)關(guān)閉哪個對應(yīng)會話,以便確保使用該SA的會話將被關(guān)閉。
SA管理模塊還應(yīng)請求向CPU提供未使用的(即空的并且可用的)SA。操作中,CPU請求一個或多個新的SA,SA管理模塊搜索并將一個或多個索引返回給CPU。通過斷開最近最少使用的SA束(即傳送方向和接收方向的SA)和所有相關(guān)連接會話,從LRU列表獲得SA。類似地,SA管理模塊還斷開不再使用的SA。SA管理模塊還打開新的SA,其中散列表和SA數(shù)據(jù)庫中的LRU指針和散列指針被更新。
圖9中圖解說明了用于跟蹤SA使用的最近最少使用(LRU)鏈接列表結(jié)構(gòu)。當(dāng)打開SA時,通過CPU將安全性關(guān)聯(lián)入口輸入SA數(shù)據(jù)庫中。CPU向SA管理模塊請求SA索引。下一SA束指針和前一SA束指針被用于連接彼此相關(guān)的SA。為了將SA插入數(shù)據(jù)庫中,使用前導(dǎo)SA的索引將新SA插入LRU中。另外,CPU計算新SA的套接字的散列值,并將其寫入寄存器中標(biāo)記其散列值。
注意在這里給出的例證實(shí)施例中,主機(jī)或外部CPU在IKE過程中配置SA的涉及安全性的參數(shù),例如密鑰分配、HMAC的長度、填充等。SA管理模塊依據(jù)CPU或主機(jī)的命令實(shí)現(xiàn)SA的實(shí)際插入。
每次認(rèn)出(即存取)某一SA,并且對應(yīng)分組不被SA處理器拒絕時,該SA被置于LRU鏈接列表的尾部,代表最近最多使用的SA。雙重鏈接列表220包括多個SA 226,每個SA 226具有下一指針222和前一指針224。tail_LRU_index_reg寄存器228的內(nèi)容指向位于LRU鏈接列表尾部的SA。該寄存器指向的SA代表最近最多使用的SA。位于LRU鏈接列表頭部的SA由head_LRU_index_reg寄存器227的內(nèi)容指向。
在SA數(shù)據(jù)庫充滿的情況下,LRU鏈接列表被用于確定當(dāng)加入新SA時,要刪除哪個SA。這種情況下,關(guān)閉最近最少使用的SA,該空間用于保存新SA。
圖10中表示了圖解說明當(dāng)認(rèn)出與輸入分組相關(guān)的SA時,更新LRU鏈接列表的方法的流程圖。每次存取匹配SA并且許可相應(yīng)分組時,執(zhí)行該更新方法。參見圖9,尤其是標(biāo)記為前一SA、匹配SA和下一SA的SA,匹配SA從其在列表中的位置移動到尾部,從而變成最近最多使用的SA。通過(1)將前一SA的下一LRU指針設(shè)置成匹配SA的下一LRU指針,和(2)將下一SA的前一LRU指針設(shè)置成匹配SA的前一LRU指針,刪除匹配SA(步驟230)。
隨后通過(1)將匹配SA的下一LRU指針設(shè)置成NULL,(2)將匹配SA的前一LRU指針設(shè)置成tail_LRU_index_reg寄存器的內(nèi)容,和(3)將tail_LRU_index_reg寄存器設(shè)置成匹配SA的索引,使匹配SA成為最近最多使用的SA(步驟232)。
圖11中表示了圖解說明本發(fā)明的SA管理模塊的處理的流程圖。SA管理處理開始于等待步驟241,并根據(jù)事件轉(zhuǎn)移到下一步驟。就來自CPU的‘獲得未使用SA’指令來說,取出最近最少使用SA的狀態(tài)(步驟242)。如果該SA在使用(步驟246),則關(guān)閉該SA和所有相關(guān)的連接會話(步驟244)。如果該SA未使用,則將head_LRU_index_reg設(shè)置成最近最少使用SA的下一LRU指針,并將下一(前一LRU指針)設(shè)置成NULL(步驟248)。隨后將刪除的SA的下一和前一LRU指針設(shè)置成NULL,從而從LRU鏈接列表中刪除最近最少使用的SA(步驟250)。unused_sa變量被設(shè)置成剛剛斷開的SA,通知CPU的標(biāo)記因此被設(shè)置成‘1’(步驟252)。該該過程隨后返回等待狀態(tài)(步驟254)。
來自CPU的‘檢查使用期’命令使SA管理器開支檢查所有現(xiàn)用SA的使用期。遞增index_counter(步驟260),取出SA的狀態(tài)(即index_counter)(步驟262)。如果該SA目前正在使用(步驟264),從SA數(shù)據(jù)庫取出SA使用期(步驟372)。如果使用期已溢出(用時間或字節(jié)數(shù)測量)(即SA已到期)(步驟272),則關(guān)閉該SA和所有相關(guān)的連接會話(步驟274)。
如果該SA未被使用或者如果該SA還未到期,則檢查index_counter是否小于最后索引(步驟266)。如果是,則遞增index_counter(步驟268),該方法繼續(xù)執(zhí)行步驟262。如果否,則通過主SA處理模塊通知CPU使用期檢查結(jié)束(步驟258),該方法返回等待狀態(tài)(步驟254)。
圖12中表示了圖解說明本發(fā)明的SA管理模塊執(zhí)行的打開SA的處理的流程圖。當(dāng)SA被打開時,該SA被置于LRU鏈接列表的尾部(步驟330)。該SA還被置于散列鏈接列表中的適當(dāng)位置(步驟332)。該方法隨后返回等待狀態(tài)(步驟334)。
圖13中表示了圖解說明本發(fā)明的SA管理模塊執(zhí)行的關(guān)閉SA的處理的流程圖。如果SA可關(guān)閉或者發(fā)生了序列號溢出(步驟340),則在不修改LRU指針的情況下清除該SA(步驟342)。隨后關(guān)閉與該SA相關(guān)的所有會話(步驟344)。該方法隨后返回等待狀態(tài)(步驟359)。
如果該SA不能被關(guān)閉以及沒有發(fā)生序列號溢出(步驟340),并且關(guān)閉請求起源于使用期檢查(步驟346),則不關(guān)閉該SA(步驟358),該方法返回等待狀態(tài)(步驟359)。如果關(guān)閉請求不是起源于使用期檢查,則取出最近最少使用列表指向的下一SA狀態(tài)(步驟348)。如果該SA不能被關(guān)閉(步驟350),該方法繼續(xù)執(zhí)行步驟348,重復(fù)該過程,直到找到能夠被關(guān)閉的SA為止。如果找到能夠被關(guān)閉的SA,則將該SA配置成LRU(步驟352)。隨后除了LRU指針之外,清除該SA(步驟354),清除與該SA相關(guān)的所有會話,該方法返回等待狀態(tài)(步驟359)。
如上所述,SA管理模塊還將指向關(guān)于該SA使用的最后打開會話的指針保持在SA數(shù)據(jù)庫中。圖14中表示了與每個SA記錄相關(guān)的最后打開會話指針。每個SA入口可包括指向不同的最后打開會話的指針。每打開一個會話時,更新該指針。注意最后打開會話總是位于相關(guān)會話列表的頭部。
動態(tài)過濾器中的會話數(shù)據(jù)庫適合于保存數(shù)個指針,包括LRU指針、散列指針、族指針和SA指針。SA指針指向該會話使用的SA。圖15中表示了與每個會話記錄相關(guān)的前一會話指針、下一會話指針和匹配SA指針。會話數(shù)據(jù)庫中的會話記錄包括將用于該會話的匹配SA的指針和使用相同SA的會話的前一和下一族指針。當(dāng)SA被關(guān)閉時,并且要關(guān)閉與該SA相關(guān)的所有會話時,使用會話入口中的下一和前一指針。SA入口中的最后打開指針被用于指向使用該SA的一個或多個會話的列表。當(dāng)該SA被關(guān)閉時,還必須關(guān)閉相關(guān)會話。注意當(dāng)SA被關(guān)閉時,傳送和接收SA被刪除,所有連接會話也被刪除,除非它們是某一族的一部分。這種情況下,它們被標(biāo)記成要刪除的候選者(即設(shè)置會話數(shù)據(jù)庫標(biāo)記中的PSV位)。
圖16中表示了單一會話和單一SA記錄之間的例證關(guān)系。本例中,只有一個會話入口使用該SA。前一和下一指針從而指向NULL。SA入口包含該SA的最后打開會話的指針。
圖17中表示了多個會話和單一SA記錄之間的例證關(guān)系。本例中,三個會話使用相同的SA。從而,所有三個會話的匹配SA指針指向相同SA。每個會話的下一和前一指針被配置成形成包括這三個會話的雙重鏈接列表。鏈接列表邏輯連接使用相同SA的會話。該SA入口包括該SA的最后打開會話的指針,該指針指向鏈接列表頭部。
計算機(jī)實(shí)施例在另一實(shí)施例中,計算機(jī)執(zhí)行適于實(shí)現(xiàn)本發(fā)明的VPN機(jī)制或其任意部分(例如安全關(guān)聯(lián)處理器)的軟件。圖18中表示了圖解說明適于實(shí)現(xiàn)本發(fā)明的VPN機(jī)制的例證計算機(jī)處理系統(tǒng)-平臺的方框圖。該系統(tǒng)可包含在諸如PDA、蜂窩電話機(jī)、電纜調(diào)制解調(diào)器、寬帶調(diào)制解調(diào)器、膝上型計算機(jī)、PC、網(wǎng)絡(luò)傳輸或交換設(shè)備、網(wǎng)絡(luò)設(shè)備之類通信設(shè)備,或者任意其它有線或無線通信設(shè)備中??衫糜布?或軟件的任意組合構(gòu)成該設(shè)備。
計算機(jī)系統(tǒng)300包括處理器304,處理器304可被實(shí)現(xiàn)成微控制器、微處理器、微計算機(jī)、ASIC核心、FPGA核心、中央處理器(CPU)或者數(shù)字信號處理器(DSP)。系統(tǒng)還包括均與處理器通信的靜態(tài)只讀存儲器(ROM)302和動態(tài)主存儲器(例如RAM)308。處理器還通過總線326與也包含在計算機(jī)系統(tǒng)中的許多外圍設(shè)備通信。
該設(shè)備通過WAN接口316與諸如因特網(wǎng)之類WAN 318連接。另一方面,網(wǎng)絡(luò)318可包括基于光學(xué)以太網(wǎng)的MAN或者其它類型的MAN,取決于位置。接口包括相對于一個或多個WAN通信通道的有線和/或無線接口。通信I/O處理314在WAN接口和處理器之間傳送數(shù)據(jù)。計算機(jī)系統(tǒng)還通過適合于處理正被使用的特定網(wǎng)絡(luò)協(xié)議,例如銅線或光纖以太網(wǎng)、令牌環(huán)等各種協(xié)議之一的網(wǎng)絡(luò)接口卡(NIC)310連接LAN 312。操作中,計算機(jī)系統(tǒng)如前所述動態(tài)過濾從WAN到LAN的入站分組和從LAN到WAN的出站分組。
可選的用戶接口320響應(yīng)用戶輸入,并提供反饋和其它狀態(tài)信息。主機(jī)接口322連接主計算設(shè)備324和系統(tǒng)。主機(jī)適于配置、控制和維持系統(tǒng)的操作。系統(tǒng)還可包括保存應(yīng)用程序和數(shù)據(jù)的磁存儲設(shè)備306。系統(tǒng)包括計算機(jī)可讀存儲介質(zhì),計算機(jī)可讀存儲介質(zhì)可包括任意適當(dāng)?shù)拇鎯ρb置,包括(但不限于)磁性存儲裝置、光學(xué)存儲裝置、CD-ROM驅(qū)動器、ZIP驅(qū)動器、DVD驅(qū)動器、DAT磁帶、半導(dǎo)體易失性或非易失性存儲器、生物存儲裝置、或者其它任意存儲裝置。
實(shí)現(xiàn)本發(fā)明的VPN機(jī)制的功能或其任意部分,例如安全性關(guān)聯(lián)處理器的軟件適合于駐留在計算機(jī)可讀介質(zhì)上,例如磁盤驅(qū)動器內(nèi)的磁盤或者任意其它易失性或非易失性存儲器。另一方面,計算機(jī)可讀介質(zhì)可包括軟盤、快速存儲卡、EPROM、EEROM、EEPROM存儲器,磁泡存儲器、ROM存儲器等。適于實(shí)現(xiàn)本發(fā)明的VPN機(jī)制或其任意部分,例如安全性關(guān)聯(lián)處理器的軟件還可整體或部分地駐留于計算機(jī)系統(tǒng)的處理器內(nèi)的靜態(tài)或動態(tài)主存儲器或者固件內(nèi)(即在微控制器、微處理器、微計算機(jī)、DSP等的內(nèi)部存儲器內(nèi))。
在備選實(shí)施例中,本發(fā)明的方法適于用集成電路、現(xiàn)場可編程門陣列(FPGA)、芯片集或?qū)S眉呻娐?ASIC)、DSP電路、無線實(shí)現(xiàn)和其它通信系統(tǒng)產(chǎn)品實(shí)現(xiàn)本發(fā)明。
附加的權(quán)利要求意圖覆蓋落入本發(fā)明精神和范圍內(nèi)的本發(fā)明的所有特征和優(yōu)點(diǎn)。由于本領(lǐng)域的技術(shù)人員易于想到各種修改和變化,因此本發(fā)明并不局限于這里描述的有限實(shí)施例。因此,可采用落入本發(fā)明精神和范圍內(nèi)的所有適當(dāng)變化、修改和等同物。
權(quán)利要求
1.一種安全性關(guān)聯(lián)處理器電路,包括存儲多個用于安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù);當(dāng)收到未在所述安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,打開新的安全性關(guān)聯(lián)的裝置;根據(jù)分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的裝置;從所述安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù)的裝置;和將所述多個安全參數(shù)轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理的裝置。
2.按照權(quán)利要求1所述的電路,還包括根據(jù)所述安全處理的結(jié)果,更新所述安全性關(guān)聯(lián)數(shù)據(jù)庫的內(nèi)容的裝置。
3.按照權(quán)利要求1所述的電路,其中與所述安全性關(guān)聯(lián)相關(guān)的參數(shù)由位于所述電路之外的實(shí)體配置,其中所述電路包括將對應(yīng)于所述安全性關(guān)聯(lián)數(shù)據(jù)庫中的所述新的安全性關(guān)聯(lián)的安全數(shù)據(jù),以及根據(jù)與所述新安全性關(guān)聯(lián)相關(guān)的套接字所計算的散列值,保存在所述安全性關(guān)聯(lián)數(shù)據(jù)庫中的裝置。
4.按照權(quán)利要求1所述的電路,其中所述安全性關(guān)聯(lián)由位于所述電路之外的實(shí)體打開,其中所述電路包括將所述新安全性關(guān)聯(lián)的指針插入最近最少使用(LRU)鏈接列表中的裝置。
5.按照權(quán)利要求1所述的電路,還包括從所述安全性關(guān)聯(lián)數(shù)據(jù)庫中去除未使用的安全性關(guān)聯(lián)的裝置。
6.按照權(quán)利要求1所述的電路,還包括當(dāng)超過最大超時時,從所述安全性關(guān)聯(lián)數(shù)據(jù)庫中去除未使用的安全性關(guān)聯(lián)的裝置。
7.按照權(quán)利要求1所述的電路,還包括當(dāng)超過最大字節(jié)計數(shù)時,從所述安全性關(guān)聯(lián)數(shù)據(jù)庫中去除未使用的安全性關(guān)聯(lián)的裝置。
8.按照權(quán)利要求1所述的電路,其中所述搜索和識別安全性關(guān)聯(lián)的裝置包括根據(jù)與將被識別的安全性關(guān)聯(lián)相關(guān)的套接字來計算散列值的裝置;利用散列結(jié)果作為索引,在散列表中查尋散列指針的裝置;根據(jù)所述散列指針,從所述安全性關(guān)聯(lián)數(shù)據(jù)庫檢索數(shù)據(jù)的裝置;如果所檢索的數(shù)據(jù)和與分組相關(guān)的套接字相符,則識別所述安全性關(guān)聯(lián)的裝置。
9.按照權(quán)利要求1所述的電路,其中所述VPN安全處理器包括進(jìn)行加密的裝置。
10.按照權(quán)利要求1所述的電路,其中所述VPN安全處理器包括進(jìn)行解密的裝置。
11.按照權(quán)利要求1所述的電路,其中所述VPN安全處理器包括進(jìn)行鑒權(quán)的裝置。
12.按照權(quán)利要求1所述的電路,其中所述VPN安全處理器包括執(zhí)行IPSec規(guī)定服務(wù)的裝置。
13.按照權(quán)利要求1所述的電路,還包括對入站分組應(yīng)用防重放機(jī)制的裝置。
14.按照權(quán)利要求1所述的電路,還包括跟蹤入站分組的序列號的裝置。
15.按照權(quán)利要求1所述的電路,還包括建立并保持具有頭部和尾部的最近最少使用(LRU)雙重鏈接列表的裝置,其中最近最多使用的安全性關(guān)聯(lián)保存在尾部,最近最少使用的安全性關(guān)聯(lián)保存在頭部。
16.按照權(quán)利要求15所述的電路,其中在所述LRU列表充滿的情況下,刪除位于頭部的安全性關(guān)聯(lián),將新的安全性關(guān)聯(lián)加在尾部。
17.按照權(quán)利要求1所述的電路,其中所述套接字包括安全參數(shù)索引(SPI)、遠(yuǎn)程IP和協(xié)議組件。
18.按照權(quán)利要求1所述的電路,其中所述安全性關(guān)聯(lián)數(shù)據(jù)包括下述值任意之一或者它們的組合IPSec模式、加密算法、加密密鑰。
19.按照權(quán)利要求1所述的電路,其中所述安全性關(guān)聯(lián)數(shù)據(jù)包括下述值任意之一或者它們的組合IPSec模式、鑒權(quán)算法、鑒權(quán)密鑰。
20.按照權(quán)利要求1所述的電路,還包括如果從所述VPN安全處理器收到誤碼,則拒絕所述分組的裝置。
21.按照權(quán)利要求1所述的電路,其中利用專用集成電路(ASIC)實(shí)現(xiàn)所述電路。
22.按照權(quán)利要求1所述的電路,其中利用現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)所述電路。
23.按照權(quán)利要求1所述的電路,其中利用數(shù)字信號處理器(DSP)實(shí)現(xiàn)所述電路。
24.一種虛擬專用網(wǎng)絡(luò)(VPN)電路,包括保存多個用于安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫裝置,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù);多個安全引擎,每個安全引擎用于執(zhí)行安全處理;當(dāng)收到未在所述安全性關(guān)聯(lián)數(shù)據(jù)庫裝置中找到的套接字時,打開新的安全性關(guān)聯(lián)的裝置;根據(jù)輸入分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的裝置;從所述安全性關(guān)聯(lián)數(shù)據(jù)庫裝置檢索多個安全參數(shù)的裝置;將所述多個安全參數(shù)轉(zhuǎn)發(fā)給至少一個所述安全引擎,以便以此執(zhí)行安全處理的裝置;和利用所述輸入分組和所述安全處理的結(jié)果,根據(jù)特定的安全模式構(gòu)建輸出分組的分組建立裝置。
25.按照權(quán)利要求24所述的電路,其中至少一個所述安全引擎用于實(shí)現(xiàn)IPSec隧道模式服務(wù)。
26.按照權(quán)利要求24所述的電路,其中至少一個所述安全引擎用于實(shí)現(xiàn)IPSec傳送模式服務(wù)。
27.按照權(quán)利要求24所述的電路,其中至少一個所述安全引擎用于進(jìn)行加密。
28.按照權(quán)利要求24所述的電路,其中至少一個所述安全引擎用于進(jìn)行鑒權(quán)。
29.按照權(quán)利要求24所述的電路,其中至少一個所述安全引擎用于進(jìn)行一種或多種IPSec服務(wù)。
30.按照權(quán)利要求24所述的電路,其中利用專用集成電路(ASIC)實(shí)現(xiàn)所述電路。
31.按照權(quán)利要求24所述的電路,其中利用現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)所述電路。
32.按照權(quán)利要求24所述的電路,其中利用數(shù)字信號處理器(DSP)實(shí)現(xiàn)所述電路。
33.一種便攜式計算設(shè)備,包括用于連接所述設(shè)備和通信網(wǎng)絡(luò)的通信裝置;包括易失性和非易失性存儲器的存儲器裝置,所述非易失性存儲器用于保存程序代碼;與所述存儲器裝置和所述通信裝置耦接、執(zhí)行所述程序代碼的處理器;和虛擬專用網(wǎng)絡(luò)(VPN)電路,所述虛擬專用網(wǎng)絡(luò)(VPN)電路包括保存多個用于安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫裝置,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù);多個安全引擎,每個安全引擎用于執(zhí)行安全處理;當(dāng)收到未在所述安全性關(guān)聯(lián)數(shù)據(jù)庫裝置中找到的套接字時,打開新的安全性關(guān)聯(lián)的裝置;根據(jù)輸入分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的裝置;從所述安全性關(guān)聯(lián)數(shù)據(jù)庫裝置檢索多個安全參數(shù)的裝置;將所述多個安全參數(shù)轉(zhuǎn)發(fā)給至少一個所述安全引擎,以便以此執(zhí)行安全處理的裝置;和用于利用所述輸入分組和所述安全處理的結(jié)果,根據(jù)特定的安全模式構(gòu)建輸出分組的分組建立裝置。
34.按照權(quán)利要求33所述的設(shè)備,其中所述通信網(wǎng)絡(luò)包括廣域網(wǎng)(WAN)。
35.按照權(quán)利要求33所述的設(shè)備,其中所述通信網(wǎng)絡(luò)包括局域網(wǎng)(LNA)。
36.按照權(quán)利要求33所述的設(shè)備,其中所述通信網(wǎng)絡(luò)包括因特網(wǎng)。
37.按照權(quán)利要求33所述的設(shè)備,其中所述通信網(wǎng)絡(luò)包括公共交換電話網(wǎng)(PSTN)。
38.按照權(quán)利要求33所述的設(shè)備,其中至少一個所述安全引擎用于進(jìn)行加密。
39.按照權(quán)利要求33所述的設(shè)備,其中至少一個所述安全引擎用于進(jìn)行解密。
40.按照權(quán)利要求33所述的設(shè)備,其中至少一個所述安全引擎用于進(jìn)行鑒權(quán)。
41.按照權(quán)利要求33所述的設(shè)備,其中至少一個所述安全引擎用于執(zhí)行IPSec服務(wù)。
42.按照權(quán)利要求33所述的設(shè)備,其中利用專用集成電路(ASIC)實(shí)現(xiàn)所述VPN電路。
43.按照權(quán)利要求33所述的設(shè)備,其中利用現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)所述VPN電路。
44.按照權(quán)利要求33所述的設(shè)備,其中利用數(shù)字信號處理器(DSP)實(shí)現(xiàn)所述VPN電路。
45.一種安全性關(guān)聯(lián)處理器電路,包括保存多個用于安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫,每個入口包括和唯一套接字對應(yīng)的安全性關(guān)聯(lián)數(shù)據(jù);當(dāng)收到未在所述安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,用于打開新的安全性關(guān)聯(lián)的管理單元;用于根據(jù)輸入分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的識別單元;用于從所述安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù),并將它們轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理的主處理器單元;和包含散列函數(shù)和相關(guān)散列表、用于搜索所保存的安全性關(guān)聯(lián)的散列單元。
46.按照權(quán)利要求45所述的電路,還包括最近最少使用(LRU)鏈接列表,用于提供保存在所述安全性關(guān)聯(lián)數(shù)據(jù)庫中的所述安全性關(guān)聯(lián)的使用頻率的列表。
47.按照權(quán)利要求45所述的電路,還包括用于利用所述輸入分組和所述一個或多個安全處理的結(jié)果,根據(jù)特定的安全模式來構(gòu)建輸出分組的分組建立器。
48.按照權(quán)利要求45所述的電路,其中所述VPN安全處理器包括進(jìn)行加密的裝置。
49.按照權(quán)利要求45所述的電路,其中所述VPN安全處理器包括進(jìn)行解密的裝置。
50.按照權(quán)利要求45所述的電路,其中所述VPN安全處理器包括進(jìn)行鑒權(quán)的裝置。
51.按照權(quán)利要求45所述的電路,其中所述VPN安全處理器包括實(shí)現(xiàn)IPSec服務(wù)的裝置。
52.按照權(quán)利要求45所述的電路,其中利用專用集成電路(ASIC)實(shí)現(xiàn)所述電路。
53.按照權(quán)利要求45所述的電路,其中利用現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)所述電路。
54.按照權(quán)利要求45所述的電路,其中利用數(shù)字信號處理器(DSP)實(shí)現(xiàn)所述電路。
55.一種安全性關(guān)聯(lián)的方法,所述方法包括下述步驟建立用于保存多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫,所述安全性關(guān)聯(lián)數(shù)據(jù)庫內(nèi)的每個入口對應(yīng)于一個套接字;當(dāng)收到未在所述安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,打開新的安全性關(guān)聯(lián);根據(jù)分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián);從所述安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù);和將所述多個安全參數(shù)轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理。
56.按照權(quán)利要求55所述的方法,還包括根據(jù)所述安全處理的結(jié)果,更新所述安全性關(guān)聯(lián)數(shù)據(jù)庫的內(nèi)容的步驟。
57.按照權(quán)利要求55所述的方法,其中打開新的安全性關(guān)聯(lián)的所述步驟包括將對應(yīng)于所述新安全性關(guān)聯(lián)的安全數(shù)據(jù)保存在所述安全性關(guān)聯(lián)數(shù)據(jù)庫中;根據(jù)與所述新的安全性關(guān)聯(lián)相關(guān)的套接字來計算散列值;和將所述散列值保存在散列表中。
58.按照權(quán)利要求55所述的方法,其中所述打開新的安全性關(guān)聯(lián)的步驟包括將所述新安全性關(guān)聯(lián)的指針插入最近最少使用(LRU)鏈接列表中。
59.按照權(quán)利要求55所述的方法,還包括從所述安全性關(guān)聯(lián)數(shù)據(jù)庫去除未使用的安全性關(guān)聯(lián)的步驟。
60.按照權(quán)利要求55所述的方法,還包括當(dāng)超過最大超時時,從所述安全性關(guān)聯(lián)數(shù)據(jù)庫去除未使用的安全性關(guān)聯(lián)的步驟。
61.按照權(quán)利要求55所述的方法,還包括當(dāng)超過最大字節(jié)計數(shù)時,從所述安全性關(guān)聯(lián)數(shù)據(jù)庫去除未使用的安全性關(guān)聯(lián)的步驟。
62.按照權(quán)利要求55所述的方法,其中所述搜索并識別安全性關(guān)聯(lián)的步驟包括下述步驟根據(jù)與將被識別的安全性關(guān)聯(lián)相關(guān)的套接字來計算散列值;利用散列結(jié)果作為索引,在散列表中查尋散列指針;根據(jù)所述散列指針,從所述安全性關(guān)聯(lián)數(shù)據(jù)庫中檢索數(shù)據(jù);如果所檢索的數(shù)據(jù)和與分組相關(guān)的套接字相符,則識別所述安全性關(guān)聯(lián)。
63.按照權(quán)利要求55所述的方法,其中所述VPN安全處理器用于進(jìn)行加密。
64.按照權(quán)利要求55所述的方法,其中所述VPN安全處理器用于進(jìn)行解密。
65.按照權(quán)利要求55所述的方法,其中所述VPN安全處理器用于進(jìn)行鑒權(quán)。
66.按照權(quán)利要求55所述的方法,其中所述VPN安全處理器用于執(zhí)行IPSec規(guī)定服務(wù)。
67.按照權(quán)利要求55所述的方法,還包括對從遠(yuǎn)程網(wǎng)絡(luò)接收的分組應(yīng)用防重放機(jī)制的步驟。
68.按照權(quán)利要求55所述的方法,還包括跟蹤從遠(yuǎn)程網(wǎng)絡(luò)接收的分組的序列號的步驟。
69.按照權(quán)利要求55所述的方法,還包括建立并保持具有頭部和尾部的最近最少使用(LRU)雙重鏈接列表的步驟,其中最近最多使用的安全性關(guān)聯(lián)保存在尾部,最近最少使用的安全性關(guān)聯(lián)保存在頭部。
70.按照權(quán)利要求69所述的方法,其中在所述LRU列表充滿的情況下,刪除位于頭部的安全性關(guān)聯(lián),將新的安全性關(guān)聯(lián)加在尾部。
71.按照權(quán)利要求55所述的方法,其中所述套接字包括安全參數(shù)索引(SPI)、遠(yuǎn)程IP和協(xié)議組件。
72.按照權(quán)利要求55所述的方法,其中所述安全性關(guān)聯(lián)數(shù)據(jù)包括下述值任意之一或者它們的組合IPSec模式、加密算法、加密密鑰。
73.按照權(quán)利要求55所述的方法,其中所述安全性關(guān)聯(lián)數(shù)據(jù)包括下述值任意之一或者它們的組合IPSec模式、鑒權(quán)算法、鑒權(quán)密鑰。
74.按照權(quán)利要求55所述的方法,還包括如果從所述VPN安全處理器收到誤碼,則拒絕所述分組的步驟。
75.按照權(quán)利要求55所述的方法,其中利用專用集成電路(ASIC)實(shí)現(xiàn)所述方法。
76.按照權(quán)利要求55所述的方法,其中利用現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)所述方法。
77.按照權(quán)利要求55所述的方法,其中利用數(shù)字信號處理器(DSP)實(shí)現(xiàn)所述方法。
78.一種計算機(jī)可讀存儲介質(zhì),具有包含于其中的計算機(jī)可讀程序代碼單元,當(dāng)在所述計算機(jī)上執(zhí)行這種程序時,使適當(dāng)編程的計算機(jī)實(shí)現(xiàn)安全關(guān)聯(lián)性機(jī)制,所述計算機(jī)可讀存儲介質(zhì)包括使所述計算機(jī)建立用于保存多個安全性關(guān)聯(lián)的安全數(shù)據(jù)的安全性關(guān)聯(lián)數(shù)據(jù)庫的計算機(jī)可讀程序代碼單元,所述安全性關(guān)聯(lián)數(shù)據(jù)庫內(nèi)的每個入口包括對應(yīng)于唯一套接字的安全性關(guān)聯(lián)數(shù)據(jù);當(dāng)收到未在所述安全性關(guān)聯(lián)數(shù)據(jù)庫中找到的套接字時,使計算機(jī)打開新的安全性關(guān)聯(lián)的計算機(jī)可讀程序代碼單元;使所述計算機(jī)根據(jù)分組的套接字,搜索和識別與之相關(guān)的安全性關(guān)聯(lián)的計算機(jī)可讀程序代碼單元;使所述計算機(jī)從所述安全性關(guān)聯(lián)數(shù)據(jù)庫檢索多個安全參數(shù)的計算機(jī)可讀程序代碼單元;和使所述計算機(jī)將所述多個安全參數(shù)轉(zhuǎn)發(fā)給虛擬專用網(wǎng)絡(luò)(VPN)安全處理器,以便以此執(zhí)行一個或多個安全處理的計算機(jī)可讀程序代碼單元。
全文摘要
一種新穎的有用虛擬專用網(wǎng)絡(luò)(VPN)機(jī)制和相關(guān)的安全性關(guān)聯(lián)處理器,用于保持實(shí)現(xiàn)諸如加密、解密和鑒權(quán)之類安全功能所需的安全參數(shù)。安全性關(guān)聯(lián)數(shù)據(jù)庫(SAD)和相關(guān)電路適合于提供實(shí)現(xiàn)關(guān)于加密/解密和鑒權(quán)的IPSec組安全規(guī)范必需的參數(shù)。數(shù)據(jù)庫中的每個安全性關(guān)聯(lián)(SA)包括根據(jù)IPSec規(guī)范接收和傳送VPN規(guī)范所需的全部參數(shù)。
文檔編號H04L12/66GK1600011SQ02815510
公開日2005年3月23日 申請日期2002年7月10日 優(yōu)先權(quán)日2001年7月10日
發(fā)明者亞尼夫·沙菲拉, 卓瑞·肖哈特, 摩施·澤扎克, 尼夫·格爾博 申請人:意大利電信股份公司