專利名稱:實現(xiàn)基于無狀態(tài)服務(wù)器的預(yù)共享私密的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及計算機網(wǎng)絡(luò)的認證、授權(quán)和安全機制。更具體而言,本發(fā)明涉及用于實現(xiàn)基于無狀態(tài)服務(wù)器的預(yù)共享私密(secret)的方法和裝置。
背景技術(shù):
本部分中描述的方法可被獲得,但這些方法不一定是先前已經(jīng)設(shè)想到或已經(jīng)獲得的方法。因此,除非這里另外指示,否則在本部分中描述的方法不是針對本申請中的權(quán)利要求的現(xiàn)有技術(shù),并且不會由于包括在本部分中而被承認是現(xiàn)有技術(shù)。
為了維持私有計算機網(wǎng)絡(luò)的安全性,客戶端計算機(“客戶端”)可能被要求通過經(jīng)由服務(wù)器計算機(“服務(wù)器”)進行認證以及建立到網(wǎng)絡(luò)的授權(quán)來訪問網(wǎng)絡(luò)。在授予客戶端對網(wǎng)絡(luò)的訪問權(quán)限之前,服務(wù)器可能要求客戶端向服務(wù)器提供認證憑證,以使服務(wù)器能夠確信客戶端實際上是客戶端所聲稱的的實體??蛻舳说恼J證憑證指示客戶端的身份。如果客戶端的認證憑證與存儲在服務(wù)器中的認證憑證不匹配,服務(wù)器則拒絕客戶端訪問網(wǎng)絡(luò)。即使在客戶端已成功認證其自身之后,服務(wù)器也可以基于與客戶端相關(guān)的以及存儲在服務(wù)器中的授權(quán)特性來限制服務(wù)器對網(wǎng)絡(luò)資源的訪問和/或客戶端可以對網(wǎng)絡(luò)資源執(zhí)行的操作。
未經(jīng)授權(quán)的計算機嘗試竊聽在經(jīng)授權(quán)的客戶端和服務(wù)器之間傳輸?shù)男畔⒌那闆r并不罕見。為了防止未經(jīng)授權(quán)的計算機利用未經(jīng)授權(quán)的計算機不應(yīng)接收的信息,客戶端和服務(wù)器可以采用加密機制來保護將在客戶端和服務(wù)器之間傳輸?shù)男畔?。根?jù)一種加密機制,客戶端和服務(wù)器都從僅被客戶端和服務(wù)器擁有的共享私密密鑰導(dǎo)出一個或多個會話密鑰。在彼此發(fā)送消息之前,客戶端和服務(wù)器利用會話密鑰對消息加密。利用會話密鑰,客戶端和服務(wù)器可以對它們從彼此接收到的經(jīng)加密的消息進行解密。不具有共享私密密鑰的計算機無法導(dǎo)出會話密鑰,因此無法對在客戶端和服務(wù)器之間傳輸?shù)南⑦M行解密。
多個客戶端可能通過同一服務(wù)器來訪問專用網(wǎng)絡(luò)。為了防止一個客戶端偽裝成另一客戶端,不同的客戶端通常與不同的認證憑證相關(guān)聯(lián)。不同的客戶端可能與不同的授權(quán)特性相關(guān)聯(lián)。為了防止一個客戶端利用專用于另一客戶端的信息,不同的客戶端通常具有不同的共享私密密鑰??偟膩碇v,客戶端的認證憑證、授權(quán)特性和共享私密密鑰被稱為客戶端的狀態(tài)信息。
根據(jù)一種方法,服務(wù)器針對每個客戶端存儲獨立的客戶端狀態(tài)信息。當存在很多客戶端時,存儲每個客戶端的獨立的客戶端狀態(tài)信息的操作要使用大量存儲器。服務(wù)器的成本與服務(wù)器要求用于存儲客戶端狀態(tài)信息的存儲器的量成正比。
很多現(xiàn)有網(wǎng)絡(luò)設(shè)備不包含足以存儲大量客戶端的客戶端狀態(tài)信息的存儲器。例如,某些網(wǎng)絡(luò)路由器可獲得的相對較少量的存儲器使這些網(wǎng)絡(luò)路由器在大量客戶端將訪問網(wǎng)絡(luò)時無法執(zhí)行上述服務(wù)器功能。很多網(wǎng)絡(luò)路由器沒有足夠的存儲器來同時存儲很多不同的認證憑證、授權(quán)特性和共享私密密鑰。
在當今不斷增長的無線世界中,存儲器限制不是與客戶端狀態(tài)信息的存儲相關(guān)的唯一關(guān)注點。無線客戶端可以從一個位置漫游到另一位置。當無線客戶端離開一個位置而進入另一位置時,無線客戶端可能試圖通過不同服務(wù)器訪問同一專用網(wǎng)絡(luò)。如果客戶端試圖通過其來進行訪問的服務(wù)器不具有客戶端的狀態(tài)信息,服務(wù)器則將無法授予客戶端對網(wǎng)絡(luò)的訪問權(quán)限。
解決上述問題的一種可能方法可能是以如下方式管理一組服務(wù)器將存儲在一個服務(wù)器中的客戶端狀態(tài)信息復(fù)制在域中的所有服務(wù)器上。但是,當存在很多客戶端和很多服務(wù)器時,在所有服務(wù)器上復(fù)制所有客戶端狀態(tài)信息的操作是一項繁重的任務(wù),尤其是在新的客戶端被持續(xù)添加到客戶端池的情況下。如果域中的每個服務(wù)器都需要裝配非常大量的存儲器來存儲所有客戶端的所有客戶端狀態(tài)信息,那么域管理員的花費可能是無法承受的。毫無疑問,如果客戶端的數(shù)目以相當快速的步調(diào)增長,管理員則可能發(fā)現(xiàn)無法跟上這種增長。
在附圖中以示例方式而非限制方式示出了本發(fā)明,并且附圖中的相似標號指示類似元素,在附圖中圖1是示出客戶端狀態(tài)信息被主要存儲在客戶端上而非服務(wù)器上的系統(tǒng)的概況的框圖;圖2是示出用于避免客戶端狀態(tài)信息存儲在服務(wù)器上的方法的一個實施例的高級概況的流程圖;圖3A和圖3B是示出用于避免客戶端授權(quán)特性存儲在服務(wù)器上的方法的一個實施例的流程圖;圖4A和圖4B是示出用于替換存儲在客戶端上的經(jīng)加密客戶端狀態(tài)信息的方法的一個實施例的流程圖;圖5A和圖5B是示出用于修改存儲在客戶端上的經(jīng)加密客戶端狀態(tài)信息的方法的一個實施例的流程圖;圖6是示出用于消除相同客戶端狀態(tài)信息的冗余存儲的方法的一個實施例的流程圖;圖7A和圖7B是示出用于避免共享私密密鑰存儲在服務(wù)器上的方法的一個實施例的流程圖;圖8是示出用于在多個服務(wù)器間共享經(jīng)加密的客戶端狀態(tài)信息的方法的一個實施例的流程圖;圖9是示出客戶端可用以向服務(wù)器傳輸客戶端的PAC Opaque的方法的一個實施例的流程圖;以及圖10是示出可在其上實現(xiàn)實施例的計算機系統(tǒng)的框圖。
具體實施例方式
用于避免在服務(wù)器上存儲客戶端狀態(tài)的方法和裝置被描述。在以下描述中,出于說明的目的,提出了多個具體細節(jié),以便提供對本發(fā)明的全面理解。但是,將會發(fā)現(xiàn),本領(lǐng)域技術(shù)人員無需這些具體細節(jié)也可以實現(xiàn)本發(fā)明。在其他實例中,以框圖形式示出了公知的結(jié)構(gòu)和設(shè)備,以避免不必要地模糊本發(fā)明。
這里根據(jù)以下大綱來描述實施例1.0總體概況2.0結(jié)構(gòu)和功能概況3.0實現(xiàn)示例3.1避免在服務(wù)器上存儲授權(quán)特性3.2更新存儲在客戶端上的經(jīng)加密客戶端狀態(tài)信息3.3消除相同客戶端狀態(tài)信息的冗余存儲3.4避免在中間設(shè)備上存儲會話狀態(tài)信息3.5避免在服務(wù)器上存儲共享私密密鑰3.6在多個服務(wù)器間共享客戶端狀態(tài)信息3.7利用傳輸層安全性協(xié)議(TLS)擴展來避免客戶端狀態(tài)信息的服務(wù)器存儲3.7.1EAP-FAST概況3.7.2隧道建立階段4.0實現(xiàn)機制——硬件概況5.0擴展和替換---1.0總體概況在本發(fā)明中實現(xiàn)了前述背景技術(shù)中標識的需求以及將從以下描述中發(fā)現(xiàn)的其他需求和目的,本發(fā)明在其一個方面中包括用于避免在服務(wù)器上存儲客戶端狀態(tài)信息的方法?;诳蛻舳瞬恢赖谋镜孛荑€,服務(wù)器對客戶端的狀態(tài)信息進行加密??蛻舳说臓顟B(tài)信息例如可以包括客戶端的認證憑證、客戶端的授權(quán)特性和在服務(wù)器與客戶端之間共享以使客戶端和服務(wù)器可以相互導(dǎo)出新的會話密鑰的私密密鑰。
利用多種機制中的任意一種,經(jīng)加密的客戶端狀態(tài)信息被提供給客戶端。例如,服務(wù)器可以通過網(wǎng)絡(luò)向客戶端發(fā)送經(jīng)加密的狀態(tài)信息。因為客戶端不具有本地密鑰,因此客戶端無法對經(jīng)加密的狀態(tài)信息解密。因此,經(jīng)加密的信息對客戶端來說是“模糊的(opaque)”。這種模糊性例如使客戶端無法改變客戶端的授權(quán)特性。
客戶端存儲客戶端的經(jīng)加密的狀態(tài)信息。在客戶端存儲了經(jīng)加密的客戶端狀態(tài)信息之后,服務(wù)器不再需要存儲客戶端的狀態(tài)信息。因此,服務(wù)器可以騰出曾存儲客戶端的狀態(tài)信息的存儲器。服務(wù)器可以將存儲器用于其它目的。
當服務(wù)器需要客戶端的狀態(tài)信息時,例如當服務(wù)器需要導(dǎo)出會話密鑰或需要確定客戶端的授權(quán)特性時,服務(wù)器可以向客戶端請求客戶端的經(jīng)加密的狀態(tài)信息。響應(yīng)于服務(wù)器的請求,客戶端可以向服務(wù)器發(fā)送客戶端之前存儲的經(jīng)加密的狀態(tài)信息??商鎿Q地,即使不存在來自服務(wù)器的請求,客戶端也可以在客戶端發(fā)起與服務(wù)器的通信時將客戶端的經(jīng)加密的狀態(tài)信息發(fā)送到服務(wù)器。
在接收到來自客戶端的經(jīng)加密的客戶端狀態(tài)信息之后,服務(wù)器利用本地服務(wù)器密鑰來解密客戶端狀態(tài)信息。在服務(wù)器已解密出客戶端狀態(tài)信息之后,服務(wù)器可以將客戶端狀態(tài)信息用于服務(wù)器通常將客戶端狀態(tài)信息用于的任何目的。當服務(wù)器使用完客戶端狀態(tài)信息時,服務(wù)器可以再一次騰出存儲客戶端狀態(tài)信息的存儲器。因為每個客戶端以加密形式存儲了客戶端本身的狀態(tài)信息,因此服務(wù)器無需永久存儲任何客戶端的狀態(tài)信息。
在其他方面,本發(fā)明包含被配置用于執(zhí)行前述步驟的計算機裝置和計算機可讀介質(zhì)。
2.0結(jié)構(gòu)和功能概況圖1是示出系統(tǒng)100的概況的框圖,其中客戶端狀態(tài)信息主要存儲在客戶端而非服務(wù)器上。系統(tǒng)100包括專用網(wǎng)絡(luò)102、服務(wù)器104A-N、服務(wù)器106A-N、公共網(wǎng)絡(luò)108、客戶端110A-N和客戶端112A-N。專用網(wǎng)絡(luò)102可以是計算機網(wǎng)絡(luò),例如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)。從專用網(wǎng)絡(luò)102外部對專用網(wǎng)絡(luò)102的訪問只能通過服務(wù)器104A-N和服務(wù)器106A-N來獲得。
服務(wù)器104A-N和服務(wù)器106A-N可以是諸如充當認證、授權(quán)和計費服務(wù)器(即AAA服務(wù)器)的網(wǎng)絡(luò)路由器、網(wǎng)絡(luò)交換機或網(wǎng)橋之類的計算機或網(wǎng)絡(luò)元件。服務(wù)器104A-N通信地耦合到專用網(wǎng)絡(luò)102。服務(wù)器104A-N還可以通信地耦合到公共網(wǎng)絡(luò)108。公共網(wǎng)絡(luò)108可以是諸如LAN或WAN之類的計算機網(wǎng)絡(luò)。公共網(wǎng)絡(luò)108可以包含因特網(wǎng)。公共網(wǎng)絡(luò)108可能是服務(wù)器104A-N或客戶端110A-N不信任的網(wǎng)絡(luò)。另外,服務(wù)器104A-N中的一個或多個可能直接耦合到客戶端110A-N中的一個或多個。
服務(wù)器106A-N通信地耦合到專用網(wǎng)絡(luò)102。服務(wù)器106A-N可以通過無線介質(zhì)與客戶端112A-N通信。無線介質(zhì)采用連接到服務(wù)器106A-N的無線接入點(WAP)114A-N;WAP提供對客戶端112A-N的無線網(wǎng)絡(luò)訪問。類似地,客戶端112A-N可以通過無線介質(zhì)(包括WAP 114A-N)與服務(wù)器106A-N通信。
客戶端110A-N和客戶端112A-N可以是個人計算機或無盤工作站??蛻舳?10A-N和客戶端112A-N可以是諸如膝上型計算機之類的移動設(shè)備??蛻舳?10A-N可以通信地耦合到公共網(wǎng)絡(luò)108。另外,客戶端110A-N中的一個或多個可能直接耦合到服務(wù)器104A-N中的一個或多個。
客戶端110A-N和客戶端112A-N中的每一個對應(yīng)于不同的客戶端狀態(tài)信息。客戶端的狀態(tài)信息例如可以包括客戶端的認證憑證、客戶端的授權(quán)特性和客戶端與服務(wù)器相互使用以導(dǎo)出新的會話密鑰的共享私密密鑰??蛻舳说恼J證憑證可以指示客戶端的唯一身份。客戶端的認證憑證可以包括用戶名和密碼??蛻舳说氖跈?quán)特性可以指示允許客戶端在專用網(wǎng)絡(luò)102內(nèi)訪問的資源??蛻舳说氖跈?quán)特性可以指示允許客戶端在專用網(wǎng)絡(luò)102內(nèi)對資源執(zhí)行的操作。
服務(wù)器104A-N和服務(wù)器106A-N中的每一個存儲任意客戶端110A-N和客戶端112A-N都不知道的本地密鑰。在一個實施例中,每個服務(wù)器的本地密鑰不同于所有其他服務(wù)器的本地密鑰。在另一實施例中,每個服務(wù)器的本地密鑰是相同的。利用它們的本地密鑰,服務(wù)器104A-N和服務(wù)器106A-N對與客戶端110A-N和客戶端112A-N相對應(yīng)的客戶端狀態(tài)信息進行加密。利用多種機制中的任意一種,每個客戶端的經(jīng)加密的客戶端狀態(tài)信息被提供給該客戶端。
客戶端110A-N和客戶端112A-N中的每一個存儲該客戶端的經(jīng)加密的狀態(tài)信息。在一個實施例中,客戶端110A-N和客戶端112A-N在經(jīng)加密的客戶端狀態(tài)信息與對該客戶端狀態(tài)信息進行了加密的服務(wù)器之間建立關(guān)聯(lián)。例如,服務(wù)器104A和服務(wù)器104B都可以加密客戶端110A的客戶端狀態(tài)信息??蛻舳?10A可以分開存儲由服務(wù)器104A加密的經(jīng)加密的客戶端狀態(tài)信息和由服務(wù)器104B加密的經(jīng)加密的客戶端狀態(tài)信息。客戶端110A可以分開建立服務(wù)器104A和經(jīng)服務(wù)器104A加密的經(jīng)加密的狀態(tài)信息之間的關(guān)聯(lián),以及服務(wù)器104B和經(jīng)服務(wù)器104B加密的經(jīng)加密的狀態(tài)信息之間的關(guān)聯(lián)。
由于客戶端110A-N和客戶端112A-N存儲了經(jīng)加密的客戶端狀態(tài)信息,因此服務(wù)器104A-N和服務(wù)器106A-N無需永久存儲客戶端狀態(tài)信息。服務(wù)器104A-N和服務(wù)器106A-N可以騰出曾存儲客戶端狀態(tài)信息的存儲器以用于其它目的。
當服務(wù)器104A-N或服務(wù)器106A-N中的任意一個需要客戶端110A-N或客戶端112A-N中的任意一個的客戶端狀態(tài)信息時,服務(wù)器可以請求來自該客戶端的客戶端的經(jīng)加密的狀態(tài)信息。當客戶端110A-N或客戶端112A-N中的任意一個接收到這樣的請求時,該客戶端可以將與該服務(wù)器相關(guān)聯(lián)的經(jīng)加密的狀態(tài)信息發(fā)送到服務(wù)器??商鎿Q地,即使不存在來自服務(wù)器的請求,客戶端110A-N或客戶端112A-N中的任意一個也可以在該客戶端發(fā)起與服務(wù)器之間的通信時將客戶端的經(jīng)加密的狀態(tài)信息發(fā)送到服務(wù)器。
當服務(wù)器104A-N或服務(wù)器106A-N中的任意一個接收到來自客戶端的經(jīng)加密的客戶端狀態(tài)信息時,服務(wù)器利用服務(wù)器的本地密鑰對客戶端狀態(tài)信息進行解密。在服務(wù)器已解密出客戶端狀態(tài)信息之后,服務(wù)器可以將客戶端狀態(tài)信息用于服務(wù)器通常將客戶端狀態(tài)信息用于的任何目的。當服務(wù)器使用完客戶端狀態(tài)信息之后,服務(wù)器可以騰出存儲客戶端狀態(tài)信息的存儲器。因此,即使在存在很多不同客戶端時,服務(wù)器104A-N和服務(wù)器106A-N也可以利用相對較少量存儲器來執(zhí)行認證和授權(quán)功能。
圖2是示出用于避免在服務(wù)器上存儲客戶端狀態(tài)信息的方法的一個實施例的高級概況的流程圖200。在框202中,服務(wù)器使用服務(wù)器的本地密鑰對客戶端的狀態(tài)信息進行加密。客戶端不具有對服務(wù)器的本地密鑰的訪問權(quán)限。例如,服務(wù)器104A可以利用服務(wù)器104A的本地密鑰對客戶端110A的客戶端狀態(tài)信息進行加密。另外,服務(wù)器104A也可以利用服務(wù)器104A的本地密鑰對客戶端110B的客戶端狀態(tài)信息進行加密。
客戶端110A和110B的經(jīng)加密的客戶端狀態(tài)信息可以被分別提供到客戶端110A和110B。在接收到經(jīng)加密的客戶端狀態(tài)信息之后,客戶端110A和110B可以存儲經(jīng)加密的客戶端狀態(tài)信息。
在框204中,服務(wù)器從客戶端接收客戶端的經(jīng)加密的狀態(tài)信息。繼續(xù)該示例,服務(wù)器104A可以從客戶端110A接收客戶端110A的經(jīng)加密的客戶端狀態(tài)信息。另外,服務(wù)器104A可以從客戶端110B接收客戶端110B的經(jīng)加密的客戶端狀態(tài)信息。
在框206中,服務(wù)器利用服務(wù)器的本地密鑰對客戶端的經(jīng)加密的狀態(tài)信息解密。繼續(xù)該示例,服務(wù)器104A可以利用服務(wù)器104A的本地密鑰對接收自客戶端110A的經(jīng)加密的客戶端狀態(tài)信息進行解密。另外,服務(wù)器104A可以利用服務(wù)器104A的本地密鑰對接收自客戶端110B的經(jīng)加密的客戶端狀態(tài)信息進行解密。服務(wù)器104A可以以與服務(wù)器104A在本地連續(xù)存儲客戶端狀態(tài)信息的情況下服務(wù)器104A使用客戶端狀態(tài)信息的方式相同的方式來使用經(jīng)解密的客戶端110A和110B的客戶端狀態(tài)信息。但是,服務(wù)器104A不需要連續(xù)地存儲任意客戶端狀態(tài)信息。
下面將描述前述一般方法的詳細示例性實現(xiàn)方式。
3.0實現(xiàn)示例3.1避免在服務(wù)器上存儲授權(quán)特性根據(jù)一個實施例,當客戶端110A-N或客戶端112A-N中的任意一個向服務(wù)器104A-N或服務(wù)器106A-N中的任意一個發(fā)送請求時,客戶端將客戶端的經(jīng)加密的狀態(tài)信息與請求一起發(fā)送給服務(wù)器。服務(wù)器可以根據(jù)包括在客戶端的經(jīng)加密的狀態(tài)信息中的授權(quán)特性確定客戶端的請求應(yīng)該被滿足還是拒絕。客戶端110A-N和客戶端112A-N中的每一個可以與不同的授權(quán)特性相關(guān)聯(lián)。
圖3A和圖3B是示出用于避免在服務(wù)器上存儲客戶端授權(quán)特性的方法的一個實施例的流程圖300。在一個實施例中,服務(wù)器104A-N和服務(wù)器106A-N中的每一個存儲不同的本地密鑰集合。服務(wù)器可以利用服務(wù)器的本地密鑰集合中的任意本地密鑰來加密客戶端狀態(tài)信息。通過在不同時刻使用不同的本地密鑰,安全性被提高。每個本地密鑰與一個不同的索引值相關(guān)聯(lián),該索引值是來自被稱為安全性參數(shù)索引(SPI)的總的字段的一個子字段內(nèi)容。在框302中,服務(wù)器從服務(wù)器的本地密鑰集合中選出一個特定的本地密鑰。例如,服務(wù)器可以是服務(wù)器104A-N或服務(wù)器106A-N之一。
在框304中,服務(wù)器基于客戶端的經(jīng)加密的狀態(tài)信息和所述特定本地密鑰計算出認證代碼??蛻舳说臓顟B(tài)信息包括客戶端授權(quán)特性??蛻舳说臓顟B(tài)信息還指示客戶端的唯一身份。認證代碼是服務(wù)器的身份、客戶端的經(jīng)加密狀態(tài)信息和該特定本地密鑰的組合的函數(shù)。該函數(shù)通常是用于防止敵方識別出受函數(shù)保護的原始文本的單向散列函數(shù)。
在框306中,利用該特定本地密鑰,服務(wù)器對客戶端的狀態(tài)信息和壽命值的組合進行加密。該壽命值指示服務(wù)器應(yīng)該將客戶端的狀態(tài)信息視為過期的未來時刻。該壽命值可以是一個絕對日期,也可以例如通過將一個常量值添加到服務(wù)器時鐘的的當前值來計算。加密和認證代碼的結(jié)果在這里一起被稱為經(jīng)加密的信息。
在框308中,服務(wù)器既向客戶端發(fā)送經(jīng)加密的信息和服務(wù)器的身份,還向客戶端發(fā)送與該特定本地密鑰相關(guān)的SPI。例如,客戶端可以是客戶端110A-N或客戶端112A-N之一??蛻舳舜鎯?jīng)加密的信息、服務(wù)器的身份以及SPI,并在服務(wù)器和經(jīng)加密的信息之間建立關(guān)聯(lián)和在經(jīng)加密的信息與對應(yīng)于特定服務(wù)器的SPI之間建立關(guān)聯(lián)。在客戶端存儲了該信息之后,服務(wù)器可以騰出曾以明文形式和以加密形式存儲客戶端的狀態(tài)信息的服務(wù)器的存儲器。
此后,當客戶端向服務(wù)器發(fā)送請求時,客戶端還發(fā)送與服務(wù)器相關(guān)的經(jīng)加密信息以及與服務(wù)器和經(jīng)加密信息兩者相關(guān)的SPI。在框310中,服務(wù)器從客戶端接收經(jīng)加密的信息、服務(wù)器的身份、SPI和請求。
在框312中,服務(wù)器利用與SPI相關(guān)的本地密鑰來核實客戶端提供的服務(wù)器的身份,提取出認證代碼,并對接收自客戶端的經(jīng)加密的信息進行解密。解密和認證代碼的結(jié)果在這里一起被稱為經(jīng)解密的信息。
經(jīng)解密的信息至少包含認證代碼、客戶端狀態(tài)信息和壽命值。在框314中,服務(wù)器利用服務(wù)器在框304中使用的相同函數(shù)來計算新的認證代碼。新的認證代碼是包含在經(jīng)解密的信息中的經(jīng)加密客戶端狀態(tài)信息、服務(wù)器的身份和特定本地密鑰的組合的函數(shù)。
在框316中,服務(wù)器確定新的認證代碼是否與包含在經(jīng)解密的信息中的認證代碼匹配。如果認證代碼匹配,則控制傳遞到框318。如果認證代碼不匹配,則控制傳遞到框324。以這種方式,服務(wù)器認證包含在經(jīng)解密的信息中的信息。
在框318中,通過將當前時間值與包含在經(jīng)解密的信息中的壽命值相比較,服務(wù)器判斷包含在經(jīng)解密的信息中的客戶端狀態(tài)信息是否已經(jīng)過期。如果當前時間值小于包含在經(jīng)解密的信息中的壽命值,則控制傳遞到框320。如果當前時間值不小于包含在經(jīng)解密的信息中的壽命值,則控制傳遞到框324。
在框320中,服務(wù)器基于包含在經(jīng)解密的信息中的授權(quán)特性來判斷在框310中接收到的請求是否已被授權(quán)。如果該請求已被授權(quán),則控制傳遞到框322。如果請求未被授權(quán),則控制傳遞到框324。
在框322,服務(wù)器滿足該請求。
可替換地,在框324中,服務(wù)器拒絕該請求。
在服務(wù)器已經(jīng)滿足或拒絕了請求之后,服務(wù)器可以騰出曾以明文形式和以加密形式存儲客戶端的狀態(tài)信息的服務(wù)器的存儲器。因此,服務(wù)器可以避免永久存儲客戶端狀態(tài)信息(包括授權(quán)特性),而是僅僅臨時、非連續(xù)地存儲客戶端狀態(tài)信息。
3.2更新存儲在客戶端上的經(jīng)加密的客戶端狀態(tài)信息在一個實施例中,客戶端110A-N和客戶端112A-N中的每一個被配置為遵守下述關(guān)于經(jīng)加密的客戶端狀態(tài)信息的規(guī)則。當客戶端從服務(wù)器接收到經(jīng)加密的客戶端狀態(tài)信息時,客戶端存儲經(jīng)加密的客戶端狀態(tài)信息。例如,客戶端可以在客戶端的隨機訪問存儲器(RAM)和/或客戶端硬盤驅(qū)動器上存儲值。
當客戶端從服務(wù)器接收到更新的經(jīng)加密的客戶端狀態(tài)信息時,客戶端存儲更新的經(jīng)加密的客戶端狀態(tài)信息??蛻舳丝梢杂米罱邮兆苑?wù)器的經(jīng)加密的客戶端狀態(tài)信息來替換先前存儲的與服務(wù)器相關(guān)的經(jīng)加密的客戶端狀態(tài)信息。該規(guī)則允許服務(wù)器改變客戶端的授權(quán)特性,刷新客戶端和服務(wù)器用于導(dǎo)出新的會話密鑰的私密密鑰,或者更新任意相關(guān)的客戶端狀態(tài)信息。
當客戶端從服務(wù)器接收到附加的經(jīng)加密的客戶端狀態(tài)信息時,客戶端將附加的經(jīng)加密的客戶端狀態(tài)信息附接到先前存儲的與服務(wù)器相關(guān)的經(jīng)加密的客戶端狀態(tài)信息。該規(guī)則允許服務(wù)器向客戶端的現(xiàn)有授權(quán)特性添加授權(quán)特性,而無需客戶端將先前存儲的經(jīng)加密的客戶端狀態(tài)信息發(fā)送到服務(wù)器。
在一個實施例中,服務(wù)器指示客戶端是應(yīng)該用新接收到的經(jīng)加密的客戶端狀態(tài)信息替換當前存儲的經(jīng)加密的客戶端狀態(tài)信息,還是應(yīng)該將新接收到的經(jīng)加密的客戶端狀態(tài)信息附接到當前存儲的經(jīng)加密的客戶端狀態(tài)信息。
圖4A和圖4B是示出用于替換存儲在客戶端上的經(jīng)加密的客戶端狀態(tài)信息的方法的一個實施例的流程圖400。在框402中,服務(wù)器利用本地密鑰對客戶端的狀態(tài)信息進行加密。例如,服務(wù)器可以是服務(wù)器104A-N或服務(wù)器106A-N之一。加密結(jié)果下面被稱為第一經(jīng)加密信息。
在框404中,服務(wù)器向客戶端發(fā)送第一經(jīng)加密信息。例如,客戶端可以是客戶端110A-N或客戶端112A-N之一。客戶端存儲第一經(jīng)加密信息并建立服務(wù)器和其自身之間的關(guān)聯(lián)。
客戶端向服務(wù)器發(fā)送第一請求和第一經(jīng)加密信息。在框406中,服務(wù)器從客戶端接收第一請求和第一經(jīng)加密信息。
在框408中,服務(wù)器利用本地密鑰對在框406中接收自客戶端的經(jīng)加密信息進行解密,并核實認證代碼。解密結(jié)果在下面被稱為第一經(jīng)解密信息。
在框410中,服務(wù)器基于包含在第一經(jīng)解密信息中的授權(quán)特性來確定第一請求是否已被授權(quán)。如果第一請求已被授權(quán),則控制傳遞到框412。如果第一請求未經(jīng)授權(quán),則控制傳遞到框414。
在框412中,服務(wù)器滿足第一請求。控制傳遞到框416。
可替換地,在框414中,服務(wù)器拒絕第一請求。服務(wù)器可以拒絕來自客戶端的所有后續(xù)請求。
在框416中,利用本地密鑰,服務(wù)器加密針對客戶端的更新的客戶端狀態(tài)信息。加密結(jié)果在下面被稱為第二經(jīng)加密信息。
在框418中,服務(wù)器向客戶端發(fā)送第二經(jīng)加密信息??蛻舳舜鎯Φ诙?jīng)加密信息,建立服務(wù)器和其自身之間的關(guān)聯(lián)并利用第二經(jīng)加密信息來更新其狀態(tài)??蛻舳藢Φ诙?jīng)加密信息的接收使第一經(jīng)加密信息變?yōu)闊o效??蛻舳丝梢杂玫诙?jīng)加密信息替換第一經(jīng)加密信息。
客戶端向服務(wù)器發(fā)送第二請求和第二經(jīng)加密信息。在框420中,服務(wù)器從客戶端接收第二請求和第二經(jīng)加密信息。
在框422中,服務(wù)器利用本地密鑰對在框420中接收自客戶端的經(jīng)加密的信息進行解密并核實認證代碼。解密結(jié)果在下面被稱為第二經(jīng)解密信息。
在框424中,服務(wù)器基于包含在第二經(jīng)解密信息中的授權(quán)特性來判斷第二請求是否已被授權(quán)。如果第二請求已被授權(quán),則控制傳遞到框426。如果第二請求未經(jīng)授權(quán),則控制傳遞到框428。
在框426中,服務(wù)器滿足第二請求。
可替換地,在框428中,服務(wù)器拒絕第二請求。服務(wù)器可以拒絕來自客戶端的所有后續(xù)請求。
圖5A和圖5B是示出用于修改存儲在客戶端上的經(jīng)加密的客戶端狀態(tài)信息的方法的一個實施例的流程圖500。在框502中,服務(wù)器利用本地密鑰加密客戶端的狀態(tài)信息。例如,服務(wù)器可以是服務(wù)器104A-N或服務(wù)器106A-N之一。加密結(jié)果下面被稱為第一經(jīng)加密信息。
在框504中,服務(wù)器向客戶端發(fā)送第一經(jīng)加密信息。例如,客戶端可以是客戶端110A-N或客戶端112A-N之一??蛻舳舜鎯Φ谝唤?jīng)加密信息并建立服務(wù)器和第一經(jīng)加密信息之間的關(guān)聯(lián)。
客戶端向服務(wù)器發(fā)送第一請求和第一經(jīng)加密信息。在框506中,服務(wù)器從客戶端接收第一請求和第一經(jīng)加密信息。
在框508中,服務(wù)器使用本地密鑰對在框506中接收自客戶端的經(jīng)加密的信息進行解密并核實認證代碼。解密的結(jié)果下面被稱為第一經(jīng)解密信息。
在框510中,服務(wù)器基于包含在第一經(jīng)解密信息中的授權(quán)特性判斷第一請求是否已被授權(quán)。如果第一請求已被授權(quán),則控制傳遞到框512。如果第一請求未經(jīng)授權(quán),控制則傳遞到框514。
在框512中,服務(wù)器滿足第一請求。控制傳遞到框516。
可替換地,在框514中,服務(wù)器拒絕第一請求。服務(wù)器可以拒絕來自客戶端的所有后續(xù)請求。
在框516中,服務(wù)器利用本地密鑰對針對客戶端的附加客戶端狀態(tài)信息進行加密。加密結(jié)果下面被稱為第二經(jīng)加密信息。
在框518中,服務(wù)器將第二經(jīng)加密信息發(fā)送到客戶端。客戶端存儲第二經(jīng)加密信息并建立服務(wù)器和其自身之間的關(guān)聯(lián),從而將第二加密信息與第一加密信息一起存儲??蛻舳藢Φ诙?jīng)加密信息的接收不會使第一經(jīng)加密信息無效??蛻舳瞬挥玫诙?jīng)加密信息替換第一經(jīng)加密信息。
客戶端向服務(wù)器發(fā)送第二請求、第一經(jīng)加密信息和第二經(jīng)加密信息。在框520中,服務(wù)器從客戶端接收第二請求、第一經(jīng)加密信息和第二經(jīng)加密信息。
在框522中,服務(wù)器利用本地密鑰對在框520中接收自客戶端的第一經(jīng)加密信息進行解密。解密結(jié)果下面被稱為第二經(jīng)解密信息。
在框524中,服務(wù)器利用本地密鑰對在框520中接收自客戶端的第二經(jīng)解密信息進行解密。解密結(jié)果下面被稱為第三經(jīng)解密信息。
在框526中,服務(wù)器基于第二和第三認證值中的有效認證代碼、包含在第二經(jīng)解密信息中的授權(quán)特性和包含在第三經(jīng)解密信息中的授權(quán)特性來判斷第二請求是否已被授權(quán)。如果第二請求已被授權(quán),控制傳遞到框528。如果第二請求未經(jīng)授權(quán),則控制傳遞到框530。
在框528中,服務(wù)器滿足第二請求。
可替換地,在框530中,服務(wù)器拒絕第二請求。服務(wù)器可以拒絕來自客戶端的所有后續(xù)請求。
利用上述方法,服務(wù)器可以將新的授權(quán)特性發(fā)布給客戶端或取消客戶端的現(xiàn)有授權(quán)特性。
以上參考流程圖500所述的方法可針對客戶端110A-N和客戶端112A-N中的多個客戶端被使用。多個客戶端中的每一個向給定服務(wù)器發(fā)送包含該客戶端的授權(quán)特性的經(jīng)加密的信息。每個客戶端的授權(quán)特性可能不同于其他客戶端的授權(quán)特性。
3.3消除相同客戶端狀態(tài)信息的冗余存儲在一個實施例中,多個服務(wù)器可以向一個客戶端提供認證和授權(quán)服務(wù)。如果每個服務(wù)器向客戶端發(fā)布單獨的經(jīng)加密狀態(tài)信息,客戶端則可能存儲多個相同客戶端狀態(tài)信息的拷貝;其中每個拷貝是在不同服務(wù)器的本地密鑰下被加密的。如果客戶端狀態(tài)信息很大,則這種冗余性會浪費客戶端的大量存儲資源。
為了避免相同客戶端狀態(tài)信息的這種冗余存儲,客戶端狀態(tài)信息可以利用通用服務(wù)器密鑰來加密,該通用服務(wù)器密鑰可被所有服務(wù)器訪問,但不能被任何客戶端訪問。每個服務(wù)器可以利用該服務(wù)器的本地密鑰來加密該通用服務(wù)器密鑰。當服務(wù)器向客戶端發(fā)送經(jīng)加密的客戶端狀態(tài)信息時,服務(wù)器還發(fā)送利用該服務(wù)器的本地密鑰加密了的通用服務(wù)器密鑰??蛻舳丝梢源鎯Χ鄠€經(jīng)加密的通用服務(wù)器密鑰(一個密鑰針對一個服務(wù)器),而僅存儲經(jīng)加密的客戶端狀態(tài)信息的一個拷貝。對于每個服務(wù)器,客戶端可以建立服務(wù)器、該服務(wù)器的經(jīng)加密的通用服務(wù)器密鑰、以及經(jīng)加密的客戶端狀態(tài)信息之間的關(guān)聯(lián)。因為每個經(jīng)加密的通用服務(wù)器密鑰大大小于經(jīng)加密的客戶端狀態(tài)信息,因此這種存儲方法保留了客戶端的存儲資源。
當客戶端向服務(wù)器發(fā)送請求時,客戶端還發(fā)送與該服務(wù)器相關(guān)聯(lián)的經(jīng)加密的通用服務(wù)器密鑰和與經(jīng)加密的通用服務(wù)器密鑰相關(guān)聯(lián)的經(jīng)加密的客戶端狀態(tài)信息。接收到經(jīng)加密的通用服務(wù)器密鑰的服務(wù)器可以對經(jīng)加密的通用服務(wù)器密鑰解密,以獲得經(jīng)解密的通用服務(wù)器密鑰。利用經(jīng)解密的通用服務(wù)器密鑰,服務(wù)器可以解密經(jīng)加密的客戶端狀態(tài)信息。
圖6是示出用于消除相同客戶端狀態(tài)信息的冗余存儲的方法的一個實施例的流程圖600。在框602中,客戶端存儲通過基于通用服務(wù)器密鑰對客戶端的狀態(tài)信息加密而生成的經(jīng)加密的客戶端狀態(tài)信息。例如,客戶端110A可以存儲服務(wù)器104A利用客戶端110A無法訪問的通用服務(wù)器密鑰加密后的經(jīng)加密的客戶端狀態(tài)信息。
在框604中,客戶端存儲第一服務(wù)器通過利用與該第一服務(wù)器相關(guān)聯(lián)的第一本地密鑰對通用服務(wù)器密鑰加密而生成的第一經(jīng)加密密鑰信息。繼續(xù)該示例,服務(wù)器104A可以利用服務(wù)器104A的本地密鑰對通用服務(wù)器密鑰加密以產(chǎn)生第一經(jīng)加密密鑰信息。服務(wù)器104A可以向客戶端110A發(fā)送第一經(jīng)加密密鑰信息??蛻舳?10A可以接收第一經(jīng)加密密鑰信息并存儲第一經(jīng)加密密鑰信息。
在框606中,客戶端建立第一服務(wù)器和第一經(jīng)加密密鑰信息之間的關(guān)聯(lián)。繼續(xù)該示例,客戶端110A可以建立第一經(jīng)加密密鑰信息和服務(wù)器104A之間的關(guān)聯(lián)。
在框608中,客戶端存儲第二服務(wù)器通過利用與第二服務(wù)器相關(guān)聯(lián)的第二本地密鑰加密通用服務(wù)器密鑰而生成的第二經(jīng)加密密鑰信息。繼續(xù)該示例,服務(wù)器104B可以利用服務(wù)器104B的本地密鑰對通用服務(wù)器密鑰加密,以產(chǎn)生第二經(jīng)加密密鑰信息。服務(wù)器104B可以向客戶端110A發(fā)送第二經(jīng)加密密鑰信息??蛻舳?10A可以接收第二經(jīng)加密密鑰信息并存儲第二經(jīng)加密密鑰信息。
在框610中,客戶端建立第二服務(wù)器和第二經(jīng)加密密鑰信息之間的關(guān)聯(lián)。繼續(xù)該示例,客戶端110A可以建立第二經(jīng)加密密鑰信息和服務(wù)器104B之間的關(guān)聯(lián)。
第一本地密鑰可能不同于第二本地密鑰。第一本地密鑰可能無法被除了第一服務(wù)器之外其他服務(wù)器所訪問。第二本地密鑰可能無法被除了第二服務(wù)器之外其他服務(wù)器所訪問。因此,在上述示例中,服務(wù)器104A可能無法解密第二經(jīng)加密密鑰信息,而服務(wù)器104B可能無法解密第一經(jīng)加密密鑰信息。
在框612中,客戶端向第一服務(wù)器發(fā)送經(jīng)加密的客戶端狀態(tài)信息和與第一服務(wù)器相關(guān)聯(lián)的經(jīng)加密密鑰信息。繼續(xù)該示例,客戶端110A可以向服務(wù)器104A發(fā)送經(jīng)加密的客戶端狀態(tài)信息和第一經(jīng)加密密鑰信息。利用服務(wù)器104A的本地密鑰,服務(wù)器104A可以對第一經(jīng)加密密鑰信息解密以獲得通用服務(wù)器密鑰。使用通用服務(wù)器密鑰,服務(wù)器104A可以對經(jīng)加密的客戶端狀態(tài)信息解密。
在框614中,客戶端向第二服務(wù)器發(fā)送經(jīng)加密的客戶端狀態(tài)信息和與第二服務(wù)器相關(guān)聯(lián)的經(jīng)加密密鑰信息。繼續(xù)該示例,客戶端110A可以向服務(wù)器104B發(fā)送經(jīng)加密的客戶端狀態(tài)信息和第二經(jīng)加密密鑰信息。利用服務(wù)器104B的本地密鑰,服務(wù)器104B可以解密第一經(jīng)加密密鑰信息以獲得通用服務(wù)器密鑰。利用通用服務(wù)器密鑰,服務(wù)器104B可以對經(jīng)加密的客戶端狀態(tài)信息解密。
結(jié)果,在上述示例中,客戶端110A可以僅存儲屬于客戶端110A的經(jīng)加密的客戶端狀態(tài)信息的一個拷貝。這節(jié)省了客戶端110A的存儲資源。
3.4避免在中間設(shè)備上存儲會話狀態(tài)信息上述方法可能適用于避免在中間設(shè)備上存儲會話狀態(tài)信息。一種這樣類型的中間設(shè)備被稱為“應(yīng)答器”。應(yīng)答器是一種響應(yīng)于第一設(shè)備對參與與第二設(shè)備之間的會話的請求的設(shè)備。
應(yīng)答器的一個示例是在題為“METHOD NAD APPARATUS FORSECURELY EXCHANGING CRYPTOGRAPHIC IDENTITIES THROUGHA MUTUALLY TRUSTED INTERMEDIARY”的共同未決美國申請No.10/411,964中描述的“引導(dǎo)者設(shè)備”。如該申請所述,引導(dǎo)者設(shè)備輔助“請求者設(shè)備”和“權(quán)力設(shè)備”之間密碼身份的安全交換,其中所述“請求者設(shè)備”和“權(quán)力設(shè)備”都已經(jīng)信任引導(dǎo)者設(shè)備。
如果應(yīng)答器被要求存儲會話狀態(tài)信息,應(yīng)答器則可能暴露于拒絕服務(wù)攻擊。為了避免在應(yīng)答器上存儲會話狀態(tài)信息,可以對會話狀態(tài)信息加密。應(yīng)答器可以將經(jīng)加密的會話狀態(tài)信息與第一和第二設(shè)備通過應(yīng)答器向彼此發(fā)送的其他信息一道轉(zhuǎn)發(fā)。第一和第二設(shè)備可以將經(jīng)加密的會話狀態(tài)信息與期望應(yīng)答器處理的其他信息一道發(fā)送到應(yīng)答器。第一和第二設(shè)備可以向應(yīng)答器返回第一和第二設(shè)備從應(yīng)答器接收的任意經(jīng)加密的會話狀態(tài)信息。因此,經(jīng)加密的會話狀態(tài)信息可以被稱為“回聲(echo)”。當應(yīng)答器接收到回聲時,應(yīng)答器可以檢查回聲上的保護。
回聲可以包括指示相關(guān)會話何時過期的壽命值。應(yīng)答器可以將該壽命值與應(yīng)答器時鐘的當前值相比較以判斷會話是否已經(jīng)過期。
當使用密碼協(xié)議時,應(yīng)答器可以發(fā)布隨機現(xiàn)時(nonce),然后存儲該現(xiàn)時以用于處理應(yīng)答器未來將接收到的消息。例如,應(yīng)答器可以在參與質(zhì)詢/響應(yīng)協(xié)議時發(fā)布隨機現(xiàn)時。為了避免在應(yīng)答器上存儲現(xiàn)時,現(xiàn)時可以被包括在回聲中。其他信息(例如標識符、網(wǎng)絡(luò)地址和用于選擇協(xié)議選項的數(shù)據(jù))也可被包括在回聲中。
3.5避免在服務(wù)器上存儲共享私密密鑰客戶端110A-N和客戶端112A-N中的每一個可能關(guān)聯(lián)到具有不同共享私密密鑰的服務(wù)器??蛻舳?10A-N和客戶端112A-N可以使用它們與服務(wù)器服務(wù)器104A-N和服務(wù)器106A-N共享的私密密鑰來相互導(dǎo)出會話密鑰,該會話密鑰可能被客戶端用于對客戶端發(fā)送到服務(wù)器104A-N和服務(wù)器106A-N以及從服務(wù)器104A-N和服務(wù)器106A-N接收的消息進行加密和解密。以這種方式,可以在客戶端和服務(wù)器之間建立安全的“隧道”。但是,為了讓服務(wù)器104A-N和服務(wù)器106A-N建立這些安全隧道,服務(wù)器104A-N和服務(wù)器106A-N還需要具有對共享私密密鑰的訪問權(quán)限以使服務(wù)器也能夠?qū)С鰰捗荑€。當存在很多客戶端時,存儲每個單獨的客戶端的不同的共享私密密鑰的操作所需要的存儲器量實際上沒有網(wǎng)絡(luò)元件可能擁有。
因此,根據(jù)一個實施例,當客戶端110A-N或客戶端112A-N中的任意一個發(fā)起與服務(wù)器104A-N或服務(wù)器106A-N中的任意一個的通信時,服務(wù)器指示客戶端將客戶端的經(jīng)加密的狀態(tài)信息發(fā)送到服務(wù)器。在響應(yīng)中,客戶端將該客戶端的經(jīng)加密狀態(tài)信息發(fā)送到服務(wù)器??蛻舳说慕?jīng)加密的狀態(tài)信息包含客戶端的共享私密密鑰。
服務(wù)器可以使用服務(wù)器的本地密鑰來解密客戶端的經(jīng)加密的狀態(tài)信息并核實認證代碼,從而獲得客戶端的共享私密密鑰。服務(wù)器可以從客戶端的共享私密密鑰導(dǎo)出一個或多個會話密鑰。利用這一個或多個會話密鑰,服務(wù)器可以對發(fā)送到客戶端和接收自客戶端的消息進行加密和解密。當服務(wù)器已經(jīng)完成與客戶端的通信時,服務(wù)器可以騰出服務(wù)器曾用于存儲客戶端的共享私密密鑰和任意相應(yīng)會話密鑰的存儲器以用于其它目的。因此,不要求服務(wù)器同時存儲具有訪問專用網(wǎng)絡(luò)102的權(quán)限的所有客戶端的不同的共享私密密鑰。
圖7A和圖7B是示出用于避免在服務(wù)器上存儲共享私密密鑰的方法的一個實施例的流程圖700。在一個實施例中,服務(wù)器104A-N和服務(wù)器106A-N中的每一個存儲不同的本地密鑰集合。服務(wù)器可以使用服務(wù)器的本地密鑰集合中的任意本地密鑰對客戶端狀態(tài)信息加密。通過在不同時刻利用不同的本地密鑰,安全性被提高。每個本地密鑰與不同的SPI相關(guān)聯(lián)。在框702中,服務(wù)器從服務(wù)器的本地密鑰集合中選出一個特定的本地密鑰。例如,服務(wù)器可以是服務(wù)器104A-N或服務(wù)器106A-N之一。
在框704中,服務(wù)器基于服務(wù)器的身份、客戶端的經(jīng)加密的狀態(tài)信息和該特定本地密鑰來計算認證代碼??蛻舳说臓顟B(tài)信息包括客戶端的共享私密密鑰??蛻舳说臓顟B(tài)信息還指示客戶端的唯一身份。認證代碼是服務(wù)器的身份、客戶端的經(jīng)加密狀態(tài)信息和該特定本地密鑰的組合的函數(shù)。該函數(shù)可被實現(xiàn)為用于防止敵方識別出受函數(shù)保護的原始文本的單向散列函數(shù)。
在框706中,利用該特定本地密鑰,服務(wù)器對客戶端的狀態(tài)信息和壽命值的組合加密。該壽命值指示服務(wù)器應(yīng)該將客戶端的狀態(tài)信息視為過期的未來時刻。該壽命值可以是一個絕對時間,也可以例如通過將一個恒定值添加到服務(wù)器時鐘的的當前值來計算。認證代碼和加密的結(jié)果在這里一起被稱為經(jīng)加密的信息。
在框708中,服務(wù)器既向客戶端發(fā)送經(jīng)加密的信息和服務(wù)器的身份,還向客戶端發(fā)送與該特定本地密鑰相關(guān)的SPI。例如,客戶端可以是客戶端110A-N或客戶端112A-N之一。客戶端存儲經(jīng)加密的信息和針對所指定的服務(wù)器的SPI,并利用經(jīng)加密的信息在其自身和服務(wù)器之間建立關(guān)聯(lián)。在客戶端存儲了該信息之后,服務(wù)器可以騰出服務(wù)器曾以明文形式和以加密形式存儲客戶端的狀態(tài)信息的存儲器。
當客戶端發(fā)起與服務(wù)器的通信時,服務(wù)器可以指示客戶端向服務(wù)器發(fā)送經(jīng)加密的信息。在響應(yīng)中,客戶端可以將經(jīng)加密的信息和相關(guān)的SPI兩者發(fā)送到服務(wù)器。在框710中,服務(wù)器從客戶端接收經(jīng)加密的信息和SPI。
在框712中,利用與SPI相關(guān)聯(lián)的本地密鑰,服務(wù)器對接收自客戶端的經(jīng)加密的信息進行解密并核實認證代碼。解密結(jié)果在這里被稱為經(jīng)解密的信息。
經(jīng)解密的信息至少包含認證代碼、客戶端狀態(tài)信息和壽命值。在框714中,服務(wù)器利用與服務(wù)器在框704中使用的函數(shù)相同的函數(shù)來計算新的認證代碼。新的認證代碼是特定本地密鑰和包含在經(jīng)解密的信息中的客戶端經(jīng)加密狀態(tài)信息的組合的函數(shù)。
在框716中,服務(wù)器判斷新的認證代碼是否與包含在經(jīng)解密的信息中的認證代碼匹配。如果認證代碼匹配,則控制傳遞到框718。如果認證代碼不匹配,則控制傳遞到框720。以這種方式,服務(wù)器認證包含在經(jīng)解密的信息中的信息。
在框718中,通過將當前時間值與包含在經(jīng)解密的信息中的壽命值相比較,服務(wù)器判斷包含在經(jīng)解密的信息中的客戶端狀態(tài)信息是否已經(jīng)過期。如果當前時間值小于包含在經(jīng)解密的信息中的壽命值,則控制傳遞到框722。如果當前時間值不小于包含在經(jīng)解密的信息中的壽命值,則控制傳遞到框724。
在框720中,服務(wù)器拒絕接收自客戶端的經(jīng)加密的信息。服務(wù)器可以拒絕從客戶端發(fā)送的所有后續(xù)數(shù)據(jù)。
客戶端可以從共享的私密密鑰導(dǎo)出一個或多個會話密鑰。利用這樣的會話密鑰,客戶端可以對消息加密并將經(jīng)加密的消息發(fā)送到服務(wù)器。在框722中,服務(wù)器從客戶端接收已經(jīng)利用從共享私密密鑰導(dǎo)出的密鑰被加密的消息。
包含在經(jīng)解密的信息中的客戶端狀態(tài)信息包括共享私密密鑰。在框724中,服務(wù)器從共享私密密鑰導(dǎo)出一個或多個會話密鑰。
在框726中,利用這樣的會話密鑰,服務(wù)器對從客戶端發(fā)送的經(jīng)加密的消息解密。利用從共享私密密鑰導(dǎo)出的會話密鑰,服務(wù)器可以加密另一消息并將經(jīng)加密的消息發(fā)回客戶端。因此,利用從共享私密密鑰導(dǎo)出的會話密鑰,客戶端和服務(wù)器可以對它們彼此傳輸?shù)南⑦M行加密和解密,從而建立安全的“隧道”。
在客戶端和服務(wù)器完成通信之后,服務(wù)器可以騰出服務(wù)器曾以明文形式和加密形式存儲客戶端的狀態(tài)信息的存儲器。因此,服務(wù)器可以避免永久存儲客戶端狀態(tài)信息(包括共享私密密鑰),而是僅僅臨時、非連續(xù)地存儲客戶端狀態(tài)信息。
以上參考流程圖700所描述的方法對于客戶端110A-N和客戶端112A-N中的多個客戶端也可使用。多個客戶端中的每一個可以向給定服務(wù)器發(fā)送包含針對該客戶端的共享私密密鑰的經(jīng)加密信息。每個客戶端的共享私密密鑰不同于其他客戶端的共享私密密鑰。
3.6在多個服務(wù)器間共享客戶端狀態(tài)信息如上所述,無線客戶端(例如客戶端112A)可以從一個位置漫游到另一位置。當無線客戶端離開一個位置而進入另一位置時,無線客戶端可能試圖通過不同服務(wù)器訪問同一專用網(wǎng)絡(luò)。例如,在一個位置,客戶端112A可能通過服務(wù)器106A訪問專用網(wǎng)絡(luò)102。如果服務(wù)器106A具有客戶端112A的共享私密密鑰,服務(wù)器106A則可以通過安全隧道與客戶端112A通信。但是,如果客戶端112A移動到服務(wù)器106B服務(wù)而非服務(wù)器106A服務(wù)的區(qū)域,客戶端112A則可能試圖通過服務(wù)器106B而非服務(wù)器106A來訪問專用網(wǎng)絡(luò)102。在現(xiàn)有方法下,服務(wù)器106B可能不具有客戶端112A的共享私密密鑰。在此情況下,服務(wù)器106B將無法通過安全隧道與客戶端112A通信。
幸運的是,根據(jù)一個實施例,多個服務(wù)器可以存儲同樣的本地密鑰。當一組服務(wù)器具有對同樣本地密鑰的訪問權(quán)限時,如果客戶端的狀態(tài)信息是利用本地密鑰來加密的,則該組中的每個服務(wù)器可以對包含客戶端狀態(tài)信息(包括客戶端的共享私密密鑰)的經(jīng)加密的信息進行解密。
例如,根據(jù)一個實施例,所有服務(wù)器106A-N可能存儲相同的一個或一組本地密鑰。服務(wù)器106A可以利用這樣的本地密鑰對客戶端112A的客戶端狀態(tài)信息加密,然后將經(jīng)加密的客戶端狀態(tài)信息發(fā)送到客戶端112A??蛻舳?12A可以存儲經(jīng)加密的客戶端狀態(tài)信息。當客戶端112A需要與服務(wù)器106A-N中的任意一個通信時,客戶端112A可以將同樣的經(jīng)加密的客戶端狀態(tài)信息發(fā)送到該服務(wù)器。由于所有服務(wù)器服務(wù)器106A-N都具有對被用于加密經(jīng)加密的客戶端狀態(tài)信息的本地密鑰的訪問權(quán)限,因此服務(wù)器106A-N中的任意一個可以利用本地密鑰對接收到的經(jīng)加密的客戶端狀態(tài)信息進行解密。因此,服務(wù)器106A-N中的任意一個可以獲得客戶端112A的共享的私密密鑰并建立與客戶端112A之間的安全隧道。
當新的服務(wù)器被添加到服務(wù)器106A-N時,新服務(wù)器此時不需要被提供以系統(tǒng)100中的所有客戶端的共享私密密鑰。相反,新服務(wù)器可被提供以本地密鑰或本地密鑰的集合。此后,新服務(wù)器可以按照需要從發(fā)起與新服務(wù)器之間的通信的客戶端獲得經(jīng)加密的客戶端狀態(tài)信息。因為每個客戶端存儲其自己的經(jīng)加密的客戶端狀態(tài)信息,因此在客戶端和服務(wù)器已經(jīng)完成彼此之間的通信之后,沒有服務(wù)器需要繼續(xù)存儲任意客戶端的狀態(tài)信息。
圖8是示出用于在多個服務(wù)器間共享經(jīng)加密的客戶端狀態(tài)信息的方法的一個實施例的流程圖800。在框802中,客戶端存儲通過利用本地密鑰對包括共享私密密鑰的客戶端狀態(tài)信息進行加密而生成的經(jīng)加密的客戶端狀態(tài)信息。例如,客戶端112A可以存儲利用本地密鑰加密的經(jīng)加密的客戶端狀態(tài)信息,該本地密鑰可被服務(wù)器106A-N中的每一個訪問,而不能被客戶端112A訪問。經(jīng)加密的客戶端狀態(tài)信息可以包括客戶端112A的共享私密密鑰。
在框804中,客戶端將經(jīng)加密的客戶端狀態(tài)信息發(fā)送到存儲本地密鑰的第一服務(wù)器。繼續(xù)該示例,客戶端112A可以將經(jīng)加密的客戶端狀態(tài)信息發(fā)送到服務(wù)器106A。服務(wù)器106A可以利用本地密鑰對經(jīng)加密的客戶端狀態(tài)信息解密并從包含在客戶端狀態(tài)信息中的共享私密密鑰導(dǎo)出一個或多個會話密鑰。服務(wù)器106A可以利用這樣的會話密鑰對消息加密并將經(jīng)加密的消息發(fā)送到客戶端112A??蛻舳?12A可以接收來自服務(wù)器106A的經(jīng)加密的消息。客戶端112A可以從同一共享私密密鑰導(dǎo)出同樣的會話密鑰并對經(jīng)加密的消息解密。
在框806中,客戶端將經(jīng)加密的客戶端狀態(tài)信息發(fā)送到存儲本地密鑰的第二服務(wù)器。繼續(xù)該示例,客戶端112A可以將經(jīng)加密的客戶端狀態(tài)信息發(fā)送到服務(wù)器106B。服務(wù)器106B可以利用本地密鑰對經(jīng)加密的客戶端狀態(tài)信息解密,并從包含在客戶端狀態(tài)信息中的共享私密密鑰導(dǎo)出一個或多個會話密鑰。服務(wù)器106B可以利用這樣的會話密鑰對消息加密并發(fā)送經(jīng)加密的消息到客戶端112A。客戶端112A可以接收來自服務(wù)器106B的經(jīng)加密消息。客戶端112A可以從同一共享私密密鑰導(dǎo)出相同的會話密鑰并對經(jīng)加密的消息解密。
因此,在上述示例中,所有服務(wù)器106A-N可以建立與客戶端112A之間的安全通信隧道。上述示例可應(yīng)用到任意客戶端112A-N。
3.7利用傳輸層安全性(TLS)協(xié)議擴展來避免客戶端狀態(tài)信息的服務(wù)器存儲。
傳輸安全性層(TLS)協(xié)議在因特網(wǎng)工程任務(wù)組(IETF)請求注釋(RFC)2245中有所描述。對TLS協(xié)議的擴展在IETF RFC 3546中被描述。如上所述,TLS協(xié)議擴展可被用于避免在服務(wù)器上存儲客戶端狀態(tài)信息。另外,下述方法消除了對公共密鑰認證機制的需求。根據(jù)一個實施例,TLS協(xié)議可被用于以密碼方式保護客戶端和多個服務(wù)器之間的可擴展的認證協(xié)議(EAP)連接。EAP在IETF RFC 2284中被描述。
3.7.1EAP-FAST概況根據(jù)一個實施例,提供了一種可擴展構(gòu)架以允許客戶端和服務(wù)器彼此安全地通信。該可擴展構(gòu)架這里被稱為“EAP-FAST”。EAP-FAST通過使用共享私密密鑰建立安全隧道來實現(xiàn)相互認證。隧道可被用于保護相對較弱的認證技術(shù)(例如基于密碼的那些認證技術(shù))。共享私密密鑰可被稱為“受保護訪問憑證”密鑰(PAC密鑰)。PAC密鑰可被用于相互認證建立了安全隧道的客戶端和服務(wù)器。
EAP-FAST包含三個階段預(yù)備階段、隧道建立階段和認證階段。下面描述每個階段。
在預(yù)備階段中,服務(wù)器利用客戶端無法訪問的本地密鑰對PAC密鑰加密。所產(chǎn)生的經(jīng)加密的信息被稱為“PAC模糊體”,這是因為缺乏本地密鑰的客戶端無法解密該經(jīng)加密的信息。PAC密鑰和PAC模糊體兩者都包括在PAC中。PAC可以包括附加信息,例如生成PAC模糊體和SPI的服務(wù)器的身份。SPI可以指示使用哪個本地密鑰和哪種加密算法來生成PAC模糊體。
客戶端和服務(wù)器共同參與經(jīng)認證的密鑰協(xié)定,以便建立受保護隧道。例如,經(jīng)認證的密鑰協(xié)定可以遵循Diffie-Hellman密鑰協(xié)定協(xié)議。Diffie-Hellman密鑰協(xié)定協(xié)議在W.Diffie和M.E.Hellman在IEEE Transactions OnInformation Theory,vol.22,第644-654頁中發(fā)表的文章“New DirectionsIn Cryptography”中有所描述。客戶端向服務(wù)器認證其自身。在客戶端已經(jīng)向服務(wù)器認證其自身之后,服務(wù)器通過作為經(jīng)認證的密鑰協(xié)定的結(jié)果建立的受保護隧道向客戶端發(fā)送客戶端的PAC。
在替換實施例中,PAC可使用其他“帶外”機制而被提供給客戶端。例如,用戶可以從服務(wù)器或信息技術(shù)(IT)管理員直接獲得PAC并將PAC存儲在客戶端上。
在隧道建立階段中,客戶端和服務(wù)器利用PAC來彼此認證??蛻舳讼蚍?wù)器發(fā)送PAC模糊體。利用本地密鑰,服務(wù)器對PAC模糊體解密以獲得客戶端的PAC密鑰。利用該PAC密鑰,客戶端和服務(wù)器建立隧道密鑰??蛻舳撕头?wù)器使用隧道密鑰來以密碼方式保護在客戶端和服務(wù)器之間發(fā)送的消息。受隧道密鑰保護的消息可被稱為位于隧道會話內(nèi)。
在認證階段期間,客戶端和服務(wù)器參與隧道會話內(nèi)的認證協(xié)議。認證協(xié)議還可以建立其他密鑰材料,該密鑰材料被以密碼方式綁定到隧道會話密鑰以確保會話完整性。在認證協(xié)議期間,客戶端和服務(wù)器可以相互導(dǎo)出一個或多個會話密鑰??蛻舳撕头?wù)器可以使用這些會話密鑰將認證協(xié)議會話綁定到隧道建立會話以確保會話完整性。
在EAP-FAST中,信息以分組形式傳輸,這里被稱為“EAP-FAST分組”。EAP-FAST分組被封裝在EAP分組內(nèi),EAP分組通過諸如遠程認證撥入用戶服務(wù)(RADIUS)協(xié)議和直徑(Diameter)協(xié)議之類的運載協(xié)議來運載。EAP-FAST分組封裝TLS分組。TLS分組封裝認證信息。因此,EAP-FAST消息使用分層模型,其中每一層封裝其下面那一層。
TLS分組包含EAP-Type-Length-Value(TLV)對象。EAP-TLV對象在客戶端和服務(wù)器之間運載參數(shù)。
3.7.2隧道建立階段在一個實施例中,在隧道建立階段,服務(wù)器和客戶端協(xié)商EAP參數(shù)。服務(wù)器可以向客戶端發(fā)送EAP請求/身份分組,而客戶端可以以EAP響應(yīng)/身份分組作出響應(yīng)。EAP響應(yīng)/身份分組包含客戶端的相關(guān)用戶名??蛻舳丝梢允褂媚涿脩裘麃肀Wo客戶端的身份。
在服務(wù)器接收到客戶端的身份并確定EAP-FAST認證將會發(fā)生之后,EAP服務(wù)器向客戶端發(fā)送EAP-FAST/開始分組。EAP-FAST/開始分組是一種EAP請求分組,其中的EAP類型被設(shè)置為“EAP-FAST”而“開始”位被置位。EAP-FAST/開始分組還包括向客戶端標識服務(wù)器的服務(wù)器身份??蛻舳私邮誆AP-FAST/開始分組并在響應(yīng)中發(fā)送EAP響應(yīng)分組到服務(wù)器。EAP響應(yīng)分組的EAP類型被設(shè)置為“EAP-FAST”。
EAP響應(yīng)分組的數(shù)據(jù)字段包含經(jīng)EAP-FAST封裝的TLS ClientHello握手消息。在該消息的擴展數(shù)據(jù)字段中,ClientHello消息包含客戶端的PAC模糊體。ClientHello消息還包含客戶端的隨機現(xiàn)時。在一個實施例中,客戶端可以緩存客戶端與之通信的每個不同服務(wù)器的不同PAC模糊體。每個PAC模糊體可能與不同的服務(wù)器身份相關(guān)聯(lián)。從多個PAC模糊體中,客戶端可以選出與包含在EAP-FAST/開始分組中的服務(wù)器身份相關(guān)聯(lián)的PAC模糊體,并在ClientHello消息的擴展數(shù)據(jù)字段中將該PAC模糊體發(fā)送到服務(wù)器。
服務(wù)器接收封裝了TLS ClientHello握手消息的EAP-FAST分組。服務(wù)器從ClientHello消息的擴展數(shù)據(jù)字段中獲得PAC模糊體。服務(wù)器利用被用于加密PAC模糊體的本地密鑰對PAC模糊體解密。服務(wù)器從客戶端的隨機現(xiàn)時、服務(wù)器的隨機現(xiàn)時和包含在PAC模糊體中的共享私密密鑰導(dǎo)出隧道密鑰。服務(wù)器使用隧道密鑰來計算嵌入在TLS完成消息中的消息摘要。
響應(yīng)于從客戶端接收到EAP-FAST分組,服務(wù)器向客戶端發(fā)送EAP類型被設(shè)置為“EAP-FAST”的EAP請求分組。EAP請求分組的數(shù)據(jù)字段至少封裝了TLS ServerHello消息和TLS完成消息。ServerHello消息包含被用于導(dǎo)出隧道密鑰的服務(wù)器的隨機現(xiàn)時。TLS完成消息包含已根據(jù)所協(xié)商的算法、密鑰和私密被保護的消息。
客戶端接收包含TLS ServerHello消息的EAP請求分組。客戶端從包含在ServerHello消息中的服務(wù)器的隨機現(xiàn)時、客戶端的隨機現(xiàn)時和共享私密密鑰(即PAC密鑰)導(dǎo)出隧道密鑰。客戶端生成其消息摘要并將其嵌入TLS完成消息中??蛻舳艘訲LS完成消息響應(yīng)于服務(wù)器。
此后,在認證階段期間,客戶端和服務(wù)器可以利用隧道會話密鑰對消息加密和解密。
圖9是示出客戶端可以用以向服務(wù)器傳送客戶端的PAC模糊體的方法的一個實施例的流程圖900。在框902中,服務(wù)器利用客戶端無法訪問的本地密鑰對客戶端的狀態(tài)信息進行加密,從而生成PAC模糊體。客戶端的狀態(tài)信息(例如PAC模糊體)包括共享的私密密鑰。
PAC模糊體可以通過多種機制中的任意機制被存儲在客戶端上。在發(fā)起與服務(wù)器之間的通信的情況下,客戶端向服務(wù)器發(fā)送PAC模糊體。PAC模糊體被包含在TLS握手協(xié)議擴展ClientHello消息的擴展數(shù)據(jù)字段中。在框904中,服務(wù)器從客戶端接收在擴展的ClientHello消息的擴展數(shù)據(jù)字段中包含PAC模糊體的TLS握手協(xié)議擴展ClientHello消息。
在框906中,利用本地密鑰,服務(wù)器對接收自客戶端的PAC模糊體解密,從而獲得共享的私密密鑰??蛻舳撕头?wù)器可以從共享的私密密鑰導(dǎo)出一個或多個密鑰??蛻舳撕头?wù)器可以利用這樣導(dǎo)出的密鑰對消息加密和解密。因此,利用對TLS握手協(xié)議的擴展,服務(wù)器可以接收客戶端的狀態(tài)信息并基于客戶端的狀態(tài)信息建立與客戶端之間的安全通信信道。由于客戶端存儲了客戶端的狀態(tài)信息,因此服務(wù)器無需永久而連續(xù)地存儲客戶端的狀態(tài)信息。因為客戶端的狀態(tài)信息利用客戶端無法訪問的本地密鑰被加密,因此客戶端無法修改客戶端的狀態(tài)信息。客戶端的狀態(tài)信息像客戶端的狀態(tài)信息被存儲在服務(wù)器上而非客戶端上時一樣安全。
4.0實現(xiàn)機制——硬件概況圖10是示出可以在其上實現(xiàn)本發(fā)明的實施例的計算機系統(tǒng)1000的框圖。該優(yōu)選實施例是利用運行在計算機或諸如提供認證、授權(quán)和計費(AAA)服務(wù)的路由器設(shè)備之類的網(wǎng)絡(luò)元件上的一個或多個計算機程序來實現(xiàn)的。因此,在該實施例中,計算機系統(tǒng)1000是路由器。
計算機系統(tǒng)1000包括總線1002或其它用于傳輸信息的機制,以及與總線1002耦合的用于處理信息的處理器1004。計算機系統(tǒng)1000還包括耦合到總線1002的用于存儲信息或?qū)⒂商幚砥?004執(zhí)行的指令的隨機訪問存儲器(RAM)、閃存或其它動態(tài)存儲設(shè)備。主存儲器1006還可被用于在執(zhí)行將被處理器1004執(zhí)行的指令期間存儲臨時變量或其它中間信息。計算機系統(tǒng)1000還包括耦合到總線1002的用于存儲用于處理器1004的指令和靜態(tài)信息的只讀存儲器(ROM)1008或其他靜態(tài)存儲設(shè)備。存儲設(shè)備1010(例如磁盤、閃存或光盤)被提供并耦合到總線1002,以用于存儲信息和指令。
通信接口1018可被耦合到總線1002以用于向處理器1004傳送信息和命令選擇。接口1018是諸如RS-232或RS-422接口之類的傳統(tǒng)串行接口。外部終端1012或其他計算機系統(tǒng)連接到計算機系統(tǒng)1000并利用接口1014向其提供命令。運行在計算機系統(tǒng)1000中的固件或軟件提供終端接口或基于字符的命令接口,以使外部命令能夠被賦予計算機系統(tǒng)。
交換系統(tǒng)1016被耦合到總線1002并具有到一個或多個外部網(wǎng)絡(luò)元件的輸入接口1014和輸出接口1019。外部網(wǎng)絡(luò)元件可以包括耦合到一個或多個主機1024的本地網(wǎng)絡(luò)1022或具有一個或多個服務(wù)器1030的諸如因特網(wǎng)之類的全球網(wǎng)絡(luò)1028。交換系統(tǒng)1016根據(jù)公知的預(yù)定協(xié)議和規(guī)范將到達輸入接口1014的信息流量交換到輸出接口1019。例如,交換系統(tǒng)1016可以與處理器1004協(xié)作確定到達輸入接口1014的數(shù)據(jù)分組的目的地并利用輸出接口1019將其發(fā)送到正確的目的地。目的地可以包括主機1024、服務(wù)器1030、其他最終臺站或在本地網(wǎng)絡(luò)1022或因特網(wǎng)1028上的其他路由和交換設(shè)備。
本發(fā)明涉及用于避免在計算機系統(tǒng)1000上存儲客戶端狀態(tài)的計算機系統(tǒng)1000的使用。根據(jù)本發(fā)明的一個實施例,計算機系統(tǒng)1000響應(yīng)于處理器1004執(zhí)行包含在主存儲器1006中的一個或多個指令的一個或多個序列來提供這樣的更新。這樣的指令可以從諸如存儲設(shè)備1010之類的另一計算機可讀介質(zhì)讀取到主存儲器1006中。包含在主存儲器1006中的指令序列的執(zhí)行致使處理器1004執(zhí)行這里所描述的過程步驟。在多處理布置中的一個或多個處理器也可被采用以執(zhí)行包含在主存儲器1006中的指令序列。在替換實施例中,硬連線的電路可被用于取代軟件指令或與軟件指令相結(jié)合來實現(xiàn)本發(fā)明。因此,本發(fā)明的實施例并不局限于硬件電路和軟件的任意特定組合。
這里使用的術(shù)語“計算機可讀介質(zhì)”指的是參與向處理器1004提供指令以用于執(zhí)行的操作的任何機制。這樣的介質(zhì)可以采取很多形式,包括但不局限于,非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)例如包括諸如存儲設(shè)備1010之類的光盤或磁盤。易失性介質(zhì)包括動態(tài)存儲器,例如主存儲器1006。傳輸介質(zhì)包括同軸電纜、銅電線和光纖,其中包括包含總線1002的電線。傳輸介質(zhì)還可以采取聲波或光波的形式,例如在無線電波和紅外數(shù)據(jù)通信期間生成的那些。
計算機可讀介質(zhì)的常見形式例如包括軟盤、柔性盤、硬盤、磁帶或任意其他磁介質(zhì)、CD-ROM、任意其他光介質(zhì)、打孔卡、紙帶、具有孔形圖案的任意其他物理介質(zhì)、RAM、PROM和EPROM、FIASH-EPROM、任意其他存儲器芯片或卡帶、下面將描述的載波或任意其他計算機可以從其讀取的介質(zhì)。
在向處理器1004運載用于執(zhí)行的一個或多個指令的一個或多個序列時,可以涉及各種形式的計算機可讀介質(zhì)。例如,指令可能最初在遠程計算機的磁盤上承載。遠程計算機可以將指令加載到其動態(tài)存儲器中并利用調(diào)制解調(diào)器通過電話線來發(fā)送指令。位于計算機系統(tǒng)1000本地的調(diào)制解調(diào)器可以接收電話線上的數(shù)據(jù)并使用紅外發(fā)射器將數(shù)據(jù)轉(zhuǎn)換成紅外信號。耦合到總線1002的紅外檢測器可以接收紅外信號中運載的數(shù)據(jù)并將數(shù)據(jù)放置在總線1002上??偩€1002將數(shù)據(jù)運載到主存儲器1006中,處理器1004從主存儲器1006獲取并執(zhí)行指令。由主存儲器1006接收到的指令可以可選地在由處理器1004執(zhí)行前或執(zhí)行后被存儲在存儲設(shè)備1010上。
通信接口1018還提供耦合到連接到本地網(wǎng)絡(luò)1022的網(wǎng)絡(luò)鏈路1020的雙向數(shù)據(jù)通信。例如,通信接口1018可以是綜合業(yè)務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)或調(diào)制解調(diào)器,以向相應(yīng)類型的電話線提供數(shù)據(jù)通信連接。作為另一示例,通信接口1018可以是局域網(wǎng)(LAN)卡,用于提供到可兼容的LAN的數(shù)據(jù)通信連接。無線鏈路也可以被實現(xiàn)。在任意這樣的實現(xiàn)方式中,通信接口1018發(fā)送和接收運載代表各種類型信息的數(shù)字數(shù)據(jù)流的電、電磁或光信號。
網(wǎng)絡(luò)鏈路1020通常通過一個或多個網(wǎng)絡(luò)提供到其它數(shù)據(jù)設(shè)備的數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路1020可以提供通過本地網(wǎng)絡(luò)1022到主機計算機1024或由因特網(wǎng)服務(wù)提供商(ISP)1026操作的數(shù)據(jù)裝備的連接。ISP1026又通過現(xiàn)在一般稱為“因特網(wǎng)”1028的世界范圍的分組數(shù)據(jù)通信網(wǎng)絡(luò)來提供數(shù)據(jù)通信服務(wù)。本地網(wǎng)絡(luò)1022和因特網(wǎng)1028都是用運載數(shù)字數(shù)據(jù)流的電、磁和光信號。通過各種網(wǎng)絡(luò)的信號和網(wǎng)絡(luò)鏈路1020上的信號和通過通信接口1018的信號運載去往或來自計算機系統(tǒng)1000的數(shù)字數(shù)據(jù),這些信號都是傳輸信息的載波的示例性形式。
計算機系統(tǒng)1000可以通過網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路1020和通信接口1080來發(fā)送消息和接收數(shù)據(jù),包括程序代碼。在因特網(wǎng)示例中,服務(wù)器1030可能通過因特網(wǎng)1028、ISP 1026、本地網(wǎng)絡(luò)1022和通信接口1018來發(fā)送針對應(yīng)用程序所請求的代碼。如這里所述,根據(jù)本發(fā)明,一種這樣下載的應(yīng)用用于避免在服務(wù)器上存儲客戶端狀態(tài)。
處理器1004可以執(zhí)行它接收到的和/或存儲在存儲設(shè)備1010或其他非易失性存儲設(shè)備以待隨后執(zhí)行的接收到的代碼。以這種方式,計算機系統(tǒng)1000可以以載波形式獲得應(yīng)用代碼。
5.0擴展和替換在之前的說明書中,已經(jīng)參考本發(fā)明的特定實施例描述了本發(fā)明。但是,將會發(fā)現(xiàn),在不脫離本發(fā)明更寬精神和范圍的情況下,可以對其執(zhí)行各種修改和改變。因此,說明書和附圖將被看作示例性的,而非限制性的。
權(quán)利要求
1.一種用于避免在服務(wù)器上存儲客戶端狀態(tài)的方法,該方法包括計算機實現(xiàn)的以下步驟基于第一客戶端不知道的第一本地密鑰對第一客戶端狀態(tài)信息加密以產(chǎn)生第一經(jīng)加密信息,其中所述第一客戶端狀態(tài)信息包括第一共享私密密鑰;在第一時間從所述第一客戶端接收所述第一經(jīng)加密信息;基于所述第一本地密鑰來核實隨所述第一經(jīng)加密信息接收到的認證代碼并對接收自所述第一客戶端的所述第一經(jīng)加密信息進行解密,從而產(chǎn)生第一經(jīng)解密信息;接收已基于從所述第一共享私密密鑰導(dǎo)出的第一導(dǎo)出密鑰加密后的第一消息;從包括在所述第一經(jīng)解密信息中的共享私密密鑰導(dǎo)出第二導(dǎo)出密鑰;以及基于所述第二導(dǎo)出密鑰來進一步保護隨之發(fā)生在所述第一客戶端和所述服務(wù)器之間的會話。
2.如權(quán)利要求1所述的方法,還包括以下步驟在所述第一時間前從服務(wù)器存儲器中移除所述第一客戶端狀態(tài)信息;以及在所述第一時間前從服務(wù)器存儲器中移除所述第一經(jīng)加密信息。
3.如權(quán)利要求1所述的方法,還包括以下步驟在將所述第一經(jīng)加密信息發(fā)送到所述第一客戶端之前,基于所述第一本地密鑰、服務(wù)器的身份和經(jīng)加密的客戶端狀態(tài)信息來計算第一認證代碼;以及在將所述第一經(jīng)加密信息發(fā)送到所述第一客戶端之前,加密所述第一客戶端狀態(tài)信息并將所述認證代碼與所述第一客戶端狀態(tài)信息的加密結(jié)果包括在一起以產(chǎn)生所述第一經(jīng)加密信息。
4.如權(quán)利要求3所述的方法,還包括以下步驟在對接收自所述第一客戶端的所述第一經(jīng)加密信息進行解密之后,基于所述第一本地密鑰和包括在所述第一經(jīng)解密信息中的經(jīng)加密的客戶端狀態(tài)信息來計算第二認證代碼;以及判斷所述第二認證代碼是否與包括在所述第一經(jīng)解密信息中的認證代碼相匹配。
5.如權(quán)利要求4所述的方法,其中所述第一客戶端狀態(tài)信息包括唯一地標識所述第一客戶端的值。
6.如權(quán)利要求1所述的方法,還包括以下步驟在將所述第一經(jīng)加密信息發(fā)送到所述第一客戶端之前,將第一壽命值和所述第一客戶端狀態(tài)信息一起加密以產(chǎn)生所述第一經(jīng)加密信息。
7.如權(quán)利要求6所述的方法,還包括以下步驟在對接收自所述第一客戶端的所述第一經(jīng)加密信息進行解密之后,基于第二時間值和包括在所述第一經(jīng)解密信息中的壽命值來判斷所述第一客戶端狀態(tài)信息是否已經(jīng)過期。
8.如權(quán)利要求1所述的方法,還包括以下步驟從多個密鑰中選出所述第一本地密鑰,其中所述多個密鑰中的每個密鑰與不同索引值和所述服務(wù)器的身份相關(guān)聯(lián);以及將與所述第一本地密鑰相關(guān)聯(lián)的索引值發(fā)送到所述第一客戶端。
9.如權(quán)利要求8所述的方法,還包括以下步驟從所述第一客戶端接收與所述第一本地密鑰相關(guān)聯(lián)的索引值和所述服務(wù)器的身份;其中所述對第一經(jīng)加密信息進行解密的步驟包括基于與接收自所述第一客戶端的索引值相關(guān)聯(lián)的密鑰對所述第一經(jīng)加密信息進行解密的步驟。
10.如權(quán)利要求1所述的方法,其中第一服務(wù)器執(zhí)行對所述第一客戶端狀態(tài)信息加密以產(chǎn)生所述第一經(jīng)加密信息的步驟,其中所述方法還包括以下步驟第二服務(wù)器基于所述第一客戶端不知道的第二本地密鑰對所述第一客戶端狀態(tài)信息進行加密,以產(chǎn)生第二經(jīng)加密信息,其中所述第二服務(wù)器不同于所述第一服務(wù)器,并且其中所述第二本地密鑰不同于所述所述第一本地密鑰;所述第二服務(wù)器從所述第一客戶端接收所述第二經(jīng)加密信息;所述第二服務(wù)器核實隨所述第二經(jīng)加密信息接收到的認證代碼并對接收自所述第一客戶端的第二經(jīng)加密信息進行解密,從而產(chǎn)生第二經(jīng)解密信息;接收已基于從所屬第一共享私密密鑰導(dǎo)出的第三導(dǎo)出密鑰加密后的第二消息;從包括在所述第二經(jīng)解密信息中的共享私密密鑰導(dǎo)出第四導(dǎo)出密鑰;以及基于所述第四導(dǎo)出密鑰來進一步保護隨之發(fā)生在所述第一客戶端和所述第二服務(wù)器之間的會話。
11.一種避免在服務(wù)器上存儲客戶端狀態(tài)的方法,該方法包括以下計算機實現(xiàn)的步驟從客戶端不知道的多個密鑰中選出本地密鑰,其中所述多個密鑰中的每個密鑰與不同的索引值相關(guān)聯(lián);基于客戶端的經(jīng)加密狀態(tài)信息、所述服務(wù)器的身份和所述本地密鑰來計算第一認證代碼,其中所述客戶端狀態(tài)信息包括共享私密密鑰和唯一地標識所述客戶端的值;基于所述本地密鑰對所述客戶端狀態(tài)信息和第一壽命值進行加密并將加密結(jié)果與所述認證代碼組合在一起,從而產(chǎn)生經(jīng)加密信息;向所述客戶端發(fā)送所述經(jīng)加密信息和與所述本地密鑰相關(guān)聯(lián)的特定索引值;接收所述經(jīng)加密信息和所述特定索引值;基于與針對所述服務(wù)器身份的所述特定索引值相關(guān)聯(lián)的特定密鑰對所述接收到的經(jīng)加密信息進行解密,從而產(chǎn)生經(jīng)解密信息;基于包括在所述經(jīng)解密信息中的客戶端的經(jīng)加密狀態(tài)信息、所述服務(wù)器的身份和所述特定密鑰來計算第二認證代碼;判斷所述第二認證代碼是否與包括在所述經(jīng)解密信息中的認證代碼相匹配;基于當前時間值和包括在所述經(jīng)解密信息中的壽命值來判斷所述客戶端狀態(tài)信息是否已經(jīng)過期;接收已基于從所述共享私密密鑰導(dǎo)出的第一導(dǎo)出密鑰加密后的消息;從包括在所述第一經(jīng)解密信息中的共享私密密鑰導(dǎo)出第二導(dǎo)出密鑰;以及基于所述第二導(dǎo)出密鑰來進一步保護隨之發(fā)生在所述客戶端和所述服務(wù)器之間的會話。
12.一種在客戶端上存儲客戶端狀態(tài)的方法,該方法包括以下計算機實現(xiàn)的步驟安全地存儲通過基于本地密鑰對包括共享私密密鑰的客戶端狀態(tài)信息和服務(wù)器的身份進行加密而生成的經(jīng)加密客戶端狀態(tài)信息;將所述經(jīng)加密客戶端信息發(fā)送到存儲所述本地密鑰的第一服務(wù)器;以及將相同的經(jīng)加密客戶端信息發(fā)送到存儲所述本地密鑰的第二服務(wù)器;其中所述第二服務(wù)器不同于所述第一服務(wù)器,但是由相同的服務(wù)器身份所標識。
13.如權(quán)利要求12所述的方法,還包括以下步驟從所述第一服務(wù)器接收已基于從所述共享私密密鑰導(dǎo)出的導(dǎo)出密鑰加密后的消息;以及從所述第二服務(wù)器接收已基于從所述共享私密密鑰導(dǎo)出的導(dǎo)出密鑰加密后的消息。
14.一種在客戶端上存儲客戶端狀態(tài)的方法,該方法包括以下計算機實現(xiàn)的步驟安全地存儲通過基于本地密鑰對包括共享私密密鑰的客戶端狀態(tài)信息和服務(wù)器的身份進行加密而生成的經(jīng)加密客戶端狀態(tài)信息;將所述經(jīng)加密客戶端信息發(fā)送到存儲所述本地密鑰的第一服務(wù)器,其中所述本地密鑰由所述第一服務(wù)器的身份所標識;以及將所述經(jīng)加密客戶端信息發(fā)送到存儲所述本地密鑰的第二服務(wù)器,其中所述本地密鑰由所述第二服務(wù)器的身份所標識;其中所述第二服務(wù)器不同于所述第一服務(wù)器,并且所述第二服務(wù)器由服務(wù)器身份來唯一地標識。
15.如權(quán)利要求14所述的方法,還包括以下步驟從所述第一服務(wù)器接收已基于從所述共享私密密鑰導(dǎo)出的導(dǎo)出密鑰加密后的消息;以及從所述第二服務(wù)器接收已基于從所述共享私密密鑰導(dǎo)出的導(dǎo)出密鑰加密后的消息。
16.一種從客戶端接收客戶端狀態(tài)的方法,該方法包括以下計算機實現(xiàn)的步驟基于客戶端不知道的本地密鑰來加密客戶端狀態(tài)信息,以產(chǎn)生經(jīng)加密信息,其中所述客戶端狀態(tài)信息包括共享私密密鑰;從所述客戶端接收傳輸安全性層(TLS)握手協(xié)議擴展ClientHello消息,該消息在其擴展數(shù)據(jù)字段中包含了所述經(jīng)加密信息;以及基于所述本地密鑰對接收自所述客戶端的所述經(jīng)加密信息進行解密,從而產(chǎn)生包括所述共享私密密鑰的經(jīng)解密信息。
17.一種承載了用于避免在服務(wù)器上存儲客戶端狀態(tài)的一個或多個指令序列的計算機可讀介質(zhì),當所述指令被一個或多個處理器執(zhí)行時,致使所述一個或多個處理器執(zhí)行以下步驟基于第一客戶端不知道的第一本地密鑰對第一客戶端狀態(tài)信息加密以產(chǎn)生第一經(jīng)加密信息,其中所述第一客戶端狀態(tài)信息包括第一共享私密密鑰;在第一時間從所述第一客戶端接收所述第一經(jīng)加密信息;基于所述本地密鑰對接收自所述第一客戶端的所述第一經(jīng)加密信息進行解密,從而產(chǎn)生第一經(jīng)解密信息;接收已基于從所述第一共享私密密鑰導(dǎo)出的第一導(dǎo)出密鑰加密后的第一消息;從包括在所述第一經(jīng)解密信息中的共享私密密鑰導(dǎo)出第二導(dǎo)出密鑰;以及基于所述第二導(dǎo)出密鑰來進一步保護隨之發(fā)生在所述第一客戶端和所述服務(wù)器之間的會話。
18.如權(quán)利要求17所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令在所述第一時間前從存儲器中移除所述第一客戶端狀態(tài)信息;以及在所述第一時間前從存儲器中移除所述第一經(jīng)加密信息。
19.如權(quán)利要求17所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令在將所述第一經(jīng)加密信息發(fā)送到所述第一客戶端之前,基于所述本地密鑰、服務(wù)器的身份和客戶端經(jīng)加密態(tài)信息來計算第一代碼;以及在將所述第一經(jīng)加密信息發(fā)送到所述第一客戶端之前,將所述第一代碼與包括所述第一客戶端狀態(tài)信息的加密結(jié)果包括在一起以產(chǎn)生所述第一經(jīng)加密信息。
20.如權(quán)利要求17所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令在對接收自所述第一客戶端的所述第一經(jīng)加密信息進行解密之后,基于包括在所述第一經(jīng)解密信息中的客戶端經(jīng)加密狀態(tài)信息、所述本地密鑰和所述服務(wù)器的身份來計算第二認證代碼;以及判斷所述第二認證代碼是否與包括在所述第一經(jīng)解密信息中的認證代碼相匹配。
21.如權(quán)利要求19所述的計算機可讀介質(zhì),其中所述第一客戶端狀態(tài)信息包括唯一地標識所述第一客戶端的值。
22.如權(quán)利要求17所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令在將所述第一經(jīng)加密信息發(fā)送到所述第一客戶端之前,將第一壽命值和所述第一客戶端狀態(tài)信息一起加密以產(chǎn)生所述第一經(jīng)加密信息。
23.如權(quán)利要求22所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令在對接收自所述第一客戶端的所述第一經(jīng)加密信息進行解密之后,基于第二時間值和包括在所述第一經(jīng)解密信息中的壽命值來判斷所述第一客戶端狀態(tài)信息是否已經(jīng)過期。
24.如權(quán)利要求17所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令從多個密鑰中選出所述本地密鑰,其中所述多個密鑰中的每個密鑰與不同索引值相關(guān)聯(lián);以及將與所述本地密鑰相關(guān)聯(lián)的索引值發(fā)送到所述第一客戶端。
25.如權(quán)利要求24所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令從所述第一客戶端接收與所述本地密鑰相關(guān)聯(lián)的索引值;其中所述對第一經(jīng)加密信息進行解密的步驟包括基于與接收自所述第一客戶端的索引值相關(guān)聯(lián)的密鑰對所述第一經(jīng)加密信息進行解密的步驟。
26.如權(quán)利要求17所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令生成所述服務(wù)器的身份;基于所述本地密鑰對第二客戶端狀態(tài)信息進行加密以產(chǎn)生第二經(jīng)加密信息,其中所述第二客戶端狀態(tài)信息包括不同于所述第一共享私密密鑰的第二共享私密密鑰,并且其中所述本地密鑰不被不同于所述第一客戶端的第二客戶端所知;從所述第二客戶端接收所述第二經(jīng)加密信息;基于所述本地密鑰對接收自所述第二客戶端的所述第二經(jīng)加密信息進行解密,從而產(chǎn)生第二經(jīng)解密信息;接收已基于從所述第二共享私密密鑰導(dǎo)出的第三導(dǎo)出密鑰加密后的第二消息;從包括在所述第二經(jīng)解密信息中的共享私密密鑰導(dǎo)出第四導(dǎo)出密鑰;以及基于所述第四導(dǎo)出密鑰來進一步保護隨之發(fā)生在所述第二客戶端和所述服務(wù)器之間的會話。
27.如權(quán)利要求17所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下步驟的指令基于從包括在所述第一經(jīng)解密信息中的共享私密密鑰導(dǎo)出的第三導(dǎo)出密鑰來加密第二消息,以產(chǎn)生經(jīng)加密的消息;以及將所述經(jīng)加密的消息發(fā)送到所述第二客戶端。
28.一種用于避免在服務(wù)器上存儲客戶端狀態(tài)的裝置,包括用于基于客戶端不知道的本地密鑰對客戶端狀態(tài)信息加密以產(chǎn)生經(jīng)加密信息的裝置,其中所述客戶端狀態(tài)信息包括共享私密密鑰;用于從所述客戶端接收所述經(jīng)加密信息的裝置;用于基于所述本地密鑰對接收自所述客戶端的所述經(jīng)加密信息進行解密,從而產(chǎn)生經(jīng)解密信息的裝置;用于接收已基于從所述共享私密密鑰導(dǎo)出的第一導(dǎo)出密鑰加密后的消息的裝置;用于從包括在所述經(jīng)解密信息中的共享私密密鑰導(dǎo)出第二導(dǎo)出密鑰的裝置;以及用于基于所述第二導(dǎo)出密鑰來解密所述消息的裝置。
29.一種用于避免在服務(wù)器上存儲客戶端狀態(tài)的裝置,包括耦合到數(shù)據(jù)網(wǎng)絡(luò)的用于從其接收一個或多個分組流的網(wǎng)絡(luò)接口;處理器;一個或多個已存儲的指令序列,該指令序列被所述處理器執(zhí)行時致使所述處理器執(zhí)行以下步驟計算所述服務(wù)器的身份;基于客戶端不知道的本地密鑰對客戶端狀態(tài)信息進行加密以產(chǎn)生經(jīng)加密信息,其中所述客戶端狀態(tài)信息包括共享私密密鑰;從所述客戶端接收所述經(jīng)加密信息;基于所述本地密鑰對接收自所述客戶端的所述經(jīng)加密信息進行解密,從而產(chǎn)生經(jīng)解密信息;接收已基于從所述共享私密密鑰導(dǎo)出的第一導(dǎo)出密鑰加密后的消息;從包括在所述經(jīng)解密信息中的共享私密密鑰導(dǎo)出第二導(dǎo)出密鑰;以及基于所述第二導(dǎo)出密鑰來進一步保護隨之發(fā)生在所述客戶端和所述服務(wù)器之間的會話。
全文摘要
本發(fā)明公開了一種用于實現(xiàn)基于無狀態(tài)服務(wù)器的預(yù)共享私密的方法?;诳蛻舳瞬恢赖谋镜孛荑€,服務(wù)器對客戶端的狀態(tài)信息進行加密。客戶端的狀態(tài)信息例如可以包括客戶端的認證憑證、客戶端的授權(quán)特性和客戶端用于導(dǎo)出會話密鑰的共享私密密鑰。利用多種機制中的任意一種,經(jīng)加密的客戶端狀態(tài)信息被提供給客戶端。服務(wù)器可以騰出曾存儲客戶端的狀態(tài)信息的存儲器。當服務(wù)器需要客戶端的狀態(tài)信息時,客戶端向服務(wù)器發(fā)送客戶端存儲的經(jīng)加密的狀態(tài)信息。服務(wù)器利用本地密鑰對經(jīng)加密的客戶端狀態(tài)信息解密。由于每個客戶端以加密形式存儲了該客戶端自己的狀態(tài)信息,因此服務(wù)器無需永久存儲任意客戶端的狀態(tài)信息。
文檔編號G06F15/16GK1906883SQ200580001385
公開日2007年1月31日 申請日期2005年1月10日 優(yōu)先權(quán)日2004年1月12日
發(fā)明者南希·卡姆-溫恩特, 周浩, 帕特曼納哈·C·杰卡浩里, 約瑟夫·薩洛韋, 大衛(wèi)·A·麥格魯 申請人:思科技術(shù)公司