專利名稱:用于管理和自動(dòng)生成加密密鑰的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)系統(tǒng)內(nèi)的加密領(lǐng)域。更特別地說,本發(fā)明涉及計(jì) 算系統(tǒng)中的加密密鑰管理和生成。
背景技術(shù):
許多不同類型的計(jì)算系統(tǒng)已經(jīng)在世界范圍內(nèi)得到廣泛使用。這些計(jì) 算系統(tǒng)包括個(gè)人計(jì)算機(jī)、服務(wù)器、大型機(jī)、各種單機(jī)和內(nèi)置的計(jì)算裝置。
伸展的客戶端-服務(wù)器系統(tǒng)的存在,使得應(yīng)用和信息遍布于多個(gè)PC網(wǎng)
絡(luò)、大型計(jì)算機(jī)、小型計(jì)算機(jī)之上。在一個(gè)通過網(wǎng)絡(luò)連接的分布式系統(tǒng)
中,用戶可以訪問多個(gè)應(yīng)用程序、數(shù)據(jù)庫、網(wǎng)絡(luò)系統(tǒng)、操:作系統(tǒng)和大型 計(jì)算機(jī)應(yīng)用。計(jì)算機(jī)向個(gè)體或企業(yè)提供許多軟件應(yīng)用,包括文字處理、 電子制表以及計(jì)帳。此外,網(wǎng)絡(luò)使處在不同地域的人能夠通過電子郵件、 網(wǎng)站、即時(shí)消息傳送以及網(wǎng)上會(huì)議進(jìn)行高速通信。
高性能單片機(jī)微處理器的普通架構(gòu)是精簡指令集計(jì)算機(jī)(RISC)架 構(gòu),其特征是供快速執(zhí)行的一小組簡化的頻繁使用指令。因而,在RISC 架構(gòu)中,復(fù)雜的指令包括一小組分步驟非??焖賵?zhí)行的簡單指令。在適 合執(zhí)行特定筒單指令的執(zhí)行單元中完成這些步驟。在超標(biāo)量架構(gòu)中,這 些執(zhí)行單元典型地包括并行操作的載入/存儲(chǔ)單元、整數(shù)算術(shù)/邏輯單元、 浮點(diǎn)算術(shù)/邏輯單元以及圖形邏輯單元。在處理器架構(gòu)中,操作系統(tǒng)控制 處理器的操作和處理器的外圍組件。將可執(zhí)行的應(yīng)用程序存儲(chǔ)在計(jì)算機(jī) 硬盤驅(qū)動(dòng)器中。響應(yīng)于用戶輸入,計(jì)算機(jī)處理器使應(yīng)用程序運(yùn)行。
因而,在現(xiàn)代的系統(tǒng)中,多個(gè)計(jì)算機(jī)一包括服務(wù)器一通過網(wǎng)絡(luò)連接 在一起。每個(gè)計(jì)算機(jī)可以運(yùn)行用于完成某項(xiàng)功能的應(yīng)用程序。這些應(yīng)用 程序可以包括文字處理、電子郵件、圖形制作、文檔查看和標(biāo)記、電子 制表、數(shù)據(jù)庫、音樂播放器、因特網(wǎng)瀏覽器、照片處理(photo-shop)、
游戲、反病毒程序,以及由于太多而沒有提到的許多其他應(yīng)用程序。許 多應(yīng)用程序完成程序數(shù)據(jù)的加密和/或解密。例如,電子郵件發(fā)送器可以 在將電子郵件向接受者發(fā)送前加密電子郵件。加密電子郵件的接受者將 需要解密從發(fā)送器接收到的加密電子郵件。在另一種應(yīng)用中,發(fā)送器可 以在發(fā)送一個(gè)文件之前對該文件進(jìn)行數(shù)字簽名。數(shù)字簽名的操作包括加 密。也能夠通過加密驗(yàn)證數(shù)字簽名。通過應(yīng)用程序使用加密的其他例子 大量存在。
為了完成加密和/或解密,應(yīng)用程序必須具有一個(gè)密鑰,并必須遵循 使用該密鑰完成加密/解密的已知算法。因此,應(yīng)用程序可以處理要求加 密的敏感數(shù)據(jù)。例如,應(yīng)用程序可以加密一個(gè)文件。該加密文件防止沒 有密鑰的人閱讀該文件。同樣可以對文件中的數(shù)據(jù)進(jìn)行簽名。在對數(shù)據(jù) 進(jìn)行簽名后,不能在不被察覺的情況下修改數(shù)據(jù)。
隨著因特網(wǎng)的出現(xiàn)和計(jì)算機(jī)的廣泛使用,越來越多的商業(yè)事務(wù)電子 地發(fā)生。為了推動(dòng)這種"電子商務(wù)",計(jì)算網(wǎng)絡(luò)采用加密和數(shù)字簽名。加 密能夠使用戶隱藏在網(wǎng)絡(luò)上傳輸?shù)南?。解密能夠從消息的加密副本?恢復(fù)原始消息。數(shù)字簽名使用戶能夠電子地給文件簽名。形成數(shù)字簽名 包括公共密鑰密碼系統(tǒng)中的加密。該系統(tǒng)采用一種算法,該算法使用兩 種不同的但在數(shù)學(xué)上相關(guān)的"密鑰", 一個(gè)用于創(chuàng)建數(shù)字簽名,另一個(gè)用 于驗(yàn)證數(shù)字簽名。經(jīng)常將利用這兩種密鑰的計(jì)算機(jī)設(shè)備和軟件共同地稱 為"非對稱密碼系統(tǒng)"。
用于數(shù)字簽名的非對稱密碼系統(tǒng)的互補(bǔ)密鑰稱為私人密鑰和公共密 鑰。簽名者使用私人密鑰創(chuàng)建數(shù)字簽名。理論上,只有該簽名者能夠訪 問他的私人密鑰。公共密鑰通常為更多人所知。依賴于簽名的一方使用 公共密鑰來驗(yàn)證數(shù)字簽名。盡管該對密鑰在數(shù)學(xué)上相關(guān),但是從公共密 鑰導(dǎo)出私人密鑰在計(jì)算上是不可行的。因此,盡管很多人可能知道特定 簽名者的公共密鑰,并且能夠使用它驗(yàn)證簽名者的簽名,但是他們不能 訪問簽名者的私人密鑰,偽造簽名者的數(shù)字簽名。這是"不可逆性"原 則。
用于創(chuàng)建和驗(yàn)證數(shù)字簽名的基本處理是"雜湊函數(shù)"。雜湊函數(shù)是一
種算法,它創(chuàng)建一種采用"雜湊結(jié)果"形式的數(shù)字表示或"指紋"。該雜 湊結(jié)果通常比消息小很多,然而對消息而言基本是唯一的。使用簽名者 私人密鑰加密這個(gè)雜湊結(jié)果,創(chuàng)建數(shù)字簽名。在使用相同雜湊函數(shù)時(shí), 消息的任何改變總是產(chǎn)生不同的雜湊結(jié)果。對于一種可靠的雜湊函數(shù), 從它的雜湊值導(dǎo)出原始消息在計(jì)算上是不可行的。因此雜湊函數(shù)使創(chuàng)建 數(shù)字簽名的軟件能夠在更少且可預(yù)知數(shù)量的數(shù)據(jù)上操作,同時(shí)仍舊提供 與原始消息內(nèi)容的魯棒的證據(jù)相關(guān)性。
為了對文檔或信息的任何其他項(xiàng)目進(jìn)行簽名,簽名者首先要精確地 劃定出將要簽名的界限。將要簽名的已劃定界限信息稱為"消息"。然后 簽名者的軟件中的雜湊函數(shù)計(jì)算出對該消息唯一 的(對于所有實(shí)際目的) 雜湊結(jié)果。然后簽名者的軟件使用簽名者的私人密鑰將雜湊結(jié)果加密成 一個(gè)數(shù)字簽名。因此,得到的數(shù)字簽名對于該消息和創(chuàng)建數(shù)字簽名時(shí)所 用的私人密鑰來說都是唯一的。
當(dāng)簽名者發(fā)送一個(gè)已簽名消息時(shí),同樣發(fā)送一個(gè)無簽名消息。接受 者通過使用用戶的公共密鑰解密加密的雜湊來驗(yàn)證該簽名。接受者同樣 對無簽名消息進(jìn)行雜湊。然后比較兩種雜湊結(jié)果。只有當(dāng)兩種雜湊結(jié)果 相同時(shí),簽名才通過驗(yàn)證。雜湊結(jié)果相同意味著,經(jīng)發(fā)送者簽名的消息 是接受者所接收的那條消息。然后,發(fā)送者不能否認(rèn)他對接受者接收并 驗(yàn)證了的消息進(jìn)行過簽名。數(shù)字簽名的驗(yàn)證者必須確信該簽名是特定人 員做出的。這種保證由值得信任的第三方給出,第三方簽發(fā)證書,該證 書證明能夠使用證書中指定的公共密鑰驗(yàn)證的簽名屬于證書中標(biāo)明的一 方。
因此,許多應(yīng)用程序必須具有密鑰以對文檔、文件和數(shù)據(jù)塊進(jìn)行加 密和簽名。需要管理和生成這些密鑰的方法。
發(fā)明內(nèi)容
本發(fā)明提供用于管理和生成用于加密的密鑰的系統(tǒng)、方法和介質(zhì)。 在一個(gè)實(shí)施例中,加密密鑰管理系統(tǒng)包括密鑰管理器。該密鑰管理器確 定是否授權(quán)請求一個(gè)或多個(gè)密鑰的應(yīng)用程序接收所請求的一個(gè)或多個(gè)密
鑰,如果授權(quán),那么產(chǎn)生一個(gè)發(fā)送到應(yīng)用程序的密鑰映射。該系統(tǒng)包括 在可預(yù)定的時(shí)間對至少一個(gè)密鑰生成事件進(jìn)行調(diào)度的密鑰調(diào)度器。密鑰 生成器在所調(diào)度的密鑰生成事件中生成密鑰。生成的密鑰與密鑰集和密 鑰集組相關(guān)聯(lián)。密鑰集包括一個(gè)或多個(gè)密鑰,密鑰集組包括一個(gè)或多個(gè) 密鑰集。密鑰存儲(chǔ)器存儲(chǔ)生成的密鑰連同該密鑰的屬性,使得每個(gè)密鑰 與該密鑰的一組屬性相關(guān)聯(lián)。密鑰屬性可以包括別名、版本和該密鑰所 屬密鑰集的名稱。
實(shí)施例包括一種用于管理和生成密鑰的方法。該方法包括從應(yīng)用程 序接收對提供與密鑰集或密鑰集組相關(guān)聯(lián)的密鑰的調(diào)用。 一個(gè)密鑰集包 括至少一個(gè)密鑰, 一個(gè)密鑰集組包括至少一個(gè)密鑰集。該方法包括確定 應(yīng)用程序是否在針對關(guān)聯(lián)密鑰集或密鑰集組指定的范圍內(nèi)。如果應(yīng)用處 在指定范圍內(nèi),則產(chǎn)生與該密鑰集或密鑰集組相關(guān)聯(lián)的密鑰的映射。該 方法還包括,根據(jù)可指定的調(diào)度,生成包含在密鑰集或密鑰集組中的密 鑰。
本發(fā)明的另 一個(gè)實(shí)施例提供了 一種包括指令的計(jì)算機(jī)程序產(chǎn)品,該 指令在數(shù)據(jù)處理系統(tǒng)中執(zhí)行時(shí),有效地使系統(tǒng)完成一 系列用于管理和生 成加密密鑰的操作。這一 系列操作通常包括從應(yīng)用程序接收提供密鑰集 或密鑰集組中的 一個(gè)或多個(gè)密鑰的請求。操作還包括確定應(yīng)用程序是否 在針對密鑰集或密鑰集組指定的范圍內(nèi)。如果應(yīng)用在指定范圍內(nèi),則這 一系列操作包括產(chǎn)生所請求密鑰的映射。范圍被定義為各種不同的分組,
例如進(jìn)程(Java進(jìn)程)、節(jié)點(diǎn)(在一個(gè)特定機(jī)器上的所有Java進(jìn)程)、節(jié) 點(diǎn)分組(多于一個(gè)節(jié)點(diǎn))、集群(與一個(gè)特定應(yīng)用相關(guān)的一組Java進(jìn)程), 或小區(qū)(包括整個(gè)環(huán)境的一組節(jié)點(diǎn))。指定范圍可以是這些中的任何一種。 基于指定范圍,這確定密鑰集或密鑰集組的用于隔離目的的可見性。該 才喿作還包括根據(jù)預(yù)定調(diào)度生成密鑰集的新密鑰。相應(yīng)地,映射可以包括 最新生成的密鑰和較舊的密鑰。
通過閱讀下列詳細(xì)描述和參考附圖,本發(fā)明的優(yōu)點(diǎn)將變得很明顯,
附圖中相似的參考標(biāo)號可以指示相似的單元。
圖1描述了網(wǎng)絡(luò)中的數(shù)字系統(tǒng)的實(shí)施例;該數(shù)字系統(tǒng)能夠執(zhí)行加密 密鑰管理軟件。
圖2描述了與接口模塊通信的加密密鑰處理器的實(shí)施例。 圖2A描述了密鑰管理器的框圖。
圖3描述了用于獲取應(yīng)用程序所請求密鑰的實(shí)施例的流程圖。 圖4描述了用于調(diào)用和選擇密鑰的接口模塊的操作的實(shí)施例的流 程圖。
圖5描述了根據(jù)調(diào)度生成新密鑰的實(shí)施例的流程圖。
具體實(shí)施例方式
下面是對附圖中所述的本發(fā)明示例性實(shí)施例的詳細(xì)描述。如此詳細(xì) 的示例性實(shí)施例是為了清楚地揭示本發(fā)明。然而,提出大量詳細(xì)描述的 意圖不是要限制實(shí)施例的預(yù)期變化;而正相反,這樣做的意圖是覆蓋落 入由所附權(quán)利要求定義的本發(fā)明的精神和范圍內(nèi)的所有修改、等效形式 以及替代方案。為了將不同實(shí)施例清楚地呈現(xiàn)給本領(lǐng)域普通技術(shù)人員, 設(shè)計(jì)了下面的詳細(xì)描述。
公開了用于管理和生成加密密鑰的系統(tǒng)、方法和介質(zhì)。在一個(gè)實(shí)施 例中,處理器執(zhí)行加密密鑰處理計(jì)算機(jī)代碼,以接收來自應(yīng)用程序的密 鑰請求。處理器確定發(fā)出請求的應(yīng)用程序是否在經(jīng)授權(quán)接收所請求密鑰 的機(jī)器范圍內(nèi)的節(jié)點(diǎn)或服務(wù)器上執(zhí)行。如果是這樣,處理器產(chǎn)生一個(gè)密 鑰映射并將密鑰映射發(fā)送到應(yīng)用程序,使應(yīng)用程序能夠獲得密鑰映射中 的一個(gè)或多個(gè)密鑰。根據(jù)可指定的調(diào)度自動(dòng)更新密鑰。因此,應(yīng)用程序 可以接收最新和/或較舊的密鑰??梢愿鶕?jù)調(diào)度生成密鑰,以確保密鑰足 夠新,使得沒有暴力攻擊可以將它們計(jì)算出來。這種4乘作也允許系統(tǒng)更 有規(guī)律地改變密鑰,這可以實(shí)現(xiàn)更短的密鑰長度,改進(jìn)加密性能,并仍 維持高安全級別。
圖1示出了一種數(shù)字系統(tǒng)116 (本文中有時(shí)稱為機(jī)器),例如根據(jù)本 發(fā)明一種實(shí)施例實(shí)現(xiàn)的計(jì)算機(jī)或服務(wù)器。數(shù)字系統(tǒng)116包括處理器100,該處理器能夠根據(jù)BIOS(基本輸入/輸出系統(tǒng))代碼104和,操作系統(tǒng)(OS ) 代碼106進(jìn)行操作。將BIOS代碼和OS代碼存儲(chǔ)在存儲(chǔ)器108中。BIOS 代碼典型地存儲(chǔ)在只讀存儲(chǔ)器(ROM)上,OS代碼典型地存儲(chǔ)在計(jì)算 機(jī)系統(tǒng)116的硬盤驅(qū)動(dòng)器上。數(shù)字系統(tǒng)116包括物理地接近處理器100 而定位的二級(L2)高速緩沖存儲(chǔ)器102。存儲(chǔ)器108也存儲(chǔ)供處理器 100執(zhí)行的其他程序,并存儲(chǔ)數(shù)據(jù)109。
在一個(gè)實(shí)施例中,存儲(chǔ)器108存儲(chǔ)用以管理和生成加密密鑰的計(jì)算 機(jī)代碼107,下文將對其進(jìn)行描述。這種計(jì)算機(jī)代碼引起處理器執(zhí)行指 令,完成多種加密密鑰管理和加密密鑰生成功能。例如,處理器100執(zhí) 行代碼,以產(chǎn)生密鑰集或密鑰集組中的一組密鑰。處理器100也執(zhí)行代 碼,以將密鑰和它的各種屬性相關(guān)聯(lián)。處理器100也執(zhí)行代碼,以確定 調(diào)用密鑰的應(yīng)用是否在指定范圍內(nèi)。處理器100也確定密鑰生成事件的 時(shí)間。
處理器100包括片上一級(Ll)高速緩沖存儲(chǔ)器190、指令獲取程 序130、控制電路160以及執(zhí)行單元150。 一級高速緩沖存儲(chǔ)器190接收 并存儲(chǔ)接近執(zhí)行時(shí)間的指令。指令獲取程序130從存儲(chǔ)器中獲取指令。 執(zhí)行單元150完成指令調(diào)用的操作。在一個(gè)實(shí)施例中,這些指令包括用 于識別接口模塊所命名密鑰集或密鑰集組的指令。這些指令引起處理器 100確定是否授權(quán)發(fā)出請求的應(yīng)用程序接收所請求的密鑰。這些指令還 S1起處理器100從密鑰存儲(chǔ)器中獲取所請求密鑰并由此產(chǎn)生密鑰映射。
執(zhí)行單元150可以包括載入/存儲(chǔ)單元、整數(shù)算術(shù)/邏輯單元、浮點(diǎn) 算術(shù)/邏輯單元以及圖形邏輯單元。每個(gè)執(zhí)行單元包括完成指令獲取程序 130所獲取指令的執(zhí)行中各步驟的各級。在超標(biāo)量架構(gòu)中,不同執(zhí)行單 元并行地操作。因此,執(zhí)行單元150包括一組不同類型的才喿作單元,這 些操作單元并行地執(zhí)行指令,實(shí)現(xiàn)加密密鑰管理處理。
控制電路160控制指令獲取程序130和執(zhí)行單元150??刂齐娐?60 也從執(zhí)行單元150接收與控制決定相關(guān)的信息。例如,在執(zhí)行管道 (pipeline )中發(fā)生數(shù)據(jù)高速緩沖存儲(chǔ)器丟失的情況下,通報(bào)控制電路160 處理暫停。 數(shù)字系統(tǒng)116還典型地包括其他沒有示出的組件和子系統(tǒng),例如 可信平臺模塊、存儲(chǔ)器控制器、隨機(jī)訪問存儲(chǔ)器(RAM)、外圍設(shè)備驅(qū) 動(dòng)器、系統(tǒng)監(jiān)視器、鍵盤、彩色視頻監(jiān)視器、 一個(gè)或多個(gè)軟盤驅(qū)動(dòng)器、 一個(gè)或多個(gè)可移動(dòng)非易失性介質(zhì)驅(qū)動(dòng)器例如硬盤硬件驅(qū)動(dòng)器、CD和 DVD驅(qū)動(dòng)器、指針設(shè)備例如鼠標(biāo)以及網(wǎng)絡(luò)接口適配器等等。數(shù)字系統(tǒng) 116可以包括個(gè)人計(jì)算機(jī)、工作站、服務(wù)器、大型計(jì)算機(jī)、筆記本計(jì)算 機(jī)或膝上式計(jì)算機(jī)、桌上型計(jì)算機(jī),等等。處理器100還可以經(jīng)由輸入/ 輸出裝置IIO與服務(wù)器112通信。服務(wù)器112連接系統(tǒng)U6與其他計(jì)算 機(jī)和服務(wù)器114。因此,數(shù)字系統(tǒng)116可以在一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中,例如 因特網(wǎng)和/或局域內(nèi)部網(wǎng)。此外,服務(wù)器112可以控制對其他存儲(chǔ)器的訪 問,包括磁帶驅(qū)動(dòng)器存儲(chǔ)器、硬盤陣列、RAM、 ROM,等等。
因此,在數(shù)字系統(tǒng)116的一種操作模式中,L2高速緩沖存儲(chǔ)器從存 儲(chǔ)器108中接收數(shù)據(jù)和指令,準(zhǔn)備在處理器100的處理器管道中處理這 些數(shù)據(jù)和指令。L2高速緩沖存儲(chǔ)器102是快速存儲(chǔ)器,物理地接近處理 器100以獲得更快的速度。L2高速緩沖存儲(chǔ)器從存儲(chǔ)器108中接收用于 多個(gè)指令線程的指令。這種指令可以包括載入和存儲(chǔ)指令、分支指令、 算術(shù)邏輯指令、浮點(diǎn)指令,等等。Ll高速緩沖存儲(chǔ)器190位于處理器中, 包含優(yōu)選地從L2高速緩沖存儲(chǔ)器102中接收的數(shù)據(jù)和指令。理論上, 隨著時(shí)間接近程序指令的執(zhí)行時(shí)間,將連同數(shù)據(jù)(如果存在) 一起傳遞 指令,首先傳遞到L2高速緩沖存儲(chǔ)器,然后隨著執(zhí)行時(shí)間的臨近,傳 遞到Ll高速緩沖存儲(chǔ)器。
執(zhí)行單元150執(zhí)行從L1高速緩沖存儲(chǔ)器190中接收到的指令。執(zhí) 行單元150的每個(gè)單元適合執(zhí)行一組指定指令。將指令提交到并行執(zhí)行 的不同執(zhí)行單元??稍谡麛?shù)寄存器文件和浮點(diǎn)寄存器文件(沒有示出) 中存儲(chǔ)和存取執(zhí)行單元150處理的數(shù)據(jù)。存儲(chǔ)在這些寄存器文件中的數(shù) 據(jù)也可以來自或被傳送到板上Ll高速緩沖存儲(chǔ)器190或者外部高速緩 沖存儲(chǔ)器或存儲(chǔ)器。處理器可以通過執(zhí)行載入指令將數(shù)據(jù)從存儲(chǔ)器例如 Ll高速緩沖存儲(chǔ)器中載入到處理器寄存器。處理器可以通過執(zhí)行存儲(chǔ)指 令將數(shù)據(jù)從寄存器存儲(chǔ)到存儲(chǔ)器。
數(shù)字系統(tǒng)116將具有它自己的存儲(chǔ)器,用于存儲(chǔ)它的操作系統(tǒng)、 BIOS、執(zhí)行應(yīng)用程序代碼、加密密鑰處理代碼以及文件和數(shù)據(jù)。計(jì)算機(jī) 的存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)、以DRAM和SRAM實(shí)現(xiàn)的高速緩 沖存儲(chǔ)器、硬盤驅(qū)動(dòng)器、CD驅(qū)動(dòng)器和DVD驅(qū)動(dòng)器。服務(wù)器也具有它自 己的存儲(chǔ)器,并可以控制對其他存儲(chǔ)器例如磁帶驅(qū)動(dòng)器和硬盤陣列的訪 問。每個(gè)計(jì)算機(jī)可以存儲(chǔ)和執(zhí)行它自己的應(yīng)用程序。 一些應(yīng)用程序,例 如數(shù)據(jù)庫,可以駐留在服務(wù)器中。因此,每個(gè)計(jì)算機(jī)可以訪問存儲(chǔ)在服
務(wù)器中的同一數(shù)據(jù)庫。另外,每個(gè)計(jì)算機(jī)可以經(jīng)由服務(wù)器訪問其他存儲(chǔ) 器。
機(jī)器116可以存儲(chǔ)用于管理和生成密鑰的計(jì)算機(jī)代碼107。處理器 100執(zhí)行這些計(jì)算機(jī)代碼,以生成、指定和提供對根據(jù)調(diào)度所生成的加 密密鑰的限制訪問。圖2示出了用于管理、生成,和傳送密鑰的實(shí)施例 的框圖。這里有一個(gè)用于管理和生成加密密鑰的加密密鑰處理器200。 還有一個(gè)與加密密鑰處理器200通信的接口模塊250。加密密鑰處理器 是這樣一個(gè)處理器,它執(zhí)行用于管理和生成加密密鑰并將這些密鑰傳送 到發(fā)出請求的接口模塊的計(jì)算機(jī)代碼。接口模塊是由處理器執(zhí)行以在運(yùn) 行中的應(yīng)用程序和系統(tǒng)的剩余部分之間提供接口的計(jì)算機(jī)代碼。在操作 期間,使用接口模塊的應(yīng)用程序可以從加密密鑰處理器中請求用于加密 和/或數(shù)字簽名的加密密鑰。
在一個(gè)實(shí)施例中,由執(zhí)行接口模塊軟件的同 一處理器執(zhí)行加密密鑰 處理軟件。加密密鑰處理器在后臺操:作。在另一個(gè)實(shí)施例中,加密密鑰 處理軟件在一個(gè)數(shù)字系統(tǒng)的處理器上運(yùn)行,而接口模塊軟件在另一個(gè)數(shù) 字系統(tǒng)的處理器上運(yùn)行。因此,加密密鑰處理器能夠管理多個(gè)其他計(jì)算 機(jī)和服務(wù)器的密鑰并確定將所請求的密鑰授予哪些計(jì)算機(jī)和服務(wù)器。
加密密鑰處理器200包括密鑰管理器202。密鑰管理器202完成涉 及生成和管理密鑰的多個(gè)功能。密鑰管理器202的 一 項(xiàng)功能是根據(jù)系統(tǒng) 管理員的規(guī)定將密鑰與它們各自的屬性相關(guān)聯(lián)。密鑰屬性包括密鑰所屬 密鑰集的名稱、密鑰的別名、密鑰口令、跟蹤的密鑰參考(key reference) 的數(shù)量、密鑰的訪問范圍,等等。通過接口模塊從應(yīng)用中接收對一個(gè)或
多個(gè)密鑰的請求時(shí),調(diào)用由密鑰管理器202執(zhí)行的方法,以產(chǎn)生指定密 鑰集或密鑰集組中的可用密鑰的映射。但是首先,密鑰管理器202確定 是否授權(quán)發(fā)出請求的機(jī)器接收一個(gè)或多個(gè)所請求的密鑰。如果是這樣, 那么產(chǎn)生可用密鑰映射。然后接口模塊250在映射中識別出它所需的密 鑰。如果發(fā)出請求的機(jī)器不在請求密鑰的指定范圍內(nèi),那么密鑰管理器 202將"請求未授權(quán)"的消息發(fā)送到發(fā)出請求的接口模塊。
密鑰存儲(chǔ)器204存儲(chǔ)密鑰和密鑰別名。密鑰存儲(chǔ)器204可以存儲(chǔ)至 少兩類密鑰。 一類是用于加密和解密數(shù)據(jù)的單一密鑰。這類密鑰這里稱 為秘密密鑰。密鑰存儲(chǔ)器204也存儲(chǔ)公共/私人加密系統(tǒng)的密鑰對。在這 樣一個(gè)系統(tǒng)中,密鑰對中的一個(gè)密鑰是私人密鑰,密鑰對中的另一個(gè)密 鑰是公共密鑰。私人密鑰的擁有者秘密保存私人密鑰并使用它對數(shù)據(jù)進(jìn) 行加密和/或簽名。公共密鑰比私人密鑰更廣泛地為人所知并能夠用于解 密數(shù)據(jù)和驗(yàn)證簽名。密鑰存儲(chǔ)器204也存儲(chǔ)由密鑰管理器202關(guān)聯(lián)到每 個(gè)密鑰的屬性。這些屬性包括密鑰別名、密鑰集名稱,和密鑰集組名稱。 應(yīng)該注意,密鑰存儲(chǔ)器204可以是執(zhí)行加密密鑰軟件的同 一機(jī)器中的存 儲(chǔ)器,如圖2中示出的那樣,或者密鑰存儲(chǔ)器可以是位于另一個(gè)機(jī)器中 的存儲(chǔ)器。如果是遠(yuǎn)程的密鑰存儲(chǔ)器,密鑰管理器具有密鑰存儲(chǔ)器所處 遠(yuǎn)程機(jī)器的相關(guān)信息,以進(jìn)行對密鑰存儲(chǔ)器的遠(yuǎn)程調(diào)用,并獲取所需密 鑰。
密鑰管理器202能夠調(diào)用對一個(gè)秘密密鑰或一個(gè)公共/私人密鑰對 的生成。通過密鑰生成器206完成密鑰或密鑰對的生成。根據(jù)調(diào)度器208 實(shí)現(xiàn)的調(diào)度,通過調(diào)用密鑰生成器206生成新的密鑰。根據(jù)從密鑰管理 器202中接收的頻率說明,調(diào)度器208確定下一次密鑰生成事件的時(shí)間。 當(dāng)?shù)竭_(dá)密鑰生成事件的時(shí)間時(shí),調(diào)度器208引起密鑰生成器206生成新 的密鑰并將這個(gè)事件通報(bào)密鑰管理器202。
密鑰生成器206可以包括生成秘密密鑰的第一密鑰生成器,和生成 公共/私人密鑰對的第二密鑰生成器。換句話說,秘密密鑰和公共/私人 密鑰對是由兩種不同算法生成的。密鑰存儲(chǔ)器204從密鑰生成器206中 接收密鑰并存儲(chǔ)它們。根據(jù)由被授權(quán)人指定的參數(shù)所確定的調(diào)度,密鑰
管理器202定期地調(diào)用密鑰生成器206。因此,在一個(gè)實(shí)施例中,^皮4受 權(quán)人能夠指定頻率(密鑰生成事件間隔多少天),并在該周該天該時(shí)生成 新的密鑰。
如上所述,加密密鑰處理200能夠在完成接口模塊處理250的同一 機(jī)器中完成,或者在不同的機(jī)器中完成。接口模塊250的處理通過例如 圖1中所示的處理器完成。接口模塊250.包括密鑰集助手252和密鑰集 組助手254。密鑰集助手252是用于獲得對密鑰集中密鑰的訪問的處理。 密鑰集組助手254是用于獲得對密鑰集組中密鑰的訪問的處理。例如, 密鑰集助手254可以代表上層(overlaying)應(yīng)用程序請求秘密密鑰的最 新版本。接口模塊250將這個(gè)請求發(fā)送到加密密鑰處理器200。密鑰管 理器202確定是否授權(quán)發(fā)出請求的應(yīng)用程序接收所請求的密鑰。然后密 鑰管理器202可以獲取所請求密鑰的最新版本。在一個(gè)實(shí)施例中,接口 模塊能夠請求較早版本的密鑰,密鑰管理器能夠傳送較早版本的密鑰。 被授權(quán)人指定加密密鑰處理所跟蹤的較早版本號。這樣使得應(yīng)用程序可 以解密利用舊密鑰加密的數(shù)據(jù)。
因此,加密密鑰處理器管理加密密鑰。加密密鑰處理器從應(yīng)用程序 中接收對得到密鑰方法的調(diào)用。對得到密鑰方法的調(diào)用指定了密鑰集或 密鑰集組的名稱。每個(gè)密鑰集具有至少一個(gè)密鑰,每個(gè)密鑰集組具有至 少一個(gè)密鑰集。在執(zhí)行得到密鑰方法之前,加密密鑰處理器確定發(fā)出請 求的應(yīng)用程序是否在針對命名密鑰集或密鑰集組所指定的范圍內(nèi)。如果 應(yīng)用程序在指定范圍內(nèi),那么加密密鑰處理器產(chǎn)生所請求密鑰的映射。 例如, 一個(gè)得到密鑰方法調(diào)用一個(gè)密鑰集組中的所有密鑰。加密密鑰處 理器將因此產(chǎn)生該密鑰集組中所有密鑰的映射。將這種映射通過接口模 塊發(fā)送到應(yīng)用程序。然后應(yīng)用程序能夠在映射中選擇任何一個(gè)或多個(gè)密 鑰。
密鑰集由密鑰參考組成。密鑰參考(key reference)使用別名指代實(shí) 際加密密鑰。別名是密鑰的速記名稱。每個(gè)密鑰具有指代它的別名。將 實(shí)際密鑰存儲(chǔ)在密鑰存儲(chǔ)器中,并通過調(diào)用密鑰別名獲取密鑰。下列代 碼塊指定了密鑰對密鑰集。
〈keySets xmi:id="KeySet—BIRKT40Node01」"name="NodeLTPAKeyPair" aliasPrefix="LTPAKeyPair"
這個(gè)代碼塊創(chuàng)建或指定一個(gè)密鑰集并通過名稱標(biāo)識該密鑰集。該代 碼也指定一個(gè)別名前綴。將別名前綴加在密鑰別名前。因此,密鑰集中 的密鑰將與指定前綴相關(guān)聯(lián)。
下列塊指定了口令,所跟蹤的密鑰參考的最大數(shù)量,以及指示是否 刪除舊密鑰的屬性。
password:" {xor} HRYNFAtrbxEwOzpvbhw6MzM="
maxKeyReferences="2"
delete01dKeys="true"
可以在KeySet級別上指定口令,然后該密鑰集中所有密鑰具有相同 的口令,或者在KeyReference級別上指定口令,然后每個(gè)密鑰具有與之 關(guān)聯(lián)的口令。maxKeyReferences屬性指定任何給定時(shí)間所跟蹤的密鑰參 考的最大數(shù)量。這個(gè)變量存儲(chǔ)需要跟蹤的密鑰的數(shù)量。 一旦達(dá)到需要跟 蹤的密鑰的最大數(shù)量,則在下一次密鑰生成事件上,移除最舊的密鑰參 考并增加一個(gè)新的密鑰參考。例如,在maxKeyReference是2時(shí),在任 何時(shí)間點(diǎn)上密鑰集將只有兩個(gè)密鑰參考。如果deleteOldKeys屬性是真, 則將從KeyStore屬性涉及的KeyStore中移除舊密鑰。KeyStore屬性指 定密鑰存儲(chǔ)的密鑰存儲(chǔ)器。
下列塊指定了密鑰類型,確定密鑰集的密鑰存儲(chǔ)器位置。
keyGenerationClass-"com.ibm.ws.security.ltpa.LTPAKeyPairGenerator" isKeyPair="true"
keyStore="KeyStore—BIRKT40Node0 1 一3"
keyGenerationClass屬性涉及的應(yīng)用特定類生成密鑰。取決于 isKeyPair屬性是真或假,該類實(shí)現(xiàn)KeyGenerator或KeyPairGenerator接。
下列塊指定了管理范圍。
〈managementScopes xmi:id="ManagementScope_BIRK.T40Node01—1"
scopeName="(cell):BIRKT40NodeO 1 Cell:(node):BIRKT40NodeO 1"
scopeType="node'V>
通過KeySet指定的管理范圍指向KeySet對其可見的節(jié)點(diǎn)的小區(qū)名 稱和節(jié)點(diǎn)名稱。這個(gè)可見性具有繼承特性以使節(jié)點(diǎn)的任何成員(應(yīng)用服 務(wù)器)能夠查看這些密鑰。但是,其他節(jié)點(diǎn)的成員不能查看這些密鑰。 在一個(gè)實(shí)施例中,管理范圍能夠設(shè)置為一個(gè)單一服務(wù)器。
下列塊指定了涉及別名的密鑰
〈keyReference xmi:id="KeyReference—1 128391356884" keyAlias="LTPAKeyPair—8" version="87>
〈keyReference xmi:id="KeyReference—1 128433215373" keyAlias="LTPAKeyPair_9" version="9"/>
這兩個(gè)代碼塊分別通過指定密鑰參考、密鑰別名和密鑰版本指定密 鑰。當(dāng)生成一個(gè)新密鑰時(shí),密鑰參考中的版本#遞增,aliasPrefix屬性將 存儲(chǔ)在KeyStore中此處的密鑰別名加上前綴。因此,密鑰集由密鑰參考 組成。密鑰參考使用別名指代實(shí)際加密密鑰。別名是密鑰的速記名稱。 每個(gè)密鑰具有指代它的別名。將實(shí)際密鑰存儲(chǔ)在密鑰存儲(chǔ)器中,并通過 調(diào)用密鑰別名獲取密鑰。
</keySets〉
這使指定密鑰對集的代碼塊結(jié)束。 下列代碼塊指定了秘密密鑰密鑰集。
〈keySetsxmi:icN"KeySet一BIRKT40Node01一2" name="NodeLTPASecret" aliasPrefix="LTPASecret" password=" {xor} HRYNFAtrbxEwOzpvbhw6MzM=" maxKeyReferences="2" delete01dKeys="true"
keyGenerationClass="com.ibm.ws.security.ltpa.LTPAKeyGenerator" keyStore="KeyStore_BIRKT40NodeO 1 一3" managementScope="ManagementScope—BIRKT40Node01_l "> 〈keyReference xmi:id="KeyReference—1 128391359568" keyAlias="LTPASecret_8"
version="8'V>
〈keyReference xmi:id="KeyReference—1 128433217215" keyAlias="LTPASecret—9"
version="97>
<ykeySets>
能夠?qū)⒚荑€集分組到一起并將其當(dāng)作一個(gè)單個(gè)實(shí)體管理。將其稱為 KeySetGroup,由下列代碼塊定義
<keySetGroupsxmi:id="KeySetGroup—BIRKT40Node01」"
name="NodeLTPAKeySetGroup"
autoGenerate-"true"
這個(gè)代碼創(chuàng)建或指定一個(gè)密鑰集組并通過名稱標(biāo)識該密鑰集組。 autoGenerate屬性指定是否根據(jù)調(diào)度生成一個(gè)取代密鑰以取代某個(gè)密鑰。 下列塊指定了涉及調(diào)度對象的屬性。 wsSchedule=" WSSchedule一BKKT40No緒—1" 下列塊指定了哪些密鑰集屬于這個(gè)組。
keySet="KeySet—BIRKT40Node01—lKeySet一BIRKT權(quán)ode01一2"
下列塊指定了密鑰集組中密鑰的訪問范圍。
managementScope="ManagementScope—BIRKT40NodeO 1—1 7>
因此,上面定義的KeySetGroup本身具有范圍,但必須至少與其組 內(nèi)的KeySet相同或比其更特定(例如,節(jié)點(diǎn)范圍內(nèi)的KeySetGroup不能 包含服務(wù)器范圍內(nèi)的KeySet)。在一個(gè)實(shí)施例中,為了配置自動(dòng)密鑰生 成,KeySet必須是KeySetGroup的一個(gè)成員。KeySetGroup可以包含一 個(gè)或多個(gè)KeySet。
wsSchedule屬性涉及調(diào)度對象,調(diào)度對象確定開始下一次密鑰生成 事件的時(shí)間。KeySetGroup的密鑰生成事件調(diào)用每個(gè)密鑰集 keyGenerationClass的generateKey或generateKeyPair方法。這才羊?qū)⒅籺每 個(gè)KeySet產(chǎn)生一個(gè)新版本密鑰(潛在地,最舊的版本不再是密鑰集的一 部分)。下面示出了一個(gè)調(diào)度例子
〈wsSchedules xmi:id="WSSchedule—BIRKT棚ode01J" name-"LTPAKeySetGenerationSchedule"
ftequency="90" dayOfWeek="l" hour="22" minute="00"
nextGenerationTime=" 1136174401335"/>
這能夠用于生成下一次密鑰生成事件發(fā)生的將來日期。在 nextGenerationTime屬性中這個(gè)日期持續(xù)存在。 一旦這個(gè)日期和時(shí)間逝 去,則基于頻率 一周中的哪天、小時(shí)和分鐘,生成一個(gè)新的日期和時(shí) 間。
當(dāng)isKeyPair的屬性是"真",keyGenerationClass實(shí)現(xiàn)KeyPair生成 接口。這用來生成典型地用于簽名的公共/私人密鑰對。該密鑰對能夠是 一個(gè)java.security.PublicKey和一個(gè)java.security.Private key。 或者該密鑰 -寸能句多是^個(gè)java.security.cert.Certificate (包含java.security.PublicKey ) 和一個(gè)java.security.PrivateKey。因此,存在一個(gè)密鑰對生成方法
generateKeyPair();
無論是根據(jù)調(diào)度時(shí)間還是手動(dòng)請求,必須生成密鑰對時(shí),密鑰管理 器執(zhí)行這個(gè)方法。類似地,存在一個(gè)秘密密鑰生成方法 generateKey(》 一種關(guān)聯(lián)的方法是
void init(java.util.Properties customProps).
密鑰管理器執(zhí)行這個(gè)方法,將為密鑰集配置的任何定制特性傳遞到 接口模塊。下列代碼行是指定定制特性的例子
<properties xmi:id="Property_r name="key—length" value="1024" required="false"/>
properties xmi:id="Property—1" name="key—algorithm" value="RSA" required="false"/>
這些例子中第 一個(gè)特性說明將密鑰長度特性指定具有密鑰長度值 1024。第二特性說明指定生成密鑰所用的算法,在這種情況中是RSA (RSA是一種按發(fā)明人Rivest, Shamir,和Adleman命名的算法)。required 屬性指出是否必須指定數(shù)值。
圖2A示出了密鑰管理器202的框圖,它包括上述的生成密鑰224 和生成密鑰對222方法。密鑰管理器202還包括從密鑰存儲(chǔ)器中取回所 請求密鑰的方法。因此,密鑰集組助手將調(diào)用下列方法,密鑰管理器將 執(zhí)行下列方法,以獲得密鑰集組中所有密鑰的密鑰映射
getAllKeysForKeySetGroup (element 226);
其通過下列調(diào)用實(shí)現(xiàn)
public java,util.Map getAllKeysForKeySetGroup(java,lang.String keySetGroupName) throws KeyException, java.lang.SecurityException
再次強(qiáng)調(diào),密鑰集組包含一個(gè)或多個(gè)密鑰集中每個(gè)密鑰集的密鑰。 每個(gè)密鑰集具有一個(gè)或多個(gè)密鑰。在這個(gè)方法的調(diào)用中,密鑰集組助手 必須指定密鑰集組名稱。加密密鑰管理器確定調(diào)用該方法的接口模塊是 否在指定密鑰集組的管理范圍內(nèi)。
指定組中的密鑰是秘密密鑰和/或公共/私人密鑰對。當(dāng) 一個(gè)秘密密 鑰返回到接口模塊時(shí),接口模塊不識別密鑰類型或算法。它只將密鑰從 密鑰管理器傳遞到應(yīng)用程序。應(yīng)用程序了解密鑰類型和算法以便使用。
根據(jù)版本分類的映射中的密鑰例子為
{version—2={ LTPASecret—2=javax.crypto,spec,SecretKeySpec@16833, LTPAKeyPair—2=com.ibm.websphere,crypto.KeyPair@5e225e22}, version—3={ LTPASecret_3=javax,crypto.spec.SecretKeySpec@ffie8b59,
LTPAKeyPair—3=com.ibm.websphere,crypto.KeyPair@lceclcec}, version—4= { LTPAKeyPair—4=com.ibm.websphere.crypto.KeyPair@5bd45bd 4, LTPASecret—4=javax,crypto.spec.SecretKeySpec@1781d}}
該方法返回密鑰集組內(nèi)密鑰集中密鑰的密鑰參考的映射。每個(gè)條目
具有一個(gè)密鑰別名(例如LTPAKeyPai匸2),和一個(gè)密鑰。在一個(gè)實(shí)施例 中,雜湊別名以產(chǎn)生一個(gè)雜湊對象。將該映射發(fā)送到接口模塊,接口模 塊將映射傳輸?shù)竭\(yùn)行在與接口模塊相同處理器上的上層應(yīng)用程序。在接 收到該映射后,應(yīng)用程序能夠搜索這種映射,選擇出想要的密鑰。例如, 如果應(yīng)用程序想要組中最舊的秘密密鑰,而目錄是按照時(shí)間次序列出的, 那么它將簡單地選擇目錄中第一個(gè)秘密密鑰條目。
密鑰集組助手將調(diào)用下列方法,密鑰管理器將執(zhí)行下列方法,以獲 取密鑰集組中最新密鑰。
getLatestKeysForKeySetGroup (dement 228); 密鑰集組具有組內(nèi)密鑰的最新版本,還可以保留組內(nèi)密鑰的較早版
本。這種方法只返回最新密鑰的密鑰參考的映射。這些參考的例子是 {LTPAKeyPair4=com. ibm .websphere .crypto .KeyPair@5 bd4 5 bd4, LTPASecret_4=javax.crypto.spec.SecretKeySpec@l 781 密鑰集助手將調(diào)用下列方法,密鑰管理器將執(zhí)行下列方法,以獲取
密鑰集中所有密鑰。
getAUKeysForKeySet (element 230》 這種方法返回密鑰集中所有密鑰的映射。名為"CellLTPASecret"的 KeySet中密鑰的例子是
{LTPA Secret—2=j avax crypto. spec S ecretKey Spec@ 16833, LTPASecret—3=javax.crypto.spec.SecretKeySpec@fffe8b59,} 名為"CellLTPAKeyPair"的KeySet中密鑰的例子是 {LTPAKeyPair—4=com.ibm.websphere.crypto.KeyPair@5bd45bd4, LTPAKeyPair—2=com.ibm.websphere.crypto.KeyPair@5e225e22, LTPAKeyPair—3=com.ibm.websphere.crypto.KeyPair@lceclcec} 密鑰集組助手將調(diào)用下列方法,密鑰管理器將執(zhí)行下列方法,以得 到密鑰集組中最新密鑰。
getLatestKeyForKeySet (element 232); 取決于KeySet類型,這種方法返回一個(gè)包含Java安全密鑰實(shí)例或 IBMwebsphere.crypto密鑰對實(shí)例的對象。因此,該方法能夠返回一個(gè)秘 密密鑰或一個(gè)密鑰對。密鑰對可以是一個(gè)公共密鑰和一個(gè)私人密鑰或一 張證書和一個(gè)私人密鑰。這種方法返回的對象格式可以取決于密鑰類型。 名為"CellLTPASecret"的KeySet中最新密鑰的例子是
javax.crypto.spec.SecretKeySpec@1781 d
名為"CellLTPAKeyPair"的KeySet中最新密鑰的例子是 com.ibm.websphere.crypto.KeyPair@5bd45bd4
圖3示出了如上述加密密鑰處理器操作的流程圖300的實(shí)施例。加 密密鑰處理器從接口模塊接收對得到密鑰集或密鑰集組中密鑰方法的調(diào) 用(單元 302 )。 例如,接口模塊可以調(diào)用方法 getLatestKeysForKeySetGroup以得到密鑰集組中的最新密鑰。當(dāng)激活 Java2安全時(shí),調(diào)用這種方法的訪問要求許可(單元304)。如果沒有授 予許可,密鑰管理器將一個(gè)錯(cuò)誤返回到發(fā)出請求的接口模塊(單元308 )。 如果授予許可,密鑰管理器確定發(fā)出請求的機(jī)器是否在訪問所請求密鑰 的機(jī)器的指定管理范圍內(nèi)(單元306)。因此,例如, 一個(gè)執(zhí)行應(yīng)用程序 的服務(wù)器可以是節(jié)點(diǎn)的一部分,在所請求密鑰的管理范圍屬性中指定了 該節(jié)點(diǎn)。如果是這樣,加密密鑰處理器將進(jìn)入4丸行所調(diào)用的得到密鑰方 法的步驟(單元310)。如果不是這樣,密鑰管理器將一個(gè)錯(cuò)誤返回到接 口模塊(單元308)。
將要執(zhí)行(單元310)的所調(diào)用的得到密鑰方法可以是多個(gè)得到密 鑰方法中的一個(gè),包括上述那些方法。執(zhí)行所調(diào)用的得到密鑰方法,產(chǎn) 生該得到密鑰方法所指定密鑰集或密鑰集組中的密鑰的映射。在一個(gè)實(shí) 施例中,對這種映射的元素一 包含所請求密鑰的密鑰參考一進(jìn)行雜湊, 以產(chǎn)生雜湊映射(單元312)。加密密鑰管理器將該映射發(fā)送到接口模塊 (單元314),接口模塊將該映射傳遞給應(yīng)用程序。然后應(yīng)用程序從該映 射中選擇一個(gè)或多個(gè)想要的密鑰。例如,應(yīng)用程序從該映射中選擇一個(gè) 給定別名的密鑰。或者應(yīng)用在該映射中搜索一個(gè)秘密密鑰或公共/私人密 鑰對的特定版本。
圖4示出了接口模塊和使用該接口模塊的應(yīng)用程序的操作的流程圖 400的實(shí)施例。當(dāng)應(yīng)用程序需要一個(gè)密鑰時(shí),應(yīng)用程序指定密鑰所屬的 密鑰集或密鑰集組的名稱(單元402)。接口模塊的密鑰集組助手或密鑰 集助手將調(diào)用一個(gè)得到密鑰方法,它傳送指定密鑰集組或密鑰集或者指 定密鑰集組或密鑰集的子集的映射(單元404)。響應(yīng)于調(diào)用的得到密鑰 方法,密鑰管理器將傳送一個(gè)結(jié)果,接口模塊將接收一個(gè)結(jié)果,在一個(gè)
實(shí)施例中,該結(jié)果可以是一個(gè)錯(cuò)誤或所請求的密鑰映射(單元406)。
如果密鑰管理器返回一個(gè)錯(cuò)誤(單元408 ),應(yīng)用程序處理該錯(cuò)誤(單 元410)。處理錯(cuò)誤可以包括在視頻監(jiān)視器上顯示一個(gè)窗口,窗口包含一 個(gè)消息例如"拒絕許可"。如果密鑰管理器返回一種映射,密鑰集助手或 密鑰集組助手將該映射傳遞到應(yīng)用程序。應(yīng)用程序在密鑰管理器提供的 映射中查找想要的密鑰(單元412)。然后,應(yīng)用程序從映射中選出想要 的一個(gè)或多個(gè)密鑰(單元414)。例如,應(yīng)用程序可以首先選擇最舊的秘 密密鑰以解密一個(gè)文件。然后,應(yīng)用程序可以選擇最新的密鑰對以對一 個(gè)文檔進(jìn)行數(shù)字簽名。
圖5示出了調(diào)度密鑰生成的流程圖500的實(shí)施例。在加密密鑰處理 器軟件執(zhí)行的開始,接收并執(zhí)行密鑰生成頻率語句,確定生成新密鑰的 指定頻率(單元502)。利用這個(gè)信息,加密密鑰處理器計(jì)劃下一次密鑰 生成事件(單元504)。系統(tǒng)監(jiān)控時(shí)間(單元506)以確定現(xiàn)在是否到了 發(fā)生密鑰生成事件的時(shí)間(單元508)。如果不是,系統(tǒng)繼續(xù)監(jiān)控時(shí)間(單 元506)。否則,密鑰管理器調(diào)用生成密鑰方法(單元510)。密鑰管理器 將新生成的密鑰連同它們的屬性存儲(chǔ)到密鑰存儲(chǔ)器中(單元512)。
因此,幾個(gè)并發(fā)和相關(guān)的處理發(fā)生在操作期間。在操作的一方面, 處理器接收得到密鑰的調(diào)用,確定是否授權(quán)提出調(diào)用的應(yīng)用程序接收密 鑰,生成密鑰映射,并將該映射傳輸?shù)教岢稣{(diào)用的應(yīng)用程序。在操作的 另一方面,接口模塊調(diào)用一個(gè)得到密鑰方法并接收密鑰映射。然后應(yīng)用 程序在密鑰映射中選擇一個(gè)或多個(gè)想要的密鑰。在操作的第三方面,處 理器調(diào)度密鑰生成事件并監(jiān)控時(shí)間,確定密鑰生成事件將要發(fā)生的時(shí)間。 在一次密鑰生成事件中,可以為一個(gè)或多個(gè)密鑰集中的每一個(gè)密鑰集生 成新密鑰。
本發(fā)明能夠利用完全硬件實(shí)施例的形式、完全軟件實(shí)施例的形式或 者包括硬件單元和軟件單元的實(shí)施例的形式。在一個(gè)實(shí)施例中,本發(fā)明 用包括但不限于固件、常駐軟件、微代碼等軟件來實(shí)施。另外,實(shí)施例 能夠采用機(jī)器可訪問讀取介質(zhì)中獲取的計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì) 提供用于由如圖1所示計(jì)算機(jī)或者任何指令執(zhí)行系統(tǒng)使用或者與該計(jì)算
機(jī)或者指令執(zhí)行系統(tǒng)結(jié)合使用的程序代碼。出于本說明書考慮,機(jī)器可 訪問或計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì)能夠是任何如下有形裝置,該有 形裝置能夠包含、存儲(chǔ)、通信、傳播或者傳送用于由指令執(zhí)行系統(tǒng)、裝 置或者設(shè)備使用或者與該指令執(zhí)行系統(tǒng)、裝置或者設(shè)備結(jié)合使用的程序。 介質(zhì)能夠是電、磁、光、電磁、紅外線或者半導(dǎo)體系統(tǒng)(或者裝置或者 設(shè)備)或者傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的例子包括半導(dǎo)體或者固態(tài)存儲(chǔ)
器、磁帶、可移動(dòng)計(jì)算機(jī)盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器 (ROM)、剛性磁盤和光盤。光盤的當(dāng)前例子包括光盤只讀存儲(chǔ)器 (CD-ROM )、光盤讀/寫(CD-R/W)和DVD。
適合于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括直接地或者 通過系統(tǒng)總線間接地耦合到存儲(chǔ)器單元的至少一個(gè)處理器。存儲(chǔ)器單元 能夠包含在程序代碼的實(shí)際執(zhí)行期間利用的本地存儲(chǔ)器108、大容量存 儲(chǔ)器和高速緩存存儲(chǔ)器102、 190,這些高速緩存存儲(chǔ)器提供對至少一些 程序代碼的臨時(shí)存儲(chǔ)以便減少在執(zhí)行期間必須從大容量存儲(chǔ)器獲取代碼 的次數(shù)。輸入/輸出或者I/0設(shè)備(包括但不限于鍵盤、顯示器、指示設(shè) 備等)能直接地或者通過居間I/O控制器耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可 以耦合到系統(tǒng)以使數(shù)據(jù)處理系統(tǒng)能夠變?yōu)橥ㄟ^居間專用或者公共網(wǎng)絡(luò)耦 合到其它數(shù)據(jù)處理系統(tǒng)或者遠(yuǎn)程打印機(jī)或者存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、有 線調(diào)制解調(diào)器和以太網(wǎng)卡只是當(dāng)前可用網(wǎng)絡(luò)適配器類型的數(shù)個(gè)例子而 已。因此,本發(fā)明的另一個(gè)實(shí)施例提供了一種包含有效指令的計(jì)算機(jī)程 序產(chǎn)品,該指令在數(shù)據(jù)處理系統(tǒng)中執(zhí)行時(shí),引起系統(tǒng)完成一系列用于管 理加密密鑰的操作。這系列操作通常包括從應(yīng)用程序中接收對提供密鑰 集或密鑰集組中一個(gè)或多個(gè)密鑰的請求。一個(gè)密鑰集包括至少一個(gè)密鑰, 一個(gè)密鑰集組包括至少一個(gè)密鑰集。操作包括確定應(yīng)用程序是否在針對 密鑰集或密鑰集組指定的范圍內(nèi)。如果應(yīng)用在指定范圍內(nèi),那么這一系 列操作包括產(chǎn)生所請求密鑰映射。這一 系列操作還包括根據(jù)預(yù)定調(diào)度為 密鑰集生成新密鑰。
操作還可以包括存儲(chǔ)每個(gè)密鑰的版本號并將密鑰的版本號與密鑰相 關(guān)聯(lián)。因此,可以通過別名前綴和版本號識別密鑰。操作還可以包括從
應(yīng)用程序指定的密鑰集或密鑰集組中得到最新密鑰。該范圍可以指定一 個(gè)授權(quán)接收所請求密鑰的節(jié)點(diǎn)或服務(wù)器,在操作期間應(yīng)用程序必須常駐 其中。在一些實(shí)施例中,與密鑰集組相關(guān)聯(lián)的范圍至少如與密鑰集組內(nèi) 密鑰集相關(guān)聯(lián)的最小范圍 一樣小。
盡管根據(jù)一些實(shí)施例詳細(xì)描述了本發(fā)明及其優(yōu)勢,但是應(yīng)該明白在 不脫離如所附權(quán)利要求所定義的本發(fā)明精神和范圍的情況下,在這里能 夠做出不同的改變、替代和改造。盡管本發(fā)明的一個(gè)實(shí)施例可以達(dá)到多 重目標(biāo),但是不是每一個(gè)落在所附權(quán)利要求范圍內(nèi)的實(shí)施例都能達(dá)到每 一個(gè)目標(biāo)。此外,本發(fā)明應(yīng)用范圍并不意圖限于說明書中所述的處理、 機(jī)器、制造、合成物、裝置、方法和步驟的特定實(shí)施例。本領(lǐng)域普通技 術(shù)人員從本發(fā)明公開內(nèi)容中將容易地明白,根據(jù)本發(fā)明可以利用現(xiàn)有的 或以后將開發(fā)出來的處理、機(jī)器、制造、合成物、裝置、方法和步驟, 它們完成與這里所述相應(yīng)實(shí)施例基本上相同的功能或達(dá)到與這里所述相 應(yīng)實(shí)施例基本上相同的結(jié)果。因此,所附權(quán)利要求意圖在其范圍內(nèi)包括 這些處理、機(jī)器、制造、合成物、裝置,方法和步驟。
權(quán)利要求
1.一種加密密鑰管理系統(tǒng),包括密鑰管理器,確定是否授權(quán)請求一個(gè)或多個(gè)密鑰的應(yīng)用程序接收所請求的一個(gè)或多個(gè)密鑰,并產(chǎn)生所請求密鑰的映射;密鑰調(diào)度器,在可預(yù)定的時(shí)間對至少一個(gè)密鑰生成事件進(jìn)行調(diào)度;密鑰生成器,在所調(diào)度的密鑰生成事件中生成至少一個(gè)生成密鑰,其中所述生成密鑰與密鑰集和密鑰集組相關(guān)聯(lián),并且其中密鑰集包括一個(gè)或多個(gè)密鑰,密鑰集組包括一個(gè)或多個(gè)密鑰集;以及密鑰存儲(chǔ)器,存儲(chǔ)所述至少一個(gè)生成密鑰以及所述密鑰的屬性,使得每個(gè)密鑰與所述密鑰的一組屬性相關(guān)聯(lián)。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述密鑰管理器確定所述應(yīng) 用程序是否在針對所述密鑰集指定的范圍內(nèi)。
3. 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述密鑰管理器確定一個(gè)范 圍,以指定被授權(quán)接收所請求密鑰的節(jié)點(diǎn)或服務(wù)器,在執(zhí)行期間所述應(yīng) 用程序必須駐留在所述節(jié)點(diǎn)或服務(wù)器中。
4. 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述密鑰管理器確定與密鑰 集組相關(guān)聯(lián)的范圍,所述范圍至少如與所述密鑰集組內(nèi)密鑰集相關(guān)聯(lián)的 最小范圍一樣小。
5. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述密鑰存儲(chǔ)器存儲(chǔ)密鑰屬 性,所述密鑰屬性包括密鑰集或密鑰集組中每個(gè)密鑰的版本號。
6. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述密鑰管理器確定請求一 個(gè)或多個(gè)密鑰的所述應(yīng)用程序的位置是否在針對所述指定密鑰集或密 鑰集組所指定的范圍內(nèi)。
7. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述密鑰管理器執(zhí)行獲取密 鑰集或密鑰集組中所有密鑰的方法。
8. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述密鑰管理器執(zhí)行只獲取 密鑰集或密鑰集組中最新密鑰的方法。
9. 一種用于管理加密密鑰的方法,包括 從應(yīng)用程序接收對提供與密鑰集或密鑰集組相關(guān)聯(lián)的至少 一個(gè)密 鑰的調(diào)用,其中一個(gè)密鑰集包括至少一個(gè)密鑰, 一個(gè)密鑰集組包括至少一個(gè)密鑰集;確定所述應(yīng)用程序是否在針對所述關(guān)聯(lián)密鑰集或密鑰集組所指定 的范圍內(nèi);如果所述應(yīng)用在所述關(guān)聯(lián)范圍內(nèi),那么產(chǎn)生與所述密鑰集或密鑰集 組相關(guān)聯(lián)的至少一個(gè)密鑰的映射;以及根據(jù)可指定的調(diào)度,生成至少一個(gè)包括在所述密鑰集或密鑰集組中 的密鑰。
10. 根據(jù)權(quán)利要求9所述的方法,還包括將密鑰與具有版本號的別 名相關(guān)聯(lián),其中密鑰集中密鑰的最新版本是根據(jù)所述調(diào)度最新生成的密 鑰的版本。
11. 根據(jù)權(quán)利要求IO所述的方法,其中相同密鑰的所有版本具有相 同的別名前綴。
12. 根據(jù)權(quán)利要求9所述的方法,其中來自應(yīng)用程序的對提供與密 鑰集組相關(guān)聯(lián)的密鑰的調(diào)用可以是只用以產(chǎn)生密鑰集中最新密鑰的映 射的特定調(diào)用。
13. 根據(jù)權(quán)利要求9所述的方法,其中所述范圍可以指定一個(gè)被授 權(quán)接收所請求密鑰的節(jié)點(diǎn)或服務(wù)器,所述應(yīng)用程序在請求密鑰時(shí)必須駐 留在所述節(jié)點(diǎn)或服務(wù)器中。
14. 根據(jù)權(quán)利要求9所述的方法,其中與密鑰集組相關(guān)聯(lián)的范圍至 少如與所述密鑰集組內(nèi)的密鑰集相關(guān)聯(lián)的最小范圍 一樣小。
全文摘要
公開了一種用于管理和生成加密密鑰的系統(tǒng)、方法和介質(zhì)。在一個(gè)實(shí)施例中,處理器執(zhí)行加密密鑰處理計(jì)算機(jī)代碼,以從應(yīng)用程序接收密鑰請求。處理器確定發(fā)出請求的應(yīng)用程序是否在被授權(quán)接收所請求密鑰的機(jī)器范圍內(nèi)的節(jié)點(diǎn)或服務(wù)器上執(zhí)行。如果被授權(quán),則處理器產(chǎn)生一個(gè)密鑰映射并將密鑰映射發(fā)送到應(yīng)用程序,使應(yīng)用程序能夠訪問密鑰映射中的一個(gè)或多個(gè)密鑰。根據(jù)可指定的調(diào)度自動(dòng)更新密鑰。
文檔編號G06F21/00GK101169814SQ20071015333
公開日2008年4月30日 申請日期2007年9月17日 優(yōu)先權(quán)日2006年10月26日
發(fā)明者A·德邁爾斯, J·L·倫茨, K·D·博特朱姆, M·A·羅西勒斯, P·D·伯克, U·范李, 趙青云, 鐘顯維 申請人:國際商業(yè)機(jī)器公司