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