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