專(zhuān)利名稱(chēng)::用于計(jì)算機(jī)裝置驗(yàn)證的系統(tǒng)和方法
技術(shù)領(lǐng)域:
:本發(fā)明通常涉及計(jì)算機(jī)系統(tǒng)和軟件方法,更具體地說(shuō),涉及用于計(jì)算機(jī)裝置驗(yàn)證的系統(tǒng)和方法。10
背景技術(shù):
:個(gè)人計(jì)算設(shè)備已成為我們生活中越來(lái)越重要的-一鄰分,而且當(dāng)這些設(shè)備與因特網(wǎng)相互連接時(shí),安全地驗(yàn)證交易處理中所涉及的使用這些設(shè)備的實(shí)體就變得日益重要。在一個(gè)操作系統(tǒng)的受保護(hù)的子域中執(zhí)行特許操作的安全內(nèi)核的觀念在對(duì)計(jì)15割L安全中是---個(gè)很陳舊的觀念。然而,在船t商業(yè)操作系統(tǒng)的發(fā)展過(guò)程中,象在各種版本的MicrosoftWm.dows、UMX、以及小型設(shè)備的嵌入操作系統(tǒng)中反映出來(lái)的那樣,傳統(tǒng)的安全邊界以及操作系統(tǒng)的響應(yīng)度不是變得很模糊、被取代,就是安全漏洞層出不窮。在這種情況下,操作系統(tǒng)變ltt大,致使不可能有育幼來(lái)保證或用任何綜合的手段分析該系統(tǒng)。即使在原則上可能有這樣-一20種保證過(guò)程,但是實(shí)際上在這些系統(tǒng)期望的使用期內(nèi),看起來(lái)是不可能實(shí)現(xiàn)的。一些系統(tǒng)已采用具有物理上或結(jié)構(gòu)上分離的CPU來(lái)容納安全關(guān)鍵數(shù)據(jù)和在更大的系統(tǒng)中執(zhí)行安全關(guān)鍵功能。一個(gè)例子就是基于驗(yàn)證裝置的智能卡。智能卡裝置提供一個(gè)對(duì)一個(gè)或多個(gè)嵌入的加密密鑰具有單一存取的分離的操作環(huán)境。它可連接到一個(gè)傳統(tǒng)的計(jì)勤調(diào)嵌入的密鑰來(lái)執(zhí)行數(shù)字簽名、用戶驗(yàn)證、25及由計(jì)算機(jī)啟動(dòng)的事務(wù)處理。同時(shí)它很小和簡(jiǎn)單,足以在--個(gè)相對(duì)全面的繼中分析它的安條性。然而,智能卡和其它附加設(shè)備的引入對(duì)該環(huán)境來(lái)說(shuō)增加了費(fèi)用和復(fù)雜性,它通常要求用戶和系統(tǒng)管理者安裝卡閱瀆器,而且要求智能卡分配激這些機(jī)器的用戶。另-一個(gè)例子是在系統(tǒng)中使用一個(gè)具有用于存儲(chǔ)密鑰的本地專(zhuān)用剤諸的從屬加密處理器。其功能對(duì)以于常插的智能卡的功能。30這些附加硬件的系統(tǒng)的另一個(gè)限律提該附加的CPU并不具備自己的輸入和輸出裝置。對(duì)這些裝置用戶I/O系統(tǒng)進(jìn)一步增加了費(fèi)用和復(fù)雜性,而且通常在功能上和方便上很受p艮制。例如,完全依賴(lài)于所雜的計(jì)算機(jī)來(lái)告訴它對(duì)什么簽名以及用嵌入的密鑰來(lái)處理的—-個(gè)具有一個(gè)CPU的加密附加裝置,對(duì)頓連接的計(jì)算機(jī)上進(jìn)行的冊(cè)滁該設(shè)備的某些保存值的安全劍辦來(lái)說(shuō)是很脆弱5的。由于這些分離裝置的隔離》對(duì)該裝置來(lái)說(shuō),一船艮困難或是不可能保證由主機(jī)正向其顯示的交易處理是真實(shí)的。因此,在某些方面,該系統(tǒng)還得最終依賴(lài)于主機(jī)操作系統(tǒng)和應(yīng)用程序的完善。為了裝置應(yīng)用程序軟件的網(wǎng)絡(luò)驗(yàn)證的目的,本發(fā)明的--個(gè)目的是為裝置提供---個(gè)強(qiáng)大的加密身份。本發(fā)明的另一個(gè)目的是用對(duì)系統(tǒng)來(lái)說(shuō)最少的附加硬件10來(lái)提供高保i正。本發(fā)明的另一個(gè)目的是提供--個(gè)系統(tǒng),允許只要求在商品類(lèi)商業(yè)個(gè)人電腦中使用的硬件來(lái)完成計(jì)算機(jī)裝置驗(yàn)證。本發(fā)明的另一個(gè)目的是提供一個(gè)小的安全內(nèi)核,其中該內(nèi)核在從應(yīng)用程序和操作系統(tǒng)分離的域中操作,在安全內(nèi)核的實(shí)現(xiàn)中易于過(guò)程分析和建立信任的逝呈。本發(fā)明的另---個(gè)目的是允許安全內(nèi)核訪問(wèn)操作系統(tǒng)(OS)的存儲(chǔ)器和應(yīng)15用程序,以便建立需要安全內(nèi)核函數(shù)的程序的可靠性和完整性。發(fā)明糊述為實(shí)現(xiàn)上述和其它的目的,本發(fā)明包括為計(jì)算機(jī)設(shè)備管理機(jī)構(gòu)提供的系統(tǒng)和方法。本發(fā)明提供了一個(gè)小型的安全內(nèi)核,便于在內(nèi)核的實(shí)現(xiàn)中分析和建立信任的過(guò)程,同時(shí)消除了一雄的附加硬件方法的P蹄IJ。理論上來(lái)說(shuō),安全內(nèi)核20在從運(yùn)行在主機(jī)上的應(yīng)用程序和操作系統(tǒng)分離的一個(gè)域中運(yùn)行,并訪問(wèn)操作系統(tǒng)OS和應(yīng)用程序的存儲(chǔ)器。本發(fā)明通過(guò)在傳統(tǒng)的現(xiàn)有操作系統(tǒng)的邊界內(nèi)創(chuàng)建---個(gè)小型的內(nèi)部安全內(nèi)核提供了這樣一個(gè)安全結(jié)構(gòu),它能為os和應(yīng)用程序執(zhí)行安全操作并驗(yàn)證其完整性。本發(fā)明的密鑰方面包括(1)含有一個(gè)保密主密鑰的OAR鎖定(QAR-25locked)的非易失性存儲(chǔ)器(NVM),在啟動(dòng)時(shí)能移動(dòng)進(jìn)入到系統(tǒng)管理模式(SMM),然后禁止OAR鎖定(OAR-locked)的非易失性存儲(chǔ)器;(2)容器將-一個(gè)設(shè)備密鑰賦給專(zhuān)用的應(yīng)用程序,以及解決保密/用戶可控性問(wèn)題;以及(3)抽査被稱(chēng)為"忙碌"的調(diào)用應(yīng)用程序的完整性。設(shè)備密鑰用于執(zhí)行設(shè)備管理機(jī)構(gòu)來(lái)補(bǔ)充用戶驗(yàn)證,保護(hù)僅僅分配給特定設(shè)30備的內(nèi)容,以及例如用本地存儲(chǔ)的和/或遠(yuǎn)程得到的憑證(或共用的憑證)啟用一虧隨擬的智能卡。該密鑰#^用于增強(qiáng)系統(tǒng)關(guān)鍵密鑰的保護(hù),例如代替缺省的保密機(jī)API容器。用于使用和保護(hù)訪問(wèn)-一個(gè)主加密密鑰的一個(gè)典型系統(tǒng)包括非易失性存儲(chǔ)器;一個(gè)系統(tǒng)初始化過(guò)程,在系統(tǒng)初始化繼中從非易失性存儲(chǔ)器讀取主密鑰,5將一個(gè)來(lái)源于主密鑰的靈1寫(xiě);^--個(gè)隱蔽的存儲(chǔ)單元,禁止任何運(yùn)行在系統(tǒng)中的,訪問(wèn)非易失性存儲(chǔ)器,直到—F—次開(kāi)始系統(tǒng)初始化過(guò)程為止;用于禁止在系統(tǒng)的正常操作模式中運(yùn)行的任何樹(shù),訪問(wèn)隱蔽的存儲(chǔ)單元的裝置;以及用于允許在系統(tǒng)的-一個(gè)受限的操作模式中運(yùn)行的一段程序訪問(wèn)隱蔽的剤諸單兀的裝置。10在存儲(chǔ)器中隱藏一個(gè)主加密密鑰的另-一個(gè)典型系統(tǒng)包括用于從非易失性存儲(chǔ)器中讀取一個(gè)主密鑰、停止訪問(wèn)非易失性存儲(chǔ)器以致直到下一次系統(tǒng)復(fù)位才能進(jìn)TO問(wèn)、荊#---個(gè)鄉(xiāng)于主密鑰的靈敏數(shù)據(jù)寫(xiě)入-一個(gè)隱蔽的地址空間、以及其中只有運(yùn)行在系統(tǒng)的一-個(gè)限定操作模式中的程序育g訪問(wèn)在隱蔽的地址空間中的靈敏的加電軟件。15ffil^加密密鑰的可用性限定到具有-一個(gè)給定AppCodettgest的應(yīng)用程序上,為應(yīng)用程序提供了用于控制對(duì)數(shù)據(jù)的讀和寫(xiě)訪問(wèn)的一種典型方法。該方法包括一個(gè)密鑰;一個(gè)具有應(yīng)用程序想訪問(wèn)的數(shù)據(jù)的一個(gè)密封或開(kāi)封格式的AppContauier;—個(gè)用于執(zhí)行組成調(diào)用應(yīng)用程序的部分字節(jié)的-一個(gè)加密摘要來(lái)計(jì)算AppCodeDigest的CiyptoGate模塊;以及一個(gè)包括檢査Appcont纖er和20AppCodeDigest的完整性校驗(yàn)的C,toGate模lfc以及該主密鑰,用于確定該應(yīng)用程序是否有權(quán)開(kāi)封在給定AppContamer中的數(shù)據(jù),或者當(dāng)密封該數(shù)據(jù)時(shí),修改它來(lái)增加完整性校驗(yàn)信息。M31將加密密鑰的可用性限定到在一個(gè)專(zhuān)用設(shè)備的應(yīng)用程序上,本發(fā)明為應(yīng)用程J對(duì)是供了一種用于對(duì)數(shù)據(jù)的訪問(wèn)進(jìn)行控制的方法。該方法包括公知的25密鑰QyptoEngme;包含-一個(gè)應(yīng)用程序想訪問(wèn)的數(shù)據(jù)的加密密封格式的一個(gè)應(yīng)用辦容器結(jié)構(gòu);一個(gè)CiyptoGate函數(shù),在應(yīng)用級(jí)程序和CiyptoEngme之間截恥聽(tīng)有訪問(wèn),包括一個(gè)用于檢查試圖訪問(wèn)加密服務(wù)或數(shù)據(jù)的程序的在存儲(chǔ)器內(nèi)可執(zhí)行的圖像的字節(jié)的-一部分的裝置,并計(jì)算調(diào)用程序在存儲(chǔ)器內(nèi)的圖像的字節(jié)的一部分的加密摘要來(lái)計(jì)算應(yīng)用程序的AppCodeDigest;以及一個(gè)由3()CiyptoEngine執(zhí)行的完整性校驗(yàn)方法,用于成檢查AppConte麗er和AppCodeD第est;以及該主密鑰,用于確定該應(yīng)用程序是否有權(quán)開(kāi)封在給定AppContainer中的數(shù)據(jù),或者當(dāng)密封該數(shù)據(jù)時(shí),修改它來(lái)增加完整性校驗(yàn)信息。本發(fā)明還為在另一個(gè)具有--個(gè)設(shè)備管理機(jī)構(gòu)的計(jì)算機(jī)的幫助下、具有----個(gè)驗(yàn)證服務(wù)器的另一個(gè)計(jì)算f腿供了用于在一個(gè)識(shí)別裝置上驗(yàn)證一個(gè)識(shí)別應(yīng)用程5序的方法。該方&^括一個(gè)登記方法、--寸注冊(cè)方法以及一個(gè)驗(yàn)證方法。登記方法包括以下步驟a)在--4SMI中斷過(guò)程中,在設(shè)備上執(zhí)行第-加密操作,將生成的結(jié)果送給驗(yàn)證服務(wù)器,b)在一個(gè)SMI中斷過(guò)程中,在設(shè)備上執(zhí)行第二加密操作,對(duì)由設(shè)備管理秒,產(chǎn)生的值進(jìn)微理,然后El3該設(shè)備接收。i()注冊(cè)方法包括以下步驟a)在-一個(gè)SMI中斷過(guò)程中,在設(shè)備上孰行第一加密操作,將生成的結(jié)果送給驗(yàn)證服務(wù)器,b)由驗(yàn)證服務(wù)器操作執(zhí)行第二加密操作,存儲(chǔ)所生成的加密變TO于驗(yàn)證方法aii中,以及c)在--個(gè)smi中斷過(guò)程中,在該設(shè)備上執(zhí)行可選的第.三加密操作,對(duì)由驗(yàn)證服務(wù)器生成的值進(jìn)行處理,然后由該設(shè)備接收。15驗(yàn)證方法包括以下步驟a)在--個(gè)SMI中斷過(guò)程中,在設(shè)備上執(zhí)行第一加密操作,將生成的驗(yàn)證數(shù)據(jù)發(fā)送給驗(yàn)證月艮務(wù)器,以及b)通過(guò)驗(yàn)證服務(wù)器,對(duì)使用至少在注冊(cè)方法過(guò)程中存儲(chǔ)的加密變量從該設(shè)備接收的驗(yàn)證數(shù)據(jù)執(zhí)行第二加密操作。本發(fā)明還提供了一種用于在一個(gè)識(shí)別裝置上驗(yàn)證一個(gè)識(shí)別程序的方法,或20者為另--個(gè)具有--個(gè)PASS服務(wù)器的計(jì)算機(jī)提供一個(gè)用于識(shí)另?xiàng)l識(shí)別裝置的用戶的第二因子。該方法包括一個(gè)應(yīng)用程序,用于a)通過(guò)涉及與一個(gè)設(shè)備管理機(jī)構(gòu)和一個(gè)驗(yàn)證服務(wù)器的通信執(zhí)行一個(gè)登記方法,以在設(shè)備上創(chuàng)建一個(gè)AppContam仏其中AppContemer是一個(gè)與應(yīng)用程序有關(guān)的加密數(shù)據(jù)結(jié)構(gòu),以及b)存儲(chǔ)憑證信息,其中驗(yàn)證服務(wù)器為AppConteuner存儲(chǔ)一個(gè)AppKey和25CustAppKey。在識(shí)別設(shè)備上運(yùn)行一個(gè)應(yīng)用程序來(lái)執(zhí)行包括下述步驟的驗(yàn)證方法a)開(kāi)封存儲(chǔ)憑證的AppConteMer,b)修改憑證,c)重新密封AppConta腦r,d)將識(shí)別信息和至少重新密封的AppCont謡er的一部分發(fā)送給驗(yàn)證服務(wù)器,以及其中,在-一個(gè)SM過(guò)程中,在處理應(yīng)用limt碼的同-----CPU中也會(huì)發(fā)生至少部分的重新密封操作。該驗(yàn)證服務(wù)器a)接收識(shí)別信息和至少-一部分30AppConfainer,b)使用識(shí)別信息查找或計(jì)算一個(gè)AppKey或CustAppKey來(lái)開(kāi)封容器,c)如果開(kāi)封的AppConfaiiier具有可接受的值,則在專(zhuān)用設(shè)備上的專(zhuān)用應(yīng)用程序被認(rèn)為是被驗(yàn)證的,以及d)存儲(chǔ)與AppContainer有關(guān)的密鑰(Appkey或CustAppKey)。為了驗(yàn)證、保密性、完整性、授權(quán)、核查,或者數(shù)字權(quán)利管理的目的,本5發(fā)明提供了一種用于在設(shè)lt創(chuàng)建和禾傭一個(gè)或多個(gè)虛擬標(biāo)記的方法。該方法包含----寸用于每一種虛擬標(biāo)記的應(yīng)用糊,、用于----寸特定類(lèi)型的每一個(gè)虛擬標(biāo)記的--個(gè)AppContamer、-----個(gè)用于計(jì)算要求C,toEngine組件的加密服務(wù)的-一個(gè)調(diào)用程序的AppCodeDigest的CiyptoGate組件。該CiyptoGate組件已知一個(gè)或多個(gè)使用期長(zhǎng)的對(duì)稱(chēng)密錫。MMCiyptoGateso訪問(wèn)該QyptoEngine,它已知---個(gè)或多個(gè)使用期長(zhǎng)的對(duì)稱(chēng)密鑰、以及一個(gè)或多個(gè){柳期長(zhǎng)的公鑰,并執(zhí)行AppContaraer的加密密封和開(kāi)封,其中在一個(gè)SMI中斷過(guò)程中執(zhí)行部分加密操作。CryptoGate組件通過(guò)核對(duì)一部分調(diào)用程序的代碼或靜態(tài)數(shù)據(jù)的數(shù)字簽名、使用已經(jīng)被載入到CtyptoEngme內(nèi)的一個(gè)公鑰和--一個(gè)AppCodeD堪est值來(lái)核對(duì)15調(diào)用程l序的完整性。該AppCodeD培est1括調(diào)用程]器內(nèi)的圖像的一部分的一個(gè)最近計(jì)算的加密散列。CiyptoGate和CiyptoEngine用-:f:a)從一個(gè)主密鑰和AppCodeDigest以及其它可選信息得到一個(gè)用于開(kāi)封應(yīng)用程序容器的密鑰,b)使用所得到的密鑰在AppContmner上核對(duì)消息驗(yàn)證f鵬,以及當(dāng)消息驗(yàn)iiEf鵬正確時(shí)返回一iit20誤,以及c)使用所獲得的密鑰來(lái)對(duì)AppContamer數(shù)據(jù)解密并將其返回給應(yīng)用程序。通過(guò)與設(shè)備有關(guān)的對(duì)稱(chēng)密鑰,本發(fā)明還提供了-一種用于將私有密鑰與應(yīng)用程序安全相關(guān)聯(lián)的方法,其中該應(yīng)用程序與--個(gè)含有創(chuàng)H:一個(gè)AH)Contaioer的設(shè)備有關(guān),該AppContamer包含私有密鑰。25結(jié)合附圖,參照下面的詳細(xì)描述,本發(fā)明的各種特征和優(yōu)點(diǎn)可能更容易理解,其中同樣的參考數(shù)字標(biāo)明同樣的結(jié)構(gòu)部件,以及其中圖!是說(shuō)明了根據(jù)本發(fā)明原理的一個(gè)典型計(jì)算機(jī)設(shè)備管理機(jī)構(gòu)系統(tǒng)的部件的一個(gè)簡(jiǎn)報(bào)30圖2說(shuō)明了一個(gè)客戶組件層;圖3說(shuō)明了OSD組件的相互作用;圖4是說(shuō)明了多因子客戶驗(yàn)證(MFCA)注冊(cè)的框圖;圖5是說(shuō)明了根據(jù)本發(fā)明原理的第一典型方法的Mi圖;圖6是說(shuō)明了根據(jù)本發(fā)明原理的第一典型方法的ffi亂5圖7是說(shuō)明了根據(jù)本發(fā)明原理的第二典型方法的流程亂圖8是說(shuō)明了根據(jù)本發(fā)明原理的第三典型方法的流程圖;圖9是說(shuō)明了根據(jù)本發(fā)明原理的第四典型方法的轎瑕圖。具體實(shí)施例方式為了更好地理解本發(fā)明,在本說(shuō)明書(shū)中使用的許多定義如下。io設(shè)備是一個(gè)包括在操作系統(tǒng)前執(zhí)行的一個(gè)BIOS層軟件環(huán)境、且當(dāng)操作系統(tǒng)運(yùn)行時(shí)可存取的計(jì)算設(shè)備,如桌上型電腦、膝上型電腦、,的或無(wú)線的計(jì)算機(jī)。設(shè)備管理機(jī)構(gòu)包含有助于啟用設(shè)備的保密特征的--寸或多個(gè)服務(wù)t卜算機(jī)。保密主密鑰(SMK)是一個(gè)對(duì)設(shè)備,而且在某些實(shí)施例中,是對(duì)--十或多個(gè)15設(shè)備管理機(jī)構(gòu)機(jī)來(lái)說(shuō)已知的加密變量。它可直接用作一個(gè)用于加密或完整性校驗(yàn)的一個(gè)加密密鑰或作為計(jì)算其它加密變量或密鋼的函數(shù)的輸入。一個(gè)AppCodeDigest或AppfcationCodeDigest、一個(gè)應(yīng)用程序是一段IS序和/或它的靜態(tài)數(shù)據(jù)在存儲(chǔ)器內(nèi)可執(zhí)行的的圖像的部分字節(jié)的一個(gè)單向加密轉(zhuǎn)換。該轉(zhuǎn)換可能由如SHA1、MD5、RiPEMD160、SHA-256、SHA-512或20CBC-MAC的函數(shù)完成。AppKey(AppfcationKey)是可直接用作-個(gè)用于加密或完整性校驗(yàn)的加密密鑰、或作為計(jì)算其它加密變量或密鑰的函數(shù)的輸入的加密變量。對(duì)設(shè)備和應(yīng)用程序?qū)?lái)說(shuō),它的值,定的且來(lái)源于主密鑰和AppCodeD,st。CustSeeret(CustomerSeeret)是由可能或不可能在設(shè)備上運(yùn)行的應(yīng)用系統(tǒng)的某25些部件選擇的一個(gè)加密變量。在將殊的企業(yè)中,它與驗(yàn)證服務(wù)器有關(guān),而且在該企業(yè)域中,它可能與--些用作應(yīng)用程序驗(yàn)證的設(shè)備有關(guān)。CustAppKey(CustometApplicationey)是一個(gè)來(lái)源于Appkey和CustSecret、并可直接用作一個(gè)用于加密或完整性校驗(yàn)的加密密鑰或作為計(jì)算其它加密變量或密鑰的函數(shù)的輸入的加密變量。3()Appcontamer或ApplicationAppeontaine〗是能《吏用CustSecret或Appkey-來(lái)力口密密封或開(kāi)封的一個(gè)數(shù)據(jù)結(jié)構(gòu),其中密封操作是為密封容器的應(yīng)用辦的識(shí)別提供保密性和完整性校驗(yàn)以及可選擇的驗(yàn)證。QyptoEngme(CiyptographicEngine加密驅(qū)動(dòng)程序)在-一個(gè)只有在開(kāi)電自檢和經(jīng)過(guò)QyptoGate才能得到的受保護(hù)的環(huán)境中執(zhí)行加密操作,會(huì)游儲(chǔ)和調(diào)用5高完整性的公鑰、存儲(chǔ)至少一個(gè)使用期長(zhǎng)的對(duì)稱(chēng)密銅(SMK)、從該使用期長(zhǎng)的對(duì)稱(chēng)密鑰得出對(duì)稱(chēng)密鑰、執(zhí)廳對(duì)稱(chēng)加密(包括完整性和保密單元)以及公鑰的加密、生成偽隨機(jī)數(shù)、可選地加密保密密鑰、并具有其它加密支持函數(shù)如密鑰生成和輸入及輸出密鑰。CryptoGate(CiyptograpMcGatekeeper)截取所有的在應(yīng)用級(jí)程序和K)QyptoEngiiie之間的訪問(wèn),并能為企圖訪問(wèn)加密服務(wù)或數(shù)據(jù)的程序檢查程好和/或它的靜態(tài)數(shù)據(jù)在存儲(chǔ)器內(nèi)可執(zhí)行的圖像的部分字節(jié)。AuthBu泡r(AuthorizationBuffer驗(yàn)證緩沖器)是一個(gè)允許一個(gè)專(zhuān)門(mén)的應(yīng)用程郝Vf亍由Ciyptogate和/或CryptoEngme提供的一套操作的數(shù)據(jù)結(jié)構(gòu),其中該數(shù)據(jù)結(jié)構(gòu)包括AppCodeD,st和IW包括在代碼摘要中的部分的應(yīng)用樹(shù),代is碼及靜態(tài)數(shù)據(jù)的部分說(shuō)明,而且它包括一個(gè)能由QyptoEiigme驗(yàn)證的數(shù)字簽名。MAC(MessageAuthenticationCock)是一個(gè)能用來(lái)核對(duì)消息或數(shù)據(jù)結(jié)構(gòu)的完整性的值,以要求用并不太公知的---一W瞎變量的方式在消息的部分字節(jié)上計(jì)算它。為此公知的算法包括CBC—MAC、DMAC以及HMAC(基于公知的散列函數(shù)如MD5和SHA!)。2()SMI(SystemManagementInterrupt系統(tǒng)管理中斷)是由大多數(shù)的CPU支持的一個(gè)中斷屬性,允許BIOS級(jí)軟件獲得一個(gè)對(duì)CPU和在S腿模式外不容易有效的一個(gè)永久的存儲(chǔ)地址空間的排他性訪問(wèn)。將首先描述本發(fā)明的高級(jí)設(shè)計(jì)。通常,計(jì)算機(jī)設(shè)備管理機(jī)構(gòu)系統(tǒng)10的結(jié)構(gòu)包括-一個(gè)或多個(gè)設(shè)備管理機(jī)構(gòu)、客戶加密驅(qū)動(dòng)程序(C,toEngme)、理想使用25BIOS、被鎖糊賜失性存儲(chǔ)器以及系統(tǒng)管理模式(S國(guó))、操作系統(tǒng)驅(qū)動(dòng)程序(OSD)、啟動(dòng)的客戶應(yīng)用程序(Apps)、驗(yàn)證服務(wù)器(PASS)以及啟動(dòng)的服務(wù)器應(yīng)用程序。在客戶設(shè)備和登記服務(wù)器之間提供在線登記過(guò)程。交易級(jí)應(yīng)用程序接口(API)為客戶服務(wù)器應(yīng)用程序提供擴(kuò)展的設(shè)備管理機(jī)構(gòu)函數(shù)。該系統(tǒng)為在線30的客戶/月艮務(wù)器應(yīng)用程序和離線的獨(dú)立函數(shù)提供安全函數(shù)。驗(yàn)證服務(wù)器是任何加密啟動(dòng)的服務(wù)器應(yīng)用程序的組件。它的主要的目的是執(zhí)行與安全設(shè)備啟動(dòng)的應(yīng)用程序有關(guān)的加密函數(shù)。為執(zhí)行上述函數(shù),驗(yàn)證服務(wù)器密封和開(kāi)封與-一個(gè)加密啟動(dòng)的客戶進(jìn)行交換的容器,在需要時(shí)利用---十或多個(gè)設(shè)備管理機(jī)構(gòu)服務(wù)器的幫助。驗(yàn)證服務(wù)繊持關(guān)鍵ID值表。5設(shè)備管理杉l構(gòu)服務(wù)器主要處理設(shè)備識(shí)別和密鑰的登記。在某些實(shí)施例中,設(shè)備的保密主密鑰是設(shè)備和一個(gè)或多個(gè)設(shè)備管理機(jī)構(gòu)之間的共享的秘密。在這種情況下,設(shè)備管理機(jī)構(gòu)必須所有的需要訪問(wèn)表示驗(yàn)證)3ft務(wù)器和其它應(yīng)用月艮務(wù)器的安全的i密鑰的加密操作。本發(fā)明提供対~AppContamers的支持。設(shè)備管理機(jī)構(gòu)將AppKeyPart發(fā)送給u>驗(yàn)證服務(wù)器。服務(wù)器執(zhí)行一個(gè)允許創(chuàng)建AppContaiiiere的算法。該算法要求訪問(wèn)保密主密鑰(SMK)和AppCodeD砂4ACD),并在存儲(chǔ)保密主密鑰的計(jì)算機(jī)上調(diào)用它。設(shè)備管理機(jī)構(gòu)規(guī)定如何在客戶PC上調(diào)用應(yīng)用以及如何用操作系統(tǒng)驅(qū)動(dòng)程序登記。只要通過(guò)設(shè)備管理機(jī)構(gòu)服務(wù)器創(chuàng)建了第-一AppQmteuiier,這就可以從任何服務(wù)器在線完成。15公用辦為應(yīng)用程J轉(zhuǎn)U建AppCodeD堪6Ste,當(dāng)希望運(yùn)行該應(yīng)用程序時(shí),這些公用程序可以在相同的操作系統(tǒng)上運(yùn)行。用于應(yīng)用程序的AppCodeMgeste被存儲(chǔ)在相對(duì)于應(yīng)用程序的一個(gè)新表中的一個(gè)數(shù)據(jù)庫(kù)中。AppCodeDigeste可存取用于生成AppCortaiers。為服務(wù)器生成公開(kāi)/私有密鑰對(duì)。使用密鑰生成軟件理解的標(biāo)準(zhǔn)itll入和輸出密鑰對(duì)。使用有標(biāo)記的密鑰對(duì)對(duì)數(shù)據(jù)進(jìn)行標(biāo)記。20另夕卜,在本發(fā)明中使用了幾個(gè)客戶加密驅(qū)動(dòng)程序(CiyptoEngme)的實(shí)施例,它利用在標(biāo)準(zhǔn)的個(gè)人電腦上可獲得的不同硬勝性。圖1是根據(jù)本發(fā)明的原理,說(shuō)明了一個(gè)典型的計(jì)M股備管理機(jī)構(gòu)系統(tǒng)的組件的簡(jiǎn)單框圖。本發(fā)明的首選實(shí)施例包括一個(gè)由復(fù)位B射丁開(kāi)的鎖存器保護(hù)裝置(OAR—lock)14保護(hù)的非易失性存儲(chǔ)器.(NVM)11、一個(gè)BIOSROM系25統(tǒng)初始化模塊12、一個(gè)經(jīng)過(guò)系統(tǒng)管理中斷(SM1)從系統(tǒng)的正常操作模式訪問(wèn)的系統(tǒng)管理模式(SMM)16。鄉(xiāng)護(hù)的非易失性存儲(chǔ)器11用來(lái)存儲(chǔ)保密主密鑰。BIOS系統(tǒng)初始化模塊12負(fù)責(zé)安全地將保密主密鑰從非易失性存儲(chǔ)器11傳送到SMRAM'!3中,它是一個(gè)受保護(hù)的存儲(chǔ)器區(qū)域,只能從系統(tǒng)管理模塊12可尋址。當(dāng)保密主密鑰傳30送到SMRAM13以后,系統(tǒng)初始化模塊12關(guān)閉鎖存器14使非易失性存儲(chǔ)器11.直至U下次系統(tǒng)復(fù)位時(shí)才能被運(yùn)行在系統(tǒng)中的程序15訪問(wèn)。保密主密鑰只有在系統(tǒng)的正常操作iili中,在隱蔽的SMRAM16中才有效。OAR—lock保護(hù)裝置14防止iIM除了啟動(dòng)時(shí)運(yùn)行的ROM系統(tǒng)初始化模塊12夕卜的任何程序14來(lái)讀取非易失'隨儲(chǔ)器n。當(dāng)讀取非易失性存儲(chǔ)器11后,5系統(tǒng)初始化模塊關(guān)閉鎖存器14以使非易失性存儲(chǔ)器11直到下次系統(tǒng)復(fù)位時(shí)才B獄問(wèn),在該時(shí)間段,系統(tǒng)初始4W塊12重新獲得控制權(quán)。當(dāng)OAR鎖定的非易失性存儲(chǔ)器II不再有效時(shí),使用它的-一個(gè)選擇是在BIOSROM根模塊中存儲(chǔ)一個(gè)共享的保密主密鑰,其中的BIOSROM根模塊通常是在BIOS系統(tǒng)初始化模塊12中的系統(tǒng)啟動(dòng)時(shí)的開(kāi)電自檢操作后、通過(guò)系i統(tǒng)映射成不可尋址的16K字節(jié)區(qū)域。在用不同的可靠級(jí)啟動(dòng)系統(tǒng)后,還存在通常不能由應(yīng)用程序訪問(wèn)的其它存儲(chǔ)單元。SMI模式是具有附加的唯一的屬性的tedx86兼容處理器的專(zhuān)用模式。軟件調(diào)試辦不可能單步S鵬SM模式,除了在SMI模式中時(shí),也不可能瀏覽SMI存儲(chǔ)器。該模細(xì)于在計(jì)算機(jī)的正常操作過(guò)程中在客戶PC上隱藏保密主n密鑰,并為各種對(duì)計(jì)算杉席效識(shí)別所需的安全目的使用該保密主密鑰,對(duì)于系統(tǒng)10的操作來(lái)說(shuō),i:iM述的特鵬征(BIOSROM代碼、OAR鎖定的非易失性存儲(chǔ)器11、以及系統(tǒng)管理模塊16)并不是絕對(duì)需要的,但它們一起為該系統(tǒng)提供了保密操作的最高級(jí)的可翁性。在可選的純軟件的實(shí)施例中,用更低級(jí)的可靠性》提供了相同的函作。20在這種情況下,操作的限定模式是標(biāo)準(zhǔn)的"加gzero"操作系統(tǒng)保護(hù)程序,其中在被稱(chēng)為操作系統(tǒng)驅(qū)動(dòng)樹(shù)竽的系統(tǒng)設(shè)備驅(qū)動(dòng)程序內(nèi)執(zhí)行CiyptoEngme函數(shù)。因?yàn)椴僮飨到y(tǒng)驅(qū)動(dòng)程序不是在SMI模式中運(yùn)行,因此它就不會(huì)同增強(qiáng)的BIOS產(chǎn)品---樣安全。因lttrfr門(mén)的額外修改和模糊技術(shù)被包含在產(chǎn)品的純軟件形式中用來(lái)防止保密主密鑰被發(fā)現(xiàn)或拷貝。另外,因?yàn)楸C苤髅荑€存儲(chǔ)在文件系統(tǒng)中25而不是主板上,因此將附加的設(shè)備檢測(cè)加入到操作系統(tǒng)驅(qū)動(dòng)程序中來(lái)將保密主密鑰賦值給個(gè)人電腦。另外,在純軟件的系統(tǒng)沒(méi)有運(yùn)行在SMI模式的實(shí)施例中,代,括對(duì)反向工程師和"破解"來(lái)說(shuō)用于使其更為困難的特定特征。在CiyptoEngme的各種軟件形式中,使用了各種技術(shù)為保密主密鑰和楊1>30力瞎操作提供更強(qiáng)大的可能保護(hù)。本發(fā)明提供保密主密鑰和設(shè)備綁定。在保密主密鑰和計(jì)算機(jī)之間有關(guān)聯(lián),以至使保密主密鑰不能從一臺(tái)計(jì)算機(jī)傳送給另一臺(tái)。這種關(guān)眹基于計(jì)算機(jī)的規(guī)格,并在不丟失使用該保密主密鑰的能力的前提下,允許用戶慢漫地更新它們的計(jì)算機(jī)。當(dāng)該主密鑰被賦值給系統(tǒng)中的專(zhuān)門(mén)的磁盤(pán)驅(qū)動(dòng)器時(shí),重新格式化硬5盤(pán)驅(qū)動(dòng)器或用另外的系統(tǒng)Hm將禁止該保密主密鑰的使用。本發(fā)明提供那有限的保密主密鑰和會(huì)話密鑰暴露。當(dāng)把它們用在任何操作時(shí),這種設(shè)計(jì)限制了保密主密f辯噲?jiān)捗荑€的暴露。本發(fā)明提供了破解抵抗方法。由于軟件CryptoEngiiie可能具有在SMI存儲(chǔ)器中隱藏保密主密鑰的能力和不能象BIOS---樣在S認(rèn)中瀏覽代碼操作,軟件ioQ>ptoEngme代碼〈糊附加的方法來(lái)防止破解。另夕卜,軟件QyptoEngme使用用于存儲(chǔ)保密主密鑰的&#*防止通用的程序確定該保密主密鑰。現(xiàn)在將討論設(shè)備管理機(jī)構(gòu)的概述。設(shè)備管理機(jī)構(gòu)組件執(zhí)行下面的功能。設(shè)備管理機(jī)構(gòu)待別為應(yīng)用程序和設(shè)備對(duì)提供---+AppKey來(lái)登記---個(gè)設(shè)備并存儲(chǔ)它的SMKm登記應(yīng)用程序。這里將簡(jiǎn)單地解釋設(shè)備管理機(jī)構(gòu)和附屬模塊!5并在后面做詳細(xì)他說(shuō)明。客戶應(yīng)用程序是一個(gè)加密啟動(dòng)的應(yīng)用程序,通常運(yùn)行在基于微軟視窗的個(gè)人電腦(PC)上??蛻魬?yīng)用程序允許用戶澳賦該設(shè)備是否已登記、登記該設(shè)備和顯示KeyID、在設(shè)備上注冊(cè)應(yīng)用程序、生成包括Creat、Edrt、Delete的ApopContamers—、將AppContamers發(fā)布到驗(yàn)證服務(wù)器、從驗(yàn)證服務(wù)器獲得20AppContamers以及不登記該設(shè)備。驗(yàn)證服務(wù)器是--個(gè)客戶/服務(wù)器加密啟動(dòng)的應(yīng)用程序的服務(wù)器部分的-個(gè)組件。它負(fù)責(zé)驗(yàn)證從客戶端傳送的信息。驗(yàn)證服務(wù)器是從客戶設(shè)備接收登記請(qǐng)求、從應(yīng)用程序登記模塊請(qǐng)求AppKey并存儲(chǔ)該AppKey、創(chuàng)建AppContaiier并發(fā)送到客戶設(shè)備端、提供用戶接口(HI)以fflM—個(gè)UT生成AppContamers25(Creat、Edk、Seal和Unseal)、從客戶設(shè)釗妾收AppContamers的軟件組件。設(shè)備管理機(jī)構(gòu)由幾個(gè)組件組成并至少具有下面的功能。---個(gè)登記模塊接收請(qǐng)求去登記--個(gè)設(shè)備。它拒絕客戶保密主密鑰的一半,并生成返回給客戶設(shè)備的另外一半保密主密鑰。應(yīng)用程序注冊(cè)模塊為AppKeys接收請(qǐng)求、構(gòu)造該AppKeys并將它返回給調(diào)用程獰。30現(xiàn)在討論一個(gè)典型的用戶經(jīng)歷。當(dāng)測(cè)試一個(gè)包括設(shè)備管理機(jī)構(gòu)的系統(tǒng)時(shí),用戶期望Mf操作指令?;镜母拍钍怯脩舻怯浺粋€(gè)客戶設(shè)備(運(yùn)用設(shè)備管理機(jī)構(gòu)的登記模塊)、注冊(cè)一個(gè)應(yīng)用程序然后在那個(gè)設(shè)備上創(chuàng)建、編輯、密封和開(kāi)封Appcoiitamers(運(yùn)用設(shè)備管理機(jī)構(gòu)的應(yīng)用程序注冊(cè)模塊)。用戶還能將Appcont細(xì)ers發(fā)送給其中能用由應(yīng)用程序注冊(cè)模塊生成的AppKey對(duì)它進(jìn)行操5作的驗(yàn)證服務(wù)器。驗(yàn)證服務(wù)器功能由設(shè)備管理秒胸激活。一個(gè)典型的力絮是客戶PC<—>應(yīng)用|注冊(cè)和AppContainer傳送〈一>經(jīng)過(guò)服務(wù)器客戶PC<_—>登記<—一>設(shè)備管理機(jī)構(gòu)服務(wù)器—H面是用戶運(yùn)用該系統(tǒng)所執(zhí)行的操作。io在客戶端所做的設(shè)備登記如下所述。為登記該設(shè)備,用戶使用客戶應(yīng)用程/m行下面的操作。用戶對(duì)登記進(jìn)行測(cè)試。通a^t登記選項(xiàng)的觀賦就能保證該設(shè)備以前沒(méi)有被登記過(guò)。如果該設(shè)備已經(jīng)登記過(guò)且用戶希望重新登記,則選定應(yīng)用程序中的未15用戶選擇--一個(gè)登記設(shè)備選項(xiàng)。該選項(xiàng)與登記服務(wù)器聯(lián)系并為該設(shè)備生成一個(gè)保密主密鑰。該保密主密鑰將返回給客戶PC并存儲(chǔ)(它,儲(chǔ)在明WL依賴(lài)于所使用的加密系統(tǒng)的版本)。出現(xiàn)的對(duì)話框表明該設(shè)備已經(jīng)登記。用戶在設(shè)備管理機(jī)構(gòu)日志中校驗(yàn)--個(gè)新的保密主密鑰已經(jīng)創(chuàng)建。用戶能使用在設(shè)備管理機(jī)構(gòu)上的登記用戶接口檢驗(yàn)以表明已經(jīng)創(chuàng)建了-一個(gè)新的保密主密20鑰。在客戶端的應(yīng)用程序注冊(cè)如下所述。為謝f下面的操作,用戶必須具有一個(gè)已登記的客戶設(shè)備。用戶開(kāi)始注冊(cè)。用戶選擇注冊(cè)項(xiàng)來(lái)開(kāi)始注冊(cè)。此時(shí)提示用戶為應(yīng)用程序和設(shè)備組合輸入標(biāo)識(shí)符(ADID)。25通過(guò)驗(yàn)證服務(wù)器將注冊(cè)請(qǐng)求發(fā)送給應(yīng)用程序注冊(cè)模塊。應(yīng)用程序注冊(cè)模塊生成一個(gè)AppKey,然后將它返回給驗(yàn)證服務(wù)器。用戶可能核對(duì)應(yīng)用程序注冊(cè)模塊日志。用戶使用應(yīng)用程序注冊(cè)模塊用戶接口核對(duì)已為該應(yīng)用樹(shù)竽生成了AppKey。用戶可能為注冊(cè)核對(duì)驗(yàn)證月艮務(wù)器日志。用戶為運(yùn)行在設(shè)備.-1的應(yīng)用程序的30實(shí)例核對(duì)該驗(yàn)證服務(wù)器現(xiàn)在有一個(gè)AppKey。用戶可能在客戶設(shè)備上檢驗(yàn)現(xiàn)在具有--個(gè)AppContamier。通過(guò)在客戶設(shè)備上的AppContainer菜單,用戶看到-一個(gè)他已經(jīng)具有一個(gè)AppContainer的直觀確認(rèn)。在客戶設(shè)備上的AppContamer操作如下所述。下面將討論在客戶設(shè)備上運(yùn)5用AppCont謹(jǐn)erer能作什么。在注冊(cè)以后,用戶將在一個(gè)設(shè)備具有由驗(yàn)證服務(wù)器創(chuàng)建的一個(gè)AppContoMer。在客戶端上提供的選項(xiàng)允許用戶將AppContaitier發(fā)送給月艮務(wù)器以及下面將描述從驗(yàn)證服務(wù)器請(qǐng)求一個(gè)AppCoHtamff,邀每在以下迸行描述。這些選項(xiàng)的目的是提供一種用于說(shuō)明在客戶和驗(yàn)證服務(wù)器之間的一個(gè)典型交易的方法。用10實(shí)例解釋是最好的方法。用戶想為在他的客戶PC—tl的虛擬現(xiàn)金抽屜增加錢(qián)。當(dāng)前的結(jié)算存儲(chǔ)在AppContamer中。用戶在li^抽屜應(yīng)用程序中選擇一i^曾加現(xiàn)金的選項(xiàng)以及與AppContaiiier—起發(fā)送給運(yùn).行在驗(yàn)證服務(wù)器(由一個(gè)現(xiàn)金抽屜提供者運(yùn)行)的AddCash腳本。打開(kāi)AppConfainer,改變數(shù)據(jù)并將它返回給用戶,在同一交易15中這些操作都是可能的。在本系統(tǒng)的一個(gè)實(shí)施例中,設(shè)備管理機(jī)構(gòu)用戶能看到在客戶和驗(yàn)證服務(wù)器之間將發(fā)生什么,并在他自己的設(shè)備iJI作AppCo幽mer、并以他自己的速度增加M和校驗(yàn)日志等。因此代發(fā)--刊每AppContamer發(fā)送給服務(wù)器、改變預(yù)定義的數(shù)據(jù)并將其返回給客戶的基本交易,而是提供了一個(gè)讓這個(gè)工作由用戶20從客戶設(shè)備崩動(dòng)的功能。用戶能在客戶端選擇一個(gè)選項(xiàng)來(lái)將AppCont繊er發(fā)送給服務(wù)器。然后用戶能轉(zhuǎn)至朋艮務(wù)器,f效寸它是否在那兒,在它中改變一些數(shù)據(jù)并重新密封它。然后用戶回到客戶PC并返回該AppContamer。在本發(fā)明的首選實(shí)施例中,用戶彈出而不是讓服務(wù)器將容回。在客戶應(yīng)用程序上有一個(gè)AppContamer菜單允許用戶列出A靜Contamer、25編輯一個(gè)AppCoetamer、將-一個(gè)AppCont纖er發(fā)送給驗(yàn)證服務(wù)器、從驗(yàn)證服務(wù)器接收一個(gè)AppContainer、創(chuàng)建一個(gè)AppContamer以及刪除一個(gè)AppContamer。列出AppCoiitainer。所有的AppContamer由應(yīng)用程J,存儲(chǔ)在客戶設(shè)備上的--4^夫省目錄中。選擇列出AppContamer選項(xiàng)允許顯示所有的容器(可能具有某些用于識(shí)別創(chuàng)建它們的應(yīng)用程序的數(shù)據(jù))。用戶能突出顯示列表中的一個(gè)30AppContamer,然后選擇下面兩個(gè)選項(xiàng)中的-一+:編輯AppCoiit細(xì)er。應(yīng)用程序警告用戶AppContamer當(dāng)前是密封的,并提示ft!iiW嘗試和開(kāi)封它。如果開(kāi)封成功則在文本框中顯示AppContamer的內(nèi)容并會(huì)g進(jìn)行編輯。如渠用戶P夂變了任一AppContamer,則關(guān)閉AppCont認(rèn)ier,將給他--一個(gè)密封AppContamer的選擇。5將AppContamer發(fā)送給驗(yàn)證服務(wù)器。用戶將AppContamer發(fā)送給驗(yàn)證服務(wù)器。這允許用戶轉(zhuǎn)到驗(yàn)iiE服務(wù)器并嘗試操作該AppCont細(xì)er。從驗(yàn)證服務(wù)器獲取AppCoitamer。用戶能從驗(yàn)證服務(wù)器請(qǐng)求一4it定的文件。創(chuàng)建AppContamer。用戶應(yīng)該能創(chuàng)建他自己的AppContmner。當(dāng)用戶選擇io該選項(xiàng)時(shí),可得至,上面所述的編輯AppContamer選項(xiàng)相似的能力。刪除AppContamer。這并不是一個(gè)加瞎功能但對(duì)幫助整理系統(tǒng)是有效的?,F(xiàn)在將討論在驗(yàn)證月艮務(wù)器上所做的AppContamer操作。驗(yàn)證服務(wù)供允許用戶完成各種任務(wù)的兩個(gè)用戶接口(AppKeys日志和AppContamer)。該AppKeys日志用來(lái)向用戶表明當(dāng)請(qǐng)求-4AppKeys時(shí)實(shí)際上發(fā)生的事。is它不允許用戶對(duì)該信息做任何的操作。它可能是-一個(gè)日志瀏覽器,用來(lái)表示用-一個(gè)標(biāo)識(shí)符從客戶設(shè)備接收了—-個(gè)AppKeys請(qǐng)求和存儲(chǔ)了該AppKeys。它可會(huì)表示如日期/時(shí)間、請(qǐng)求客戶設(shè)備的1〖)她址、KID、所得到的AppKeys等等的信息。AppContamer用戶接口提供了與那些客戶設(shè)備應(yīng)用程序相似的選項(xiàng)。用戶2()能列出AppContamer、創(chuàng)建一個(gè)AppContamer以及刪除一個(gè)AppContamer。歹咄AppContamer表示列出所有和它們所屬的應(yīng)用程序的標(biāo)識(shí)符一起存儲(chǔ)在驗(yàn)證服務(wù)器上的AppContamer。選擇一個(gè)AppContamer,引出能提供編輯AppContamer的內(nèi)容的另一頁(yè)。使用創(chuàng)建AppContamer,用戶為客戶設(shè)備(設(shè)備當(dāng)時(shí)請(qǐng)求)創(chuàng)建25AppContamer。該刪除AppContamer功能并不是加密功能但有助于幫助整理該系統(tǒng)。登記和應(yīng)用程序注冊(cè)模塊具有-一個(gè)提供了有關(guān)所請(qǐng)求的主密鑰、AppKeys等的信息的用戶接口/日志瀏覽器?,F(xiàn)在將討論加密服務(wù)器的設(shè)計(jì)。該服務(wù)器具有分解功能以方便各種組件的30保護(hù)。主要的想法是密鑰從不轉(zhuǎn)至U任何網(wǎng)絡(luò)。該組件包括密鑰、加密庫(kù)以及一個(gè)登記代碼。密鑰(保密主密鑰、服務(wù)器私有密鑰)最好存儲(chǔ)在結(jié)合了各種加密功能組合和密鑰數(shù)據(jù)庫(kù)的保密盒中。加密庫(kù)為驗(yàn)證月艮務(wù)器提供了用來(lái)在各種容器中執(zhí)行最初的操作(enc、dee...)的必要的程序。登記函數(shù)生成在系統(tǒng)中最敏感數(shù)據(jù)當(dāng)中的保密主密鑰、秘密。5登記代碼保護(hù)該保密主密鑰并將它們安全地送到IB己客戶設(shè)備。加鄉(xiāng)緣器的邏輯配置如下所述。在防火墻和載入均衡器之后是HTTP服務(wù)ffL運(yùn)行EnrollmentprotocolHanciler(十容f樓)的服務(wù)器。在另一個(gè)邏輯防火墻后用來(lái)防止密鑰服務(wù)器接收未驗(yàn)證的信息是io具有運(yùn)行EnroUmentgetSi流(+容器類(lèi))的密鑰數(shù)據(jù)庫(kù)的密鑰服務(wù)器和RSA-Bsrfe加密數(shù)據(jù)庫(kù)加密服務(wù)導(dǎo)總密地存儲(chǔ)王種用于代碼標(biāo)記、通信和根密鑰的私有密鑰。根密鑰用于標(biāo)記新的低級(jí)密鑰。這些密鑰存儲(chǔ)在一個(gè)加密文件中并在啟動(dòng)時(shí)由加密模塊載入。15在與每一位客戶登記時(shí)生成的保密主密鑰存儲(chǔ)在數(shù)據(jù)庫(kù)中。設(shè)備管理機(jī)構(gòu)生成保密主密鑰。該代碼從登記的一個(gè)小服務(wù)程序/協(xié)議處理部分接收一個(gè)public(mkc(elientSeed))。設(shè)備管理機(jī)構(gòu)所要求的基本的功能是處理登記請(qǐng)求。Eiiro"mentprotocolHandler函數(shù)從網(wǎng)絡(luò)獲得容器并將它們傳送到加密服務(wù)器,20以便e鵬ltoentgeiiSmk欄能頓任何其它部分都不暴露任何密鑰信息盼,況下完成它的工作。下面將詳細(xì)討論部件。登記。登記的處理流程如下(i)由一個(gè)客戶調(diào)用一個(gè)登記小服務(wù)程序。25(2)登記小服務(wù)程序3iMRM1在保密服務(wù)器上實(shí)例化Enrol〗ment類(lèi)。將l叩utSteam作為-一個(gè)自錢(qián)傳送給保密服務(wù)器上的一個(gè)Enrollment對(duì)象。(3)然后,EnroU認(rèn)nt對(duì)象在保密服務(wù)器上進(jìn)行用接收到的InputStream構(gòu)造---力個(gè)PubKConfamer類(lèi)作為一個(gè)構(gòu)造函數(shù)變量。30從PubK容器得到一個(gè)MK容器的實(shí)例。從歐容器提取SMK客戶籽數(shù)。產(chǎn)生一一個(gè)隨機(jī)的SMK月艮務(wù)器籽數(shù)(如SMK的服務(wù)器部分)。將SMClientSeed與SMKServerSeed連接起來(lái)生成主密鑰。該連接是按SMC〗ientSeed+SMSe證Seed的順序連接。5在MK容器對(duì)象中設(shè)置適當(dāng)?shù)牟僮鞔a和數(shù)據(jù)(SMKServerSide)。iM在上述步驟中形成的主密鑰上執(zhí)行SHM來(lái)生成一個(gè)KeyID。將主密鑰和Key1D轉(zhuǎn)換成BigMegers,荊每它們存儲(chǔ)在數(shù)據(jù)庫(kù)中。密封所獲得的MKContoiner對(duì)象。得到以從保密月艮務(wù)器發(fā)送到Web服務(wù)器(即到調(diào)用登記小服務(wù)程序)的字io節(jié)數(shù)組格式的原始數(shù)據(jù)。登記小服務(wù)程序?qū)⒃甲止?jié)轉(zhuǎn)換成:faputSfream,并將它作為Http應(yīng)答發(fā)送給客戶。一戰(zhàn)的流程是一個(gè)簡(jiǎn)單的實(shí)施例。在首選的實(shí)施例中,一個(gè)應(yīng)答小服務(wù)程序等待一個(gè)客戶應(yīng)答(已經(jīng)成功地接收了SMKServer籽數(shù))然后為永久的保密15主密鑰更新數(shù)據(jù)庫(kù)表。鵬將詳細(xì)地討論模塊紐牛??蛻魬?yīng)用,是一個(gè)通常運(yùn)行在基于微軟視窗的PC上的應(yīng)用程序。為使該應(yīng)用程序使用加密功能,將它連接到由操作系統(tǒng)驅(qū)動(dòng)程序調(diào)用的內(nèi)核模式(KernelMode)設(shè)備驅(qū)動(dòng)fi/,上。20該應(yīng)用程序提供以下的功能初始化、Enrollmeiit檢驗(yàn)、登記該設(shè)備、在設(shè)備上注冊(cè)應(yīng)用程序、列出AppCoDtamers、編輯AppCont細(xì)ers、保存AppContamers、將AppConteimers發(fā)布給驗(yàn)證服務(wù)器、從驗(yàn)證服務(wù)器獲取AppConteuners、創(chuàng)建一個(gè)新的A靜Conteiners以及不登記該設(shè)備。至子初始化,當(dāng)調(diào)用應(yīng)用程序時(shí),它自動(dòng)按如下:進(jìn)行載入操作系統(tǒng)驅(qū)動(dòng)25程序并調(diào)用OsdRegisteAppMeation以將應(yīng)用程序設(shè)置為一1嗜冊(cè)的應(yīng)用程序。在登記檢驗(yàn)中,調(diào)用OsdG改Capa.b他ies核對(duì)返回的C邵ab他ies參數(shù)以便觀察該設(shè)備是否已經(jīng)注冊(cè),并顯示一個(gè)對(duì)話來(lái)表明該設(shè)備是否注冊(cè)。為登記該設(shè)備調(diào)用OsdEnroilGenerateReqest來(lái)獲得一個(gè)密封的PubKQ窗證、將HTTP請(qǐng)求發(fā)送到設(shè)備管理機(jī)構(gòu)EnroU.mentURL、請(qǐng)求體中30傳送在PubKContamer、核對(duì)該應(yīng)答代碼以確保操作成功。如果成功,則將返回的內(nèi)容傳送作為調(diào)用OsdEnrollProeessResponse中的MKContainer參數(shù),并顯緊--,對(duì)話柩以表明登記是否成功。為在設(shè)備上注冊(cè)--個(gè)應(yīng)用程序,調(diào)用OsdGetCapabiMti.es并核對(duì)返回的該CapaM.fes參數(shù)以便觀察設(shè)備是否已經(jīng)登記。如.果沒(méi)有,貝,上面所定義的方5法登記該設(shè)備。提示用戶一個(gè)用于識(shí)別應(yīng)用程序/設(shè)備結(jié)合(ADID)的字符串。創(chuàng)建一個(gè)將被用于注冊(cè)的PubKCort腿er。將HTTP請(qǐng)求發(fā)送給設(shè)備管理機(jī)構(gòu)RegisterApi)URL,并在請(qǐng)求體中發(fā)送.PubKContamer和ADID。核對(duì)應(yīng)答鄉(xiāng)馬以確保操作成功。如果成功,則產(chǎn)生的數(shù)據(jù)應(yīng)為AppCootaiiiei"。在缺省的目錄中存儲(chǔ)AppContainer。10用戶能用高亮顯示一個(gè)AppOiitamei:的方式顯示存儲(chǔ)在缺省目錄中的AppContamer的歹懷??蛻魬?yīng)用程序提供以下能力(通過(guò)菜單選項(xiàng)、按鈕等),輯高亮顯示的AppContamer、刪除高亮顯示的AppContainer、將高亮顯示的AppContainer發(fā)送到驗(yàn)證服務(wù)器以及創(chuàng)建一個(gè)新的AppContainer。15為編輯一個(gè)AppContainer,首先通過(guò)調(diào)用一個(gè)OsdAppContainerUnseal函數(shù)、傳送AppContainer文件pContmiierBuffer參數(shù)來(lái)開(kāi)封-AppContainer,以及如果OsdAppContamerUnseai不成功,則顯示一個(gè)錯(cuò)誤對(duì)話框。分析AppContainer結(jié)構(gòu)以獲得數(shù)據(jù)字段。在一個(gè)允許用戶修改數(shù)據(jù)的編輯框中顯示AppContamer的內(nèi)容。提供保存或放棄這些對(duì)AppContamer的修改的能力。2()為保存AppContainer,密封AppC復(fù)itainer、重構(gòu)AppContamer數(shù)據(jù)結(jié)構(gòu)、調(diào)用OsdAppContamerSeal函數(shù)、發(fā)送pConteuierBuffer參數(shù)中開(kāi)封的OsdAppContamerSeal結(jié)構(gòu)的內(nèi)容,以及如果OsdAppContamerSeal不成功,則顯示一^tl昔il^話框。將密封的AppContoiiier結(jié)構(gòu)保存到文件中。為將AppContamer發(fā)布到驗(yàn)證服務(wù)器,將HTTP請(qǐng)求發(fā)送到URL使25HeresAnAppContaiiierForYa函數(shù)在請(qǐng)求體中傳遞高亮顯示的AppContainer文件的內(nèi)容,并核對(duì)HTTP請(qǐng)求的狀態(tài),以及顯示一個(gè)對(duì)話框表示成功或失敗。為從驗(yàn)證服務(wù)器獲得一個(gè)AH)contamers,提供一個(gè)對(duì)話框來(lái)允許用戶在服務(wù)器上選擇打算下載的文件。將HTTP請(qǐng)求發(fā)送給URL使OiGiveMeAnAppCortaier函數(shù)在i青求體中傳-送所請(qǐng)求的Appcontamers的內(nèi)容。30核對(duì)HTTP請(qǐng)求的狀態(tài)并顯示成功或失敗的對(duì)話。如果打算覆蓋--個(gè)文件則提示用戶覆蓋原文。為創(chuàng)建一個(gè)新的Appeoiitaiiiers,打開(kāi)一個(gè)已存在的Appcontamers文件、幵封該Appcxmtamers、以廁每數(shù)據(jù)塊置0、并允許用戶編輯該數(shù)據(jù),然后跟隨SaveAppContauier函數(shù)(將該文件保存為一個(gè)由該用戶指定的新的文件名)。5為不登記該設(shè)備,調(diào)用OsdRegi.sterAppiication以將應(yīng)用程序設(shè)置為一個(gè)注冊(cè)的應(yīng)用禾ii,。調(diào)用OsdGetC邵abiftes-來(lái)核對(duì)所返回的CapabilitiesWord以便觀察設(shè)備是否已經(jīng)登記。如果設(shè)備已經(jīng)登記了,則調(diào)用OsdlnvaHateSMK。由驗(yàn)證(PASS)3路器提供的功能如下所述。驗(yàn)證服務(wù)器能注冊(cè)設(shè)備/應(yīng)用程序組合??蛻粼O(shè)備用請(qǐng)求體中的PubKContamer和A)1D向O亂egisterMeio函數(shù)的U:RL發(fā)送一個(gè)請(qǐng)求。驗(yàn)證服務(wù)器給ARM月艮務(wù)器發(fā)送和轉(zhuǎn)換該請(qǐng)求。A畫(huà)服務(wù)器產(chǎn)生和返回相對(duì)于ADID、應(yīng)由驗(yàn)證服務(wù)器存儲(chǔ)的---個(gè)AWKey。然后驗(yàn)證月艮務(wù)器使用最新生成的Appkey創(chuàng)建--個(gè)AppCo血iner并將它發(fā)送回客戶設(shè)備。注冊(cè)就算完成了。上面所述的操作均是在客戶、驗(yàn)證服務(wù)器和應(yīng)用程序注冊(cè)模塊之間的単+交易中完成的。15驗(yàn)證服務(wù)器提供一個(gè)用戶接口以便通過(guò)用戶接口來(lái)操作AppContamers(Creat、Edit、Sea!和Unseal)。驗(yàn)證月艮務(wù)fl^供一個(gè)允許用戶操作AppContamers的用戶接口。這可以通過(guò)〗頓HTML和具有用Java寫(xiě)的代碼的JavaServelte來(lái)完成,以便允許密封和開(kāi)封AppContamers等等。正如有關(guān)運(yùn)行在客戶端的應(yīng)用程序的部分中所定義的那樣,需要頁(yè)來(lái)列出(List)和編輯(Edit)2()AppConta認(rèn)rs。驗(yàn)證服務(wù)ll能從客戶設(shè)備接收AppContamers。客戶設(shè)備具有一個(gè)允許將AppContamers發(fā)皿驗(yàn)證月艮務(wù)器的功能。存在于驗(yàn)證服務(wù)器上的入口點(diǎn)允許這種情況的發(fā)生。這可通,用一-個(gè)從輸入流讀取并將數(shù)據(jù)連同文件名存儲(chǔ)在文件中的小服務(wù)器程序、或甚至更簡(jiǎn)單i鵬過(guò)激活驗(yàn)證服務(wù)器上的HTTP的PUT25方法來(lái)完成。現(xiàn)在將討論容器和密鑰。容器是用于保存信息的結(jié)構(gòu)。能標(biāo)記和/或加密該信息。為增加保密性,可使用各種類(lèi)型的容器。有些僅可用做標(biāo)記數(shù)據(jù)。有些容器保存加密的數(shù)據(jù)。甚至在加密的容器中,它們是依賴(lài)于所使用的加密算法的子類(lèi)型。有四種類(lèi)型的容器。30SignedContamer保存由私有密鑰(來(lái)源于標(biāo)記的密鑰對(duì))數(shù)字標(biāo)記、并可用匹配的公開(kāi)密鑰(在客戶端公開(kāi)密鑰存儲(chǔ)在ROM/閃存中)驗(yàn)證的數(shù)據(jù)。這些用刺每驗(yàn)證后的數(shù)據(jù)從設(shè)備管理機(jī)構(gòu)服務(wù)器發(fā)送到客戶機(jī),并用來(lái)授權(quán)軟件模塊使用設(shè)備管理機(jī)構(gòu)客戶服務(wù)。AppContamer是一個(gè)只能由運(yùn)行在一+特定計(jì)算機(jī)上的專(zhuān)用應(yīng)用程序讀或5寫(xiě)的受保護(hù)的容器。這些容器識(shí)別密封它們的程序,并可能條其它的程序開(kāi)封一個(gè)容器,因此它ff]能用作進(jìn)程間通信的保密格式。象檢觀瞞毒改刻,的高級(jí)安全功能、軟件許可和安錢(qián)包能建立在AppCont細(xì)er的頂部。通常逝!l使用保密主密鑰的派生物用于加密來(lái)將AppContamer賦給-一個(gè)給定討黧機(jī)。PubKContainer是由客戶(OSD)用一個(gè)RSA公開(kāi)密鑰(來(lái)自通.信密鑰對(duì))w密封和只有通過(guò)具有匹配的公開(kāi)密鑰的接收器(通常是設(shè)備管理機(jī)構(gòu)服務(wù)器)讀的-外數(shù)字信封。這些在登記逝呈使用,并用于在客戶和驗(yàn)證的設(shè)備管理機(jī)構(gòu)服務(wù)器之間建立---個(gè)加密的通道。在這個(gè)容器內(nèi)的數(shù)據(jù)是用通過(guò)操作系統(tǒng)驅(qū)動(dòng)程序隨機(jī)生成的128位加密密鑰(也稱(chēng)為產(chǎn)品內(nèi)的一個(gè)主密鑰)加密的。RC6密鑰(主密鑰)和客戶的KeyID(KID)是用接收器的公開(kāi)密鑰(服務(wù)器15ilifPubKey)加密的。藤于對(duì)這個(gè)容器的寫(xiě)和讀程序來(lái)說(shuō)已知的主密鑰(由客戶創(chuàng)建和以-一個(gè)PubKContamer發(fā)送)MKContameK用作一個(gè)數(shù)據(jù)信封的--一部分。在經(jīng)山PubKContamer將主密鑰發(fā)送給服務(wù)器后,這可用于在客戶和設(shè)備管理機(jī)構(gòu)月艮務(wù)器之間的安全通信。也可用于保護(hù)客戶計(jì)翻L.t的局部繊。20鵬容器結(jié)構(gòu)具有一組能在它們上執(zhí)行的預(yù)定義操作。這些操作邀密封或幵封的。密封能不加密地標(biāo)記(正如證書(shū)具有大學(xué)的圖章,但任何人都能閱讀證書(shū)的內(nèi)容)。密封也能加密(正如含有一個(gè)獎(jiǎng)品的優(yōu)勝者的信封是密封的,因此如果不開(kāi)封的話,沒(méi)有人待瞎到內(nèi)容)。25開(kāi)封是密封的逆過(guò)程。這能證實(shí)圖章是原始的(正如證書(shū)上的圖章,它們具有某些幾乎不可能復(fù)制的能被檢驗(yàn)的特征)。開(kāi)封也能暴露隱藏的內(nèi)容(就獎(jiǎng)品來(lái)說(shuō),獲得隱藏的內(nèi)容是相當(dāng)容易的)。每一個(gè)容器結(jié)構(gòu)如下所述。在密封操作描述之后,容器結(jié)構(gòu)顯示在它的開(kāi)封版本中。因此密封的結(jié)構(gòu)是ffi3f開(kāi)封操作的描述來(lái)顯示的。如果因?yàn)槿魏卧?0因一個(gè)操作失敗。貝鵬-容器置0。下面逐條列舉由本發(fā)明提供的功能。-"j、組的容f樓型支持a)通信安全,b)系統(tǒng)完整性,以及c)應(yīng)用程序?qū)iT(mén)保護(hù)的容器。由本發(fā)明提供的功能允許人們?cè)诳蛻艉驮O(shè)備管理機(jī)構(gòu)服務(wù)器之間創(chuàng)建一-個(gè)保密主密鑰以便允許數(shù)據(jù)容器itit令的創(chuàng)建只能在特定的設(shè)備上有意義,基于程序而不是用戶的標(biāo)識(shí)控制的5的訪問(wèn),驗(yàn)證繊于一個(gè)經(jīng)授權(quán)的設(shè)備管理機(jī)構(gòu)服務(wù)器的信息、驗(yàn)證來(lái)源于特定設(shè)備的信息,支持用于需要保存搗毀證據(jù)保密的應(yīng)用程序的受保護(hù)的處理環(huán)境,以及支持只能由特定程序覆蓋的數(shù)據(jù)存儲(chǔ)區(qū)域?,F(xiàn)在將討論本發(fā)明的設(shè)計(jì)的概述。受保護(hù)的容器由低級(jí)BIOS代碼和OS層驅(qū)動(dòng)程序(()SD)代碼(如,Win98下的VXD)實(shí)現(xiàn)。有些BIOS代碼在POSTio過(guò)程中運(yùn)行以在系統(tǒng)管理存儲(chǔ)器(SMM)中建立經(jīng)由系統(tǒng)管理中斷(SMI)調(diào)用的程序糊的信息。SMI程序鵬來(lái)自閃存的公幵密鑰執(zhí)行RSA操作,因此很難篡改。SMIf靜也隱藏和管理對(duì)設(shè)備和設(shè)備管理機(jī)構(gòu)服務(wù)器來(lái)說(shuō)公知的一個(gè)保密RC6密鑰的保密主密鑰。加密原語(yǔ)從這個(gè)單一的128位主密鑰中導(dǎo)出多個(gè)密鑰,其中每個(gè)密鑰用于單個(gè)目的。SMI程序驗(yàn)證它們的調(diào)用樹(shù),,而15且僅拋亍用于-一個(gè)經(jīng)授權(quán)的操作系統(tǒng)驅(qū)動(dòng)模塊的月路。所有的客戶都了解服務(wù)器的公開(kāi)密鋼,因此它們能檢驗(yàn)服務(wù)器標(biāo)記了一條信息》這是因?yàn)榉?wù)器是唯一知道匹配的私有密鑰的一個(gè)。保密主密鑰對(duì)每一個(gè)設(shè)備來(lái)說(shuō)是唯---的,而且僅有那臺(tái)設(shè)備和服務(wù)器知道。如果消息由保密主密鑰ii當(dāng)?shù)乇Wo(hù),則該消息一定來(lái)源于具有唯一i密主密鑰的服務(wù)器或客戶???0戶使用一個(gè)作為保密主密鑰的SHA1摘要的20字節(jié)密鑰標(biāo)識(shí)符(KeyIdentifier)來(lái)識(shí)別它們。在下面這個(gè)意義上來(lái)說(shuō),SHA1函數(shù)是單向的,即在已知KeyID、而不是試每一十可能的主密鑰去觀察是否能生成有效的KeyID,對(duì)攻擊者尋找保密主密鑰來(lái)說(shuō)毫無(wú)幫助。有非常多的保密主密鑰值(2到12^冪)接近實(shí)際。在保密主密鑰的幫助下,AppCont訓(xùn)eB是安全的。每一個(gè)容器用一個(gè)密鑰25謝f加密,其中該密鑰是保密主密鑰和屬于該容器的程序的代碼摘要的一個(gè)函數(shù)。該設(shè)計(jì)保證了SMI級(jí)代碼僅為用于創(chuàng)建該容器的辦開(kāi)封--個(gè)容器。創(chuàng)建用在特定計(jì)算機(jī)上的特殊程序的第容器必須包括設(shè)備管理機(jī)構(gòu)服務(wù)器。中級(jí)操作系統(tǒng)驅(qū)動(dòng)禾Mif'代碼支持容器抽象,并執(zhí)行X寸SMI程序來(lái)說(shuō)不可能的操作。例如,SMI辦不能接收缺頁(yè),因此操作系統(tǒng)驅(qū)動(dòng)程序必須在調(diào)用SMI30程序前將參數(shù)拷貝到鎖定的存儲(chǔ)器中。操作系統(tǒng)驅(qū)動(dòng)程序也能比SMI程序運(yùn)行更長(zhǎng)的時(shí)間。操作系統(tǒng)驅(qū)動(dòng)程序支持可能的由作為WDL—部分的序列發(fā)生器下載的容器函數(shù)。安裝和初始化WDL的過(guò)程包括建立受保護(hù)的容器j^胄求的主密鑰。用于支持本文中安全特性的協(xié)議嚴(yán)重依賴(lài)于本文中所述的四種類(lèi)型的容5器。例如,創(chuàng)建主密鑰的登記協(xié)議是基于將這些容器與設(shè)備管理機(jī)糊艮務(wù)器交換。系統(tǒng)使用加密密鑰以便在客戶系統(tǒng)它本身以及客戶和設(shè)備管理機(jī)構(gòu)服務(wù)之間提供程序和數(shù)據(jù)的私有性、完整性和驗(yàn)證。下面將討論存在的密鑰和如何使用它們?nèi)チP湃魏虇H全。io在本發(fā)明中使用了公開(kāi)/私有密鑰對(duì)。公幵/私有密鑰對(duì)被用于安全地處理不需要與特殊的客戶系統(tǒng)關(guān)聯(lián)的數(shù)據(jù)。這些主要用來(lái)保證從任何客戶端傳送到設(shè)備管理機(jī)構(gòu)服務(wù)器、以及與此相反傳送的數(shù)據(jù)是可信的,而且將有助于數(shù)據(jù)是私有的(加密的)。在制造過(guò)程中,這些密鑰存儲(chǔ)在ROM中。設(shè)備管理機(jī)構(gòu)服務(wù)器保存用于不同目的和存儲(chǔ)在服務(wù)器環(huán)境中不同位置的15三個(gè)RSA密鑰對(duì)的私有密鑰。客戶機(jī)系統(tǒng)保存這些密鑰對(duì)的公開(kāi)密鑰并存儲(chǔ)在ROM中。使用這些密鑰對(duì)的每一個(gè)標(biāo)準(zhǔn)的加密1024位版本。這三個(gè)密鑰對(duì)是根密鑰對(duì)(RootKey-Pair)。私有密鑰存儲(chǔ)在由未連接到Internet的設(shè)備管理機(jī)構(gòu)控制的一個(gè)計(jì)算機(jī)中。匹配的公開(kāi)密鑰存儲(chǔ)在客戶計(jì)算機(jī)的ROM中。20私有根密鑰用來(lái)標(biāo)記新的公開(kāi)密鑰,然后將它們發(fā)送給客戶計(jì)算機(jī)來(lái)替換舊的公開(kāi)密鑰。這些根密鑰很少使用。公開(kāi)密鑰與帶標(biāo)記的容器一起用在客戶機(jī)系統(tǒng)中。服務(wù)器通f言密鑰對(duì)。這也被稱(chēng)為封裝密鑰對(duì),并被用作動(dòng)態(tài)數(shù)據(jù)標(biāo)記。私有密鑰存儲(chǔ)在設(shè)備管理機(jī)構(gòu)服務(wù)器上并用來(lái)與客戶建立安全通信。私有密鑰能25用來(lái)開(kāi)封由客戶發(fā)送的密鑰(以及其它任何的數(shù)據(jù)),或動(dòng)態(tài)地標(biāo)記所創(chuàng)建的將由客戶檢驗(yàn)的消息。它與PubKContamers—起使用。所有的客戶具有一4if儲(chǔ)在他ff]的BIOSROM中的匹配的公開(kāi)密鑰的拷貝。帶標(biāo)記的密鑰對(duì)。存儲(chǔ)在設(shè)備管理機(jī)構(gòu)標(biāo)記的計(jì)算機(jī)上的私有密鑰不能直接由Internet訪問(wèn)。私有密鑰用來(lái)標(biāo)記下載的文件(程序和配置數(shù)據(jù)),然后將30它放置在設(shè)備管理機(jī)構(gòu)服務(wù)器上并最終將它發(fā)送給客戶計(jì)算機(jī)。所有的客戶計(jì)算機(jī),具有匹配的公開(kāi)密鑰,因此它ff]能鄉(xiāng)油私有密鑰創(chuàng)建的簽名。標(biāo)記密鑰對(duì)大量地用來(lái)驗(yàn)證靜態(tài)信息,如新發(fā)行的軟件組件。由于私有密鑰不能從Internet訪問(wèn),因此它就更容易保護(hù)。公有密鑰用在帶有標(biāo)記的容器的客戶系統(tǒng)中。對(duì)上面所有的操作,有可能5只使用一個(gè)密鑰對(duì)。然而,為不同冃的使用不同的密鑰對(duì)很廉價(jià)且容易降低成功地摧毀旨系統(tǒng)的攻擊的可能性。保密密鑰。由于相同的密鑰可用在加密和解密中,因此下面的密鑰是對(duì)稱(chēng)密鑰。主密鑰被用作創(chuàng)建在加密/解密中使用的對(duì)稱(chēng)密鑰的基礎(chǔ)。在客戶和服務(wù)io器之間單ttOi信的過(guò)程中,通?!额D這些密鑰。它們等同于對(duì)話密鑰。保密主密鑰用來(lái)安全地處理數(shù)據(jù),它需要與特定的客戶系統(tǒng)相關(guān)聯(lián)。該保密主密鑰是唯一的且用來(lái)驗(yàn)證該客戶系統(tǒng)。因?yàn)樗ㄒ坏刈R(shí)別該客戶系統(tǒng),因此加密主密鑰是很重要的。它被用作創(chuàng)建用在加密/解密算法中使用的其它對(duì)稱(chēng)密鑰的辭出。在登記aii中創(chuàng),凍主密鑰并通過(guò)設(shè)備管理機(jī)構(gòu)服務(wù)器發(fā)送15給客戶。主密鑰只能由設(shè)備管理機(jī)構(gòu)服務(wù)器以及在客戶系統(tǒng)上的加密的ROM組件中訪問(wèn)。ROM組件運(yùn)行在系統(tǒng)管理模式中(SMM),它是用于x86處理器的--個(gè)特定的模式,且不能由軟件反匯編程序跟蹤。保密主密鑰用在客戶系統(tǒng)h來(lái)密封和開(kāi)封AppContamers。保密主密鑰賦給20—臺(tái)計(jì)算機(jī)且--定不能變換(除非是如果先將它傳送給設(shè)備管理機(jī)構(gòu)服務(wù)器然后傳送給另一個(gè)客戶)。在正規(guī)的系統(tǒng)存儲(chǔ)器中,不可能暴露保密主密鑰。因此它不應(yīng)該能被黑客截獲和傳送給另一iS+算機(jī)的操作系統(tǒng)驅(qū)動(dòng)程序級(jí)。密封禾[l開(kāi)封AppContainer的操作應(yīng)該嚴(yán)格地在SMM中執(zhí)行。用來(lái)密封和開(kāi)封的所有其'at作可能由操作系統(tǒng)驅(qū)動(dòng)程,層執(zhí)行。25密鑰標(biāo)識(shí)符(KID)是保密主密鑰的單向的SHA1摘要。該KeyID用來(lái)識(shí)另贓從客戶發(fā)給服務(wù)器的信息中的客戶。M于客戶的信息頭部包括Key〖:),服務(wù)劉f使用它在保密主密鑰數(shù)據(jù)庫(kù)表中尋找與客戶的主密鑰對(duì)稱(chēng)的密鑰,然后依次用來(lái)導(dǎo)出解密其它的信息的密鑰。當(dāng)?shù)怯涍^(guò)程沒(méi)有指定保密主密鑰時(shí),保密主密鑰用一十臨時(shí)的隨機(jī)的值代替直到用真的保密主密鑰代替它為止。30—定數(shù)量的導(dǎo)出的密鑰基于保密主密鑰和其它主密鑰產(chǎn)生。用于導(dǎo)出密鋼H)152()2530的原語(yǔ)表明基于下面將描述的密鑰用法值的那些導(dǎo)出的密鑰是如何產(chǎn)生的。KeyUsageValue(密鑰用經(jīng)3直)。這一段歹ij舉了作為本設(shè)計(jì)的一部分的密鑰用法值。這i^直與NewKey()函數(shù)和Enc()Dec()函數(shù)一起使用。這l^t在各種容器的密封和開(kāi)封過(guò)程中使用。對(duì)客戶糊艮務(wù)器來(lái)說(shuō),用法是不同的(.這使得再現(xiàn)和自再現(xiàn)攻擊變得復(fù)雜)。注釋用來(lái)為—一個(gè)AppContamer的AppCodeDigest字段創(chuàng)建加密密鑰用來(lái)為由服務(wù)器創(chuàng)建的一個(gè)Apf)Contamer創(chuàng)建加密密鑰用來(lái)為由客戶創(chuàng)建的一個(gè)AppContamer創(chuàng)建加密密鑰用來(lái)為由月艮務(wù)器創(chuàng)建的---個(gè)Ap.pCoiitainer創(chuàng)建HMAC密鑰用來(lái)為由客戶創(chuàng)建的-個(gè)AppContamer創(chuàng)建HMAC密鑰。用來(lái)為由服務(wù)器創(chuàng)建的--個(gè)MKContemer創(chuàng)建加密密鑰用來(lái)為由客戶創(chuàng)建的一個(gè)MKContamer創(chuàng)建加密密鑰用來(lái)為由服務(wù)器創(chuàng)建的--個(gè)MKContamer創(chuàng)建HMAC密f月用來(lái)為由客戶創(chuàng)建的一個(gè)MKContainer創(chuàng)建HMAC密鑰用在AppCont腿er中的密鑰被分成三部分。AppContainer的^^重要的特征是用來(lái)創(chuàng)建它們的AppKey()是保密主密鑰(即客戶設(shè)備的唯一標(biāo)識(shí)符)和應(yīng)用程序代碼摘要(,"擁有"容器的軟件的唯一標(biāo)識(shí)符)的--個(gè)函數(shù)。AppContamer被賦于一外特定設(shè)備上的專(zhuān)用程序。密鑰的最后一部分對(duì)設(shè)備管理機(jī)構(gòu)(不象保密主密鑰那樣)和普通的公眾(不象應(yīng)用程序代碼摘要)來(lái)說(shuō)并不可知。該最后部分被稱(chēng)為CustomerSecret。該密鑰的任何值能用來(lái)密封用法名稱(chēng)UsageAppCodeDigestUsageAppEncServerUsageAppEncQientUsageAppMaeSewerUsageAppMacQientUsageMKEncServerUsageMKEncClientUsageMKMacServerUsageMKMacCHentAppConfamers。但建議使用強(qiáng)大的128位隨機(jī)值(如保密主密鑰一樣強(qiáng)大)。CiistomerSecret.部分允許企業(yè)放棄折衷的應(yīng)用程序容器而不必獲得一個(gè)新的構(gòu)造用子產(chǎn)生^--個(gè)不同的應(yīng)用程序代碼摘要的應(yīng)用程序。同時(shí),該CiistomerSecret允許在設(shè)備上的-一個(gè)給定應(yīng)用程序?qū)嵗?即安全登錄應(yīng)用程序)5與不只一個(gè)柳艮務(wù)器安全地共享數(shù)據(jù)。每一個(gè),艮務(wù)器將與相同設(shè)備上的相同應(yīng)用程序建立一個(gè)唯一的CustonierSecret。因此,如果提供正確的CustonierSecret,就只窗,f-密密封的AppContamer。CustomerSecrct用于在特定的客戶應(yīng)用程序和與客戶應(yīng)用程序連接的多個(gè)月瞎器中的--個(gè)之間進(jìn)行共享。ioM向賣(mài)主提供用于向設(shè)備管理機(jī)構(gòu)登記的一個(gè)AppKey值的列表,設(shè)備管理機(jī)構(gòu)服務(wù)器可能委托管理機(jī)構(gòu)為軟件的特定賣(mài)主創(chuàng)建AppContainers。AppKey是保密主密鑰和應(yīng)用程序代碼摘要的一個(gè)加密的攀向函數(shù),因此不需要賣(mài)主為其它的應(yīng)用程序創(chuàng)建額娜賣(mài)主不能輕易地了解某一給定設(shè)備的主密鑰盼,況下而為賣(mài)主提供as密鑰。15現(xiàn)在將討論ContainerOpcodes(操作碼)以及Formats(格式)。所有的容器具有一個(gè)公用的4字節(jié)頭部,它包括一個(gè)操作碼字節(jié)(命令或消息,)、一個(gè)格式字節(jié)、以及-一個(gè)具有下面所述內(nèi)容的長(zhǎng)度(length)字(16位)。格式字節(jié)表明所提供的容器的四種類(lèi)型,因tti氐級(jí)程序知道應(yīng)該執(zhí)行何種類(lèi)型的加密操作。如果在將來(lái)的版本中加密算法改變,貝鵬式字節(jié)也將改變。操作碼字20節(jié)表示容器內(nèi)的高級(jí)數(shù)據(jù)的類(lèi)型。低級(jí)程序使用某些操作碼值(例如,用于在登記協(xié)議中使用的容器),但是大多數(shù)對(duì)由高級(jí)代碼和未1本使用都有效。Length字段識(shí)別屬于容器的字節(jié)數(shù)目(頭部后)。不加密頭部,但它由作為每一個(gè)容器一部分的加密校驗(yàn)和進(jìn)行保護(hù)。該章節(jié)列舉了定義的容器操作碼和具有該操作碼的容器的格式。在當(dāng)前的25版本中,每一個(gè)操作碼包含一4it定的容器格式,雖然將來(lái)可能會(huì)改變。同時(shí)具有opcode字段和format字段的目的是簡(jiǎn)化操作碼分級(jí)和允許將來(lái)在加密算法組中的改變,或者用于在為一,作所請(qǐng)求的數(shù)據(jù)內(nèi)容中改變。Format字節(jié)具有下述值中的----個(gè)。Format代碼值說(shuō)明30FnitSignedConte畫(huà)er1容器是一個(gè)Signed(帶標(biāo)記的)Container-個(gè)AppGontaincr#11是一個(gè)PubKContainer容器是一個(gè)MKContainerFmtAppContainer2FmtPubKContainer3FmtMKContainer4下面是OP代碼的值5QP代碼名稱(chēng)值OPC—OSD—AUTHORIZATION0x01OPC—OSD—ALLOW—TRANSFER0x02OPC一MK一KEY(MBOPC—INITIAL—APP—CONTAINER—FROM—SERVER0x04i()OPC—CUSTOM—APP—CONT扁EH一DATA0x05OPC—CHALLENGE—RESPONGSE—FROM—CLIENT0x06OPC—SMK—ENROLL—REQUEST—OU皿0x07OPC—NEW—CONNECTION0x08OPC—SMK—ENROLL—REQUEST—INNER0x091.5OPC—SMK—ENROLL—RESPONSE(M)aOPC—CLIENT—TO—SERVER—WRITE0x0bOPC—SERVER—TO—CLIENT—WRITE0x0eOPC—CHALLENGE—REQUEST—FRDM—SERVER0x0e現(xiàn)在將討論SignedContainers的操作碼。SignedCoiitamers保存由私有密鑰20(來(lái)自于帶標(biāo)記的密鑰對(duì))數(shù)字標(biāo)記,并能用匹配的公開(kāi)密鑰(在客戶端公開(kāi)密鑰存儲(chǔ)在ROM中)驗(yàn)證的數(shù)據(jù)。這些被用刺每驗(yàn)證從設(shè)備管理機(jī)構(gòu)服務(wù)器發(fā)送給客戶計(jì)算杉L權(quán)軟件模塊使用客戶服務(wù)。Opcode(操作碼)OpcOsdAuthonzationContainer(容器)FmtSignedContamer25該容器用權(quán)一個(gè)程序使用操作系統(tǒng)驅(qū)動(dòng)程序安全模塊的一些和全部函數(shù)。在容器的數(shù)據(jù)部分具有以—F的字段長(zhǎng)度說(shuō)明4字節(jié)調(diào)用代碼的起始偏移量4字節(jié)調(diào)用代碼的結(jié)束偏移量3()LMeii議est20字節(jié)調(diào)用代碼的CodeDigest字段Nstartf)ffsetNendOffsetCodeDigestPrwalegeBit\fetor8字節(jié)PnvOegeBrt字段。該矢量表示該應(yīng)用稱(chēng),可以調(diào)用什么函數(shù)Opcode:OpcOsdAl〗owT腦sferContainer:FmtSignedContai證該容器用來(lái)授權(quán)一個(gè)程序刺,一個(gè)AppCoiifcmier傳遞給該計(jì)算抓上的另一5個(gè)應(yīng)用程序。在該容器的數(shù)據(jù)部分具有以下的字段。字段長(zhǎng)度說(shuō)明CaJlersA卯Code.Digest20字節(jié)調(diào)用程序的ACDRecipientsApf)CodeDigest20字節(jié)接收程i/,的ACDOpcode:沒(méi)有OpeOsdAllowTransfer沒(méi)有FnitSignedContainer10這不是一個(gè)##而是許多由服務(wù)器的PrivateSigningKey加密的字節(jié)。它們并不被保存在任何一種-鄉(xiāng)的容器中。當(dāng)使用BIOSRegisteiOSD()函數(shù)向BIOS注冊(cè)它本身時(shí),這些字節(jié)由操作系統(tǒng)驅(qū)動(dòng)程;f使用。字段長(zhǎng)度說(shuō)明NstartOffset4字節(jié)調(diào)用代碼的起始偏移量15NendO他et4字節(jié)調(diào)用代碼的結(jié)束偏移量CodeD堪est20字節(jié)操作系統(tǒng)驅(qū)動(dòng)禾呈序:的CodeDigest現(xiàn)在將討論用于AppContamers的Opeodes。AppConteuners是只能由專(zhuān)門(mén)的應(yīng)用程序讀或/寫(xiě)的魏護(hù)的容器。這些容器識(shí)別密封它們的程序,并可能允許另一4il序開(kāi)封-一個(gè)容器,因此它們也能用作內(nèi)部illi通信的保密形式。20如檢測(cè)病毒改變、軟件許可以及安全錢(qián)包等的高級(jí)安全功能能建立在AppContamers的頂部。通常,通過(guò)使用用于加密的主密鑰的派生密鑰將AppConteiners賦給-一個(gè)指定的計(jì)^f幾。操作碼OpeMKKeyFmtAppCont譜ier該容器保存能用在MKContamer操作中的密鑰。在創(chuàng)建PubKConta.mer過(guò)25程中,通常由OsdPubKcontainerSeal()返回該容器。MKContamer操作要求該容器。操作石馬OpcInitialAppContainFromServer容器FmtAppContainer該容器是空的,而且被用作一個(gè)模塊用于使應(yīng)用程序來(lái)創(chuàng)建其它AppContainers。其中唯---^有意義的字段是加密的AppCodeDigest。在這種情況30下,密封乾M戈碼摘要字段為空。用來(lái)密封該AppContamers的Custome:rSecret的所有位均為零。操作碼OpGCustoiiiAppContaiiierData容器FmtAppContamer該容器保存從客戶到服務(wù)器的緊急應(yīng)答。它保存服務(wù)器緊急的隨機(jī)數(shù)字(Rs)。該容器用來(lái)卩向應(yīng)具有OpcChaliengeRequestFromServer的MKContamer。5字段長(zhǎng)度說(shuō)明Rs16字節(jié)由服務(wù)器提供的128位隨機(jī)值。或者當(dāng)用作登記時(shí)的確認(rèn)時(shí),為KIDllMK現(xiàn)在將討論用于PiibKCoDfcaner的操作碼。PubKContainer是由客戶(OSD)用一個(gè)RSA公共密鑰(來(lái)自于通信密鑰w對(duì))謝f密封的數(shù)字信封,而且只能由接收器(通常是設(shè)備管理機(jī)構(gòu)服務(wù)器)用匹配的公開(kāi)密鑰讀取。這些在登記過(guò)程中使用,并用來(lái)在客戶和驗(yàn)證的設(shè)備管理機(jī)構(gòu)服務(wù)器之間建立一個(gè)加密通道。內(nèi)的數(shù)據(jù)是用通常由操作系統(tǒng)驅(qū)動(dòng)樹(shù),生成的128位RC6密碼密鑰(也稱(chēng)為產(chǎn)品內(nèi)的主密鑰)加密的。RC6密鑰(主密鑰)以及客戶的密鑰ID(KJD)是用接收器的公開(kāi)密鑰(服務(wù)器的15通信PubKey)加密的。操作碼OpeSMKEnrolRequestOuter容器FmtPubKContoiner該容登記,中使用。操作碼OpcWDLNewCo纖ectioii容器FmtPubKGoiitamff該容器由客戶應(yīng)用程序使用以建立一個(gè)新的加密通道。該容器的第--部分20可能被再使用以避兔RSA操作。在內(nèi)部的MKContainer的數(shù)據(jù)部分中具有以下字段。字段長(zhǎng)度說(shuō)明MK16字節(jié)128位新的隨機(jī)連接生密鑰現(xiàn)在將討論用于MKCo幽mers的操作碼。MKContamer被用作基于這:個(gè)容25器的讀和寫(xiě)程序都知曉的主密鑰(由客戶創(chuàng)建以MEPubKCoiitemer內(nèi)發(fā)送)的數(shù)據(jù)信封的--部分。當(dāng)主密鑰M:PiibKContamer發(fā)徵B緣器以滔,這些能被用于在客戶和設(shè)備管理機(jī)構(gòu)服務(wù)器之間的保密通信。它們也能用來(lái)在保護(hù)客戶機(jī)上的本地?cái)?shù)據(jù)。操作碼OpcSMKE鵬UReq腦也麗容器Fm薩Contamer30該容器用在登記過(guò)程中。在容器的數(shù)據(jù)部分具有以下的字段。字段長(zhǎng)度說(shuō)明SMKCfentSeecl20字節(jié)用來(lái)產(chǎn)生主密鑰的耔數(shù)操-作1馬OpcSMKEnroUResponse容il:FmtMKContainer該im用在登記過(guò)程中。在容器的數(shù)據(jù)部分具有以下的字段。5字段長(zhǎng)度說(shuō)明SMKServerSeed26字節(jié)從服務(wù)器返回的籽數(shù),用來(lái)產(chǎn)生主密錫操作碼OpcClieitToSe麗Wnte容器Fm體〈Container該im由一些客戶應(yīng)用程序使用以將數(shù)據(jù)發(fā)送給服務(wù)器(也就是由客戶所寫(xiě)的)。10字段長(zhǎng)度說(shuō)明。鵬S聊edContainer來(lái)證實(shí)下載的是真實(shí)的、證實(shí)翻g的確來(lái)自設(shè)備管理機(jī)構(gòu)月艮務(wù)器以及為向操作系統(tǒng)驅(qū)動(dòng)程序登記的應(yīng)用程序保存驗(yàn)證信息。表4顯示了SigiiedContainer結(jié)構(gòu)。2()現(xiàn)在討論密封SignedConfa.mer。加密是用ServerSigningPrivateKey完成的。密封SignedContamef所要求的步驟如下。這些步Wt地在緩沖器」::操作,并因此覆蓋開(kāi)封的plaintext繊。在公開(kāi)的實(shí)施例中,設(shè)備管理秒胸服MIW豫些歩驟來(lái)密封SignedContainer。確認(rèn)選定的私有密鑰是公知的。如果不是,則返回錯(cuò)誤。25確認(rèn)長(zhǎng)度是可接受的。在密封前,長(zhǎng)度艦Pi她cKeyDigest和Data。確認(rèn)Format:等于FmtSignedContamer。將PublicKeyDigest設(shè)置為匹ff腿定的私有密鑰的公開(kāi)密鑰的SHA1摘要。使Payload=OpcodeIiFormat11Length11PubHcK.eyDigest11IV11Sea!ersCodeDigestI;Data。注30意&i包括開(kāi)封俯fea:。使ExpectedD;gest:SHA:l(Payload)。設(shè)置SigRSABioek=i08&ro字節(jié)11ExpectedDigest在SgRSABlock上執(zhí)行PKCStf1版本2簽名填充。這與PKCS#1版本1簽名填充一樣。該填充在Digest值的前面增加了一個(gè)固定順序的字節(jié)以表明5ExpectedDigest值是SHAl操作的結(jié)果。它也用OxFF字節(jié)替換了大多數(shù)的Wl充字節(jié)。用選定的私有密鑰加密SigRSABtock。設(shè)置Length=Length+128以便容納SigRSABlock的大小。在月緣器已經(jīng)密封了SignedContamei"結(jié)構(gòu)后,它具有如表5所示的格式。H)現(xiàn)在討論開(kāi)封SignedContainer。開(kāi)封.SignedContamer容器所要求的歩驟如下。用戶執(zhí),m些步驟來(lái)驗(yàn)證在這種,的容器上的簽名。確認(rèn)選定的公開(kāi)密鑰對(duì)SMI程序來(lái)說(shuō)是公知的。如果不是,返回錯(cuò)誤。確認(rèn)該Length是可接受的。在開(kāi)封前,長(zhǎng)度包括PubfcKeyDigest、Data和SgRSABlock。確認(rèn)Format等于FmtSignedeontmner。調(diào)用BIOS以用選定的公15開(kāi)密鑰解密SigRSABlock。確認(rèn)PKCS#1填充對(duì)使用SHAl摘要函數(shù)的簽名來(lái)說(shuō)是正確的。使ExpectedDigest二解密的S培RSABlock的最后20個(gè)字節(jié)。設(shè)置Length=Length—128來(lái)除去Si沐SABiock的大小。使Payload=Opcode11Format」ILength11PublicKeyDigestIiData。這包括開(kāi)封的長(zhǎng)度。使D堪est-SHAl(Payload)。確認(rèn)Digest等于ExpectedD聰est。20至于BIOS開(kāi)封,BIOS并不在容器它本身上工作。僅調(diào)用它來(lái)解密SigRSABlock。現(xiàn)在討論P(yáng)AKContmner的格式和用來(lái)創(chuàng)建它的算法。首先描述開(kāi)封格式,然后描述密封和開(kāi)封它的步驟。這些容器最初用來(lái)在客戶和設(shè)備管理機(jī)構(gòu)服務(wù)器之間建立安全通信通道。PubKContmner的第二部分是包括4字節(jié)頭部的完25整的MKContamer對(duì)象。PubKContainer的第一部分包括生成的主密鑰(MK)和客戶KeyID(如果沒(méi)有分配主密鑰則為0)的值,而且SM個(gè)值都用接收程序的公開(kāi)密鑰加密。認(rèn)真選擇PubKContamei:的格式以允許在不改變第一部分的情況下改變?cè)撊萜鞯牡诙糠?。這允許客戶和服務(wù)器去實(shí)現(xiàn)某些有意義的性能改進(jìn)。(:)SD密30封函翻每返回包封在AppContamer中的生成的主密鑰。在每次開(kāi)始一個(gè)與服務(wù)器的新的連接(例如,存取一個(gè)新的下載)時(shí),客戶能存儲(chǔ)和再使用該MK和PubKContamer的第一部分,而且第二部分將成為一個(gè)包含了一個(gè)新的用于加密對(duì)話的主密鑰的MKContainer。這避兔了需要執(zhí)行一個(gè)具有S謹(jǐn)程序的公開(kāi)密鑰操作并獲得了解只有真實(shí)的服務(wù)器才能知道該新的對(duì)話,的保密利益,5因?yàn)橹挥姓鎸?shí)的服務(wù)器才知道所保存的主密鑰(需要解密該新的對(duì)話密鑰)或知道私有密鑰以讀取第---部分。對(duì)服務(wù)器來(lái)說(shuō)重要的最佳化是存儲(chǔ)從PubKQ)m纖er的第一部分中抽取的主密鑰并由第一部分的散列索引存儲(chǔ)值。當(dāng)再次使用PubKContamer的第--部分時(shí),這種剤諾避免了需要執(zhí)行私有密鑰操作。因?yàn)榭蛻艨偸前l(fā)送整個(gè)的第一部分,因此服務(wù)器能隨時(shí)刷新存儲(chǔ)入口,i()然后服務(wù)器總是使用它的私有密鑰(服務(wù)器通信私有密鑰CommunicationPrivateKey)來(lái)抽取主密鑰。這也意味著對(duì)在客戶和服務(wù)器之間初始化信息來(lái)說(shuō)只有一種格式,而不是兩種獨(dú)立的格式來(lái)處理再利用或創(chuàng)建主密鑰。在登記過(guò)程中使用PubKContamer在客戶和服務(wù)器之間建立通信以便允許船t保密主密鑰,以及在某些客戶應(yīng)用,和設(shè)備管理機(jī)構(gòu)服務(wù)器之間建立通15信。開(kāi)封的PubKCoiitainer具有如表10所示的格式。密封容器中所涉及的步驟將2W6個(gè)字節(jié)信息增加到結(jié)尾(Mac和Padding),因此調(diào)用程序必須保證緩沖器足夠大以保存比較大的密封格式,否則密封操作將返回-一個(gè)錯(cuò)誤。SeaierscodeD堪est以及kutiaJizationVector(IV)都由密封操作填充。20現(xiàn)在討論密封PubKContamer。加密操作是用由操作系統(tǒng)驅(qū)動(dòng),在不工作時(shí)倉(cāng)犍的主密鑰的派生以及服務(wù)器的通信公開(kāi)密鑰完成的。操作系統(tǒng)驅(qū)動(dòng)密封涉及對(duì)BIOS層的兩個(gè)調(diào)用。第一個(gè)是使MKContainer使用OsdMKContaierSea10、然后謹(jǐn)OSRawRSAPublie()以加密正好用在MKContainer密封操作中的MK。密封旨容器所需的步驟如下。這些步驟就25地在緩沖器上操作并因此覆蓋開(kāi)封的plaintext數(shù)據(jù)。如在有關(guān)Usage值的節(jié)中的所解釋的那樣,該Usage值對(duì)由客戶和服務(wù)器密封的容器來(lái)說(shuō)是不同的。確認(rèn)選定的公開(kāi)密鑰對(duì)SMI超竽來(lái)說(shuō)是公知的。如果不是返回錯(cuò)誤。確認(rèn)長(zhǎng)度是可接受的。在密封前,長(zhǎng)度包括第一部分和開(kāi)封的第二部分。在密封后,它包括通過(guò)密封第二部分增加的額外數(shù)據(jù)。確認(rèn)Format等于30FmtSignedContainer。使用由操作系統(tǒng)驅(qū)動(dòng)安全模塊傳遞的MK以及對(duì)有關(guān)MKContamer描述的步驟密封第二部分。當(dāng)?shù)谝淮萎a(chǎn)生PubKConta祖er時(shí),主密鑰將由操作系統(tǒng)驅(qū)動(dòng)程序隨機(jī)產(chǎn)生。返回在該主密鑰上的一個(gè)句柄給操作系統(tǒng)驅(qū)動(dòng)程序的調(diào)用程序,因此它可能被重新使用。增大Length字段來(lái)包含由第上一步驟所增加的Mac和Padctog。將5PuWicKeyD培est設(shè)置成選定的公開(kāi)密鑰的SHA1摘要。設(shè)置PubKRSABlock的Opcode和Format部分來(lái)匹配頭部值。在執(zhí)療這些步驟之前,Sf舒央的剩余部分由OSD程序填充。使用一個(gè)由操作系統(tǒng)驅(qū)動(dòng)模塊iSf的隨機(jī)的OAEP籽數(shù)4tt執(zhí)行PubKRSABlock的OAEP填充。調(diào)用BIOSRawRSAPuWie用選定的密鑰執(zhí)行RSA操作。在操作系統(tǒng)驅(qū)動(dòng)程序已經(jīng)密封了PubKContamer結(jié)構(gòu)以后,io它具有如表ll所示的格式?,F(xiàn)在討論開(kāi)封'PubKCortamer。在本發(fā)明公開(kāi)的實(shí)施例中,設(shè)備管理機(jī)構(gòu)服務(wù)器執(zhí)行開(kāi)封'。月艮務(wù)器的應(yīng)答將會(huì)是以在MK容器的格式??蛻羰褂肕K容器操作來(lái)開(kāi)封服務(wù)器應(yīng)答。現(xiàn)在討論服務(wù)器開(kāi)封。開(kāi)封PubKOrtamer容器所需的步驟如下。錯(cuò)誤則15將容器置O。確認(rèn)長(zhǎng)度是可接受的。該-felt包括包含密封的MKContamer的第一和第二部分。確認(rèn)Format等于FmtPubContoiner。確認(rèn)PiiMicKeyDigest對(duì)應(yīng)于匹配選定的私有密鑰的公開(kāi)密鑰。用選定的私有密鑰在PubKRSABlock上抽舒最初的RSA解密操作。冊(cè)滁OAEP填充,并確認(rèn)OAEP冗余是正確的(也就是說(shuō),20數(shù)據(jù)土夾在傳輸中沒(méi)有改變)。這:使Opcode、Foiroat、KID以及K對(duì)調(diào)用程序來(lái)說(shuō)是可見(jiàn)的。確認(rèn)Format是FmtPubKContamer。調(diào)用程序?qū)z驗(yàn)?zāi)芊窠邮躉pcode。使Key等于來(lái)自于解密的PubKRSABloek的MK。使用對(duì)有關(guān)MKContainer進(jìn)行描述的步驟來(lái)開(kāi)封MKContainer。WE討論加I密的原始和公開(kāi)值。25派生密鑰包括可能是同一函數(shù)的A靜Key()、NewKey()以及CustomerAppICeyO:XxxKey(128位的緩沖器,如果低于160位'具有高單位0的160位緩沖器)。AppKey(Key'CodeDigest)=TrancateTol28bit(SHA—1(Key11CodeDigest))30用于保護(hù)AppCoiiteiners的密鑰是通過(guò)使用擁有這個(gè)容器的應(yīng)用程序的f鵬的160位摘要從保密主密鑰中得到的。產(chǎn)生的密鑰是128位長(zhǎng)(對(duì)大多數(shù)加密算法來(lái)說(shuō),〗28位更通用)。UKeyllQxteDigest的理由是允許非根的設(shè)備管理機(jī)構(gòu)服務(wù)器創(chuàng)建自己的Af)pCortamei:,而不需要讓他ff]知道真實(shí)的主密,。知道真實(shí)的保密主密鑰將損害所有其它的AppContamers。5NewKey(Key,Usage)二T薦ateTol28Mt(SHA—1(Key11Usage))其中Usage參數(shù)是一個(gè)32位值。散列和截尾用來(lái)簡(jiǎn)化代碼,因?yàn)樵贜ewKeyO中不必暴露產(chǎn)生的密鑰。NwKey()有時(shí)也取AppKey()的結(jié)果作為自變量。CustomerAppKey(Key,CustomerSecret)::TruncateTol28Wt(SHA—1i()(KeyIICustomerSecret))其中,CustomerSecret是一個(gè)128位值。該隨數(shù)用來(lái)為包括CustomerSecret部分的AppContamers生成密鑰。AppCodeDigest=Encl60Bits(SMK,DecryptedCodeDigest)以及DectyptedCodeD;.gest=Decl60Bits(SMK,AppCodeDigest)均用來(lái)催訴j保密主密鑰加密和解密160位摘要值,而且是請(qǐng)求設(shè)備管理機(jī)構(gòu)服務(wù)器為特定設(shè)備—1:15的專(zhuān)用程序創(chuàng)建第一AppCont細(xì)er的機(jī)構(gòu)的至關(guān)緊要的部分。服務(wù)器執(zhí)行Enc〗60bite函數(shù),而客戶計(jì)算機(jī)執(zhí)行Decl60Bite函數(shù)。Encl60b〗te函數(shù)執(zhí)行以下步驟。將DecryptedCodettgest拷貝到AppCodeDigest緩沖器中。使Key-NewKey(SMK,UsageAppcodeDigest)。使Plaintext!.^AppCodeD培est的前6字節(jié)。這是DecryptedCodeDi.gest的前16字2()節(jié)。使Ciphertextl=RC6CBCEncrypl;(Key,Pkmtextl)。因?yàn)閜la皇text只有-一個(gè)塊長(zhǎng),因此這與ECB模式等效。用Ciphertextl替換AppCodeD砂st的前16字節(jié)。使Plamtext2=AppCodeD培e就的最后的16字節(jié)。該值的前12字節(jié)是Ciphertextl的后12字節(jié)》且該值的后4字節(jié)是DeciyptedCodeDigest的后4字節(jié)。使Cipliertexl2=25RC6CBCEnciypt(Key,Plaintext2)。因?yàn)閜laintext只有一個(gè)數(shù)據(jù)塊長(zhǎng),因此這與ECB模式等效。用Ciphertext2替換AppCodeDigest的后16字節(jié)。Decl60Bte函數(shù)執(zhí)行以下步驟。將AppCodeDigest拷貝到DeciyptedCodeD復(fù)gest緩沖器中。使Key二NewKey(SMK,UsageApf)codeDigest)。使Gphertext2二DeeryptedCode.D培est的后16字節(jié)。這是AppCodeD培est的后163()字節(jié)。使Pl認(rèn)rtext2:RC6CBCDecrypt(Key,Ciphertext2)。因?yàn)閜laintext只有一個(gè)l繊塊長(zhǎng),因此這與ECB模式等效。用H細(xì)text2替換DeciyptedCodeDigest的后16字節(jié)?,F(xiàn)在DeciyptedCodeDigest的后4字節(jié)有它們的正確值。使Ciphertextl=DecryptedCodeDigest的前16字節(jié)。-這包括AppcodeDigest的前4字節(jié)禾tlPiamtex2的前12字節(jié)。使P畫(huà)纖textl=RC6CBCDecrypt(Key,5Qphertextl)。由于邵hertext僅有一個(gè)數(shù)據(jù)塊長(zhǎng),所以這與ECB模式等效。用Pfemtextl替換DeayptedCodeDigest的前16字節(jié)。Enc(Key,UsagejMessage)二RC6CBCEnciypt(NewICey(Key,Usage),Message)Dee(Key,Usa.ge,Message):RC6CBCDecrypt(NewKey(Key、Usage)JMessage)其中用于密碼塊鏈模式(CBC)的初始化變量是16字節(jié)的零,且Usage值io是32位長(zhǎng)。密碼塊鏈?zhǔn)且粋€(gè)在加密前將先前的ciphertext塊和當(dāng)前的plaintext塊結(jié)合的塊加密模式。Key是128位或288位長(zhǎng)。消息參數(shù)指定數(shù)據(jù)塊石16字節(jié)長(zhǎng)的倍數(shù)。RC6密碼是于1998年8月20日由RonaldL.Rivest,M丄B.Rotehaw,R.SMney以及YLYin在"TheRC6BloekCipher"中定義的,且CBC模式是于1995^|ENewYork,NY由BraceSchneie.r、.〗ohnWiley&Sons!5在"AppliedCryptographySecond腿tion,'1:11定義的。RC6專(zhuān)門(mén)設(shè)計(jì)用來(lái)滿足MSTAES(AdvancedEncryptionStandard高級(jí)加密標(biāo)準(zhǔn))的要求。RC6包括對(duì)各種長(zhǎng)度密鑰大小的支持,并被進(jìn)行優(yōu)化以利用自RC5以來(lái)在CPU方面的進(jìn)步。當(dāng)與大多數(shù)容器一起使用這種原語(yǔ)時(shí),Message從一個(gè)16字節(jié)的隨機(jī)值(被20稱(chēng)為IV)開(kāi)始,并在結(jié)尾填充1至16個(gè)字節(jié)來(lái)使Message成為密碼的塊大小(16字節(jié))的倍數(shù)。注意16字節(jié)的IV并不用在傳統(tǒng)的CBC模式中,因?yàn)樗皇侵苯拥嘏c隨后的plaintext塊異操作。相反,在加密過(guò)程中,它與0(什么也不做)異或操作,然后用密鑰加密來(lái)生成eiphertext的第一數(shù)據(jù)塊。第一aptertext數(shù)據(jù)塊然后在加密該數(shù)據(jù)塊前進(jìn)行與下一plaintext數(shù)據(jù)塊的異或操"作。在解密過(guò)程中,解密第一數(shù)據(jù)塊以及與零異或操作來(lái)生成是原始的隨機(jī)的IV數(shù)據(jù)塊。解密第二ciphertext塊并與ciphertext的第一塊異或操作來(lái)生成pfemtext的第二數(shù)據(jù)塊。用于Enc和Dec的填充是許多其值等于填充的字節(jié)數(shù)的相同的字節(jié)。例如,如果增加兩個(gè)填充的字節(jié),則每一個(gè)字節(jié)具有值0x02。通常至少有-+填充的30字節(jié),因此如果plaintext已經(jīng)是16字節(jié)的倍數(shù)長(zhǎng),那么增加填充的16字節(jié),而且那些字節(jié)中的每-一個(gè)都具有值(M0。宗教的戰(zhàn)爭(zhēng)挑戰(zhàn)隨扭謝抗可預(yù)見(jiàn)的填充字節(jié)的優(yōu)點(diǎn)。這種設(shè)計(jì)要求可預(yù)見(jiàn)的填充字節(jié)。注意很容易通過(guò)檢查加密數(shù)據(jù)的最后字節(jié)確定增加了多少填充。HMAC(Key,Message)原語(yǔ)?;谌魏渭用苷瘮?shù)的Hugo'sMessage5AuthenticationCode(HMAC)調(diào)用基本完整的原語(yǔ)。在本發(fā)明中,它基于由NIST&NSA在1995年4月17日在"SeeureHashStandard"中定義的SHA—1。發(fā)表的有關(guān)HMAC原語(yǔ)的論文表明它具有極好的安全特征以在摘要函數(shù)中彌補(bǔ)潛在的缺點(diǎn)。SHA—I是由美國(guó)商業(yè)部為-一個(gè)用于計(jì)算消怠或數(shù)據(jù)文件的壓縮表達(dá)式的安全散列算法釆用的一個(gè)標(biāo)準(zhǔn)規(guī)格。當(dāng)輸入長(zhǎng)度<264位的任何消息io時(shí),SHA—1生成一個(gè)調(diào)用消息摘要的160位輸出。然后信息摘要能被輸入到為信息生成或驗(yàn)證簽名的數(shù)字簽名算法(DigitalSignatureAlgonthm,DSA)中。HMAC(Key,Message)=SHA—1(KeyxorOpad||SHA-l(KeyxorIpadiIMessageOpad及Ipad值趟不同的512位長(zhǎng)的常量,以匹配SHA—1的內(nèi)部壓縮函i5數(shù)的數(shù)據(jù)塊大小。在該設(shè)計(jì)中Key必須小于512位長(zhǎng)。Opad及Ipad值連同HMAC的詳細(xì)內(nèi)容是由H.Krawezyk、M.Beflare以及R.Canetti在"HMAC:Keyed—HashingforMessageAuthentieation"中定義的。與消息的直接摘要相比,HMAC原語(yǔ)要求兩個(gè)以上的SHA1壓縮函數(shù)的迭代。這樣支付磁f的保密特征的開(kāi)銷(xiāo)很低。20HMAC是用于使用加密散列函數(shù)的信息驗(yàn)證的機(jī)制。HMAC能與任何迭代的加密散歹涵數(shù)如MD5、SHA—1以及一個(gè)保密共享密鑰一起ffiffl。HMAC的加密強(qiáng)度繊于下面的散歹幅數(shù)的特性。RSA操作使用從RSA許可的代碼在BIOS中執(zhí)行。Qphertext=RSA.OaepEnaypt(PubUcKey,OaepSeed,Message)25Message=RSA0aepDecrypt(PnvateKey,Ciphertext)這些原語(yǔ)i頓jRSA算法執(zhí)行加密和解密。就加密原語(yǔ)來(lái)說(shuō),M正如由RSALaboratories在"PKCS#1v2.0:RSACiyptographyStandard"中所定義的OAEP(最佳的不對(duì)稱(chēng)的加密填充,optimalasymmetricenciyptionpadding)首先填充Message,然后根據(jù)PublicKey取冪和Pf低模數(shù)。OAEP所要求的隨機(jī)籽數(shù)值作30為-一個(gè)參數(shù)傳遞給這個(gè)函數(shù)。就解密原語(yǔ)來(lái)說(shuō),根據(jù)PnwteKey,在邵hertext被取冪和P射氏模數(shù)后,驗(yàn)證和刪除OAEP填充。在大多數(shù)情況下,Message是128位密鑰和160位SMKKID的連接。設(shè)計(jì)PKCS用于二進(jìn)制和ASCn數(shù)據(jù);PKCS也與TTU—TX.509標(biāo)準(zhǔn)兼容。所公布的標(biāo)準(zhǔn)是PKCS弁1、弁3、#5、#7、#8、弁9、詣、#11和#512。PKCS弁13和#14當(dāng)前正在開(kāi)發(fā)。PKCS包括專(zhuān)門(mén)算法和獨(dú)立算法的實(shí)現(xiàn)標(biāo)準(zhǔn)。支持許多的算法,包括RSA以及Diffie—Hellmaii密鑰交換,然而,只有后兩科'特別地詳細(xì)。PKCS也為數(shù)字簽名、數(shù)字信封、擴(kuò)展的證書(shū)定義—-個(gè)獨(dú)立算法語(yǔ)法;這使某些人實(shí)現(xiàn)任何加密算法無(wú)論如何都要符合-一個(gè)標(biāo)準(zhǔn)的語(yǔ)法,并因此獲得互操作性。詳細(xì)描述PKCS標(biāo)準(zhǔn)的文獻(xiàn)可在RSADataSecurity'sioFTP服務(wù)器(可.AAMp^tamsa^om或通過(guò)無(wú)名的ftp至UfijMsa^com、或通過(guò)發(fā)送e-maii至ljpkcs詠sa,com)上獲得。下面是公開(kāi)密鑰加密標(biāo)準(zhǔn)(Public-KeyCryptographyStandards,PKCS):PKCS井1定義了用于fflM《糊:RSA公開(kāi)密鑰加密系統(tǒng)來(lái)加密和標(biāo)記數(shù)據(jù)的機(jī)制。15PKCS"3定義了一個(gè)D通e—Helim纖密鑰一致性協(xié)議。PKCS#5描述了用于用口令導(dǎo)出的一個(gè)保密密鑰加密一個(gè)字符串的方法。PKCS#6正逐步停止采用以支持X.509版本3。PKCS井7為包括加密增強(qiáng)如簽名和加密的消息定義了--^個(gè)總的語(yǔ)法。PKCS井8描述了用于私有密鑰信息的格式。該信息包括—十用于某些公開(kāi)20密鑰算法的私有密鑰,以及可選的一組嵐性。PKCS井9定義了為用在其它的PKCS標(biāo)準(zhǔn)中的選定的屬性字節(jié)。PKCS弁10描述了用于證書(shū)請(qǐng)求的語(yǔ)法。PKCS弁ll為加密設(shè)備如智能卡和PCMCIA卡定義了---十技.賴(lài)A立的可編程接口,被稱(chēng)為Qyptoki。25PKCS弁12指定了一個(gè)用于存儲(chǔ)或傳送一個(gè)用戶的私有密鑰、證書(shū)、其它的保密等的便攜格式。PKCS#13使用EllipticCurveGlyptography定義了用于加密和標(biāo)記數(shù)據(jù)的機(jī)制。PKCS#4為偽隨機(jī)數(shù)生成提供了-一個(gè)標(biāo)準(zhǔn)。3(》《糊RSA算法,S:i.gBioek=RSASigEncrypt(PiwateKey,Digest)以及Digest^RSAS堪Deaypt(Pub!icKey,SigBk)ck)原語(yǔ)執(zhí)行加密和解密。就加密原語(yǔ)來(lái)說(shuō),使用正如由RSALaboratories在"PKCS弁1v2.0:RSAGlyptographyStandard"中所定義的簽名填充來(lái)首先填充i60位的SHA—1摘要值,然后根據(jù)PubHcKey取冪和降低模數(shù)。就解密原語(yǔ)來(lái)說(shuō),根據(jù)PnvateKey,在對(duì)ciphertext5取冪和降低模數(shù)后,驗(yàn)證和刪除該填充。該填充將摘要算法的標(biāo)識(shí)符進(jìn)行編碼,且這些原語(yǔ)只支持SHAJ算法。這些原語(yǔ)是創(chuàng)建和驗(yàn)證數(shù)字簽名的過(guò)程的----部分。其它的步驟包括計(jì)算或驗(yàn)證已被標(biāo)記的真實(shí)的SHA1摘要。AppCodeDigest是用來(lái)識(shí)別擁有一個(gè)容器的應(yīng)用程序的數(shù)據(jù)。它不適用于所有的容器。該數(shù)據(jù)是基于調(diào)用加密函數(shù)的代碼產(chǎn)生的。該數(shù)據(jù)通常由設(shè)備管w理機(jī)構(gòu)生成、加密和標(biāo)記。時(shí)常在運(yùn)行時(shí)間由BIOS將解密的AppCodeD;gest(ACD)與CallerCodeDigest進(jìn)行比較。屬于服務(wù)器的CodeDigest經(jīng)常為0。SealerC0deD1gest/CaJle1C0deD聯(lián)st是在函數(shù)中基于涵數(shù)的調(diào)用程序討賞的數(shù)據(jù)。用來(lái)計(jì)算旨摘要的信息在諸如向BIOS注冊(cè)、向操作系統(tǒng)驅(qū)動(dòng)程序注冊(cè)等注冊(cè)期間在用OpaacOsdA礎(chǔ)onzation作為容作碼的SingedCont細(xì)er中!5提供的。登記是客戶系統(tǒng)經(jīng)歷的較早-一階段。在該階段,在客戶系統(tǒng)和設(shè)備管理機(jī)構(gòu)服務(wù)器之間創(chuàng)建和交換主密鑰。該步驟包括PubKContamers。當(dāng)?shù)怯涍^(guò)程沒(méi)有分配該主密鑰時(shí),主密鑰用一個(gè)臨時(shí)的隨機(jī)值代替直至,正確的主密鑰代替它為止。20BIOS和操作系統(tǒng)驅(qū)動(dòng)程序(OSD)都參與容器操作。與密封有關(guān)的容器函數(shù)包括OSDAppContainerSeaJ()、OSDMKConta:inerSeai()、OSDPubKConteiJierSeai()以及BIOSAppContamerSeaJ0。OSDPubKCoDteanerSeal0函數(shù)創(chuàng)建一個(gè)隨機(jī)的對(duì)話密鑰(Masterfey)并將它返回到包含在AppContamer中的調(diào)用程序。然后使用該A卯Conta皿er調(diào)用其25它的MKContainer()操作。圖—示出了--個(gè)典型的PubKContamer算法。涉及開(kāi)封的織函數(shù)艦OSDAppContamerlMseal()、OSDMKCont扁rU腦al()、OSDSignedContamerUnseal0、OSDPubKCoi他uierUnsea〗0、以及B10SAppConte臓Unseal0?,F(xiàn)在討論容器分類(lèi)執(zhí)行細(xì)節(jié)。這些分類(lèi)包括PubKContamer和3()MKContainer。下面對(duì)PubK.CoDtamer的格式和在密封和開(kāi)封中艦的類(lèi)中的方法的描述。這些容器最初用來(lái)在客戶和設(shè)各管理機(jī)構(gòu)B艮務(wù)器之間建立-一個(gè)安全通信通道。PiibKContamer的第二部分是一個(gè)包括4字節(jié)頭的完整的MKContamer對(duì)象。PubKContamer的第一部分包括所生成的主密鑰(MK)和客戶的KeyID(KID)5值(如果沒(méi)有分配主密鑰則為o),且aM個(gè)值均是用接收程序的公開(kāi)密鑰進(jìn)行加密的。仔細(xì)選擇PubKContamer的格式以允許在不改變?nèi)萜鞯牡谝徊糠值那闆r下改變?nèi)萜鞯牡诙糠帧>驮S客戶和服務(wù)驗(yàn)實(shí)現(xiàn)某歸意義的性能艦。OSD密封函數(shù)將返回包封在AppContamer中的生成的生密鑰。在每次開(kāi)始----個(gè)與服io務(wù)器的新的雜(例如,存取^外新的下載)時(shí),客戶倉(cāng)游儲(chǔ)和再糊〗該Masterfey和PubKContainer的第-一部分,且第二部分將成為一個(gè)包含-一個(gè)新的用于加密對(duì)話的主密鑰(MasterKey)的MKContainer。St免了需要用SMI程序執(zhí)行-一個(gè)公開(kāi)密鑰操作,并獲得了解只有真實(shí)的服務(wù)器才能知道該新的對(duì)話密鑰的保密利益,因?yàn)橹挥姓鎸?shí)的服務(wù)器知道所保存的主密鑰(需要解密該新的15對(duì)話密鑰)或知道私有密鑰以讀取第-一部分。對(duì)服務(wù)器來(lái)說(shuō)重要的最佳化是存儲(chǔ)從PubKContamer的第--部分抽取的MasterKey,并用第--部分的散列索引存儲(chǔ)值。當(dāng)再次鵬PubKContamer的第一部分時(shí),這種存i,兔了需耍執(zhí)行私有密鑰操作。注意因?yàn)榭蛻艨偸前l(fā)送整個(gè)的第-部分,因此服務(wù)器能隨時(shí)刷新剤請(qǐng)入口,因此服務(wù)器總是使用它的私有密鑰(服務(wù)器fflif私有密鑰)來(lái)20抽取MasterKey。這也意味著對(duì)在客戶禾朋艮務(wù)器之間初始化信息來(lái)說(shuō)只有-一種格式,而不是兩種獨(dú)立的格式來(lái)處理再利用或創(chuàng)建MasterKey。在登記過(guò)程中使用PubKCoiitamer在客戶和服務(wù)器之間建立傳送以便允許建立保密主密鑰,以及在某些客戶應(yīng)用徵芊和設(shè)備管理機(jī)構(gòu)服務(wù)器之間建立傳送。表6示出了最后密封的PubKContainer結(jié)構(gòu)。25與PubKContamer有關(guān)的構(gòu)造程序和方法如下所述。PublicPubKContamerO是一個(gè)空的初始化記錄器對(duì)象的容器。至于puHiePubKContamer(Ini)utStreamm),用輸入數(shù)據(jù)流初始化容器,然后將輸入數(shù)據(jù)流讀入到--個(gè)字節(jié)數(shù)組中。然后艦parseBufc方法分析緩沖器。也初始化記錄器對(duì)象。3()PuWicPubKeontamer(byte[]buf)。容器用字節(jié)數(shù)組初始化,然后將它作為一個(gè)字節(jié)數(shù)組讀入到緩沖器中。然后使用parseBuffbr方法分析緩沖器。也初始化記錄器對(duì)象。Pnvatevoidseal()廢棄RsaLibException。下面用來(lái)密封PubKContamer:opcode、KID、MK、PubKDigest、SealedMKContamer。使Format為3=FratPubKConatiner。用5opcode、fomiat、reservedKID和MK構(gòu)造PubKBloek。Opcode、KID和主密鑰是由調(diào)用程序設(shè)置的。調(diào)用JNI,il序用于--1^數(shù)據(jù)塊中的RSA庫(kù)禾口RsaOaeEnoypt(PubKDigest^PubKBlock)以構(gòu)造加密的PubKRSABlock。設(shè)置length等于密封的MKContajner(MkC')的長(zhǎng)度+148(128-PubKRSABlock,20-PubKDigest)。該長(zhǎng)度表示來(lái)自包括密封的MkContamer的PubH3igest的字節(jié)i()禾n。構(gòu)造密封的PubKContainer與Opcodel!FoniiatHReservedHLength11PubD堪est11PubKRSABlock11sealedMKe—樣的字節(jié)數(shù)組。{妙,來(lái)自安全公用類(lèi)的addArray方法造鏈接數(shù)組。Privatevoidunseal()廢棄RsaLibException、CoiitamerExeeption0檢驗(yàn)mvalid()pcocie、iiivalMFoniiat禾Pmva〗idLen是否為false,并廢棄15ContainerException。如果它們中任何一個(gè)不是所期望的那樣,則在parseBiifibr巾將它們?cè)O(shè)置成'Mse。M解密,獲得PubKBlock,它是Opcode11Format11Reserved11MK11KID。通過(guò)用于RSA庫(kù)的JM包封程序,具有rsaOaeDectypt(PubKDigestPubKBlock)的PubKRSABlock。20在PubKBlock、操作碼、格式、KID和主密鑰上執(zhí)行有效性和長(zhǎng)度檢驗(yàn)。PnvatevoidparseBuffer(byte[]buffer)是一個(gè)幫助函數(shù)來(lái)分析引入的存儲(chǔ)在為緩沖器中的密封容器,其中該緩沖器為Opcode11FormatHReserved11Length11PubD堪est11PubKRSABlock11sealedMKe的。如果不是所期望的那樣,則設(shè)置mvaMOpcode、mvaMFormat和inva!j'dLen。25Publicbyte[JgetRawFor()廢棄containerExeeptiQti。檢驗(yàn)數(shù)據(jù)和MKD培est非空并調(diào)用密封方法。返回在如Opcode11Format11Reserved11Length11PubDigestiIPubKRSAffloek11sealedMKe的密封操作中建立的緩沖器。PubfcbytegetOpeode()返回容器的操作碼。3()Pubicbyte[]getPubKDigest()從容器返回PubKD堪est。Publiebytefl^tKID0從容器返回KJD,如果需要?jiǎng)t開(kāi)封。PublicbyteOgetMK()廢棄ContamerException從^II返回MK,如果需要?jiǎng)t開(kāi)封。PublicMKContainergetMKContainer()/發(fā)棄CoritamerException—抽取密;fet的5嵌入在由parseBufe完成的Pubk中的MK容器,開(kāi)封Pubk部分以獲得MK,并為MK容器設(shè)置它。PublicvoidsetOpcode(byteOpcode)廢棄ContamerException—在杉g襝它是否在有效范圍中之后,為容器分配操作碼。Public,voids改PubKDigest(byte[]digest)廢棄ContamerException—如果傳遞為n)空或者長(zhǎng)度不等于20,則廢棄exception,設(shè)置PubKD堪est。PublicvoidsetKl.D(byte[]Kid)廢棄ContamerException-如果傳遞為空或者長(zhǎng)度不等于20,則廢棄exception,設(shè)置KeyID。PiMicvoidsetMK(byte[]Mk)廢棄ContamerException-如果傳遞為空或者長(zhǎng)度不等于20,則廢棄exception,設(shè)置MK。15PublicvoidsetMKConta祖er(byte[]Mkc)廢棄ContamerException—設(shè)置將被,炎入在PubKContauier中的密封的MKContainer。Privatevoidlog(intaWamnigLevei,Strmgmessage)—將作為一個(gè)參數(shù)傳遞過(guò)來(lái)的該WamingLevel與當(dāng)前值進(jìn)行比較,以及如果很緊急就輸出它。下面是涉及MKContamer的構(gòu)造程序和方法。20現(xiàn)在討論MKContamer的格式和用來(lái)創(chuàng)建它的算法。首先描述開(kāi)封格式然后描述密封和開(kāi)封它的步驟。在使用PubKConfamer已經(jīng)建立了一個(gè)公有的MasterKey以后,MKContainer最初被用來(lái)保護(hù)在客戶和服務(wù)器之間傳送的信息的大組塊(達(dá)到64K)。MKContamer主要用來(lái)加密tt。加密是基于----十對(duì)稱(chēng)的密鑰進(jìn)行加密的。25該密鑰來(lái)源于MasterKey。通過(guò)使用來(lái)源于MasterKey的一個(gè)對(duì)稱(chēng)密鑰,MKContamer被用來(lái)加密大的(達(dá)到64k)數(shù)據(jù)塊。在登記過(guò)程中,特殊情況使用是加密在客戶和服務(wù)器之間的傳輸以便允許建立保密主密鑰,并加密某些客戶應(yīng)用程序和設(shè)備管理機(jī)構(gòu)服務(wù)器之間的傳輸。最后密封的結(jié)構(gòu)如表13所示。PublicMKContemerO是空的正好初始化記錄器對(duì)象的容器。PuhfcMkCoiitamer(InputSte腿m)—用輸入數(shù)據(jù)流初始化容器,然后將它作為字節(jié)數(shù)組讀入到Buffer中。然后使用parseBuffer方法分析緩沖器。也初始化記錄器對(duì)象。PublicMkContainer(byte[Ibuf)—用字節(jié)數(shù)組初始化容器,然后將它作為字節(jié)5數(shù)組讀入到Bufifer中。然后使用parseBu飽r方法分析緩沖器。也初始化記錄器對(duì)象。Privatevoidseal()廢棄RsaLibException下面是用于密封MKContamer,調(diào)用在這些操作碼、MKD堪est、數(shù)據(jù)上的設(shè)置方法。i()設(shè)置—Format為3=FmtPubKContmner設(shè)置scd為20個(gè)0的字節(jié)數(shù)組將長(zhǎng)度設(shè)為娜長(zhǎng)度+56(20-MKDi『st+16-iv+20-scd)將長(zhǎng)度轉(zhuǎn)換成2字節(jié)數(shù)組從隨機(jī)數(shù)字生成器中取iv為16字節(jié)數(shù)據(jù),調(diào)用cryptoPn皿tives■〖5geiierateRandomNi咖ber(16)方法使用安全實(shí)用程序的addToAiray方法構(gòu)造payload為Opcode11FormatIiReserved11Length11MKDigest11wHscd11data。將newey設(shè)為NkeyForSealmg=QyptoPrimitive,newKey〔MKDigest^torConstants.UsageMKMacServer);2()然后從cryptoPnmitive調(diào)用獲得MacMac=QyptoPrimitive.getHmac(NkeyForSeaImg,payioad);構(gòu)造Plaintext為iv||scd11data11mae將Padding設(shè)置成1-16字節(jié)的矢量以使vanable、Plaintext(見(jiàn)下文)成為16字節(jié)的倍數(shù)長(zhǎng)。每一個(gè)填充字節(jié)具有一個(gè)等于矢量中填充的數(shù)量的值。這是25用adjustPad方法在SecurityUtils類(lèi)中完成的。為Plaintext增加填充,現(xiàn)在Plaintext是iv11Sea復(fù)ersCodeDigest11Date11MacIIPadding使Ciphertext=Enc(Key,UsageMKEnc,Plaintext)。Qphertext的長(zhǎng)度與Plaintext的長(zhǎng)度一樣。30在Plamtext+20中設(shè)置Length為字節(jié)的數(shù)量。在2字節(jié)的數(shù)組中存儲(chǔ)該值。構(gòu)造一個(gè)密封的MKCoiitamer作為-----』個(gè)具有Opcode11Format11Reserved11Length11MKDigestiICipherterf的緩沖器privatevoid.unseaJ(:)廢棄RsalibException、ContauierExceptioii。檢驗(yàn)mvalidOpcode、invaMFormat或者iiwal'idLen是否為false,并廢棄5ContainerExe鄰tion。如果它們中任何一個(gè)不是所期望的》則在paiseBuffer中把這些設(shè)置成falseo從parseBuffe:r中抽取的Ciptertext傳遞給QyptoPmiiitivedec,獲得界面plamte對(duì)的解密方法.dee方法被稱(chēng)為dee.(MKDigest^torConstaits,l3sageMKEncServer,c,hertext)。從plaintext的最后字節(jié)可以知道填充字節(jié)以及它指定了增加多少填充字io節(jié)。填充字節(jié)是從plaintext中刪除的,數(shù)據(jù)大小是通過(guò)刪除mae長(zhǎng)度以及從pkmtext的長(zhǎng)度中減去填充字節(jié)計(jì)算的。計(jì)賞w、scd以及data的長(zhǎng)度并存儲(chǔ)在-''-個(gè)2字節(jié)的數(shù)組中。由于計(jì)算data的長(zhǎng)度,且iy、scd以及mac的長(zhǎng)度是預(yù)定的,因此它們都是從plaintext中抽取的?!?修改Length=Length20-Padding的長(zhǎng)度構(gòu)造payload為Opcode11Format11Reseived11Length11MKDigest11iv11sed11data。牛勾)豈newKey.為NkeyForSealmg-QyptoPramtive,newK.eyMKDigestctorConstants.UsageMKMacServer):然后從ciypt()Pmmtive調(diào)用獲得ExpectedMac為2()ExpectedMac=CryptoPriiTiitive.getHma.c(NkeyForSealing,payioad);—如果mac禾tlExpectedMac不相等,廢棄Co!血merException。PrivatevoidparseBufer(byte[]bufffer)是--個(gè)幫助函數(shù)以分析引入的存儲(chǔ)在緩沖器中的密封容器,這些緩沖器是OpcodellForaiatllReservedIlLengtb11MKDigest11C,heredText25在加密格式中,密文組成11iv11SealersCodeD堪estIidata如果不是所期望的,則設(shè)置mvalidOpeode、nwaUdFormat、mvatodLenpubMcbyte[]getRawForNet()廢棄ContainerExc鄰tion,檢驗(yàn)KeyK)、MK以及密封的MKC(MkBuff)是否是空,然后調(diào)用密封方法。返回在密封操作中建立的緩沖器如Opcode11Format11Length11MKDigestIIIV11SealeiCodeDigestIIDate3()II腿ciipadpublicbytegetOpcodeO返回容器的操作碼Pubicbyte[〗getMKDigest()廢棄ConlainerExcepti鐘一從容器返回MKDigest。Publicbyte[]getDataO廢棄CoiifamerException—從,返回dala,如果需要5則開(kāi)封。Pubfcbyte[]getMK()廢棄ContanierException-從容器返回MK。PublicvoidsetOpcode(byteOpcocle))發(fā)'::^ContainerException—it檢驗(yàn)1^是^f在有效范圍中之后,為容賺配操作碼。Publicvoidset:MKD培est(byte[](igest)廢棄ContainerExoeption—如果傳遞為空10或者長(zhǎng)度不等于20,則廢棄exception,設(shè)置:MKDig6st。PublicvoidsetData(byte[]Kid)廢棄ContajnerException-如果傳遞為空,則廢棄exe鄰tion,設(shè)—置DataPublicvoidsetMK(byteQMk)廢棄Conl,amerException-如果傳遞為空或者長(zhǎng)度不等于16,則廢棄exception,設(shè)置MK。15Privatevoidlog(intaWammgLevd,Stnngmessage)—將作為一個(gè)參數(shù)傳遞過(guò)來(lái)的該WamingLevel與當(dāng)前值進(jìn)行比較,以及如菊艮緊急就輸出它。現(xiàn)在討論OSD軟件。操作系統(tǒng)驅(qū)動(dòng)程序(OSD)是系統(tǒng)10的楊。、組件中的一個(gè)。它是被動(dòng)態(tài)地裝入到該系統(tǒng)中的一個(gè)內(nèi)核模式。它的-.t:部邊界為安全應(yīng)用程序提供安全服務(wù)。它的下部邊界與安全BIOS進(jìn)行接口,提供了低級(jí)安20全功能。操作系統(tǒng)驅(qū)動(dòng)程]供的服#^括RSA和RC6加密函數(shù)、應(yīng)用程序完整性檢驗(yàn)以及隨機(jī)數(shù)生成。軟件操作環(huán)境使用如WDMWindows設(shè)備驅(qū)動(dòng)程序的操作系統(tǒng)驅(qū)動(dòng)程序。該設(shè)備驅(qū)動(dòng)程序也可運(yùn)行在Wmdow98、WindowsMe、Wmdows2000和未來(lái)的MicrosfotWindows操作系統(tǒng)下。25現(xiàn)在討論操作的原理并B各述OSD操作的過(guò)程。圖2示出了客戶組件層?,F(xiàn)在討論初始化。在應(yīng)用程序調(diào)用OSD函數(shù)前,通過(guò)調(diào)用OsciRegisterApplication函數(shù),用操作系統(tǒng)驅(qū)動(dòng)程序注冊(cè)它自己本身。操作系統(tǒng)驅(qū)動(dòng)程序做下面的操作以注冊(cè)一個(gè)應(yīng)用程,。獲得應(yīng)用程序識(shí)別信息,如ProcessID。30在作為參數(shù)傳遞的SigiiedCcmtemer中基于密鑰摘要獲得公開(kāi)密鑰索引。操作系統(tǒng)驅(qū)動(dòng)程序在初始化過(guò)程中創(chuàng)建的密鑰表將密鑰摘要映射成密鑰索弓J。調(diào)用B10SRawRSAPublic以開(kāi)封在SignedContamer中的數(shù)據(jù)塊。該數(shù)據(jù)塊包含地址范圍、所期望的代碼摘要和PnvfegeBtf論ctor和完整性檢驗(yàn)的頻率?;鵩地址范圍創(chuàng)建調(diào)用程序的部分的代碼摘要。應(yīng)這樣執(zhí)行應(yīng)用程序以使5所有的OSD函數(shù)調(diào)用非常接近,被稱(chēng)為OSD服務(wù)調(diào)用塊(SIB)。OSD服務(wù)調(diào)用塊必須(在法律上要求)是不普通的,從而防止其它的應(yīng)用程序?yàn)榱俗约旱哪康倪M(jìn)入SIB和使用OSD的API。該SI:B是增加了專(zhuān)用于該調(diào)用應(yīng)用程序的APIs的一組值。將創(chuàng)建的代碼摘要和所期望的代碼摘要進(jìn)行比較。如果它ff湘同,則驗(yàn)證io該應(yīng)用程序否則返回錯(cuò)誤。如果該應(yīng)用辦被驗(yàn)證,則在注冊(cè)的應(yīng)用辦表中增加--個(gè)入口。入口包括應(yīng)用程序的識(shí)別信息(ProcessID)、OSD服務(wù)調(diào)用塊的地址范圍、OSD服務(wù)調(diào)用塊的代碼摘要和PiwilegeBrtVector以及完整性檢驗(yàn)頻率。砂臟討論服務(wù)調(diào)用。在一個(gè)應(yīng)用程序向用操作系統(tǒng)驅(qū)動(dòng)程序注冊(cè)后,該應(yīng)15用程序請(qǐng)求OSD服務(wù)。在每一次調(diào)用它的函數(shù)時(shí),操作系統(tǒng)驅(qū)動(dòng)程序要完成下面的工作。檢驗(yàn)應(yīng)用程序的完整性。從注冊(cè)的應(yīng)用程序表中,基于完整性檢驗(yàn)頻率進(jìn)行。通過(guò)創(chuàng)建應(yīng)用超判勺OSD月艮務(wù)調(diào)用塊的代碼摘要,操作系統(tǒng)驅(qū)動(dòng)程序完成它。然后和所期望的代碼摘要進(jìn)行比較。如果它們相同,則應(yīng)用程序完整性2()為OK,否則返回error。檢驗(yàn)PrivilegeBitWctor以觀察應(yīng)用程序是否具有調(diào)用該函數(shù)的權(quán)力。繼續(xù)執(zhí)行OSD代碼以服務(wù)于該請(qǐng)求。操作系統(tǒng)驅(qū)動(dòng)程序可能依賴(lài)于所請(qǐng)求的服務(wù)調(diào)用安全BIOS程序。調(diào)用OsdRandomAddNoise函數(shù)。這將增加PRNG的不可預(yù)見(jiàn)性。25現(xiàn)在討論應(yīng)用程序的取消注冊(cè)。在適當(dāng)在終止應(yīng)用程序前,它調(diào)用OsdU隱gisterAppHcation.用操作系統(tǒng)驅(qū)動(dòng)旨取消注冊(cè)它它本身。0SD驅(qū)動(dòng)程序冊(cè)滁在注冊(cè)應(yīng)用程序表中的應(yīng)用程序的入口。下面詳細(xì)描述操作系統(tǒng)驅(qū)動(dòng)程序(OSD)的功能。橾作系統(tǒng)驅(qū)動(dòng)程序是能在Wmdow98、WindowsMe以及Wmdows2000下運(yùn)行的WDM內(nèi)核模式驅(qū)動(dòng)3"程序。WDM是基于WindowsNT展的32位設(shè)備驅(qū)動(dòng)模型,具有對(duì)PNP和Powertoagement的額外支持。因?yàn)椴僮飨到y(tǒng)驅(qū)動(dòng)程序并不管理所有的物理設(shè)備,不分配任何硬件資源。操作系統(tǒng)驅(qū)動(dòng)程序?qū)崿F(xiàn)作為--彌塊鄉(xiāng)行。沒(méi)有類(lèi)/小類(lèi)驅(qū)動(dòng)程序?qū)Α.?dāng)在系統(tǒng)中裝入橾作系統(tǒng)驅(qū)動(dòng)程序時(shí),創(chuàng)建一個(gè)FunctionalDeviceOl^iect(FDO)。圖3示出了操作系統(tǒng)驅(qū)動(dòng)程序組件的相互作用。5現(xiàn)在討論注冊(cè)的應(yīng)用程序表創(chuàng)建。操作系統(tǒng)驅(qū)動(dòng)程序保存注冊(cè)的應(yīng)用程序的一個(gè)表?;趹?yīng)用程序的檢驗(yàn)頻率從注冊(cè)的應(yīng)用程序表中,操作系統(tǒng)驅(qū)動(dòng)程序周期性地檢驗(yàn)調(diào)用程序的完整性。它獲得調(diào)用程序的OSD服務(wù)調(diào)用塊的地址范圍,并創(chuàng)建代碼摘要。然后再檢驗(yàn)來(lái)自于注冊(cè)的應(yīng)用程序表的所期望的代碼摘要。i(>現(xiàn)在討論RSA加密函數(shù)。操作系統(tǒng)驅(qū)動(dòng)程序執(zhí)行接口函數(shù)以完成PuhKContamer密封登記,其中PubKContainer是在BI0S、AppContamer密封/開(kāi)封以及S柳edContamer開(kāi)封中創(chuàng)建的。然而,所有的RSA公開(kāi)/私有密鑰算法是在安全BIOS中執(zhí)行的。操作系統(tǒng)驅(qū)動(dòng)勒,調(diào)用BIOS程序以完成容器操作。15操作系統(tǒng)驅(qū)動(dòng)程序?qū)崿F(xiàn)RC6算法函數(shù)以密封/開(kāi)封MKContamer。除了在登記過(guò)程中這是在操作系統(tǒng)驅(qū)動(dòng)程序本身而不是在BIOS中完成的,BIOS執(zhí)行MKContamer處理以保護(hù)該主密鑰?,F(xiàn)在討論OSD接口和APIs。該節(jié)描述操作系統(tǒng)驅(qū)動(dòng)程序與系統(tǒng)內(nèi)核和完全BIOS的接口。該節(jié)也定義20了OSDAPI函數(shù),用戶模式的應(yīng)用程序能調(diào)用它以獲得OSD安全服務(wù)。這里也描M作系統(tǒng)驅(qū)動(dòng)程序應(yīng)掘亍的內(nèi)部函數(shù)。操作系統(tǒng)驅(qū)動(dòng)程序函數(shù)的上邊界接口如下。在WDM模型下,系統(tǒng)I/O管理器通過(guò)創(chuàng)建----個(gè)I/ORequestPacket(IRP)和將它向下發(fā)送給設(shè)備驅(qū)動(dòng)程序-彩寸設(shè)備驅(qū)動(dòng)器提出---個(gè)I/O請(qǐng)求。育S1:過(guò)發(fā)送DEVICEJO一CONTROLIRP25調(diào)用OSD安全服務(wù)。用于:DeviceJOj:oi加l的每一個(gè)句柄程iW供了一偉定的功能。在以下定義Ji作系統(tǒng)驅(qū)動(dòng)禾Mif:10—CONTROL代碼。10CTLJ3SDJ!EGISTEI^APPLICATION。句柄程序向操作系統(tǒng)驅(qū)動(dòng)程序注冊(cè)應(yīng)用程序,并調(diào)用BIOS程序。IOCTL—OSDJJNREGISTER,PLICATION。句柄程序向操作系統(tǒng)驅(qū)動(dòng)程30序未注冊(cè)應(yīng)用程序。IOCTLJ3SDJ3ET—PUBLIC—KEY。句柄程序使用密鑰索引作為參數(shù)從BIOS提取公開(kāi)密鑰,并調(diào)用BIOS程序。IOCTLJ3SD—VERIFY—SIGNEDJ)IGEST。句柄程序驗(yàn)證一個(gè)數(shù)據(jù)i^的RAS數(shù),簽名。需要調(diào)用BIOS程序。5IOCTL—OSD—RANDOM—GENERATE。句柄使用PRNG來(lái)生成一個(gè)隨機(jī)數(shù)字。依賴(lài)于PRNG執(zhí)行,該句柄可能或不可能調(diào)用的BIOS程序。10CTL—OSD一PUBK—CONTAINER—SEAL。句柄使用用密鑰索引指定的公開(kāi)密鑰加密在容器中的數(shù)據(jù)塊并調(diào)用BIOS程序。IOCTL—OSD—SIGNEDCONTAINERJJNSEAL。句柄程序驗(yàn)證容器是否!o真的由驗(yàn)證服務(wù)器標(biāo)記和調(diào)用BIOS程序。IOCTL—OSD一APPj:ONTAINERSEAL。句柄程序用從主密鑰導(dǎo)出的密鑰密封AppContamer并調(diào)用BIOS程序。10CTLJ3SD一APP—CONTAINERJJNSEAL。句柄程序用從主密鑰導(dǎo)出的密鑰開(kāi)封AppContamer并調(diào)用BIOS程序。i5IOCTL—OSD—APP一CONT細(xì)ER一TRANSFER。句,聘密封A卯Contei證,而該AppContamer只能由短于在同-fP臺(tái)跡同平臺(tái)的另-外劇,開(kāi)封'。調(diào)用BIOS程序來(lái)開(kāi)封包括驗(yàn)證信息的SignedContamer。IOCTL—OSD^MKj:ONTAINER一SEAL。句柄程序用主密鑰密封容器。真正的密封是在操作系統(tǒng)驅(qū)動(dòng)程序內(nèi)部完成。調(diào)用BIOS程序來(lái)開(kāi)封AppContamer20以獲得該主密鑰。lOCTLjDSDJvlK—CONTAINERJJNSEAL。句柄flTt;用主密鑰開(kāi)封容器。開(kāi)封是在操作系統(tǒng)驅(qū)動(dòng)程序內(nèi)部完成的。AppContamer調(diào)用BIOS程序來(lái)獲得該主密鑰。IOCTL—OSD—ENROLL—GENERATE—REQUEST。句柄程序調(diào)用BIOS程25序來(lái)生成偽的SMK、消息密鑰和SMK客戶籽數(shù)。IOCTL—OSD—ENROLL—PROCESS—RESPONSE。句柄程序調(diào)用BIOS程序來(lái)生成用于該平臺(tái)的主密鑰。IOCTL—OSE)JNVAUDATE—SMK。句柄程序調(diào)用BIOS函數(shù)來(lái)使由先前的登記中生成的主密鑰無(wú)效。3()IOCTL—OSD—SET—PUBLIC—KEY。句柄函數(shù)在BIOS密鑰表中安裝額外的RSA公開(kāi)密鑰。tt討論操作系統(tǒng)驅(qū)動(dòng)程序的低邊界接口。在操作系統(tǒng)驅(qū)動(dòng)程序的低邊界接口上,操作系統(tǒng)驅(qū)動(dòng)禾聘調(diào)用安全BIOS接口程序來(lái)獲得由低級(jí)BIOS提供的安全服務(wù)。安全BIOS接口是在基于32位目錄服務(wù)接口的基礎(chǔ)上實(shí)現(xiàn)的。當(dāng)5將操作系統(tǒng)驅(qū)動(dòng)IW裝入系統(tǒng)時(shí),它需要搜索安全BIOS入口點(diǎn)。在每--個(gè)程序調(diào)用前,操作系統(tǒng)驅(qū)動(dòng)程序需要基于安全BIOS規(guī)格建立注冊(cè)環(huán)境?,F(xiàn)在討論UserModeAPI函數(shù)。執(zhí)行l(wèi)]serModeAPI庫(kù)。翻:調(diào)用在該庫(kù)中的函數(shù),保密應(yīng)用程序能訪問(wèn)由操作系統(tǒng)驅(qū)動(dòng)程序提供的保密服務(wù)。API函數(shù)如下所述。i()IntOsdRegisterAppiication(INunsignedchar*pAuthorizationBuffer,I—Nunsignedkit*pAuthorkarionBufferLength)該函數(shù)用OSD代碼注冊(cè)應(yīng)用程序。它檢驗(yàn)該應(yīng)用程序是否被驗(yàn)證了,并在OSD保持的注冊(cè)的應(yīng)用程序表中保存應(yīng)用掛,信息。只有從注冊(cè)應(yīng)用禾靜內(nèi)的i5—個(gè)單元或從其它的OSD函數(shù)調(diào)用它ff],其它的OSD調(diào)用才能作用。如果注冊(cè)是成功的,則返回0。否則返回error。PAuthonzationB-uffer和pAuthormjtionBulferLength參數(shù)指定由設(shè)備管理機(jī)構(gòu)服務(wù)器創(chuàng)建的SignedContmner的單元和長(zhǎng)度。該函數(shù)使用IOCTL—OSD—REGISTER—APPLICATION來(lái)調(diào)用OSD服務(wù)。2()tatOsdGetCapabiiities(OUTunsignedstort*pVersion,OUTunsignedshort*pCapabiiities)該函數(shù)返回OSD版本號(hào)以及OSDCR性能和系統(tǒng)m。版本號(hào)定義如下。25第一字節(jié)第二字節(jié)次版本主版本性能WORI)被定義成具有15位。位0表示系統(tǒng)已經(jīng)成功登記。1,成功;0,失敗。位l表示登記類(lèi)型。0,離線登記;〗,在線登記,以及位2-15是預(yù)留的。3o該函數(shù)使用IOCTL—OSD—GET—CAPABELIT正S來(lái)調(diào)用OSD服務(wù)。IntOsdUnregisterApplicatioii0函數(shù)3im登記的應(yīng)用超竽表中刪除調(diào)用i^的入口來(lái)取消登記該調(diào)用程序。該函數(shù)使用IOCTL—OSDJJNREGISTER—APPLICATION來(lái)調(diào)用OSD服務(wù)。IntOsdGe翻-icKey(5INintnKeyliidex,OUTunsigiiedchar傘pModulusBuffei;IN/OUTunsignedint*pModiilusBufferLengthOUTunsignedint*pExponent)如果成功提取存儲(chǔ)在密鑰表的iiKey:fadex行中的RSA公開(kāi)密鑰,則該函數(shù)10返回0。在特定的緩沖器中返回公開(kāi)密鑰的模(1024位數(shù)字),且公開(kāi)密鑰的指數(shù)(3或65537)被放在由pExponent識(shí)別的單元中。由pModulu必ufferLengtb識(shí)別的單元最初被設(shè)為實(shí)際使用的字節(jié)的數(shù)量。返回的非0值表示錯(cuò)誤。首先將密鑰的??截惖骄哂蠱ostSigmficantByte(MSB)的緩沖器中。就從閃速ROM中載入的密鑰來(lái)說(shuō),NkeyMex〗飽始于零荊頃序地增加。在運(yùn)行了OS以后,i5通過(guò)WDL的OSDSecurityModule,負(fù)的nKeyliidex值引用被載入到SMM公開(kāi)密鑰表中的密鑰。該程序可由一個(gè)應(yīng)用程序使用以定位對(duì)應(yīng)于該應(yīng)用程序從X.509驗(yàn)證中了解的公開(kāi)密鑰的nKeyIndex。如果調(diào)用辦不是一個(gè)注冊(cè)的應(yīng)用程序或另-個(gè)OSD程序,該函數(shù)返回一20個(gè)錯(cuò)誤。定期地,該函數(shù)將驗(yàn)證調(diào)用程序的代碼的SHAl摘要自從登記以來(lái)沒(méi)有改變過(guò)。該函數(shù)使用IOCTLJ3SD—GET.PUBLIC—KEY來(lái)調(diào)用OSD服務(wù)。IntOsdRSAVenfySignedDigest(INmtnKeyliidex,25INimsigrsedchar*pSignedDigestBuffer,INunsignedint*pSignedDigestBufferLength.INunsignedchar*pDigestBufferINunsignedmt*pDigestBufferLength)該函數(shù)驗(yàn)證RSA數(shù)字簽名。使用由nKeyliidex指定的公開(kāi)密鑰來(lái)抽取使用30匹配的私有密鑰加l密的所期望的摘要值,'戰(zhàn)L行PKCS#1格式化的RSA公開(kāi)密鑰操作來(lái)加密由pSigiiedDigestBiiffer和pSignedDigestBufferLength指定的數(shù)據(jù)緩沖器。將所期望的摘要與由pSigiiecMgestBulfa和pSignedDiges氾ufferLeiigfli參數(shù)指定的值進(jìn)行比較。如果它們相等,則返回0,否則它返回-一個(gè)非0錯(cuò)誤代碼。如果nKeylndex無(wú)效,貝暇序也將返回一個(gè)錯(cuò)5誤。pSignedDigestBuffer和pSignedDigestBufferLength值能從調(diào)用OsdSHAlFinal,中產(chǎn)生。在pSignedttgestBufe中的數(shù)據(jù)首先存儲(chǔ)在MSB中,并且它必須正好與用于所選定的公開(kāi)密鑰的模一樣長(zhǎng)。如果調(diào)用程序不是一個(gè)登記的應(yīng)用程序或另一個(gè)OSD程序的話,則該函數(shù)io返回-,昔誤。定期地,該函數(shù)將檢驗(yàn)調(diào)用程序的代碼的SHAi摘要自從登記以來(lái)沒(méi)有改變過(guò)。函數(shù)使用IOCTL—OSD—VERIFY—SIGNED—DIGEST來(lái)調(diào)用OSD服務(wù)。IntOsdDigestl]it(OUTDigesContext*pDidgestContext)15該函數(shù)能由任何應(yīng)用程序調(diào)用。它在將用來(lái)計(jì)算SHA1摘要值的調(diào)用程序的地址空間中初始化一個(gè)K5結(jié)構(gòu)。調(diào)用辦能修改該繊結(jié)構(gòu),因此OSD模塊不會(huì)嫩賴(lài)于該結(jié)果的正確性。當(dāng)逸些SHAi程序由一個(gè)應(yīng)用程序使用以驗(yàn)證簽名時(shí),該應(yīng)用程序委托自己來(lái)計(jì)算正確的摘要值然后委托操作系統(tǒng)驅(qū)動(dòng)程序(以及依次是BIOSSMI安^il20塊)用正確的RSA公開(kāi)密鑰彩f算。當(dāng)OSD層注冊(cè)一個(gè)新的應(yīng)用程序時(shí),數(shù)據(jù)結(jié)構(gòu)被保存在操作系統(tǒng)驅(qū)動(dòng),存儲(chǔ)器中,因此操作系統(tǒng)驅(qū)動(dòng)程序能相信該結(jié)果。參見(jiàn)節(jié)8關(guān)于DigesContext數(shù)據(jù)結(jié)構(gòu)的定義。tatOsdD堪estUpdate(INDigesContext★pDigestContext,25INunsignedchar*pBuffer,INunsignedmt*pBufferLength)該函數(shù)能由任何應(yīng)用程序調(diào)用。通過(guò)向它提供由pBufer和pBufaLength參數(shù)指定的數(shù)據(jù)字節(jié),它《妙,一個(gè)調(diào)用程序地址空間中的數(shù)據(jù)結(jié)構(gòu)來(lái)更新SHA1摘要對(duì)象的狀態(tài)。3(!在調(diào)用該程序之前,對(duì)-一個(gè)必須由在緩沖器中的字節(jié)的數(shù)量和填充的舉元是一個(gè)指向該萃元的指針。該程序并不改變那個(gè)單7G,因此長(zhǎng)度可直銜專(zhuān)送而不是通過(guò)弓l用。然而,在該設(shè)計(jì)中所有的緩沖器長(zhǎng)度是通過(guò)引用傳遞的,目的是使接口更一致。5lotOsdDigestFinal(MDigestContext★pDigestContext,OUTunsignedchar求pDiges氾uffer,IN/OUTunsignedint*pDigestBufferLengh)該函數(shù)可由任何應(yīng)用程序調(diào)用。它使用-一個(gè)在調(diào)用程序的地址空間中的數(shù)io據(jù)結(jié)構(gòu)來(lái)計(jì)算可能用0傳遞或?qū)sdDi'gestUpdate的更多調(diào)用的一個(gè)數(shù)據(jù)塊的SHAi摘要的最后結(jié)果。通過(guò)追加瞎充和總長(zhǎng)度(以字節(jié)為單位)以及執(zhí)行最后的摘要操作,它處理保存在該數(shù)據(jù)結(jié)構(gòu)的緩沖器中的任何字節(jié)。結(jié)果放在由pDiges氾uffer和pDigestBufferLengft參數(shù)指定的緩沖器中。在調(diào)用該函數(shù)前,p:Diges氾ufferLengtii指向指定pDigestBuffer的最小尺寸的單元,以及在成功完"成后,該單元被設(shè)為放在緩沖器中的字節(jié)的數(shù)量。對(duì)SHAJ摘要來(lái)說(shuō),結(jié)果將為20字節(jié)長(zhǎng)。IntOsdRandomGenerate(OUTunsignedchar*pDataBuffei;INunsignedint*pDataBufferLength)20該函數(shù)使用操作系統(tǒng)驅(qū)動(dòng)程序的偽的隨機(jī)數(shù)字生成器用由pDataBuflMxngth參數(shù)指定的字節(jié)的數(shù)量來(lái)填充該特定緩沖器。如果pDataBuiferLengtli是20字節(jié)或更少,則執(zhí)行-一次下面的步驟以及將ResuJtBloek的前導(dǎo)字節(jié)復(fù)制到pDataBufe中,其余的則丟棄。如果需要不只20字節(jié),貝,據(jù)需要重復(fù)執(zhí)!TF面的步驟。SMeBlock和Resul艦ock均為20個(gè)25字節(jié)的值。Statefitock表示PRNG的全局態(tài)。Resu旭lock:S畫(huà)(StateBiock11StateMoek)StateBiock=StoteBiock異或SHA1(SMeBlock11Resul氾tock)當(dāng)已經(jīng)填入了pDataButtbr時(shí),通過(guò)調(diào)用OsdRandomAddNoise結(jié)柬。如果調(diào)用f將不是一個(gè)登記的應(yīng)用程序或另----個(gè)OSD程序的話,則該函數(shù)30返回-一W昔誤。定期地,該函數(shù)將檢驗(yàn)調(diào)用程序的代碼的SHA1摘要自從登記以來(lái)沒(méi)有改變過(guò)。函數(shù)使用K3CTLJ)SD—RANDOM—GENERATE來(lái)調(diào)用OS[)服務(wù)。IntOsdPubKContainerSeaJ(INKitnKeytadex,5IN/OUTunsignedchar*pContainerBuffer,IN/OUTunsignedint.*pContainerBufferLength,OUTunsignedchar*pMKBuffer,IN/OUTunsignedmt*pMKBufferLength)該函數(shù)用來(lái)保證傳送到設(shè)備管理機(jī)構(gòu)服務(wù)器的數(shù)據(jù)不能被其他的客戶讀io取。只有設(shè)備管理機(jī)構(gòu)服務(wù)器才知道開(kāi)封該容器的所必需的私有密鑰。PcontainerBi版r參數(shù)指向一'個(gè)保存了-一個(gè)開(kāi)封的PubKCoirt細(xì)er結(jié)構(gòu)的存儲(chǔ)塊。調(diào)用程序應(yīng)填充如在有關(guān)PubKContamer的節(jié)中描述的各種字段。那個(gè)部分還描述了由這個(gè)函數(shù)執(zhí)行的步驟。Nkeyfadex識(shí)別應(yīng)用來(lái)密封該容器的公幵密鑰。!5當(dāng)輸入時(shí)》pContamerBuferLength指向含有適合該容器緩沖器的最大的字節(jié)數(shù)目的單元。當(dāng)輸出時(shí),它包含用在pContamerBuffer中的實(shí)際的字節(jié)數(shù)H。在pContamerBuffer中使用的信息描述了必須被保護(hù)的數(shù)據(jù)的長(zhǎng)度。PMKBuffer和pMKBufferLength參數(shù)指定---個(gè)用AppContamer填充的緩沖器。該AppContemer保護(hù)為PubKConta.raer生成的主密鑰。該信息被用于創(chuàng)建20具有相同主密鑰的MKContamer。衝必周用OsdRandomAddNoise0,該程序結(jié)束。如果調(diào)用程.序不是一個(gè)登記的應(yīng)用程序或另--十OSD程序的話,該函數(shù)返回一tl昔誤。定期地,該函數(shù)將檢驗(yàn)調(diào)用程序的代碼的SHA1摘要自從登記以來(lái)沒(méi)有改變。函數(shù)使用lOCTL—OSD—PUBK—CONTAINER—SEAL來(lái)調(diào)用OSD月艮務(wù)。25IntOsdSignedContainerUnseal(IN/OUT函signecichar*pContainerBuffer,IN/OUTunsigned.int.*pContainerBufferLength)該函數(shù)用,驗(yàn)容器邀否真的由服務(wù)器標(biāo)記。如名無(wú)效,返回一個(gè)錯(cuò)誤。SignedCoiitamer的格式和由該函數(shù)執(zhí)行的步驟是在有關(guān)SignedContamers30的節(jié)中描述的。當(dāng)輸入時(shí),pContainerBufferLength指向含有適合該容器緩沖器的最大的字節(jié)數(shù)目的單元。當(dāng)輸出時(shí),它包含用在i)CoiitainerBuffe.r中的實(shí)際的字節(jié)數(shù)目。用在pCOTtainerBuifer中的信息描述了必須保護(hù)的數(shù)據(jù)的長(zhǎng)度。通過(guò)調(diào)用OsdRandomAddNoise(),該程序結(jié)束。如果調(diào)用程序不是-一個(gè)登5記的應(yīng)用程,或另一個(gè)OSD程序的話,該函數(shù)返回一^tf昔誤。定期地,該函數(shù)將檢驗(yàn)調(diào)用程序的代碼的SHA1摘要自從登記以來(lái)沒(méi)有改變。函數(shù)使用IOCTLJ3SD—SIGNED—CONTAINER—UNSEAL來(lái)調(diào)用OSD服務(wù)。IntOsd皿Con.tainerSea](IN/OUTunsignedchar*pContamerBuffer,i(〕IN/OUTunsignedint.*pContainerBufferLength,INunsignedchm**pMKBuffcr,INunsignedint*pMKBufferLength)該函數(shù)用來(lái)密封容器,因此它只能由知道該主密鑰的其他人開(kāi)封。該密鑰可以是設(shè)備和服務(wù)器知道的主密鑰,也可以是由客戶生成的、并在--個(gè)15PubKConta.ienr中發(fā)送給服務(wù)器的新密鑰。在輸入時(shí),PcoiitamerBuffer參數(shù)指向一個(gè)保存一個(gè)開(kāi)封的MKCoiitainer結(jié)構(gòu)的存儲(chǔ)塊。在輸出時(shí),密封'容器。調(diào)用程序應(yīng)填充如在有關(guān)MKContamer的節(jié)中描述的各種字段。在那個(gè)部分中也描述了由該函數(shù)執(zhí)行的步驟。該函數(shù)為密鑰使用使用客戶常數(shù)。當(dāng)輸入時(shí),pContainerBufferLength指向含有適合該容器緩沖器的最大的字20節(jié)數(shù)目的單元。當(dāng)輸出時(shí),它包含用在pContainerBu他r中的實(shí)際的字節(jié)數(shù)目。用在pContamerBuffbr中的信息描述必須保護(hù)的數(shù)據(jù)的長(zhǎng)度。PMKBuffer和pMKBufferLength參數(shù)指定一個(gè)保存AppContamer的緩沖器。該AppContamer保護(hù)ffil調(diào)用OsdPubKContamerSeal函數(shù)生成的主密鑰。lil調(diào)用OsdRandomAddNoiseO,fiif結(jié)束。如果調(diào)用程序不是一個(gè)登記的25應(yīng)用程序或另----個(gè)OSD程序的話,該函數(shù)返回一個(gè)錯(cuò)誤。定期地,該函數(shù)將檢驗(yàn)調(diào)用程序的代碼的SHA1摘要自從登記以來(lái)沒(méi)有改變。函數(shù)使用IOCTL—OSD—MK—CONTAINER—SEAL來(lái)調(diào)用OSD服務(wù)。IntOsdMKContamerUnseal(IN/OUTunsignedchar*pContainerBuffer,3()IN/OUTunsignedint*pContainerBiifferLength,INunsignedcliar*pMKBuffer,INunsignedmt*pMKBufferLengthINintwasSealedByServer)該函數(shù)將使用給定主密鑰來(lái)開(kāi)封由另一個(gè)實(shí)體密封的容器。在輸入時(shí),5PcontamerBuffer參數(shù)指向一個(gè)保存一個(gè)密封的MKContamer結(jié)構(gòu)的存儲(chǔ)塊。在輸出時(shí),容器是開(kāi)封的。參見(jiàn)有關(guān)MKContamer的節(jié)來(lái)了解開(kāi)封格式。那節(jié)還描述了由該函數(shù)執(zhí)行的步驟。如果參數(shù)wasSealedByServer為零,則由該程序使用的該密鑰使用常數(shù)是客戶常數(shù),否貝U它們是服務(wù)器常數(shù)。有關(guān)密鑰使用常數(shù)詳見(jiàn)該節(jié)。io當(dāng)輸入時(shí),pContainerBuiferLength指向含有適合該容器緩沖器的最大的字節(jié)數(shù)目的單元。當(dāng)輸出時(shí),它包含用在pCaitainerBuffer中的實(shí)際的字節(jié)數(shù)目。用在pCoirtamerBufe中的信息描述了必須被保護(hù)的數(shù)據(jù)的.微。PMKBuffer和pMKBufferLength參數(shù)指定保存AppCont謡er的緩沖器。該AppCoitamer保護(hù)ilil調(diào)用OsdPubkContainerSeal函數(shù)生成的主密鑰。15iffil調(diào)用OsdRandomAddNoise(),該程序結(jié)束。如果調(diào)用程序不是---個(gè)登記的應(yīng)用程序或另一令OSD程序的話,該函數(shù)返回一個(gè)錯(cuò)誤。定期地,該函數(shù)將驗(yàn)證調(diào)用程序的代碼的SHA1摘要自從登記以來(lái)沒(méi)有改變。函數(shù)使用IOCTL—OSD—MK—CONTAINERJJNSEAL來(lái)調(diào)用OSD服務(wù)。IntOsdAppContainerSeaJ(20IN/OUTunsignedchar*f)Contaiiier'Buffei;■IN/OUTunsignedmt*pContamerBufferLength)該函鍋f密封容器,因此它只能由運(yùn)行在相同設(shè)備上的相同的程序開(kāi)封。當(dāng)輸入時(shí),PcontamerBuffer參數(shù)指向一個(gè)保存了一個(gè)開(kāi)封的AppContamer結(jié)構(gòu)的存儲(chǔ)塊。當(dāng)輸出時(shí),容器密封。調(diào)用程序應(yīng)填充如在有關(guān)AppCoiitomer的25節(jié)中描述的各種字段。那節(jié)也描述了由該函數(shù)執(zhí)行的步驟。該函數(shù)為密鑰使用而使用客戶常數(shù)。當(dāng)輸入時(shí),pContamerBu泡rLength指向含有適合該容器緩沖器的最大的字節(jié)數(shù)目的單元。當(dāng)輸出B寸,它包含用在pContamerButer中的實(shí)際的字節(jié)數(shù)目。用在pContame:rBiife中的信息描述了必須被保護(hù)的數(shù)據(jù)的長(zhǎng)度。30M調(diào)用OsdR腿ciomAddNoiseO,該程序結(jié)束。如果調(diào)用程序不是一個(gè)登記的應(yīng)用樹(shù)f或另一個(gè)OSD程序的話,該函數(shù)返回一1H昔誤。定期地,該函數(shù)將驗(yàn)證調(diào)用程序的代碼的SHA〗摘要自從登記以來(lái)沒(méi)有改變。函數(shù)使用IOCTL—OSD—APP—CONTAINER—SEAL來(lái)調(diào)用OSD服務(wù)。IntOsdAppContainerUnseal(5IN/OUTunsignedciiar*pContainerBuffer,IN/OUTunsigneduit*pCottamerBufferLengh,INintwasSealedByServer)該函數(shù)將開(kāi)封由運(yùn)行在該計(jì)算機(jī)上的應(yīng)用程序和特別用于在該計(jì)算機(jī)上的應(yīng)用程序的服務(wù)器密封的容器。招俞入時(shí),PeontamerBiife參數(shù)指向一個(gè)保存io了-一個(gè)密封的AppContamer結(jié)構(gòu)的存儲(chǔ)塊。在輸出時(shí),容器開(kāi)封的。有關(guān)開(kāi)封的格式參見(jiàn)有關(guān)AppCoDtamer的章節(jié)。該章節(jié)還描述由該函Wl行的歩驟。如果參數(shù)wasSealedBySeiw是0,貝ij由該勒,使用的密鑰鵬常數(shù)是客戶常數(shù)。否貝咜們是服務(wù)器常數(shù)。當(dāng)輸入時(shí),pContemerBufibrLengtii指向含有適合該容器緩沖器的最大的字15節(jié)數(shù).目的單元。當(dāng)輸出時(shí),它包含用在pContamerBuffa中的實(shí)際的字節(jié)數(shù)H。用在pContamerBuffbr中的信息描述了必須被保護(hù)的數(shù)據(jù)的長(zhǎng)度。通過(guò)調(diào)用OsdR論domAddN(Mse(),該程序結(jié)束。如果調(diào)用程序不是一個(gè)登記的應(yīng)用程序或另-一個(gè)OSD程序的話,該函數(shù)返回一4St誤。定期地,該函數(shù)將驗(yàn)證調(diào)用程序的代碼的SHAI摘要自從登記以來(lái)沒(méi)有改變。函數(shù)使用20IOCTL—OSD_APP_CONTAINERJJNSEAL來(lái)調(diào)用OSD服務(wù)。lntOsdAppCor!tamerTransfer(IN/OUTunsigneddiar承pCont繊erBulfer,IN/OUTunsignednit*pCorrtainerBufferLength,INunsignedc.har*pAuthonzaticaiBuffer,25INunsignedkit*pAuthonzationBufferLength)該函數(shù)用來(lái)密封容器,因此它只能由運(yùn)行在相同設(shè)備上的不同程序來(lái)開(kāi)封。容器原來(lái)的主人失去了打開(kāi)它的能力。當(dāng)然,原來(lái)的主人能制作該織的各份,并繼續(xù)打'幵和關(guān)閉該備份,但傳遞后的容劉每用不同的密鑰加密,因此只有新的主人才能打開(kāi)它。該特征能由安全鍵盤(pán)讀取模塊使用以便捕捉擊鍵和安全地30將它們傳遞給正確的應(yīng)用程序。當(dāng)輸入時(shí)',Pcont細(xì)erBuffer參數(shù)指向一個(gè)保存一個(gè)開(kāi)封的AppCoMamer結(jié)構(gòu)的存儲(chǔ)塊。當(dāng)輸出時(shí),密封'容器。調(diào)用程序應(yīng)填充如在有關(guān)AppContamer的節(jié)中描述的各種字段。那個(gè)章節(jié)還描述了由該函數(shù)執(zhí)行的步驟。該函數(shù)為密鑰使用而使用客戶常數(shù)。該函數(shù)證實(shí)在為使用密封它之前當(dāng)前擁有該容器的調(diào)用5程序(檢驗(yàn)DeciyptedCodeDigest)是新的擁有者。pAuttonzat織iBuffer和pAuthonzationBufferLeiigth參數(shù)指定由設(shè)備管理機(jī)構(gòu)服務(wù)器創(chuàng)建的SigeedConfainer的單元和長(zhǎng)度。受保護(hù)的容器詳見(jiàn)設(shè)計(jì)文獻(xiàn)。操作碼是OpcOsdAllowTraiisfer,并且容器內(nèi)的W指定程序的AppCodeDigest,其中該程序正調(diào)用該函數(shù),且程序的AppCodeD瞎st能開(kāi)封該容器。容器的ioSealerCodeDigest字段將識(shí)別調(diào)用該函數(shù)的程序。當(dāng)輸入時(shí),pContame迅ufferLength指向含有適合該容器緩沖器的最大的字節(jié)數(shù)目的單元。當(dāng)輸出時(shí),它包含用在pContamerBufe中的實(shí)際的字節(jié)數(shù)目。用在pCoiitamerBiifffer中的信息描述了必須被保護(hù)的數(shù)據(jù)的長(zhǎng)度。通過(guò)OsdRandomAddNo股O,該程序結(jié)束。如果調(diào)用程序不是--個(gè)登記的應(yīng)用程序或15另-"個(gè)()SD程序的話,該函數(shù)返回一佛誤。定期地,該函數(shù)將驗(yàn)證調(diào)用程序的代碼的SHA1摘要自從登記以來(lái)沒(méi)有改變過(guò)。IntOsdE,UGenerateRequest(OUTunsignedehar*pPubKContakerBuffer,IN/OUTunsignedmt*pPubKContaitierBufferLength)2()該函鍋f生成一個(gè)偽SMK、主密鑰和對(duì)話密鑰的客戶籽數(shù)。返回一個(gè)具有主密鑰和對(duì)話密鑰的客戶籽數(shù)的密封PuKContamer以及具有對(duì)話主密鑰的密封的AppCont纖er。將該P(yáng)ubKContamer發(fā)送到設(shè)備管理衫l構(gòu)服務(wù)器。BIOS將在SMRAM中保存客戶籽數(shù)及主密鑰。當(dāng)輸入時(shí),pPubKContainerBuffer和pA即ContamerBuffer指向緩沖器。pPubKContaiiierBufferLength和25pAppContamerBdferLengtli指向具有緩沖器的長(zhǎng)度的-攀元。當(dāng)輸出時(shí),緩沖器將用返回的Containers填充。如果成功,該函數(shù)返回,否則返回error。該函數(shù)使用IOCTL—OSD—ENROLL—GENERATE—REQUEST來(lái)調(diào)用OSD服務(wù)。IntOsdEnroiiProcessResponse(3()INunsignedchar*pCoiitainerBuffer,INi腿gnedmt*pContainerBufferLengtli,OUT麗signecichar*pAppContainerBuffer,IN/OUTunsignedint*pAppContainerBufferLengt!i,OUTunsigneddiar*pPubKContainerBulfer,5IN/OUT固signedBitpPubContakerBufferLength)該函數(shù)調(diào)用SMI程竽來(lái)生成主密鑰并將它保存在SMRAM中。該程序?qū)?chuàng)建一個(gè)具有KeyID(SMK的-散列)和其它數(shù)據(jù)的SealedAppConteuner。當(dāng)輸入時(shí),pContamerBuifer指向一個(gè)緩沖器,該緩沖器存儲(chǔ)由設(shè)備管理機(jī)構(gòu)月艮務(wù)器在在線登記,中返回的MKCoiitamer或者在離線登記過(guò)程中具有.偽h)月艮務(wù)器籽數(shù)的SignedContamer。當(dāng)輸出時(shí),pAppCoiitamerBuffer存儲(chǔ)含有KeyII)的密封的AppContamer。在離線登記過(guò)程中,PpubKContamerBu泡r指向包含月艮務(wù)器籽數(shù)和客戶籽數(shù)的緩沖器。在在線登記過(guò)程中,該指針可以是MJLL。該函數(shù)使用fOCTL—OSD—ENROLL—PROCESS—RESPONSE來(lái)調(diào)用OSD服務(wù)。!5totOsdInvalida.teSMKO該函數(shù)使由先前的登記過(guò)程生成的主密鑰無(wú)效。該函數(shù)使用IOCTL—OSDJNVALIDATE一SMK來(lái)調(diào)用OSD服務(wù)。IntOsdS改PublicKey(INunsignedintnKeylnde'x,2()INunsignedchar*pKeyBuffer,INunsignedmt*pKeyBufferLengt:h)該函數(shù)或者替換由nKeytadex指定的R.SA公開(kāi)密鑰、或在BIOS密鑰表中增力H--個(gè)新密鑰。在輸入時(shí),iiKeylndex指定該密鑰替換或增加。PkeyBiiffer指向密鑰緩沖器。pKeyBufferLength表示該緩沖器長(zhǎng)度。25mit討論內(nèi)部函數(shù)。下面的函數(shù)由OSD驅(qū)動(dòng)樹(shù),在內(nèi)部調(diào)用。它們并不對(duì)用戶應(yīng)用程序公開(kāi)。IntOsdMtialze(void)該函數(shù)初始化操作系統(tǒng)驅(qū)動(dòng)程序的狀態(tài)。在將它裝入該系統(tǒng)后,操作系統(tǒng)驅(qū)動(dòng)程序調(diào)用該函數(shù)。該函數(shù)向BOI:S層注冊(cè)并初始化I)RN'GPRNG是通過(guò)30清零StateBlock、從信號(hào)量文件讀保存的平均信息量、將它轉(zhuǎn)換成二進(jìn)制以及將它傳遞給OsdRandomAddSeed函數(shù)皿f初始化。如果沒(méi)有保存的平均信息量,則操作系統(tǒng)驅(qū)動(dòng)程序執(zhí)行收集平均信息量字節(jié)的慢處理、調(diào)用OsdR皿domAddSeed然后使用OsdRandomSaveEntroy來(lái)將平均信息量保存到信y」y:i:件中。5IntOsdRaiidomAddNoice(void)在每--個(gè)WDL的OSD安全程序的結(jié)尾調(diào)用該函數(shù)。ffiil增加對(duì)攻擊者來(lái)說(shuō)有點(diǎn)不可預(yù)見(jiàn)的^il信息,它幫助增加了全程的PRNG的不可預(yù)見(jiàn)性。用新的上下文調(diào)用OsdDigestlrat。調(diào)用OsdD堪estUpdate傳遞Stat-eBiockl()對(duì)每一個(gè)快速平均信息量源來(lái)說(shuō)調(diào)用OsdD堪estUpdate傳遞詼決速平均信息量值(32位或64位值)在處理完最后-一個(gè)快速平均信息量源后,調(diào)用OsdDigestFmaI生成Resul氾lockStateBlock=StateBiock異或Resul氾lock15該快均信息量包括CPU周期計(jì)數(shù)、如超高速緩存失誤合計(jì)的CPU統(tǒng)計(jì)以及所有的系統(tǒng)時(shí)鈄位。新的StateBlodc是舊的數(shù)據(jù)塊和摘要值的異或的結(jié)果。ffil用異或?qū)⑴f數(shù)據(jù)塊和新數(shù)據(jù)塊混合,我們保證新?tīng)顟B(tài)的不可預(yù)見(jiàn)性低于舊狀態(tài)(假定用于該摘要函數(shù)的普避待性)。相反,等式StateBlock二SHAl(SteteBlock)將導(dǎo)致減少不可預(yù)見(jiàn)性的數(shù)量,因?yàn)镾HA1象導(dǎo)致兩個(gè)輸入值20鵬賴(lài)鵬同的輸出值的隨機(jī)函數(shù)一樣動(dòng)作。有更少可能的具有每一個(gè)ii^的輸出。如果主板或CPU支掙一個(gè)|:RNG,另卩么應(yīng)該包括該衝M。只有增加可快速使用的隨杉L性的數(shù)量。如果調(diào)用程序不是一個(gè)登記的應(yīng)用程序或另一個(gè)OSD程序的話,該函數(shù)返25回一iiS誤。定期地,該函翻每檢驗(yàn)調(diào)用禾iif的千鵬的SHAl摘要自從登記以來(lái)沒(méi)有改變過(guò)。MOsdRandomAddSeed(INunsignedchar*pDataBulfer,INunsignedint傘pDataBiifferLength)30該函數(shù)更新操作系統(tǒng)驅(qū)動(dòng)程序的PRNG的狀態(tài)。它執(zhí)行以下步驟。StateBtock=StoteBlock異或SHAl(StateBlock||pDataBuffer)胃t是說(shuō),初始4t--個(gè)SHA1上下文,并用StateBlock和在指定的緩沖器的字節(jié)更新它。調(diào)用OsdRandomAddNoise05如果調(diào)用程序不是一個(gè)登記的應(yīng)用程序或另一個(gè)OSD程序的話,該函數(shù)返回一1H昔誤。定期地,該函數(shù)將驗(yàn)證調(diào)用程序的代碼的SHAi摘要自從登記以來(lái)沒(méi)有改變。IntOsdRandoi"SaveE他opy()該函數(shù)將來(lái)自于操作系統(tǒng)驅(qū)動(dòng)f舒,的全程P腦G的信息保存到Semaphoreio文件的-一個(gè)字段中。它并不保存原始的StateBlock,因?yàn)樗鼘?dǎo)致操作系統(tǒng)驅(qū)動(dòng)程序重新使用相同的隨機(jī)字節(jié)序列。相反,它保存從當(dāng)前(勵(lì)位)狀態(tài)產(chǎn)生的32字節(jié)(256位)值。從那個(gè)值重新啟動(dòng)PRNG將不會(huì)導(dǎo)致它重新產(chǎn)生相同的字節(jié)?;镜牟襟E如下調(diào)用請(qǐng)求一個(gè)32位隨機(jī)字節(jié)的緩沖器的OsdRandoinGenerate15將這些二進(jìn)制字節(jié)編碼成64位十進(jìn)制ASCII字符在Semaphore文件的一個(gè)字段中保存這些字符調(diào)用OsdRandoniAddNoise0如果調(diào)用辦不是一個(gè)登記的應(yīng)用程序或另一個(gè)OSD程序的話,該函數(shù)返回一個(gè)錯(cuò)誤。定期地,該函翻微驗(yàn)調(diào)用程序的代碼的SHA1摘要自從登記以20來(lái)沒(méi)有改變?,F(xiàn)在討論數(shù)據(jù)格式。下面是對(duì)在本發(fā)明中使用的數(shù)據(jù)結(jié)構(gòu)和格式的描述。AuthorizationBuffer是一個(gè)SignedContaiiier。在該容器中的Data塊在表14中定義。RegisterApplicatoinTable的入口在表15中定義。該表可以實(shí)現(xiàn)作為一頓表。25—F面的問(wèn)題是由本發(fā)明提出的。-一個(gè)問(wèn)題是如何從操作系統(tǒng)驅(qū)動(dòng)程序讀取應(yīng)用程序代碼。只要核心的模式OSD象頂級(jí)驅(qū)動(dòng)程序一樣且在PASSIVE—LEVEL中運(yùn)行,它就能讀取UserMode地址空間。另一個(gè)問(wèn)題是如何獲得調(diào)用程序的入口點(diǎn)。當(dāng)一個(gè)應(yīng)用程序調(diào)用DewceIOCon加l系統(tǒng)函數(shù)B寸,它能從rmg3轉(zhuǎn)換到nng0。以及對(duì)不同的rmg,30iMS皿行不同的堆棧。操作系統(tǒng)驅(qū)動(dòng)程序需要追溯到用戶模式堆棧以獲得入口點(diǎn)。這IM于DeviceIOContol的執(zhí)行,也就是它有多少錢(qián)幀(函數(shù)調(diào)用)。下面的四種可能方法是可行的U)模擬指令,舉例來(lái)說(shuō),通過(guò)異常。(2)直接從User模式而不Jiil過(guò)驅(qū)動(dòng)M5調(diào)用BIOS程序。(3)建立INT門(mén),建立一個(gè)中斷句柄。所有的函數(shù)將由軟件中斷來(lái)調(diào)用。(4)驗(yàn)證和執(zhí)行在OSD空5間中的用戶代碼。該方法將具有如Win32API—樣的相同的問(wèn)題。下面是對(duì)在MFCAVPN產(chǎn)品中的應(yīng)用程序注冊(cè)模塊(ARM)組件的描述。該應(yīng)用程序登記模塊輔助StrongAuthenticationModule(SAM)以提供對(duì)安全AppContamers的訪問(wèn),其中在客戶設(shè)備和能加密的服務(wù)器之間交換該AppContainersom應(yīng)用樹(shù)芊注冊(cè)模塊負(fù)責(zé)為能訪問(wèn)如VPN的服務(wù)器應(yīng)用程序的客戶設(shè)備提供AppContamerKeys。該應(yīng)用程序注冊(cè)模塊通過(guò)一條如SSL的安全通信通道與SAM通信。圖4是說(shuō)明多因子客戶驗(yàn)證登記的框圖。圖4示出了各種模塊是如何與應(yīng)用程序注WI塊相互作用的。15SAM和應(yīng)用SDW朋模塊具有一個(gè)客戶/服務(wù)器聯(lián)系。該應(yīng)用樹(shù),注冊(cè)模塊是一個(gè)將對(duì)不同企業(yè)的SAM公開(kāi)許多服務(wù)的Internet服務(wù)器。它的目的是在特定設(shè)備向特定企業(yè)的登記過(guò)程中,幫助客戶和SAM。最終的結(jié)果是提供具有合適的AppKey的SAM以密封鄰開(kāi)封正在注冊(cè)的設(shè)備中的額l。該操作只能為每一個(gè)設(shè)備/企業(yè)組合執(zhí)行一次。20以下面的次序調(diào)用組件。SSL連接檢驗(yàn)掛科交驗(yàn)合法的SAM通過(guò)一個(gè)SSL連接與應(yīng)用程序注冊(cè)模塊對(duì)話。應(yīng)該重新檢測(cè)與應(yīng)用程序注冊(cè)模塊的連接的其它所有格式。AppContainerKey提供程序?qū)⑹褂盟邮盏膒ubKContainer來(lái)首先在這些企業(yè)上IW亍校檢,然后,準(zhǔn)備最終將返回給S細(xì)的AppCoiit細(xì)ierKey。指向應(yīng)用程序注冊(cè)模塊的入口點(diǎn),包括指定URL,如25AppC()nt訓(xùn)erKeyReque.st,'Http:〃肌Tis.DeviceA她oiity,-eQm/aiiiiZAppCQiitamfflKfflEffliisst,例如,在它的體內(nèi)URL具有由客戶系統(tǒng)產(chǎn)生的PubKConteinerO以及由SAM提供的某些特殊信息的一個(gè)URL?,F(xiàn)在將討論用于ClientCert處理/驗(yàn)證/授權(quán)的操作原理。配置應(yīng)用程序3()注朋模塊web服務(wù)器mod—ssl來(lái)了解設(shè)備管理機(jī)構(gòu)RootCA證書(shū)。Modssl校驗(yàn)當(dāng)前的SAM.CiientCertific加e具有一個(gè)導(dǎo)致設(shè)備管理機(jī)構(gòu)的驗(yàn)證路徑。RootCA。例如S扁.ClientCertificate由SubscnptionManager.CA.cert發(fā)布,該SubscriptionManager.CA—cert由設(shè)備管理機(jī)構(gòu)RootCA證書(shū)發(fā)布。被構(gòu)造在mod—ssl中的最后一個(gè)證書(shū)將成功地終止SAM.CMentCert的校檢。5在驗(yàn)證路徑的校驗(yàn)過(guò)程中,mocLssi將考慮已經(jīng)被配置的CertificateRevocationList(CRL)。每一次SubscriptionManager取消-一個(gè)SAM時(shí),將不得不考慮更新CRL(舉例來(lái)說(shuō),購(gòu)買(mǎi)SAM的企業(yè)將停止)。SubscriptionManager將具有一個(gè)存儲(chǔ)它的CRL的URL。該URL存儲(chǔ)在SAM.Clientcert內(nèi)部。應(yīng)用程序登記模塊將定期地從該URL獲得該文件。i()驗(yàn)證是由設(shè)備管理機(jī)構(gòu)RooCA提供的,而SubscriptionManager,CA:aSAM.ClientCert是由MM構(gòu)造SAM的證書(shū)提供的。如果我們4OTVersign作為RootCA,將不會(huì)是這種情況。驗(yàn)證是由設(shè)備管理機(jī)構(gòu)RooCA、SubscriptionManager.CA以及SubsenptionManagerCRJ的組合提供的如果它具有一個(gè)SAM.CfentCert且它不在15SubscriptionManager.CertificateRevocationList,則驗(yàn)證SAM以聯(lián)系應(yīng)用程序注冊(cè)模塊。SSL連接驗(yàn)證程序。這是從小服務(wù)程序調(diào)用的Java類(lèi)。它向小服務(wù)程序提供一個(gè)API以確認(rèn)指定的連接的驗(yàn)證信息。當(dāng)它存儲(chǔ)有關(guān)SSL連接的信息時(shí),小服務(wù)程序?qū)阉鼈鬟f給至少一個(gè)請(qǐng)求對(duì)象。使用那個(gè)信息,SslComection20Wifier將確定所連接的客戶是否是先前注冊(cè)的那-一個(gè)。連接驗(yàn)證程序記錄任何失敗的嘗試。為調(diào)試目的,記錄成功的嘗試。驗(yàn)證程序返回一寸提供有關(guān)正在連接的客戶的信息的對(duì)象。驗(yàn)證服務(wù)程序也從請(qǐng)求中擭取有效的任何用戶名信息。這由CfentCert管理人員小服務(wù)程序使用。輸入是ServietRequestObject:如果用戶名/口令被用來(lái)構(gòu)成該請(qǐng)求,則它25存儲(chǔ)SSL客戶證書(shū)信息以及有關(guān)用戶的信息。輸出是SslCoraiectionAferifier對(duì)象具有如IsSslOKQ、GeCertlnfoO、IsUserAuthentieatedO和GetUseiinfo()的方法。該SslCo皿ectionVerifier訪問(wèn)x5()9ClientCertificate的所有字段。APpContamerKeyProvider小l路程序?yàn)閼?yīng)用程序注冊(cè)模塊分發(fā)密鑰。它是ARM模塊的主要入口點(diǎn)。它調(diào)用SslConnectionVenfer。從它的輸入流,它接30收存儲(chǔ)有關(guān)發(fā)送客戶設(shè)備的pubkeO的SAM的信息的pubkc()。該SAM信息有一個(gè)與SslCo誦eetionVenfier對(duì)象了解的信息一致的enterpnse字段。調(diào)用Enforcer,將所有來(lái)自于SsHnfier的信息和來(lái)自于pubkc()的信息傳遞給它?;贓nforcer的結(jié)果,然后該小服務(wù)程序從加密機(jī)請(qǐng)求一個(gè)AppContamerKey。在pubke()中的KeyID+ACD將被傳遞給該加密機(jī)。通過(guò)SSL連接,將5AppContemerKey返回給SAM。輸入是具有剤渚--個(gè)KeyID的pubkc()、企業(yè)信息以及ACD的輸出流(InpitSteam)(來(lái)自于小服務(wù)程序API)。請(qǐng)求對(duì)象(來(lái)自小服務(wù)樹(shù)t:API)存儲(chǔ)有關(guān)當(dāng)前連接的信息(SSL,......)。輸出在輸出流(OutputSteam)(來(lái)自小服務(wù)程序API)上返回--個(gè)AppContamerKey、并在數(shù)據(jù)庫(kù)中修改使用的許可的i()數(shù)iioSubscnptioiiManager收集StrongAuthenticationModule(SAM)所要求的fi息以管理許可。這些許可控制可由SAM從在MFCA產(chǎn)品中的Appfcat腿RegistrationModule(ARM)請(qǐng)求的AppCoiitamersKeys的數(shù)量。應(yīng)用程序注冊(cè)模塊負(fù)責(zé)為已經(jīng)被激活可訪問(wèn)VPN的客戶設(shè)備提供AppContaiiierKey。15被允許將許可證出售給購(gòu)買(mǎi)SAMS的公司的銷(xiāo)售人員,通常使用到SubscriptionManager的Web用戶接口。該接口收集將由應(yīng)用程序注冊(cè)模塊使用的有關(guān)公司、許可證號(hào)、有效期、銷(xiāo)售人員ID以及SAM標(biāo)識(shí)符(CfentCertificateSigningRequest)的信息以確定哪個(gè)SAM請(qǐng)求一個(gè)AppContemerKey。簽名管理程序生成一個(gè)SAM將載入和驗(yàn)證的防止竄改(帶標(biāo)記和/或加20密)的文件。該文件包括簽名信息(即允許使用的許可證號(hào),SAM的容許的IP地址......)除SubscriptionInfomiationFile(SIF)外,簽名管理程序也返回帶標(biāo)記的SAM的標(biāo)識(shí)符。對(duì)許可信息和用戶證書(shū)的數(shù)據(jù)庫(kù)來(lái)說(shuō),簽名管理程序是一個(gè)前端處理程序。德b用戶接口使用用戶證書(shū)驗(yàn)證許可零售商。它要求以下有關(guān)公司的信息,零25售商正獲得用于包括公司名稱(chēng)、公司聯(lián)系信息、許可證號(hào)、許可有效期(從開(kāi)始日期到結(jié)柬日期)、SAM(將SubSeriptioiiFile賦值給該SAM)的IP或MAC地址、SAM的Cl.ientCertificateRequest(CRS)以及Reseller標(biāo)識(shí)符的許可。簽名管理程序生成被安全地轉(zhuǎn)送到安裝SAM的人員的以—F項(xiàng)目帶標(biāo)記的ClientCertifica.te、以及防止竄改的SubscriptionIrfonna.tionFile(SIF)。具有由30SIFSmgmgUtility(SSU)標(biāo)記的SIF將完成防止竄改。SubscriptionManager將在內(nèi)部用以下的信息更新數(shù)據(jù)庫(kù):取消SAM的ClientCertiieation所要求的信息、有關(guān)SAM的信息(許可證號(hào)、有效期、用于許可證更新的聯(lián)系信息......)、以及有關(guān)購(gòu)買(mǎi)SAM的公司的信息,它可能公司擁有的唯一SAM。5簽名管理程序的操作原理如下。首先在一個(gè)零售商/通道合伙人和一個(gè)設(shè)備管理機(jī)構(gòu)之間,-一份契約。然后在設(shè)備管理機(jī)構(gòu)由某人使用Lieense《seller信息編輯器/瀏覽器來(lái)創(chuàng)建--一個(gè)將被授權(quán)的最初的Reseller/Channel,aitaer帳戶以出售許可給SAMs。這產(chǎn)生一個(gè)與零售商/通道合伙人取得通信的用戶/口令。該零售商/通〗()道合伙人安排在某一公司安裝S扁。AS扁信息編輯器/瀏覽器,并輸入公司信息和許可信息。公司完成安裝SAM:公司已經(jīng)分配了一個(gè)IP地址給SAM,并己經(jīng)生成了一個(gè)CUentCertificateS直gmngRequest。該信息被傳遞^#售商。然后該零售商(或者具有OTP的公司)返回到SAM信息編輯器/瀏覽器,并輸入SAM和■5CSR的IP地址。月艮務(wù)器生成未標(biāo)記的SIF,并將它發(fā)送給SIFSigningUtiMty。SSU立即返回該帶標(biāo)記的SIF。該SAM的CSR變?yōu)橛沙洚?dāng),Root設(shè)備管理機(jī)構(gòu)的中間CA的SubscriptionManager標(biāo)記的真實(shí)的ClientCert。沒(méi)有OTP,零售商將SIF和ClientCertification傳遞給公司。然后該公司將20SIF安裝到SAM知道的目錄。Cert安裝到他們的SSL模塊中?,F(xiàn)在公司準(zhǔn)備請(qǐng)求AppContameii(eys?,F(xiàn)在詳細(xì)討論模塊組件。SSL連接驗(yàn)證程序是---個(gè)從小服務(wù)程序調(diào)用的jaw類(lèi)。它為小服務(wù)程序魂供--個(gè)API以確認(rèn)給定連接的驗(yàn)證信息。當(dāng)它存儲(chǔ)有有關(guān)SSL纖的信息時(shí),小,艮務(wù)糊芋將它傳遞給至少一彌求對(duì)象。25使用該信息,SslCo:隨ectionVenfier確定所連接的客戶是否以前注冊(cè)過(guò)。可能這種驗(yàn)證將被限定到皿連接jffi3tSSL以及客戶有證書(shū)。這種簡(jiǎn)化是因?yàn)橛卸嗌貯pache+moctsd將被配置他ff識(shí)接收來(lái)自于具有已知證書(shū)的客戶。該連接驗(yàn)證程序記錄所有失敗的嘗試。為跟蹤目的,記錄成功的嘗試。該驗(yàn)證返回一個(gè)提供了有關(guān)正在連接的客戶(零售商的計(jì)算機(jī))的信息的對(duì)象。30該驗(yàn)證程序也攫取來(lái)自于請(qǐng)求的任何有效的用戶名信息。這.將用來(lái)檢驗(yàn)真實(shí)的授權(quán)的零售商正在使用他的計(jì)1而不是某一計(jì)算機(jī)。i繊入是ServktRequestOyect,如果娜用戶名/口令來(lái)產(chǎn)生請(qǐng)求,則該ServletRequest.Object存儲(chǔ)SSL客戶證書(shū)信息和有關(guān)用戶的信息。該輸出是一個(gè)Ssleo皿ectionVenfer對(duì)象具有象IsSslOK()、GetCert!tifo()、5IsUserAuthenticated()和GetUserinfo()--樣的方法。SAM信息編輯器/瀏覽器模塊允許添加/編輯/刪除等許可信息。例如,它允許生成有關(guān)每一個(gè)公司、每一個(gè)SAMIP/MAC地址、每-一個(gè)將期滿的許可的報(bào)吿。用有效的零售商信息(用戶名/口令、客戶證書(shū))驗(yàn)證所有的操作。SIF生成器模塊生成一個(gè)Subsc叩t腿Mbn麓tionF!le。將所生成的SiF發(fā)送i()給SIFSigningUtility(SSU)。該SSU將使用私有密鑰來(lái)標(biāo)記文件,.¥該私有密鑰匹配的公開(kāi)密鑰與SAM軟件-一起發(fā)送。這是唯---一個(gè)SIF標(biāo)記的密鑰對(duì)。SIF是一個(gè)人們可讀的文件。在支程中,允許IT部門(mén)全體人員立即訪問(wèn)聯(lián)系信息、及時(shí)間、IP地址等。SIF包括公司名稱(chēng)、公司聯(lián)系信息、用于有效許可的聯(lián)系、許可證號(hào)、許可有效期(從開(kāi)始日期到結(jié)束日期)、零售商15標(biāo)識(shí)符、SAM的IP或MAC地址(將SubscriptionRle賦給SAM)。CertificateS響皿gRequest(CSR.)句柄模塊負(fù)責(zé)創(chuàng)建X509兼容的用Root設(shè)備管理機(jī)構(gòu)的密鑰標(biāo)記的Certificates。如果已經(jīng)提交請(qǐng)求的零售商是正確地驗(yàn)證過(guò)的(用戶名/口令和客戶證書(shū)已驗(yàn)證),那么它只標(biāo)記證書(shū)。它要求SAM信息、相應(yīng)的CSR以及聯(lián)系信息以提醒SAM的客戶證書(shū)的有效期。CSR在20某一字段中包含計(jì)1IP地址。因此SAM安裝者負(fù)責(zé)用在某一字段中的IP地址生成-…個(gè)客戶證書(shū)。輸出是可用在SAM計(jì)算機(jī)上的X509客戶證書(shū)。Openssl是在SAM和簽名管理程序上處理證書(shū)事件的基礎(chǔ)工具。該模塊也處理己公布的SAMCiientCertiieates的撤消。該撤消信息將被放入一個(gè)CertificateRevoeation25List(CRL)中。該列表能用Opensll進(jìn)行處理。通過(guò)在該服務(wù)器上的HTTP,該CRL文fW任何人下載都是有效的。許可期滿檢測(cè)程序定期地掃描許可數(shù)據(jù)庫(kù),并給在簽名過(guò)程中提供的聯(lián)系發(fā)送email。SAM證書(shū)期滿檢測(cè)程序定期地掃描所生成的SAM客戶證書(shū)的數(shù)據(jù)庫(kù),并給在CSR雖中提供的聯(lián)系發(fā)送eamil。30License-Resetter信息編輯器/瀏覽器向該系統(tǒng)注冊(cè)零售商,并向他們提供用于他們的瀏覽器的CUentCertificate,或僅僅是用戶名和口令或這兩者。它也允許,鵬在銷(xiāo)售過(guò)程中零售商執(zhí)行得有多好。SIFS,mgLMUty(SSU)為設(shè)備管理機(jī)構(gòu)提供了一個(gè)簡(jiǎn)單的方法以便訪問(wèn)簽名信息。在最小值,SSU標(biāo)記SIF。5應(yīng)用程序現(xiàn)在討論Miilt^FactorClientAuthentication該系統(tǒng)的---個(gè)應(yīng)用程序是用于訪問(wèn)一個(gè)虛擬專(zhuān)用網(wǎng)絡(luò)(VPN)的多因子客戶驗(yàn)證應(yīng)用程序(MFCA)。驗(yàn)證過(guò)程的第一部分是一個(gè)用戶名/口令對(duì)(用戶知道的東西)。第二部分將是加密啟動(dòng)的設(shè)備的驗(yàn)證,基于BIOS或使用軟件(用戶具有的軟件)。!o在一個(gè)M:FCA的簡(jiǎn)單版本中,SM傳統(tǒng)的、經(jīng)過(guò)RADIUS到驗(yàn)證服務(wù)器的傳輸實(shí)現(xiàn)口令驗(yàn)證,其中該驗(yàn)證服務(wù)器使用一個(gè)合法的口令數(shù)據(jù)庫(kù)。在首選實(shí)施例中,使用SPEKE口令驗(yàn)證協(xié)議增強(qiáng)該過(guò)程??诹铗?yàn)證協(xié)議在公開(kāi)號(hào)為US^^的美國(guó)專(zhuān)利中公開(kāi)了。在這兩種情況下,MFCA為設(shè)備管理機(jī)構(gòu)提供一個(gè)新的裝置。15系統(tǒng)包括下面的軟件組件。莊驗(yàn)證VPN服務(wù)器的客戶設(shè)備上運(yùn)行的客戶軟件組件。軟件必須是能加密的。在企業(yè)受保護(hù)的網(wǎng)絡(luò)內(nèi)部,我們保護(hù)的運(yùn)行在VPN的一個(gè)或更多服務(wù)器計(jì)穀幾上的軟件組件。這將由購(gòu)買(mǎi)WN產(chǎn)品的公司的IT部門(mén)管理。運(yùn)行在連接到因特網(wǎng)、并訪問(wèn)KID/SMK對(duì)的數(shù)據(jù)庫(kù)的設(shè)備管理機(jī)構(gòu)服務(wù)20器(可能由由管理秒,而不是企業(yè)管理)上的軟件組件。討論一個(gè)增強(qiáng)的V〖)N客戶時(shí)提供一個(gè)MFCA概述。客戶設(shè)備通常是向設(shè)備管理機(jī)構(gòu)登記的一個(gè)Windows計(jì)算機(jī)。在登記以后,客戶設(shè)備具有---十有效的主密鑰。在首選實(shí)施例中,它具有固件支持,在BIOSROM中實(shí)現(xiàn)了本發(fā)明柳[l密特征,盡管可能使用了只有軟件的版本。計(jì)算機(jī)通常是由客戶VPN25軟件的用戶所擁有,其中該用戶想通過(guò)VPN網(wǎng)關(guān)訪問(wèn)公司的受限網(wǎng)絡(luò)。用戶通常通過(guò)正規(guī)的Internet服務(wù)提供器(ISP)訪問(wèn)Intemet。在該ISP和VPN網(wǎng)關(guān)之間的網(wǎng)M;是值得信賴(lài)的,因此這兩者之間的通信必須是安全的。VPN力-案的首要H的是提供從客戶設(shè)備到VPN網(wǎng)關(guān)的端到端加密安全。MFCA客戶包括由本發(fā)明實(shí)現(xiàn)的加密核心技術(shù)和一個(gè)與標(biāo)準(zhǔn)的VPN客戶30軟件合作的客戶應(yīng)用程序以建立與服務(wù)器的安全連接。MFCA結(jié)構(gòu)要求計(jì)算機(jī)在VPN登錄前進(jìn)行登記。在它第一次運(yùn)行時(shí),客戶應(yīng)用程序發(fā)現(xiàn)客戶先前是否登記過(guò)。如果先f(wàn)r^有登記,則客戶應(yīng)用程序執(zhí)行登記,而且只有該過(guò)程完成后,才會(huì)繼續(xù)MFCA操作的其余部分。EnterpriseVPN網(wǎng)關(guān)和StrongAuthenticationModule(SAM)是由本發(fā)明提供5的。MR,A啟動(dòng)的企業(yè)具有一個(gè)連接在Internet和保護(hù)的企業(yè)網(wǎng)絡(luò)之間的VPNGateway服務(wù)器。VPN通常包括許多相互合作的計(jì)OT似驗(yàn)證訪問(wèn)禾,塞靠不住的通信量。通常他們與防火墻協(xié)力工作。最重要的計(jì)算機(jī)是VPN網(wǎng)關(guān)和StrongAuthenticationModule(SAM)服務(wù)器。ioSAM位于共同的網(wǎng)絡(luò)中且基本上是可飾的。在某些情況中,這意味著在VPN網(wǎng)關(guān)和SAM服務(wù)器之間的通信不需要加密。對(duì)這兩臺(tái)計(jì)算機(jī)的-一個(gè)簡(jiǎn)單的安全校驗(yàn)是校驗(yàn)另一令的IP地址,在共同的網(wǎng)絡(luò)內(nèi)部所做的路由選擇是可信任的。SAM是在為---^#殊的用戶和設(shè)備管理杉胸訪問(wèn)內(nèi)部網(wǎng)方面與VPN網(wǎng)關(guān)15相互作用的服務(wù)器軟件。它訪問(wèn)登記過(guò)的設(shè)備的"數(shù)據(jù)庫(kù)",該設(shè)備也將被允許訪問(wèn)。在SAM代碼和數(shù)據(jù)庫(kù)之間的接口將盡可能地開(kāi)放,以允許在它下面放置不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)(例如,通過(guò)使用ODBC或LDAP)。核心應(yīng)當(dāng)同SAM-Database連接一起利用,該SAM4)atobase可能使用SecureSocketLayer(SSL)協(xié)議來(lái)實(shí)現(xiàn)。2(>SAM包含密封和開(kāi)封AppContaiiiers的代碼。SAMServer也可能包含許可政策(設(shè)備有權(quán)訪問(wèn)網(wǎng)絡(luò)期滿、允許進(jìn)入的設(shè)備號(hào)等等)的I鵬。加密函數(shù)可倉(cāng)統(tǒng)BIOS-ROM和只有軟件的格式中提供。另外,在確定設(shè)備/用戶對(duì)是否應(yīng)該允許訪問(wèn)(兩因子驗(yàn)證的第一部分)方面,這些計(jì)算機(jī)、附加的硬件和/或軟件可能Gateway和SAM合作。用在25工產(chǎn)中的不同的標(biāo)準(zhǔn)和產(chǎn)品來(lái)執(zhí)行該函數(shù),包括已經(jīng)訪問(wèn)過(guò)用戶名和口令的數(shù)據(jù)庫(kù)的RADIUSB勝器以及用于確定基于政策的訪問(wèn)權(quán)力的各種系統(tǒng)。SAM組件也可能被用來(lái)實(shí)施軟件許可計(jì)劃。該SAM組件典型地由擁有VPN的企業(yè)的IT部門(mén)而不是由其它的管理機(jī)構(gòu)管理。然而,它可能與曾出售給該企業(yè)有權(quán){頓MFCA軟件的其它的管理機(jī)構(gòu)具有信托關(guān)系。30許可政策為企業(yè)的整個(gè)帳戶或?yàn)閱蝹€(gè)的客戶帳戶(例如,有人可能丟失他的膝上型電腦,以及我們不得不刪除該設(shè)備)考慮到期滿時(shí)間。根據(jù)由系統(tǒng)管理部門(mén)制定的政策,SAM執(zhí)療這些撤消和終止。許可能基于將被允許訪問(wèn)數(shù)據(jù)庫(kù)的設(shè)備的最大數(shù)量。許可函數(shù)周期性地檢查和S鵬正在發(fā)生的事清。這—SJt激及SAM在正?;A(chǔ)上將信息發(fā)送^#主5特定單元。許可管理最好是從基于遠(yuǎn)程Web的工具完成。Application注冊(cè)模塊(ARM)是一個(gè)對(duì)不同企業(yè)的SAMs公幵服務(wù)的Internet服務(wù)器。它的目的是在向用特定企業(yè)注冊(cè)恃定設(shè)備的過(guò)程中幫助用戶和SAM。最終的結(jié)果iyf供具有適當(dāng)?shù)腁ppKey的SAM來(lái)密封和開(kāi)封』Bt注冊(cè)的設(shè)備內(nèi)的容器。io在被稱(chēng)為"MFCARegistration"的鵬中,對(duì)每一個(gè)設(shè)備/企業(yè)聯(lián)合,只需要執(zhí)行該操作一次。該應(yīng)用樹(shù)芊注冊(cè)模塊月艮務(wù)器包含-一些前端服務(wù)器一估計(jì)可能但并不是必不可少的、WebServer(s)—與存儲(chǔ)信息的后端數(shù)據(jù)庫(kù)通信,其中該信息說(shuō)明了那時(shí)用于不同公司的有效許可、他們所期望的證書(shū)是什么等等ri5Af在此完成許可強(qiáng)制。為特殊的企業(yè)基本跟蹤注冊(cè)用戶的數(shù)量就是--一個(gè)例子。應(yīng)用程銜主冊(cè)模塊服務(wù)行許可強(qiáng)制和許可記錄和檢查,但并不跟蹤單個(gè)的登錄。應(yīng)用程序注冊(cè)模塊也訪問(wèn)設(shè)備管理杉l構(gòu)"Enciypti纖Sen/eA該驗(yàn)證機(jī)構(gòu)存儲(chǔ)在登記過(guò)程中生成的HD/SMK表。l纖Web的遠(yuǎn)程接口處理這些企業(yè)帳戶。20作為對(duì)應(yīng)用程序注冊(cè)模塊的增強(qiáng)的應(yīng)用,通過(guò)Web接口(Subsc叩tioiiMaa寧),自動(dòng)進(jìn)纟豫據(jù)輸入,該接口允許零售商、通道合伙人以及IT管理人員輸入適當(dāng)?shù)男畔?lái)激舌SAM與中心ARM數(shù)據(jù)庫(kù)協(xié)作。在下面的表中列出了調(diào)用的Mli。過(guò)程名說(shuō)明25MFCASubscription為SAM生成許可信息的aii,出售許可證的銷(xiāo)售人員通過(guò)登錄擁有稱(chēng)為Subsenptio.nManager的服務(wù)器的設(shè)備管理機(jī)構(gòu)來(lái)初始化簽名過(guò)程。該銷(xiāo)售入員輸入有關(guān)購(gòu)買(mǎi)S扁的公司的信息請(qǐng)求多少許可、SAMsClientCertifieate、以及其它3()信息,......該過(guò)程的輸出是SubscriptionInformationFile(SIF)以及-一個(gè)ClientCertificate(參見(jiàn)CertificatedEnrollment客戶設(shè)備處3里獲得一個(gè)SMK、并能使用加密月艮務(wù)的過(guò)程。該ffl涉及客戶設(shè)備和設(shè)備管理機(jī)構(gòu)5EnrollmentServe"登記需要客戶設(shè)備含有加密的核心函數(shù),在BIOS或EmulationAPI中。MFCARegistration客戶設(shè)備獲得注冊(cè)符來(lái)《OT特殊企業(yè)的VPN的服務(wù)的過(guò)程。它涉及客戶、SAM服務(wù)器以及一些io與RAMServer的相互作用的服務(wù)器。注冊(cè)要求客戶設(shè)備先前已經(jīng)向設(shè)備管理t—購(gòu)登記過(guò)。這種注冊(cè)的最終目的是提供具有適當(dāng)?shù)腁ppKey的SAM以便密封和開(kāi)封將與客戶設(shè)備交換的15APPContainer。Login客戶設(shè)備獲得訪問(wèn)企業(yè)的內(nèi)部網(wǎng)的過(guò)程。這是MFCA想完成的最后的服務(wù)。它涉及在客戶設(shè)備和SAMServer之間的相互作用,但不要求與設(shè)備管理機(jī)構(gòu)的額外的相互作用。SAMServer不2()得不驗(yàn)證作為具有VPNGateway的兩因子驗(yàn)證的第二階段的客戶設(shè)備。它使用AppContainer除JlM以夕卜,不得不配置VPN客戶、SAM:Server以及ARMServer以便能成功地分發(fā)適當(dāng)?shù)腁ppKeys。25注冊(cè)過(guò)程包括以下兩個(gè)步驟(1)與特殊的計(jì)算教-一起工作的AWKey的傳輸,從設(shè)備管理機(jī)構(gòu)到劍門(mén)的公司的SAM月艮務(wù)器,以及(2)生成CustomerAppKey的CustomerSecret的傳輸,從SAM服務(wù)器到客戶。AppKey是如下的--個(gè)函數(shù)(1)正在注冊(cè)的計(jì)-爾幾的保密主密朗(只有設(shè)備管理機(jī)構(gòu)和計(jì)算機(jī)本身知道),以及(2)應(yīng)用程序的操作系統(tǒng)驅(qū)動(dòng)程序(VPN30應(yīng)用禾ii芋,在本實(shí)例中)AppKey是下面的加密操作的結(jié)果Appe"truncl28(S匿(SM11ACD)).SAM服務(wù)器生成一個(gè)附加的128位的CustomerSecret,它保持來(lái)自于其它DeviceAuthorities的秘密,并用下面的操作計(jì)算CustomerAppKey:5CustomerAppKey=trunc128(SAH1(AppI(ey11CustomerSecret》.S扁月艮務(wù)器存儲(chǔ)該值(或,可選地分別存儲(chǔ)App.Key和CustomerSecret),并將CustomerSecret發(fā)it^客戶??蛻粲涗浽撁孛?盡管因?yàn)樗潜C苤髅荑€而不是--個(gè)"大秘凌r)。SAM也向客戶發(fā)送一個(gè)可能存儲(chǔ)一個(gè)用于LogmCoimter機(jī)構(gòu)的起始值的密封的AppContamer。在-一個(gè)替換實(shí)施例中,安全詢(xún)問(wèn)/應(yīng)答i()機(jī)構(gòu)代替了LoginCounter機(jī)構(gòu)。注冊(cè)過(guò)程是基于AppContainers??蛻糸_(kāi)封先前收到的AppContamer,增大注冊(cè)計(jì)數(shù)、重新密封該容器,并將它發(fā)送給作為VPNAuthentiea.ti.onProtocol—部分的VPNGateway。S細(xì)服務(wù)翻到該容器,打開(kāi)它荊f注冊(cè)計(jì)數(shù)與最后記錄的值謝亍比較,如果它在可接受的范圍內(nèi),貝鵬準(zhǔn)許調(diào)用客戶訪問(wèn)企業(yè)的15內(nèi)部網(wǎng)。在注冊(cè)的--個(gè)替換過(guò)程中,客戶從VPNGageway接收-一個(gè)隨機(jī)的詢(xún)問(wèn)值,開(kāi)封先前所接收的該AppContamer,將CustomerSecret和該詢(xún)問(wèn)值與--個(gè)單向函數(shù)結(jié)合(通常使傭一個(gè)加密散列函數(shù),如SHA1),以及將單向函數(shù)的結(jié)果返回給作為VPNAuthenticationProtocol—部分的VPNGatewa.y。20SAM服務(wù)器獲得該結(jié)果,并將它與它自己的詢(xún)問(wèn)值和CustomerSecret的雖向函數(shù)的計(jì)算結(jié)皿亍比較。如果SAM服務(wù)器的計(jì)算結(jié)果與客戶的結(jié)果匹配,則VPNGateway將準(zhǔn)許調(diào)用客戶訪問(wèn)公司的內(nèi)部網(wǎng)。MFCA的特定實(shí)現(xiàn)可能將特定VPN軟件產(chǎn)品作為目標(biāo)。某些VPN賣(mài)主提供允許其它公司在客戶機(jī)劍艮務(wù)器中定制他們的產(chǎn)品的APIs,這些賣(mài)主也具有25為已寫(xiě)的軟件的驗(yàn)證程序以便與這些APIs相互作用。MFCA可能以附加格式或以具有VPN賣(mài)主產(chǎn)品的整體格式遞送?,F(xiàn)在詳細(xì)敘述所涉及的過(guò)程。登記對(duì)MFCA安裝是首要,??蛻粼O(shè)備必須具有核心加密系統(tǒng),它包括操作系統(tǒng)驅(qū)動(dòng)程序(OSD)、訪問(wèn)BIOS和硬件的低級(jí)驅(qū)動(dòng)程序,而且設(shè)30備必須已經(jīng)登記和存儲(chǔ)了一個(gè)有效的主密鑰。登記操作可能作為VPN軟件安裝的一部分來(lái)執(zhí)行。也說(shuō)是說(shuō),當(dāng)客戶第一次試圖訪問(wèn)WN時(shí),如果客戶設(shè)備還沒(méi)有登記,它能拋f登記。當(dāng)他第---次開(kāi)始客戶應(yīng)用程序時(shí),這將作為初始化用戶經(jīng)驗(yàn)的-部分發(fā)生。不需要用戶輸入。5客戶安裝涉及用戶接收的軟件,該軟件包含可能包括用于MFCA安裝和增強(qiáng)的MFCA注冊(cè)驗(yàn)證的附加代碼的已存在的V1)N'Client的一個(gè)增強(qiáng)格式的MFCAVPNCMent。最好,由VPN賣(mài)主的客戶SDK提供的APIs應(yīng)該允許MFCA代碼與他們的數(shù)據(jù)庫(kù)靜態(tài)*1。理論—匕MFCA產(chǎn)品的相關(guān)部分是計(jì)算的ACD的范圍內(nèi)。io現(xiàn)在討論月艮務(wù)器安裝過(guò)程。StrongAuthenticationModule(SAM)配置安裝用戶/設(shè)備帳戶。Sffl常由企業(yè)系統(tǒng)管理人員拋f。SAM與VPN和/或與驗(yàn)證服務(wù)器結(jié)合。下面有許多可用的選項(xiàng)SAM可能是一個(gè)用于已存在的驗(yàn)證服務(wù)器的插件。在驗(yàn)證服務(wù)器和SAM之間的接口是一個(gè)API。SAM是一個(gè)服從某些端口、理解用戶協(xié)議或RADIUS15的I艮務(wù)器。驗(yàn)證服務(wù)器和SAM之間的接口是一個(gè)網(wǎng)絡(luò)協(xié)議。VPNs和RADIUS月艮務(wù)器也可高度配置,允許許多的配置。RADIUS月艮務(wù)器(萬(wàn)----它是現(xiàn)存的)依賴(lài)于政策、用戶和口令等驗(yàn)證客戶。SAM負(fù)責(zé)驗(yàn)證設(shè)備。-一個(gè)簡(jiǎn)單的實(shí)施例包括獨(dú)立的RADIUS服務(wù)器,并能被用來(lái)直接與網(wǎng)關(guān)、或者充當(dāng)代理的另一個(gè)驗(yàn)證服務(wù)器對(duì)話。該配置用戶接20口(Ul)將獨(dú)立于其它任何驗(yàn)證月艮務(wù)器。VPNGateway/RADIUS服務(wù)器配置。管理員配置一個(gè)用戶名/口令對(duì)。這將是"永久的"用戶注冊(cè)的用戶名/口令對(duì)。該過(guò)程并不涉及任何設(shè)備管理杉,,并且是獨(dú)立于MFCA的"通常的"單因子配置。SAM配置。管理人員配置用戶名、AppiieationDeviceII)(ADID)以及25RegistrationPassword。在替換實(shí)施例中,管理人員還可能創(chuàng)建用戶和設(shè)備之間的關(guān)聯(lián)以表明有效的結(jié)合、P艮制用戶從特定的計(jì)勤丄驗(yàn)證。ApplicationDeviceID(ADID)是人們可讀的公開(kāi)名稱(chēng)、在每一個(gè)企業(yè)中的唯一值,但不是非得經(jīng)過(guò)企Lk。RegistrationPassword是由系統(tǒng)管理人員產(chǎn)生的。它必須是一個(gè)可信的隨機(jī)數(shù)。3()在另一個(gè)實(shí)MW中,人ff河能iOTKeyID作為唯一的標(biāo)識(shí)符來(lái)代替ADID。然而,實(shí)際上人們并不相信通用的"唯一標(biāo)識(shí)符"的觀念,因此首選實(shí)施例使用--個(gè)由IT管理人員選擇的獨(dú)立的ADID。存儲(chǔ)在SAM數(shù)據(jù)庫(kù)中的所有的口令都是仔細(xì)考慮的。在該結(jié)構(gòu)中描述的模式暗不用戶數(shù)據(jù)庫(kù)和設(shè)備數(shù)據(jù)庫(kù)是分開(kāi)的。結(jié)果是存5在于用戶數(shù)據(jù)庫(kù)中的任一用戶將用存在于設(shè)備數(shù)據(jù)庫(kù)中的任一設(shè)備進(jìn)fi^證。沒(méi)郁蹄it定的用戶必須與特定的計(jì)翻鏈接。MFCA注冊(cè)(第一纖)。用戶從他企業(yè)的IT部門(mén)獲得用戶名/口令對(duì)和ADID/RegistrationPassword對(duì)。用戶經(jīng)歷如下。用戶運(yùn)行一個(gè)安裝應(yīng)用,。這是一般的Windows安裝。如果客戶沒(méi)有登i()記,執(zhí)行登記操作。安裝程序提示用戶向VPN輸入識(shí)別該用戶的數(shù)據(jù)塊。用于止:常登錄的用戶名/口令以及用于注冊(cè)的ADID/RegistrationPassword。用戶第一次連接時(shí),VPN網(wǎng)關(guān)/RADIUS驗(yàn)證用戶名/口令対',并麟允許fe^i入的當(dāng)前政策。SAM向外部ARM服務(wù)器注冊(cè)該設(shè)備,并配置它自身。如果每一項(xiàng)都成功,則用戶在VPN中。15在接下來(lái)的登錄中,用戶將不再需要進(jìn)入他的ADID/RegistrationPassword。ClientVPNApp應(yīng)只殿卩用戶輸入--個(gè)用戶名和口令??蛻粲涀≡揂DID、AppContainer的位置、以及己經(jīng)iAM務(wù)器接收的用戶秘密。,勝器相互作用流程如下。參照說(shuō)明MFCARegistration的框圖的附圖4。20客戶應(yīng)用粉芋使用先前存在的VPN協(xié)議對(duì)VPN網(wǎng)關(guān)提出第一個(gè)請(qǐng)求。使用預(yù)先先存在的驗(yàn)證方法,VPN網(wǎng)關(guān)以具有RADIUS服務(wù)器的通常方法IM用戶名和口令對(duì)。然后VPN網(wǎng)關(guān)確定客戶需要向SAMServer注冊(cè)。VPN網(wǎng)關(guān)將請(qǐng)求發(fā)送給SAMServer。請(qǐng)求包含(1)公開(kāi)的ADID,(2)用適應(yīng)的設(shè)備管理機(jī)構(gòu)服務(wù)器的25CommumcationPublicKey加密的PubKContainer,該設(shè)備管理機(jī)構(gòu)服務(wù)器包含企、lk名稱(chēng)/URL以及用于App的ACD(:或一個(gè)識(shí)別ARM數(shù)據(jù)庫(kù)中的ID),SAM不育魏牟密PubK,因此它將它傳遞給ARMSeiver。斑中連接必須提供SAM的某禾中驗(yàn)證給應(yīng)用辦注冊(cè)模塊。在HTTPS實(shí)現(xiàn)中,將設(shè)備管理機(jī)構(gòu)公布的證書(shū)提交給SAM月艮務(wù)器,反之亦然,其中在用設(shè)備管理機(jī)構(gòu)打開(kāi)帳戶的30過(guò)程中建立證書(shū)。,應(yīng)用程序注冊(cè)模塊〗OTCommumcationKey的專(zhuān)用位打開(kāi)PubKContaiiier,且如果孺要的話就用新的設(shè)備ADID更新它的內(nèi)部表。M程序注冊(cè)模塊對(duì)照它的數(shù)據(jù)庫(kù)校驗(yàn)企業(yè)以找出它是否有-個(gè)有效的許可。如果每---項(xiàng)都是正確的,則應(yīng)用程序注冊(cè)模塊具有客戶設(shè)備的KeyID,因此它找出保密主密鑰,并5為給定ACD計(jì)算Appkey。然后用一,巾安全方法將AppKey傳回給SAM(可能糊fflTPS連接的應(yīng)答)。相對(duì)于ADBD,SAM存儲(chǔ)AppKey,構(gòu)造具有AppKey的CustomerAppKey禾口一個(gè)用于CustomerSecret的新的隨機(jī)值(或者SAM直接存儲(chǔ)該CustomerAppKey而忽略AppKey),并構(gòu)造原始AppContamer,在那兒存儲(chǔ)起始的12810位LoginCounter(它的超始值可以是注冊(cè)口令)以及必lk名稱(chēng)/URL。SAM密封AppContamer,并將它和CustomerSecret(可能經(jīng)過(guò)VPNGateway)傳遞回客戶。該AppContamer并不需要被發(fā)送給加密的客戶。很明顯它并不泄露任何保密。偷聽(tīng)者不能記錄它以及將它發(fā)送給服務(wù)器以嘗試和獲得訪問(wèn)VT)N,醫(yī)1為額割每具有一^H昔誤的計(jì)數(shù)值。15VPNGateway從SAM服務(wù)器接收Ok,并現(xiàn)在準(zhǔn)許客戶訪問(wèn)內(nèi)部企業(yè)網(wǎng)??蛻粼诒娝苤奈恢么鎯?chǔ)AppCont細(xì)er和CustomerSecret。應(yīng)用稻,注朋模塊處理AWteys,但我們不知道CustomerSecret,LoginCounter的起始值一只有SAM知道。蹄設(shè)備管理機(jī)構(gòu)幫助提供了安全,但這保證了mfca啟動(dòng)的企業(yè)不能冒充一個(gè)客戶設(shè)備和沒(méi)有驗(yàn)證nmMk。20客戶設(shè)備。--個(gè)對(duì)話框請(qǐng)求用戶名和口令以及企業(yè)/URL標(biāo)識(shí)符。用戶不需要再輸入ADID,因?yàn)橄到y(tǒng)已經(jīng)記住它??蛻粲?jì)算機(jī)用正常的方法與VPN網(wǎng)關(guān)聯(lián)系,并驗(yàn)證用戶名/口令(通過(guò)RADIUS或諸如此類(lèi))VPN網(wǎng)關(guān)找出客戶請(qǐng)求附加的驗(yàn)證以及請(qǐng)求驗(yàn)證它本身??蛻糸_(kāi)封它的AppContamer(使用CustomerAppKey,.從Appkeyitll以及7豐f諸的Customer25Secret),增大LogmCounter(128位,不允許為負(fù)),再密封它并將它發(fā)送給網(wǎng)關(guān),并伴有公開(kāi)的adid。一旦VPN具有AppContainer,就將它傳遞給SAMServer用于驗(yàn)證??蛻舻却瓿?。如果網(wǎng)關(guān)返回--1Hf誤,則它將用自己的語(yǔ)言提示用戶。如果所有的均Ok,則VPN軟件開(kāi)始工作。StrongAuthenticationModule(SAM.)從VPNGateway接收用于驗(yàn)證的請(qǐng)30求,并伴有客戶的MM)和它的AppContemer。它'fOTADID作為索引查找CustomerAppKey以及所期望的計(jì)數(shù)值。使用CustomerAppKey開(kāi)封AppContainer。它校驗(yàn)一個(gè)計(jì)數(shù)及額外的信息。SAM應(yīng)當(dāng)允許一個(gè)計(jì)數(shù)范圍,如果(Cexpeeted<=CaetuakCexpeeted+10),則驗(yàn)證將為Ok。該目的是涵蓋當(dāng)數(shù)據(jù)5包從客戶到服務(wù)器丟失時(shí)的情況(例如,用戶擊"重試"按鈕許多次)。如果校驗(yàn)超出范圍,貝撥生錯(cuò)誤。它發(fā)送一個(gè)錯(cuò)誤代碼及錯(cuò)誤參數(shù)。如果成功,則它存儲(chǔ)新的計(jì)數(shù)值并發(fā)送"Auth.onsitionOk"信息給VPNGateway。記錄錯(cuò)誤,并定期地給系統(tǒng)管理人員提交報(bào)告。在特定的環(huán)境中SAM可警吿管理人員,例如如果發(fā)生許多次連接失敗的嘗試,這可能表明有人正試圖攻擊。io將系統(tǒng)10設(shè)計(jì)成防衛(wèi)導(dǎo)致系統(tǒng)和/或系統(tǒng)的保密密鑰的破壞和誤用的一個(gè)不值得信任的軟f摘用程序的基本威脅模式。在首選實(shí)施例中利用SMI和其它相關(guān)的硬付凝置,擴(kuò)展]模式,系統(tǒng)進(jìn)一歩保護(hù)密鑰以防齒雜"rmgzero"、尤其是操作系統(tǒng)本身的部分中不值得信任的程序。)模式,攻擊和恢復(fù)。下面是許多可識(shí)別的烕脅、它們的范圍以及它們15是如何由系統(tǒng)]0尋址的討論。偷聽(tīng)者竊取AppKey。偷聽(tīng)者可能偷聽(tīng)ARM/SAM通信,并竊取AppKey。然而,他將不能冒充一個(gè)客戶,因?yàn)樗仓辽傩枰狢ustomerSeeret以及VPNCounter的起始值。竊取Appkey和CustomerSecret,假定一個(gè)黑客竊取AppKey及顧客秘密,20可能因?yàn)樗J入了公司并竊取了ADID數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)。如觀倒偷竊,則可以通過(guò)重新注冊(cè)該計(jì)算機(jī)以產(chǎn)生--個(gè)新的CustomerSecret來(lái)解決(盡管AppKey不能改變)。如果企業(yè)保留AppKey,它可能不需要再重新注冊(cè)。1延遲。對(duì)只有軟件的實(shí)施例來(lái)說(shuō),本發(fā)明的首選實(shí)施例具有基于硬件的安全利益是不可能存在。25本發(fā)明的最佳實(shí)施例被謝羊設(shè)計(jì),以便基于軟件的反向設(shè)計(jì)工具那個(gè)完成它。此外,基于硬件的攻擊不能使敵人破壞其它遠(yuǎn)程計(jì)算機(jī)。這種保護(hù)提供使用CPU的SystemManagementMode(SMM)來(lái)實(shí)現(xiàn)。從SMM中,為竄改而驗(yàn)證軟件的下一層(即使用能加密的BIOS的操作系統(tǒng)驅(qū)動(dòng)程序(OSD))。()SI)代碼被做成明顯的ft改一不可能修改它來(lái)允許30—十沒(méi)有被SMM鵬翻倒的無(wú)效應(yīng)用程序艦它。這種驗(yàn)證的操作系統(tǒng)驅(qū)動(dòng)程序皿校驗(yàn)應(yīng)用程序沒(méi)有被修改過(guò)。當(dāng)用于主密鑰的安全存儲(chǔ)位置無(wú)效時(shí),挫敗連接,或者當(dāng)保密存儲(chǔ)裝置有效但并不是所有的都收到了-一個(gè)高級(jí)保證時(shí),保密主密鑰將被分成存儲(chǔ)在多-個(gè)攀元中的共享。同時(shí),使用Shamir的保密共享方案,僅僅要求有限數(shù)量的共5享取回保密主密鑰。此外,使用基于一個(gè)設(shè)備附加特性(如驅(qū)動(dòng)程序序列號(hào)、圖形卡驅(qū)動(dòng)程序版本等)的一個(gè)密鑰可以加密密鑰共享。當(dāng)設(shè)備特性密鑰可腦艮小sM預(yù)知時(shí),選擇加密從而使4頓迭代的加密操作、基于密鑰的大小解密要花費(fèi)大量時(shí)間。每一次要求保密主密鑰時(shí)要重新連接保密主密鑰共享。在每一次連接時(shí),10在存儲(chǔ)器中用一個(gè)指向一個(gè)新的存儲(chǔ)單元的指針指向連接的保密主密鑰。在每---次連接保密主密鑰數(shù)據(jù)塊時(shí),進(jìn)行一個(gè)校驗(yàn)以便發(fā)現(xiàn)有些數(shù)據(jù)塊是否無(wú)效。3鵬設(shè)備附加信息的先前值,允許檢測(cè)一個(gè)無(wú)效的共享。在無(wú)效共享的情況下,保密主密鑰被再共享。SMK/條附加。本發(fā)明的一個(gè)只有軟件的實(shí)施例的請(qǐng)求是當(dāng)試圖做出15移動(dòng)--個(gè)主密鑰和它的AppCcmtamer至iJ一個(gè)新的計(jì)徵L時(shí),是有能力檢測(cè)的。為檢測(cè)這種移動(dòng),記錄計(jì)飾L的某些特征。當(dāng)這幾個(gè)特征同時(shí)改變時(shí),只有軟件的系統(tǒng)10檢測(cè)它并依據(jù)它采取行動(dòng)。公開(kāi)有限的主密鑰和對(duì)話密鑰。當(dāng)使用它們做任何操作時(shí),這科吸計(jì)限制了保密主密鑰和對(duì)話密鑰的公開(kāi)。在首選實(shí)施例中,所有這樣的操作都是iOT20當(dāng)在SMM外運(yùn)行時(shí)無(wú)效的存儲(chǔ)器在SMM中執(zhí)行。公開(kāi)密鑰的完整性。在簡(jiǎn)單的實(shí)施例中,公開(kāi)密鑰被包含,并被編譯到操作系統(tǒng)驅(qū)動(dòng)程序中。這些可以是在BIOS中包括的相同公開(kāi)密鑰。VPN客戶與TCP/IP堆棧的相互作用如下??蛻鬢N負(fù)責(zé)以下的服務(wù):VPN客戶的配置、對(duì)VI)N網(wǎng)關(guān)的驗(yàn)證、以及將發(fā)送至內(nèi)部企業(yè)網(wǎng)的數(shù)據(jù)包進(jìn)行加25密。--旦登錄ffl額束,VPN客戶的主要工作是檢查發(fā)送給網(wǎng)絡(luò)的數(shù)據(jù)包以便找出它們或者是直接到一l通常的Internet計(jì)Ml或者到企業(yè)網(wǎng)絡(luò)??蛻魴z查目的地IP地址。如果數(shù)據(jù)包是用于在Internet上的一個(gè)計(jì)算機(jī),貝殿有修改地發(fā)送它。如果數(shù)據(jù)包是用于VPN網(wǎng)關(guān)后面的企業(yè)網(wǎng)絡(luò),客戶加密它并(有時(shí))執(zhí)行某種地址變換。30客戶堆棧是一個(gè)分層的結(jié)構(gòu),如TCPStack/UDPStac.k、NDIS接U(安裝程序配置它)、IPSee(通常i頓DES和3DES,在某些初始化協(xié)商后建立對(duì)稱(chēng))以及NDIS。接收數(shù)據(jù)包的VPNGateway將除去加密,然后它們是在網(wǎng)絡(luò)中是透明的。在一個(gè)使用SPEKE的首選實(shí)施例中,客戶和網(wǎng)關(guān)均生成一+綁定到驗(yàn)證5后的用戶標(biāo)識(shí)符的新密鑰。該密鑰可能用于加彌f驗(yàn)證作用附力倒VPN對(duì)話密祖——匕在上面描述的幾個(gè)位置中,已經(jīng)描述了可能用在本發(fā)明的結(jié)構(gòu)中的幾種變體。這些包括(1)將用戶賦給設(shè)備,使用對(duì)亍管理人員來(lái)說(shuō)加強(qiáng)的政策來(lái)定義用戶和設(shè)備的有效的特定組合,(2)客戶和網(wǎng)關(guān)之間、網(wǎng)關(guān)和驗(yàn)證服務(wù)器之io間、以及驗(yàn)證服務(wù)器和強(qiáng)大的驗(yàn)證模塊之間口令加密,(3)IM—個(gè)詢(xún)問(wèn)/應(yīng)答裝置而不是使用一個(gè)登錄計(jì)數(shù)器,以及(4)將客戶安裝程序打在一個(gè)可從mb站點(diǎn)安裝的完整數(shù)據(jù)包中。因此,提供用于計(jì)算機(jī)設(shè)備管理機(jī)構(gòu)的系統(tǒng)和方法已經(jīng)公開(kāi)了。上面描述的實(shí)施例可被理解為僅僅是某些持定實(shí)施例的說(shuō)明,這些持定實(shí)施例表示本發(fā)15明的應(yīng)用程序的原理。很清楚,許多和其它的方案很容易由本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明的范疇內(nèi)做出。表1A,Container結(jié)構(gòu)<table>tableseeoriginaldocumentpage81</column></row><table>表2在OSDAppContainer密封過(guò)程中的結(jié),改變<table>tableseeoriginaldocumentpage82</column></row><table>表3<table>tableseeoriginaldocumentpage83</column></row><table>表4<table>tableseeoriginaldocumentpage84</column></row><table>表5<table>tableseeoriginaldocumentpage85</column></row><table>表6<table>tableseeoriginaldocumentpage86</column></row><table>表7最終的密封結(jié)果字段SMI密封的最終結(jié)果OpCode表示數(shù)據(jù)字歡的ft容和格式FormatFmtMKContainer—Reserved這可能在將來(lái)用于擴(kuò)展的搡作碼信息Length密封操作后但密文替.換前字節(jié)計(jì)數(shù),計(jì)數(shù)值包括來(lái)自關(guān)KDigest達(dá)到的字段和包括Pad字段隨Digest主密鑰的SHA1摘要的20字節(jié)結(jié)果InitializationVector(IV)用于CipherB!ockChaining《CBC)模式的隨機(jī)初始化矢量SealersCodeDigest《SCD》用于密封容器的程序的代碼的SHA1摘要的結(jié)果Dateft有由Opeode嶺定的格氛的數(shù)櫞MACH關(guān)AC加密原語(yǔ)=HWAC《NewKey《Key,UsageApp關(guān)ac》,PaytoacJ》PadPad字節(jié)數(shù)量置為確信Plaintext是16字節(jié)的位數(shù)每一個(gè)填充字節(jié)具有一個(gè)等f(wàn)在Pad緩沖器t的填t宇節(jié)的數(shù)量的值<table>tableseeoriginaldocumentpage88</column></row><table>表9<table>tableseeoriginaldocumentpage89</column></row><table><table>tableseeoriginaldocumentpage90</column></row><table>表11最后的密封PubkContainer結(jié)構(gòu)<table>tableseeoriginaldocumentpage91</column></row><table>表12<table>tableseeoriginaldocumentpage92</column></row><table><table>tableseeoriginaldocumentpage93</column></row><table><table>tableseeoriginaldocumentpage94</column></row><table>權(quán)利要求1、一種用于使用和保護(hù)對(duì)主加密密鑰的訪問(wèn)的系統(tǒng),包括非易失性存儲(chǔ)器;一個(gè)系統(tǒng)初始化過(guò)程,其中在系統(tǒng)初始化過(guò)程中從該非易失性存儲(chǔ)器讀取該主密鑰;將從該主密鑰導(dǎo)出的一個(gè)敏感數(shù)據(jù)寫(xiě)入到一個(gè)隱蔽的存儲(chǔ)單元;以及禁止由運(yùn)行在該系統(tǒng)上的任何程序訪問(wèn)該非易失性存儲(chǔ)器直到下一次系統(tǒng)初始化過(guò)程開(kāi)始為止;用于防止由運(yùn)行在系統(tǒng)的正常操作模式中的程序訪問(wèn)該隱蔽的存儲(chǔ)單元的裝置;以及用于允許由運(yùn)行在系統(tǒng)的一個(gè)受限操作模式中的程序訪問(wèn)該隱蔽的存儲(chǔ)單元的裝置。2、如權(quán)利要求1所述的系統(tǒng),其特征在于所述的敏感數(shù)據(jù)是該主密鑰。3、如權(quán)利要求1所述的系統(tǒng),其特£于所述的敏感數(shù)據(jù)是由該主密鑰推導(dǎo)而來(lái)的。4、如權(quán)利要求3所述的系統(tǒng),其特征在于所述的敏感MI是一個(gè)從存儲(chǔ)在磁盤(pán)上的加密ltffi檢索而來(lái)的第二密鑰,該存儲(chǔ)數(shù)據(jù)用該主密鑰進(jìn)行加密。5、如權(quán)利要求l所述的系統(tǒng),其特征在亍在響應(yīng)f一4Sl電或復(fù)位信號(hào)20開(kāi)始的該系統(tǒng)初始化過(guò)程中,在BIOSROM中的軟件箱制該系統(tǒng)。6、如權(quán)禾腰求1所述的系統(tǒng),其特征在于該非易失性存儲(chǔ)器是一個(gè)由鎖存器控制的具有讀和寫(xiě)訪問(wèn)的非易失性隨機(jī)存取存儲(chǔ)器;由于響應(yīng)一個(gè)通電或復(fù)位事件的硬件功能,該鎖存器在系統(tǒng)初始化過(guò)程開(kāi)始時(shí)被打開(kāi),因此允許系統(tǒng)訪問(wèn)該非易失性隨杉諒取器;以及在系統(tǒng)初始化過(guò)程中關(guān)閉該鎖存器,因此不允許系統(tǒng)訪問(wèn)該非易失性隨機(jī)存取器直到下一次系統(tǒng)初始化開(kāi)始為止。7、如權(quán)利要求1所述的系統(tǒng),其特征在于所述的隱蔽存儲(chǔ)器是不能由運(yùn)行在系統(tǒng)的正常操作模式中的任何程序訪問(wèn)30的系統(tǒng)管理P追機(jī)存取存儲(chǔ)器;以及所述的受限的操作模式是系統(tǒng)管理模式,在系統(tǒng)管理模式中允許訪問(wèn)系統(tǒng)管理隨t游取存儲(chǔ)器。8、如權(quán)利要求1所述的系統(tǒng),其特征在于所述的隱蔽存儲(chǔ)器僅對(duì)由操作系統(tǒng)訪問(wèn)是有限制的,而且不能由運(yùn)行在系5統(tǒng)的正常操作模式中的任何程序訪問(wèn);以及所述的受限的操作模式是由保留由操作系統(tǒng)軟件使用的CPU保護(hù)環(huán)控制的。9、一種用于在存儲(chǔ)器隱蔽一個(gè)主加密密鑰的系統(tǒng),包括通電$対牛,其中從非易失性剤諸器讀取一個(gè)主密鑰;停止對(duì)非易失性存儲(chǔ)器的訪問(wèn).以便直到下一次系統(tǒng)復(fù)位時(shí)訪問(wèn)才能變得再有效;將從該主密鑰導(dǎo)出的敏感數(shù)據(jù)寫(xiě)入一個(gè)隱蔽的地址空間;以及只有運(yùn)行在系統(tǒng)的一個(gè)受l艱操作模式中的程序才能訪問(wèn)該隱蔽的地址空間15中的敏感。全文摘要用于使用一個(gè)存儲(chǔ)在受保護(hù)的非易失性存儲(chǔ)器的主密鑰,進(jìn)行設(shè)備驗(yàn)證的系統(tǒng)和方法。該主密鑰被用來(lái)導(dǎo)出被傳遞到只能在計(jì)算機(jī)系統(tǒng)的特許操作模式下訪問(wèn)的存儲(chǔ)器中的敏感數(shù)據(jù)。該敏感數(shù)據(jù)和主密鑰不能直接由沒(méi)有運(yùn)行在特許操作模式中的程序訪問(wèn)。主密鑰被用來(lái)導(dǎo)出一個(gè)或多個(gè)用來(lái)保密一個(gè)給應(yīng)用程序/設(shè)備對(duì)的專(zhuān)用數(shù)據(jù)的應(yīng)用程序密鑰。非特許的程序能請(qǐng)求運(yùn)行在特許模式中的函數(shù)以使用這些應(yīng)用程序密鑰。該特許的模式程序校驗(yàn)非特許調(diào)用應(yīng)用程序的完整性以確保它具有管理機(jī)構(gòu)和/或完整性以執(zhí)行每一個(gè)請(qǐng)求的操作。一個(gè)或多個(gè)設(shè)備管理機(jī)構(gòu)服務(wù)器用來(lái)公布和管理主密鑰和應(yīng)用程序密鑰。文檔編號(hào)G06F15/00GK101114326SQ200610107409公開(kāi)日2008年1月30日申請(qǐng)日期2001年11月23日優(yōu)先權(quán)日2001年4月9日發(fā)明者D·P·亞布倫,J·A·卡斯拉斯,J·D·巴爾,J·-P·阿布格拉爾,K·王,P·科特拉,R·W·巴爾德溫,S·D·威廉斯,T·J·馬基申請(qǐng)人:鳳凰技術(shù)有限公司