專利名稱:在通信環(huán)境中使用的通用會話密鑰的預(yù)生成的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及在通信環(huán)境中提供保密通信(secure communication),具體而言,本發(fā)明涉及預(yù)生成用于在這樣的環(huán)境中 提供保密通信的通用會話密鑰。
背景技術(shù):
會話密鑰用來在通信環(huán)境的兩個實體之間的通信中提供數(shù)據(jù)完整 性和數(shù)據(jù)機密性。會話密鑰僅僅在實體之間的連接是活動的時間期間 是有效的。當(dāng)連接結(jié)束時,會話和會話密鑰的有效性也結(jié)束。有各種類型的會話密鑰和用于生成這些密鑰的不同技術(shù)。 一種類 型的會話密鑰是對稱會話密鑰,其中通信的兩個實體,諸如在集群環(huán) 境中的服務(wù)器和客戶機,使用同一密鑰。在一個例子中,這種類型的 密鑰是通過使服務(wù)器生成對稱密鑰并且隨后把它分發(fā)給客戶機而生成 的。對稱會話密鑰的分發(fā)是通過用服務(wù)器的私有密鑰給會話密鑰簽名行保密的。用私有密鑰簽名涉及用私有密鑰加密消息摘要,這是慢的操作。 在恢復(fù)情形下這是特別麻煩的。例如,假設(shè)管理域集群的管理服務(wù)器 關(guān)斷,然后恢復(fù)。管理服務(wù)器必須建立預(yù)先存在的、與集群中的每個 客戶機的通信信道。因此,服務(wù)器必須為管理域集群中的每個客戶機 生成新的會話密鑰并將其分發(fā)給每個客戶機。在大的集群(諸如,例 如具有多于1024個節(jié)點的集群)中,這個操作在性能方面代價非常高。 性能上的這種成本阻礙了可恢復(fù)性和可得到性。它也負(fù)面影響縮放尺 寸。根據(jù)上述內(nèi)容,存在對于一種提供可用于在通信環(huán)境的各方之間提供保密通信的會話密鑰的增強技術(shù)的需要。 發(fā)明內(nèi)容通過提供如權(quán)利要求1中要求的、用于提供在通信環(huán)境內(nèi)通信中 使用的會話密鑰的方法,來克服現(xiàn)有技術(shù)的缺點和提供附加的優(yōu)點。優(yōu)選地,該方法包括,例如,從會話密鑰二元組池中任意選擇會 話密鑰二元組以在通信環(huán)境的第一實體和通信環(huán)境的第二實體之間通 信中使用,會話密鑰二元組池提供多個會話密鑰二元組,其中會話密 鑰二元組包括用第一實體的私有密鑰預(yù)先加密的、但對于第二實體通用的會話密鑰,以及具有未加密形式的同一會話密鑰;從任意選擇的 會話密鑰二元組中提取預(yù)先加密的會話密鑰;用第二實體的公共密鑰 加密預(yù)先加密的會話密鑰以提供進一步加密的會話密鑰;以及把進一 步加密的會話密鑰發(fā)送到第二實體,以便在與第一實體的通信中使用。 這里還描述和要求與上面概述的方法相對應(yīng)的系統(tǒng)和計算機程序 產(chǎn)品。其它特征和優(yōu)點通過本發(fā)明的技術(shù)來實現(xiàn)。這里還詳細地描述 了本發(fā)明的其它實施例和方面,并把它們看作是所要求的發(fā)明的一部
在說明書的結(jié)尾具體指出了并在權(quán)利要求中作為例子明確要求了 本發(fā)明的一個或多個方面。從以下結(jié)合附圖做出的詳細說明中將明白 本發(fā)明的上述和其它目的、特征和優(yōu)點,其中圖1圖示了結(jié)合和使用本發(fā)明的一個或多個方面的通信環(huán)境的一 個實施例;圖2圖示了按照本發(fā)明的方面的、圖1的通信環(huán)境的進一步細節(jié); 圖3圖示了按照本發(fā)明的方面使用的預(yù)先生成的會話密鑰的高速緩存器的一個例子;圖4圖形地圖示了按照本發(fā)明的方面的、選擇和傳送會話密鑰的一個例子;圖5圖示了按照本發(fā)明的方面的、與建立兩個實體之間的連接相 關(guān)的邏輯的一個實施例;圖6圖示了按照本發(fā)明的方面的、與管理會話密鑰的高速緩存器 相關(guān)的邏輯的一個實施例;圖7圖示了按照本發(fā)明的方面的、與生成會話密鑰相關(guān)的邏輯的 一個實施例;以及圖8圖示了按照本發(fā)明的方面的、與得到會話密鑰相關(guān)的邏輯的 一個實施例。
具體實施方式
按照本發(fā)明的方面,預(yù)先生成會話密鑰,并把所述會話密鑰保存 在會話密鑰池中。這個池的會話密鑰是通用的,原因在于這些密鑰不 依賴通信環(huán)境的特定目的地實體(例如,目的地節(jié)點)。例如,所述池 的任何會話密鑰可以由一個實體選擇,并被分發(fā)到所選擇的目的地實 體以使得這些實體可以通信。為了在兩個實體之間提供保密通信,一 旦從池中取得會話密鑰,隨后就用目的地實體的公共密鑰加密該會話 密鑰。然而,在密鑰處在池中時,它并非專用于該目的地實體。這提 供了在創(chuàng)建、選擇和分發(fā)在通信環(huán)境內(nèi)的通信中使用的會話密鑰方面 的靈活性和簡易性。在圖1中圖示了結(jié)合和使用本發(fā)明的一個或多個方面的通信環(huán)境 的一個實施例。作為例子,通信環(huán)境100包括具有多個節(jié)點102的集 群環(huán)境。作為例子,節(jié)點是RS/6000或其它類型的計算系統(tǒng)。在這個 具體例子中,集群100包括至少一個集群管理服務(wù)器104和一個或多 個集群被管理節(jié)點106。集群管理服務(wù)器104執(zhí)行集群管理應(yīng)用108, 其負(fù)責(zé)監(jiān)視和控制集群被管理節(jié)點106的各個方面。集群被管理節(jié)點 106執(zhí)行客戶機應(yīng)用110,其與集群管理服務(wù)器節(jié)點104上的集群管理 應(yīng)用108交互作用(interact with)。每個客戶才幾接收來自集群管理應(yīng)用 的指令,并根據(jù)這些指令行動以完成由集群管理服務(wù)器節(jié)點所作出的請求。集群管理應(yīng)用108和集群管理客戶機106通過使用網(wǎng)絡(luò)協(xié)議112 進行通信。在每對通信裝置(例如,服務(wù)器與客戶機)之間的通信是保 密的。為了提供這種保密性,使用會話密鑰。會話密鑰僅僅在活動的 會話期間是有效的,這防止重放以前獲取的數(shù)據(jù)流。在這個具體例子 中,會話密鑰是對稱的,因此,兩個通信裝置使用同一個密鑰來通信。 為了保密起見,服務(wù)器通過用服務(wù)器的私有密鑰("qk")114簽名會話密 鑰和用客戶機的公共密鑰("pk")加密它而保密地分發(fā)對稱會話密鑰給 客戶機。每個節(jié)點與可以與其交互作用的任何節(jié)點交換公共密鑰,這樣, 數(shù)據(jù)的簽名或加密是可能的。特定節(jié)點的密鑰可以在集群管理應(yīng)用與 客戶機的執(zhí)行之間被存儲在該節(jié)點的永久存儲裝置120中。另外,集 群配置信息被存儲在永久存儲裝置內(nèi)。每對通信裝置(例如,服務(wù)器與客戶機)利用唯一的會話密鑰。因 此,對于大的集群,通過使得許多會話密鑰在需要時可得到而改進性 能。按照本發(fā)明的方面,大量會話密鑰在需要它們之前生成,并被存 儲和高速緩存以供將來使用,諸如在集群管理應(yīng)用試圖控制任何新的 集群被管理節(jié)點的任何時候,或在集群管理應(yīng)用與集群管理客戶機之 間的網(wǎng)絡(luò)連接被臨時暫?;驍嚅_的任何時候。而且,在一個實施例中, 在從高速緩存器中提取密鑰以提供會話密鑰的充分供給時補充會話密 鑰。參照圖2描述關(guān)于會話密鑰的使用的附加細節(jié)。如圖2所示,集群管理應(yīng)用108包括會話高速緩存器200,它具 有通過使用應(yīng)用選擇技術(shù)而生成的唯一會話密鑰。這樣的技術(shù)的例子 包括DES(數(shù)據(jù)加密標(biāo)準(zhǔn))以及AES(高級加密標(biāo)準(zhǔn)),其中DES在聯(lián) 邦信息處理標(biāo)準(zhǔn)出版物46-3(1999年10月25日)中描述,并在 http:〃csrc.nist.gov/publications/fips/ fips46-3/fips46-3.pdf處可得至'J和 通過從國家技術(shù)信息服務(wù)(NTIS), 5285 Port Royal Road, Springfield, VA 22161訂購拷貝可得到;而AES在聯(lián)邦信息處理標(biāo)準(zhǔn)出版物 197(2001 年11月26日)中描述,并在 http:〃csrc.nist.gov/publications/fips/fipsl97/fips畫197.pdf處可得到和通過從國家技術(shù)信息服務(wù)(NTIS), 5285 Port Royal Road, Springfield, VA 22161訂購拷貝可得到;通過引用而將這些出版物的每一個完全合 并于本文中。會話密鑰高速緩存器包括,例如,多個對稱會話密鑰, 并且在執(zhí)行集群管理應(yīng)用之前被生成。會話密鑰高速緩存器被保存在 永久存儲裝置202中,然后在其執(zhí)行的初始化階段204期間由集群管 理應(yīng)用加載。響應(yīng)于集群管理應(yīng)用試圖連接到被管理節(jié)點上的集群管理客戶 機,集群管理應(yīng)用從會話密鑰高速緩存器200中提取新的會話密鑰 206,并把該會話密鑰和與被管理節(jié)點上的集群管理客戶機建立的網(wǎng)絡(luò) 連接相關(guān)聯(lián)。與被管理節(jié)點上的集群管理客戶機建立的網(wǎng)絡(luò)連接代表 要用會話密鑰保護的通信會話。會話密鑰與它保護的通信會話相關(guān)聯(lián), 這樣,當(dāng)有要通過通信信道傳送的數(shù)據(jù)時,正確的會話密鑰被使用來 驗證該數(shù)據(jù)。集群管理應(yīng)用通過用與特定被管理節(jié)點相關(guān)的公共密鑰加密會話 密鑰來保護該會話密鑰,并把會話密鑰通過網(wǎng)絡(luò)連接發(fā)送到被管理節(jié) 點上的集群管理客戶機。集群管理客戶機從網(wǎng)絡(luò)傳輸中提取會話密鑰 208。這種提取包括,例如,通過使用客戶機的私有密鑰而解密會話密 鑰。存在根據(jù)各種標(biāo)準(zhǔn)的各種公共/私有密鑰密碼技術(shù)。 一個這樣的標(biāo) 準(zhǔn)是RSA密碼標(biāo)準(zhǔn),它在被稱為Open SSL(www.openssl.org)的封裝 中可得到。為了使用這個功能,作為一個例子,源代碼可以在線地得 到,以及被匯編到例如靜態(tài)或共享的庫中。關(guān)于RSA的進一步細節(jié)在 ftp:〃ftp.rsasecurity.eom/pub/pkcs/pkcs-l/pkcs-lv2-l.pdf (通過引用而 將其內(nèi)容完全合并于本文中)處描述。在會話密鑰的初始傳送之后,只要網(wǎng)絡(luò)連接被認(rèn)為是活動的,密 鑰就被使用來簽名或加密在集群管理應(yīng)用與集群管理客戶機之間的數(shù) 據(jù)。對稱密鑰提供基于私有/公共密鑰技術(shù)的改進的加密和簽名性能。集群管理應(yīng)用可以把會話密鑰高速緩存器內(nèi)的存儲器內(nèi)的拷貝周 期地同步到永久存儲裝置,并且當(dāng)應(yīng)用終結(jié)時,還把會話密鑰高速緩 存器內(nèi)的未使用的密鑰存儲到永久存儲裝置。這允許應(yīng)用在以后的執(zhí)行期間利用任何未使用的會話密鑰,而不需要生成新的會話密鑰。在一個例子中,會話密鑰高速緩存器300(圖3)包括多個數(shù)據(jù)二元 組302。每個數(shù)據(jù)二元組302包括具有明文(clear)的未加密形式304 的對稱密鑰值和具有加密形式306的同一個對稱密鑰值。對稱密鑰的 加密形式是通過用會話密鑰高速緩存器應(yīng)用使用的私有密鑰來加密會 話密鑰值而創(chuàng)建的。這個會話密鑰高速緩存器包括預(yù)先生成的、通用 的和準(zhǔn)備在需要時使用的多個會話密鑰。作為一個例子,當(dāng)集群管理應(yīng)用400(圖4)建立與被管理節(jié)點上的 集群管理客戶機402的連接時,它從存儲器內(nèi)的會話密鑰高速緩存器 406中提取任何可得到的數(shù)據(jù)二元組404。數(shù)據(jù)二元組被放入到中間處 理存儲器408中,并從存儲器內(nèi)的會話密鑰高速緩存器406中永久地 移出。從數(shù)據(jù)二元組中提取明文的對稱密鑰值409,并將其存儲在應(yīng)用 的存儲器中作為用于在集群管理應(yīng)用與集群管理客戶機之間的連接的 會話密鑰410。而且,從數(shù)據(jù)二元組中提取加密的對稱密鑰值411,并 且還通過用于被管理節(jié)點的公共密鑰413將其加密,從而保證只有期 望的接收人可以解密它的值。最終得到的加密數(shù)據(jù)414通過網(wǎng)絡(luò)連接被發(fā)送到被管理節(jié)點上的集群管理客戶機。集群管理客戶機通過使用它本身的私有密鑰來解密加密數(shù)據(jù)414。還通過使用集群管理服務(wù)器節(jié)點的公共密鑰進一步解密該結(jié)果。最后 的結(jié)果被用作為用于在這個集群管理客戶機與這個集群管理應(yīng)用之間 的所有通信的會話密鑰。參照圖5描述與建立在一個實體與另一個實體之間的連接相關(guān)的 進一步細節(jié)。在本例中, 一個實體是管理應(yīng)用,而另一個實體是使用 會話密鑰進行通信的管理客戶機。然而,在另一個例子中,通信實體 可以是另一種類型的實體。在這里描述的實施例中,共享的多線程庫被使用來實施和保存由 通信實體使用的會話密鑰高速緩存器。該庫使用多線程(這里描述的) 來在存儲器中以及可選地,在磁盤或其它存儲媒體中創(chuàng)建和保存會話密鑰高速緩存器。處理多線程被使用來在處理自身內(nèi)創(chuàng)建和保存會話 密鑰。然而,這是由利用的應(yīng)用在后臺以很不明顯的行動執(zhí)行的。參照圖5, 一開始,在步驟500,啟動應(yīng)用,并且應(yīng)用建立會話密 鑰高速緩存器上下文502。在該上下文中,應(yīng)用規(guī)定某些參數(shù),諸如, 例如要使用的任何永久會話密鑰、要使用的對稱密鑰技術(shù)(例如,DES、 AES)、高速緩存器的限制、以及存儲器內(nèi)的會話密鑰高速緩存器是否 應(yīng)當(dāng)被周期性地同步到永久存儲裝置。對于由應(yīng)用使用的每個會話密 鑰高速緩存器,由庫分配會話密鑰高速緩存器上下文描述符。密鑰高 速緩存器上下文描述符例如通過pthread mutex鎖來保護,該pthread mutex鎖使得對于上下文描述符數(shù)據(jù)的訪問被串行化。在上下文描述 符中還定義了兩個pthread條件,以便允許在密鑰讀出器(應(yīng)用線程)、 主生成器線程和公共生成器線程之間的同步,正如下面描述的那樣。響應(yīng)于啟動密鑰高速緩存器上下文,在步驟504,啟動新的執(zhí)行 線程,其被稱為主生成器線程,以便執(zhí)行會話密鑰管理任務(wù)。例如由 所述庫創(chuàng)建的主生成器線程負(fù)責(zé)管理高速緩存器的存儲器內(nèi)版本和可 能的盤上版本。這個線程創(chuàng)建從高速緩存器中替代使用過的密鑰所需 要的任何公共生成器線程,并且可以周期性地同步高速緩存器的存儲 器內(nèi)版本和盤上版本,如果使用盤上版本的話,正如下面描述的那樣?;氐讲襟E502,當(dāng)應(yīng)用試圖聯(lián)系客戶機時,在詢問506,應(yīng)用確定 是否需要新的連接。如果需要的話,則在步驟508,創(chuàng)建到客戶機的 新連接。在應(yīng)用與它的客戶機之間的新連接的創(chuàng)建依賴于如何編程應(yīng) 用。作為例子,要建立與它的客戶機的通信信道的應(yīng)用創(chuàng)建TCP或 UDP套接字,然后監(jiān)聽/連接到該套接字,以便建立在應(yīng)用的處理與客 戶機的處理之間的邏輯連接。在交換任何其它信息之前,在步驟510,從會話高速緩存器得到 會話密鑰,并把它發(fā)送到客戶機,正如下面參照圖8更詳細地描述的 那樣。應(yīng)用在內(nèi)部把新的會話密鑰值和在應(yīng)用與特定客戶機之間的連 接相關(guān)聯(lián)?;氐皆儐?06,如果沒有正在聯(lián)系的新客戶機,或在得到用于新客戶機的會話密鑰之后,在步驟512,客戶機和應(yīng)用可以開始發(fā)送和 接收信息。具體而言,與客戶機交換簽名的或加密的數(shù)據(jù),以及在詢 問514,如果還有數(shù)據(jù)要交換,則繼續(xù)進行。當(dāng)應(yīng)用與客戶機不需要 進一步通信時,在步驟516,應(yīng)用關(guān)閉到客戶機的連接,并永久丟棄 它的會話密鑰的拷貝。在詢問518,如果應(yīng)用希望聯(lián)系另一客戶機,處理繼續(xù)進行詢問 506。然而,如果確定應(yīng)用不要聯(lián)系另一客戶機,則在步驟520,應(yīng)用 可以強迫同步存儲器內(nèi)的會話高速緩存器內(nèi)容和會話密鑰高速緩存器 的永久拷貝。該操作可以發(fā)生在應(yīng)用執(zhí)行期間的任何點上。該同步保 證所使用的會話密鑰從永久會話密鑰高速緩存器中被移出,以及不在 應(yīng)用的以后執(zhí)行中被再次使用,這阻止了數(shù)據(jù)重放的企圖。在一個例子中,應(yīng)用的隱含的同步器線程被使用來執(zhí)行同步。存 儲器內(nèi)的高速緩存器的當(dāng)前內(nèi)容被寫入到盤中,重寫當(dāng)前的盤上高速 緩存器內(nèi)容,如果存在任何盤上內(nèi)容的話。應(yīng)用可以創(chuàng)建用于這個任 務(wù)的線程,或可以在存在應(yīng)用線程的情況下執(zhí)行這個任務(wù)。主生成器 線程周期性地假設(shè)同步器的作用是當(dāng)對庫的需求低時用當(dāng)前的存儲器 內(nèi)內(nèi)容沖刷掉盤上版本。在應(yīng)用結(jié)束之前,在步驟522,應(yīng)用終結(jié)會話密鑰高速緩存器上 下文。在步驟524,這個行動強迫終結(jié)會話密鑰管理線程和由管理線 程啟動的任何其它后臺執(zhí)行線程,以及可能把會話密鑰高速緩存器的 存儲器內(nèi)拷貝同步到永久存儲裝置。此后,在步驟526,應(yīng)用結(jié)束。回到步驟504,參照圖6描述關(guān)于啟動高速緩存器管理線程的進 一步細節(jié)。當(dāng)在步驟600啟動會話密鑰管理線程時,線程在詢問602, 檢驗在會話密鑰高速緩存器上下文信息中的應(yīng)用指示的任何永久會話 密鑰高速緩存器。如果永久高速緩存器被定位,則在步驟604,把高 速緩存器的內(nèi)容加載到存儲器,以及在步驟606,存儲器內(nèi)的高速緩 存器是可得到的。管理線程在步驟608, 610,創(chuàng)建一個或多個后臺執(zhí)行線程,其生 成會話密鑰二元組以填充(p叩ulate)存儲器內(nèi)的會話密鑰高速緩存器,以及代替由應(yīng)用提取和移出的任何會話密鑰二元組。這些線程被稱為 公共生成器線程,它們的創(chuàng)建和破壞例如由密鑰高速緩存器庫控制。 可以有許多這樣的、在后臺同時執(zhí)行的線程,以及其數(shù)目在密鑰高速 緩存器上下文中提供。每個公共生成器線程負(fù)責(zé)從高速緩存器的存儲 器內(nèi)版本中代替已經(jīng)使用過的密鑰。在從高速緩存器中提取由應(yīng)用設(shè) 置的一定數(shù)目的密鑰之前不啟動生成器線程。生成器線程在每次傳送 時生成定額的密鑰,以便增強性能。在步驟612,管理線程暫停和等待來自應(yīng)用的信號。這些信號表 示何時從存儲器內(nèi)會話密鑰高速緩存器中提取和移出會話密鑰,何時 存儲器內(nèi)會話密鑰高速緩存器是空的,或何時會話密鑰高速緩存器上 下文結(jié)束。當(dāng)應(yīng)用重新開始時,管理線程確定應(yīng)用狀態(tài)。如果在詢問614會 話密鑰高速緩存器上下文結(jié)束,在步驟618結(jié)束它本身的執(zhí)行之前, 在步驟616管理線程終結(jié)可以是活動的任何后臺密鑰生成器線程。回到詢問614,如果高速緩存器上下文沒有結(jié)束,則在詢問620, 進一步確定管理線程是否由應(yīng)用信號通知。如果應(yīng)用沒有信號通知管 理線程,則在步驟612,線程暫停和等待另外的活動。然而,如果應(yīng) 用信號通知了管理線程,則在詢問622,管理線程確定在存儲器內(nèi)會 話密鑰高速緩存器中是否想要有更多的會話密鑰二元組。如果高速緩 存器內(nèi)容超過預(yù)定的最小值,從而充分地充滿(例如,75%充滿,或任 何其它想要的數(shù)目),則在步驟624,管理線程有機會把存儲器內(nèi)會話 密鑰內(nèi)容同步到永久存儲裝置。在步驟612,線程再次暫停和等待其 它活動。然而,如果高速緩存器內(nèi)容被耗盡,則在詢問626,管理線程確 定是否可以創(chuàng)建更多的密鑰生成器線程來幫助補滿存儲器內(nèi)會話密鑰 高速緩存器的內(nèi)容。具體地,確定最大數(shù)目的密鑰生成器線程是否是 活動的。如果最大數(shù)目的密鑰生成器線程是活動的,正如在上下文中 指示的那樣,則在步驟612,線程暫停和等待其它活動。另一方面, 如果最大數(shù)目的密鑰生成器線程是不活動的,正如在上下文中指示的那樣,則處理返回到步驟608,其中啟動密鑰生成器線程。當(dāng)公共生 成器線程把密鑰添加到高速緩存器時,它們廣播信號以使得等待密鑰 的任何中斷的讀出器可以醒來和得到密鑰。另外,當(dāng)它們退出時,它 們提供信號,以使得主生成器線程知道它們的終結(jié),以及可能地,允 許它創(chuàng)建其它公共生成器線程,如果想要更多密鑰的話。這個處理繼 續(xù)進行,直至應(yīng)用表示會話密鑰高速緩存器上下文結(jié)束為止。參照圖7描述關(guān)于啟動密鑰生成器線程的進一步細節(jié)。密鑰生成 器執(zhí)行線程在步驟700由會話密鑰高速緩存器管理線程發(fā)起。應(yīng)用不 知道這個執(zhí)行線程已被啟動。在步驟702,每個密鑰發(fā)生器線程在每 個執(zhí)行循環(huán)中有效地創(chuàng)建多個對稱密鑰。在生成會話密鑰中使用的技 術(shù)和在每次循環(huán)中創(chuàng)建的密鑰數(shù)目由例如會話密鑰高速緩存器上下文 信息中的應(yīng)用規(guī)定。在另一個例子中,可以設(shè)置缺省值,應(yīng)用可以不 考慮該值。對于生成的每個會話密鑰,為了數(shù)據(jù)完整性,在步驟704通過使 用其中應(yīng)用執(zhí)行的節(jié)點的私有密鑰來加密所述密鑰。然后在步驟706, 其加密版本中的這個會話密鑰與它的原先版本組合成數(shù)據(jù)二元組。然 后在步驟708,將在這個循環(huán)中創(chuàng)建的數(shù)據(jù)二元組存儲在存儲器內(nèi)會 話密鑰高速緩存器中。 一旦將會話密鑰數(shù)據(jù)二元組存儲在存儲器內(nèi)會 話密鑰高速緩存器中,密鑰生成器執(zhí)行線程就在步驟710, 712用信號 通知應(yīng)用新的密鑰可供使用。密鑰生成器執(zhí)行線程在詢問714,檢查存儲器內(nèi)會話密鑰高速緩 存器的狀態(tài)以確定是否想要更多的會話密鑰數(shù)據(jù)二元組。如果想要更 多的會話密鑰數(shù)據(jù)二元組,則線程在步驟702重新開始創(chuàng)建另外的會 話密鑰數(shù)據(jù)二元組的任務(wù)。這個過程繼續(xù)進行,直至存儲器內(nèi)會話密 鑰高速緩存器被充分充滿為止,如由應(yīng)用指定的那樣。在這時,在步 驟716,密鑰生成器執(zhí)行線程結(jié)束。如果存儲器內(nèi)會話密鑰高速緩存器在以后的某個時間點被耗盡, 則會話密鑰高速緩存器管理線程創(chuàng)建新的密鑰生成器執(zhí)行線程以重新 充滿高速緩存器。回到圖5,具體地,回到步驟510,參照圖8描述關(guān)于得到和發(fā)送 會話密鑰的進一步細節(jié)。當(dāng)應(yīng)用試圖得到和發(fā)送新的會話密鑰時,應(yīng) 用在詢問800,檢驗在存儲器內(nèi)會話密鑰高速緩存器中可得到的數(shù)據(jù) 二元組。如果數(shù)據(jù)二元組不可得,則所述應(yīng)用在步驟802, 804,信號 通知會話密鑰管理線程會話密鑰高速緩存器被耗盡。然后,應(yīng)用在 步驟806,暫停,等待通知已使新的會話密鑰數(shù)據(jù)二元組在高速緩 存器中可得到。這個通知由密鑰生成器線程用信號通知,如參照圖7 描述的那樣。 一旦被信號通知,處理過程就從詢問800繼續(xù)進行,其 中檢驗可得到的會話密鑰數(shù)據(jù)二元組。如果密鑰二元組是可得到的,則在步驟808,從存儲器內(nèi)會話密 鑰高速緩存器中移出任何可得到的二元組,并把它提供給應(yīng)用。由于 數(shù)據(jù)二元組不依賴特定目的地,所以不需要搜索高速緩存器以找出特 定的二元組。任何二元組都足夠了。在一個例子中,應(yīng)用的隱含的讀 出器線程執(zhí)行這個行動。應(yīng)用可以創(chuàng)建用于這個任務(wù)的線程,或可以 在存在不同于管理線程的現(xiàn)有應(yīng)用線程的情況下執(zhí)行這個任務(wù)。此后,在步驟810,從存儲器內(nèi)會話密鑰高速緩存器中永久地移 出二元組,以免任何其它連接再次使用它。在步驟812, 814,應(yīng)用信 號通知會話密鑰高速緩存器管理線程會話密鑰數(shù)據(jù)二元組被移出。 這個信號可以使得管理線程發(fā)起密鑰生成器執(zhí)行線程以重新充滿存儲 器內(nèi)會話密鑰高速緩存器的內(nèi)容。在步驟816,應(yīng)用從數(shù)據(jù)二元組中提取明文的會話密鑰和加密形 式的會話密鑰。在步驟818,由應(yīng)用定位用于客戶機節(jié)點的公共密鑰, 以及在步驟820,為了數(shù)據(jù)機密性,通過使用公共密鑰值進一步加密 會話密鑰的加密形式。在步驟822,隨后將這次加密的結(jié)果發(fā)送給期 望的客戶機節(jié)點。應(yīng)用和客戶機然后使用會話密鑰值來簽名、驗證、加密、和/或解密在應(yīng)用與客戶機之間傳送的數(shù)據(jù)。以上詳細描述的是用于預(yù)先生成通用會話密鑰、在池中存儲這些 會話密鑰以供應(yīng)用存取、當(dāng)新的連接建立時得到會話密鑰、以及使用 會話密鑰與其它實體(例如,客戶機、節(jié)點等等)通信的能力。例如,需要對稱密鑰的應(yīng)用進入到其中大的對稱密鑰池可用于所述應(yīng)用的使 用的情形。當(dāng)不再需要對稱密鑰時,所述應(yīng)用退出這個情形,以及對 稱密鑰池被釋放或被存儲以供將來使用,這取決于應(yīng)用的請求。由主應(yīng)用代碼行(main-line application code)采取的唯一明顯行動,在本實 施例中,是創(chuàng)建高速緩存器上下文,檢索密鑰,可選的同步未使用的 對稱密鑰的存儲器內(nèi)池與盤上永久存儲裝置,以及終結(jié)高速緩存器上 下文。這些密鑰的實際創(chuàng)建、加密、補充和后臺同步在應(yīng)用過程本身 內(nèi),但以對于主應(yīng)用代碼行不可見的方式進行。為了完成對于主應(yīng)用代碼行是不可見的、但在應(yīng)用過程本身內(nèi)的 這些功能,使用了處理多線程。操作系統(tǒng)支持該處理多線程,以及以 線程安全的方式(thread-safe manner)實施所述應(yīng)用。以線程安全的方 式封裝被提供來保證高速緩存器上下文的數(shù)據(jù)結(jié)構(gòu),以及支持多線程 訪問。當(dāng)進入高速緩存器上下文時,共享的庫創(chuàng)建和啟動新的線程,其 負(fù)責(zé)保證對稱密鑰池被創(chuàng)建并包含足夠水平的密鑰。這個線程,被稱為主生成器線程,偶爾創(chuàng)建和終結(jié)在對于這些密鑰有需要時實際創(chuàng)建 這些對稱密鑰的同一個處理內(nèi)的其它線程。這些線程被稱為公共生成 器線程。當(dāng)高速緩存器上下文終結(jié)時,主生成器線程和任何其余的^> 共生成器線程也被終結(jié)。有利地,按照本發(fā)明的一個或多個方面,為了數(shù)據(jù)完整性,生成 被預(yù)加密的對稱密鑰池或高速緩存器。在一個例子中,這些密鑰用主 機私有密鑰被預(yù)加密,但是這些密鑰是通用的,這是因為它們可以使 用于主機希望與其通信的任何客戶機。因此,當(dāng)管理服務(wù)器從災(zāi)難性 故障恢復(fù)時,它僅僅從池中提取已經(jīng)用它的私有密鑰加密的密鑰;因 此,消除會話密鑰分發(fā)中的代價最高的部分。在一個實施例中,所述 池是存儲器內(nèi)高速緩存器,以及盤上(或其它存儲媒體上)的高速緩存 器。高速緩存器被存儲在盤或其它存儲媒體上,以保存在應(yīng)用的執(zhí)行 之間的密鑰,從而通過允許應(yīng)用加載密鑰的高速緩存器,而不是生成新的高速緩存器,來節(jié)省當(dāng)應(yīng)用重新啟動時的時間。在一個例子中,使用二進制格式來把高速緩存器存儲在盤上。在本例中,也使用主機字節(jié)排序(Host byte ordering),格式的這種選擇 使得高速緩存器更容易從庫進行保存。版本信息被存儲在二進制文件 中。這將允許所述庫檢測老的或新的高速緩存器文件格式,以及可以 從這些文件中提取它可以使用的那些信息。作為一個例子,文件格式使用自定義的數(shù)據(jù)字段。每個字段包括 字段標(biāo)識符和長度,其中數(shù)據(jù)值的長度是無法從字段標(biāo)識符中知道的。 文件的頭信息包括讀計數(shù)。這是每次文件被讀到存儲器中時增加以及 每次執(zhí)行文件同步時(通過主生成器線程處理,或明顯地通過例程)復(fù) 位的計數(shù)。這允許所述庫檢測完全相同的高速緩存器是否被應(yīng)用多次 再次使用。高的再次使用計數(shù)可以表示應(yīng)用可以在它更新它本身的高 速緩存器之前終結(jié);它也可以表示應(yīng)用被重復(fù)地啟動和停止以便檢測 它的數(shù)據(jù)流中的圖案和猜想被使用來保護數(shù)據(jù)的密鑰值。如果所述庫 檢測到已經(jīng)太頻繁地讀出完全相同的高速緩存器文件內(nèi)容,則所述庫 忽略該高速緩存器文件以及在存儲器中構(gòu)建新的高速緩存器。作為進一步的改進且為了提供附加的保密性,使得高速緩存器文 件的初始讀出隨機化。不是總是以與從高速緩存器文件中讀出密鑰的 次序相同的次序來排序存儲器內(nèi)高速緩存器,這個例程隨機地以任何 次序構(gòu)建高速緩存器。這有助于避免"猜想,,嘗試,即使在讀計數(shù)檢驗 失敗時也是如此。下面描述在盤上密鑰高速緩存器中記錄的數(shù)據(jù)的例子。文件從用 來檢驗文件的類型的數(shù)字開始。下一段信息代表文件的版本。接著的 信息段包括會話密鑰的類型;從這個文件讀出的數(shù)目(在每次寫入時 復(fù)位);在高速緩存器文件中密鑰的數(shù)目;預(yù)加密密鑰挑戰(zhàn) (challenge)(用預(yù)加密密鑰加密的密鑰計數(shù));密鑰二元組的集合(與密 鑰計數(shù)相同數(shù)目的密鑰)常數(shù)格式版本id數(shù)值由在高速緩存器中的會話密鑰使用的密鑰類型計數(shù) 時復(fù)位) 計數(shù) 數(shù)值 [數(shù)據(jù): 數(shù)值 [數(shù)據(jù): 數(shù)值數(shù)據(jù): 數(shù)值自從最后的修改以來這個文件被讀出的次數(shù)的計數(shù)(在寫在高速緩存器中的密鑰的計數(shù) 預(yù)加密密鑰挑戰(zhàn)的長度(可能是0) 預(yù)加密密鑰挑戰(zhàn)(如果長度是O,則省略) 會話密鑰的長度(在本例中,不能是0) 會話密鑰(可能)加密的整理排序(marshal)的密鑰的長度 會話密鑰(可能)加密的整理排序的密鑰的長度[等等I[文件結(jié)束當(dāng)發(fā)生同步時,文件的整個內(nèi)容用存儲器密鑰高速緩存器上下文 的內(nèi)容代替。換句話說,它是重疊的。在本實施例中,所述庫不試圖 搜索高速緩存器文件來檢測哪些密鑰已被使用以及哪些密鑰仍舊未被 使用。這個方法在同步期間提供更大的性能。以上詳細地描述了有效地提供在通信環(huán)境內(nèi)通信時要使用的會話 密鑰的能力。雖然以上描述了例子和各種實施例,但這些僅僅是例子。 對于這些例子的許多變型可被包括在本發(fā)明的一個或多個方面中。例 如,這里描述的環(huán)境僅僅是一個例子。其它類型的節(jié)點、服務(wù)器或客 戶機可以從本發(fā)明的一個或多個方面獲益。另外,更多、更少或不同 的實體可被包括在所述環(huán)境中,并且互相通信。作為另一個例子中,可以按照本發(fā)明的一個或多個方面使用不同類型的密鑰,其包括不同 類型的會話密鑰。雖然會話密鑰池的結(jié)構(gòu)是高速緩存器結(jié)構(gòu),但再一 次地,這僅僅是一個例子??梢允褂闷渌Y(jié)構(gòu)而不背離本發(fā)明的精神。 而且,雖然在一個實施方案中,使用庫和多線程應(yīng)用,但再一次地, 這些僅僅是例子。可以使用其它類型的應(yīng)用,其包括非庫應(yīng)用(non-library application),再者,雖然提供了密鑰生成和加密的例子, 但可以使用任何技術(shù)來生成和/或加密密鑰或其它數(shù)據(jù)。如這里使用的 加密意欲包括被使用來保護數(shù)據(jù)的任何技術(shù)。而且,雖然這里使用了 密鑰,但本發(fā)明的一個或多個方面可被應(yīng)用于其它類型的數(shù)據(jù)。也存 在許多其它變型。有利地,通過使用這個能力,當(dāng)管理服務(wù)器或其它實體從災(zāi)難性 故障恢復(fù)時,它僅僅從池中提取已經(jīng)用服務(wù)器的(或其它實體的)私有 密鑰加密的密鑰,由此消除會話密鑰分發(fā)的代價最高的部分。被提取 的密鑰是通用的,原因在于它不依賴于一個特定的客戶機或分發(fā)實體, 所以,池的搜索是不必要的。然而,為了提供進一步的保密性,密鑰 一旦被提取,就在發(fā)送到實體之前用期望的實體的公共密鑰對其進行 加密。有利地,本發(fā)明的一個或多個方面使得能夠預(yù)生成大量會話密鑰 并將其保存在密鑰池中供以后使用。在池中的密鑰是通用的,但一旦 被選擇和處理,就提供在成對的實體之間的唯一加密密鑰。因此,要 通信的每對實體具有它自己的唯一密鑰。通過預(yù)生成和簽名池中的會話密鑰,開銷被減小,從而一旦密鑰被使用,就使得性能問題最小化 和保證保密性和完整性。這個能力對于所有類型的系統(tǒng)一包括例如具有單個行政控制點的集群式和分布式系統(tǒng)一是有利的。有利地,密鑰 池是按要求可得到的,并在重新啟動中心控制點之間是持久的。再一 次地,這增強了性能和減小了復(fù)雜性。本發(fā)明的一個或多個方面的能力可以以軟件、固件、硬件或它們 的某些組合被實施。本發(fā)明的一個或多個方面可被包括在例如具有計算機可用媒體的 制造物品(例如, 一個或多個計算機程序產(chǎn)品)中。媒體在其中具有例 如計算機可讀程序代碼裝置或邏輯(例如,指令、代碼、命令等等),以提供和實行本發(fā)明的能力??勺鳛橛嬎銠C系統(tǒng)的一部分包括制造物 品或?qū)⑵鋯为氫N售。另外,可以提供由體現(xiàn)可由執(zhí)行本發(fā)明的能力的機器執(zhí)行的指令的至少 一個程序的機器可讀的至少 一個程序存儲裝置。這里顯示的流程圖僅僅是例子。對于這里描述的這些圖或步驟(或操作)可以有許多變型而不背離本發(fā)明的精神。例如,這些步驟可以以不同的次序執(zhí)行,或步驟可被添加、刪除或修改。所有這些變型都被看作為所要求的發(fā)明的一部分。雖然這里詳細地顯示和描述了優(yōu)選實施例,但本領(lǐng)域技術(shù)人員將會明白,可以作出各種修改、添加、替換等等而不背離本發(fā)明的精神,因此,這些修改、添加、替換應(yīng)當(dāng)被看作是在以下的權(quán)利要求中限定的本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種提供在通信環(huán)境中通信時使用的會話密鑰的方法,所述方法包括加密多個會話密鑰以提供在通信環(huán)境的第一實體與通信環(huán)境的一個或多個第二實體之間通信時使用的多個預(yù)加密的會話密鑰,所述多個預(yù)加密的會話密鑰是獨立于該一個或多個第二實體生成的通用會話密鑰;以及響應(yīng)于對于會話密鑰的請求,把多個預(yù)加密的會話密鑰保存在會話密鑰池中以供使用。
2. 權(quán)利要求1的方法,其中多個會話密鑰包括多個對稱會話密鑰。
3. 權(quán)利要求1的方法,其中會話密鑰池包括多個會話密鑰二元組, 其中多個會話密鑰二元組的一個會話密鑰二元組包括多個預(yù)加密的會 話密鑰中的一個預(yù)加密的會話密鑰和該預(yù)加密的會話密鑰的未加密形 式。
4. 權(quán)利要求l的方法,還包括把多個預(yù)加密的會話密鑰中的一 個預(yù)加密的會話密鑰發(fā)送到所述一個或多個第二實體中的一個第二實 體,其中所述發(fā)送包括在發(fā)送該預(yù)加密的會話密鑰之前進一步加密 該預(yù)加密的會話密鑰。
5. 權(quán)利要求4的方法,其中通過使用第一實體的私有密鑰來加密 該預(yù)加密的會話密鑰,以提供預(yù)加密的會話密鑰,以及所述進一步加 密包括在發(fā)送之前,用第二實體的公共密鑰加密該預(yù)加密的會話密 鑰。
6. 權(quán)利要求4的方法,其中所述發(fā)送包括從會話密鑰池中提取 要發(fā)送的預(yù)加密的會話密鑰,所述提取任意選擇預(yù)加密的會話密鑰, 其中被提取的預(yù)加密的會話密鑰不依賴于第二實體。
7. 權(quán)利要求6的方法,其中所述提取包括從會話密鑰池中刪除 所提取的預(yù)加密的會話密鑰。
8. 權(quán)利要求l的方法,還包括管理會話密鑰池,其中所述管理包括響應(yīng)于定義的條件,把一個或多個預(yù)加密的會話密鑰添加到會 話密鑰池中。
9. 權(quán)利要求8的方法,其中所述管理包括響應(yīng)于在會話密鑰池 中檢測到不足數(shù)目的預(yù)加密的會話密鑰,自動添加一個或多個預(yù)加密 的會話密鑰。
10. 權(quán)利要求l的方法,其中會話密鑰池被存儲在存儲器內(nèi),并 且其中,該方法還包括提供存儲器內(nèi)會話密鑰池的永久存儲裝置。
11. 權(quán)利要求l的方法,其中通信環(huán)境包括集群環(huán)境,第一實體 包括集群環(huán)境的服務(wù)器,以及所述一個或多個第二實體包括被耦合到 第一實體的集群環(huán)境的一個或多個客戶機。
12. —種設(shè)備,包括適合于執(zhí)行按照任一前述方法權(quán)利要求的方 法的所有步驟的裝置。
13. —種計算機程序,包括用于當(dāng)在計算機系統(tǒng)上執(zhí)行所述計算 機程序時執(zhí)行按照任一前述方法權(quán)利要求的方法的所有步驟的指令。
全文摘要
預(yù)先生成通用會話密鑰并將其存儲在會話密鑰池中以供以后在通信環(huán)境內(nèi)通信時使用。用存儲這些密鑰的實體的私有密鑰預(yù)加密存儲在所述池中的會話密鑰。為了在實體之間通信,從池中提取預(yù)加密的會話密鑰,然后用目的地實體的公共密鑰對其進一步加密,以保證數(shù)據(jù)完整性和數(shù)據(jù)機密性。然后將加密的密鑰轉(zhuǎn)發(fā)到目的地實體并在兩個實體之間的通信期間使用該加密的密鑰。
文檔編號H04L9/08GK101268653SQ200680034178
公開日2008年9月17日 申請日期2006年9月5日 優(yōu)先權(quán)日2005年9月29日
發(fā)明者C·德羅伯蒂斯, S·馬伊林, 小R·根斯勒 申請人:國際商業(yè)機器公司