可信執(zhí)行環(huán)境虛擬機(jī)克隆的制作方法
【專利說明】可信執(zhí)行環(huán)境虛擬機(jī)克隆
[0001] 背景
[0002] 可信平臺模塊(即"TPM")是與計算設(shè)備的常規(guī)操作環(huán)境隔離的可信執(zhí)行環(huán)境。 通常,TPM以物理上綁定到計算設(shè)備的芯片形式來實現(xiàn)。常規(guī)計算環(huán)境可以通過接口(該 接口的一個示例是基于TPM的服務(wù)(即"TBS"))與TPM通信。
[0003] TPM提供各種功能,最常用的包括密碼密鑰生成、策略驅(qū)動的密鑰使用、密封存儲 以及證明。TPM具有被稱為"受保護(hù)區(qū)域"的存儲器區(qū)域,該"受保護(hù)區(qū)域"包含無法從TPM 外部讀取的數(shù)據(jù),但是可以使用這些數(shù)據(jù)來執(zhí)行操作。一些數(shù)據(jù)是不可改變的,并且因而由 正在執(zhí)行的操作讀?。ǖ槐桓淖儯恍?shù)據(jù)是可改變的并且可以通過這些操作來改 變。注意,讀取數(shù)據(jù)的是在TPM內(nèi)部正在執(zhí)行的操作。受保護(hù)數(shù)據(jù)在TPM外部是不可讀的。
[0004] 因而,TPM具有執(zhí)行操作的操作組件,以及保留不能夠在TPM外部被讀取的受保護(hù) 數(shù)據(jù)的存儲器組件。TPM的操作速度受限于TPM內(nèi)硬件的能力。同樣,受保護(hù)區(qū)域的大小受 限于TPM內(nèi)的空間。
[0005] 概述
[0006] 本文描述的至少一個實施例涉及其狀態(tài)包括可信執(zhí)行環(huán)境(如,基于軟件的可信 平臺模塊)的虛擬機(jī)的克隆。為了克隆虛擬機(jī),源虛擬機(jī)的虛擬機(jī)狀態(tài)被復(fù)制以制定要與 目標(biāo)虛擬機(jī)相關(guān)聯(lián)的目標(biāo)虛擬機(jī)狀態(tài)。目標(biāo)虛擬機(jī)是源虛擬機(jī)狀態(tài)的克隆,并且因此在存 在存儲分層結(jié)構(gòu)的情況下,可信執(zhí)行環(huán)境的存儲分層結(jié)構(gòu)在源虛擬機(jī)和目標(biāo)虛擬機(jī)中可以 是相同的。然而,因為目標(biāo)虛擬機(jī)的身份與源虛擬機(jī)的身份不同,所以目標(biāo)虛擬機(jī)狀態(tài)的背 書分層結(jié)構(gòu)被更改,使得它基于目標(biāo)虛擬機(jī)的身份而非源虛擬機(jī)。
[0007] 克隆可被執(zhí)行以針對任何目的,諸如,舉例而言,復(fù)制源虛擬機(jī)以使得兩個虛擬機(jī) 可從該點處繼續(xù)操作?;蛘撸寺】杀粓?zhí)行以為源虛擬機(jī)狀態(tài)建立回滾(rolled back)狀 態(tài)。因此,克隆和回滾(虛擬化的兩個關(guān)鍵操作)可在可信執(zhí)行環(huán)境的環(huán)境中實現(xiàn),所述可 信執(zhí)行環(huán)境由于在可信執(zhí)行環(huán)境中進(jìn)行克隆所呈現(xiàn)的困難而抵抗虛擬化。在一個實施例 中,主機(jī)計算系統(tǒng)上的每一虛擬機(jī)具有相關(guān)聯(lián)的基于軟件的可信執(zhí)行環(huán)境,從而允許虛擬 機(jī)連同其可信執(zhí)行環(huán)境一起迀移。因而,本文描述的原理允許可信執(zhí)行環(huán)境被虛擬化。
[0008] 提供本概述是為了以簡化的形式介紹將在以下【具體實施方式】中進(jìn)一步描述的概 念選擇。本概述并不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫 助判定所要求保護(hù)的主題的范圍。
【附圖說明】
[0009] 為了描述能夠獲得上述和其它優(yōu)點和特征的方式,各實施例的更具體的描述將通 過參考各附圖來呈現(xiàn)。可以理解,這些附圖只描繪了示例實施例,并且因此不被認(rèn)為是對其 范圍的限制,將通過使用附圖并利用附加特征和細(xì)節(jié)來描述和解釋各實施例,在附圖中:
[0010] 圖1示出可用于采用本文描述的各實施例并且包括管理級和本地可信執(zhí)行環(huán)境 級的示例計算系統(tǒng);
[0011] 圖2示出運行多個虛擬機(jī)的主機(jī)計算系統(tǒng),所述虛擬機(jī)中的一些具有它們自己的 可信執(zhí)行環(huán)境;
[0012] 圖3示出用于在具有可信執(zhí)行環(huán)境的那些虛擬機(jī)的環(huán)境中克隆源虛擬機(jī)以形成 目標(biāo)虛擬機(jī)的方法的流程圖;
[0013] 圖4A示出其中存在與源虛擬機(jī)相關(guān)聯(lián)的可信執(zhí)行環(huán)境的情形;
[0014] 圖4B示出其中源虛擬機(jī)的可信執(zhí)行環(huán)境被復(fù)制以創(chuàng)建目標(biāo)虛擬機(jī)的可信執(zhí)行環(huán) 境的情形;
[0015] 圖4C示出了其中目標(biāo)虛擬機(jī)的可信執(zhí)行環(huán)境的背書分層結(jié)構(gòu)被修改成基于目標(biāo) 虛擬機(jī)的身份的情形;
[0016] 圖5示出了其中源虛擬機(jī)被克隆兩次以形成兩個目標(biāo)虛擬機(jī)的過程;
[0017] 圖6示出了其中源虛擬機(jī)被克隆以創(chuàng)建目標(biāo)虛擬機(jī)并且隨后該目標(biāo)虛擬機(jī)變成 用于另一克隆的源虛擬機(jī)的過程;
[0018] 圖7示出了用于允許執(zhí)行圖3的方法的可信執(zhí)行環(huán)境的生成和結(jié)構(gòu)的特定體系結(jié) 構(gòu);
[0019] 圖8示出了其中多個客戶端其中的一些利用通過網(wǎng)絡(luò)的與系統(tǒng)的可信平臺模塊 (TPM)接口的環(huán)境;
[0020] 圖9將受保護(hù)數(shù)據(jù)集抽象地示為包括不可改變數(shù)據(jù)和可改變數(shù)據(jù);以及
[0021] 圖10示出了用于管理可信執(zhí)行環(huán)境命令的方法的流程圖。
【具體實施方式】
[0022] 根據(jù)本文描述的至少一個實施例,描述了虛擬機(jī)的克隆。虛擬機(jī)包括可信執(zhí)行環(huán) 境,諸如基于軟件的可信平臺模塊。為了克隆虛擬機(jī),源虛擬機(jī)的虛擬機(jī)狀態(tài)被復(fù)制以制定 要與目標(biāo)虛擬機(jī)相關(guān)聯(lián)的目標(biāo)虛擬機(jī)狀態(tài)。目標(biāo)虛擬機(jī)是源虛擬機(jī)狀態(tài)的克隆,并且因而 針對源虛擬機(jī)狀態(tài)和目標(biāo)虛擬機(jī)狀態(tài)中的可信執(zhí)行環(huán)境的可信執(zhí)行環(huán)境的存儲分層結(jié)構(gòu) 可以是相同的。然而,因為目標(biāo)虛擬機(jī)的身份與源虛擬機(jī)的身份不同,所以目標(biāo)虛擬機(jī)狀態(tài) 的背書分層結(jié)構(gòu)被更改,使得它基于目標(biāo)虛擬機(jī)的身份而非源虛擬機(jī)。
[0023] 在一些實施例中,向每一虛擬機(jī)提供它自己的可迀移的基于軟件的可信執(zhí)行環(huán) 境。因而,本文描述的至少一些實施例通過允許虛擬機(jī)連同可信執(zhí)行環(huán)境一起被克隆、回滾 以及迀移,允許可信執(zhí)行環(huán)境的虛擬化。
[0024] 計算系統(tǒng)現(xiàn)在越來越多地采取多種多樣的形式。例如,計算系統(tǒng)可以是手持式設(shè) 備(諸如智能電話)、電器、膝上型計算機(jī)、臺式計算機(jī)、大型機(jī)、分布式計算系統(tǒng)或甚至常 規(guī)上不被認(rèn)為是計算系統(tǒng)的設(shè)備(諸如腕帶手表、廚房電器、汽車、醫(yī)療植入設(shè)備等)。在本 說明書以及權(quán)利要求書中,術(shù)語"計算系統(tǒng)"被廣義地定義為包括任何設(shè)備或系統(tǒng)(或其組 合),該設(shè)備或系統(tǒng)包含至少一個物理有形的處理器以及其上能含有可由處理器執(zhí)行的計 算機(jī)可執(zhí)行指令的物理有形的存儲器。存儲器可以采取任何形式,并可以取決于計算系統(tǒng) 的性質(zhì)和形式。
[0025] 如此處所使用的那樣,術(shù)語"模塊"或"組件"可以指在計算系統(tǒng)上執(zhí)行的軟件對 象或例程。此處所描述的不同組件、模塊、引擎,以及服務(wù)可以實現(xiàn)為在計算系統(tǒng)上執(zhí)行的 對象或進(jìn)程(例如,作為分開的線程)。
[0026] 這里描述的各實施例可包括或利用專用或通用計算機(jī),該專用或通用計算機(jī)包括 諸如例如一個或多個處理器和系統(tǒng)存儲器等計算機(jī)硬件,如以下更詳細(xì)討論的。這里描述 的各實施例還包括用于承載或存儲計算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計算 機(jī)可讀介質(zhì)。這樣的計算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜嬎銠C(jī)系統(tǒng)訪問的任何可用介 質(zhì)。存儲計算機(jī)可執(zhí)行指令或數(shù)據(jù)的計算機(jī)可讀介質(zhì)是物理存儲介質(zhì)。承載計算機(jī)可執(zhí)行 指令或數(shù)據(jù)的計算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實施例可 包括至少兩種顯著不同的計算機(jī)可讀介質(zhì):計算機(jī)存儲介質(zhì)和傳輸介質(zhì)。
[0027] 計算機(jī)存儲介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他 磁存儲設(shè)備、或可用于存儲計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由 通用或?qū)S糜嬎銠C(jī)訪問的任何其他介質(zhì)。
[0028] "網(wǎng)絡(luò)"被定義為使得電子數(shù)據(jù)能夠在計算機(jī)系統(tǒng)和/或模塊和/或其它電子設(shè) 備之間傳輸?shù)囊粋€或多個數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一個通信連接(硬連線、無線、 或者硬連線或無線的組合)傳輸或提供給計算機(jī)時,該計算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀?質(zhì)。傳輸介質(zhì)可包括可用于攜帶計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且 可由通用或?qū)S糜嬎銠C(jī)訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計算機(jī)可讀 介質(zhì)的范圍內(nèi)。
[0029] 此外,在到達(dá)各種計算機(jī)系統(tǒng)組件之后,計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程 序代碼裝置可從傳輸介質(zhì)自動轉(zhuǎn)移到計算機(jī)存儲介質(zhì)(或者相反)。例如,通過網(wǎng)絡(luò)或數(shù) 據(jù)鏈路接收到的計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,"NIC")內(nèi) 的RAM中,然后最終被傳輸?shù)接嬎銠C(jī)系統(tǒng)RAM和/或計算機(jī)系統(tǒng)處的較不易失性的計算機(jī) 存儲介質(zhì)。因而,應(yīng)當(dāng)理解,計算機(jī)存儲介質(zhì)可被包括在還利用(或甚至主要利用)傳輸介 質(zhì)的計算機(jī)系統(tǒng)組件中。
[0030] 計算機(jī)可執(zhí)行指令包括,當(dāng)在處理器處執(zhí)行時使通用計算機(jī)、專用計算機(jī)、或?qū)S?處理設(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計算機(jī)可執(zhí)行指令可以是例如二進(jìn)制代 碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動作專 用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或 動作。更具體而言,上述特征和動作是作為實現(xiàn)權(quán)利要求的示例形式而公開的。
[0031] 本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計算機(jī)系統(tǒng)配置的網(wǎng)絡(luò) 計算環(huán)境中實踐,這些計算機(jī)系統(tǒng)配置包括個人計算機(jī)、臺式計算機(jī)、膝上型計算機(jī)、消息 處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子設(shè)備、網(wǎng)絡(luò)PC、小型 計算機(jī)、大型計算機(jī)、移動電話、PDA、尋呼機(jī)、路由器、交換機(jī)等等。
[0032] 在本說明書和權(quán)利要求書中,"設(shè)備"被定義為不是分布式的任何計算系統(tǒng)。然而, 本發(fā)明也可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬 連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán) 境中實施。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲器存儲設(shè)備二者中。