專利名稱:通信保護(hù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在傳輸介質(zhì)如網(wǎng)絡(luò)上通信的信息保護(hù)。
技術(shù)背景隨著越來越多地使用網(wǎng)絡(luò)或其他傳輸介質(zhì)進(jìn)行通信,安全成為人 們?nèi)找骊P(guān)心的問題。各種安全協(xié)議被用于保護(hù)進(jìn)入或離開耦合到傳輸 介質(zhì)如網(wǎng)絡(luò)(如局域網(wǎng)、廣域網(wǎng)、互聯(lián)網(wǎng))上的設(shè)備的數(shù)據(jù).安全協(xié) 議包括密碼算法(包括加密、解密和驗(yàn)證)以維護(hù)傳輸信息的機(jī)密性 以及信息源的驗(yàn)證。密碼操作典型地涉及占有系統(tǒng)相當(dāng)大的處理量的數(shù)據(jù)密集算法操 作。為減少在執(zhí)行密碼操作時(shí)系統(tǒng)主處理器的負(fù)載, 一些系統(tǒng)包括一 個(gè)協(xié)處理器用于執(zhí)行一些數(shù)據(jù)密集處理。在傳統(tǒng)的協(xié)處理器結(jié)構(gòu)中, 主處理器(在應(yīng)用程序控制下)將要處理(加密、混列等等)的數(shù)據(jù) 加載到系統(tǒng)存儲(chǔ)器中,由協(xié)處理器通過系統(tǒng)總線訪問這些數(shù)據(jù)。處理 后,協(xié)處理器則將處理過的數(shù)據(jù)拷貝回存儲(chǔ)器供主處理器訪問,然后 主處理器將數(shù)據(jù)發(fā)送到傳輸介質(zhì)上(如網(wǎng)絡(luò)、電話線等)。因?yàn)閿?shù)據(jù)在 傳輸介質(zhì)上傳輸之前兩次通過總線拷貝到系統(tǒng)存儲(chǔ)器中,所以這個(gè)過 程效率很低。類似地,在接收端,數(shù)據(jù)在解密和驗(yàn)證之前也要拷貝進(jìn) 出協(xié)處理器兩次。在傳統(tǒng)的協(xié)處理器結(jié)構(gòu)中運(yùn)行加密操作會(huì)用盡寶貴的共享系統(tǒng)資 源,包括主處理器、總線和系統(tǒng)存儲(chǔ)器,使其不能被系統(tǒng)中其他設(shè)備 使用。這會(huì)降低整個(gè)系統(tǒng)的性能。因此,當(dāng)在傳輸介質(zhì)上通信信息時(shí) 需要一種技術(shù)和設(shè)備來減少執(zhí)行安全協(xié)議相關(guān)操作時(shí)對(duì)系統(tǒng)資源的使 用。發(fā)明內(nèi)容通常,根據(jù)一種實(shí)施方案,在耦合到通信信道上的設(shè)備中使用的 方法包括確定與數(shù)據(jù)塊一起執(zhí)行的安全業(yè)務(wù)并且按照安全業(yè)務(wù),在適3合控制與通信信道的通信的控制器寧處理數(shù)據(jù)塊。根據(jù)本發(fā)明的在耦合到通信信道的設(shè)備中使用的方法,包括確 定對(duì)數(shù)據(jù)塊執(zhí)行的安全業(yè)務(wù);生成與數(shù)據(jù)塊一起傳遞的安全信息,所 述安全信息標(biāo)識(shí)安全業(yè)務(wù);使用一個(gè)適合于控制與通信信道的通信的 網(wǎng)絡(luò)控制器來基于安全信息而從其它安全業(yè)務(wù)中選擇安全業(yè)務(wù);以及 在所述網(wǎng)絡(luò)控制器中,根據(jù)安全信息處理數(shù)據(jù)塊。根據(jù)本發(fā)明的用于控制與傳輸介質(zhì)通信的控制器,所述控制器包 括接收數(shù)據(jù)和相關(guān)安全控制信息的接收電路,所述安全控制信息識(shí) 別要在所述數(shù)據(jù)上執(zhí)行的安全業(yè)務(wù);以及基于安全控制信息而從其它 安全業(yè)務(wù)中選擇安全業(yè)務(wù)并且基于該選擇而密碼地處理數(shù)據(jù)的密碼引 擎,該密碼引擎是網(wǎng)絡(luò)控制器。
圖1A是包括網(wǎng)絡(luò)和耦合到網(wǎng)絡(luò)上的設(shè)備的系統(tǒng)的實(shí)施方案的框圖IB是根據(jù)一種實(shí)施方案在圖1A的系統(tǒng)的設(shè)備中的網(wǎng)絡(luò)控制器 的框圖。圖2是根據(jù)本發(fā)明的實(shí)施方案在圖1A的系統(tǒng)中的設(shè)備的框圖。圖3是圖1B的網(wǎng)絡(luò)控制器的更詳細(xì)的框圖。圖4A-4C是根據(jù)圖2中設(shè)備使用的一種安全協(xié)議的分組的圖。圖5是根據(jù)圖3的網(wǎng)絡(luò)控制器執(zhí)行的實(shí)施方案的安全過程的流程圖。圖6說明了存儲(chǔ)在圖3的網(wǎng)絡(luò)控制器的存儲(chǔ)設(shè)備中的流字節(jié)組 (flow tuple )。圖7是說明圖5的網(wǎng)絡(luò)控制器的接收解析器對(duì)分組數(shù)據(jù)解析的流 程圖。圖8和9A-9B是在圖2的設(shè)備中不同層的安全例程的流程圖。 圖IO是確定與圖8的安全例程執(zhí)行的數(shù)據(jù)塊有關(guān)的安全業(yè)務(wù)的過 程的流程圖。
具體實(shí)施方式
在下面的描述中,提出大量的細(xì)節(jié)以提供對(duì)本發(fā)明的理解。但是, 本領(lǐng)域的技術(shù)人員應(yīng)該理解,本發(fā)明可以在沒有這些細(xì)節(jié)的情況下實(shí) 施并且可能從所述實(shí)施方案有大量的變化和修改。參見圖1,系統(tǒng)的實(shí)施方案包括耦合到傳輸介質(zhì)上的第一個(gè)設(shè)備50和第二個(gè)設(shè)備51,傳輸介質(zhì)可以是有線或無線傳輸介質(zhì)(或兩者 的組合)。在隨后的描述中,傳輸介質(zhì)稱為網(wǎng)絡(luò)47,其包括無論有線 或無線的一種或多種類型的傳輸介質(zhì),如電話線、電纜線、局域網(wǎng) (LAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)、射頻鏈路、蜂窩鏈路或其他傳輸介 質(zhì)。設(shè)備50和51的每一個(gè)都包括計(jì)算機(jī)、手持計(jì)算設(shè)備、機(jī)頂盒、 應(yīng)用、游戲系統(tǒng)或其他基于控制器的系統(tǒng),其中控制器可以是微處理 器、微控制器、如特定用途集成電路(ASIC)、可編程門陣列(PGA) 等的可編程設(shè)備.在設(shè)備50和51之間的網(wǎng)絡(luò)47以及其他設(shè)備上可能有不同類型的 通信。通信包括例如電子郵件的發(fā)送;互聯(lián)網(wǎng)瀏覽;文件訪問和拷 貝;數(shù)據(jù)庫搜索;在線銷售和財(cái)務(wù)交易等。為了在網(wǎng)絡(luò)47上的設(shè)備或系統(tǒng)之間提供安全通信,在耦合在網(wǎng)絡(luò) 47的設(shè)備中可以實(shí)現(xiàn)根據(jù)某些實(shí)施方案的安全協(xié)議。在某些實(shí)施方案 中,通過在耦合到網(wǎng)絡(luò)47的設(shè)備中實(shí)施互聯(lián)網(wǎng)協(xié)議安全(IPSEC),在 1998年11月的名為"Security Architecture for the Internet Protocol (互聯(lián)網(wǎng)協(xié)議的安全結(jié)構(gòu))"的草案(RFC) 2401中對(duì)此有討 論,可提供安全業(yè)務(wù)以保證授權(quán)方之間的保密通信,下面會(huì)進(jìn)一步描 述。在本描述中,參考了在一些互聯(lián)網(wǎng)網(wǎng)站上可得到的各種草案 (RFC )。 一個(gè)這樣的站點(diǎn)是{http: 〃兩.ietf. org/rf c. html}。如圖1A所示,設(shè)備50和51的每個(gè)(以及耦合到網(wǎng)絡(luò)47上的其 他設(shè)備)可包括能夠在網(wǎng)絡(luò)47上通信的許多層和組件。例如,在設(shè)備 50中,網(wǎng)絡(luò)控制器52 (可以是集成網(wǎng)絡(luò)控制器芯片或包含幾個(gè)芯片或 一些其他硬件組件的板或卡)耦合在網(wǎng)絡(luò)47和系統(tǒng)總線72之間。在 一個(gè)示例實(shí)施方案中,系統(tǒng)總線72可能是如1995年6月出版的PCI 本地總線規(guī)范,生產(chǎn)版,修訂本2. 1中描述的外部設(shè)備互連(PCI)總 線。與下面分別的圖2和3相聯(lián)系提供了設(shè)備50和網(wǎng)絡(luò)控制器52的 更完整的圖表和描述。按照某些實(shí)施方案,為了改善系統(tǒng)性能,作為網(wǎng)絡(luò)安全協(xié)議組成 部分的密碼處理(包括加密、解密和/或加密簽名)由網(wǎng)絡(luò)控制器52 執(zhí)行,控制器可能與相關(guān)固件或"在空中(on-the-fly)"或"運(yùn)送中"的微碼一起作為硬件組件實(shí)現(xiàn).用于控制與通信信道或傳輸介質(zhì)的通 信的其他類型的控制器也可以用在更多的實(shí)施方案中。這樣的控制器可包括純硬件實(shí)現(xiàn)或硬件和固件或軟件的組合。進(jìn)一步參見圖1B,網(wǎng)絡(luò)控制器52包括密碼引擎(發(fā)送端的126以 及接收端的102),用于在將發(fā)送或已經(jīng)接收的數(shù)據(jù)塊上執(zhí)行加密、解 密和驗(yàn)證操作。在接收和發(fā)送通道上將密碼引擎102和126分離的優(yōu) 點(diǎn)是發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的密碼處理可以同時(shí)進(jìn)行。在替代實(shí)施方案 中,發(fā)送和接收數(shù)據(jù)可以使用單一引擎。如用于這個(gè)描述中的, 一個(gè)或多個(gè)數(shù)據(jù)塊指設(shè)備中不同格式的數(shù) 據(jù)。例如,來自傳輸和網(wǎng)絡(luò)層406的數(shù)據(jù)塊可包括IP數(shù)據(jù)報(bào)或分組(如 果網(wǎng)絡(luò)層是IP層)。如果使用IPSEC協(xié)議(如AH或ESP),則在IPSEC 處理之后數(shù)據(jù)塊轉(zhuǎn)換為IPSEC分組。IP數(shù)據(jù)報(bào)或分組以及IPSEC分組 在流過設(shè)備50的每個(gè)不同層后被重新格式化。安全協(xié)議可應(yīng)用于一個(gè) 或多個(gè)IP數(shù)據(jù)報(bào)或分組和IPSEC分組。如果實(shí)施其他安全協(xié)議,則可 定義其他類型的數(shù)據(jù)塊。IPSEC可使用兩個(gè)協(xié)議中的一個(gè)來提供流量安 全一驗(yàn)證頭(AH)和封裝安全有效負(fù)栽(ESP)。這些協(xié)議可以單獨(dú)或 彼此組合應(yīng)用以提供一組想要的安全業(yè)務(wù)。在1998年11月的名為"IP Authentication Header ( IP驗(yàn)證頭),,的RFC2402中描述了 AH協(xié)議, 并且在1998年11月的名為"IP Encapsulating Security Payload( ESP) (IP封裝安全有效負(fù)載(ESP))"的RFC "06中描述了 ESP協(xié)議。為降低網(wǎng)絡(luò)控制器52的復(fù)雜性,由設(shè)備50中的一個(gè)或多個(gè)軟件 例程(如410和411)執(zhí)行與安全協(xié)議相關(guān)的安全控制信息的生成。在 一個(gè)實(shí)施方案中,安全控制信息包括標(biāo)識(shí)加密和驗(yàn)證算法的信息、密 鑰位置、要加密或簽名的數(shù)據(jù)位置和長度、簽名位置以及網(wǎng)絡(luò)控制器 52用于密碼處理(包括加密、解密和/或驗(yàn)證)的其他信息。有一些實(shí)例(下面描述),其中由網(wǎng)絡(luò)控制器52在數(shù)據(jù)塊上執(zhí)行 多個(gè)密碼操作。為處理這種情況,網(wǎng)絡(luò)控制器52中的回送特性將由密 碼引擎126處理過的數(shù)據(jù)塊發(fā)送回設(shè)備50,供一個(gè)或多個(gè)軟件例程410 和411進(jìn)一步處理。在軟件例程410和411進(jìn)一步處理之后,數(shù)據(jù)塊 被送回網(wǎng)絡(luò)控制器52供進(jìn)一步密碼處理。有些實(shí)施方案的另一個(gè)特性是網(wǎng)絡(luò)控制器52中的密碼引擎126 或102 (或兩者)可由除需要在網(wǎng)絡(luò)47上執(zhí)行安全通信的過程之外的應(yīng)用過程使用.這些應(yīng)用過程稱為次使用過程。例如,次^f吏用過程通過設(shè)備50的另一個(gè)接口 (區(qū)別于網(wǎng)絡(luò)控制器52)執(zhí)行對(duì)外部設(shè)備的 通信。次使用過程包括在傳送中不執(zhí)行或不能夠執(zhí)行密碼處理的任何 過程。次使用過程的例子包括已加密文件系統(tǒng)、安全電子郵件、安全 遠(yuǎn)程過程調(diào)用(RPC)等等,使用網(wǎng)絡(luò)控制器52的密碼引擎,而不是 使用單獨(dú)的協(xié)處理器或主處理器54來執(zhí)行這樣的次使用過程的密碼 操作。設(shè)備50包括跟蹤設(shè)備50中可用的安全業(yè)務(wù)的策略管理例程413。 策略管理例程413維護(hù)數(shù)據(jù)庫(例如下面描述的520A),其識(shí)別與網(wǎng)絡(luò) 47上不同設(shè)備之間不同數(shù)據(jù)流一起執(zhí)行的安全業(yè)務(wù)。例如,用于由局 域網(wǎng)耦合的設(shè)備的安全業(yè)務(wù)與用于通過不安全的信道如互聯(lián)網(wǎng)耦合的 設(shè)備的安全業(yè)務(wù)不同。設(shè)備50還包括密鑰交換組件415用于管理加密 和驗(yàn)證使用的密鑰的生成和傳輸??梢愿鶕?jù)在1998年11月的草案 (RFC) 2408中描述的互聯(lián)網(wǎng)安全聯(lián)合和密鑰管理協(xié)議(ISAKMP)來定 義組件413和415。仍參見圖1A,在設(shè)備50中,系統(tǒng)總線72耦合到系統(tǒng)中的其他設(shè) 備,包括可能通過一個(gè)或多個(gè)橋接層59耦合到系統(tǒng)總線72上的主處 理器54。作為例子,處理器54包括微處理器、微控制器、ASIC、 PGA 等等。在網(wǎng)絡(luò)47和各種應(yīng)用過程(如402和404)之間發(fā)送的數(shù)據(jù)分 組、幀或塊傳送通過設(shè)備50的幾層。作為例子,應(yīng)用過程402和404 包括電子郵件應(yīng)用、網(wǎng)絡(luò)瀏覽器、文件管理器或能夠訪問網(wǎng)絡(luò)47上存 儲(chǔ)單元的其他應(yīng)用程序。在發(fā)送和接收通道中,數(shù)據(jù)通過網(wǎng)絡(luò)控制器52、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器 408、傳輸和網(wǎng)絡(luò)層406以及操作系統(tǒng)(OS) 400在應(yīng)用過程402、 4(M 和網(wǎng)絡(luò)47之間路由。網(wǎng)絡(luò)和傳輸層406可能是傳輸控制協(xié)議/互聯(lián)網(wǎng) 協(xié)議(TCP/IP)棧,以執(zhí)行數(shù)據(jù)路由和流控制以及設(shè)備50中數(shù)據(jù)的 驗(yàn)證和排序。因此,在一個(gè)實(shí)施方案中,網(wǎng)絡(luò)層可能是如1981年9 月名為"Internet Protocol (互聯(lián)網(wǎng)協(xié)i義)"的草案(RFC) 791中描 述的互聯(lián)網(wǎng)(IP)協(xié)議層,其定義了用于從由源和目的IP地址識(shí)別 的源到目的的稱為數(shù)據(jù)報(bào)的數(shù)據(jù)塊的發(fā)送的協(xié)議。在網(wǎng)絡(luò)層上是傳輸 層,其可以是如傳輸控制協(xié)議(TCP)或用戶數(shù)據(jù)報(bào)協(xié)議(UDP)層。 TCP在1981年9月的名為"Transmission Control Protocol (傳輸控制協(xié)議)"的草案(RFC) 793中有描述。UDP在1980年8月的名為 "User Datagram Protocol (用戶數(shù)據(jù)報(bào)協(xié)議)"的RFC 768中有描 述.根據(jù)一些實(shí)施方案,為在網(wǎng)絡(luò)控制器52中實(shí)現(xiàn)網(wǎng)絡(luò)47的安全協(xié) 議,網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器408中的安全例程410以及傳輸和網(wǎng)絡(luò)層406中 的安全例程411根據(jù)安全協(xié)議對(duì)數(shù)據(jù)塊格式化,并且增加安全信息以 便與相關(guān)數(shù)據(jù)塊一起發(fā)送到網(wǎng)絡(luò)控制器52。在這個(gè)描述中,例程410 稱為驅(qū)動(dòng)器安全例程410,并且例程411稱為IP安全例程411。在另 外的實(shí)施方案中,由安全例程410和411執(zhí)行的任務(wù)可由一個(gè)例程或 兩個(gè)以上的例程來執(zhí)行。依賴于使用的OS 400的類型,IP安全例程411可以是網(wǎng)絡(luò)和傳輸 層406的組成部分(如圖1所示)或是一個(gè)單獨(dú)的例程。例如,對(duì)于 Windows NT版本5的操作系統(tǒng),IP安全例程411可以是層406的一 部分。但是,對(duì)于Windows NT版本4或Windows 98操作系統(tǒng),IP 安全例程411可以是一個(gè)單獨(dú)的例程。如果有的話,則基于安全例程410和411生成的安全控制信息, 網(wǎng)絡(luò)控制器52在數(shù)據(jù)塊發(fā)送到網(wǎng)絡(luò)47之前執(zhí)行數(shù)據(jù)塊的密碼處理(包 括加密和/或驗(yàn)證)。如果安全控制信息指示密碼處理是不必要的,則 網(wǎng)絡(luò)控制器52將數(shù)據(jù)塊發(fā)送到網(wǎng)絡(luò)47,不再將數(shù)據(jù)塊發(fā)送通過網(wǎng)絡(luò)控 制器52中的密碼引擎126。在接收端,當(dāng)網(wǎng)絡(luò)控制器52接收到數(shù)據(jù)塊時(shí),網(wǎng)絡(luò)控制器52從 接收到數(shù)據(jù)塊的安全控制部分確定是否需要密碼過程,并且如果需要, 則確定使用哪個(gè)或哪些密鑰執(zhí)行解密和驗(yàn)證。根據(jù)一些實(shí)施方案,在設(shè)備50以及耦合在網(wǎng)絡(luò)47上的一些其他 設(shè)備中實(shí)施的安全協(xié)議包括IPSEC協(xié)議。IPSEC通過使設(shè)備50能夠選 擇需要的安全協(xié)議、確定用于業(yè)務(wù)的算法以及將提供想要業(yè)務(wù)使用的 任何密碼密鑰放在適當(dāng)?shù)奈恢脕硖峁┌踩珮I(yè)務(wù)。雖然這里的描述指 IPSEC安全協(xié)i義如AH和ESP協(xié)i義,但是本發(fā)明并不限于這一方面。在 另外的實(shí)施方案中,可以實(shí)現(xiàn)其他類型的安全協(xié)議。而且,在其他實(shí) 施方案中,可以使用除TCP和IP層之外的其他類型的傳輸和網(wǎng)絡(luò)層。在一個(gè)實(shí)施方案中,IP安全例程411對(duì)將要發(fā)送到網(wǎng)絡(luò)47或從網(wǎng) 絡(luò)47中接收到的IP分組執(zhí)行IPSEC處理.IPSEC處理包括將IP分組轉(zhuǎn)換為IPSEC分組或相反.根據(jù)某些實(shí)施方案,IPSEC分組可以是ESP 分組或AH分組。在IPSEC分組中包含安全控制信息。參見圖4A-4C, 在IPSEC處理之后,包括IP頭500和IP有效負(fù)載域502 (圖4A)的 IP數(shù)據(jù)報(bào)發(fā)送到如圖4B和4C所示的ESP分組。圖4B和4C所示的ESP 分組(分別表示傳輸模式和隧道模式的ESP分組)包括下列域ESP頭 504、 ESP尾506和ESP驗(yàn)證域508。在傳輸模式(圖4B )中,ESP安 全協(xié)議應(yīng)用于IP有效負(fù)載502。但是在隧道模式中,ESP安全協(xié)議還 應(yīng)用于IP頭500—所以,為隧道模式(圖4C)的ESP分組生成一個(gè)新 的IP頭510,其例如識(shí)別安全網(wǎng)關(guān)地址。隧道模式ESP典型地用于網(wǎng) 絡(luò)47上的通信發(fā)生在通過兩個(gè)安全網(wǎng)關(guān)時(shí)。在AH分組中(未示出), 可在IP有效負(fù)栽之前(傳輸模式)或IP頭和IP有效負(fù)載之前(隧道 模式)增加AH頭,但是不增加尾信息。ESP的頭部和尾部域504和506包括如下安全參數(shù)索引(SPI ),其與特定的其他信息相結(jié)合識(shí)別在數(shù)據(jù)報(bào)上執(zhí)行的安全業(yè)務(wù);單調(diào)地 加起來并且包括在數(shù)據(jù)報(bào)中作為對(duì)應(yīng)答攻擊的防御的序列號(hào);如密碼 同步信息的信息;如用做塊密碼的用于加密的填充符;以及其他信息, 驗(yàn)證域508用于驗(yàn)證業(yè)務(wù)。ESP頭504還包括由網(wǎng)絡(luò)控制器52應(yīng)用的識(shí)別密碼算法的IPSEC 控制信息、密鑰位置、要加密和/或簽名的數(shù)據(jù)位置和長度以及加密和 /或驗(yàn)證使用的其他信息。除此之外,ESP頭504還包括指示數(shù)據(jù)報(bào)在 密碼處理或在回送模式中路由回系統(tǒng)總線72之后是否將在網(wǎng)絡(luò)47上 發(fā)送的指示。ESP頭包括協(xié)議類型域,其指向TCP、 UDP等等,數(shù)據(jù)報(bào) 在哪種情況下在網(wǎng)絡(luò)47上發(fā)送。替代地,如果協(xié)議類型域指向ESP或 AH,則執(zhí)行回送,AH頭包括類似的信息用于提供驗(yàn)證業(yè)務(wù)。但是,AH不提供加密。 在某些實(shí)施方案中,AH和ESP協(xié)議可以組合實(shí)現(xiàn)以提供安全業(yè)務(wù)。加密、解密和驗(yàn)證算法基于IP數(shù)據(jù)報(bào)的安全聯(lián)合(SA)來確定. SA指示與IP數(shù)據(jù)報(bào)相關(guān)的安全業(yè)務(wù)的類型。在上述參考的RFC 2401 中提供有SA的詳細(xì)描述。不同IP數(shù)據(jù)報(bào)的安全聯(lián)合存儲(chǔ)在一個(gè)或多 個(gè)安全聯(lián)合數(shù)據(jù)塊(SAD) 520A和520B中,其可能存儲(chǔ)在如主存儲(chǔ)器 56或硬盤驅(qū)動(dòng)器的存儲(chǔ)介質(zhì)中。安全聯(lián)合可由策略管理例程413管理。在說明的實(shí)施方案中,SAD 520A可由IP安全例程411訪問,并且SAD 520B可由驅(qū)動(dòng)器安全例程410訪問。SAD 520B包括SAD 520A的 一個(gè)子集以便驅(qū)動(dòng)器安全例程410更快速地訪問,在替代實(shí)施方案中, 為處理網(wǎng)絡(luò)控制器52在網(wǎng)絡(luò)47上接收到的分組,網(wǎng)絡(luò)控制器52包括 SAD 520C,其是存儲(chǔ)在SAD 520A或520B中的信息的子集。對(duì)于接收的來自網(wǎng)絡(luò)47的分組(是IPSEC分組或未加密IP數(shù)據(jù) 報(bào))入站處理,由網(wǎng)絡(luò)控制器52從接收的分組中的下列信息確定分組 的SA:目的IP地址;IPSEC協(xié)議(AH或ESP );以及SPI值。從接收 的IPSEC數(shù)據(jù)報(bào)列出的信息與網(wǎng)絡(luò)控制器52的存儲(chǔ)設(shè)備或存儲(chǔ)器(如 可以是靜態(tài)隨機(jī)訪問存儲(chǔ)器或SRAM)中存儲(chǔ)在條目140 (稱為流字符 組)中的信息相比較,以確定是否出現(xiàn)匹配。這些信息的組合可用于 編入存儲(chǔ)在存儲(chǔ)設(shè)備100中的SAD 520C中。存儲(chǔ)在網(wǎng)絡(luò)控制器52中 的SAD 520C可基于最近最少使用(LRU)替換策略、先進(jìn)先出(FIFO) 策略或其他策略進(jìn)行更新。因此,基于接收到分組的SA(如果有),可以從存儲(chǔ)單元(如存儲(chǔ) 設(shè)備104中或其他位置)檢索合適的密鑰和其他密碼信息來執(zhí)行解密 和驗(yàn)證處理。雖然SAD 520C存儲(chǔ)在說明實(shí)施方案的網(wǎng)絡(luò)控制器中,但 是希望安全聯(lián)合信息和流字節(jié)組存儲(chǔ)在耦合到網(wǎng)絡(luò)控制器的外部存儲(chǔ) 設(shè)備上。對(duì)于將在網(wǎng)絡(luò)47上發(fā)送的IP數(shù)據(jù)報(bào)的出站處理,IP安全例程411 基于IP數(shù)據(jù)報(bào)的特定域確定與出站IP數(shù)據(jù)報(bào)相關(guān)的SA。這些域指示 源和目的設(shè)備及地址,從中可以確定用于在源和目的設(shè)備之間通信的 安全業(yè)務(wù)類型。例如,設(shè)備耦合到局域網(wǎng)上,在這種情況下可以執(zhí)行 第一組安全業(yè)務(wù)。如果設(shè)備耦合到安全網(wǎng)關(guān)(如將LAN與不安全的鏈 路如互聯(lián)網(wǎng)耦合的設(shè)備)上,則執(zhí)行第二組安全業(yè)務(wù)(提供增強(qiáng)的安 全),IP數(shù)據(jù)報(bào)轉(zhuǎn)換為包括基于相關(guān)SA的安全控制信息的IPSEC分組. IPSEC分組由IP安全例程411向下發(fā)送到網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器408的驅(qū)動(dòng) 器安全例程410,其對(duì)IPSEC重新打包以轉(zhuǎn)發(fā)到網(wǎng)絡(luò)控制器52。參見圖8,說明了 IP安全例程411執(zhí)行的安全操作。如果檢測到 將要發(fā)送的IP分組(在650 ),則IP安全例程411確定(在652 )該 IP分組是否受基于其SA的安全協(xié)議支配。可以基于SAD 520A中的信 息確定,并且如果其中沒有,則從存儲(chǔ)在如系統(tǒng)存儲(chǔ)器56的存儲(chǔ)設(shè)備 中的安全策略數(shù)據(jù)庫(SPD) 522中的信息來確定。SPD 522指示數(shù)據(jù)報(bào)是否提供有IPSEC保護(hù)或是否繞過了 IPSEC保 護(hù)。如果將為數(shù)據(jù)報(bào)實(shí)施IPSEC保護(hù),則SPD 522中一個(gè)選定的條目 與標(biāo)識(shí)在數(shù)據(jù)報(bào)上將執(zhí)行的安全業(yè)務(wù)的SA相映射,該SA包括是否使 用AH或ESP協(xié)議,用于加密/解密和驗(yàn)證的密碼算法,等等.識(shí)別的 安全業(yè)務(wù)由IP安全例程411編碼到安全控制信息(如位于ESP或AH 頭中)中,以發(fā)送到網(wǎng)絡(luò)控制器52執(zhí)行密碼處理。IP數(shù)據(jù)報(bào)中的信息(稱為選擇器)可用于編入SPD 522中的條目 中。這些選擇器包括下面的信息目標(biāo)IP地址;源IP地址;傳輸層 協(xié)議(如TCP或UDP );以及源和目的端口 (如TCP或UDP端口 );以及 其他信息.然后與數(shù)據(jù)報(bào)相關(guān)的選擇器用于執(zhí)行SPD 522的查詢以檢 索SPD 522的條目中的信息。依次,SPD條目信息用于確定IP數(shù)據(jù)報(bào) 的SA,然后其被加載到SAD 520A的對(duì)應(yīng)條目中。雖然有到SPD和SAD的參照來標(biāo)識(shí)在數(shù)據(jù)塊上執(zhí)行的安全業(yè)務(wù), 但是本發(fā)明并不限于這個(gè)方面.在另外的實(shí)施方案中可以使用其他用 于確定安全業(yè)務(wù)的技術(shù)。如果IP安全例程411確定(在652 )不使用IPSEC保護(hù),則IP數(shù) 據(jù)報(bào)轉(zhuǎn)發(fā)(在655 )到網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器408,由網(wǎng)絡(luò)控制器52作為常 規(guī)的IP數(shù)據(jù)報(bào)在網(wǎng)絡(luò)47上發(fā)送。但是,如果使用IPSEC保護(hù),則IP 數(shù)據(jù)報(bào)如作為一個(gè)例子的圖4A-4C所示,重新格式化為IPSEC分組。接著,IP安全例程411確定(在656 )密碼操作是否要從網(wǎng)絡(luò)設(shè) 備驅(qū)動(dòng)器408和網(wǎng)絡(luò)控制器52中卸載。根據(jù)某些實(shí)施方案,卸載指IP 安全例程411將密碼操作轉(zhuǎn)發(fā)到更低一層(如網(wǎng)絡(luò)控制器52)而不是 由IP安全例程411自己執(zhí)行密碼操作,自己執(zhí)行要占用主處理器54 的寶貴時(shí)間。如果,例如網(wǎng)絡(luò)控制器52不支持密碼操作,如果在處理 器54上執(zhí)行密碼操作的代價(jià)不大,或者如果卸載的代價(jià)比在CPU 54 上執(zhí)行密碼操作更高,則不執(zhí)行卸載安全業(yè)務(wù)。如果需要卸載,則由IP安全例程411在IPSEC分組的頭部準(zhǔn)^(在 658 )卸載命令(包括安全控制信息),以指示用于加密和/或驗(yàn)證的算 法類型、密鑰位置、將要加密和/或簽名的數(shù)據(jù)的位置和長度以及其他 相關(guān)信息。如果不需要卸栽,則IP安全例程411執(zhí)行想要的密碼操作 (在660 )并且在發(fā)送到網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器408的驅(qū)動(dòng)器安全例程410的 IPSEC分組中包括一個(gè)no-op命令(以指示密碼操作是必須的)。ii參見圖9A,說明了網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器安全例程410的發(fā)送部分.如 果接收到來自IP安全例程411的發(fā)送數(shù)據(jù)(在700 ),則驅(qū)動(dòng)器安全例 程410確定(在702 ) IPSEC分組是否是次使用分組(也就是,源自次 使用過程的分組,如405 )。如果是,則IPSEC分組標(biāo)記(在710)為 回送模式,以便該分組在由網(wǎng)絡(luò)控制器52密碼處理之后能返回次使用 過程(如圖1A中的過程405 )。該分組被處理(在706,如下所述)并 發(fā)送到網(wǎng)絡(luò)控制器52。如果IPSEC分組不是次使用分組,則驅(qū)動(dòng)器安全例程410確定(在 704 )該分組是否包括卸栽命令。如果包括,則驅(qū)動(dòng)器安全例程410確 定(在708 )該分組是否包括多個(gè)命令(如在分組上執(zhí)行多個(gè)安全協(xié)議)。 如果是,則該IPSEC分組標(biāo)記(在710)為回送模式。接著,IPSEC分組中的命令轉(zhuǎn)換(在706 )為可被網(wǎng)絡(luò)控制器理解 的格式(包括設(shè)備特定操作),用于由網(wǎng)絡(luò)控制器52處理。由驅(qū)動(dòng)器 安全例程410發(fā)送到網(wǎng)絡(luò)控制器52的IPSEC分組包括識(shí)別使用的加密 和/或驗(yàn)證算法、密鑰位置、要加密和/或簽名的數(shù)據(jù)的位置和長度、 以及其他相關(guān)信息的安全控制信息?;诎踩刂菩畔ⅲ诜纸M發(fā)送 到網(wǎng)絡(luò)47之前由網(wǎng)絡(luò)控制器52執(zhí)行密碼處理。進(jìn)一步參見圖9B,說明了驅(qū)動(dòng)器安全例程410的接收部分。驅(qū)動(dòng) 器安全例程410從網(wǎng)絡(luò)控制器52接收(在700 )網(wǎng)絡(luò)47上接收的分組 或?qū)⒎祷卮问褂脩?yīng)用過程的次使用分組。然后,驅(qū)動(dòng)器安全例程410 確定(在672 )分組是否是次使用分組。如果是,則分組通過其驅(qū)動(dòng)器 發(fā)送回(在674 )如次^f吏用過程(如405 )。如果接收的分組不是次使用分組,則驅(qū)動(dòng)器安全例程410確定(在 676 )接收的分組是否是IPSEC分組。如果不是,則該分組由網(wǎng)絡(luò)設(shè)備 驅(qū)動(dòng)器408 (在690 )向上發(fā)送到傳輸和網(wǎng)絡(luò)層406供處理。如果該分 組是IPSEC分組,則驅(qū)動(dòng)器安全例程410確定(在678 )該分組是否由 網(wǎng)絡(luò)控制器52"對(duì)準(zhǔn)(punt)"。網(wǎng)絡(luò)控制器52不能基于與有限SAD 520C 比較來將SA與接收的IPSEC分組相關(guān)聯(lián)。如果由于不能將SA與存儲(chǔ) 在網(wǎng)絡(luò)控制器52中的SAD 520C相關(guān)聯(lián)使得網(wǎng)絡(luò)控制器52將分組"對(duì) 準(zhǔn)",則驅(qū)動(dòng)器安全例程410試圖(在686 )將接收的IPSEC分組與SAD 520B中的一個(gè)條目相匹配。如果找不到匹配,則該分組向上送到(在 690 ) IP安全例程411供處理。但是,如果SAD 520B中的條目能夠與被對(duì)準(zhǔn)的IPSEC分組相匹配,則IPSEC分組修改為包括相關(guān)SA的安全 控制信息并且被送回(在684 )設(shè)置有回送模式的網(wǎng)絡(luò)控制器52???以由網(wǎng)絡(luò)控制器52做進(jìn)一步密碼處理。但是,如果因?yàn)榫W(wǎng)絡(luò)控制器52 不能執(zhí)行密碼處理而使得IPSEC分組被對(duì)準(zhǔn),則該分組向上轉(zhuǎn)發(fā)到傳 輸和網(wǎng)絡(luò)層406供處理。如果驅(qū)動(dòng)器安全例程410確定(在678 )分組沒有被網(wǎng)絡(luò)控制器 52對(duì)準(zhǔn),則驅(qū)動(dòng)器安全例程410確定是否需要額外的IPSEC迭代(在 680 ),如對(duì)于具有嵌套SA的IPSEC分組。如果不需要,則IPSEC分組 中的狀態(tài)信息(指示網(wǎng)絡(luò)控制器52執(zhí)行的如包括加密和/或驗(yàn)證的處 理)轉(zhuǎn)換為(在688 ) IP安全例程411能夠理解的語法。然后該分組 被發(fā)送(在684 )到IP安全例程411。如果在680,需要額外的IPSEC迭代,則驅(qū)動(dòng)器安全例程410試圖 將SAD 520B中的條目與分組相匹配(在682 )以識(shí)別其SA。如果找到 匹配,則該分組被送回(684 )帶有回送模式設(shè)置的網(wǎng)絡(luò)控制器52。如 果在SAD 520B中找不到分組的SA,則分組向上送回(在690 ) IP安全 例程411供處理。再參見圖8,當(dāng)IP安全例程411從驅(qū)動(dòng)器安全例程410中接收到 分組時(shí),IP安全例程411確定(在662 )該分組是否是IPSEC分組. 如果不是,則該分組被送到(在670 )IP層(406 )。如果該分組是IPSEC 分組,則IP安全例程411確定(在664 )該分組是否被網(wǎng)絡(luò)控制器52 和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器410對(duì)準(zhǔn)。如果是,則IP安全例程執(zhí)行(在666 ) 完整的IPSEC處理,包括分組的密碼處理。替代地,IP安全例程411 通過訪問SAD 520A或SPD 522可以確定分組的SA,并且與SA相關(guān)的 安全控制信息可以與分組一起向下發(fā)送到網(wǎng)絡(luò)控制器52供密碼處理。如果IPSEC分組沒有被對(duì)準(zhǔn),則IP安全例程411執(zhí)行(在668 ) 正常的IPSEC處理,以〗更將分組轉(zhuǎn)換為IP數(shù)據(jù)報(bào)發(fā)送(在670 )到IP 層。參見圖10, IP安全例程411執(zhí)行的確定IP分組是否能夠與SA相 關(guān)聯(lián)的行為(在圖8的652 )包括確定(在750 )在SAD 520A中是否 能夠找到與IP分組相關(guān)的條目。這可以基于,例如,上述特定的選擇 器。如果在SAD 520A中找到一個(gè)匹配項(xiàng),則標(biāo)識(shí)出SA并且返回成功 標(biāo)志。但是,如果在SAD 520A中沒有找到匹配項(xiàng),則基于選擇器訪問SPD 522 (在752 )。如果不能識(shí)別匹配項(xiàng),則返回失敗標(biāo)志以指示不存 在該IP數(shù)據(jù)報(bào)的SA,但是,如果在SPD 522中識(shí)別匹配(在752 ), 則SA被標(biāo)識(shí)(在754 )并且加載(在756 )到SAD 520A中。然后IP 安全例程411確定(在758 )與識(shí)別的SA相關(guān)的安全業(yè)務(wù)是否可以卸 栽到網(wǎng)絡(luò)驅(qū)動(dòng)器52。在準(zhǔn)備階段,IP安全例程411詢問驅(qū)動(dòng)器安全例 程410以確定從IP安全例程411卸栽到驅(qū)動(dòng)器安全例程410的安全業(yè) 務(wù).這個(gè)信息保持在存儲(chǔ)單元并且識(shí)別由驅(qū)動(dòng)器安全例程410執(zhí)行的 加密和驗(yàn)證業(yè)務(wù)的類型、支持的安全協(xié)議(如AH和ESP)的類型等等。 如果安全業(yè)務(wù)可以卸栽,則SA也拷貝(在760 )到SAD 520B中并且選 擇地拷貝到網(wǎng)絡(luò)控制器52中的SAD 520C。如果安全業(yè)務(wù)不能被卸載, 則識(shí)別的SA不拷貝到SAD 520B和520C中。當(dāng)更新網(wǎng)絡(luò)控制器52中的SAD 520C時(shí),IP安全例程411確定SAD 520C是否滿,如果滿,則采用一些替換策略,如最近最少使用、先進(jìn) 先出、隨機(jī)等等替換SA,也可以在SAD 520A和520B中執(zhí)行這些更新參見圖2,設(shè)備50的實(shí)施方案(例如可以是計(jì)算機(jī)系統(tǒng))包括在 網(wǎng)絡(luò)47上與其他網(wǎng)絡(luò)設(shè)備(如主機(jī)、網(wǎng)關(guān)、路由器等)進(jìn)行信息分組 通信的網(wǎng)絡(luò)控制器52 (如局域網(wǎng)(LAN)控制器)。網(wǎng)絡(luò)控制器52適合 于執(zhí)行典型地由主處理器54執(zhí)行的操作,主處理器54執(zhí)行網(wǎng)絡(luò)協(xié)議 棧(如TCP/IP )的一個(gè)或多個(gè)軟件層(如網(wǎng)絡(luò)層和傳輸層)。作為例子,的(分組的)特征。在某些實(shí)施方案中,這些特征依次識(shí)別接收分組數(shù)據(jù)的應(yīng)用過程。 因?yàn)榫W(wǎng)絡(luò)控制器52的這一識(shí)別,網(wǎng)絡(luò)控制器52 (不是堆棧的軟件層) 可直接控制分組數(shù)據(jù)到與應(yīng)用相關(guān)的緩存(在系統(tǒng)存儲(chǔ)器56中)的分 組數(shù)據(jù)發(fā)送。作為這種安排的結(jié)果,網(wǎng)絡(luò)控制器52和系統(tǒng)存儲(chǔ)器56 之間的數(shù)據(jù)發(fā)送將占用更少時(shí)間并且更有效地利用存儲(chǔ)器空間,如下 面的詳細(xì)描述。參見圖3,網(wǎng)絡(luò)控制器52包括電路,如處理從網(wǎng)絡(luò)47接收的或向 其中發(fā)送的分組的接收通道92和發(fā)送通道94.例如,接收通道92包 括用于解析每個(gè)分組頭以提取分組特征,如與特定分組流相關(guān)的特征 的接收解析器98。因?yàn)榻邮胀ǖ?2可能從許多不同的流(來自網(wǎng)絡(luò)47的不同設(shè)備的分組)接收進(jìn)入分組,所以接收通道92包括存儲(chǔ)流字 符組140的存儲(chǔ)器100.每個(gè)流字符組140唯一地識(shí)別一個(gè)將由網(wǎng)絡(luò)控 制器52解析的流.參見圖6,每個(gè)流字符組140包括識(shí)別特定流特征的域。作為例子, 在某些實(shí)施方案中,流字符組140中的至少一個(gè)與傳輸控制協(xié)議(TCP)、 用戶數(shù)據(jù)報(bào)協(xié)議(UDP )等相關(guān)。流字符組140包括指示互聯(lián)網(wǎng)協(xié)議(IP ) 目的地址(也就是接收分組的設(shè)備的地址)的域142;指示IP源地址 (也就是發(fā)送分組的設(shè)備的地址)的域144;指示TCP目的端口 (也就 是導(dǎo)致分組生成的應(yīng)用的地址)的域146;指示TCP源端口 (也就是接 收分組的應(yīng)用程序的地址)的域148;指示分組的安全/驗(yàn)證屬性的域 150;以及SPI域152。在流字符組中還包括其他域。其他流字符組140 可能與其他網(wǎng)絡(luò)協(xié)議,例如,UDP相關(guān)。再參見圖3,網(wǎng)絡(luò)控制器52的發(fā)送通道94包括耦合到系統(tǒng)總線接析器114。為實(shí)現(xiàn)這一點(diǎn),在某些實(shí)施方案i,發(fā)送解析器1、14在頭存 儲(chǔ)器116中存儲(chǔ)預(yù)定流的頭。因?yàn)樘囟鞯念^指示相當(dāng)大量的相同信 息(如端口和IP地址),所以發(fā)送解析器114可能稍微修改每個(gè)外出 分組的存儲(chǔ)頭并且將修改后的頭裝配到外出分組中。作為例子,對(duì)特 定流,發(fā)送解析器114從頭存儲(chǔ)器116中接收頭并且解析頭以在外出 分組的頭中增加如序號(hào)和確認(rèn)號(hào)(作為例子)這樣的信息。校驗(yàn)和引 擎120計(jì)算外出分組的IP和網(wǎng)絡(luò)頭的校驗(yàn)和并且將校驗(yàn)和合并到分組中。發(fā)送通道94也包括加密和/或驗(yàn)證外出分組的數(shù)據(jù)的密碼引擎 126。如此,特定流的所有分組都由與該流相關(guān)的密鑰加密和/或驗(yàn)證, 并且不同流的密鑰存儲(chǔ)在密鑰存儲(chǔ)器124中。如上所述,密碼密鑰基 于使用的密碼算法。在某些實(shí)施方案中,新的密鑰可以增加到密鑰存儲(chǔ)器124中并且 已有的密鑰可以由通過發(fā)送通道94在控制分組域中傳送的信息修改或 刪除。發(fā)送通道94還包括一個(gè)或多個(gè)FIF0存儲(chǔ)器122,以通過發(fā)送通 道94同步分組流。并行-串行轉(zhuǎn)換電路128耦合到FIFO存儲(chǔ)器122上 來檢索準(zhǔn)備發(fā)送的分組,以達(dá)到使外出分組的數(shù)據(jù)串行的目的。 一旦 被串行化,電路128就將數(shù)據(jù)傳遞到網(wǎng)絡(luò)接口 90以發(fā)送到網(wǎng)絡(luò)47。參見圖5,說明了網(wǎng)絡(luò)控制器52的安全操作。 一旦接收到要發(fā)送 的數(shù)據(jù)報(bào)(在602 ),發(fā)送解析器114就訪問IPSEC分組的安全控制信 息和命令以確定是否使用密碼處理。如果安全信息和命令指示沒有實(shí) 現(xiàn)任何安全協(xié)議(在604 ),則發(fā)送解析器114將數(shù)據(jù)報(bào)傳遞到隊(duì)列122, 其被轉(zhuǎn)發(fā)(在614)到網(wǎng)絡(luò)接口 90以便發(fā)送到網(wǎng)絡(luò)47。在這種情況下, 繞過了密碼引擎126。如果基于安全控制信息和命令(在604 )需要安全業(yè)務(wù),則從密鑰 存儲(chǔ)器124中檢索出相關(guān)密鑰并且傳遞給密碼引擎(在606 ),以執(zhí)行 加密和驗(yàn)證操作。如果在密鑰存儲(chǔ)器124中得不到密鑰,則網(wǎng)絡(luò)控制 器52訪問位于網(wǎng)絡(luò)控制器52之外的另一個(gè)存儲(chǔ)單元以檢索密鑰,如 下所述。根據(jù)某些實(shí)施方案,IPSEC分組的安全控制信息指示各種類型 的加密算法,如包括塊密碼或流密碼的對(duì)稱加密算法、公用密鑰算法 以及其他算法。驗(yàn)證算法包括下面的例子基于對(duì)稱加密算法如數(shù)據(jù) 加密標(biāo)準(zhǔn)(DES)的密鑰消息驗(yàn)證代碼(MAC);如消息摘要函數(shù)(MD5) 的單向混列函數(shù)或安全混列算法(SHA);或其他算法。在(1996年笫 二期)John Wiley&Sons有限公司,Bruce Schneier的"Applied Cryptography (被應(yīng)用的加密)"中可以找到MAC、 DES、 MD5和SHA的 描述,然后密碼引擎126基于采用的算法的類型以及從密鑰存儲(chǔ)器124 (圖3)中檢索的密鑰對(duì)數(shù)據(jù)(在608 )進(jìn)行加密和驗(yàn)證處理。密碼引 擎126接著確定(在610 )是否調(diào)用回送模式,在這種模式下密碼處理 的數(shù)據(jù)通過鏈路127 (圖3)被路由回(在612)接收通道92。數(shù)據(jù)被 送回設(shè)備50的其他層(如安全例程410和411)以便進(jìn)一步處理,基 于IPSEC分組的ESP或AH頭中包含的信息確定這一點(diǎn)??赡芤?yàn)樵S多 原因使用回送模式,包括使用采用多個(gè)通道通過密碼引擎126來完成 密碼處理的嵌套SA的數(shù)據(jù)報(bào)。如果在數(shù)據(jù)報(bào)上應(yīng)用不僅一個(gè)安全協(xié)議, 如AH和ESP協(xié)議的組合或使用IP隧道,則可使用多個(gè)嵌套SA,在設(shè)備50中應(yīng)用過程(次使用過程,如過程405 )也可以將回送 功能用于不在網(wǎng)絡(luò)47上發(fā)送的數(shù)據(jù)。例如,可以通過設(shè)備50中的一 些其他接口,如調(diào)制解調(diào)器或耦合到擴(kuò)展總線70或其他總線上的其他 收發(fā)信機(jī)75,來發(fā)送和接收來自應(yīng)用過程405的數(shù)據(jù)。這些數(shù)據(jù)也需 要密碼處理。代替執(zhí)行使用主處理器54或其他協(xié)處理器的密碼操作,可由網(wǎng)絡(luò)控制器52中的密碼引擎126執(zhí)行該操作。當(dāng)基于在SPD 522中存儲(chǔ)的流字符組140不能識(shí)別接收的數(shù)據(jù)報(bào) 時(shí)也可以使用回送功能.這樣的數(shù)據(jù)報(bào)向上通過接收通道92發(fā)送到更 高層,如安全例程410和411.然后安全例程410和411能夠確定如何 進(jìn)一步處理接收的數(shù)據(jù)報(bào).例如,在實(shí)施方案中網(wǎng)絡(luò)控制器52中只有 一部分SAD 520可用的情況下,安全例程410和411可以訪問設(shè)備中 全部SAD以確定接收數(shù)據(jù)的SA。如果安全例程410和411成功地確定 了 SA,則網(wǎng)絡(luò)控制器52中的SAD部分520可以更新并且數(shù)據(jù)和相關(guān)安 全信息可以發(fā)送回網(wǎng)絡(luò)控制器52供密碼處理。安全例程410和411還有其他功能,如防止重放攻擊。為實(shí)現(xiàn)這 樣的其他功能,安全例程410和411利用回送功能按需要的次數(shù)執(zhí)行 密碼處理。如果如在610決定的不采用回送,則由密碼引擎處理的數(shù)據(jù) 被轉(zhuǎn)發(fā)(在614)以由網(wǎng)絡(luò)接口 90發(fā)送,再參見圖3,接收通道92中的接收解析器98使用存儲(chǔ)的流字符組 140來確定接收的分組是否需要按照特定安全協(xié)議而被進(jìn)行密碼處理。 根據(jù)某些實(shí)施方案,在網(wǎng)絡(luò)控制器52的接收通道中,接收解析器98 將接收數(shù)據(jù)報(bào)中的信息與存儲(chǔ)在存儲(chǔ)器100中的流字符組"0的子集 (圖6)相比較以識(shí)別數(shù)據(jù)報(bào)的SA。例如,在某些實(shí)施方案中,接收 解析器98使用域142、 150和152 (目的IP地址;IPSEC協(xié)議(AH或 ESP);以及SPI值)來識(shí)別流字符組瞬斷從而可以確定進(jìn)入數(shù)據(jù)報(bào)的 SA。如果出現(xiàn)流字符組瞬斷,則流字符組用于映射到SAD 520C中以確 定數(shù)據(jù)的SA。額外的流字符組140存儲(chǔ)在存儲(chǔ)器100中并且已有的流字符組140 可由網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器408從存儲(chǔ)器100中清除。在某些實(shí)施方案中, 存儲(chǔ)器100還存儲(chǔ)信息域141。每個(gè)141域與特定的流字符組140相關(guān) 并且指示,例如,識(shí)別(對(duì)網(wǎng)絡(luò)協(xié)議棧)流和系統(tǒng)存儲(chǔ)器56的緩存的 指針的處理程序,如下所述。如果接收解析器98 (通過流字符組140)識(shí)別與進(jìn)入分組相關(guān)的 流,則接收通道92還進(jìn)一步處理該分組。在某些實(shí)施方案中,接收解 析器98 (對(duì)網(wǎng)絡(luò)控制器52的其他電路和最后對(duì)網(wǎng)絡(luò)協(xié)議棧)指示與特 定分組相關(guān)的流以及分組的其他檢測屬性的識(shí)別。17如果接收解析器98沒有識(shí)別流,則接收通道92將分組標(biāo)識(shí)為對(duì) 準(zhǔn)并且通過系統(tǒng)總線接口 130將進(jìn)入的分組傳遞到安全例程410和411 供處理,如上所述。在某些實(shí)施方案中, 一旦確定進(jìn)入分組的SA,就從密鑰存儲(chǔ)器104 中檢索出相關(guān)密鑰,以便密碼引擎102可以執(zhí)行其密碼操作。密鑰存 儲(chǔ)器104中的密鑰由接收數(shù)據(jù)的SA進(jìn)行索引。密鑰可以由網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)器408加入密鑰存儲(chǔ)器104或從中刪除, 照這樣,如果引擎102確定特定解密密鑰沒有存儲(chǔ)在密鑰存儲(chǔ)器104 中,則引擎102向設(shè)備驅(qū)動(dòng)器408 (見圖2)(通過系統(tǒng)總線接口 130) 提交需要密鑰的請(qǐng)求。照這樣,設(shè)備驅(qū)動(dòng)器408導(dǎo)致處理器54響應(yīng) 該請(qǐng)求提供密鑰,并且與系統(tǒng)總線接口 130交互,以便在密鑰存儲(chǔ)器 104中存儲(chǔ)該密鑰。在某些實(shí)施方案中,如果得不到該密鑰(也就是, 從設(shè)備驅(qū)動(dòng)器408得不到該密鑰或其沒有存儲(chǔ)在密鑰存儲(chǔ)器104中), 則引擎102對(duì)該分組的數(shù)據(jù)部分不解密。代替地,系統(tǒng)總線接口 130 在系統(tǒng)存儲(chǔ)器56 (見圖2)的預(yù)定位置存儲(chǔ)加密的數(shù)據(jù),以便可以執(zhí) 行協(xié)議棧一層或多層的軟件來對(duì)進(jìn)入分組的數(shù)據(jù)部分解密,如上所 述。在解析執(zhí)行完之后,網(wǎng)絡(luò)控制器52對(duì)分組的處理包括繞過與網(wǎng)絡(luò) 協(xié)議棧相關(guān)的一個(gè)或多個(gè)軟件層的執(zhí)行。例如,接收通道92包括零拷 貝解析器IIO,通過系統(tǒng)總線接口 130,可以將與分組有關(guān)的數(shù)據(jù)拷貝 到與應(yīng)用過程有關(guān)的存儲(chǔ)器緩存中。如下所述,除此之外,零拷貝解 析器110處理網(wǎng)絡(luò)控制器52和協(xié)議棧之間的控制問題,并且處理進(jìn)入 分組丟失的情況。接收通道92還包括一個(gè)或多個(gè)先進(jìn)先出(FIFO)存儲(chǔ)器106以同 步通過接收通道92的進(jìn)入分組流。(接收通道92的)校驗(yàn)和引擎108 耦合到FIFO存儲(chǔ)器106和系統(tǒng)總線接口 130之間,以便驗(yàn)證分組中嵌 入的校驗(yàn)和。接收通道92可以與系統(tǒng)總線接口 130上的系統(tǒng)總線72相接口。 系統(tǒng)總線接口 130包括用于將分組的數(shù)據(jù)部分直接發(fā)送到主存儲(chǔ)器56 的仿真的直接存儲(chǔ)器訪問(DMA)引擎131。在某些實(shí)施方案中,接收通道92包括附加電路,如當(dāng)從網(wǎng)絡(luò)47 中接收到分組時(shí)從網(wǎng)絡(luò)接口 90接收串行比特流的串-并行轉(zhuǎn)換電路96。照這樣,轉(zhuǎn)換電路96將比特打包成字節(jié)并且向接收解析器98提 供這些字節(jié)。網(wǎng)絡(luò)接口 90可耦合以生成和接收去往和來自網(wǎng)絡(luò)47的 信號(hào)。參見圖7,說明了在網(wǎng)絡(luò)47上響應(yīng)接收分組在網(wǎng)絡(luò)控制器52中的 操作流。接收解析程序98 (在200 )解析每個(gè)進(jìn)入分組的頭。從解析 的信息,接收解析器98確定該分組(如IPSEC分組)是否與某些安全 協(xié)議相關(guān)聯(lián)(在201)。如果需要驗(yàn)證或解密,則接收解析器98使用從頭中解析的信息來 確定(在216)是否出現(xiàn)流字符組瞬斷以便確定相關(guān)SA。如果沒有, 則接收解析器98將控制發(fā)送到零拷貝解析器110執(zhí)行分組結(jié)束檢測 (在202 )。否則,接收解析器98 (在220 )確定在密鑰存儲(chǔ)器104中 SA指出的密鑰是否可用。如果密鑰可用,則接收解析器98在將控制傳 遞給執(zhí)行分組零拷貝(在202 )的零拷貝解析器IIO之前,開始分組的 驗(yàn)證和/或解密(在218)。如果密鑰不可用,則接收解析器98將控制 發(fā)送給零拷貝解析器IIO以執(zhí)行零拷貝操作(在202 )。執(zhí)行零拷貝操作之后(在202 ),零拷貝解析器IIO執(zhí)行分組結(jié)束 檢測(在204 )。在這些檢測中,接收解析器98執(zhí)行典型地與數(shù)據(jù)鏈路 層相關(guān)的檢測。例如,接收解析器98確保該分組指示正確的以太網(wǎng)MAC 地址、不出現(xiàn)循環(huán)冗余校驗(yàn)(CRC)錯(cuò)誤、不出現(xiàn)接收狀態(tài)錯(cuò)誤(如沖 突、超限、最小/最大幀長度錯(cuò)誤)并且?guī)拈L度大于最小字節(jié)數(shù)(如 64)。接收解析器98執(zhí)行典型地與網(wǎng)絡(luò)層有關(guān)的檢測。例如,接收解 析器98檢測IP分組頭的大小,計(jì)算IP頭的校驗(yàn)和,確定計(jì)算的IP 頭的校驗(yàn)和是否與IP頭指示的校驗(yàn)和一致,確保分組指示正確的IP 目的地址以及確定IP是否指示一個(gè)可識(shí)別的網(wǎng)絡(luò)協(xié)議(如TCP或UDP 協(xié)議)。接收解析器98還執(zhí)行典型地與處理器的與傳輸層相關(guān)的軟件執(zhí)行 的功能相關(guān)的檢測。例如,接收解析器98確定協(xié)議頭的大小是否在預(yù) 定的限制內(nèi),計(jì)算協(xié)議頭的校驗(yàn)和并且確定是否設(shè)置了稱為ACK、 URG、 PHS、 RST、 FIN和/或SYN標(biāo)記的標(biāo)記。如果設(shè)置了PSH標(biāo)記,則接收 解析器98向驅(qū)動(dòng)器程序指示這個(gè)事件。如果設(shè)置了 RST、 FIN或SYN 標(biāo)記,則接收解析器98將控制交給傳輸層。如果發(fā)送了ACK標(biāo)記,則 接收解析器98與設(shè)備驅(qū)動(dòng)器408或發(fā)送通道94交互以發(fā)送確認(rèn)分組,如下所述。檢測完成之后,零拷貝解析器110 (在205 )確定是否出現(xiàn)可導(dǎo)致 分組不可用的數(shù)據(jù)鏈路錯(cuò)誤.如果出現(xiàn)這種情況,則零拷貝解析器110 (在205 )收回驅(qū)動(dòng)器程序分配給分組的存儲(chǔ)器,(在207 )收回分配 給分組的零拷貝的存儲(chǔ)器并且(在209 )重新設(shè)置與分組相關(guān)的(由 DMA引擎131仿真的)DMA信道。否則,零拷貝解析器110為協(xié)議棧編 譯錯(cuò)誤統(tǒng)計(jì)棧。往回參見圖2,除了網(wǎng)絡(luò)控制器52,計(jì)算機(jī)系統(tǒng)50還包括耦合到 主機(jī)總線58的處理器54。主機(jī)總線58由網(wǎng)橋或存儲(chǔ)器集線器60耦合 到加速圖形端口 ( AGP)總線62上,如1998年5月的加速圖形端口接 口規(guī)范,修訂本2. 0中所描述的。AGP總線62耦合到,如控制顯示器 65的視頻控制器64上 存儲(chǔ)器集線器60也將AGP總線62和主機(jī)總線 58耦合到存儲(chǔ)器總線61上。存儲(chǔ)器總線61,依次耦合到例如存儲(chǔ)緩 存304和設(shè)備驅(qū)動(dòng)器408的拷貝的系統(tǒng)存儲(chǔ)器56上。存儲(chǔ)器集線器60還(通過集線器鏈路66 )耦合到與I/O擴(kuò)展總線 70和系統(tǒng)總線72相耦合的另一個(gè)網(wǎng)橋、或輸入/輸出(I/O)集線器 68上。I/O集線器68還耦合到,如光盤(CD)或數(shù)字化視頻光盤(DVD) 驅(qū)動(dòng)器82和硬盤驅(qū)動(dòng)器84上。I/O擴(kuò)展總線70可耦合到控制軟盤驅(qū) 動(dòng)器76的操作以及接收如來自鍵盤78和鼠標(biāo)80輸入數(shù)據(jù)的1/0控制 器74上。(如由模塊、例程、或其他層構(gòu)成的)各種軟件或固件,包括應(yīng) 用程序、操作系統(tǒng)模塊或例程、設(shè)備驅(qū)動(dòng)器、BIOS模塊或例程以及中 斷處理程序,它們存儲(chǔ)在或否則明確地包含在設(shè)備50或其他類似設(shè)備 的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)中。適合于明確地包含軟件和固件指令的存儲(chǔ) 介質(zhì)包括不同形式的存儲(chǔ)器,包括如動(dòng)態(tài)或靜態(tài)隨機(jī)存儲(chǔ)存儲(chǔ)器、可 擦可編程只讀存儲(chǔ)器(EPROM)、電可擦可編程只讀存儲(chǔ)器(EEPROM) 以及閃存的半導(dǎo)體存儲(chǔ)器設(shè)備;如固定盤、軟盤和可拆卸盤的磁盤; 包括磁帶的其他磁介質(zhì);以及如CD或DVD盤的光介質(zhì)。存儲(chǔ)在存儲(chǔ)介 質(zhì)中的指令在執(zhí)行時(shí)引起設(shè)備50執(zhí)行編程的操作,軟件和固件可以以許多不同方式中的一種加載到設(shè)備50中。例如,存儲(chǔ)在存儲(chǔ)介質(zhì)或通過網(wǎng)絡(luò)接口卡、調(diào)制解調(diào)器或其他接口機(jī)制傳輸 的指令或其他代碼段被加載到設(shè)備50中,并且運(yùn)行以執(zhí)行被編程的操作。在加栽或傳輸過程中,實(shí)現(xiàn)為載波的數(shù)據(jù)信號(hào)(通過電話線、網(wǎng)線、無線鏈路、電纜等發(fā)送)向設(shè)備50傳遞指令或代碼段。雖然本發(fā)明已經(jīng)公開了有限數(shù)量的實(shí)施方案,但是本領(lǐng)域的技術(shù) 人員應(yīng)該理解,從中有大量的修改和變化。所附權(quán)利要求書將覆蓋在 本發(fā)明的真正精神和范圍內(nèi)的所有這樣的修改和變化。
權(quán)利要求
1.一種在耦合到通信信道的設(shè)備中使用的方法,包括確定對(duì)數(shù)據(jù)塊執(zhí)行的安全業(yè)務(wù);生成與數(shù)據(jù)塊一起傳遞的安全信息,所述安全信息標(biāo)識(shí)安全業(yè)務(wù);使用一個(gè)適合于控制與通信信道的通信的網(wǎng)絡(luò)控制器來基于安全信息而從其它安全業(yè)務(wù)中選擇安全業(yè)務(wù);以及在所述網(wǎng)絡(luò)控制器中,根據(jù)安全信息處理數(shù)據(jù)塊。
2. 權(quán)利要求1的方法,其中處理包括執(zhí)行數(shù)據(jù)塊的密碼處理。
3. 權(quán)利要求1的方法,還包括 從軟件例程中接收數(shù)據(jù)塊;以及 在處理之后將處理過的數(shù)據(jù)塊路由回軟件例程,
4. 權(quán)利要求l的方法,還包括 確定安全業(yè)務(wù)是否能夠由所述網(wǎng)絡(luò)控制器執(zhí)行;以及 如果不能,則根據(jù)所述安全業(yè)務(wù)在軟件例程而不是網(wǎng)絡(luò)控制器中處理數(shù)據(jù)塊。
5. 權(quán)利要求1的方法,還包括根據(jù)互聯(lián)網(wǎng)協(xié)議安全協(xié)議識(shí)別安 全業(yè)務(wù)。
6. —種用于控制與傳輸介質(zhì)通信的控制器,所述控制器包括 接收數(shù)據(jù)和相關(guān)安全控制信息的接收電路,所述安全控制信息識(shí)別要在所述數(shù)據(jù)上執(zhí)行的安全業(yè)務(wù);以及基于安全控制信息而從其它安全業(yè)務(wù)中選擇安全業(yè)務(wù)并且基于該 選擇而密碼地處理數(shù)據(jù)的密碼引擎,該密碼引擎是網(wǎng)絡(luò)控制器。
7. 權(quán)利要求6的控制器,還包括包含識(shí)別要執(zhí)行的安全業(yè)務(wù)的信 息的存儲(chǔ)設(shè)備,所述接收的安全控制信息選擇存儲(chǔ)設(shè)備中的安全業(yè)務(wù) 信息中的一部分,其中密碼引擎根據(jù)選定的安全業(yè)務(wù)信息的一部分處 理數(shù)據(jù)。
8. 權(quán)利要求7的控制器,還包括適合于改變存儲(chǔ)設(shè)備的內(nèi)容以更新安全業(yè)務(wù)信息的設(shè)備。
9. 權(quán)利要求8的控制器,其中所述設(shè)備適合于基于預(yù)定的替換策 略更新安全業(yè)務(wù)信息。
10. 權(quán)利要求7的控制器,其中安全業(yè)務(wù)信息包括安全聯(lián)合信息。
全文摘要
本發(fā)明涉及通信保護(hù),具體地本發(fā)明提供一種用于控制系統(tǒng)(50)與傳輸介質(zhì)(47)之間通信的控制器(52),包括接收數(shù)據(jù)和相關(guān)安全控制信息的接收電路(96)。第一密碼引擎(102)基于安全控制信息來密碼處理從傳輸介質(zhì)中接收到的數(shù)據(jù)??刂破?52)還包括第二密碼引擎(126)來根據(jù)安全協(xié)議在系統(tǒng)(50)中生成的數(shù)據(jù)發(fā)送到傳輸介質(zhì)(47)之前對(duì)其進(jìn)行處理。
文檔編號(hào)H04L9/28GK101262338SQ20081008194
公開日2008年9月10日 申請(qǐng)日期2000年6月16日 優(yōu)先權(quán)日1999年7月30日
發(fā)明者B·V·帕特爾, U·埃祖爾 申請(qǐng)人:英特爾公司