專利名稱:密碼密鑰管理的制作方法
密碼密鑰管理
背景技術(shù):
計(jì)算設(shè)備可能以各種各樣的不同方式遇到各種各樣的敏感數(shù)據(jù)。例如,計(jì)算設(shè)備可以用來(lái)存儲(chǔ)數(shù)據(jù),通過(guò)網(wǎng)絡(luò)傳送數(shù)據(jù)等等。此外,該數(shù)據(jù)可能是相當(dāng)有價(jià)值的,并且因而成為惡意方的目標(biāo)。然而,用來(lái)保護(hù)該數(shù)據(jù)的常規(guī)技術(shù)可能涉及存儲(chǔ)大量的密碼 (cryptographic)密鑰。例如,該數(shù)據(jù)可能被保護(hù)以供不同各方訪問(wèn),從而涉及管理大量的密碼密鑰。傳統(tǒng)上,這導(dǎo)致復(fù)雜的存儲(chǔ)和通信技術(shù),當(dāng)面臨要單獨(dú)地加密和/或解密的大量各種各樣的數(shù)據(jù)時(shí),尤其如此。
發(fā)明內(nèi)容
描述了密碼密鑰管理技術(shù)。在一個(gè)或多個(gè)實(shí)現(xiàn)方式中,讀取包括具有多個(gè)原子的布爾表達(dá)式的訪問(wèn)控制規(guī)則,每個(gè)原子具有密碼密鑰的標(biāo)識(shí)符。請(qǐng)求與訪問(wèn)控制規(guī)則中的所述多個(gè)原子中的每一個(gè)的標(biāo)識(shí)符相應(yīng)的密碼密鑰。然后,使用所述密碼密鑰中的一個(gè)或多個(gè)對(duì)數(shù)據(jù)執(zhí)行一種或多種密碼操作。在一個(gè)或多個(gè)實(shí)現(xiàn)方式中,從嵌入了加密的數(shù)據(jù)的訪問(wèn)控制規(guī)則讀取密鑰標(biāo)識(shí)符。形成請(qǐng)求,該請(qǐng)求包括密鑰標(biāo)識(shí)符并且描述了請(qǐng)求訪問(wèn)數(shù)據(jù)的主體(principal)的一個(gè)或多個(gè)屬性。接收對(duì)所述請(qǐng)求的響應(yīng),該響應(yīng)包括基于所描述的一個(gè)或多個(gè)屬性而授權(quán)主體使用的解密密鑰。依照訪問(wèn)控制規(guī)則應(yīng)用在響應(yīng)中接收的解密密鑰以便確定獲得了解密加密的數(shù)據(jù)的足夠的解密密鑰集合。在一個(gè)或多個(gè)實(shí)現(xiàn)方式中,對(duì)于訪問(wèn)控制規(guī)則中的每個(gè)原子獲取保護(hù)器密鑰,訪問(wèn)控制規(guī)則在布爾表達(dá)式中描述多個(gè)原子。對(duì)于布爾表達(dá)式中的一個(gè)或多個(gè)合取子句、用于子句中的每個(gè)原子的分?jǐn)?shù)密鑰(fractional key),使用與該原子相應(yīng)的保護(hù)器密鑰加密該分?jǐn)?shù)密鑰,并且利用具有一定保護(hù)器密鑰的復(fù)合原子代替合取子句,該保護(hù)器密鑰是分?jǐn)?shù)密鑰的組合。產(chǎn)生內(nèi)容加密密鑰,并且使用該內(nèi)容加密密鑰加密數(shù)據(jù)。對(duì)于每個(gè)復(fù)合原子,利用該復(fù)合原子的保護(hù)器密鑰加密內(nèi)容加密密鑰,并且與復(fù)合原子的保護(hù)器密鑰的標(biāo)識(shí)符一起存儲(chǔ)加密內(nèi)容加密密鑰的結(jié)果。本發(fā)明內(nèi)容部分被提供以便以簡(jiǎn)化的形式引入構(gòu)思的選擇,這些構(gòu)思在下面的具體實(shí)施方式
中進(jìn)一步加以描述。本發(fā)明內(nèi)容部分并不預(yù)期標(biāo)識(shí)要求保護(hù)的主題的關(guān)鍵特征或基本特征,也不預(yù)期用來(lái)幫助確定要求保護(hù)的主題的范圍。
具體實(shí)施方式
參照附圖進(jìn)行描述。在圖中,附圖標(biāo)記的最左邊的數(shù)字標(biāo)識(shí)其中該附圖標(biāo)記第一次出現(xiàn)的圖。在說(shuō)明書(shū)的不同實(shí)例和附圖中使用相同的附圖標(biāo)記可能指示相似或相同的項(xiàng)。圖1示出了數(shù)據(jù)保護(hù)系統(tǒng)的實(shí)例實(shí)現(xiàn)方式中的環(huán)境,該數(shù)據(jù)保護(hù)系統(tǒng)可操作來(lái)采用涉及密碼密鑰管理的技術(shù)。圖2A和圖2B為繪出其中依照訪問(wèn)控制規(guī)則加密數(shù)據(jù)的實(shí)例實(shí)現(xiàn)方式中的過(guò)程的
3流程圖。圖3為更詳細(xì)地示出圖1的數(shù)據(jù)保護(hù)模塊的實(shí)例實(shí)現(xiàn)方式中的系統(tǒng)的圖示。圖4示出了被示為依照訪問(wèn)控制規(guī)則加密數(shù)據(jù)的圖1數(shù)據(jù)保護(hù)系統(tǒng)的實(shí)例實(shí)現(xiàn)方式。圖5示出了多級(jí)密鑰導(dǎo)出方案的實(shí)例實(shí)現(xiàn)方式。圖6為繪出其中安全主體從采用圖5的多級(jí)密鑰導(dǎo)出方案的密鑰管理服務(wù)請(qǐng)求加密密鑰的實(shí)例實(shí)現(xiàn)方式中的過(guò)程的流程圖。圖7示出了可操作來(lái)采用關(guān)于圖5和圖6描述的層級(jí)技術(shù)的系統(tǒng)的實(shí)例實(shí)現(xiàn)方式。
具體實(shí)施例方式實(shí)例環(huán)境
圖1示出了數(shù)據(jù)保護(hù)系統(tǒng)的實(shí)例實(shí)現(xiàn)方式中的環(huán)境100,該數(shù)據(jù)保護(hù)系統(tǒng)可操作來(lái)采用涉及密碼密鑰管理的技術(shù)。該環(huán)境100示出了包括密鑰管理服務(wù)102的分布式環(huán)境的一個(gè)實(shí)例,所述密鑰管理服務(wù)可由第一和第二計(jì)算設(shè)備106、108經(jīng)由網(wǎng)絡(luò)104訪問(wèn)。密鑰管理服務(wù)102進(jìn)一步被示為使用一個(gè)或多個(gè)服務(wù)器(例如服務(wù)器群的一部分)來(lái)實(shí)現(xiàn)。盡管示出了一個(gè)實(shí)例分布式環(huán)境,但是應(yīng)當(dāng)容易清楚的是,該環(huán)境100可以進(jìn)一步擴(kuò)展(例如以便包括眾多其他計(jì)算設(shè)備)、縮小(例如以便由兩個(gè)設(shè)備或者甚至單個(gè)設(shè)備采用)等等。計(jì)算設(shè)備可以以各種各樣的方式進(jìn)行配置。例如,可以將計(jì)算設(shè)備配置成能夠通過(guò)網(wǎng)絡(luò)104通信的計(jì)算機(jī),例如臺(tái)式計(jì)算機(jī)、移動(dòng)站、娛樂(lè)器具、通信耦合到顯示設(shè)備的機(jī)頂盒、無(wú)線電話、游戲控制臺(tái)等等。因此,計(jì)算設(shè)備可以范圍從具有充分的存儲(chǔ)器和處理器資源的全資源設(shè)備(例如個(gè)人計(jì)算機(jī)、游戲控制臺(tái))到具有有限的存儲(chǔ)器和/或處理資源的低資源設(shè)備(例如傳統(tǒng)機(jī)頂盒、手持式游戲控制臺(tái))。此外,盡管示出了單個(gè)計(jì)算設(shè)備(例如用于密鑰管理服務(wù)102的服務(wù)器),但是計(jì)算設(shè)備可以代表多個(gè)不同的設(shè)備,例如多個(gè)由企業(yè)用來(lái)執(zhí)行操作的服務(wù)器。計(jì)算設(shè)備也可以包括使得計(jì)算設(shè)備的硬件執(zhí)行操作的實(shí)體(例如軟件),例如處理器、功能塊等等。一個(gè)這樣的實(shí)例是針對(duì)對(duì)應(yīng)計(jì)算設(shè)備106、108而示出的通信模塊110、 112,其代表經(jīng)由網(wǎng)絡(luò)104通信的設(shè)備功能。在一個(gè)或多個(gè)實(shí)現(xiàn)方式中,計(jì)算設(shè)備可以包括計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以被配置成維持使得計(jì)算設(shè)備以及更特別地計(jì)算設(shè)備的硬件執(zhí)行操作的指令。因此,這些指令用來(lái)將硬件配置為執(zhí)行操作并且通過(guò)這種方式導(dǎo)致將硬件轉(zhuǎn)換成實(shí)現(xiàn)功能。這些指令可以通過(guò)各種各樣的不同配置由計(jì)算機(jī)可讀介質(zhì)提供給計(jì)算設(shè)備。計(jì)算機(jī)可讀介質(zhì)的一個(gè)這樣的配置是信號(hào)承載介質(zhì)并且因而被配置成例如經(jīng)由網(wǎng)絡(luò)104將指令(例如作為載波)傳輸至計(jì)算設(shè)備的硬件。計(jì)算機(jī)可讀介質(zhì)也可以被配置成計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并且因而不是信號(hào)承載介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的實(shí)例包括隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、光盤、閃存、硬盤存儲(chǔ)器以及可以使用磁、光和其他技術(shù)存儲(chǔ)指令和其他數(shù)據(jù)的其他存儲(chǔ)器設(shè)備。盡管網(wǎng)絡(luò)104被示為因特網(wǎng),但是該網(wǎng)絡(luò)可以采取各種各樣的廣泛配置。例如,網(wǎng)絡(luò)108 104包括廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、無(wú)線網(wǎng)絡(luò)、公共電話網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)、藍(lán)牙個(gè)人區(qū)域網(wǎng)絡(luò)(PAN)等等。此外,盡管示出了單個(gè)網(wǎng)絡(luò)104,但是網(wǎng)絡(luò)104可以被配置成包括多個(gè)網(wǎng)絡(luò)。密鑰管理服務(wù)102被示為包括數(shù)據(jù)保護(hù)模塊114,其代表依照用作加密和解密數(shù)據(jù)的基礎(chǔ)的訪問(wèn)控制規(guī)則116管理密碼密鑰的功能。在一個(gè)或多個(gè)實(shí)現(xiàn)方式中,該規(guī)則是由例如利用“AND”(與)和“OR”(或)邏輯算子組合的原子118集合形成的布爾表達(dá)式。每個(gè)原子118可以表示為形式為“屬性=標(biāo)識(shí)符”的字符串,其中標(biāo)識(shí)符轉(zhuǎn)化成密碼密鑰。例如,每個(gè)原子可以采取“安全_主體_類型=標(biāo)識(shí)符”的形式,使得安全主體標(biāo)識(shí)符轉(zhuǎn)化成密碼密鑰。因此,利用這種規(guī)則加密的數(shù)據(jù)被配置成僅僅通過(guò)具有滿足該規(guī)則的屬性的實(shí)體(例如滿足該規(guī)則的安全主體)而被解密。例如,基于安全標(biāo)識(shí)符(SID)的系統(tǒng)可以采用以下訪問(wèn)控制規(guī)貝丨J "SID=S-l-5-32-544 AND 密鑰=MSKSPimyKeyName OR 證書(shū) =IssuerAndSerial:3132,3131”。因此,該訪問(wèn)控制規(guī)則包括三個(gè)原子
"SID=S-l-5-32-544";
“密鑰=MSKSP: myKeyName ” ;以及
“證書(shū)=IssuerAndSerial :3132, 3131”
此外,該訪問(wèn)控制規(guī)則規(guī)定應(yīng)當(dāng)滿足的不同屬性集合,SID和密鑰或者證書(shū)。因此,有權(quán)訪問(wèn)標(biāo)識(shí)的證書(shū)或者在其令牌中具有標(biāo)識(shí)的SID并且也有權(quán)訪問(wèn)標(biāo)識(shí)的密鑰的主體滿足該規(guī)則。下面的討論安排如下。首先,討論用于將密碼訪問(wèn)控制規(guī)則的每個(gè)原子轉(zhuǎn)換成密碼密鑰(或者可以從其導(dǎo)出密碼密鑰的秘密)的技術(shù)。然后,討論使用密碼密鑰按照訪問(wèn)控制規(guī)則在密碼學(xué)上保護(hù)數(shù)據(jù)塊。如前面所描述的,這可以以這樣的方式執(zhí)行,使得授權(quán)主體只能使用訪問(wèn)控制規(guī)則的密碼密鑰中的每一個(gè)解密該數(shù)據(jù)。與訪問(wèn)控制規(guī)則原子相應(yīng)的密碼密鑰稱為保護(hù)器密鑰,并且假設(shè)每個(gè)保護(hù)器密鑰具有唯一標(biāo)識(shí)符,當(dāng)需要時(shí),該唯一標(biāo)識(shí)符可以用來(lái)定位相應(yīng)的解密密鑰。然后,描述了涉及以高效且可伸縮的方式產(chǎn)生保護(hù)器密鑰和相應(yīng)的解密密鑰的技術(shù)。例如,這些技術(shù)可以用于屬于公共安全域的實(shí)體,例如用于主體的授權(quán)表達(dá)式,其可能涉及一個(gè)主體或一組主體的標(biāo)識(shí)符,例如用在數(shù)據(jù)存儲(chǔ)區(qū)或目錄(例如微軟公司的活動(dòng)目錄產(chǎn)品)中的安全標(biāo)識(shí)符(SID)。通常,本文描述的任何功能都可以使用軟件、固件、硬件(例如固定邏輯電路)、手工處理或者這些實(shí)現(xiàn)方式的組合來(lái)實(shí)現(xiàn)。當(dāng)在本文中使用時(shí),術(shù)語(yǔ)“模塊”和“功能”通常代表硬件、軟件、固件或者其組合。在軟件實(shí)現(xiàn)方式的情況下,模塊、功能或邏輯代表指令和硬件,其執(zhí)行硬件指定的操作,例如一個(gè)或多個(gè)處理器和/或功能塊。可以將指令存儲(chǔ)到一種或多種計(jì)算機(jī)可讀介質(zhì)中。如上面所描述的,計(jì)算機(jī)可讀介質(zhì)的一個(gè)這樣的配置是信號(hào)承載介質(zhì)并且因而被配置成例如經(jīng)由網(wǎng)絡(luò)104將指令(例如作為載波)傳輸至計(jì)算設(shè)備的硬件。計(jì)算機(jī)可讀介質(zhì)也可以被配置成計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并且因而不是信號(hào)承載介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的實(shí)例包括隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、光盤、閃存、硬盤存儲(chǔ)器以及可以使用磁、光和其他技術(shù)存儲(chǔ)指令和其他數(shù)據(jù)的其他存儲(chǔ)器設(shè)備。下面描述的技術(shù)的特征是平臺(tái)獨(dú)立的,這意味著這些技術(shù)可以在具有各種各樣的硬件配置的各種各樣的商業(yè)計(jì)算平臺(tái)上實(shí)現(xiàn)。
訪問(wèn)控制規(guī)則
圖2A和圖2B繪出了其中依照訪問(wèn)控制規(guī)則加密數(shù)據(jù)的實(shí)例實(shí)現(xiàn)方式中的過(guò)程200。 以下討論描述了可以利用先前和隨后描述的系統(tǒng)和設(shè)備實(shí)現(xiàn)的技術(shù)。每個(gè)過(guò)程的各方面可以以硬件、固件、軟件或者其組合實(shí)現(xiàn)。這些過(guò)程被示為規(guī)定由一個(gè)或多個(gè)設(shè)備執(zhí)行的操作的功能框集合,并且不一定限于所示出的各功能框執(zhí)行操作的順序。開(kāi)始于圖2A,為了按照訪問(wèn)控制規(guī)則加密數(shù)據(jù)塊,可以執(zhí)行以下操作。首先,例如使用唯一標(biāo)識(shí)符獲取與訪問(wèn)控制規(guī)則中的每個(gè)原子相應(yīng)的保護(hù)器密鑰(框202)。然后,將布爾訪問(wèn)控制規(guī)則轉(zhuǎn)換成析取范式(框204)。對(duì)于規(guī)范化訪問(wèn)控制規(guī)則中的每個(gè)合取子句206,執(zhí)行以下操作(框206)。對(duì)于子句中的每個(gè)原子,例如使用隨機(jī)化技術(shù)產(chǎn)生分?jǐn)?shù)密鑰(框208)。利用與該原子相應(yīng)的保護(hù)器密鑰加密分?jǐn)?shù)密鑰(框210)。然后,與唯一標(biāo)識(shí)的保護(hù)器密鑰一起存儲(chǔ)加密的分?jǐn)?shù)密鑰(框 212)。該結(jié)構(gòu)稱為保護(hù)器。然后,利用新的復(fù)合原子代替整個(gè)合取子句,所述新的復(fù)合原子的保護(hù)器密鑰是分?jǐn)?shù)密鑰的組合(框214)。該組合可以以各種各樣的不同方式形成,例如通過(guò)采用諸如XOR或密鑰導(dǎo)出函數(shù)之類的密碼技術(shù)形成,所述密鑰導(dǎo)出函數(shù)例如基于口令的密鑰導(dǎo)出函數(shù),比如來(lái)自RSA實(shí)驗(yàn)室的公鑰密碼標(biāo)準(zhǔn)系列的PBKDF2?,F(xiàn)在繼續(xù)到圖2B,例如使用隨機(jī)化技術(shù)產(chǎn)生內(nèi)容加密密鑰(框216)。然后,使用諸如AES-GCM之類的加密技術(shù)利用內(nèi)容加密密鑰加密數(shù)據(jù)(框218)。對(duì)于析取范式的表達(dá)式的每個(gè)復(fù)合原子(框222),可以執(zhí)行以下操作。利用原子的保護(hù)器密鑰加密內(nèi)容加密密鑰(框224)。在每種情況下與作為保護(hù)器的保護(hù)器密鑰的唯一標(biāo)識(shí)符一起存儲(chǔ)加密的結(jié)果(框226)。然后,例如通過(guò)使用RSA安全公司公布的公鑰密碼標(biāo)準(zhǔn)#7將加密的內(nèi)容和上面創(chuàng)建的保護(hù)器封裝進(jìn)信封(框228)。因此,上面的技術(shù)允許按照訪問(wèn)控制規(guī)則中的原子的組合加密數(shù)據(jù)。該技術(shù)也是高效的,因?yàn)樗梢允褂脤?duì)稱加密技術(shù)。當(dāng)解密數(shù)據(jù)時(shí),嵌入到包封和封裝的加密數(shù)據(jù)中的唯一密鑰標(biāo)識(shí)符可以用來(lái)取回必要的保護(hù)器密鑰。如果對(duì)于主體可用的保護(hù)器密鑰集合足以滿足加密的數(shù)據(jù)的訪問(wèn)控制規(guī)則,那么加密方案確保該主體解密數(shù)據(jù)將是可能的。圖3為更詳細(xì)地示出圖1的數(shù)據(jù)保護(hù)模塊114的實(shí)例實(shí)現(xiàn)方式中的系統(tǒng)的圖示。 為了找到與每個(gè)原子相應(yīng)的保護(hù)器密鑰,每個(gè)安全主體類型302可以采用以下關(guān)聯(lián)的方法。GetEncryptionKey (獲得加密密鑰)方法 304
該方法304可以將安全主體標(biāo)識(shí)符306取為輸入并且返回加密密鑰308以及相應(yīng)解密密鑰的唯一標(biāo)識(shí)符310。在一個(gè)實(shí)現(xiàn)方式中,可以為調(diào)用主體執(zhí)行該方法,即使調(diào)用主體未被授權(quán)訪問(wèn)解密密鑰。GetDecryptionKey (獲得解密密鑰)方法 312
在一個(gè)實(shí)現(xiàn)方式中,該方法采取解密密鑰的唯一標(biāo)識(shí)符314,其可以與從 GetEncryptionKey方法304接收的解密密鑰的唯一標(biāo)識(shí)符310相同。然后,當(dāng)且僅當(dāng)調(diào)用主體被授權(quán)訪問(wèn)解密密鑰316時(shí),GetDecryptionKey方法312才可能取回解密密鑰316。圖4示出了被示為依照訪問(wèn)控制規(guī)則加密數(shù)據(jù)的圖1數(shù)據(jù)保護(hù)系統(tǒng)102的實(shí)例實(shí)現(xiàn)方式400。在該實(shí)例中,用戶希望依照以下訪問(wèn)控制規(guī)則保護(hù)數(shù)據(jù)塊“密鑰=User:UserIdXYZ OR SID=S-l-5-32_544,,。數(shù)據(jù)保護(hù)系統(tǒng)102以及更特別地?cái)?shù)據(jù)保護(hù)模塊114定位負(fù)責(zé)管理“用戶 (User)"類型402的密鑰的模塊(例如數(shù)據(jù)保護(hù)模塊114的子模塊),并且利用輸入?yún)?shù) "UserIdXYZ"406調(diào)用該模塊的GetEncryptionKey方法404。因此,用戶類型402提供了用于該類型的加密密鑰408以及在該實(shí)例中稱為“UniqueIdXYZ”410的相應(yīng)解密密鑰的唯一標(biāo)識(shí)符。類似地,數(shù)據(jù)保護(hù)模塊114定位負(fù)責(zé)管理用于“SID”類型412的主體的密鑰的模塊(例如數(shù)據(jù)保護(hù)模塊114的子模塊),并且利用輸入?yún)?shù)“S-l-5-32-544”416調(diào)用相應(yīng)的 GetEncryptionKey方法414。因此,SID類型412提供了用于該類型的加密密鑰418以及在該實(shí)例中稱為“UniqueIdSidM4” 420的相應(yīng)解密密鑰的唯一標(biāo)識(shí)符。然后,數(shù)據(jù)保護(hù)模塊114使用早先描述的技術(shù)通過(guò)使用加密密鑰408、418加密數(shù)據(jù)422以便獲得被包封和封裝的加密的數(shù)據(jù)424。然后,加密的數(shù)據(jù)4M可以被存儲(chǔ)以供以后使用、傳輸至不同的計(jì)算設(shè)備(例如如關(guān)于圖1所描述的)等等,以供以后解密。最后,可以代表用戶或其他實(shí)體(例如應(yīng)用程序)要求計(jì)算設(shè)備解密加密的數(shù)據(jù)424。因此,數(shù)據(jù)保護(hù)系統(tǒng)102可以嘗試使用GetDecryptionKey方法取回唯一標(biāo)識(shí)符 “UniqueldXYZ”和“UniqueIDSidM4” 410、420標(biāo)識(shí)的解密密鑰,所述方法的實(shí)例關(guān)于圖3 進(jìn)行了描述。如果二者都不可以獲得,那么就不可能解密加密的數(shù)據(jù)424。如果獲得了任一解密密鑰,那么數(shù)據(jù)保護(hù)系統(tǒng)102使用它以便解密數(shù)據(jù)和驗(yàn)證其完整性。如果完整性檢查失敗,那么返回錯(cuò)誤;否則,系統(tǒng)將解密的數(shù)據(jù)返回給用戶。圖5示出了多級(jí)密鑰導(dǎo)出方案的實(shí)例實(shí)現(xiàn)方式500。該密鑰導(dǎo)出方案采用了可以利用一個(gè)主體或一組主體的標(biāo)識(shí)符的主體的授權(quán)表達(dá)式,其一個(gè)實(shí)例是以下討論中的SID, 但是也可以設(shè)想其他的實(shí)例。該實(shí)例示出了三級(jí)導(dǎo)出,第一級(jí)次(標(biāo)記為L(zhǎng)0)具有鏈長(zhǎng)1,并且其他級(jí)次(Li和L2)具有鏈長(zhǎng)32,但是應(yīng)當(dāng)容易清楚的是,也可以設(shè)想其他的長(zhǎng)度。為了簡(jiǎn)單起見(jiàn),始終使用相同的密鑰導(dǎo)出函數(shù),并且表示為KDF,但是應(yīng)當(dāng)容易清楚的是,可以采用各種各樣的不同導(dǎo)出函數(shù)。MRK在該實(shí)例實(shí)現(xiàn)方式中代表主根密鑰。該技術(shù)被描述為使用受信任認(rèn)證服務(wù)(包括諸如活動(dòng)目錄之類的分布式服務(wù))以便獲得與服務(wù)的安全域中的每個(gè)唯一標(biāo)識(shí)相應(yīng)的密鑰。例如,該技術(shù)可以由活動(dòng)目錄域控制器用來(lái)產(chǎn)生用于AD林(forest)中的每個(gè)SID的保護(hù)器密鑰,并且響應(yīng)對(duì)于這樣的密鑰的請(qǐng)求。該實(shí)例實(shí)現(xiàn)方式包括以下組件。主密鑰
采用一個(gè)或多個(gè)主密鑰(MRK)以用于安全域,以及用于每個(gè)主密鑰的唯一標(biāo)識(shí)符和用于從主密鑰集合確定當(dāng)前主密鑰的規(guī)則。導(dǎo)出級(jí)次
可以支持一定數(shù)量的導(dǎo)出級(jí)次N,其在所示的實(shí)例中為三個(gè)級(jí)次。對(duì)于0與N-I之間的每個(gè)導(dǎo)出級(jí)次k,采用初始密鑰導(dǎo)出函數(shù)KDFl_k。也可以采用用于確定其參數(shù)的規(guī)則, 該規(guī)則可以基于安全主體的標(biāo)識(shí)符或其他屬性(例如可以由主體滿足的授權(quán)表達(dá)式)、當(dāng)前時(shí)間和可選的附加參數(shù)。與用于基于安全主體的屬性(例如標(biāo)識(shí)符)或授權(quán)表達(dá)式、當(dāng)前時(shí)間和可選的附加參數(shù)確定對(duì)應(yīng)參數(shù)的規(guī)則一起,對(duì)于每個(gè)導(dǎo)出級(jí)次也采用鏈密鑰導(dǎo)出函數(shù) KDF2_k。對(duì)于“k”導(dǎo)出級(jí)次中的每一個(gè),也采用鏈長(zhǎng)M_k。
時(shí)間間隔
時(shí)間間隔Tl代表對(duì)于給定的安全主體,多長(zhǎng)時(shí)間創(chuàng)建新加密密鑰一次。這可以用來(lái)間接地確定層級(jí)中每個(gè)級(jí)次的密鑰壽命。例如,考慮如圖5中所示具有三個(gè)級(jí)次(即N=3)的實(shí)例。用于第二導(dǎo)出級(jí)次“L2”的新密鑰在時(shí)間間隔“Tl”處產(chǎn)生。這意味著用于第一導(dǎo)出級(jí)次“Li”的新密鑰在時(shí)間間隔“32*1!”處產(chǎn)生,這反過(guò)來(lái)意味著用于最高導(dǎo)出級(jí)次“L0” 的新密鑰在時(shí)間間隔“32*32*T1=10M*T1”處產(chǎn)生。當(dāng)可以從某個(gè)密鑰導(dǎo)出的每個(gè)密鑰的創(chuàng)建時(shí)間已經(jīng)過(guò)去,則稱該密鑰已經(jīng)耗盡。例如,如果從“Li”密鑰導(dǎo)出每個(gè)“L2”密鑰的創(chuàng)建時(shí)間已經(jīng)過(guò)去,則認(rèn)為“Li,,密鑰耗盡。根據(jù)一個(gè)或多個(gè)實(shí)現(xiàn)方式中的定義,主密鑰不可能耗盡。時(shí)間間隔“T2”代表對(duì)于給定安全主體,給定加密密鑰可以多長(zhǎng)時(shí)間用來(lái)加密新數(shù)據(jù)。因此,在一個(gè)實(shí)現(xiàn)方式中,密碼密鑰可能經(jīng)常改變,從而不采用顯式的密鑰撤銷技術(shù)。對(duì)稱加密算法
可以在該實(shí)例實(shí)現(xiàn)方式中采用對(duì)稱加密算法Al以及可以用來(lái)導(dǎo)出用于該算法的密鑰的密鑰導(dǎo)出函數(shù)KDF_s。當(dāng)授權(quán)進(jìn)行GetEncryptionKey調(diào)用的主體訪問(wèn)相應(yīng)解密密鑰時(shí), 可以導(dǎo)出供該算法使用的保護(hù)器密鑰。非對(duì)稱算法
在該實(shí)現(xiàn)方式中,非對(duì)稱算法A2以及兩個(gè)密鑰導(dǎo)出函數(shù)KDF_e和KDF_d可以用來(lái)導(dǎo)出用于該算法的加密和解密密鑰配對(duì)。當(dāng)進(jìn)行GetEncryptionKey調(diào)用的主體未被授權(quán)訪問(wèn)密鑰對(duì)的解密密鑰時(shí),可以導(dǎo)出供該算法使用的保護(hù)器密鑰對(duì)。圖6繪出了其中安全主體從采用圖5的多級(jí)密鑰導(dǎo)出方案的密鑰管理服務(wù)請(qǐng)求加密密鑰的實(shí)例實(shí)現(xiàn)方式中的過(guò)程600。以下討論描述了可以利用先前描述的系統(tǒng)和設(shè)備實(shí)現(xiàn)的密鑰導(dǎo)出技術(shù)。每個(gè)過(guò)程的各方面可以以硬件、固件或軟件或者其組合實(shí)現(xiàn)。這些過(guò)程被示為規(guī)定由一個(gè)或多個(gè)設(shè)備執(zhí)行的操作的功能框集合,并且不一定限于所示出的各功能框執(zhí)行操作的順序。在以下討論的部分中,將參照?qǐng)D5的實(shí)例實(shí)現(xiàn)方式。密鑰管理服務(wù)從安全主體“S”接收針對(duì)給定安全主體標(biāo)識(shí)符“S”的對(duì)于加密密鑰的請(qǐng)求(框602)。作為響應(yīng),密鑰管理服務(wù)獲得用于域的當(dāng)前主密鑰(框604)。然后,基于安全主體的標(biāo)識(shí)和當(dāng)前時(shí)間,密鑰管理服務(wù)確定用于該主體的當(dāng)前加密密鑰的鏈位置(1_0, 1_1,…,1_N-1)(框606)。應(yīng)當(dāng)指出的是,在該實(shí)現(xiàn)方式中,每個(gè)鏈位置與(M_k -1)之間的整數(shù)。對(duì)于范圍從0至N-I且包括0和N-I的每個(gè)導(dǎo)出級(jí)次k,執(zhí)行以下操作(框608)。 KDFl_k用來(lái)從先前級(jí)次的當(dāng)前密鑰導(dǎo)出該級(jí)次的初始密鑰(框610)。對(duì)于k=0,主密鑰為先前級(jí)次的密鑰。將KDF2_k&“M_k - l_k - 1”次迭代應(yīng)用于初始密鑰以便獲得該級(jí)次的當(dāng)前密鑰(框612)。一旦獲得了 N-I級(jí)次的當(dāng)前密鑰,那么可以執(zhí)行以下操作。如果主體S被授權(quán)請(qǐng)求的安全主體S’的解密密鑰,那么使用KDF_s導(dǎo)出對(duì)稱密鑰(框614)。如果主體S未被授權(quán)請(qǐng)求的安全主體S’的解密密鑰,那么使用KDF_e導(dǎo)出非對(duì)稱加密密鑰(框616)。然后,將前面的操作中導(dǎo)出的密鑰與通過(guò)級(jí)聯(lián)安全主體的屬性(例如標(biāo)識(shí)屬性)ID S’、主密鑰的唯一 ID和多元組(1_0,1_1,…,1_N-1)而構(gòu)造的唯一密鑰標(biāo)識(shí)符一起,返回給安全主體(框618)。為了提高效率,客戶端實(shí)現(xiàn)方式可以緩存加密密鑰。然而,在一個(gè)實(shí)現(xiàn)方式中,比T2更舊的加密密鑰不用來(lái)加密新數(shù)據(jù)。當(dāng)主體“R”從服務(wù)器請(qǐng)求解密密鑰時(shí),主體“R”提供唯一密鑰標(biāo)識(shí)符。唯一密鑰標(biāo)識(shí)符包含密鑰的安全主體標(biāo)識(shí)符R’、主密鑰的唯一 ID以及多元組(1_0,1_1,…,1_ N-1)。然后,密鑰管理服務(wù)可以執(zhí)行與上面類似的具有以下差異的過(guò)程。如果調(diào)用安全主體R未被授權(quán)安全主體標(biāo)識(shí)符R’,則返回錯(cuò)誤。否則,服務(wù)返回可以用來(lái)導(dǎo)出請(qǐng)求的解密密鑰的最新且最高級(jí)次的耗盡密鑰。然后,客戶端可以應(yīng)用一個(gè)或多個(gè)密鑰導(dǎo)出函數(shù)以便獲得適當(dāng)?shù)慕饷苊荑€。在一個(gè)實(shí)例實(shí)現(xiàn)方式中,做出以下算法選擇,但是應(yīng)當(dāng)容易清楚的是,也可以設(shè)想其他的選擇。伽羅瓦計(jì)數(shù)器運(yùn)算模式(GCM)中的高級(jí)加密標(biāo)準(zhǔn)(AES)算法可以用作 Al。具有指定的組發(fā)生器、模數(shù)和子組大小的Diffie-Hellman-Merkle算法可以用作算法A2。NIST特刊800-108中指定的密鑰導(dǎo)出函數(shù)之一可以用于KDFl和KDF2函數(shù)中的每一個(gè)以及KDF_s函數(shù)。函數(shù)1 _(1可以采用SP 800-108 KDF,其輸出被截?cái)酁橛糜贏2 的私有子組的大小。然后,通過(guò)應(yīng)用KDF_d并且計(jì)算相應(yīng)的公鑰而執(zhí)行函數(shù)KDF_e。對(duì)于Diffie-Hellman-Merkle算法,這涉及將組發(fā)生器提升至KDF_d的輸出模組的模數(shù) (modulo)所表示的整數(shù)。因此,可以利用這些技術(shù)以便提供各種各樣的性質(zhì)。例如,密鑰管理服務(wù)可以存儲(chǔ)相對(duì)較小的主密鑰集合,而不管安全主體的總數(shù)如何。此外,安全主體不能可行地確定用于該主體未被授權(quán)的安全主體標(biāo)識(shí)符的解密密鑰。此外,安全主體不能可行地計(jì)算主密鑰,也不能計(jì)算未來(lái)的密鑰。再進(jìn)一步,即使當(dāng)安全主體“A”不是主體集合“B”的成員時(shí),安全主體“A”也可以在密碼學(xué)上保護(hù)用于主體集合“B”的數(shù)據(jù)。像所述服務(wù)那樣,客戶端也可以緩存相對(duì)較小的密鑰集合以便能夠解密加密到給定安全主體的每個(gè)過(guò)去數(shù)據(jù)項(xiàng)。例如,在圖6的實(shí)現(xiàn)方式中,緩存耗盡的“L0”密鑰、不超過(guò)31個(gè)耗盡的“Li”密鑰以及當(dāng)前L2密鑰中的每一個(gè)就足夠了。圖7示出了可操作來(lái)采用關(guān)于圖5和圖6描述的層級(jí)技術(shù)的系統(tǒng)700的實(shí)例實(shí)現(xiàn)方式。如圖所示的系統(tǒng)700包括具有保護(hù)API 704的密鑰管理客戶端模塊702,所述保護(hù) API 704可調(diào)用來(lái)訪問(wèn)模塊代表的功能。例如,可以調(diào)用保護(hù)API 704以便訪問(wèn)主體標(biāo)識(shí)符(例如SID)保護(hù)器模塊706、證書(shū)保護(hù)器模塊708和密鑰保護(hù)器模塊710。密鑰保護(hù)器模塊710代表管理諸如持久對(duì)稱密鑰712之類的密鑰、持久KDF秘密714等等的功能。證書(shū)保護(hù)器模塊708代表密鑰管理客戶端模塊702維護(hù)和管理證書(shū)的功能。主體標(biāo)識(shí)符保護(hù)器模塊706代表與諸如安全標(biāo)識(shí)符(SID)之類的主體標(biāo)識(shí)符有關(guān)的功能。例如,主體標(biāo)識(shí)符保護(hù)器模塊706可以用來(lái)本地地維護(hù)SID密鑰緩存716。主體標(biāo)識(shí)符保護(hù)器模塊706可以利用一個(gè)或多個(gè)有線或無(wú)線協(xié)議718以便訪問(wèn)可以在只讀域控制器(RODC)中實(shí)現(xiàn)的SID密鑰服務(wù)模塊720,和/或被配置成在全域控制器內(nèi)起作用的SID 密鑰服務(wù)模塊722。AD存儲(chǔ)區(qū)724也可以由系統(tǒng)700采用,其可以用來(lái)維護(hù)主密鑰和服務(wù)器配置(并且可以使用一個(gè)或多個(gè)管理工具7 進(jìn)行訪問(wèn)和管理)。密鑰管理客戶端模塊702也被示為與配置7 數(shù)據(jù)通信,所述配置數(shù)據(jù)例如客戶端算法、命名描述符、恢復(fù)等等,其進(jìn)一步被示為利用組策略設(shè)置730。盡管關(guān)于活動(dòng)目錄描述了上面的圖5-7的實(shí)例,但是應(yīng)當(dāng)指出的是,本文描述的技術(shù)也可以用于其他的密碼應(yīng)用。例如,可以實(shí)現(xiàn)用于數(shù)據(jù)完整性保護(hù)的系統(tǒng),使得授權(quán)安全主體單獨(dú)地可以檢驗(yàn)給定數(shù)據(jù)塊的完整性(或真實(shí)性)。
結(jié)論
盡管以特定于結(jié)構(gòu)特征和/或方法動(dòng)作的語(yǔ)言描述了本發(fā)明,但是應(yīng)當(dāng)理解的是,所附權(quán)利要求書(shū)中限定的本發(fā)明不必限于所描述的特定特征或動(dòng)作。相反地,這些特定的特征和動(dòng)作作為實(shí)現(xiàn)要求保護(hù)的本發(fā)明的實(shí)例形式而被公開(kāi)。
權(quán)利要求
1.一種由一個(gè)或多個(gè)計(jì)算設(shè)備實(shí)現(xiàn)的方法,該方法包括讀取包括具有多個(gè)原子(118)的布爾表達(dá)式的訪問(wèn)控制規(guī)則(116),每個(gè)所述原子具有密碼密鑰的標(biāo)識(shí)符;請(qǐng)求與訪問(wèn)控制規(guī)則中的所述多個(gè)原子中的每一個(gè)的標(biāo)識(shí)符相應(yīng)的密碼密鑰;以及使用所述密碼密鑰中的一個(gè)或多個(gè)對(duì)數(shù)據(jù)執(zhí)行一種或多種密碼操作。
2.如權(quán)利要求1所述的方法,其中至少一個(gè)所述原子與被限定為由主體滿足以便對(duì)數(shù)據(jù)執(zhí)行解密操作的屬性相應(yīng)。
3.如權(quán)利要求1所述的方法,其中執(zhí)行所述對(duì)于密碼密鑰的請(qǐng)求以便加密數(shù)據(jù);并且請(qǐng)求密碼密鑰的主體不共享與所述多個(gè)原子相應(yīng)的屬性。
4.如權(quán)利要求3所述的方法,其中當(dāng)主體被授權(quán)訪問(wèn)相應(yīng)解密密鑰時(shí),密碼密鑰被配置用于對(duì)稱技術(shù),并且當(dāng)主體未被授權(quán)訪問(wèn)相應(yīng)解密密鑰時(shí),密碼密鑰被配置用于非對(duì)稱技術(shù)。
5.如權(quán)利要求1所述的方法,其中執(zhí)行所述對(duì)于密碼密鑰的請(qǐng)求以便解密數(shù)據(jù);并且對(duì)于密碼密鑰的訪問(wèn)基于請(qǐng)求密碼密鑰的主體是否共享與如訪問(wèn)控制規(guī)則所限定的對(duì)應(yīng)所述原子相應(yīng)的屬性。
6.如權(quán)利要求1所述的方法,其中訪問(wèn)控制規(guī)則支持至少兩個(gè)所述屬性的集合,其中任一集合被配置成當(dāng)主體滿足對(duì)應(yīng)所述集合中的每個(gè)原子時(shí),允許訪問(wèn)所述密碼密鑰。
7.如權(quán)利要求1所述的方法,其中所述屬性中的至少一個(gè)與活動(dòng)目錄中的主體有關(guān)。
8.如權(quán)利要求7所述的方法,其中所述屬性中的所述至少一個(gè)用來(lái)標(biāo)識(shí)要被提供對(duì)數(shù)據(jù)的訪問(wèn)的主體。
9.如權(quán)利要求1所述的方法,其中密碼密鑰是多級(jí)密鑰導(dǎo)出方案的一部分。
10.如權(quán)利要求9所述的方法,其中所述方案涉及使用時(shí)間間隔以便確定該方案的每個(gè)所述級(jí)次的密碼密鑰的壽命。
全文摘要
描述了密碼密鑰管理技術(shù)。在一個(gè)或多個(gè)實(shí)現(xiàn)方式中,讀取包括具有多個(gè)原子的布爾表達(dá)式的訪問(wèn)控制規(guī)則,每個(gè)原子具有密碼密鑰的標(biāo)識(shí)符。請(qǐng)求與訪問(wèn)控制規(guī)則中的所述多個(gè)原子中的每一個(gè)的標(biāo)識(shí)符相應(yīng)的密碼密鑰。然后,使用所述密碼密鑰中的一個(gè)或多個(gè)對(duì)數(shù)據(jù)執(zhí)行一種或多種密碼操作。
文檔編號(hào)H04L9/08GK102571329SQ201110437099
公開(kāi)日2012年7月11日 申請(qǐng)日期2011年12月23日 優(yōu)先權(quán)日2010年12月23日
發(fā)明者B.G.M.奈斯特倫, C.M.伊拉克, C.M.埃利森, D.伊索波夫, N.T.費(fèi)爾古森, O.T.烏雷徹, P.J.諾沃特尼, V.G.巴拉瓦吉, 周大翊 申請(qǐng)人:微軟公司