專利名稱::基于公開密鑰加密的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)檢索的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)檢索,尤其涉及基于公開密鑰加密的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)檢索。
背景技術(shù):
:保護(hù)計(jì)算機(jī)上的數(shù)據(jù),以使數(shù)據(jù)只被提供給合適的一方,這是用戶所非常關(guān)注的。用戶需要保護(hù)的數(shù)據(jù)類型變化很大,例如與工作相關(guān)的或私人的機(jī)密文件、銀行賬號(hào)、信用卡號(hào)碼、社會(huì)保險(xiǎn)號(hào)碼等等。另外,對(duì)某些第三方而言,防止非法使用或訪問(wèn)用戶計(jì)算機(jī)上的數(shù)據(jù)也同樣是重要的。例如,信用卡發(fā)行者希望信用卡號(hào)能夠得到保護(hù)從而不被泄漏給惡意程序或計(jì)算機(jī)黑客,音樂(lè)公司希望其歌曲能夠防止被盜版,電影制片廠希望防止其電影被盜版等等。為保護(hù)計(jì)算機(jī)上的數(shù)據(jù),一種解決方案是舍棄通用計(jì)算設(shè)備而使用用于傳輸、存儲(chǔ)和顯示保密內(nèi)容的專用抗干擾盒,。然而,這種解決方案并不是切實(shí)可行的,因?yàn)樗柚褂脩魯U(kuò)展他們的計(jì)算機(jī)(例如,用戶不能在這種抗干擾盒上安裝另外的軟件組件和/或硬件組件)。因此,提供一種在通用計(jì)算設(shè)備上對(duì)數(shù)據(jù)進(jìn)行保護(hù)的途徑是必要的。
發(fā)明內(nèi)容基于公開密鑰加密的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)檢索將在下文進(jìn)行說(shuō)明。一方面,從一個(gè)調(diào)用程序獲得數(shù)據(jù)。使用公開密鑰加密以僅僅允許一個(gè)或多個(gè)目標(biāo)程序從所述密文中獲得所述數(shù)據(jù)的形式產(chǎn)生包括該數(shù)據(jù)的密文。另一方面,從一個(gè)調(diào)用程序獲得一個(gè)位串。檢驗(yàn)所述調(diào)用程序的的標(biāo)識(shí)符以確認(rèn)是否允許所述調(diào)用程序訪問(wèn)所述位串密文中的加密數(shù)據(jù)。只有當(dāng)所述調(diào)用程序被允許訪問(wèn)所述數(shù)據(jù)時(shí),該數(shù)據(jù)才通過(guò)公開密鑰被解密,并返回到所述調(diào)用程序。相同的標(biāo)記應(yīng)用于整篇文件,代表相同的組件和/或特征。圖1說(shuō)明一個(gè)典型的訪問(wèn)控制模型。圖2表示使用四個(gè)不同等級(jí)層次的一個(gè)訪問(wèn)控制環(huán)境。圖3是用于執(zhí)行封閉操作的一個(gè)典型操作的流程圖。圖4是用于執(zhí)行開放操作的一個(gè)典型操作的流程圖。圖5是用于執(zhí)行存儲(chǔ)操作的一個(gè)典型操作的流程圖。圖6是用于執(zhí)行封閉操作的一個(gè)典型操作的流程圖。圖7是用于執(zhí)行引用操作的一個(gè)典型操作的流程圖。圖8是用于執(zhí)行檢驗(yàn)操作的一個(gè)典型操作的流程圖。圖9是用于執(zhí)行封閉操作的一個(gè)典型操作的流程圖。圖10是用于執(zhí)行公開密鑰封閉操作的一個(gè)典型操作的流程圖。圖11是用于執(zhí)行通用封閉操作的一個(gè)典型操作的流程圖。圖12說(shuō)明可用于執(zhí)行下文中的技術(shù)的一個(gè)通用計(jì)算機(jī)環(huán)境。具體實(shí)施例方式圖1說(shuō)明一個(gè)典型訪問(wèn)控制模型100。主體102能夠產(chǎn)生訪問(wèn)被保護(hù)資源的一個(gè)請(qǐng)求。所述請(qǐng)求被一個(gè)防護(hù)裝置104所接收,該防護(hù)裝置控制對(duì)資源106的訪問(wèn)。防護(hù)裝置104在與所述資源和其他信息相關(guān)的訪問(wèn)策略的基礎(chǔ)上檢查所述請(qǐng)求并決定是否授權(quán)該請(qǐng)求,諸如識(shí)別發(fā)布所述請(qǐng)求的主體102。為更好的解釋,圖1中示出了一個(gè)單獨(dú)的主體102、防護(hù)裝置104和資源106。然而,應(yīng)該說(shuō)明,訪問(wèn)控制模型100可包括多個(gè)主體102、多個(gè)防護(hù)裝置和104和/或多個(gè)資源106。主體102涉及請(qǐng)求訪問(wèn)保護(hù)數(shù)據(jù)的一個(gè)組件或模塊。該請(qǐng)求可以是用于檢索被保護(hù)數(shù)據(jù)的一個(gè)請(qǐng)求(例如,用于檢索一個(gè)密鑰的一個(gè)請(qǐng)求),或使用所述保護(hù)數(shù)據(jù)來(lái)執(zhí)行操作的一個(gè)請(qǐng)求(例如,所述保護(hù)數(shù)據(jù)可以是一個(gè)密鑰,所述請(qǐng)求可以是通過(guò)使用所述密鑰進(jìn)行加密或解密的請(qǐng)求)。所述主體102能以硬件、軟件、韌件的形式或硬件、軟件和/或韌件的組合形式來(lái)被實(shí)現(xiàn)。防護(hù)裝置104涉及一個(gè)組件或模塊,該組件或模塊控制訪問(wèn)所述保護(hù)數(shù)據(jù)。防護(hù)裝置104使用與所述保護(hù)數(shù)據(jù)相關(guān)的訪問(wèn)策略以及其它信息(例如對(duì)請(qǐng)求訪問(wèn)所述保護(hù)數(shù)據(jù)的主體的識(shí)別)確定是否允許所述主體訪問(wèn)所述保護(hù)數(shù)據(jù)。如果防護(hù)裝置104確定所述請(qǐng)求主體被允許訪問(wèn)所述保護(hù)數(shù)據(jù),則防護(hù)裝置104以一種合適的方式響應(yīng)所述請(qǐng)求(例如,如果所迷請(qǐng)求是對(duì)所述保護(hù)數(shù)據(jù)一個(gè)請(qǐng)求,則所述保護(hù)數(shù)據(jù)被返回給所述主體;或者,如果所述請(qǐng)求是一個(gè)與將使用所述保護(hù)數(shù)據(jù)進(jìn)行加密的特定數(shù)據(jù)相關(guān)的請(qǐng)求,則防護(hù)裝置104使用所述保護(hù)數(shù)據(jù)來(lái)加密所述特定數(shù)據(jù),并且返回所述密文(所述加密數(shù)據(jù))到所述主體)。應(yīng)該注意的是防護(hù)裝置104基于所述請(qǐng)求的性質(zhì)來(lái)約束主體。例如,防護(hù)裝置104可以允許一個(gè)特定的主體具有使用所述保護(hù)數(shù)據(jù)簽名的特定數(shù)據(jù),但是不允許所述保護(hù)數(shù)據(jù)被返回給所述特殊主體。防護(hù)裝置104也可被表現(xiàn)為一個(gè)解密防護(hù)裝置和/或一個(gè)服務(wù)防護(hù)裝置。服務(wù)防護(hù)裝置在沒(méi)有公開所述保護(hù)數(shù)據(jù)的情況下依據(jù)所述主體請(qǐng)求,利用所述保護(hù)數(shù)據(jù)(例如,一個(gè)密鑰)執(zhí)行某個(gè)操作(例如,加密、解密、數(shù)字簽名等)。另一方面,一個(gè)解密防護(hù)裝置將所迷保護(hù)數(shù)據(jù)披露給被授權(quán)的請(qǐng)求者。應(yīng)該注意的是,一個(gè)特殊防護(hù)裝置104可以同時(shí)是一個(gè)解密防護(hù)裝置和一個(gè)服務(wù)防護(hù)裝置。資源106可以是訪問(wèn)被約束的任何數(shù)據(jù)類型。例如,資源106的例子包括密鑰、銀行賬戶、信用卡號(hào)、諸如社會(huì)保險(xiǎn)號(hào)之類的個(gè)人信息、密碼等等。資源106實(shí)質(zhì)上可以是一個(gè)計(jì)算設(shè)備以外的別的東西。例如,資源106可以是物理存儲(chǔ)器(例如,RAM或ROM),光盤或磁盤或磁盤機(jī)、視頻卡、聲卡、智能卡等等。又譬如,資源106也可以是操作系統(tǒng)的抽象,例如,進(jìn)程、文件、線程、信號(hào)等等。在這里的論述中,將說(shuō)明關(guān)于在一個(gè)單獨(dú)的計(jì)算設(shè)備上執(zhí)行的訪問(wèn)控制模型100。然而很明顯所述,模型的不同部分可以在不同的計(jì)算設(shè)備上執(zhí)行。例如,主體102可以在一個(gè)計(jì)算設(shè)備上,而防護(hù)裝置104和資源106可以在其它的計(jì)算設(shè)備上。在一個(gè)計(jì)算設(shè)備上的主體和防護(hù)裝置可被分類為任意數(shù)目n的多個(gè)層次ln。圖2表示一個(gè)使用四個(gè)不同層的訪問(wèn)控制環(huán)境。在一個(gè)實(shí)施例中,層M步及一個(gè)硬件或保密核心層,層12涉及一個(gè)基本輸入/述出系統(tǒng)(BIOS)層,層13涉及一個(gè)操作系統(tǒng)(OS)層,層14涉及一個(gè)應(yīng)用層。在圖2所示的范例環(huán)境中,最低層(層h)保護(hù)根資源。在擔(dān)任下一個(gè)更高層中主體的防護(hù)裝置的同時(shí),中間層(層12和13)中的程序擔(dān)任從下一個(gè)更低層中請(qǐng)求訪問(wèn)的主體。所述中間層便可以為更高層中的主體增加功能。例如,假設(shè)一個(gè)程序120期望檢索被防護(hù)裝置126所保護(hù)的根資源128。程序120擔(dān)任一個(gè)請(qǐng)求乂人模塊122訪問(wèn)所述根資源128的主體,即擔(dān)任所述資源的一個(gè)防護(hù)裝置。如果模塊122具有所述資源128的一個(gè)副本(例如,響應(yīng)與所述資源相關(guān)的在前請(qǐng)求并利用程序120或?qū)?4中的某個(gè)其他程序從防護(hù)裝置126中在前得到的或者當(dāng)模塊122被初始化或載入所述計(jì)算設(shè)備中時(shí)),模塊122則檢查程序120是否被允許檢索所述資源。如果程序120被允許檢索所述資源,則模塊122返回所述資源到程序120。但是,如果模塊122沒(méi)有所述資源128的副本,則模塊122擔(dān)任請(qǐng)求從模塊124訪問(wèn)所述根資源的一個(gè)主體,模塊124擔(dān)任所述資源的一個(gè)防護(hù)裝置。如果模塊124具有所述資源128的一個(gè)副本(例如,由模塊122或者在層13中的某個(gè)其他模塊響應(yīng)與所述資源相關(guān)的在前請(qǐng)求從防護(hù)裝置126中在前獲得的或者當(dāng)模塊124被初始化或載入所述計(jì)算設(shè)備時(shí)),則模塊124檢查模塊122是否被允許檢索所述資源。如果模塊122被允許檢索所述資源,則模塊124返回所述資源到模塊122。然而,如果模塊124沒(méi)有所述資源128的一個(gè)副本,則模塊124擔(dān)任請(qǐng)求從防護(hù)裝置126訪問(wèn)所述根資源的一個(gè)主體。防護(hù)裝置126檢查模塊124是否被允許檢索所述資源,并且,如果模塊124被允許檢索所述資源,則返回所述資源到模塊124。如果模塊122被允許檢索所述資源,則模塊124返回所述資源到模塊122,并且,如果程序120被允許檢索所述資源,則模塊122返回所述資源到程序120。在這里的論述中,為圖1的訪問(wèn)控制模型100的使用列出了多個(gè)參考,以允許驗(yàn)證軟件操作。通常,在軟件的驗(yàn)證操作中被保護(hù)的所述資源是密鑰。然而很明顯,軟件驗(yàn)證操作僅僅是使用訪問(wèn)控制模型100的例子之一。另一個(gè)使用訪問(wèn)控制模型100的例子是對(duì)計(jì)算機(jī)用戶的驗(yàn)證。大多述當(dāng)代計(jì)算機(jī)居有一個(gè)訪問(wèn)控制系統(tǒng)。一個(gè)用戶登錄到計(jì)算機(jī),以便該計(jì)算機(jī)知道用戶是誰(shuí)。登錄之后,用戶運(yùn)行通常訪問(wèn)系統(tǒng)資源(例如,讀取文件、寫到屏幕上的窗口等)所需要的程序。通常,所述計(jì)算機(jī)的所述訪問(wèn)控制系統(tǒng)被商議(例如,"用戶X能在資源Z上執(zhí)行操作Y嗎?")。如果答案是否定的,所述程序便不能訪問(wèn)所述資源。另一個(gè)使用訪問(wèn)控制模型100的例子是對(duì)遠(yuǎn)程服務(wù)用戶的驗(yàn)證。諸如網(wǎng)絡(luò)站點(diǎn)(例如,在線經(jīng)紀(jì)人或銀行)之類的遠(yuǎn)程服務(wù)可被認(rèn)為具有訪問(wèn)控制系統(tǒng)。所述資源是人民銀行賬戶、他們的錢和股票。一個(gè)用戶登錄到所述網(wǎng)絡(luò)站點(diǎn)之后,所述訪問(wèn)控制系統(tǒng)將確定所述用戶是否被授權(quán)執(zhí)行其請(qǐng)求的訪問(wèn),例如,對(duì)"銀行賬戶數(shù)據(jù)"資源的訪問(wèn)(以檢索最新的銀行狀態(tài)),或者對(duì)資源"銀行賬戶12345中的1000美元"的一個(gè)"傳輸,,訪問(wèn)。另一個(gè)使用訪問(wèn)控制模型1oo的例子是對(duì)特殊建筑或區(qū)域的物理訪問(wèn)的約束。例如,當(dāng)一個(gè)用戶早上到達(dá)崗位時(shí),該用戶出示他/她的證件并請(qǐng)求對(duì)資源"前門"的"打開"操作。某個(gè)電子系統(tǒng)(一個(gè)防護(hù)裝置)根據(jù)證件上所存儲(chǔ)的信息確定所述用戶是否被允許進(jìn)入該建筑并相應(yīng)的對(duì)該門進(jìn)行解鎖。如果可能讓計(jì)算機(jī)程序(從一個(gè)解密防護(hù)裝置或服務(wù)防護(hù)裝置)獲得對(duì)至少一個(gè)加密資源的保護(hù)訪問(wèn),則一臺(tái)計(jì)算設(shè)備使能一個(gè)程序(軟件)的驗(yàn)證操作。如下文所述,在某些實(shí)施例中,使能驗(yàn)證和隔離的計(jì)算設(shè)備使能驗(yàn)證操作。如果這兩點(diǎn)都能夠被滿足,那么,程序C被稱之為正在與另一個(gè)程序D相互隔離(1)具有能被程序C訪問(wèn)而不能被程序D訪問(wèn)的存儲(chǔ)器,(2)程序D不能運(yùn)行程序C(除了由程序C確定的一個(gè)可能的入口點(diǎn))。一個(gè)程序由它的轉(zhuǎn)換規(guī)則(可執(zhí)行代碼)和它的初始狀態(tài)(入口點(diǎn)或指令指示器IP初始值)所提供。由于數(shù)據(jù)能存儲(chǔ)在不能被程序D所訪問(wèn)的存儲(chǔ)器中,所以,即使有程序D的相悖行為的存在,所述第一點(diǎn)也能夠保證程序C的程序代碼和狀態(tài)信息的完整。這一點(diǎn)還允許程序C能夠保護(hù)來(lái)自由程序D的觀察中的機(jī)密數(shù)據(jù)(例如,密鑰)。所述第二點(diǎn)保證D不能通過(guò)選擇相悖的入口點(diǎn)來(lái)破壞C的行為。另外,如果程序C使能識(shí)別轉(zhuǎn)換規(guī)則(程序代碼)和程序D的初始狀態(tài),則可以說(shuō)程序C能驗(yàn)證程序D。計(jì)算設(shè)備能從任何其它程序D隔離出程序任何程序C,一個(gè)例外是,每層H的單個(gè)程序Ej,其中i是程序C的層。這可保護(hù)多個(gè)程序免受任一程序的觀察和干擾,除了防護(hù)裝置的序列E^E2,......,Em之外,程序C通過(guò)該防護(hù)裝置而請(qǐng)求訪問(wèn)其資源。并且,對(duì)任何層i而言,所述計(jì)算設(shè)備能使一個(gè)程序在層i中執(zhí)行以驗(yàn)證至少在層i+1中的一些程序。該請(qǐng)求允許一個(gè)程序擔(dān)任與來(lái)自所述下層中主題的請(qǐng)求相關(guān)的防護(hù)裝置。這兩個(gè)觀察導(dǎo)致了一個(gè)歸納式論證,即任何層中的程序可通過(guò)向它的前任請(qǐng)求訪問(wèn)一個(gè)資源、并通過(guò)隔離來(lái)保護(hù)其完整和他們的資源以及驗(yàn)證來(lái)自下一個(gè)層中的主體的請(qǐng)求而擔(dān)任資源的防護(hù)裝置。隔離可通過(guò)使用物理存儲(chǔ)器保護(hù)來(lái)實(shí)現(xiàn)。這種途徑被稱之為"空間中的隔離"和"空間隔離"。例如,許多現(xiàn)代微處理器中的環(huán)和虛擬存儲(chǔ)器保護(hù)足以實(shí)現(xiàn)空間中的隔離。以特權(quán)方式運(yùn)行的一個(gè)操作系統(tǒng)核心(層i)可為應(yīng)用程序(層i+1)建立頁(yè)表,從而,任何應(yīng)用程序只能訪問(wèn)物理存儲(chǔ)器的某些部分,該部分是所述操作系統(tǒng)核心選定映入的所述應(yīng)用程序虛擬地址空間。并且,所述核心約束應(yīng)用程序的特權(quán)以使它們不能改變存儲(chǔ)器映象,并保證應(yīng)用程序僅在明確規(guī)定的入口點(diǎn)(系統(tǒng)調(diào)用)來(lái)啟動(dòng)核心代碼的執(zhí)行。另一種在兩層之間實(shí)現(xiàn)隔離的途徑是及時(shí)分離它們的執(zhí)行。該方法涉及"及時(shí)分離"和"時(shí)間分離"。第一層i中的一個(gè)程序被完全執(zhí)行,并使不能獲得某些資源,然后便終止。隨后,控制被轉(zhuǎn)到下一個(gè)層i+1中。驗(yàn)證發(fā)生在隨后的多個(gè)層(j-i+1)之間。程序C驗(yàn)證程序(轉(zhuǎn)換規(guī)則)和j的配置的初始狀態(tài)。所述程序能通過(guò)使程序C檢查層j中的程序來(lái)得以驗(yàn)證。即,典型程序C讀取包含層j的程序的存儲(chǔ)器,并在這個(gè)存儲(chǔ)器的范圍來(lái)計(jì)算一個(gè)機(jī)密摘要。應(yīng)該注意的是,該點(diǎn)的目的僅在于確定所述代碼的身份,而不是評(píng)估有關(guān)所述代碼的其它主體的陳述。因此,在這一點(diǎn)上,證件并不是必要的。程序C的第二個(gè)任務(wù)是識(shí)別程序D的初始狀態(tài)。一般而言,在任意一個(gè)執(zhí)行階段來(lái)確定一個(gè)程序的初始狀態(tài)時(shí)非常困難的。因此,程序C控制程序D的初始狀態(tài)。實(shí)際上,這意味著如果程序C以5狀態(tài)啟動(dòng)程序D的執(zhí)行,那么,程序C僅能確定程序D的初始狀態(tài)5??傊?,為了驗(yàn)證程序D,程序C檢查其認(rèn)為相關(guān)的存儲(chǔ)器內(nèi)容并計(jì)算一個(gè)機(jī)密摘要。之后,程序C傳輸執(zhí)行到一個(gè)明確的程序D的入口點(diǎn)。在所述資源是加密密鑰的情況下,驗(yàn)證操作允許每一個(gè)操作系統(tǒng)和應(yīng)用程序排它地訪問(wèn)一個(gè)或多個(gè)機(jī)密。上述隔離保護(hù)每一個(gè)機(jī)密免受敵對(duì)代碼的攻擊。上述程序的驗(yàn)證允許程序被識(shí)別,從而每個(gè)機(jī)密只能夠被披露給擁有它的所述程序。通常,由于從程序(圖1的一個(gè)主體102)給出一個(gè)請(qǐng)求,防護(hù)裝置104設(shè)立所述程序的身份(即,防護(hù)裝置104授權(quán)所述程序)。如果所述程序不是請(qǐng)求保密的所有者(資源106),則防護(hù)裝置104拒絕該請(qǐng)求。否則,防護(hù)裝置104計(jì)算所述機(jī)密的某個(gè)函數(shù)(其自身可以是所述機(jī)密),并且可能的話,還進(jìn)一步計(jì)算由所述程序所提供的信息并返回所述結(jié)果。或者說(shuō),不是明確接收或拒絕請(qǐng)求,防護(hù)裝置104可為所述請(qǐng)求服務(wù),但將所述調(diào)用者的身份匯編到所述結(jié)果中。這種交替的方法是合適的,例如,如果被所述防護(hù)裝置返回的所述結(jié)果不包括保密信息(例如,使用一個(gè)機(jī)密產(chǎn)生數(shù)字簽名的請(qǐng)求)。項(xiàng)選通函數(shù)這里被用于查閱這兩種情況。另外,在各種情況下,防護(hù)裝置104驗(yàn)證所述調(diào)用者(主體102)。對(duì)主體102的驗(yàn)證也涉及這里的一個(gè)函數(shù)ID(),該函數(shù)id()返回所述調(diào)用程序(該程序調(diào)用防護(hù)裝置104的一個(gè)選通函數(shù))的一個(gè)摘要。所述摘要可以由任何一種慣用方式生成,例如使用任何一個(gè)或多個(gè)加密哈希函數(shù)(也稱為單向哈希函數(shù)),例如SHA1(保密哈希運(yùn)算法則1),MD5(信息摘要5),MD2(信息摘要2),等等;使用鍵控MAC(消息驗(yàn)證碼)等等。這里所說(shuō)明的一類選通函數(shù)實(shí)現(xiàn)封閉存儲(chǔ)。封閉存儲(chǔ)的目的在于允許程序存儲(chǔ)機(jī)密,以使僅僅一組特殊的一個(gè)或多個(gè)程序(由存儲(chǔ)機(jī)密的程序所規(guī)定)能檢索所述機(jī)密。在一個(gè)實(shí)例中,僅有最初保存(封閉)所述機(jī)密的計(jì)算機(jī)能恢復(fù)(開啟)所述機(jī)密。通常,這些機(jī)密的使用期限將超出所述程序的單獨(dú)執(zhí)行期限。在程序執(zhí)行一次期間所使用的機(jī)密能被保存(封閉)或者隔離,一個(gè)隨機(jī)數(shù)發(fā)生器也允許所述程序在一次執(zhí)行期間保持所述機(jī)密。封閉存儲(chǔ)也允許一個(gè)程序在整個(gè)執(zhí)行期間自始至終都保持機(jī)密,這些執(zhí)行不能即時(shí)重疊。借助以下接口(例如,使用"封閉"和"開啟"操作和/或公開密鑰封閉和公開密鑰開啟搡作),層lj將封閉存儲(chǔ)暴露給下一層lw。關(guān)于封閉存儲(chǔ)的論述涉及被用于加密和解密的密鑰。這些密鑰是與正在對(duì)資源進(jìn)行防護(hù)的防護(hù)裝置(例如,圖1的防護(hù)裝置104)相關(guān)的密鑰。這里的論述也涉及程序標(biāo)識(shí)符(例如,調(diào)用一個(gè)操作的程序的一個(gè)標(biāo)識(shí)符,或被允許訪問(wèn)一個(gè)資源的一個(gè)目標(biāo)程序的一個(gè)標(biāo)識(shí)符)。這些標(biāo)識(shí)符在這里經(jīng)常被稱之為摘要。然而很明顯,摘要僅僅是程序標(biāo)識(shí)符的一個(gè)例子??墒褂脴?biāo)識(shí)符的其它類型,該標(biāo)識(shí)符是程序的一個(gè)度量或其它表現(xiàn),并允許對(duì)程序的任何改動(dòng)都被檢測(cè)。如果程序被有所改動(dòng)(例如,為惡意訪問(wèn)或利用保護(hù)數(shù)據(jù)的對(duì)手所改動(dòng)的一個(gè)或多個(gè)指令),則所述程序的所述標(biāo)識(shí)符將反映出該變動(dòng)(例如,未發(fā)生變動(dòng)的程序的標(biāo)識(shí)符將不同于發(fā)生變動(dòng)的程序的標(biāo)識(shí)符)。所述封閉操作接收將被封閉的數(shù)據(jù)(例如,一個(gè)機(jī)密)輸入。所述封閉操作也可任選地接收作為輸入的用于識(shí)別何時(shí)和/或向何者披露機(jī)密的條件。在一個(gè)實(shí)施例中,該條件是一個(gè)目標(biāo)程序的一個(gè)摘要,該程序被允許檢索(開啟)所述數(shù)據(jù)。另外,被允許檢索(開啟)所述數(shù)據(jù)的程序能以其它方式被識(shí)別。例如,所述程序可被一個(gè)公開密鑰識(shí)別,從而使得每個(gè)證明與一個(gè)或多個(gè)程序相關(guān)。另外,除了或代替所述目標(biāo)程序的標(biāo)識(shí)符還可以使用其他條件。例如,所述條件可包括與所述數(shù)據(jù)可被披露(開啟)的時(shí)間相關(guān)的特殊的時(shí)間約束,例如在所述機(jī)密可被披露(開啟)期間的一周的一天或多天的特殊時(shí)間。又譬如,為了使所述機(jī)密被披露(開啟),所述條件可包括必須被提供的一個(gè)口令或其它數(shù)據(jù)的標(biāo)識(shí)符,例如,所述機(jī)密只能被知道口令的程序所開啟。又譬如,所述條件可以是一個(gè)邏輯公式(例如,寫在第一階邏輯中的任何陳述,寫在謂詞邏輯中的任何陳述等等)。所述邏輯公式被評(píng)估(例如,通過(guò)防護(hù)裝置)并且只有當(dāng)所述評(píng)估返回真的指示時(shí),所述機(jī)密才被披露(開啟)。又譬如,所述條件可以是某種語(yǔ)言的可執(zhí)行程序(例如,java,C*,Javascript,VBScript等等)。程序被執(zhí)行(例如,通過(guò)防護(hù)裝置),只有當(dāng)所述程序返回某個(gè)為"真"或"滿足"的指示時(shí),所述機(jī)密才被披露(開啟)。在所述條件是所述目標(biāo)程序的摘要的情況下,所述封閉操作可使用調(diào)用所述封閉操作的所述程序的摘要,(借此隱含地輸入所述目標(biāo)程序的摘要),來(lái)代替提供所述目標(biāo)程序的摘要。另外,多目標(biāo)程序的摘要可被輸入到所述封閉操作,借此允許多目標(biāo)程序披露(開啟)所述數(shù)據(jù)。所述封閉操作將所述調(diào)用者的標(biāo)識(shí)符與輸入(所述數(shù)據(jù)和允許披露(開啟)所述數(shù)據(jù)的條件)一起進(jìn)行加密。所述封閉操作以一個(gè)加密的形式(作為密文)返回所述輸入數(shù)據(jù)。所述封閉操作也返回一個(gè)值(例如,一個(gè)消息驗(yàn)證碼(MAC)值),該值可用于驗(yàn)證所述封閉數(shù)據(jù)的完整性。所返回的數(shù)據(jù)允許所存儲(chǔ)的數(shù)據(jù)在隨后的開啟操作中被引用,在下文中將進(jìn)一步論述用于所述開啟操作的偽碼在表I中進(jìn)行說(shuō)明。在表I的偽碼中,ID()涉及上文論述的ID()函數(shù),e涉及被返回給所述調(diào)用程序的值(例如,一個(gè)字符串或位序列),數(shù)據(jù)涉及被封閉的數(shù)據(jù),并且[t!……,tm]涉及一個(gè)或多個(gè)目標(biāo)程序的摘要,該目標(biāo)程序允許披露(開啟)所述數(shù)據(jù)(或者說(shuō),一個(gè)或多個(gè)其它條件)。41D=ID()E二store(data,[t"i……,tm]'d)Returne圖3是說(shuō)明用于實(shí)現(xiàn)所述封閉操作的一個(gè)范例處理200的流程圖。處理200被圖1中的防護(hù)裝置104所執(zhí)行,并且能以硬件、軟件、韌件或其結(jié)合的形式來(lái)實(shí)現(xiàn)。最初,從所述調(diào)用程序接收一個(gè)需要被封閉的機(jī)密(步驟202)。所述機(jī)密被加密以使所述機(jī)密只能被一個(gè)特殊的目標(biāo)程序所檢索(步驟202),或者,如果一個(gè)或多個(gè)特定條件被滿足的話,所述機(jī)密只能被檢索。包括加密機(jī)密的密文則被返回給所述調(diào)用程序(步驟206)。附加信息也可被返回給所述調(diào)用程序(作為所述密文的一部分或從所述密文分離),例如所述調(diào)用程序和/或所述目標(biāo)程序的一個(gè)摘要。所述開啟操作接收作為輸入的一個(gè)位串,該位串是在封閉所述調(diào)用程序現(xiàn)在希望檢索的數(shù)據(jù)時(shí)由所述封閉操作返回的。所述開啟操作獲得用于披露所述數(shù)據(jù)的條件,并檢查這些條件是否被滿足。例如,如果條件包括被允許檢索(開啟)所述數(shù)據(jù)的一個(gè)或多個(gè)目標(biāo)程序的摘要,則所述開啟操作獲得這些摘要并檢查所述調(diào)用程序是否是一個(gè)或多個(gè)目標(biāo)程序之一。如果所述調(diào)用程序不是一個(gè)或多個(gè)調(diào)用程序之一,則所述開啟操作失敗且所請(qǐng)求的數(shù)據(jù)不被返回給所述調(diào)用程序。然而,如果所述調(diào)用程序是一個(gè)或多個(gè)目標(biāo)程序之一,則所述開啟操作成功且所述被請(qǐng)求的數(shù)據(jù)被返回給所述調(diào)用程序。封閉所述數(shù)據(jù)的程序的摘要也被所述開啟操作任意返回。用于開啟操作的偽碼在表ll中進(jìn)行說(shuō)明。在表ll的偽碼中,數(shù)據(jù)涉及正被請(qǐng)求的數(shù)據(jù)(并且先前已被封閉),……,tm]涉及被允許檢索(開啟)所述數(shù)據(jù)的一個(gè)或多個(gè)目標(biāo)程序的摘要(即一個(gè)或多個(gè)其它條件),e涉及對(duì)所述開啟操作的輸入(通過(guò)一個(gè)封閉操作的先前的典型輸出),并且d涉及封閉所述數(shù)據(jù)的程序的摘要。表ll_(data,......,tm],d)=retrieve(e)ifID()isin[t,......,tm]thenreturn(data,d)elsefail圖4時(shí)說(shuō)明用于實(shí)現(xiàn)所述開啟操作的一個(gè)范例處理220的流程圖。處理220由圖1的防護(hù)裝置104所執(zhí)行,也可通過(guò)硬件、軟件、韌件或其結(jié)合來(lái)實(shí)現(xiàn)。最初,所述調(diào)用者所期望檢索的、帶有加密數(shù)據(jù)的密文被檢索(步驟222)。作出一個(gè)關(guān)于是否允許所述調(diào)用程序檢索所述數(shù)據(jù)的檢查(步驟224),并進(jìn)行基于是否允許所述調(diào)用程序檢索所述數(shù)據(jù)的處理(步驟226)。如果所述調(diào)用程序被允許檢索所述數(shù)據(jù),則所述數(shù)據(jù)(已解密)被返回給所述調(diào)用程序(步驟228)。如果所述調(diào)用程序不被允許檢索所述數(shù)據(jù),則所述處理失敗(步驟230)且所述數(shù)據(jù)不被返回給所述調(diào)用程序。封閉存儲(chǔ)可通過(guò)不同的方式實(shí)現(xiàn)。在一個(gè)實(shí)施例中,通過(guò)使用物理保護(hù)的非易失性存儲(chǔ)器來(lái)實(shí)現(xiàn)封閉存儲(chǔ)。在本實(shí)施例中,所述計(jì)算設(shè)備與具有被保護(hù)的非易失存儲(chǔ)器的不同部分的防護(hù)裝置相聯(lián),并允許每一個(gè)防護(hù)裝置只能訪問(wèn)與所述防護(hù)裝置相關(guān)的部分。在本實(shí)施例中,調(diào)用閉和開啟操作中涉及的存儲(chǔ)和檢索操作以使所述計(jì)算設(shè)備能夠分別存儲(chǔ)和檢索在與所述防護(hù)裝置相關(guān)的被保護(hù)非易失性存儲(chǔ)器中的數(shù)據(jù)。例如,一個(gè)存儲(chǔ)設(shè)備(例如一個(gè)硬盤驅(qū)動(dòng)器)可實(shí)現(xiàn)一個(gè)防護(hù)裝置。不是簡(jiǎn)單的對(duì)所述存儲(chǔ)設(shè)備無(wú)條件地執(zhí)行讀寫命令,所述存儲(chǔ)設(shè)備識(shí)別企圖訪問(wèn)該存儲(chǔ)設(shè)備的主體(例如,基于所述主體的一個(gè)摘要),并僅僅允許一個(gè)特殊的主體訪問(wèn)所述存儲(chǔ)設(shè)備。另外,不同的主體可被約束為只能訪問(wèn)所述存儲(chǔ)設(shè)備的特殊部分(例如,特殊的扇區(qū)或地址范圍)。在另一個(gè)實(shí)施例中,通過(guò)使用密碼術(shù)實(shí)現(xiàn)封閉存儲(chǔ)。下面將描述通過(guò)使用密碼術(shù)來(lái)進(jìn)行封閉存儲(chǔ)的一個(gè)典型實(shí)施例。當(dāng)使用密碼術(shù)來(lái)實(shí)現(xiàn)封閉存儲(chǔ)時(shí),所述資源是一個(gè)密鑰K而不是被物理保護(hù)的存儲(chǔ)器。所述存儲(chǔ),喿作不是物理地存儲(chǔ)其輸入。相反的,所述存儲(chǔ)操作產(chǎn)生一個(gè)密碼保護(hù)的輸出C,該輸出C是一個(gè)以加密和整體保護(hù)形式出現(xiàn)的存儲(chǔ)操作的輸入。所述加密是將一個(gè)對(duì)稱密碼施加到所述輸入上的結(jié)果。后一特性是通過(guò)(在所述輸入被加密之前或之后)將一個(gè)消息驗(yàn)證碼(MAC)施加到所述輸入上獲得的。在表lll中說(shuō)明用于存儲(chǔ)操作的偽碼。在表lll的偽碼中,b涉及被輸入到存儲(chǔ)操作中的位串,c涉及被所述存儲(chǔ)操作輸出的位串。K1涉及密鑰K的第一部分,K2涉及密鑰K的第二部分。所述密鑰K是實(shí)現(xiàn)封閉和存儲(chǔ)操作的防護(hù)裝置的對(duì)稱密鑰。表m_M=MACk1(b)C=(m,Encryptk2(b))Returnc因此,從表lll中可以看到,通過(guò)將一個(gè)MAC應(yīng)用于輸入到所述存儲(chǔ)操作中的位串而生成一個(gè)值(m)。所述MAC被用于密鑰K的一個(gè)部分(K1)。輸入到所述存儲(chǔ)操作中的位串也通過(guò)使用密鑰K的一個(gè)第二部分(k2)而被加密。通過(guò)將所述MAC施加到所述輸入位串并加密所述輸入位串而生成的值被返回給所述存儲(chǔ)操作的調(diào)用程序。所述密鑰K被劃分成兩個(gè)獨(dú)立的密鑰K1和K2,以避免對(duì)MAC和密碼使用相同的密鑰。該劃分能以多種方式中的任何一種方式執(zhí)行。該劃分可使用密鑰K的不同的位或使用一個(gè)或多個(gè)相同的位。例如,假設(shè)密鑰K是1024位,則低512位可用作密鑰K1,高512位可用作密鑰K2,偶數(shù)編號(hào)位(位0,2,4,6,8,10,……1022)可用作密鑰K1,奇數(shù)編號(hào)位(位1,3,5,7,9,11,……,1023)可用作密鑰K2,低650位可用作密鑰K1,高650位可用作密鑰K2(導(dǎo)致某些位可被用于K1和K2)等等。另外,同一密鑰K可被用于MAC和密碼。表III中說(shuō)明的偽碼通過(guò)計(jì)算所述數(shù)據(jù)的MAC、加密數(shù)據(jù)以及輸出所述MAC和所述密文來(lái)實(shí)現(xiàn)所述存儲(chǔ)搡作。另外,所述存儲(chǔ)操作可以不同的方式實(shí)現(xiàn)。例如,所述存儲(chǔ)操作可首先加密所述數(shù)據(jù),然后計(jì)算所述密文的一個(gè)MAC,并輸出所述密文和所述MAC。又譬如,所述存儲(chǔ)操作可計(jì)算所述數(shù)據(jù)的MAC,然后加密所述數(shù)據(jù)和所述MAC,并輸出所述密文。通過(guò)存儲(chǔ)操作的密文來(lái)執(zhí)行的加密可通過(guò)使用不同的對(duì)稱加密算法來(lái)實(shí)現(xiàn)。通常,對(duì)稱加密算法使用同一密鑰進(jìn)行加密和解密。例如,包括三重DES(數(shù)據(jù)加密標(biāo)準(zhǔn))、AES(高級(jí)加密標(biāo)準(zhǔn))等的算法。類似的,所述MAC可以是任意的消息驗(yàn)證碼,例如,預(yù)先在密碼學(xué)一—密碼機(jī)'96,即1996年的《計(jì)算機(jī)科學(xué)》講稿No.1109中,M.Bellare,R.Canetti和H.Krawczyk的"用于信息驗(yàn)證的使用密鑰的哈希函數(shù)"中所描述的MAC。另外,通過(guò)替代一個(gè)MAC的一個(gè)公開密鑰數(shù)字簽名來(lái)對(duì)整體進(jìn)行保護(hù)。圖5是用于實(shí)現(xiàn)所述存儲(chǔ)操作的一個(gè)范例性處理250的流程圖。通過(guò)圖1中的防護(hù)裝置104來(lái)執(zhí)行處理250,并能以硬件、軟件、韌件或其結(jié)合的形式來(lái)實(shí)現(xiàn)。最初,接收將被存儲(chǔ)的數(shù)據(jù)(步驟252)。一個(gè)對(duì)稱加密算法被應(yīng)用于所述數(shù)據(jù)(步驟254)且一個(gè)消息驗(yàn)證碼(MAC)被應(yīng)用于所述數(shù)據(jù)(步驟256)。在步驟254中生成的加密數(shù)據(jù)和在步驟256中生成的MAC值被返回給所述調(diào)用程序(步驟258)。所述檢索操作接收包括一個(gè)MAC值和密文的的輸入位串。所述密文被解密以生成明文,并生成所述密文的一個(gè)MAC值。如果所述明文的MAC值與作為輸入位串的一部分而被接收的MAC值相同,則所述明文被返回給所述調(diào)用程序。但是,如果所述明文的MAC值與作為輸入位串的一部分而被程序。很明顯,為從所述輸入位串獲得所述MAC和所述密文而進(jìn)行的檢索操作的特殊方式取決于實(shí)現(xiàn)所述存儲(chǔ)操作的方式。在表IV中說(shuō)明用于檢索操作的偽碼。在表IV的偽碼中,c涉及被輸入到所述檢索操作中的位串,b涉及被輸出到所述檢索操作中的位串,m涉及被輸入到所述檢索操作中的位串的部分MAC值,d涉及被輸入到所述檢索操作中的位串的部分密文,K1涉及所述密鑰K的第一部分,K2涉及所述密鑰K的第二部分。同上文中結(jié)合所述存儲(chǔ)操作相關(guān)的論述一樣,K1和K2是所述密鑰K的同一部分。表IVLet(m,d)=cB=Decryptk2(d)Ifm=MACk1(b)thenreturnbElsefail因此,從表IV中可以看到,通過(guò)解密輸入給所述檢索操作的位串來(lái)生成一個(gè)值(b)。如果所述檢索操作生成的MAC值與作為輸入給所述檢索操作中的一部分的位串而被接收的MAC值相同,則所述值(b)被返回給所述檢索操作的調(diào)用程序,否則所述檢索操作失敗。表IV中的所述偽碼基于所述存儲(chǔ)操作的實(shí)現(xiàn),在該存儲(chǔ)操作中計(jì)算所述數(shù)據(jù)的MAC并加密所述數(shù)據(jù),所述MAC和密文一起被輸出(和作為到所述檢索操作的輸入位串)。如果所述存儲(chǔ)操作首先加密所述數(shù)據(jù),則計(jì)算所述密文的一個(gè)MAC并輸出所述密文和MAC,然后,所述檢索操作將計(jì)算所述密文的MAC并和以部分輸入位串的形式所接收的MAC相比較,如果所述MAC值相匹配,則解密所述密文并返回所述解密數(shù)據(jù)。如果所述存儲(chǔ)操作被用于計(jì)算所述數(shù)據(jù)的一個(gè)MAC,則加密所述數(shù)據(jù)和MAC,然后所述檢索操作將解密所述輸入位串,然后計(jì)算所述輸入位串中的數(shù)據(jù)的一個(gè)MAC并將該MAC和所述解密字符串中的一個(gè)MAC相比較,如果所述MAC值相匹配,則返回所述數(shù)據(jù)。類似于上文中所述存儲(chǔ)操作的相關(guān)論述,所述檢索操作能使用任意的解密算法。然而,所述解密算法應(yīng)與所述加密算法相應(yīng),以使所述加密數(shù)據(jù)能被解密。類似的,任意的消息驗(yàn)證碼能被用作所述MAC,但是所用的消息驗(yàn)證碼應(yīng)與所述存儲(chǔ)操作使用的消息驗(yàn)證碼相同。圖6是用于實(shí)現(xiàn)所述封閉操作的一個(gè)范例處理270的流程圖。圖1中的一個(gè)防護(hù)裝置104執(zhí)行處理270,且能以硬件、軟件、韌件或其結(jié)合的形式來(lái)實(shí)現(xiàn)。最初,接收一個(gè)密文和MAC值(步驟272)。所述密文被解密以生成明文數(shù)據(jù)(步驟274)。一個(gè)消息驗(yàn)證碼(MAC)被應(yīng)用于所述明文數(shù)據(jù)以生成一個(gè)MAC值,并檢查步驟276中生成的MAC值是否等于步驟272中所接收的MAC值(步驟278)。根據(jù)所生成的MAC值是否等于所接收的MAC值來(lái)進(jìn)行處理(步驟280)。如果所生成的MAC值等于所接收的MAC值,則所述明文數(shù)據(jù)被返回給所述調(diào)用程序(步驟282)。然而,如果所生成的MAC值不等于所接收的MAC值,則處理失敗且所述明文數(shù)據(jù)不被返回所述調(diào)用程序。因此,用于封閉操作的加密方法充分保證了值c(所述存儲(chǔ)操作的輸出)的任何訛誤都能被檢測(cè),并且,若沒(méi)有對(duì)密鑰K2(用于加密值b的密碼所使用的密鑰)的訪問(wèn),值b(所述存儲(chǔ)操作的輸入)不能被檢索。另一類選通功能實(shí)現(xiàn)遠(yuǎn)程驗(yàn)證。遠(yuǎn)程驗(yàn)證的目的是,即使在沒(méi)有到驗(yàn)證裝置強(qiáng)物理耦合(例如,使用服務(wù)器或智能卡)的情況下也能驗(yàn)證程序。在這種情況下,驗(yàn)證是基于密碼的。即,兩個(gè)實(shí)體形成一個(gè)加密驗(yàn)證協(xié)議。這包括能訪問(wèn)一個(gè)機(jī)密的驗(yàn)證配置,該配置通常是基于所述協(xié)議的一個(gè)專用密鑰或一個(gè)對(duì)稱密鑰。另外,所述計(jì)算設(shè)備能將這些驗(yàn)證機(jī)密的使用和要求該使用的配置(例如,處理器和/或軟件)的等同性連接起來(lái)。因此,所述驗(yàn)證裝置能建立所述計(jì)算設(shè)備以及在其上執(zhí)行的所述軟件的的等同性。引用操作和公開密鑰開啟操作分別是用于公開密鑰簽名和公開密鑰解密的選通功能。實(shí)現(xiàn)這些選通功能的防護(hù)裝置訪問(wèn)簽名密鑰Ks和解秘密鑰Kd。所述簽名密鑰Ks和解秘密鑰Kd也被稱之為公開/專用密鑰對(duì)的專用密鑰。該公開/專用密鑰對(duì)是實(shí)現(xiàn)所述引用和公開密鑰開啟操作的防護(hù)裝置的一對(duì)密鑰。所述引用操作通過(guò)所述引用操作的輸入和一個(gè)條件的一個(gè)結(jié)合(例如,級(jí)連)來(lái)返回一個(gè)公開密鑰簽名,該條件識(shí)別何時(shí)和/或所述機(jī)密可被披露給何者。與上文中論述的所述封閉和開啟操作類似,所述機(jī)密的披露受限于多個(gè)條件的任意一個(gè)條件。在一個(gè)實(shí)施例中,該條件是所述調(diào)用程序的一個(gè)標(biāo)識(shí)符(例如是所述調(diào)用程序的摘要)。在所述簽名內(nèi)部具有表示所述操作是在被識(shí)別調(diào)用程序的請(qǐng)求的基礎(chǔ)上執(zhí)行的一個(gè)證明。所述引用操作與一個(gè)驗(yàn)證操作協(xié)力工作,該驗(yàn)證搡作通常是在用于執(zhí)行引用操作的設(shè)備以外的設(shè)備(例如在遠(yuǎn)程服務(wù)器或智能卡上等等)上執(zhí)行。所述驗(yàn)證操作執(zhí)行一個(gè)公開密鑰簽名驗(yàn)證,并檢索和評(píng)估所述調(diào)用程序(和/或其它用于披露所述機(jī)密的條件)的標(biāo)識(shí)符。在表V中說(shuō)明用于引用操作的偽碼。在表V的偽碼中,ID()涉及上述的ID()函數(shù),a涉及被輸入到所述引用操作中的數(shù)據(jù),Ks涉及一個(gè)簽名密鑰。表VD=ID()Returnsn=Signatureks(d,a)因此,從表V中可以看出,所述引用搡作獲得所述調(diào)用程序的一個(gè)摘要并接收一個(gè)輸入值a。所述引用操作使用簽名密鑰Ks生成輸入值a和所述調(diào)用程序的摘要的數(shù)字簽名(sn)。輸入值a可由所述調(diào)用程序生成,或者可以是從另一個(gè)組件或設(shè)備(例如,將被執(zhí)行驗(yàn)證操作的設(shè)備)所接收的一個(gè)值。使用公開密鑰加密來(lái)生成所述數(shù)字簽名。圖7是說(shuō)明用于實(shí)現(xiàn)所述引用操作的一個(gè)范例處理300的流程圖。圖1中的防護(hù)裝置執(zhí)行處理300,且能以硬件、軟件、韌件或其結(jié)合的形式來(lái)實(shí)現(xiàn)。最初,從一個(gè)調(diào)用程序(步驟302)接收輸入數(shù)據(jù)。獲得該調(diào)用程序的一個(gè)標(biāo)識(shí)符(一個(gè)/或多個(gè)用于檢索所述輸入數(shù)據(jù)的其它條件)(步驟304)且生成一個(gè)數(shù)字簽名(步驟306),該數(shù)字簽名基于所述輸入數(shù)據(jù)和所述調(diào)用程序的標(biāo)識(shí)符(和/或一個(gè)或多個(gè)其它條件)的結(jié)合。所述驗(yàn)證操作執(zhí)行一個(gè)公開密鑰簽名驗(yàn)證并檢索和評(píng)估所述調(diào)用程序的標(biāo)識(shí)符。所述驗(yàn)證操作通常從除執(zhí)行驗(yàn)證操作的設(shè)備以外的設(shè)備(例如,遠(yuǎn)程服務(wù)設(shè)備、智能卡等)中接收由一個(gè)調(diào)用程序生成的一個(gè)數(shù)字簽名。所述驗(yàn)證操作提取所述程序的摘要(例如,一個(gè)應(yīng)用程序、操作系統(tǒng)、固件程序等)并評(píng)估該摘要以決定如何執(zhí)行,上述程序從所接收的數(shù)字簽名中調(diào)用所述引用操作。在表VI中說(shuō)明用于所述驗(yàn)證操作的偽碼6。在表VI的偽碼中,d涉及調(diào)用所述引用操作的程序的摘要,a涉及被輸入到所述引用操作中的值,Sn涉及所迷驗(yàn)證操作所接收的作為一個(gè)輸入的數(shù)字簽名。表VI(d,a)=ExtractKv(Sn)Evaluate(d)因此,從表VI可以看出,所述驗(yàn)證操作接收一個(gè)數(shù)字簽名,并使用驗(yàn)證密鑰Kv(該密鑰是包括所述簽名密鑰Ks的公開/專用密鑰對(duì)的公開密鑰)從所述簽名中提取所述摘要d和值a。所述驗(yàn)證操作能評(píng)估調(diào)用所述引用操作的程序的摘要d。評(píng)估摘要d的方式可以改變。例如,所述評(píng)估可包括將摘要d與被"核準(zhǔn)的"或"信任的"應(yīng)用程序的列表相比較。圖8是用于實(shí)現(xiàn)所述驗(yàn)證操作的一個(gè)范例處理320的流程圖。圖1中的防護(hù)裝置104執(zhí)行處理320,并能以硬件、軟件、韌件或其結(jié)合的形式來(lái)實(shí)現(xiàn)。最初,接收一個(gè)數(shù)字簽名(步驟322)。引用一個(gè)輸入值(使用所述引用操作)的調(diào)用程序(和/或一個(gè)或多個(gè)用于檢索所述輸入值的其它條件)的標(biāo)記符和所述輸入值本身從所述數(shù)字簽名中被提取(步驟324)。評(píng)估所述調(diào)用程序的標(biāo)識(shí)符(和/或一個(gè)或多個(gè)被提取的其它條件)以確定如何繼續(xù)進(jìn)行所述輸入值(步驟326)。所述公開密鑰開啟操作是在所述調(diào)用者(例如所述調(diào)用程序的摘要)的一致性的基礎(chǔ)上邏輯選通的一個(gè)公開密鑰加密版本或一個(gè)或多個(gè)其它條件。被輸入到所述公開密鑰開啟操作中的輸入C的公開密鑰解密結(jié)果被解釋為一個(gè)對(duì)(d,s),其中,s是一個(gè)機(jī)密,d識(shí)別一個(gè)可向其披露s的配置(例如,一個(gè)調(diào)用程序的摘要)。如果公開密鑰開啟的調(diào)用者不是d,則所述公開密鑰開啟操作失敗。一個(gè)第二公開密鑰封閉操作生成對(duì)所述公開密鑰開啟操作的輸入c,其能在除執(zhí)行所述公開密鑰開啟操作的設(shè)備以外的設(shè)備(例如,遠(yuǎn)程服務(wù)設(shè)備、紙能卡等)上執(zhí)行。所述公開密鑰封閉操作執(zhí)行對(duì)r(d,s)的公開密要加密。所述公開密鑰開啟操作和公開密鑰封閉操作也可被用于實(shí)現(xiàn)封閉存儲(chǔ)。在表VII中說(shuō)明用于所述公開密鑰開啟操作的偽碼。在表VII的偽碼中,ID()函數(shù)涉及上述的ID()函數(shù),c涉及對(duì)所述公開密鑰開啟操作的輸入,[d1,......,cU涉及一個(gè)或多個(gè)調(diào)用程序的摘要,s可被披露給該程序(或者說(shuō)一個(gè)或多個(gè)其它程序),s涉及所述保護(hù)數(shù)據(jù),Kd涉及一個(gè)解秘密鑰(與一個(gè)防護(hù)裝置相關(guān)的一個(gè)公開/專用密鑰對(duì)中的一個(gè)專用密鑰,而該防護(hù)裝置正執(zhí)行所述公開密鑰開啟操作)。表VII<table>tableseeoriginaldocumentpage24</column></row><table>因此,從表VII中可以看出,所述公開密鑰開啟操作使用公開密鑰解密和所述解密密鑰Kd來(lái)解密所述輸入值a。所述解密輸入值包括一個(gè)或多個(gè)被允許向其披露所述保護(hù)數(shù)據(jù)s的調(diào)用程序的摘要[d1,……,dm(或一個(gè)或多個(gè)可識(shí)別保護(hù)數(shù)據(jù)s何時(shí)被披露和/或披露給何者的其它條件)。所述公開密鑰開啟操作也生成所述調(diào)用程序的一個(gè)摘要。如果所述調(diào)用程序的摘要與摘要[d1,...…,dm]之一相等,則所述保護(hù)數(shù)據(jù)被返回給所述調(diào)用程序。但是,如果所述調(diào)用程序的摘要與摘要[Ch,……,cU中的任何一個(gè)都不相等,則所述保護(hù)數(shù)據(jù)不被返回給所述調(diào)用程序。圖9是用于說(shuō)明實(shí)現(xiàn)所述公開密鑰開啟操作的處理340的流程圖。圖1中的防護(hù)裝置104執(zhí)行處理340,且能以硬件、軟件、韌件或其一個(gè)結(jié)合的形式來(lái)實(shí)現(xiàn)。最初,帶有所述調(diào)用者所期望檢索的加密數(shù)據(jù)的密文被檢索(步驟342)。檢查是否允許所述調(diào)用者檢索所述數(shù)據(jù)(步驟344),并根據(jù)所述調(diào)用者是否被允許檢索所述數(shù)據(jù)來(lái)進(jìn)行處理(步驟346)。如果所述調(diào)用者被允許檢索所述數(shù)據(jù),則所述數(shù)據(jù)(已通過(guò)公開密鑰被解密)被返回給所述調(diào)用者(步驟348)。如果所述調(diào)用者被允許檢索所述數(shù)據(jù),則所述處理失敗(步驟350)且所述數(shù)據(jù)不被返回給所述調(diào)用者。所述公開密鑰封閉操作是一個(gè)在所述調(diào)用者(例如,所述調(diào)用程序的摘要,或一個(gè)或多個(gè)其它程序)一致性的基礎(chǔ)上通過(guò)邏輯選通獲得的公開密鑰加密方案。所述公開密鑰封閉操作執(zhí)行一個(gè)函數(shù)對(duì)(d,s)的一個(gè)公開密鑰加密,其中s是一個(gè)機(jī)密且d識(shí)別可以向其披露所述s的一個(gè)或多個(gè)配置(例如,一個(gè)調(diào)用程序的摘要)。在表VIII中說(shuō)明用于所迷公開密鑰封閉操作的偽碼。在表VIII的偽碼中,c涉及所述公開密鑰封閉操作的輸出,[d1,......,dm]涉及一個(gè)或多個(gè)調(diào)用程序的摘要,s能被披露給該調(diào)用程序,s涉及所述保護(hù)數(shù)據(jù),Ke涉及一個(gè)加密密鑰。表VIII<table>tableseeoriginaldocumentpage25</column></row><table>因此,從表VIII中可以看出,所述公開密鑰封閉操作接收作為輸入的所述保護(hù)數(shù)據(jù)s和可以向其披露所述保護(hù)數(shù)據(jù)s的一個(gè)或多個(gè)程序的摘要[d1,...,dm]。所述函數(shù)對(duì)[d1,……,dm]、即s被使用基于所述加密密鑰Ke的公開密鑰密碼加密s。所述加密密鑰Ke是試圖能夠解密所述密文的所述防護(hù)裝置的公開密鑰。來(lái)自所述公開密鑰加密的密文被返回給所述調(diào)用程序圖10是說(shuō)明用于實(shí)現(xiàn)所述公開密鑰封閉操作的一個(gè)范例處理360的一個(gè)流程圖。處理360由圖1中的一個(gè)防護(hù)裝置104所執(zhí)行,且能以硬件、軟件、韌件或其一個(gè)結(jié)合的形式來(lái)實(shí)現(xiàn)。最初,從一個(gè)調(diào)用者接收將被封閉的一個(gè)機(jī)密(步驟362)。使用公開密鑰加密或者如果一個(gè)或多個(gè)其它條件被滿足,則加密所述機(jī)密,從而使所述機(jī)密只能被一個(gè)特定的目標(biāo)程序所檢索(步驟364)。包括所述加密機(jī)密的密文被返回給所述調(diào)用者(步驟366)。附加信息也可被返回給所述調(diào)用者(作為所述密文的一部分或與所述密文分離的一部分),例如所述調(diào)用者的一個(gè)摘要和/或所述目標(biāo)程序的摘要。所述引用和公開密鑰開啟搡作試圖被用于連接公開密鑰驗(yàn)證協(xié)議。大多數(shù)公開密鑰驗(yàn)證協(xié)議可通過(guò)替換調(diào)用公開密鑰解密、公開密鑰加密、簽名和簽名驗(yàn)證中的任何一個(gè)而被直接修改,其中的公開密鑰解密、公開密鑰加密、簽名和簽名驗(yàn)證分別通過(guò)對(duì)公開密鑰開啟、公開密鑰封閉、引用及驗(yàn)證的調(diào)用而實(shí)現(xiàn)。在某些情況下,獲得一個(gè)隨機(jī)數(shù)是很重要的(例如,作為生成密鑰的基礎(chǔ))。隨機(jī)數(shù)能通過(guò)多種不同的方式而獲得。在一個(gè)實(shí)施例中,隨機(jī)數(shù)的來(lái)源是一個(gè)以計(jì)算設(shè)備硬件形式實(shí)現(xiàn)的密碼隨機(jī)數(shù)發(fā)生器。作為上述封閉操作的一個(gè)選擇是將所述封閉操作和一個(gè)隨機(jī)數(shù)生成操作相結(jié)合的通用封閉操作。所述通用封閉操作接收作為輸入的所述目標(biāo)程序的摘要[t1,……,tm],該目標(biāo)程序能檢索所述機(jī)密(和/或必須被滿足從而使得所述機(jī)密能夠被檢索的其它條件)。所述通用封閉操作生成一個(gè)隨機(jī)數(shù)并封閉新生成的隨機(jī)數(shù),以使它只能由具有目標(biāo)摘要[t1,……,tm]中一個(gè)摘要的調(diào)用程序(和/或被滿足的其它條件)來(lái)檢索。在表IX中說(shuō)明用于所述通用操作的偽碼。在表IX的位碼中,ID()涉及上述ID()函數(shù),c涉及所述通用操作的輸出,s涉及所述新生成的隨機(jī)數(shù),[t1,......,tm涉及被允許檢索值s的一個(gè)或多個(gè)目標(biāo)程序(其是可調(diào)用所迷通用操作的任意程序之一),或者說(shuō)一個(gè)或多個(gè)其它條件,函數(shù)GenRandom()涉及生成一個(gè)隨機(jī)數(shù)的一個(gè)函數(shù)。表IXD=ID()S=GenRandom()C:store(s,[",…...,tm],d)Rstumc圖11是說(shuō)明用于實(shí)現(xiàn)所述通用封閉操作的一個(gè)范例處理380的一個(gè)流程圖。處理380由圖1中的防護(hù)裝置104所執(zhí)行,且能以硬件、軟件、韌件或其一個(gè)結(jié)合的形式來(lái)實(shí)現(xiàn)。首先,從用于識(shí)別能夠檢索一個(gè)機(jī)密的目標(biāo)程序或?qū)⒈粷M足以使得所述機(jī)密能夠被檢索的一個(gè)或多個(gè)條件的調(diào)用者處接收輸入(步驟382)。然后生成所述機(jī)密(步驟384),所述機(jī)密被加密以使所述機(jī)密只能被識(shí)別的目標(biāo)程序所檢索(步驟386),或者只有當(dāng)一個(gè)或多個(gè)條件被滿足時(shí),所述機(jī)密才能夠被檢索。然后,包括所述加密機(jī)密的密文被返回給所述調(diào)用者(作為所述密文的一部分或從所述密文所分離出的一部分),例如是所述調(diào)用者的一個(gè)摘要和/或所述目標(biāo)程序的摘要。由一個(gè)解密防護(hù)裝置所提供的服務(wù)可被用于通用封閉服務(wù)。例如,參閱圖1和圖2,初始化中,層n-1基于層n的一致性而披露一個(gè)單密鑰給層n(例如,在所述計(jì)算設(shè)備的復(fù)位和啟動(dòng)以后,或在一個(gè)程序開始執(zhí)行之前)。層n存儲(chǔ)該密鑰并使用它加密附加機(jī)密。在所述平臺(tái)被導(dǎo)入相同配置的下一時(shí)刻,所述解密防護(hù)裝置提供相同的根密鑰(例如,通過(guò)開啟或公開密鑰開啟),且先前被加密的所有機(jī)密能被層n所檢索。在某個(gè)實(shí)施例中,當(dāng)下一層被初始化時(shí),一個(gè)較低層向所述下一層披露一個(gè)或多個(gè)機(jī)密(例如,在所述計(jì)算設(shè)備的復(fù)位和啟動(dòng)以后,或在一個(gè)程序開始執(zhí)行之前)。在該選通披露之后,所述較低層不再被使用(直到下一個(gè)啟動(dòng)或復(fù)位)。該使用模型被稱為解密防護(hù)模型。通過(guò)使用該解密防護(hù)模型,對(duì)所述較低層的訪問(wèn)被減少。使用時(shí)間隔離和空間隔離,這里所述的選通功能可與服務(wù)防護(hù)裝置和解密防護(hù)裝置一起使用。實(shí)現(xiàn)驗(yàn)證操作的四種服務(wù)模型如下所述(1)服務(wù)防護(hù)裝置一一空間隔離;(2)解密防護(hù)裝置一一空間隔離;(3)解密防護(hù)裝置一一時(shí)間隔離;(4)服務(wù)防護(hù)裝置一一時(shí)間隔離。這里所述的服務(wù)模型中,假設(shè)一個(gè)較低級(jí)防護(hù)裝置已經(jīng)向位于正在被考慮層處的所述防護(hù)裝置披露了一個(gè)或多個(gè)密鑰。獲得這些密鑰的方式依賴于所述防護(hù)裝置和其下的層的隔離模型。在同一臺(tái)計(jì)算設(shè)備中的不同的層可使用任何不同的服務(wù)模型。(1)服務(wù)防護(hù)裝置一一空間隔離初始化時(shí),所述防護(hù)裝置測(cè)量并保存請(qǐng)求程序的一致性。所述防護(hù)裝置使用處理器服務(wù)和一個(gè)展現(xiàn)所述驗(yàn)證操作基本操作的系統(tǒng)調(diào)用接口來(lái)實(shí)現(xiàn)一個(gè)保護(hù)系統(tǒng)(例如,一個(gè)處理器或其它安全處理器或公用處理器)。(2)解密防護(hù)裝置一一空間隔離所述防護(hù)裝置在初始化時(shí)獲得加密碼形式的服務(wù)請(qǐng)求。該點(diǎn)可被存儲(chǔ)在存儲(chǔ)器中,或者說(shuō)從外存儲(chǔ)器獲得。所述防護(hù)裝置測(cè)量初始化程序的一致性,并根據(jù)上述的控制函數(shù)將密鑰披露給程序。在放棄對(duì)下一層的控制之前,所述防護(hù)裝置為自身和其機(jī)密資源設(shè)立模式保護(hù)。(3)解密防護(hù)裝置一一時(shí)間隔離所述防護(hù)裝置在初始化時(shí)獲得密碼點(diǎn)形式的服務(wù)請(qǐng)求(位組)。該點(diǎn)可被存儲(chǔ)在存儲(chǔ)器中,或者說(shuō)可從外存儲(chǔ)器獲得。所述防護(hù)裝置測(cè)量初始化程序的一致性,并根據(jù)上述的選通功能將密鑰披露給程序。在傳遞對(duì)這些程序的控制之前,所述防護(hù)裝置刪除(反之使其不可接入)被用于實(shí)現(xiàn)所述選通功能的密鑰。(4)服務(wù)防護(hù)裝置一一時(shí)間隔離在所述服務(wù)防護(hù)裝置——時(shí)間隔離模型中,所述計(jì)算設(shè)備通過(guò)安全復(fù)位來(lái)安全地保持程序狀態(tài)。該模型與模型(1)(服務(wù)防護(hù)裝置一一空間隔離)類似,然而,在將控制傳遞到下一層之前,所述服務(wù)防護(hù)裝置刪除其機(jī)密(使其喪失功能直到下一次重新啟動(dòng))。下一層將正常執(zhí)行,直到其需要請(qǐng)求來(lái)自所述防護(hù)裝置的一個(gè)服務(wù)。在這一點(diǎn)上,其將所述請(qǐng)求的參數(shù)存儲(chǔ)到存儲(chǔ)器中的某個(gè)位置,該位置能使存儲(chǔ)內(nèi)容免于一個(gè)復(fù)位或執(zhí)行一個(gè)復(fù)位。當(dāng)所述設(shè)備被重新啟動(dòng)時(shí),所述服務(wù)防護(hù)裝置獲得其機(jī)密,看見并(使用其密鑰)執(zhí)行所述請(qǐng)求,使所述密鑰和任何相關(guān)信息失效,并將計(jì)算和控制的結(jié)果傳送給下一層(最初請(qǐng)求服務(wù)的層)。在某些實(shí)施例中,如果一臺(tái)計(jì)算設(shè)備支持空間隔離,則所述安全核心將披露所述基本(操作)封閉、開啟、獲得隨機(jī)數(shù)(用于獲得一個(gè)隨機(jī)數(shù))和公開密鑰開啟(或引用)。所述安全核心可實(shí)現(xiàn)一個(gè)解密防護(hù)裝置或一個(gè)服務(wù)裝置。另一方面,如果所述平臺(tái)支持時(shí)間隔離,則所述安全核心將提供一個(gè)解密防護(hù)裝置,并實(shí)現(xiàn)所述基本(操作)開啟、通用封閉和公開密鑰開啟(或引用)。值得注意的是,可基于封閉和開啟或者開啟和通用封閉基本操作建立引用和公開密鑰開啟的功能。例如,廠商可依據(jù)在卜中實(shí)現(xiàn)的通用封閉和開啟制造一個(gè)實(shí)現(xiàn)引用或公開密鑰開啟的12程序并充當(dāng)用于高級(jí)軟件(例如,操作系統(tǒng))的一個(gè)主機(jī)。所述廠商能生成并封閉所述服務(wù)層所需要的密鑰并將其和所述設(shè)備或CPU—起裝船(或使其在線可用)。以下是對(duì)一系列硬件實(shí)施的一個(gè)典型說(shuō)明,該實(shí)施將能使平臺(tái)支持驗(yàn)證操作。同所述系統(tǒng)中的更高層一樣,最低層圖2中的l。的特征是(a)機(jī)密密鑰資源,(b)有權(quán)訪問(wèn)這些密鑰的特權(quán)碼,和(c)所述層的受控初始化。驗(yàn)證操作提供程序和機(jī)密密鑰之間的強(qiáng)約束。在較高層中,較低層中的防護(hù)裝置保證該約束。在最低層中,沒(méi)有能夠選通訪問(wèn)所述平臺(tái)機(jī)密的潛在軟件防護(hù)裝置。因此,另一種引擎被用于支持所述h密鑰與所述h程序的關(guān)聯(lián)。完成該約束的一種途徑是使h軟件成為不隨射造而變化的平臺(tái)微碼或韌件并使得所述h軟件無(wú)約束地訪問(wèn)所述h密鑰。該平臺(tái)微碼或韌件可被稱為安全核心,且所述h密鑰稱為平臺(tái)密鑰。所述平臺(tái)被設(shè)計(jì)成只能將控制傳送到預(yù)定的安全核心。所述硬件的性能也能被解釋為向所述預(yù)定安全核心披露所述平臺(tái)密鑰的簡(jiǎn)單資源防護(hù)裝置。所述平臺(tái)密鑰和安全核心韌件可以是所述處理器的一部分,也可以利用所述計(jì)算設(shè)備的一個(gè)或多個(gè)組件來(lái)實(shí)現(xiàn)(例如,一個(gè)安全處理其或共用處理器,其也可執(zhí)行加密操作)。所述平臺(tái)密鑰和安全核心韌件可在一個(gè)單獨(dú)的組件中被實(shí)現(xiàn),也可以在所述計(jì)算設(shè)備的多個(gè)組件中被實(shí)現(xiàn)。利用驗(yàn)證操作,程序在一個(gè)可控初始狀態(tài)中被啟動(dòng)。在較高層中,在較低層中運(yùn)行的程序可在正確的入口點(diǎn)開始執(zhí)行。在h處,由硬件來(lái)執(zhí)行該函數(shù)。通常,在電源上升或隨后復(fù)位的情況下,電流處理器按某種確定的順序開始執(zhí)行。例如,一個(gè)最簡(jiǎn)單的情況下,所述處理器啟動(dòng)來(lái)自一個(gè)規(guī)定存儲(chǔ)器單元的取數(shù)和執(zhí)行碼。對(duì)于h,程序可在一個(gè)可控初始狀態(tài)中被硬件所啟動(dòng),該硬件確保所述安全核心是在啟動(dòng)時(shí)執(zhí)行的代碼(作為確定序列的一部分)。另外,沒(méi)有其它平臺(tái)狀態(tài)能破壞所述安全核心的執(zhí)行。復(fù)位和電源上升為所述處理器提供一個(gè)堅(jiān)固的經(jīng)過(guò)良好調(diào)試的清零狀態(tài)。如同在本例中的使用,被用于啟動(dòng)或調(diào)用所述安全核心的所述平臺(tái)狀態(tài)的改變被稱為一個(gè)安全復(fù)位。此外,一個(gè)設(shè)備制造商將安排平臺(tái)密鑰的生成和安裝,該密鑰被用于實(shí)現(xiàn)h的封閉和開啟。如果所述設(shè)備被識(shí)別為一個(gè)PKI(公開密鑰基礎(chǔ)結(jié)構(gòu))的一部分,所述制造商也將保證用于所述平臺(tái)的一個(gè)公開密鑰。這可以直接是被h所使用的一個(gè)平臺(tái)密鑰,或是一個(gè)較高層使用的一個(gè)密鑰。密鑰的生成和認(rèn)證是所述CPU制造商或諸如將所述CPU組裝為一個(gè)設(shè)備的OEM的某些其他部門的職責(zé),另外,所述職責(zé)應(yīng)有多個(gè)當(dāng)事人分擔(dān)一旦執(zhí)行所述安全核心,則可使用上述的隔離引擎來(lái)避免其本身在較高層處代碼的執(zhí)行。空間中的隔離通常包括特權(quán)方式支持,時(shí)間中的隔離通常包括被隱藏在高層中的機(jī)密。在最新的處理器上不需要附加平臺(tái)支持來(lái)支持空間隔離一一現(xiàn)有的特權(quán)方式或特權(quán)級(jí)是足夠的(只要允許訪問(wèn)所述平臺(tái)密鑰的硬件資源能被保護(hù)于較高層)。為支持時(shí)間隔離,硬件輔助允許所述安全核心在將控制傳遞給較高層之前隱蔽所述平臺(tái)密鑰。在所述時(shí)間隔離模型中提供平臺(tái)密鑰安全的一個(gè)途徑是使用被稱為復(fù)位鎖存器的狀態(tài)防護(hù)電路。復(fù)位鎖存器是一個(gè)具有開啟隨后復(fù)位或電源上升特性的硬件電路,但是任何軟件在任何時(shí)候都能關(guān)閉所述鎖存器。一旦被關(guān)閉,所述鎖存器便保持關(guān)閉狀態(tài)直到下一個(gè)復(fù)位或電源上升。實(shí)現(xiàn)一個(gè)時(shí)間隔離安全核心的平臺(tái)將控制一個(gè)復(fù)位鎖存器狀態(tài)下的平臺(tái)密鑰訪問(wèn),且所述安全核心將在將控制傳遞給較高層之前關(guān)閉所述鎖存器。如上所述,所述安全核心也將采取額外的行動(dòng),例如在傳遞控制之前清除存儲(chǔ)器和寄存器,但是這些行動(dòng)和在較高級(jí)中的使用相同。如果所述平臺(tái)使用空間隔離,則所述安全核心使用特權(quán)方式以避免其自身和其平臺(tái)密鑰受到它所接待的程序(例如操作系統(tǒng))的侵害。而且,所述安全核心為所述驗(yàn)證操作的調(diào)用而設(shè)立一個(gè)系統(tǒng)調(diào)用接口。如果所述平臺(tái)使用空間隔離,則所述平臺(tái)也將包括一個(gè)能夠完好保存安全復(fù)位以便將參數(shù)傳送給服務(wù)程序的存儲(chǔ)器。為調(diào)用一個(gè)服務(wù),操作系統(tǒng)在所述安全核心已知的一個(gè)存儲(chǔ)單元中準(zhǔn)備一個(gè)命令和參數(shù)塊,并執(zhí)行一個(gè)安全復(fù)位。如果所述操作系統(tǒng)希望繼續(xù)執(zhí)行后續(xù)的服務(wù)調(diào)用(與一個(gè)簡(jiǎn)單的重新啟動(dòng)相對(duì)),則該操作系統(tǒng)和所述安全核心將進(jìn)行附加的測(cè)量,以保證其被可靠和安全地執(zhí)行。這里所述的驗(yàn)證操作可被用于多種設(shè)置的安全性,例如保護(hù)個(gè)人數(shù)據(jù)免受病毒、保護(hù)秘密的服務(wù)數(shù)據(jù)免受網(wǎng)絡(luò)攻擊、網(wǎng)絡(luò)管理、復(fù)制保護(hù)、可信賴的分布式計(jì)算等等。所述驗(yàn)證操作允許不同的程序,這些程序可在同一計(jì)算機(jī)上執(zhí)行而不需一個(gè)特殊的信賴關(guān)系,以保護(hù)它們的與其它軟件無(wú)關(guān)的加密資源。以下的一些論述涉及一個(gè)SSP(安全服務(wù)處理器)。在一個(gè)實(shí)施例中,一個(gè)SSP是一個(gè)處理器(用于一臺(tái)計(jì)算設(shè)備中),該處理器提供基礎(chǔ)的機(jī)密服務(wù)給一臺(tái)計(jì)算設(shè)備(例如,所述SSP支持這里所述的選通功能(例如,圖2中的層h))。所述SSP可使用密鑰,具有一個(gè)或多個(gè)所述SSP才有的(或被認(rèn)為才有的)密鑰。所述SSP可以是所述設(shè)備的CPU的一部分,或者是一個(gè)或多個(gè)其它處理器。例如,所述SSP可以是一臺(tái)計(jì)算設(shè)備中的一個(gè)分離芯片或集成電路(IC)。在一個(gè)不同實(shí)施例中,,一個(gè)SSP是一個(gè)被適當(dāng)隔離的軟件程序,該程序同前面的實(shí)施例一樣將相同的功能披露給它的調(diào)用者。所述SSP的實(shí)施例可(直接或間接地)訪問(wèn)加密密鑰。為提供這種訪問(wèn),有許多實(shí)施選項(xiàng)存在。例如,所述SSP可調(diào)用在較低層中的服務(wù)或解密防護(hù)裝置?;蛘咚鯯SP可排它的訪問(wèn)包括所請(qǐng)求的密鑰的永久存儲(chǔ)器(例如,硬盤、閃存、ROM等等)的某部分。總之,在一個(gè)較高層中,一個(gè)SSP由被暴露于主體的功能所定義。一個(gè)SSP是一個(gè)可訪問(wèn)密鑰的防護(hù)裝置(如上所述)。所述SSP使用這些密鑰來(lái)提供加密服務(wù)給其調(diào)用者。以下的部分將描述SSP所體現(xiàn)的典型功能實(shí)例操作以下是對(duì)封閉存儲(chǔ)操作和遠(yuǎn)程驗(yàn)證操作的實(shí)施例的論述。該部分說(shuō)明上述封閉、開啟、應(yīng)用和公開密鑰開啟操作的實(shí)施例。下列定義在本部分中使用<table>tableseeoriginaldocumentpage32</column></row><table>另外,該部分涉及存取策略涉而后面的部分涉及約束密鑰操作。所述訪問(wèn)策略描述什么時(shí)候所述特定操作是功能性的(即,它們將在什么時(shí)候工作)。一臺(tái)計(jì)算設(shè)備的用戶可選擇性地切斷某個(gè)函數(shù)。例如,所述計(jì)算設(shè)備(例如,一個(gè)實(shí)現(xiàn)所述封閉操作的SSP)包括一個(gè)被稱為FeatureEnable的寄存器。所述寄存器中的一個(gè)位被稱為MainEnable。如果所述用戶設(shè)置MainEnable為假,則在這些部分中沒(méi)有函數(shù)再會(huì)工作。每個(gè)函數(shù)包括的存取策略描述描述了在什么樣的FeatureEnable設(shè)置下所述函數(shù)才工作。封閉定義SSP_STATUSSeal([in]SECRETS,[in]DIGESTTarge[2],[in]UNIT32MaxLen,[out]UNIT32*ActualLen,[out]BYTE*SealedBlob)參數(shù)Sea卜lnput::=SEQUENCEROrdinalINTEGER,SecretSecret,TargetDigestPair}Sea卜Output::=SEQUENCEROrdinalINTEGER,StatusINTEGER,Sealed-bolbOCTETSTRING}返回值SSP—SUCCESS注釋如果下列評(píng)估為真,則所述封閉操作形成只能被相應(yīng)開啟操作解密的一個(gè)加密點(diǎn)(一組位)攀編石馬正確嗎?MAC正確嗎?魯在所述封閉操作期間,名為目標(biāo)的當(dāng)前SK/SL(安全核心或安全裝入城序)正在運(yùn)行嗎?開啟增加了內(nèi)部隨機(jī)性以使同一輸入上的封閉操作的輸出導(dǎo)致不同的結(jié)果。這確保開啟不能被作為一個(gè)硬件設(shè)備標(biāo)識(shí)符使用。開啟也包括一個(gè)程序的標(biāo)識(shí)符,當(dāng)執(zhí)行所述封閉以提供完整的信息給所述開啟裝置時(shí),該程序調(diào)用所述封閉操作(例如,保存在所述SSP的PCR寄存器中的調(diào)用程序的摘要,在這里也被稱為PCR值)。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsesymmKey==All|FeatureEnable.UseSymmKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UseSummKey)作用所述封閉操作實(shí)現(xiàn)下列功能1.生成一個(gè)128位隨機(jī)數(shù)R2.使D()成為所述PCR[O]的當(dāng)前值,D1=PCR[13.摘要M=HMAC[KM](R||S||target||D0||D1)4.C=AES[Ks](R||S||Target||D0||D1||M)5.返回帶有SealedBlob的SSP—SUCCESS給C開啟定義SSP—STATUSUnseal([in]BYTE*SealedBlob,[in]UINT32SealedBlobLen[out]SECRETS,[out]DIGESTSource)參數(shù)Unseal-lnput::=SEQUENCEROrdinalINTEGER,Sealed-blobOCTETSTRING}Unseal-Output::=SEQUENCE{OrdinalINTEGER,StatusINTEGER,SecretSecret,SourceDigest}返回值SSP—SUCCESSSSP—UNSEAL—ERROR注釋所述開啟操作內(nèi)部解密一個(gè)由所述封閉操作生成的點(diǎn)并檢查下列條件編碼正確嗎?在所述封閉操作期間,是名為目標(biāo)的所述PCR的當(dāng)前值嗎?如果所有檢查都成功,則所述機(jī)密和所述封閉裝置的PCR被返回;否則返回一個(gè)UNSEAL—ERROR。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsesymmKey==All|FeatureEnable.UseSymmKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UseSummKey)作用所述開啟操作執(zhí)行下列功能1.M=AES畫1[Ks](SealedBlob)2.將M解釋為(BIT[128]R||SECRETS1||DIGESTTarget(川DIGESTTarget1||DIGESTSealer(川DIGESTSealeM||DIGESTN).3.DIGESTD=HMAC[KM](R||S1||Target0||Target1||Sealer(川Sealer".4.If(Target()!=PCR剛Target1!=PCR[1])returnSSP_UNSEAL_ERRORwithS,Sourcesettozero.5.IfD!=NreturnSSPJJNSEAL一ERRORwithS,Sourcesettozsro.6.ElsereturnSSP_SUCCESSwithSsettoS1andSoucesetto{Sealer(),Sealer1}.引用定義SSP—STATUSQuote([in]BITSTRINGd國(guó)ext,[out]PKSingnatureSigBlob)參數(shù)Quote-Input::={OrdinalINTEGER,d畫extDIGEST}Quote-output::={OrdinalINTEGER,StatusINTEGER,Sig-blobPKSJgnature}返回值SSP—SUCCESSSSP_CRYPTO_ERROR注釋所述引用操作指示所述SSP對(duì)由外部提供的D-EXT和內(nèi)部PCR值的連接進(jìn)行簽名。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UseSummKey)作用所述引用操作執(zhí)行下列功能1.所述SSP構(gòu)成由消息類型QuoteMessage的標(biāo)識(shí)符、D-EXT和所述PCR寄存器的內(nèi)容的拼接組成的一個(gè)信息M,在DER(特殊的編碼規(guī)則)編碼情況下SEQUENCE{Message-typePKMessageType,d-extDigestperDigestPair2.所述SSP使用Kq、PRIV并根據(jù)如在PKCS弁V02.1中規(guī)定的RSASSA-PSS-SIGND的默認(rèn)值經(jīng)過(guò)M生成簽名的消息。如果所述函數(shù)返回一個(gè)出錯(cuò)信息,則返回帶有被設(shè)為零的SigBlob的SSP_CRYPTO_ERROR。3.所述SSP返回SSP—SUCCESS和所述簽名值,該簽名值是剛剛和位于SigBlob中的簽名算rSASSA-PSS-Default-ldentifier—起計(jì)算的。公開密鑰開啟定義SSP_STATUSPKJJnseal([in]PKCiphertextSealedBlob,[out]SECRETSecret,)參數(shù)PKUnseal-lnput::={OrdinalINTEGER,Pk-sealed-blobPKCiphertext}PKUnseal-output::={OrdinalINTEGER,StatusINTEGER,SecretSecret}返回值SSP_SUCCESSSSP一CRYPTO一ERRORSSP—BAD_DATA_ERROR注釋所述公開密鑰開啟操作采用一個(gè)416位長(zhǎng)度的、特殊格式的加密點(diǎn)。該點(diǎn)被解密,且如果所述解密和解碼成功,則所述4^!6位信息被解釋為一個(gè)加密值和所述PCR值的拼接,該拼接被允許接收所述解密值。如果當(dāng)前PCR值與在所述機(jī)密點(diǎn)中所規(guī)定的值相等,則披露所述機(jī)密;否則返回一個(gè)出錯(cuò)信息。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UseSummKey)作用所述引用操作實(shí)現(xiàn)下列功能1.所述SSP檢測(cè)pk-seales-blob中的所述算法標(biāo)識(shí)符是否為sspV1BoundKey。2.所述SSP才艮據(jù)在PKCS中關(guān)見定的RSAES畫OAEP-DECRYPT的默認(rèn)值內(nèi)部解密SealedBlob,獲得一個(gè)明文消息M。3.如果所述解碼操作的輸出是"解碼錯(cuò)誤",則返回帶有被置零的才幾密的SSP一BAD—DATA—ERROR。4.否則,所恢復(fù)的信息M將具有根據(jù)DER編碼的如下形式SEQUENCE{Message-typePKMessageType,secretSecrettargetDigest}并且,機(jī)密由256位(=32八位字節(jié))組成,且目標(biāo)由160位(=20八位字節(jié))組成。所述消息類型是sspV1PKSealedMessage。如果這些條件的任何一個(gè)沒(méi)被滿足,則返回帶有被置零的機(jī)密的SP—BAD—DATA_ERROR。1.如果target!=PCR返回帶有被置零的機(jī)密的SP—BAD_DATA_ERROR。2.如果target==PCR返回帶有被置零的機(jī)密的SP—SUCCESS。約束密鑰操作另外,一組約束密鑰函數(shù)或操作允許局部設(shè)置和鑒定加密密鑰(例如,利用SSP),且也允許密鑰從所信任的遠(yuǎn)程部分進(jìn)行通信(例如,傳播到所述SSP)。約束密鑰的功能如下表示1.在某個(gè)系統(tǒng)層處的一個(gè)服務(wù)防護(hù)裝置(例如,SSP)直接訪問(wèn)一個(gè)約束密鑰。每一個(gè)約束密鑰具有一個(gè)相關(guān)條件,該條件確定哪一個(gè)(些)防護(hù)裝置可以訪問(wèn)所迷約束密鑰。該條件被隱含地解釋。即,所述約束密鑰被加密,以使僅僅一組或多組防護(hù)裝置利用所述密鑰去解密它。2.對(duì)所述約束密鑰進(jìn)行訪問(wèn)的服務(wù)防護(hù)裝置將請(qǐng)求使用所述約束密鑰(例如,簽名、MAC、加密、解密)的函數(shù)披露給在較高層中的主體。每個(gè)約束密鑰可具有一個(gè)相關(guān)使用條件,在這種情況下,所述防護(hù)裝置將僅僅服務(wù)于滿足相關(guān)條件的請(qǐng)求。3.約束密鑰被包含在被加密保護(hù)的數(shù)據(jù)結(jié)構(gòu)中(也涉及這里的約束密鑰點(diǎn))。約束密鑰點(diǎn)自行保護(hù)并能被存儲(chǔ)在外部的可信環(huán)境中。約束密鑰具有下列優(yōu)點(diǎn)*每一個(gè)主體可被允許擁有自己的約束密鑰。并且,每一個(gè)主體可被允許擁有任意多個(gè)約束密鑰。對(duì)于更精良的防護(hù)策略來(lái)講,這允許在某些應(yīng)用中設(shè)置和改善秘密。因此,防護(hù)裝置不必局限于擁有被用于服務(wù)來(lái)自全部主體的請(qǐng)求的僅僅一個(gè)或幾個(gè)密鑰。*所述約束密鑰不向除經(jīng)授權(quán)的防護(hù)裝置以外的裝置披露。因此,一個(gè)主體的損害(例如,由于一個(gè)程序錯(cuò)誤)將不會(huì)導(dǎo)致任何約束密鑰的損害。在一個(gè)實(shí)施例中,所述服務(wù)防護(hù)裝置(SSP)以硬件的形式實(shí)現(xiàn)。如果這樣的話,約束密鑰不會(huì)由于惡意的或不爭(zhēng)取的軟件而被損害。所述約束密鑰函數(shù)提供對(duì)加密密鑰的保護(hù)。約束密鑰可被遠(yuǎn)程部分所生成,或它們可通過(guò)GenBoundKey命令而被局部設(shè)置。被局部生成的約束密鑰可發(fā)送一個(gè)"引用"證明,該證明可被用于給遠(yuǎn)程部分提供所述公開密鑰類型的證明、生成密鑰類型的證明、生成期間機(jī)器狀態(tài)的證明以及約束所述密鑰的條件(可選)(例如,摘要)的證明約束密鑰包括一個(gè)或多個(gè)下列要素*所述密鑰的用途(例如,約束簽名、約束引用、約束公開密鑰開啟、約束公開密鑰解密、約束MAC、約束加密或約束解密)。該要素是可選的。如果被包括,該要素將所述約束密鑰限定為只能和被識(shí)別的函數(shù)類型一起被使用。*一個(gè)條件要素(如上所述),它規(guī)定在哪種條件下所述約束密鑰才可以被使用(也被稱為約束密鑰使用條件)。例如,可以用一個(gè)或多個(gè)程序摘要的形式表達(dá)所述條件。在這種情況下,所述約束密鑰必須只能被指定摘要的程序或其代表所使用。條件的另一例子包括如上所述的時(shí)間約束、邏輯式和可執(zhí)行程序。該要素是可選的。如果該要素被忽略,某個(gè)默認(rèn)條件便啟用。例如,所述默認(rèn)條件不可限制對(duì)所述約束密鑰的訪問(wèn)(空條件)。*允許計(jì)算所述密鑰的加密密鑰(所述約束密鑰)或一些數(shù)據(jù)。*(如上所述的)一個(gè)或多個(gè)條件,在該條件下,可以改變所述約束密鑰的使用條件。該改變也被稱為約束密鑰遷移,且該條件是一個(gè)遷移條件。該要素是可選的。如果該要素被忽略,某個(gè)默認(rèn)條件便啟用。例如,所述默認(rèn)條件可"一直為假",以至于所述摘要(如果存在)不能被更改*一個(gè)或多個(gè)條件,在該條件下,可直接訪問(wèn)所述約束密鑰的一組服務(wù)防護(hù)裝置可被更改。該更改也被稱為約束密鑰輸出,且該條件是一個(gè)個(gè)輸出條件。該要素是可選的。約束密鑰的加密保護(hù)如上述的(封閉、開啟、公開密鑰開啟)封閉存儲(chǔ)和證明函數(shù),約束密鑰具有相同的加密要求。特別是,局部生成的約束密鑰可被上述的存儲(chǔ)和檢索函數(shù)的任一加密執(zhí)行所保護(hù)。在所有情況下,所述約束密鑰自身的機(jī)密性和整個(gè)數(shù)據(jù)結(jié)構(gòu)的完整性得以保護(hù),以確??刂扑黾s束密鑰的使用的的不同條件未曾被破壞。如上所述,這可通過(guò)對(duì)稱密碼或帶有MACs或數(shù)字簽名的公開密鑰加密算法的不同結(jié)合而實(shí)現(xiàn)。在一個(gè)實(shí)施例中,所述約束密鑰數(shù)據(jù)結(jié)構(gòu)被公開密鑰加密。函數(shù)在某個(gè)實(shí)施例中,約束密鑰可被用于一個(gè)或多個(gè)下列函數(shù)*BoundSign(約束簽名)*BoundQuote(約束引用)*BoundPKDecrypt(約束公開密鑰解密)*BoundPKUnseal(約束公開密鑰開啟)*BoundMAC(約束消息驗(yàn)證碼)*BoundEncrypt(約束力口密)參BoundDecrypt(約束解密)*GenBoundKey(通用約束密鑰)*BoundKeyMigrate(約束密鑰遷移)參BoundKeyExport(約束密鑰輸出)在每一個(gè)上述函數(shù)中,所述約束密鑰點(diǎn)(所述數(shù)據(jù)結(jié)構(gòu)中的一組位)和被包括在所述約束密鑰點(diǎn)中的密鑰所操作的所述數(shù)據(jù)以參數(shù)的形式被提供給約束密鑰函數(shù)。如果該密鑰的使用單元被包括在所述約束密鑰點(diǎn)中,則所述SSP確保所述約束密鑰被用于正確的目的(例如,類型"BoundQuoteKey,,所設(shè)置的一個(gè)密鑰只能被用于一個(gè)BoundQuote操作中)。在一些執(zhí)行中,所述約束密鑰是一個(gè)公開/專用密鑰對(duì)的一個(gè)專用密鑰。在這些執(zhí)行中,所述約束密鑰點(diǎn)可包括所述專用密鑰,或者說(shuō)允許計(jì)算所述密鑰的一些數(shù)據(jù)。例如,一個(gè)專用密鑰段可被包括在所述約束密鑰點(diǎn)中,該密鑰段與相應(yīng)的公開密鑰相結(jié)合,可被用于重構(gòu)所述公開/專用密鑰對(duì)的專用密鑰。所述BoundSign操作接收一個(gè)將被使用所述約束密鑰簽名的數(shù)據(jù)輸入。所述SSP根據(jù)所述約束密鑰點(diǎn)恢復(fù)所述專用簽名密鑰,然后使用所述恢復(fù)簽名密鑰而生成基于所述數(shù)據(jù)輸入的一個(gè)數(shù)字簽名信息。然后所述SSP輸出所述數(shù)字簽名信息。如果所述約束密鑰點(diǎn)被破壞或任何所述約束密鑰使用條件不令人滿意,則所述SSP不執(zhí)行所述操作。在沒(méi)有被所述SSP所檢索的專用密鑰的情況下,使用所述恢復(fù)專用密鑰對(duì)所述數(shù)據(jù)輸入進(jìn)行數(shù)字簽名。所述BoundQuote操作接收作為輸入的一個(gè)將被簽名的數(shù)據(jù)和一個(gè)約束密鑰點(diǎn)。所述SSP從所述約束密鑰點(diǎn)恢復(fù)所述專用密鑰并使用所述恢復(fù)簽名密鑰來(lái)生成基于如上述引用操作所述的對(duì)所述操作的數(shù)據(jù)輸入和當(dāng)前PCR值(例如,一個(gè)標(biāo)識(shí)符、諸如調(diào)用所述BoundQuote操作的程序的一個(gè)摘要)的一個(gè)簽名。然后所述SSP輸出所述數(shù)字簽名信息。如果所述約束密鑰被破壞或所述約束密鑰使用條件沒(méi)有被滿足,則所述SSP不執(zhí)行所述操作。在一個(gè)實(shí)施中,所述BoundQuote操作類似于所述BoundSign操作,但是其不同之處在于,當(dāng)前PCR值在所述BoundQuote操作中被使用。所述BoundDecrypt操作接收作為輸入的一個(gè)密文和一個(gè)約束密鑰點(diǎn)。所述SSP根據(jù)述約束密鑰點(diǎn)恢復(fù)所述專用密鑰,然后使用所述恢復(fù)專用密鑰去解密所述輸入密文。然后所述解密密文被所述BoundPKDecrypt操作所輸出。如果所述約束密鑰被破壞或任何所述約束密鑰使用條件不令人滿意,則所述SSP不執(zhí)行所述操作。所述BoundPKUnseal操作接收一個(gè)輸入密文和一個(gè)約束密鑰點(diǎn)。所述SSP從所述約束密鑰點(diǎn)恢復(fù)所述專用密鑰,并如同在上述的所述公開密鑰開啟操作中一樣,使用該專用密鑰去解密所述輸入密文。然后,所述BoundPKUnseal操作輸出所述解密數(shù)據(jù)。如果所述約束密鑰點(diǎn)被破壞或所述約束密鑰使用條件沒(méi)有被滿足,則所述SSP不執(zhí)行該操作。所述BoundMAC操作接收一個(gè)使用所述約束密鑰計(jì)算其MAC的數(shù)據(jù)輸入。接收一個(gè)約束密鑰點(diǎn)。如果所述約束密鑰點(diǎn)被破壞或所述約束密鑰使用條件沒(méi)有被滿足,則所述SSP不執(zhí)行所述操作。否則,所述SSP根據(jù)所述約束密鑰點(diǎn)恢復(fù)所述約束密鑰,并通過(guò)使用被恢復(fù)的約束密鑰的數(shù)據(jù)輸入來(lái)生成一個(gè)消息驗(yàn)證碼(MAC)。然后,所述SSP輸出計(jì)算后的MAC。因此,在沒(méi)有被所述SSP披露的約束密鑰的情況下,可使用恢復(fù)約束密鑰來(lái)計(jì)算一個(gè)用于數(shù)據(jù)輸入的MAC。所述BoundEncrypt操作接收一個(gè)數(shù)據(jù)輸入,其可使用所述約束密鑰來(lái)加密,且也接收一個(gè)約束密鑰點(diǎn)。如果所述約束密鑰點(diǎn)被破壞或所述約束密鑰使用條件沒(méi)有被滿足,則所述SSP不執(zhí)行所述操作。否則,所述SSP根據(jù)所述約束密鑰點(diǎn)恢復(fù)所述約束密鑰,并使用所述恢復(fù)約束密鑰來(lái)加密所述數(shù)據(jù)輸入。所述SSP輸出計(jì)算后的密文。因此,在沒(méi)有被所述SSP所披露的約束密鑰的情況下,可使用恢復(fù)約束密鑰來(lái)解密所述數(shù)據(jù)輸入。所述BoundDecrypt操作接收一個(gè)數(shù)據(jù)輸入,其可使用所述約束密鑰來(lái)被解密,并接收一個(gè)約束密鑰點(diǎn)。如果所述約束密鑰點(diǎn)被破壞或所述約束密鑰使用條件沒(méi)有被滿足,則所述SSP不執(zhí)行所述操作。否則,所述SSP根據(jù)所述約束密鑰點(diǎn)恢復(fù)所述約束密鑰,然后恢復(fù)約束密鑰來(lái)解密所述數(shù)據(jù)輸入。然后所述SSP輸出計(jì)算后的明文。因此,在沒(méi)有被所述SSP所披露的約束密鑰的情況下,可使用恢復(fù)約束密鑰來(lái)解密所述數(shù)據(jù)輸入。所述GenBoundKey操作使所述SSP設(shè)置一個(gè)新的約束密鑰。該新的約束密鑰是一個(gè)密碼密鑰,且生成包括新生成的密鑰的一個(gè)新的約束密鑰點(diǎn)。很明顯,所述約束密鑰點(diǎn)不必一直包括整個(gè)密鑰。例如,如果新生成的密鑰是一個(gè)公開/專用密鑰對(duì),則在所述約束密鑰點(diǎn)中包括所述專用密鑰就足夠了。所述新的約束密鑰點(diǎn)必須是一個(gè)或多個(gè)防護(hù)裝置一一通常是執(zhí)行所述操作的SSP(例如,類似于上述的存儲(chǔ)函數(shù),加密保護(hù)所述新的約束密鑰點(diǎn),或者反之保密所述新的約束密鑰點(diǎn)以使其只能被所述SSP所檢索)。所述GenBoundKey搡作也可擁有確定所述新約束密鑰點(diǎn)各個(gè)方面的參數(shù),且描述這些參數(shù)的數(shù)據(jù)一整體保護(hù)的形式附著到所述新生成的專用密鑰(例如,生成數(shù)據(jù),作為所述新的約束密鑰點(diǎn)的一部分)上。如上所述,作為這種數(shù)據(jù)的一個(gè)例子包括所述遷移條件和所述約束密鑰使用條件等等。然后所述新的約束密鑰點(diǎn)被所述GenBoundKey操作所輸出。通常,一個(gè)約束密鑰可以使任何類型的密碼密鑰,包括一個(gè)對(duì)稱密鑰或一個(gè)公開一一專用密鑰對(duì)。精確密鑰類型依賴使用該密鑰類型的約束密鑰操作。例如,在BoundMAC中使用的一個(gè)約束密鑰將作為一個(gè)對(duì)成密鑰,反之,在BoundSign中使用的一個(gè)約束密鑰將作為一個(gè)公開/專用簽名密鑰對(duì)。所述密鑰類型可被規(guī)定為GenBoundKey的一個(gè)參數(shù)。所述BoundKeyMigrate操作允許一個(gè)約束密鑰的使用條件被更改。所述SSP驗(yàn)證一個(gè)或多個(gè)遷移條件是否被更改。多個(gè)條件中的任何一個(gè)可和所述BoundKeyMigrate操作一起被使用(例如,類似于上述的關(guān)于所述封閉和開啟操作的任何條件,該條件可識(shí)別何時(shí)和/或何種數(shù)據(jù)可被遷移)。如果沒(méi)有成功地執(zhí)行該驗(yàn)證,則所述防護(hù)裝置設(shè)置一個(gè)新的約束密鑰點(diǎn),其中的約束密鑰使用條件可根據(jù)請(qǐng)求而被改變。所述BoundKeyExport操作指示所述SSP去更改一組能直接訪問(wèn)所述約束密鑰的防護(hù)裝置(SSP)。所述SSP驗(yàn)證一個(gè)或多個(gè)條件是否被滿足。多個(gè)條件中的任何一個(gè)可與所述BoundKeyExport操作一起被使用(例如,類似于上述的關(guān)于所述封閉和開啟操作的任何條件,該條件可識(shí)別何時(shí)和/或何種數(shù)據(jù)可被遷移)。如果未成功地作出該驗(yàn)證,所述操作失敗。如果成功地進(jìn)行了該驗(yàn)證,則所述SSP依照請(qǐng)求更改對(duì)所述約束密鑰點(diǎn)的加密保護(hù)。在一個(gè)實(shí)施例中,所述SSP使用一個(gè)或多個(gè)新的密鑰來(lái)加密所述約束密鑰。所述約束密鑰的生成器(局部的或遠(yuǎn)程地)可規(guī)定條件的一類例子是所述約束密鑰只能被代表其程序摘要具有一個(gè)特殊的值的一個(gè)主體而被使用。在這種情況下,在所述約束密鑰點(diǎn)的內(nèi)部檢索之后,所述約束密鑰操作檢查請(qǐng)求主體的摘要,且如果所述摘要與在所述約束密鑰點(diǎn)中規(guī)定的不同,則失效和不執(zhí)行附加計(jì)算。借助于請(qǐng)求所述特定SSP的唯一密鑰以便繼續(xù)的加密操作,所述約束密鑰點(diǎn)通常被連接或束縛到一個(gè)特定的SSP上。例如,這種操作可以是MAC、數(shù)字簽名、加密、組合加密和完整性驗(yàn)證函數(shù)。約束密鑰操作實(shí)例在一個(gè)實(shí)施例中,通過(guò)一個(gè)局部遷移證明或一個(gè)由授權(quán)機(jī)構(gòu)所發(fā)布的輸出證明來(lái)授權(quán)一個(gè)遷移。該局部遷移證明是基于下列數(shù)據(jù)結(jié)構(gòu)的RSASSA-PSS-SIGN的一個(gè)默認(rèn)Bound-migration-info::=SEQUENCERSource-bound-blob-digestDigest,Dest-PCRDigestPair使用所述BoundKeyMigrate操作來(lái)請(qǐng)求局部SSP遷移。為了授權(quán)局部遷移,所述SSP被提供一個(gè)Bound-migration-info結(jié)構(gòu),該結(jié)構(gòu)涉及該約束密鑰和對(duì)由所述授權(quán)機(jī)構(gòu)所提供的結(jié)構(gòu)的一個(gè)適當(dāng)形成的證明。如果所述遷移證明是可接受的,所述SSP利用剩余未變化的所有其它屬性重新約束與新PCR相關(guān)的密鑰(例如,如果最初沒(méi)有限定所述密藥為一個(gè)PCR值,當(dāng)重新限定時(shí)便不再如此)。所述source-bound-blob-digest是由所述約束密鑰的外部加密形式的摘要。經(jīng)過(guò)具有例如由所述授權(quán)機(jī)構(gòu)簽名的Bound-export-info結(jié)構(gòu)的所述BoundeyExport函數(shù)實(shí)現(xiàn)所述遠(yuǎn)程遷移Bound-export-info::=SEQUENCERSource-bound-blob-digestDigestDest畫pubkeyRSAPublicKeyDest畫PCRDigestPair當(dāng)一個(gè)密鑰被標(biāo)記得可以輸出時(shí),所述授權(quán)機(jī)構(gòu)完全處于其密鑰受到重新約束的所述設(shè)備或軟件的控制下。所述約束密鑰操作使用一個(gè)PKCiphertext,它是使用下述平臺(tái)公開加密密鑰被加密的一個(gè)類型Bound-Key-blob序列Bound-key-blob::=SEQUENCERMessage-typePKMessageType,Bound-toKey-typeBound-to-PCRBound-key-typeBOOL,DigestPair,MigrateableMigrate畫authExportableExport-authBool,Digest,Bool,DigestDigest,Pub-key-digestBound-keyPKCmpressedPrivateKey}其中Bound-key-type::=INTEGER^BoundSignKey,BoundQuoteKeyBoundDecryptKey,BoundPKUnsealKey}所述bound-to-PCR成分是一個(gè)標(biāo)記,該標(biāo)記指出所述bound-to摘要字段是否與當(dāng)前PCR值相匹配以便使用所述約束密鑰。(migrateable,migrate-authH旨出所述密鑰是否是可遷移的,如果是,則受某種權(quán)限的控制(如果不可遷移,則所述migrate-auth值便不重要)。(exportable,export-auth)指出所述值是否是可輸出的,如果是,則受某種權(quán)限的控制(如果不可輸出,則所述export-auth值便不重要)。Pub-key-digest是相應(yīng)的公開密鑰的摘要,以在所述PKCompressedPrivateKey和所述公開密鑰之間提供一個(gè)恢復(fù)所述專用密鑰所需的強(qiáng)結(jié)合。在一個(gè)例子中,如果通過(guò)所述GenBoundKey函數(shù)來(lái)局部創(chuàng)建一個(gè)約束密鑰,則所述SSP針對(duì)在約束密鑰輸出期間祥述剛剛產(chǎn)生的所述密鑰公開特性的數(shù)據(jù)結(jié)構(gòu)和所述系統(tǒng)結(jié)構(gòu)創(chuàng)建一個(gè)簽名。Bound-key-pub-info::=SEQUENCERMessage-typePKMessageType,〃sspV1BoundKeyGenMessagesig國(guó)nonceDigest,key-typeBound-key-typebound-to-PCRBOOL,bound-toDigestPaJr,migrateableBool,migrate-authDigest,exportableBool,export畫authDigest,creator誦PCRDigestPairbound-pub-keyDigest}在這個(gè)數(shù)據(jù)結(jié)構(gòu)中,key畫type,bound-to-PCR,bound國(guó)to,migrateable,migrate-auth,exportable和export-auth都是新生成密鑰的約束密鑰的特征。Creator-PCR是在輸出所述密鑰時(shí)的有效的PCR,bound-pub-key是新生成的公開密鑰的摘要。Signonce是在請(qǐng)求公開密鑰生成時(shí)所傳遞的所述digest-sized值。所述BoundSign,BoundQuote,BoundPKDecrypt,BoundPKUnseal,GenBoundKey,BoundKeyMigrate和BoundKeyExport操作的典型定義如下BoundSign定義SSP一STATUSBoundSign([in]PKCiphertextBoundKeyBlob,[inRSAPublicKeyPubPartOfBoundKey,[in]BITSTRINGDataToBeSigned[out]PKSignaturesig-blob)參數(shù)BoundSign國(guó)lnput::={OrdinalINTERGERBound-keyBound-pub-keyData-to-be-signedBoundSign-outputBoundKeyBlob,RSAPublicKey,OCTETSTRING}OrdinalINTEGERSig-blobStatusINTEGER,PKSignature}返回值SSP_SUCCESSSSP_CRYPTO—ERRORSSP_BAD—DATA_ERRORSSPJJNSEAL—ERROR注釋所述BoundSign操作采取類型sspV1BoundKey的明文,該明文包括類型BoundSignKey的一個(gè)BoundKeyBlob和相應(yīng)的公開密鑰。如果這些條件中的任何一個(gè)未被滿足,或所述序列未成功解碼,則所述操作失敗,返回SSP—CRYPTO_ERROR。如果Bound-to-PCR被設(shè)定,則所述SSP檢查當(dāng)前PCR值是否與在所述Bound-key-blob序列中的規(guī)定相同。如果不是,則所述SSP返回SSP_CRYPTO_ERROR。最后,所述SSP利用所述解密專用密鑰對(duì)所述輸入信息簽名。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UseSummKey)作用所述BoundSign操作執(zhí)行下列功能1.所述SSP檢測(cè)pk-seales-blob中的所述算法標(biāo)識(shí)符是否為sspV1BoundKey。2.述SSP根據(jù)在PKCS弁1V2,1中頭見定的RSAES-OAEP畫DECRYPT的默認(rèn)值內(nèi)部解密SealedBlob,獲得一個(gè)明文消息M。3.如果所述解碼操作的輸出是"解碼錯(cuò)誤",則返回帶有被置零的才幾密的SSP—CRYPTO—ERROR。4.否則,恢復(fù)的信息M將是帶有類型BoundSignKey的Bound-key-blob形式的一個(gè)DER編碼。如果不是,則所述SSP將發(fā)出SSP—CRYPTO_ERROR。5.如果bound-to-PCR為真,則所述bound-to將和當(dāng)前PCR值相比較。如果所述值不相同,則所述SSP將輸出SSP—CRYPTO_ERROR。6.然后所述SSP使用被提供的相關(guān)公開密鑰來(lái)恢復(fù)所述約束專用密鑰。如果失敗,貝'J所述SSP返回SSP—CRYPTO—ERROR。如果成功,貝寸所述SSP依照PKCS弁1V2.1中所頭見定的RSASSA-PSS-SIGN的默認(rèn)執(zhí)行、使用所述恢復(fù)專用密鑰bound-key來(lái)生成基于所述輸入信息DataToSigned的一個(gè)簽名信息。7.返回SSP-SUCCESSBoundQuote_定義SSP_STATUSBoundQuote([in]PKCiphertextBoundKeyBlob,[in]DIGESTDataToBeSigned[out]PKSignaturesig-blob)參數(shù)BoundQuote-lnput::={OrdinalINTERGER,Bound-keyBoundKeyBlobBound-pub-keyRSAPublicKey,Data-to-be-quotedDigest}BoundQuote-output::={OrdinalINTEGER,StatusINTEGER,Sig畫blobPKSignature}返回值SSP_SUCCESSSSP_CRYPTO_ERRORSSP—BAD—DATA—ERRORSSP—UNSEAL—ERROR注釋所述BoundQuote操作采取類型sspV1BoundKey的公開明文,該明文包括類型BoundQuoteKey的一個(gè)BoundKeyBlob。如果這些條件中的任何一個(gè)未被滿足,或所述序列未成功解碼,則產(chǎn)生SSP—CRYPTO—ERROR,操作失敗。如果Bound-to-PCR被設(shè)定,則所述SSP檢查當(dāng)前PCR值是否與在所述Bound-key-blob序列中規(guī)定的相同。如果不是,則所述SSP返回SSP_CRYPTO—ERROR。最后,所述SSP引用具有所述解密專用密鑰的輸入消息。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UsePrivKey)作用所述BoundQuote操作執(zhí)行下列功能1.所述SSP檢測(cè)pk-seales-blob中的所述算法標(biāo)識(shí)符是否為sspV1BoundKey。2.所述SSP才艮4居在PKCS弁1V2.1中頭見定的RSAES-OAEP-DECR丫PT的默認(rèn)值內(nèi)部解密SealedBlob,獲得一個(gè)明文消息M。3.如果所述解碼操作的輸出是"解碼錯(cuò)誤",則返回帶有被置零的機(jī)密的SSP—CRYPTO—ERROR。4.否則,恢復(fù)的信息M將是Bound-key-blob形式的一個(gè)DER編碼,帶有類型BoundSignKey。如果不是,則所述SSP將發(fā)出SSP_CRYPTO_ERROR。5.如果bound-to-PCR為真,則所述bound-to將和當(dāng)前PCR值相比較。如果所述值不相同,則所述SSP將輸出SSP—CRYPTO—ERROR。6.然后,所述SSP使用恢復(fù)專用密鑰段和公開密鑰以重構(gòu)所述專用密鑰。所述專用密鑰可按如下方式被重構(gòu)。通常,RSA密鑰由數(shù)N-p、(N是兩個(gè)素?cái)?shù)p和q的產(chǎn)物)和兩個(gè)指數(shù)e(加密指數(shù))和d(解密指數(shù))組成。N和e形成所述公開密鑰;d為所述專用密鑰。通常,d和N的長(zhǎng)度相同(例如,2048位)。如果N的因式分解是已知的(即,如果p和q是已知的),則所述專用密鑰d可被輕易確定。注意,p和q只有N的一半。所以,我們存儲(chǔ)p而不是d作為所述專用密鑰。然后,由于給出了公開密鑰N、e和p,所以可以計(jì)算值q-N/p,然后,值d確定地給出p和q。然后依照上面定義的所述引用操作中的說(shuō)明,所述專用密鑰被用于針對(duì)所述輸入信息DataToBeSigned和所述當(dāng)前PCR產(chǎn)生簽名消息。如果所述函數(shù)返回一個(gè)出錯(cuò)信息,則返回帶有被置零的SigBlob的SSP_CRYPTO—ERROR。7.返回SSP-SUCCESSBoundPKDecrypt定義SSP—STATUSBoundPKDecrypt([in]PKCiphertextBoundKeyBlob,[in]RSAPublicKeyBoundPubKey,PKCiphertextDataToBeDcerypted[out]SecretdecryptedData)參數(shù)BoundSign-lnput::={OrdinalINTERGER,Bound-keyBoundKeyBlob,Bound-pub-keyRSAPublicKey,Pk國(guó)sealed-blobPKCiphertext}BoundPKDecrypt-output::={OrdinalINTEGER,StatusINTEGER,d-blobSecret}返回值SSP_SUCCESSSSP_UNSEAL_ERRORSSP—CRYPTO_ERRORSSP_BAD_DATA_ERROR注釋所述BoundSignPKDecrypt操作采取類型sspV1BoundKey的公開密鑰明文,該明文包4舌類型BoundDecryptKey的一個(gè)BoundKeyBlob。如果這些條件中的任何一個(gè)未被滿足,或所述序列未成功解碼,則所迷操作失敗,返回SSP一CR丫PTCLERROR。如果Bound-to-PCR被設(shè)定,則所述SSP檢查當(dāng)前PCR值是否與在所述Bound-key-blob序列中的規(guī)定相同。如果不是,則所述SSP返回SSP_CRYPTO—ERROR。最后,所述SSP利用來(lái)自所述bound-blob的所述解密專用密鑰解密所述輸入信息。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UsePrivKey)作用所述BoundPkDecrypt操作執(zhí)行下列功能1.所述SSP檢測(cè)pk-seales-blob中的所述算法標(biāo)識(shí)符是否為sspV1BoundKey。2.所述SSP才艮才居在PKCS弁1V2.1中^L定的RSAES-OAEP-DECRYPT的默認(rèn)值內(nèi)部解密SealedBlob,獲得一個(gè)明文消息M。3.如果所述解碼操作的輸出是"解碼錯(cuò)誤",則返回帶有被置零的機(jī)密的SSP—CRYPTO—ERROR。4.否則,恢復(fù)的信息M將是具有類型BoundSignKey的Bound-key-blob形式的一個(gè)DER編碼,。如果不是,則所述SSP將發(fā)出SSP一CR丫PTO—ERROR。5.如果bound-to-PCR為真,則所述bound-to將和當(dāng)前PCR值相比較。如果所述值不相同,貝'J所述SSP將輸出SSP—CRYPTCLERROR。6.所述SSP使用所提供的公開密鑰恢復(fù)所述專用密鑰。該專用密鑰在BoundQuote操作中如上述一樣可被恢復(fù)。然后使用在PKCS弁1V2.1中規(guī)定的RSAES-OAEP-DECRYPT的默認(rèn)值恢復(fù)專用bound-key,以解密所述pk-sealed-blob,獲得一個(gè)明文消息M。7.所述SSP設(shè)置d-blob為M。8.返回SSP-SUCCESSBoundPKUnseal_定義SSP—STATUSBoundPKDecrypt([in]PKCiphertextBoundKeyBlob,[in]RSAPublicKeyBoundPubKey,[in]PKCiphertextDataToBeUnsealed[out]SecretdecryptedData)參數(shù)BoundSign-lnput::={OrdinalINTERGER,Bound-keyBoundKeyBlob,Bound-pub-keyRSAPublicKey,Pk-sealed-blobPKCiphertext}BoundPKDecrypt-output::={OrdinalINTEGER,StatusINTEGER,d-blobSecret}返回值SSP_SUCCESSSSPJJNSEAL一ERRORSSP—CRYPTO_ERRORSSP_BAD_DATA_ERROR注釋所述BoundSignPKDecrypt操作采取類型sspV1BoundKey的公開密鑰明文,該明文包括類型BoundDecryptKey的一個(gè)BoundKeyBlob。如果這些條件中的任何一個(gè)未被滿足,或所述序列未成功解碼,則產(chǎn)生SSP—CRYPTO—ERROR,所述操作失敗。如果Bound-to-PCR被設(shè)定,則所述SSP檢查當(dāng)前PCR值是否與在所述Bound-key-blob序列中的規(guī)定相同。如果不是,則所述SSP返回SSP_CRYPTO_ERROR。最后,所述SSP使用PK—Unseal開啟具有來(lái)自所述bound-blob的所述解密專用密鑰的輸入消息。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UsePrivKey)作用所述BoundPkUnseal操作執(zhí)行下列功能1.所述SSP檢查pk-seales-blob中的所述算法標(biāo)識(shí)符是否為sspV1BoundKey。2.所述SSP才艮4居在PKCS弁1V2.1中夫見定的RSAES-OAEP-DECRYPT的默認(rèn)值內(nèi)部解密SealedBlob,獲得一個(gè)明文消息M。3.如果所述解碼操作的輸出是"解碼錯(cuò)誤",則返回帶有被置零的機(jī)密的SSP—CRYPTO—ERROR。4.否則,恢復(fù)的信息M將是帶有類型BoundSignKey的Bound-key-blob形式的一個(gè)DER編碼,。如果不是,則所述SSP將發(fā)出SSP—CRYPTO一ERROR。5.如果bound-to-PCR為真,則所述bound-to將和當(dāng)前PCR值相比較。如果所述值不相同,則所述SSP將輸出SSP—CRYPTO_ERROR。6.所述SSP使用所述約束密鑰點(diǎn)重建所述專用密鑰。所述專用密鑰在所述BoundQuote操作中如上述一樣可被恢復(fù)。然后使用在所述PK一Unseal命令中描述的步驟并使用所述恢復(fù)專用約束密鑰開啟所述pk-sealed-blob。7.如果在所述開啟點(diǎn)中命名的PCR與當(dāng)前PCR不匹配,則所述SSP返回SSP—CRYPT0一ERROR。8.否則,所述SSP設(shè)置d-blob為M。9.返回SSP畫SUCCESS。GenBoundKey定義SSP_STATUSGenBoundKey(in]BoundKeyTypeKeyType,in]BOOLBoundToPcr,in]DIGESTBoundTo[2],in]BOOLmjgrateable,in]DIGESTmigrationAuthority,in]BOOLexportable,in]DIGESTexportAuthority,in]DIGESTSigNonce,out]BoundKeybound-key,out]PKPublickeynewPubKey,out]PKSignatureboundKeyQuoteBlob參數(shù)GenBoundKey-lnput::={OrdinalINTEGER,Key-typeBound-key-type,Bound-to-pcrBOOL,Bound-toDigestPair,MigrateableBOOL,Migrate-authDigest,ExportableBOOL,Export-authDigest,Sig-nonceDigestGenBoundKey-output::={OrdinalINTEGER,StatusINTEGER,Bound-pubSig誦blobBound-blobPKCiphertext,RSAPublicKeyPKSignature}返回值SSP—SUCCESSSSP—BAD_DATA_ERROR注釋所述GenBoundKey操作使所述SSP生成包括新生成的專用密鑰的一個(gè)新的約束密鑰點(diǎn)。所述約束密鑰點(diǎn)被利用所述SSP自己的公開密鑰加密GenBoundKey也輸出所述新生成的密鑰對(duì)的公開密鑰、一個(gè)指出所迷SSP生成所述密鑰的引用簽名、其特性和當(dāng)生成所述密鑰時(shí)所述PCR值。GenBoundKey的調(diào)用者也指示將被生成的約束密鑰類型它是否被用于簽名、引用、BoundPKUnseal的開啟,還是BoundPKDecrypt的解密。所述調(diào)用者也規(guī)定所述約束密鑰是否被限定為一個(gè)PCR,如果是,所述PCR值被限定。存取策略Allowed=FeatureEnable.MaJnEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UsePrivKey)作用所述GenBoundKey操作執(zhí)行下列功能1.所述SSP產(chǎn)生一個(gè)新的公開專用RSA密鑰對(duì)。反之當(dāng)所述SSP處于空閑時(shí),所述SSP能可選地生成密鑰對(duì),并在非易失性存儲(chǔ)器中存儲(chǔ)一個(gè)用于直接檢索的密鑰小存儲(chǔ)區(qū)。2.所述SSP內(nèi)部生成包含新生成的專用密鑰、所述約束密鑰類型以及由所述調(diào)用者提供的其它參數(shù)的的一個(gè)約束密鑰結(jié)構(gòu)。3.所述SSP利用所述平臺(tái)公開加密密鑰來(lái)加密所述約束密鑰點(diǎn)。4.所述SSP生成一個(gè)bound-key-pub-info的一個(gè)簽名點(diǎn),該簽名點(diǎn)包含在密鑰創(chuàng)建和提供時(shí)的先創(chuàng)建密鑰的特性以及所述PCR的值。5.所述SSP輸出所述加密約束密鑰點(diǎn)、新生成的公開密鑰和所述引用密鑰點(diǎn)。6.返回SSPSUCCESS。BoundKeyA/ligrate定義SSP_STATUSBoundKeyMigrate([inPKCiphertextBoundKeyBlob,[in]RSAPublicKeyPubPartOfBoundKey,[in]BOUND_MIGRATIONJNFOMifrationlnfo,[in]RSA—SIGSigOnMigrationlnfo)參數(shù)GenBoundKey-lnput::={OrdinalINTEGER,Migration-infoMigration-pubkeyMigration-auth}GenBoundKey-output::={Bound-migration畫info,RSAPublicKey,PKSignatureOrdinalStatusRe-bound-blob}返回值SSP—SUCCESSSSPBADDATAERRORINTEGER,INTEGER,PKCJphertext,注釋所述BoundKeyMigrate操作指令所述SSP以一個(gè)可控方式將所述密鑰重新連接到一個(gè)不同的PCR值上。最初的密鑰生成器、即本地或遠(yuǎn)程密鑰生成器命名遷移授權(quán)機(jī)構(gòu)。只有標(biāo)記為可遷移的約束密鑰可被遷移,且只有當(dāng)所述SSP被提供有一個(gè)合適的簽名Boundmigration-info結(jié)構(gòu)時(shí)這些密鑰才能被遷移。適當(dāng)簽名的裝置利用其摘要包含在所述約束密鑰點(diǎn)中的公開密鑰簽名。其余的約束密鑰屬性不被更改。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UsePrivKey)作用所述BoundKeyMigrate操作執(zhí)行下列功能1.所述SSP在內(nèi)部解密所述約束密鑰結(jié)構(gòu)且將其解釋為一個(gè)約束密要點(diǎn)。如果所述解碼失敗,貝'j所述SSP返回SSP—CRYPTO—ERROR。2.所述SSP確認(rèn)Bound-export-info涉及同一密鑰、所述簽名被適當(dāng)形成以及所述簽名人的公開密鑰的摘要與在所述約束密鑰點(diǎn)的"可遷移"域中的命名相同。3.所述SSP檢查所述密鑰的可遷移性。如果不可遷移,則所述SSP返回SSP—CRYPO_ERROR。4.如果所述密鑰被限定為一個(gè)PCR,則所述SSP檢查當(dāng)前PCR是否是在所述密鑰點(diǎn)中被命名的那個(gè)。5.所述SSP利用在所述Bound-migration-info的目標(biāo)PCR域段中命名的值代替所述PCR值。6.所述SSP重新加密所述約束密鑰點(diǎn),并輸出所述重新加密的結(jié)構(gòu)。7.返回SSP一SUCCESS。BoundKeyExport定義SSP—STATUSBoundKeyExport([in]PKCiphertextBoundKeyBlob,[in]RSAPublicKeyPubPartOfBoundKey,[inBOUND—Export—INFOExportlnfo,[in]RSA—SIGSigOnMigrationlnfo[out]PKCipherTextReBoundBlob)參數(shù)BoundKeyExport國(guó)lnput::={OrdinalINTEGER,Bound-keyPKCipherText,Bound-pub-keyRSAPublicKey,Export-infoBound-export-infoExport-authPKSignatureGenBoundKey-output::={OrdinalINTEGER,StatusINTEGER,Re-bound-blobPKCiphertext,}返回值SSP—SUCCESSSSP_BAD_DATA—ERROR注釋所述BoundKeyExport操作指示所述SSP以一個(gè)可控方式將約束密鑰的一個(gè)專用部分以和所述資源設(shè)備上的約束密鑰相一致的格式輸出給一個(gè)遠(yuǎn)程機(jī)構(gòu)。最初的密鑰生成器,即本地或遠(yuǎn)程密鑰生成器命名所述輸出授權(quán)機(jī)構(gòu)。只有被標(biāo)記為可輸出的約束密鑰可被輸出,且只有當(dāng)所述SSP被提供有一個(gè)正確簽名的Bound-export-Jnfo結(jié)構(gòu)時(shí),這些約束密鑰才被輸出。適當(dāng)簽名的裝置利用其摘要包含在最初約束密鑰點(diǎn)中的公開密鑰簽名。BoundkeyExport允許合適授權(quán)的調(diào)用者規(guī)定將被重新約束所述密鑰的所述目標(biāo)機(jī)構(gòu)的公開密鑰和PCR值。這里沒(méi)有外部實(shí)體是一個(gè)SSP的特殊要求,但是所述新的約束點(diǎn)遵循約束密鑰的約定,以允許遠(yuǎn)程SSPs直接消耗輸出的約束密鑰。存取策略Allowed=FeatureEnable.MainEnable&(FeatureEnable.UsePrivKey==All|FeatureEnable.UsePrivKey==AuthSL&SLKnown&AuthPCR[CurrentSL].UsePrivKey)作用所述BoundKeyExport操作執(zhí)行下列功能1.述SSP內(nèi)部解密所述約束密鑰結(jié)構(gòu)且將其解釋為一個(gè)約束密要點(diǎn)。如果所述解碼失敗,貝'J所述SSP返回SSP—CRYPTO—ERROR。2.所述SSP確認(rèn)Bound-export-info涉及同一密鑰、所述簽名被正確形成以及所述簽名人的公開密鑰的摘要與在所述約束密鑰點(diǎn)的"輸出"段中的指定一樣。3.所述SSP檢查所述密鑰的可輸出性。如果不可輸出移,則所述SSP返回SSP一CRYPO—ERROR。4.如果所述密鑰被限定為一個(gè)PCR,則所述SSP檢查當(dāng)前PCR是否在所述密鑰點(diǎn)中被命名。5.所述SSP內(nèi)部生成一個(gè)包括來(lái)自最初約束密鑰結(jié)構(gòu)的參數(shù)的新的約束密鑰點(diǎn)結(jié)構(gòu)和在Bound-export-info中提供的新的PCR值。其它所有參數(shù)保持一致。6.所述SSP利用在Bound-export-info中提供的公開加密密鑰來(lái)加密所述新約束密鑰點(diǎn)。7.所述新的約束密鑰被輸出。8.返回SSPSUCCESS。通用計(jì)算機(jī)環(huán)境圖12說(shuō)明一個(gè)通用計(jì)算機(jī)環(huán)境400,其可被用于實(shí)現(xiàn)這里所述的技術(shù)。所述計(jì)算機(jī)環(huán)境400只是計(jì)算環(huán)境的例子之一,并不是試圖建議關(guān)于所述計(jì)算機(jī)和網(wǎng)絡(luò)結(jié)構(gòu)的使用或功能的任何限定。計(jì)算機(jī)環(huán)境400不應(yīng)被解釋為具有涉及在典型計(jì)算機(jī)環(huán)境400中說(shuō)明的任何一個(gè)組件或其結(jié)合的任何相關(guān)或要求。計(jì)算機(jī)環(huán)境400包括計(jì)算機(jī)402形式的一臺(tái)通用計(jì)算設(shè)備。計(jì)算機(jī)402可被用于例如實(shí)現(xiàn)圖1中的主體102和防護(hù)裝置104或圖2中的層。計(jì)算機(jī)402的組件可包括、但不限于一個(gè)或多個(gè)處理器或處理單元404(可隨意包括一個(gè)或多個(gè)安全處理器或協(xié)處理器(例如一個(gè)SSP)和/或一個(gè)或多個(gè)加密處理器或協(xié)處理器),一個(gè)系統(tǒng)存儲(chǔ)器406和一個(gè)連接包括處理器404在內(nèi)的各系統(tǒng)組件到系統(tǒng)存儲(chǔ)器406的系統(tǒng)總線408。系統(tǒng)總線408表示多種總線結(jié)構(gòu)類型中一種或多種,包括一個(gè)存儲(chǔ)總線或存儲(chǔ)控制器、一個(gè)外圍總線、一個(gè)加速圖形端口、一個(gè)處理器或使用任一總線結(jié)構(gòu)的局域總線。例如,該結(jié)構(gòu)可包括一個(gè)工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、一個(gè)微信道結(jié)構(gòu)(MCA)總線、一個(gè)增強(qiáng)ISA(EISA)總線、一個(gè)視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線和作為中層總線的一個(gè)外圍組件互連(PCI)總線。計(jì)算機(jī)402通常包多種計(jì)算機(jī)可讀媒體。該媒體可以是計(jì)算機(jī)402可訪問(wèn)的可用媒體,且包括易失和非易失媒體、可拆卸和不可拆卸的媒體。系統(tǒng)存儲(chǔ)器406包括易失存儲(chǔ)器形式的計(jì)算機(jī)可讀媒體,例如一個(gè)隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)410,和/或非易失存儲(chǔ)器,例如只讀存儲(chǔ)器(ROM)412。一個(gè)基本輸入/輸出系統(tǒng)(BIOS)414,包括幫助在計(jì)算機(jī)402中的元件之間傳輸信息的基本程序,例如在啟動(dòng)時(shí)被存儲(chǔ)在ROM中的基本程序。RAM410通常包括可直接訪問(wèn)的和/或被處理單元404即時(shí)操作的數(shù)據(jù)和/或程序模塊。計(jì)算機(jī)402也可包括其它可移動(dòng)的/不可移動(dòng)的、易失的/非易失的計(jì)算機(jī)存儲(chǔ)媒體。例如,圖12說(shuō)明一個(gè)用于對(duì)一個(gè)不可拆卸的非易失磁介質(zhì)(圖中未示)進(jìn)行讀寫的硬盤驅(qū)動(dòng)器416,用于對(duì)一個(gè)可拆卸的非易失磁盤(例如,一個(gè)"軟盤,,)進(jìn)行讀寫的磁盤驅(qū)動(dòng)器418,用于對(duì)諸如CD-ROM、DVD-ROM或其它光學(xué)媒體的一個(gè)可拆卸非易失存儲(chǔ)光盤424進(jìn)行讀取得光盤驅(qū)動(dòng)器422,。硬盤驅(qū)動(dòng)器416、磁盤驅(qū)動(dòng)器418和光盤驅(qū)動(dòng)器422都通過(guò)一個(gè)或多個(gè)數(shù)據(jù)媒體接口426而被連接到系統(tǒng)總線408?;蛘哒f(shuō),硬盤驅(qū)動(dòng)器416、磁盤驅(qū)動(dòng)器418和光盤驅(qū)動(dòng)器422可通過(guò)一個(gè)或多個(gè)接口(圖中未示)而被連接到系統(tǒng)總線408。所述盤驅(qū)動(dòng)器和其相關(guān)的計(jì)算機(jī)可讀媒體提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和用于計(jì)算機(jī)402的其它數(shù)據(jù)的非易失存儲(chǔ)。雖然本例示出了硬盤416、可移動(dòng)磁盤420和可移動(dòng)光盤424,但是很明顯,可被一臺(tái)計(jì)算機(jī)訪問(wèn)的可存儲(chǔ)數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀媒體,例如磁帶或其它磁存儲(chǔ)設(shè)備、快速存儲(chǔ)器卡、CD-ROM、數(shù)字通用盤(DVD)或其它光學(xué)存儲(chǔ)器、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除只讀存儲(chǔ)器(EEPROM)或類似物,也可被用于實(shí)現(xiàn)一個(gè)典型的計(jì)算系統(tǒng)和環(huán)境。作為例子包括操作系統(tǒng)426、一個(gè)或多個(gè)應(yīng)用程序428、其它程序模塊430和程序數(shù)據(jù)432的許多程序模塊可被存儲(chǔ)在硬盤416、磁盤420、光盤424、ROM412和/或RAM410上。這種操作系統(tǒng)426、一個(gè)或多個(gè)應(yīng)用程序428、其它程序模塊430和程序數(shù)據(jù)432中的每一個(gè)(或其某種結(jié)合)都可實(shí)現(xiàn)全部或部分支持分布式文件系統(tǒng)的常駐組件。用戶通過(guò)諸如鍵盤434和點(diǎn)擊設(shè)備436(例如,一個(gè)"鼠標(biāo)")向計(jì)算機(jī)402輸入命令和信息。其它設(shè)備438(未特別示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、串行端口、掃描儀和/或類似物。這些和其它輸入設(shè)備通過(guò)連接到系統(tǒng)總線408的輸入/輸出接口440而被連接到處理單元404上,但也可通過(guò)其它接口和總線結(jié)構(gòu)而被連接,例如是并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器442或其它類型的顯示設(shè)備也可通過(guò)例如是一個(gè)視頻適配器444的接口連接到系統(tǒng)總線408,。除監(jiān)視器442以外,其它輸出外圍設(shè)備可包括諸如揚(yáng)聲器(未示出)之類的組件和可通過(guò)輸入/輸出接口440而被連接于計(jì)算機(jī)402的一個(gè)打印機(jī)446。計(jì)算機(jī)402可以使用邏輯連接到諸如遠(yuǎn)程計(jì)算設(shè)備448的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)運(yùn)行于網(wǎng)絡(luò)環(huán)境中。例如,遠(yuǎn)程計(jì)算設(shè)備448可以是個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)計(jì)算機(jī)、同等的設(shè)備或其它通用網(wǎng)絡(luò)節(jié)點(diǎn)和類似物。遠(yuǎn)程計(jì)算設(shè)備448被表示為一臺(tái)便攜式計(jì)算機(jī),該計(jì)算機(jī)可包括這里就計(jì)算機(jī)402所描述的許多或全部構(gòu)件和特征。計(jì)算機(jī)402和遠(yuǎn)程計(jì)算機(jī)448之間的邏輯連接作為一個(gè)局域網(wǎng)(LAN)450和廣域網(wǎng)(WAN)452而被描述。這種網(wǎng)絡(luò)環(huán)境在辦公室中是常見的,例如,企業(yè)之間的計(jì)算才幾網(wǎng)、企業(yè)內(nèi)部互耳關(guān)網(wǎng)和國(guó)際互聯(lián)網(wǎng)。當(dāng)在一個(gè)局域網(wǎng)聯(lián)網(wǎng)環(huán)境中實(shí)現(xiàn)時(shí),計(jì)算機(jī)402通過(guò)一個(gè)網(wǎng)絡(luò)接口或適配器454而被連接于一個(gè)局域網(wǎng)450。當(dāng)在一個(gè)廣域網(wǎng)聯(lián)網(wǎng)環(huán)境中執(zhí)行時(shí),計(jì)算機(jī)402通常包括一個(gè)用于在廣域網(wǎng)452上建立通信的調(diào)制解調(diào)器456或其它裝置。調(diào)制解調(diào)器456,其可被內(nèi)置或外置于計(jì)算機(jī)402,可通過(guò)輸入/輸出接口440或其它合適的引擎而被連接于系統(tǒng)總線408。很明顯,示出網(wǎng)絡(luò)連接是一個(gè)例子,在計(jì)算機(jī)402和448之間建立通信連接的其它裝置也可祐使用。在諸如利用計(jì)算環(huán)境400示出的網(wǎng)絡(luò)環(huán)境中,與計(jì)算機(jī)402相關(guān)的所述程序模塊或其中的部分可被存儲(chǔ)在一個(gè)遠(yuǎn)程存儲(chǔ)設(shè)備中。例如,遠(yuǎn)程應(yīng)用程序458駐留在遠(yuǎn)程計(jì)算機(jī)448的一個(gè)存儲(chǔ)設(shè)備上。為說(shuō)明的目的,應(yīng)用程序和諸如所述操作系統(tǒng)的其它可執(zhí)行程序在這里被表示為離散塊,雖然可以識(shí)別出這種程序和組件在不同時(shí)間駐留在計(jì)算設(shè)備402的不同存儲(chǔ)組件中且被所述計(jì)算機(jī)的數(shù)據(jù)處理器執(zhí)行。這里,以諸如可被一個(gè)或多個(gè)計(jì)算機(jī)或其它設(shè)備執(zhí)行的程序模塊的計(jì)算機(jī)可執(zhí)行指令的上下文來(lái)描述各種模塊和技術(shù)。通常,程序模塊包括能夠執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特殊的摘要數(shù)據(jù)類型的子程序、程序、目標(biāo)程序、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,所述程序模塊的功能可如在各實(shí)施例所希望的相互組合或分配。這些模塊和技術(shù)的一個(gè)執(zhí)行可通過(guò)計(jì)算機(jī)可讀存儲(chǔ)媒體的形式被存儲(chǔ)或傳輸。計(jì)算機(jī)可讀存儲(chǔ)媒體可以是能被一臺(tái)計(jì)算機(jī)所訪問(wèn)的任何可用媒體。譬如但不限于,計(jì)算機(jī)可讀媒體可包括"計(jì)算機(jī)存儲(chǔ)媒體"和"通信媒體"。"計(jì)算機(jī)存儲(chǔ)媒體"包括以任意方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可拆卸或不可拆卸的媒體,用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。計(jì)算機(jī)存儲(chǔ)媒體包括但不限于RAM、ROM、EEPROM、快速存儲(chǔ)器或其它存儲(chǔ)技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其它光學(xué)存儲(chǔ)器、磁帶盒、磁帶、磁盤存儲(chǔ)器或其它磁存儲(chǔ)設(shè)備,或可被用于存儲(chǔ)所期望的信息且可被一臺(tái)計(jì)算機(jī)所訪問(wèn)的任何其它媒體。"通信媒體"通常包括計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或諸如載波或其它傳輸引擎的以調(diào)制數(shù)據(jù)信號(hào)形式存在的其它數(shù)據(jù)。通信媒體也包括任何信息傳送媒體。術(shù)語(yǔ)"調(diào)制數(shù)據(jù)信號(hào)"是指具有一個(gè)或多個(gè)以對(duì)在所述信號(hào)中的信息進(jìn)行編碼的方式設(shè)置和改變的特征。譬如但不限于,通信媒體包括諸如一個(gè)有線網(wǎng)絡(luò)或直接有線連接之類的有線媒體以及諸如聲音、射頻、紅外線之類的無(wú)線媒體。上述的任一種結(jié)合也被包括在計(jì)算機(jī)可讀存儲(chǔ)媒體的范圍內(nèi)。,由所附權(quán)利要求規(guī)定的本發(fā)明不限于所述特征或行為。即,所述特征和行為只是實(shí)現(xiàn)本發(fā)明的一個(gè)例子。權(quán)利要求1.一種用于實(shí)現(xiàn)約束簽名操作的方法,包括接收作為一個(gè)輸入的待被簽名的數(shù)據(jù)和一個(gè)約束密鑰點(diǎn),其中,所述約束密鑰點(diǎn)被約束到所述一個(gè)或多個(gè)處理器;根據(jù)所述約束密鑰點(diǎn)恢復(fù)與所述約束密鑰點(diǎn)相關(guān)的一個(gè)專用密鑰;使用所述專用密鑰對(duì)所述數(shù)據(jù)生成一個(gè)數(shù)字簽名;輸出所述數(shù)字簽名。2.如權(quán)利要求1所述的方法,其中,通過(guò)使用所述一個(gè)或多個(gè)處理器的所述公開密鑰加密所述約束密鑰點(diǎn),所述約束密鑰點(diǎn)被約束到所述一個(gè)或多個(gè)處理器。3.如權(quán)利要求1所述的方法,其中,所述專用密鑰通過(guò)所述約束密鑰點(diǎn)的一個(gè)單元而被限定為被所述約束簽名操作所使用。4.一種用于實(shí)現(xiàn)約束引用操作的方法,包括接收作為一個(gè)輸入的被簽名的數(shù)據(jù)和一個(gè)約束密鑰點(diǎn),其中的約束密鑰點(diǎn)被約束到所述一個(gè)或多個(gè)處理器;基于至少部分所述約束密鑰來(lái)重構(gòu)與所述約束密鑰點(diǎn)相關(guān)的一個(gè)專用密鑰;使用所述專用密鑰為所述數(shù)據(jù)生成一個(gè)數(shù)字簽名;輸出所述數(shù)字簽名。5.如權(quán)利要求4所述的方法,其中,通過(guò)使用所述一個(gè)或多個(gè)處理器的所述公開密鑰加密所述約束密鑰點(diǎn),所述約束密鑰點(diǎn)被約束到所述一個(gè)或多個(gè)處理器。6.如權(quán)利要求4所述的方法,其中的所述約束密鑰被限定為被所述約束引用操作所使用。7.—種用于實(shí)現(xiàn)約束解密操作的方法,包括接收作為一個(gè)輸入的密文和一個(gè)約束密鑰結(jié)構(gòu),其中,所述約束密鑰結(jié)構(gòu)被約束到所述一個(gè)或多個(gè)處理器;根據(jù)所述約束密鑰結(jié)構(gòu)來(lái)恢復(fù)與所述約束密鑰結(jié)構(gòu)相關(guān)的一個(gè)專用密鑰;使用所述專用密鑰來(lái)解密所述密文以生成與所述密文相當(dāng)?shù)囊粋€(gè)明文;輸出所述明文。8.如權(quán)利要求7所述的方法方法,其中,通過(guò)使用所述一個(gè)或多個(gè)處理器的所述公開密鑰加密所述約束密鑰結(jié)構(gòu),所述約束密鑰結(jié)構(gòu)被約束到所述一個(gè)或多個(gè)處理器。9.如權(quán)利要求7所述的方法,其中,所述專用密鑰在所述約束密鑰結(jié)構(gòu)的密鑰使用單元的基礎(chǔ)上被約束為被所述約束解密操作所使用。10.—種用于實(shí)現(xiàn)約束公開密鑰開啟操作的方法,包括接收作為一個(gè)輸入的密文和一個(gè)約束密鑰結(jié)構(gòu),其中,所述約束密鑰被約束到所述一個(gè)或多個(gè)處理器;基于至少部分所述約束密鑰來(lái)重構(gòu)與所述約束密鑰相關(guān)的一個(gè)專用密鑰;使用所述專用密鑰來(lái)解密所述密文以生成與所述密文對(duì)應(yīng)的一個(gè)明文;輸出所述明文。11.如權(quán)利要求10所述的方法,其中,通過(guò)使用所述一個(gè)或多個(gè)處理器的所述公開密鑰加密所述約束密鑰,所述約束密鑰被約束到所述一個(gè)或多個(gè)處理器。12.如權(quán)利要求10所述的方法,其中,所述約束密鑰被限定為被所述約束公開密鑰開啟操作所使用。13.—種用于實(shí)現(xiàn)通用約束密鑰操作的方法,包括生成一個(gè)與將被約束到所述一個(gè)或多個(gè)處理器上的新約束密鑰相關(guān)的數(shù)據(jù)結(jié)構(gòu),其中,所述新的約束密鑰包括允許根據(jù)所述數(shù)據(jù)結(jié)構(gòu)來(lái)恢復(fù)一個(gè)專用/公開密鑰對(duì)的一個(gè)專用密鑰的數(shù)據(jù);加密保護(hù)所述數(shù)據(jù)結(jié)構(gòu)。14.如權(quán)利要求13所述的方法,其中,加密保護(hù)所述數(shù)據(jù)結(jié)構(gòu)包括使用所述公開/專用密鑰對(duì)的公開密鑰加密所述數(shù)據(jù)結(jié)構(gòu)。15.—種用于實(shí)現(xiàn)約束密鑰遷移操作的方法,包括接收作為一個(gè)輸入的一個(gè)約束密鑰,其中,所述約束密鑰被約束到一個(gè)程序;驗(yàn)證與所述密鑰相關(guān)的一個(gè)使用條件可被所述程序所更改;如果所述驗(yàn)證成功,更改所述使用條件。16.如權(quán)利要求15所述的方法,其中,所述使用條件包括一個(gè)程序的一個(gè)標(biāo)識(shí)符,所述密鑰被約束到該程序。17.如權(quán)利要求15所述的方法,其中,驗(yàn)證與所述密鑰相關(guān)的使用條件是否可以被所述程序更改包括驗(yàn)證所述約束密鑰是否被標(biāo)記為可遷移。18.如權(quán)利要求15所述的方法,其中,驗(yàn)證與所述密鑰相關(guān)的使用條件是否可以被所述程序更改包括驗(yàn)證調(diào)用所述約束密鑰遷移操作的所述程序是否被允許遷移所述約束密鑰。19.如權(quán)利要求15所述的方法,其中,驗(yàn)證與所述密鑰相關(guān)的使用條件是否可以被所述程序更改包括驗(yàn)證一個(gè)邏輯式評(píng)估是否為真。20.如權(quán)利要求15所述的方法,其中,方法驗(yàn)證與所述密鑰相關(guān)的使用條件是否可以被所述程序更改包括驗(yàn)證一個(gè)特定程序的執(zhí)行是否返回一個(gè)為真的指示。21.如權(quán)利要求15所述的方法,其中,驗(yàn)證與所述密鑰相關(guān)的使用被滿足。22.如權(quán)利要求15所述的方法,其中的所述使用條件是包括所述約束密鑰的一個(gè)數(shù)據(jù)結(jié)構(gòu)的一個(gè)單元。23.—種用于實(shí)現(xiàn)約束密鑰輸出操作的方法,包括接收作為一個(gè)輸入的約束密鑰,其中,所述約束密鑰被約束到一個(gè)防護(hù)裝置;驗(yàn)證所述密鑰可被重新約束到一個(gè)不同的防護(hù)裝置;和如果所述驗(yàn)證成功,將所述密鑰重新連接到所述不同的防護(hù)裝置。24.如權(quán)利要求23所述的方法,其中,所述防護(hù)裝置包括一處理器,和所述不同的防護(hù)裝置包括另一個(gè)處理器。25.如權(quán)利要求23所述的方法,其中,所述不同的防護(hù)裝置被識(shí)別為對(duì)所述約束密鑰輸出操作的一個(gè)輸入。26.如權(quán)利要求23所述的方法,其中,驗(yàn)證所述密鑰能夠被重新約束到一個(gè)不同防護(hù)裝置包括驗(yàn)證所述約束密鑰是否被標(biāo)記為可輸出。27.如權(quán)利要求23所述的方法,其中,驗(yàn)證所述密鑰能夠被重新約束到一個(gè)不同防護(hù)裝置包括驗(yàn)證調(diào)用所述約束密鑰輸出操作的所述程序是否被允許輸出所述約束密鑰。28.如權(quán)利要求23所述的方法,其中,驗(yàn)證所述密鑰能夠被重新約束到一個(gè)不同防護(hù)裝置包括驗(yàn)證所述邏輯式評(píng)估是否為真。29.如權(quán)利要求23所述的方法,其中,驗(yàn)證所述密鑰能夠被重新約束到一個(gè)不同防護(hù)裝置包括驗(yàn)證一個(gè)特定程序的執(zhí)行是否返回一個(gè)為真的指示。30.如權(quán)利要求23所述的方法,其中,驗(yàn)證所述密鑰能夠被重新約束到一個(gè)不同防護(hù)裝置包括驗(yàn)證一個(gè)時(shí)間約束是否被滿足。全文摘要本發(fā)明揭示了基于公開密鑰加密的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)檢索。一方面,從一個(gè)調(diào)用程序獲得數(shù)據(jù)。使用公開密鑰加密以生成包括所述數(shù)據(jù)的密文,僅允許一個(gè)或多個(gè)目標(biāo)程序能從所述密文獲得所述數(shù)據(jù)。另一方面,從一個(gè)調(diào)用程序獲得一個(gè)位串。檢驗(yàn)所述調(diào)用程序的一個(gè)標(biāo)識(shí)符以確定是否允許所述調(diào)用程序訪問(wèn)所述位串密文中的加密數(shù)據(jù)。通過(guò)使用公開密鑰而使所述數(shù)據(jù)被解密,并且僅當(dāng)所述調(diào)用程序被允許訪問(wèn)所述數(shù)據(jù)時(shí)才將所述數(shù)據(jù)返回給所述調(diào)用程序。文檔編號(hào)G06F7/00GK101166096SQ20071015296公開日2008年4月23日申請(qǐng)日期2003年4月17日優(yōu)先權(quán)日2002年4月17日發(fā)明者M(jìn)·佩納達(dá),P·英格蘭申請(qǐng)人:微軟公司