專利名稱:遷移虛擬tpm實例以及保留該實例的唯一性和完整性的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及數(shù)據(jù)處理領(lǐng)域。具體地,本發(fā)明提供一種用于遷移 虛擬可信平臺模塊實例的計算機實現(xiàn)方法、數(shù)據(jù)處理系統(tǒng)以及計算枳4呈序產(chǎn)品o背景技術(shù)可信計算組(Trusted Computing Group )已定義了用于被稱為可信平 臺模塊(TPM)的硬件模塊的功能和協(xié)議。這部分石更件向計算機系統(tǒng)提供 安全性和加密功能,例如,非對稱密鑰生成、解密、加密、簽名、將數(shù)據(jù) 密封和綁定到TPM的狀態(tài)、在TPM之間遷移密鑰、隨機數(shù)生成、以及散 列功能。TPM還以平臺配置寄存器、非易失性存儲器區(qū)域、以及已存儲的 密鑰的形式併存狀態(tài)。許多硬件廠家發(fā)布了他們的計算系統(tǒng),所述計算系統(tǒng)裝備了結(jié)合在母 版上的TPM,其允許由操作系統(tǒng)(諸如Linux⑧或Windows )對TPM 的廣泛使用。隨著針對通用的現(xiàn)有硬件來說硬件虛擬化變得可用,對于在可虛擬化 的系統(tǒng)上的可信計算的支持的興趣正在不斷增長。能夠在一臺機器上運行 多個操作系統(tǒng)將不會留出被保留用于高端服務(wù)器的區(qū)域,而是將變得廣泛 可用。為了支持在虛擬化系統(tǒng)上的每個操作系統(tǒng)的可信計算,虛擬可信平 臺模塊優(yōu)選地成為可用,其使得每個這樣的操作系統(tǒng)認為它正在與其自己 的私有TPM進4亍交談。對操作系統(tǒng)的虛擬化支持通過在平臺上運行的操作系統(tǒng)之下的附加軟 件層而被使能。鑒于操作系統(tǒng)通常直接在硬件上運行,在可虛擬化的系統(tǒng)中,被稱為"管理程序(hypervisor)"或"虛擬機監(jiān)視器,,的層正在實 現(xiàn)虛擬機,在所述虛擬機內(nèi)可以運行操作系統(tǒng)。管理程序成為系統(tǒng)中的最 低的軟件層?,F(xiàn)代的虛擬化技術(shù)使能了虛擬機從一個平臺到另 一個平臺的遷移。如 果該虛擬機內(nèi)的操作系統(tǒng)與虛擬TPM相關(guān)聯(lián),則期望該虛擬TPM能夠?qū)?其狀態(tài)遷移到新的平臺,從而TPM功能在目標平臺上可用。發(fā)明內(nèi)容本發(fā)明的各種方面描述了一種用于安全地將虛擬TPM的實例從一個 平臺遷移到另 一個平臺的計算機實現(xiàn)方法和數(shù)據(jù)處理系統(tǒng)。在遷移過程期 間,虛擬TPM實例的唯一性被保留。還確保了僅虛擬TPM實例的完整的 及未修改的狀態(tài)被遷移,從而對于忽略或改變虛擬TPM實例狀態(tài)的嘗試 被檢測到。被傳送的所有狀態(tài)信息由源平臺上的虛擬TPM加密,并且由 目的地平臺上的虛擬TPM解密。
在附帶的權(quán)利要求中闡明了被認為是本發(fā)明新穎特性的特征。然而, 通過當結(jié)合附圖閱讀時參考以下示意性實施例的詳細描述,將最好地理解 本發(fā)明本身以及其優(yōu)選使用模式、另外的目的和優(yōu)點,在附圖中圖1是其中可以實現(xiàn)本發(fā)明的示例性方面的數(shù)據(jù)處理系統(tǒng)網(wǎng)絡(luò)的圖形表示;圖2是其中可以實現(xiàn)本發(fā)明的示例性方面的數(shù)據(jù)處理設(shè)備的框圖; 圖3是示出了根據(jù)本發(fā)明優(yōu)選實施例的、針對服務(wù)器或客戶機系統(tǒng)的典型的軟件體系結(jié)構(gòu)的框圖;圖4是描述了根據(jù)本發(fā)明的示例性實施例的、將虛擬TPM實例遷移到物理上獨立的目的地平臺的示例的框圖;圖5是根據(jù)本發(fā)明的示例性實施例的、描迷將虛擬TPM實例從源平臺遷移到目的地平臺的高級過程的信息流的圖;圖6 ^i才艮據(jù)本發(fā)明的示例性實施例的、用于遷移虛擬TPM實例的信 息流的圖;圖7是根據(jù)本發(fā)明的示例性實施例的、用于在多個步驟中導(dǎo)出虛擬 TPM實例的狀態(tài)信息的信息流的圖;圖8是根據(jù)本發(fā)明的示例性實施例的、用于在單個步驟中導(dǎo)出虛擬 TPM實例的狀態(tài)信息的信息流的圖;圖9是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理TPM命令的 ^^的流程圖;圖10是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理創(chuàng)建虛擬 TPM實例的命令的^^作的流程圖;圖11是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理鎖定虛擬 TPM實例的命令的操作的流程圖;圖12是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理獲得虛擬 TPM實例密鑰的命令的^l作的流程圖;圖13是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理獲得虛擬 TPM實例數(shù)據(jù)的命令的操作的流程圖;圖14是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理刪除虛擬 TPM實例的命令的梯:作的流程圖;圖15是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理設(shè)置虛擬 TPM實例密鑰的命令的操作的流程圖;圖16是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理設(shè)置虛擬 TPM實例數(shù)據(jù)的命令的操作的流程圖;以及圖17是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理解鎖虛擬 TPM實例的命令的操作的流程圖。
具體實施方式
圖1-2被提供作為其中可實現(xiàn)本發(fā)明實施例的數(shù)據(jù)處理環(huán)境的示例 性圖。應(yīng)當理解,圖1-2僅是示例性的,并且并非意在斷言或暗示關(guān)于其中可以實現(xiàn)本發(fā)明的各方面或?qū)嵤├沫h(huán)境的任意限制。在不脫離本發(fā)明 的精神和范圍的情況下,可以做出對所描述的環(huán)境的許多修改?,F(xiàn)在參考附圖,圖l描述了其中可以實現(xiàn)本發(fā)明的各方面的數(shù)據(jù)處理系統(tǒng)網(wǎng)絡(luò)的圖形表示。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)IOO是其中可以實現(xiàn)本發(fā)明實施 例的計算機網(wǎng)絡(luò)。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100包含網(wǎng)絡(luò)102,該網(wǎng)絡(luò)是用于提 供網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100中連接到一起的各個設(shè)備和計算機之間的通信鏈 路的媒介。所述網(wǎng)絡(luò)102可以包括例如有線、無線通信鏈路或光纜的連接。 在所描述的示例中,服務(wù)器104和服務(wù)器106連同存儲單元108 —起 連接到網(wǎng)絡(luò)102。另外,客戶機IIO、 112和114也連接到網(wǎng)絡(luò)102。這些 客戶機IIO、 112和114可以是例如個人計算機或網(wǎng)絡(luò)計算機。在所描述的 示例中,服務(wù)器104向客戶機110、 112和114提供例如引導(dǎo)文件、操作系 統(tǒng)鏡像和應(yīng)用的數(shù)據(jù)??蛻魴C110、 112和114在該示例中;Ul務(wù)器104 的客戶機。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100可以包括另外的服務(wù)器、客戶機和其它 未示出的設(shè)備。在所描述的示例中,網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100是具有網(wǎng)絡(luò)102的因特網(wǎng),和網(wǎng)關(guān)的M界集合。在因特網(wǎng)的中心是主節(jié)點或主機之間的高速數(shù)據(jù)通 信線路的骨干,其由用于路由數(shù)據(jù)和消息的數(shù)千個商業(yè)、政府、教育和其 它計算機系統(tǒng)組成。當然,網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100可以還^R實現(xiàn)為許多不 同類型的網(wǎng)絡(luò),例如內(nèi)聯(lián)網(wǎng)、局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)。圖1 意在作為示例,而不是對本發(fā)明的不同實施例的體系結(jié)構(gòu)限制?,F(xiàn)在參考圖2,示出了其中可以實現(xiàn)本發(fā)明的各方面的數(shù)據(jù)處理系統(tǒng) 的框圖。數(shù)據(jù)處理系統(tǒng)200是例如圖1中的服務(wù)器104或客戶機110的計 算機的示例,實現(xiàn)用于本發(fā)明實施例的過程的計算機可用代碼或指令可以 位于其中。在所描述的示例中,數(shù)據(jù)處理系統(tǒng)200使用包括北橋和存儲器控制器 集線器(NB/MCH )202以及南橋和輸"輸出(I/O )控制器集線器(SB/ICH) 204的集線器體系結(jié)構(gòu)。處理單元206、主存儲器208和圖形處理器210被連接到北橋和存儲器控制器集線器202。圖形處理器210可以通過加速 圖形端口 (AGP)連接到北橋和存儲器控制器集線器202。在所描述的示例中,LAN適配器212連接到南橋和I/O控制器集線器 204。音頻適配器216、鍵盤和鼠標適配器220、 TPM 222、只讀存儲器 (ROM) 224、硬盤驅(qū)動器(HDD) 226、 CD-ROM驅(qū)動器230、通用串 行總線(USB )端口和其它通信端口 232以及PCI/PCIe設(shè)備234通過總 線238和總線240連接到南橋和I/O控制器集線器204。 PCI/PCIe i殳備可 以包括例如以太網(wǎng)適配器、內(nèi)插卡和用于筆記本電腦的PC卡、TPM222。 PCI使用卡總線控制器,而PCIe不使用。ROM224可以是例如閃速二進 制輸^/輸出系統(tǒng)(BIOS)。石更盤驅(qū)動器226和CD-ROM驅(qū)動器230通過總線240連接到南橋和 I/O控制器集線器204。硬盤驅(qū)動器226和CD-ROM驅(qū)動器230可以4吏用 例如集成驅(qū)動器電子電路(IDE)或串行高級技術(shù)附件(SATA)接口,超 級I/O ( SIO)設(shè)備236可以被連接到南橋和I/O控制器集線器204。操作系統(tǒng)運行在處理單元206上,并且協(xié)調(diào)并提供對圖2中的數(shù)據(jù)處 理系統(tǒng)200中的各個部件的控制。作為客戶機,操作系統(tǒng)可以是例如 Microsoft Windows XP ( Microsoft和Windows是孩t軟7〉司在美國、其 它國家或這兩者中的商標)的可購買到的操作系統(tǒng)。例如JavaTM編程系統(tǒng) 的面向?qū)ο缶幊滔到y(tǒng)可以結(jié)合操作系統(tǒng)運行,并且提供從在數(shù)據(jù)處理系統(tǒng) 200上執(zhí)行的Java程序或應(yīng)用對操作系統(tǒng)的調(diào)用(Java是Sun Microsystems公司在美國、其它國家或這兩者中的商標)。作為服務(wù)器,數(shù)據(jù)處理系統(tǒng)200可以是例如運行高級交互式執(zhí)行體 (AIX )操作系統(tǒng)或LINUX操作系統(tǒng)的IBM eServerTM pSeries⑧計算機 系統(tǒng)(eServer、 pSeries和AIX是國際商業(yè)機器公司在美國、其它國家或 這兩者中的商標,而LINUX是Linus Torvalds美國、其它國家或這兩者 中的商標)。數(shù)據(jù)處理系統(tǒng)200可以是包括處理單元206中的多個處理器 的對稱多處理器(SMP)系統(tǒng)??商鎿Q地,單一處理器系統(tǒng)可以祐Z吏用。用于操作系統(tǒng)、面向?qū)ο缶幊滔到y(tǒng)和應(yīng)用或程序的指令位于例如硬盤驅(qū)動器226的存^i殳備上,并且可以被裝載到主存儲器208中以由處理單 元206執(zhí)行。用于本發(fā)明的示意性實施例的過程由處理單元206使用計算 機可用程序代碼執(zhí)行,所述計算機可用程序代碼可以位于例如主存儲器 208、只讀存儲器224的存儲器中,或者一個或更多外圍設(shè)備226和230 中。本領(lǐng)域的普通技術(shù)人員將理解,圖1 - 2中的硬件可以取決于實現(xiàn)而改 變。除圖1-2中所描述的硬件之外、或取代圖1-2中所描述的硬件,可 以使用例如閃速存儲器、等價非易失性存儲器或光盤驅(qū)動器等其它內(nèi)部硬 件或外圍設(shè)備。同樣,本發(fā)明的過程可以被應(yīng)用于多處理器數(shù)據(jù)處理系統(tǒng)。在某些示意性示例中,數(shù)據(jù)處理系統(tǒng)200可以是個人數(shù)字助理(PDA ), 其被配置了閃速存儲器以提供用于存儲操作系統(tǒng)文件和/或用戶生成數(shù)據(jù) 的非易失性存儲器。總線系統(tǒng)可以包括一個或多個總線,例如圖2中所示的總線238或總 線240。當然,所述總線系統(tǒng)可以使用任意類型的通信結(jié)構(gòu)或體系結(jié)構(gòu)來 實現(xiàn),所述通信結(jié)構(gòu)或體系結(jié)構(gòu)提供被附接到該結(jié)構(gòu)或體系結(jié)構(gòu)的不同部 件或設(shè)備之間的數(shù)據(jù)傳輸。通信單元可以包括一個或多個用于傳送和接收 數(shù)據(jù)的設(shè)備,例如圖2的網(wǎng)絡(luò)適配器212。存儲器可以例如是主存儲器208、 只讀存儲器224、或諸如圖2中的北橋和存儲器控制器集線器202中找到 的高速緩存。圖1 - 2中所描述的示例以及上述示例并未意味著暗示體系結(jié) 構(gòu)的限制。例如,除了采取PDA的形式之外,數(shù)據(jù)處理系統(tǒng)200還可以是 平板式計算才幾、膝上型計算機、或者電話設(shè)備。轉(zhuǎn)向圖3,根據(jù)本發(fā)明優(yōu)選實施例的、針對服務(wù)器-客戶機系統(tǒng)的典型 的軟件體系結(jié)構(gòu)(由標號300 —般指定)被描述。操作系統(tǒng)302被用于向 用戶和其它軟件提供高級功能。操作系統(tǒng)302可以在圖1的服務(wù)器1(M或 客戶機IIO中實現(xiàn),用于實現(xiàn)本發(fā)明實施例的過程的計算機可用代碼或指 令可以位于所述操作系統(tǒng)中。所述操作系統(tǒng)典型地包括BIOS。通信軟件 304或者通過直接調(diào)用搮作系統(tǒng)功能或者通過間接繞過操作系統(tǒng)以在網(wǎng)絡(luò) 上訪問用于通信的^S更件,經(jīng)由物理通信鏈路提供通過外部端口到網(wǎng)絡(luò)(諸如因特網(wǎng))的通信。應(yīng)用編程接口 (API) 306允許系統(tǒng)用戶、個人、或軟件例程使用標準 兼容接口來調(diào)用系統(tǒng)能力,而不用關(guān)心如何實現(xiàn)該特定功能。網(wǎng)絡(luò)訪問軟 件308表示可用于允許系統(tǒng)訪問網(wǎng)絡(luò)的任意軟件。該訪問可以是到網(wǎng)絡(luò)的, 所述網(wǎng)絡(luò)諸如LAN、 WAN或因特網(wǎng)。通過因特網(wǎng),此軟件可以包括程序, 諸如Web瀏覽器。應(yīng)用軟件310表示任意數(shù)量的軟件應(yīng)用,其被i殳計為通過通信端口對 數(shù)據(jù)起作用,以提供用戶尋求的期望功能。位于此級的應(yīng)用可以包括用于 處理可由因特網(wǎng)用戶訪問的數(shù)據(jù)、視頻、圖形、照片或文本所必需的應(yīng)用。 管理程序312是運行在平臺上的軟件層,所述平臺允許操作系統(tǒng)的多個實 例同時運行。TPM是由可信計算組定義的安4H^范。TPM的實現(xiàn)可用作為物理的芯片。TPM提供加密操作,諸如非對稱密鑰生成、解密、加密、簽名、 在TPM之間遷移密鑰、以及隨機數(shù)生成和散列法。TPM還提供對于少量 信息(諸如加密密鑰)的安全存儲。具有同時運行多個操作系統(tǒng)的能力的計算才幾系統(tǒng)將期望擴展對可信計 算的支持,所述支持的方式類似于該計算機系統(tǒng)針對單個操作系統(tǒng)環(huán)境可 用的支持。在所述情形中,每個虛擬機需要訪問其自身的TPM。出于此申 請的目的,所述TPM被稱為虛擬TPM實例,其通過被稱為虛擬TPM的 實體而產(chǎn)生。每個操作系統(tǒng)被提供其自身的虛擬TPM實例。在本發(fā)明的示例性實 施例中,TPM理解的正常命令集被擴充為使能對于虛擬TPM實例(例如 非易失性RAM(NVRAM)區(qū)域)的完整狀態(tài)的下栽,以及在內(nèi)部將密鑰 保存在文件中,并在另一個支持多實例的虛擬TPM中重新創(chuàng)建虛擬TPM 狀態(tài)以及在那里恢復(fù)操作。此特定擴展使能了虛擬TPM實例以及在虛擬機內(nèi)運行的操作系統(tǒng)從 一個物理平臺向另一個物理平臺的遷移。從虛擬TPM實例下載的所有狀態(tài)被用對稱密鑰加密。該對稱密鑰也被下載,但它本身將被可遷移的存儲密鑰加密。為了在另一系統(tǒng)上重新創(chuàng)建虛擬TPM實例的狀態(tài),該可遷移 的存儲密鑰優(yōu)選地首先成為可用,以便能夠使用以加密形式被安全地保持 的對稱密鑰。在系統(tǒng)之間的虛擬TPM實例遷移的可能性需要在多級上的 互操作性。首先,虛擬TPM實現(xiàn)應(yīng)該實現(xiàn)允許虛擬TPM實例的遷移的相 同的擴展命令集。其次,源平臺應(yīng)用正寫到文件的虛擬TPM實例狀態(tài)應(yīng) 該可以;故目標系統(tǒng)上的工具或應(yīng)用讀取。對于本發(fā)明的示例性實施例,假定虛擬TPM實例的層級結(jié)構(gòu)已經(jīng)被 構(gòu)造,其中父虛擬TPM實例具有對其子實例的生存周期的控制。父虛擬 TPM實例例如可以創(chuàng)建新的虛擬TPM子實例,以及檢索它們的狀態(tài)信息 或者刪除它們。在本發(fā)明的示例性實施例中,虛擬TPM實例從源平臺4皮下載,并且 其所有的狀態(tài)信息被源平臺上的父虛擬TPM實例使用公共和對稱密鑰加 密法的混合進行加密。已加密的狀態(tài)被傳送到目標物理平臺、被解密,并 且虛擬TPM實例的狀態(tài);故重構(gòu)。在另 一示例性實施例中,通過確??尚牌脚_模塊僅可以在單--個目標平臺上重新創(chuàng)建,所遷移的虛擬TPM實例的唯一性凈皮保留。在另一示 例性實施例中,完整性數(shù)據(jù)確保僅有所遷移的虛擬TPM實例的完全和未 修改狀態(tài)可以#皮重新創(chuàng)建。在本發(fā)明的另一示例性實施例中,將遷移的虛 擬TPM實例的狀態(tài)在源平臺上被毀壞。在本發(fā)明的另一示例性實施例中,對客戶機系統(tǒng)的支持被提供。客戶 機可以請求遷移虛擬TPM實例。在一示例性實施例中,包括遷移應(yīng)用的 回復(fù)包被發(fā)送到客戶機。遷移應(yīng)用需要被安裝在源和目的地平臺二者之上。 遷移應(yīng)用是下述程序,其用于將命令發(fā)送到父虛擬可信平臺模塊從而導(dǎo)致 虛擬TPM實例的狀態(tài)的串行化,以及使得用戶能夠使用允許下栽虛擬 TPM實例的狀態(tài)的擴展命令集。在另一示例性實施例中,遷移應(yīng)用可以包 括用于自動下載虛擬TPM實例的狀態(tài)的計算機可用程序代碼,以及出于 在目的地平臺重新創(chuàng)建該狀態(tài)的目的將該狀態(tài)傳送到目的地平臺。在另一示例性實施例中,遷移應(yīng)用還可以包括用于收集關(guān)于客戶機系統(tǒng)的信息(包括緩沖器大小)的計算機可用程序代碼,以便確定虛擬TPM實例的狀態(tài) 可以在一個步驟中被下栽還是需要多個步驟。圖4是描述了根據(jù)本發(fā)明的示例性實施例的、將虛擬TPM實例遷移 到物理上獨立的目的地平臺的示例的框圖。圖4描述了具有兩個物理上分 離的計算機(計算機A 402和計算機B 404 )的系統(tǒng)(由標號400 —般指 示)。計算機A 402包括管理程序406、搮作系統(tǒng)410、 412和414、以及 虛擬TPM 420。虛擬TPM 420是虛擬TPM實例(vTPM 430、 432和434 ) 的宿主。每個虛擬TPM實例關(guān)聯(lián)于一個且僅一個操作系統(tǒng)。系統(tǒng)400示 出了操作系統(tǒng)410和vTPM 432凈皮從計算機A 402遷移到計算機B 404。 如箭頭所指示的,操作系統(tǒng)410和vTPM 432的狀態(tài)信息被凍結(jié)和存儲。 操作系統(tǒng)410和vTPM 432通過管理程序406遷移到計算機B 404的管理 程序408。如圖所示,操作系統(tǒng)410和vTPM 432的狀態(tài)信息被恢復(fù)。虛 擬TPM實例vTPM 432被恢復(fù)到計算機B 404的虛擬TPM 422上。圖5是根據(jù)本發(fā)明的示例性實施例的、描述將虛擬TPM實例從源平 臺遷移到目的地平臺的高級過程的信息流的圖。虛擬TPM實例遷移的基對稱密鑰對的遷移。在示例中,源平臺上的將遷移虛擬TPM實例的父虛 擬TPM實例將非對稱密鑰遷移到將成為將遷移虛擬TPM實例在目的地平 臺上的父親的虛擬TPM實例(步驟502)。非對稱密鑰遷移是TPM規(guī)范 的標準特征,并因此是由該標準實現(xiàn)的虛擬TPM實例的能力的一部分。 非對稱密鑰遷移〗吏得同一密鑰對可用于兩個父虛擬TPM實例。虛擬TPM遷移進一步基于從源平臺上的父虛擬TPM實例將對稱密鑰 遷移到目的地平臺上的父虛擬TPM實例。源平臺上的遷移應(yīng)用從源平臺 上的父虛擬TPM實例請求對稱密鑰(步驟504)。響應(yīng)于所接收的請求, 源平臺上的父虛擬TPM實例用作為所遷移的非對稱密鑰的一部分的^H^ 來加密所生成的、內(nèi)部保存的對稱密鑰,并且將已加密對稱密鑰返回源平 臺上的遷移應(yīng)用(步驟506)。已加密對稱密鑰,皮從源平臺上的遷移應(yīng)用傳送到目的地平臺上的遷移應(yīng)用(步驟508)。目的地平臺上的遷移應(yīng)用 將已加密對稱密鑰提交給目的地平臺上的父虛擬TPM實例(步驟510)。 已加密對稱密鑰被用所遷移的非對稱密鑰的私鑰解密,并保持在將接收所 遷移的狀態(tài)信息的虛擬TPM實例內(nèi)部(步驟512)。指示出解密成功或失 敗的結(jié)果代碼被目的地平臺上的父虛擬TPM實例返回到目的地平臺上的 遷移應(yīng)用(步驟514)。此外,源平臺上的將遷移虛擬TPM實例的狀態(tài)被父虛擬TPM實例使 用對稱密鑰加密(步驟516 )。接著將遷移虛擬TPM實例的已加密狀態(tài)信 息凈皮傳送到目的地平臺(步驟518 ),并在父虛擬TPM實例內(nèi)部4吏用所遷 移的對稱密鑰來解密(步驟520)。圖6是4艮據(jù)本發(fā)明的示例性實施例的、用于遷移虛擬TPM實例的信 息流的圖。所述信息流開始于目的地平臺上的遷移應(yīng)用將命令發(fā)送到目的 地平臺上的父虛擬TPM實例,以創(chuàng)建用于遷移虛擬TPM實例狀態(tài)到其中 的實例(步驟602 )。目的地平臺上的父虛擬TPM實例將唯一的遷移標識 符返回目的地平臺上的遷移應(yīng)用(步驟604)。目的地平臺上的遷移應(yīng)用 將唯一標識符傳送到源平臺上的遷移應(yīng)用(步驟606)。接著源平臺上的 遷移應(yīng)用與源平臺上的父虛擬TPM實例通信,以首先鎖定虛擬TPM實例 (步驟608 )并接著獲得實例密鑰(步驟610 )。"鎖定,,虛擬TPM實例 的意思是,虛擬TPM實例的狀態(tài)被凍結(jié),并且該虛擬TPM實例將不再接 受正常的TPM命令。已鎖定的虛擬TPM實例將^3L接受與遷移虛擬TPM 實例相關(guān)的命令。接著虛擬TPM實例的狀態(tài)通過源平臺上的父虛擬TPM 實例被下載到源平臺上的遷移應(yīng)用(步驟612)。當狀態(tài)信息被下載時, 將它從將遷移的虛擬TPM實例中刪除。源平臺上的遷移應(yīng)用接收作為狀 態(tài)信息的最后一段的遷移摘要。接下來,源平臺上的遷移應(yīng)用刪除源虛擬 TPM實例(步驟614)。源平臺上的遷移應(yīng)用將虛擬TPM實例的狀態(tài)傳 送到目的地平臺上的遷移應(yīng)用(步驟616)。目的地平臺上的遷移應(yīng)用與 父虛擬TPM實例通信并且設(shè)置TPM實例密鑰(步驟618)。接著虛擬 TPM實例的狀態(tài)被用于通過目的地平臺上的父虛擬TPM實例重新創(chuàng)建虛擬TPM實例(步驟620)。目的地平臺上的遷移應(yīng)用與目的地平臺上的父 虛擬TPM實例通信,以解鎖實例,同時還傳送遷移摘要(步驟622)。圖7是根據(jù)本發(fā)明的示例性實施例的、用于在多個步猓中導(dǎo)出虛擬 TPM實例的狀態(tài)信息的信息流的圖。數(shù)據(jù)處理系統(tǒng)通常在其緩沖器大小上 具有局限。在某些情形中,在緩沖器大小上的這種局限可以阻止在單一步 驟中下栽虛擬TPM實例的狀態(tài)。在這樣的情形中,虛擬TPM實例的狀態(tài) 需要在多個步猓中被遷移。所述信息流(由標號700 —般指定)是在多個 步驟中執(zhí)行圖5的步猓518的示意性示例.通信處于源平臺上的遷移應(yīng)用 與將遷移的虛擬TPM實例的父虛擬TPM實例之間,但是所返回的狀態(tài)是 將遷移的虛擬TPM實例的狀態(tài)。信息流700開始于確定可用的NVRAM 區(qū)域的數(shù)量。為了確定哪些NVRAM區(qū)域可用,源平臺上的遷移應(yīng)用將命 令GetCapability(NVRAM區(qū)域)發(fā)送到源平臺上的父虛擬TPM實例,并 且源平臺上的父虛擬TPM實例通過在將遷移的虛擬TPM實例上可用的 NVRAM區(qū)域索引陣列來答復(fù)源平臺上的遷移應(yīng)用(步驟702)。接下來, 為了下栽所有NVRAM區(qū)域,源平臺上的遷移應(yīng)用發(fā)送命令 GetlnstanceData(NVRAM區(qū)域"N,,),并且源平臺上的父虛擬TPM實例 通過將遷移的虛擬TPM實例的串行化NVRAM區(qū)域"N"來答復(fù)源平臺 上的遷移應(yīng)用(步驟704)。當每個答復(fù)被源平臺上的遷移應(yīng)用所接收時, 該特定段的數(shù)據(jù)(區(qū)域"N")被刪除。為了確定哪些擁有者收回 (owner-evict)密鑰可用,源平臺上的遷移應(yīng)用發(fā)送命令GetCapability(擁 有者收回密鑰列^^),并且源平臺上的父虛擬TPM實例通過將遷移的虛擬 TPM實例的可用的擁有者收回密鑰的列表來答復(fù)源平臺上的遷移應(yīng)用(步 驟706)。擁有者收回密鑰是當重新啟動TPM時仍生存的密鑰。接下來, 源平臺上的遷移應(yīng)用通itil送命令GetlnstanceData(擁有者收回密鑰K)來 下栽所有的擁有者收回密鑰,并且源平臺上的父虛擬TPM實例通過將遷 移的虛擬TPM實例的串行化的擁有者收回密鑰來答復(fù)源平臺上的遷移應(yīng) 用(步驟708)。接著源平臺上的遷移應(yīng)用下栽將遷移的虛擬TPM實例的 所有其它TPM狀態(tài)信息,圖8是根據(jù)本發(fā)明的示例性實施例的、用于在單個步猓中導(dǎo)出虛擬 TPM實例的狀態(tài)信息的信息流的圖。圖8是在單個步躁中執(zhí)行困5的步驟 518的示意性示例.通過源平臺上的遷移應(yīng)用將命令GetlnstanceData(所有) 發(fā)送到源平臺上的父虛擬TPM實例,源平臺在一個步驟中下栽將遷移的 虛擬TPM實例的所有狀態(tài)信息,并且源平臺上的父虛擬TPM實例進行答 復(fù).圖9是示出了M本發(fā)明的示例性實施例的、用于處理TPM命令(特 別是與虛擬TPM管理相關(guān)的命令)的IMt的流程圖。所述操作開始于TPM 等待接收命令(步驟902 )。 一旦命令被接收,TPM確定該命令是否是"創(chuàng) 建TPM實例"命令(步驟904 ),如果該命令是創(chuàng)建TPM實例命令(步 驟904的是輸出),則創(chuàng)建虛擬TPM實例,如圖IO中更詳細解釋的,如 果該命令不是創(chuàng)建TPM實例命令(步驟卯4的否輸出),則TPM確定該 命令是否是"鎖定TPM實例"命令(步驟906).如果該命令是鎖定TPM實例命令(步驟906的是輸出),則鎖定虛 擬TPM實例,如圖11中更詳細解釋的。如果該命令不是鎖定TPM實例 命令(步驟卯8的否輸出),則TPM確定該命令是否是"獲得TPM實例 密鑰"命令(步驟908)。如果該命令是獲得TPM實例密鑰命令(步驟908的是輸出),則獲 得虛擬TPM實例密鑰,如圖12中更詳細解釋的。如果該命令不是獲得 TPM實例密鑰命令(步稞908的否輸出),則TPM確定該命令是否是"獲 得TPM實例數(shù)據(jù)"命令(步驟910)。如果該命令是獲得TPM實例數(shù)據(jù)命令(步驟910的是輸出),則獲 得虛擬TPM實例數(shù)據(jù),如圖13中更詳細解釋的。如果該命令不是獲得 TPM實例數(shù)據(jù)命令(步驟910的否輸出),則TPM確定該命令是否是"刪 除TPM實例"命令(步驟912 )。如果該命令是刪除TPM實例命令(步驟912的是輸出),則刪除虛 擬TPM實例數(shù)據(jù),如圖14中更詳細解釋的。如果該命令不是刪除TPM 實例命令(步驟912的否輸出),則TPM確定該命令是否是"設(shè)置TPM實例密鑰"命令(步驟914)。如果該命令是設(shè)置TPM實例密鑰命令(步驟914的是輸出),則設(shè) 置虛擬TPM實例密鑰,如圖15中更詳細解釋的。如果該命令不是設(shè)置 TPM實例密鑰命令(步驟914的否輸出),則TPM確定該命令是否是"設(shè) 置TPM實例數(shù)據(jù)"命令(步驟916)。如果該命令是設(shè)置TPM實例數(shù)據(jù)命令(步驟916的是輸出),則設(shè) 置虛擬TPM實例數(shù)據(jù),如圖16中更詳細解釋的。如果該命令不是設(shè)置 TPM實例數(shù)據(jù)命令(步驟916的否輸出),則TPM確定該命令是否是"解 鎖TPM實例"命令(步驟918 )。如果該命令是解鎖TPM實例命令(步驟918的是輸出),則解鎖虛 擬TPM實例,如圖17中更詳細解釋的。如果該命令不是解鎖TPM實例 命令(步驟918的否輸出),則TPM驗證命令的有效性(步驟920 )并且 作為正常TPM命令來處理,以及最終返回步驟902。圖IO是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理創(chuàng)建TPM實 例命令的梯:作的流程圖。在本示例中,在目的地平臺上創(chuàng)建空的虛擬TPM 實例。所述操作開始于接收創(chuàng)建作為實例P的孩子的實例的命令,其中實 例P是父實例(步驟1002)。接下來,所述操作mt命令的擁有者授權(quán)是 否有效(步驟1004 )。如果命令的擁有者授權(quán)無效(步驟1004的否輸出), 則適當?shù)腻e誤代碼被發(fā)送作為結(jié)果值(步驟1016),并且所述操作返回圖 9的步驟卯2,以等待要處理的新命令。如果命令的擁有者授權(quán)有效(步驟 1004的是輸出),則所述操作確定實例P是否是正處理的虛擬TPM實例 的子孫(步驟1006)。如果實例P不是正處理的虛擬TPM實例的子孫(步驟1006的否輸出), 則適當?shù)?綠代碼,議送作為結(jié)果值(步驟1016),并且所述操作返回圖 9的步驟902,以等待要處理的新命令。如果實例P是正處理的虛擬TPM 實例的子孫(步驟1006的是輸出),則所述操作確定實例P是否是特4又 實例(步驟1008)。特權(quán)實例是具有創(chuàng)建其它的子實例的許可的實例。如果實例P不是特權(quán)實例(步驟1008的否輸出),則適當?shù)腻e誤代碼M送作為結(jié)果值(步驟1016),并且所述操作返回圖9的步驟卯2, 以等待要處理的新命令。如果實例P是特權(quán)實例(步驟1008的是輸出), 則所述操作創(chuàng)建作為實例P的孩子的虛擬TPM實例(步驟IOIO)。虛擬 TPM被分配唯一的實例句柄H以及唯一的遷移標識符(步驟IOIO)。將 目的地鎖用于實例H (步驟1012 )。當鎖已經(jīng)被使用時,實例H現(xiàn)在將僅 接受與虛擬TPM實例的遷移相關(guān)的命令,并由此直到另一虛擬TPM實例 被遷移到它之前、或者它已被解鎖之前將被保持為空。唯一的實例句柄H 以及遷移標識符被返回調(diào)用者(步驟1014 ),并且所述操作返回圖9的步 驟卯2,以等待要處理的新命令。圖ll是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理鎖定TPM實 例命令的操作的流程圖。所迷操作開始于接收鎖定與唯一的遷移標識符相 關(guān)聯(lián)的虛擬TPM實例(實例H)的命令(步驟1102)。接下來,所述操 作^命令的擁有者授權(quán)是否有效(步驟1104 )。如果命令的擁有者授權(quán) 無效(步驟1104的否輸出),則適當?shù)腻e誤代碼^Ll送作為結(jié)果值(步驟 1120),并且所述操作返回圖9的步驟卯2,以等待要處理的新命令。如 果命令的擁有者授權(quán)有效(步驟1104的是輸出),則所述操作確定實例H 是否是正處理的虛擬TPM實例的子孫(步驟1106 )。如果實例H不是正 處理的虛擬TPM實例的子孫(步驟1106的否輸出),則適當?shù)腻e誤代碼 被發(fā)送作為結(jié)果值(步驟1120),并且所述操作返回圖9的步驟902,以 等待要處理的新命令。如果實例H是正處理的虛擬TPM實例的子孫(步驟1106的是輸出), 則所述操作確定是否使用了目的地鎖(步驟1110 )。如果使用了目的地鎖 (步驟1110的是輸出),則適當?shù)腻e誤代碼M送作為結(jié)果值(步驟1120 ), 并且所述操作返回圖9的步驟卯2,以等待要處理的新命令。如果未使用 目的地鎖(步驟1110的否輸出),則所述操作將源鎖用于實例P,其阻止 實例P接受除了與遷移TPM有關(guān)的命令之外的任意TPM命令(步驟 1112)。所述操作將遷移會話初始化為實例H的唯一遷移標識符(步驟 1114)。所述操作接著初始化遷移摘要(步驟1116)。所述遷移摘要是完整性數(shù)據(jù)的示例,被用于檢測所導(dǎo)出的虛擬TPM實例狀態(tài)的改變。指示 所述操作的成功或失敗的結(jié)果代碼被返回(步驟1118),并且所述操作返 回圖9的步驟902,以等待要處理的新命令。圖12是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理獲得TPM實 例密鑰命令的操作的流程圖,所述操作開始于接收通過使用存儲密鑰S用 于加密而獲得虛擬TPM實例(實例H )的實例密鑰的命令(步驟1202 )。 接下來,所述操作驗證命令的擁有者授權(quán)是否有效(步驟1204 )。如果命 令的擁有者授權(quán)無效(步驟1204的否輸出),則適當?shù)腻e誤代碼^^送作 為結(jié)果值(步驟1220),并且所述操作返回圖9的步驟卯2,以等待要處 理的新命令。如果命令的擁有者授權(quán)有效(步驟1204的是輸出),則所述 操作確定實例H是否是正處理的虛擬TPM實例的子孫(步驟1206 )。如 果實例H不是正處理的虛擬TPM實例的子孫(步驟1206的否輸出),則 適當?shù)腻e誤代碼凈紋送作為結(jié)果值(步驟1220),并且所迷操作返回圖9 的步驟902,以等待要處理的新命令。如果實例H是正處理的虛擬TPM實例的子孫(步驟1206的是輸出), 則所述操作確定存儲密鑰S的授權(quán)是否有效(步驟1208)。如果存儲密鑰 S的授權(quán)無效(步驟1208的否輸出),則適當?shù)? 代碼#^送作為結(jié)果 值(步驟1220),并且所述^Mt返回圖9的步驟902,以等待要處理的新 命令。如果存儲密鑰S的授權(quán)有效(步驟1208的是輸出),則在實例H 上,所述操作創(chuàng)建隨機對稱密鑰,并用隨機對稱密鑰來構(gòu)造對稱密鑰結(jié)構(gòu)(步驟1210 )。接著在實例H上,所述操作創(chuàng)建將被用作為實例H的HMAC 密鑰的隨機數(shù)(步驟1212 )。所述操作將隨機對稱密鑰存儲在實例H上(步 驟1214 )。所述操作接著將HMAC密鑰存儲在實例H上(步驟1216 )。 在實例H上,所述操作將對稱密鑰結(jié)構(gòu)和HMAC密鑰相并置,并且用密 鑰S加密所并置的項目(步驟1218)。所述操作將已加密項目返回調(diào)用者(步驟1222),并且所述操作返回圖9的步驟902,以等待要處理的新命 令。圖13是示出了4艮據(jù)^^發(fā)明的示例性實施例的、用于處理獲得TPM實例數(shù)據(jù)命令的操作的流程圖。所述操作開始于接^虛擬TPM實例(實 例H)獲得實例數(shù)據(jù)的命令(步驟1302)。接下來,所述操作mt命令的 擁有者授權(quán)是否有效(步驟1304 )。如果命令的擁有者授權(quán)無效(步驟1304 的否輸出),則適當?shù)腻e誤代碼^JL送作為結(jié)果值(步驟1326),并且所 述操作返回圖9的步驟卯2,以等待要處理的新命令。如果命令的擁有者 授權(quán)有效(步驟1304的是輸出),則所述操作確定實例H是否是正處理 的虛擬TPM實例的子孫(步驟1306)。如果實例H不是正處理的虛擬 TPM實例的子孫(步驟1306的否輸出),則適當?shù)腻e誤代碼^J^送作為 結(jié)果值(步驟1326),并且所述操作返回圖9的步驟902,以等待要處理 的新命令。如果實例H是正處理的虛擬TPM實例的子孫(步驟1306的是輸出), 則所述^作確定實例密鑰是否已被設(shè)置(步驟1308)。如果實例密鑰尚未 被設(shè)置(步驟1308的否輸出),則適當?shù)?,代碼^^L送作為結(jié)果值(步 驟1326),并且所述操作返回圖9的步驟902,以等待要處理的新命令。 如果實例密鑰已被設(shè)置(步驟1308的是輸出),則所述操作確定源鎖是否 已被使用(步驟1310)。如果源鎖尚未被使用(步驟1310的否輸出), 則適當?shù)腻e誤代碼被發(fā)送作為結(jié)果值(步驟1326 ),并且所述操作返回圖 9的步驟902,以等待要處理的新命令。如果源鎖已被使用(步驟1310的 是輸出),則所述操作串行化實例H的已請求數(shù)據(jù)段(步驟1312 )。所迷 操作使用實例HMAC密鑰作為密鑰來計算串行化數(shù)據(jù)上的HMAC (步驟 1314)。所述操作通過用串行化數(shù)據(jù)的散列來擴展其當前值,而更新遷移 摘要(步驟1316 )。所述操作將HMAC附加到串行化數(shù)據(jù)(步驟1318 )。 所述操作使用實例密鑰加密包括HMAC的串行化數(shù)據(jù)(步驟1320 )。如 果此數(shù)據(jù)被確定為已下載信息的最后一塊,則所述^作返回遷移摘要(步 驟1322)。所述操作將已加密數(shù)據(jù)返回調(diào)用者(步驟1324),并且所述操 作返回圖9的步驟902,以等待要處理的新命令。圖14是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理刪除TPM實 例命令的操作的流程圖。所述操作開始于接收刪除具有唯一句柄H的虛擬TPM實例(實例H)的命令(步驟1402)。接下來,所述操作^命令 的擁有者授權(quán)是否有效(步驟1404 )。如果命令的擁有者授權(quán)無效(步驟 140<4的否輸出),則適當?shù)?,代碼凈嫂送作為結(jié)果值(步驟1414 ),并 且所述操作返回圖9的步驟902,以等待要處理的新命令。如果命令的擁 有者授權(quán)有效(步驟1404的是輸出),則所述操作確定實例H是否是正 處理的虛擬TPM實例的子孫(步驟1406 )。如果實例H不是正處理的虛 擬TPM實例的子孫(步驟1406的否輸出),則適當?shù)腻e誤代碼^L^送作 為結(jié)果值(步驟1414),并且所述操作返回圖9的步驟902,以等待要處 理的新命令。如果實例H是正處理的虛擬TPM實例的子孫(步驟1406的是輸出), 則所述操作確定實例H是否具有任意子孫(步驟1408 )。如果實例H具 有子孫(步驟1408的是輸出),則適當?shù)腻e誤代碼^^C送作為結(jié)果值(步 驟1414),并且所述操作返回圖9的步驟卯2,以等待要處理的新命令。 如果實例H沒有子孫(步驟1408的否輸出),則所述操作刪除與實例H 相關(guān)聯(lián)的所有數(shù)據(jù)(步驟1410 )。所述操作從實例H的直接父親中刪除對 實例H的所有引用(步驟1412),并且所述操作返回圖9的步驟卯2,以 等待要處理的新命令。圖15是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理設(shè)置TPM實 例密鑰命令的操作的流程圖。所述操作開始于接收通過使用存儲密鑰S用 于加密而設(shè)置虛擬TPM實例(實例H)的實例密鑰的命令(步驟1502)。 接下來,所述操作B命令的擁有者授權(quán)是否有效(步驟1504)。如果命 令的擁有者授權(quán)無效(步驟1504的否輸出),則適當?shù)?^代碼M送作 為結(jié)果值(步驟1518),并且所述操作返回圖9的步驟902,以等待要處 理的新命令。如果命令的擁有者授權(quán)有效(步驟1504的是輸出),則所述 操作確定實例H是否是正處理的虛擬TPM實例的子孫(步驟1506 )。如 果實例H不是正處理的虛擬TPM實例的子孫(步驟1506的否輸出),則 適當?shù)拿蟠a^Ll送作為結(jié)果值(步驟1518),并且所述^^t返回圖9 的步驟902,以等待要處理的新命令。如果實例H是正處理的虛擬TPM實例的子孫(步驟1506的是輸出), 則所述操作確定存儲密鑰S的授權(quán)是否有效(步驟1508 )。如果存儲密鑰 S的授權(quán)無效(步驟1508的否輸出),則適當?shù)?代碼凈iC^送作為結(jié)果 值(步驟1518),并且所述^Ht返回圖9的步驟902,以等待要處理的新 命令。如果存儲密鑰S的授權(quán)有效(步驟1508的是輸出),則所述^M^f吏 用存儲密鑰S的私鑰來解密給定的已加密項目,并且提取對稱密鑰結(jié)構(gòu)和 HMAC密鑰(步驟1510 )。接著所述操作確定對稱密鑰結(jié)構(gòu)是否有效(步 驟1512)。如果對稱密鑰結(jié)構(gòu)無效(步驟1512的否輸出),則適當?shù)?晉 誤代碼凈a送作為結(jié)果值(步驟1518),并且所述操作返回圖9的步驟902, 以等待要處理的新命令。如果對稱密鑰結(jié)構(gòu)有效(步驟1512的是輸出), 則所述操作存儲對稱密鑰作為實例H的狀態(tài)的一部分(步驟1514)。接著 所述操作存儲HMAC密鑰作為實例H的狀態(tài)的一部分(步驟1516 ),并 且所述操作返回圖9的步驟902,以等待要處理的新命令。圖16是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理設(shè)置TPM實 例數(shù)據(jù)命令的操作的流程圖。所述操作開始于接收i殳置虛擬TPM實例(實例H)的實例數(shù)據(jù)的命令(步驟1602)。接下來,所述操作 £命令的擁 有者授權(quán)是否有效(步驟1604 )。如果命令的擁有者授權(quán)無效(步驟1604 的否輸出),則適當?shù)腻e誤代碼,議送作為結(jié)果值(步驟1622),并且所 述操作返回圖9的步驟902,以等待要處理的新命令。如果命令的擁有者 授權(quán)有效(步驟1604的是輸出),則所述操作確定實例H是否是正處理 的虛擬TPM實例的子孫(步驟1606)。如果實例H不是正處理的虛擬 TPM實例的子孫(步驟1606的否輸出),則適當?shù)腻e誤代碼被發(fā)送作為 結(jié)果值(步驟1622),并且所述操作返回圖9的步驟卯2,以等待要處理 的新命令。如果實例H是正處理的虛擬TPM實例的子孫(步驟1606的是輸出), 則所述操作確定實例密鑰是否已被設(shè)置(步驟1608)。如果實例密鑰尚未 被設(shè)置(步驟1608的否輸出),則適當?shù)腻e誤代碼^iC送作為結(jié)果值(步 驟1622),并且所述操作返回圖9的步驟902,以等待要處理的新命令。如果實例密鑰已被設(shè)置(步驟1608的是輸出),則所述操作確定目的地鎖 是否已被4吏用(步驟1610)。如果目的地鎖尚未被使用(步驟1610的否 輸出),則適當?shù)腻e誤代碼^iL送作為結(jié)果值(步驟1622),并且所述操 作返回圖9的步驟902,以等待要處理的新命令。如果目的地鎖已被使用(步驟1610的是輸出),則所述操作使用實例密鑰解密數(shù)據(jù)(步驟1612)。 接著所述操作確定在已解密數(shù)據(jù)中發(fā)現(xiàn)的HMAC是否正確(步驟1614 )。 如果在已解密數(shù)據(jù)中發(fā)現(xiàn)的HMAC不正確(步驟1614的否輸出),則適 當?shù)腻e誤代碼被發(fā)送作為結(jié)果值(步驟1622 ),并且所述操作返回圖9的 步驟902,以等待要處理的新命令。如果在已解密數(shù)據(jù)中發(fā)現(xiàn)的HMAC正 確(步驟1614的是輸出),則所述操作確定在已解密數(shù)據(jù)中發(fā)現(xiàn)的唯一遷 移標識符是否正確(步驟1616)。如果在已解密數(shù)據(jù)中發(fā)現(xiàn)的唯一遷移標 識符不正確(步驟1616的否輸出),則適當?shù)腻e誤代碼^JL送作為結(jié)果值(步驟1622),并且所述操作返回圖9的步驟902,以等待要處理的新命 令。如果在已解密數(shù)據(jù)中發(fā)現(xiàn)的唯一遷移標識符正確(步驟1616的是輸 出),則所述操作通過去串行化已解密的字節(jié)流來重新創(chuàng)建實例H的狀態(tài)(步驟1618)。所迷操作用已解密數(shù)據(jù)來擴展實例H的遷移摘要(步驟 1620),并且所述操作返回圖9的步驟902,以等待要處理的新命令。圖17是示出了根據(jù)本發(fā)明的示例性實施例的、用于處理解鎖TPM實 例命令的操作的流程圖。所述操作開始于接收解鎖與遷移摘要相關(guān)聯(lián)的虛 擬TPM實例(實例H )的命令(步驟1702 )。接下來,所述操作^命 令的擁有者授權(quán)是否有效(步驟1704 )。如果命令的擁有者授權(quán)無效(步 驟1704的否輸出),則適當?shù)?^代碼凈i^送作為結(jié)果值(步驟1716), 并且所述操作返回圖9的步驟902,以等待要處理的新命令。如果命令的 擁有者授權(quán)有效(步驟1704的是輸出),則所述操作確定實例H是否是 正處理的虛擬TPM實例的子孫(步驟1706 )。如果實例H不是正處理的 虛擬TPM實例的子孫(步驟1706的否輸出),則適當?shù)腻e誤代碼,皮發(fā)送 作為結(jié)果值(步驟1716),并且所述操作返回圖9的步驟卯2,以等待要 處理的新命令。如果實例H是正處理的虛擬TPM實例的子孫(步驟1706的是輸出), 則所述操作確定所傳遞的遷移摘要和內(nèi)部遷移摘要是否匹配(步驟1708 )。 如果所傳遞的遷移摘要和內(nèi)部遷移摘要不匹配(步驟1708的否輸出),則 適當?shù)腻e誤代碼,^送作為結(jié)果值(步驟1716),并且所述操作返回圖9 的步驟902,以等待要處理的新命令。如果所傳遞的遷移摘要和內(nèi)部遷移 摘要匹配(步驟1708的是輸出),則所述操作清除具有實例H的唯一遷 移標識符的遷移會話(步驟1710)。所述操作解除(disengage)實例H 的目的地鎖(步驟1712 )。所述操作解除實例H的源鎖(步驟1714 ), 并且所述操作返回圖9的步驟902,以等待要處理的新命令。由此,本發(fā)明提供了一種用于遷移可信平臺模塊實例的計算機實現(xiàn)方 法、數(shù)據(jù)處理系統(tǒng)以及計算機程序產(chǎn)品。所述方法還確保了所遷移的可信 平臺模塊實例的唯一性和完整性。此外,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或者結(jié)合軟 件和硬件單元的實施例的形式。在優(yōu)選實施例中,本發(fā)明用軟件實現(xiàn),所述軟件包括但不限于固件、駐留軟件、微代碼等。此外,本發(fā)明可采用可從計算機可用或計算機可讀媒體訪問的計算機 程序產(chǎn)品的形式,所述媒體提供由計算機或任何指令執(zhí)行系統(tǒng)使用、或與 計算機或任何指令執(zhí)行系統(tǒng)相結(jié)合使用的程序代碼。出于本說明書的目的,計算機可用或計算機可讀媒體可以是可包含、存儲、傳送、傳播或傳輸程 序的任何有形裝置,所述程序由指令執(zhí)行系統(tǒng)、裝置或設(shè)務(wù)使用或與指令 執(zhí)行系統(tǒng)、裝置或設(shè)備相結(jié)合使用。所述媒體可以是電子的、磁的、光的、電磁的、紅外的或半導(dǎo)體系 統(tǒng)(或裝置或設(shè)備)、或傳播媒體。計算機可讀媒體的示例包括半導(dǎo)體或固態(tài)存儲器、磁帶、可移除計算才;ut盤、隨M取存儲器(RAM)、只讀存儲器(ROM)、硬磁盤、和光盤。光盤的當前示例包括只讀存儲器 致密盤(CD-ROM)、讀/寫致密盤(CD-R/W)以及數(shù)字視頻盤(DVD)。 適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括直接地或通過系 統(tǒng)總線間接地耦合于存儲器單元的至少一個處理器。存儲器單元可以包括在程序代碼的實際執(zhí)行期間使用的局部存儲器、海量存儲裝置、以及高速 援沖存儲器,該高速緩沖存儲器提供了至少某種程序代碼的臨時存儲以便 減少在執(zhí)行期間優(yōu)選地應(yīng)該從海量存儲裝置檢索代碼的次數(shù)。輸入/輸出或I/Oi殳備(包括但不限于鍵盤、顯示器、定點設(shè)備等) 可以直接地或通過中間I/O控制器耦合于系統(tǒng)。網(wǎng)絡(luò)適配器也可以被耦合于系統(tǒng),以使數(shù)據(jù)處理系統(tǒng)能通過中間的專 用或公用網(wǎng)絡(luò)耦合于其它數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設(shè)備。調(diào)制解 調(diào)器、線纜調(diào)制解調(diào)器和以太網(wǎng)卡僅僅是當前可用類型的網(wǎng)絡(luò)適配器中的 少數(shù)幾種.已經(jīng)出于說明和描述的目的呈現(xiàn)了本發(fā)明的描述,并且其不是意在窮 盡性的或者把本發(fā)明限制為所公開的精確形式。對本領(lǐng)域普通技術(shù)人員來 說,許多修改和變型是可能的。選擇并描述了實施例是為了最好地解釋本 發(fā)明的原理和實際的應(yīng)用,以及為了使本領(lǐng)域的其它普通技術(shù)人員能夠理 解針對各種實施例的本發(fā)明,所述實施例具有適合于預(yù)期的具體使用的各 種修改。
權(quán)利要求
1.一種用于遷移虛擬可信平臺模塊實例的計算機實現(xiàn)方法,所述計算機實現(xiàn)方法包括通過源平臺上的父虛擬可信平臺模塊實例導(dǎo)出虛擬可信平臺模塊實例的狀態(tài);以及通過目的地平臺上的父虛擬可信平臺模塊實例導(dǎo)入所述虛擬可信平臺模塊實例的所述狀態(tài)。
2. 根據(jù)權(quán)利要求l所述的計算機實現(xiàn)方法,其中所述源平臺和目的地 平臺在不同的物理平臺上。
3. 根據(jù)權(quán)利要求l所述的計算機實現(xiàn)方法,進一步包括 刪除所述源平臺上的所述虛擬可信平臺模塊實例的狀態(tài)。
4. 根據(jù)權(quán)利要求1所述的計算機實現(xiàn)方法,其中通過使用基于網(wǎng)^ft 輸協(xié)議的傳送協(xié)議,將所述虛擬可信平臺模塊實例的狀態(tài)從所述源平臺流 動到所述目的地平臺。
5. 根據(jù)權(quán)利要求1所述的計算機實現(xiàn)方法,其中所述虛擬可信平臺模 塊實例的狀態(tài)在多個步驟中^皮導(dǎo)出,并且其中所迷虛擬可信平臺模塊實例 的狀態(tài)在多個步驟中被導(dǎo)入。
6. 根據(jù)權(quán)利要求l所迷的計算機實現(xiàn)方法,進一步包括 由所述源平臺上的父虛擬可信平臺模塊實例將完整性數(shù)據(jù)添加到所述虛擬可信平臺模塊實例的狀態(tài);以及由所述目的地平臺上的父虛擬可信平臺模塊實例驗證所述完整性數(shù)據(jù)。
7. 根據(jù)權(quán)利要求6所述的計算機實現(xiàn)方法,其中所述完整性數(shù)據(jù)是遷 移摘要。
8. 根據(jù)權(quán)利要求7所述的計算機實現(xiàn)方法,進一步包括其中導(dǎo)出所述虛擬可信平臺模塊實例的狀態(tài)包括將所迷虛擬可信平 臺模塊實例的狀態(tài)的每一段串行化為字節(jié)流,其中所述源平臺上的父虛擬可信平臺模塊實例將每個串行化字節(jié)流構(gòu)造為源摘要; 積累所有的源摘要以構(gòu)造最終的源摘要; 導(dǎo)出所述最終的源摘要;由所述目的地平臺上的父虛擬可信平臺模塊實例接收所述串行化字節(jié) 流,其中所述目的地平臺上的父虛擬可信平臺模塊實例將每個串行化字節(jié) 流構(gòu)造為目的地摘要;積累所有的目的地摘要以構(gòu)造最終的目的地摘要;以及比較所述最終的源摘要和所述最終的目的地摘要。
9. 根據(jù)權(quán)利要求l所述的計算機實現(xiàn)方法,進一步包括 阻止所述虛擬可信平臺模塊實例的狀態(tài)被多個父虛擬可信平臺模塊實例所導(dǎo)入。
10. 根據(jù)權(quán)利要求9所述的計算機實現(xiàn)方法,其中阻止所述虛擬可信 平臺模塊實例的狀態(tài)被多個父虛擬可信平臺模塊實例所導(dǎo)入的所述步驟包 括生成唯一遷移標識符;將所述唯一遷移標識符添加到所述可信平臺模塊實例的狀態(tài);以及 由目的地可信平臺;f莫塊實例mi所述遷移標識符。
11. 根據(jù)權(quán)利要求10所述的計算機實現(xiàn)方法,其中所迷目的地平臺上 的父虛擬可信平臺模塊實例生成所述唯一遷移標識符,并且所述唯一遷移 標識符被發(fā)送到所述源平臺上的父虛擬可信平臺模塊實例,以及其中所述 源平臺上的父虛擬可信平臺模塊實例將所述唯一遷移標識符添加到所迷虛 擬可信平臺才莫塊實例的狀態(tài)。
12. 根據(jù)權(quán)利要求1所述的計算機實現(xiàn)方法,進一步包括 在所述虛擬可信平臺模塊實例的狀態(tài)被導(dǎo)出之前,加密所述虛擬可信平臺模塊實例的狀態(tài);以及在所述虛擬可信平臺模塊實例的狀態(tài)被導(dǎo)入之后,解密所述虛擬可信 平臺模塊實例的狀態(tài)。
13. 根據(jù)權(quán)利要求12所述的計算機實現(xiàn)方法,其中導(dǎo)出和導(dǎo)入所述虛擬可信平臺模塊實例的狀態(tài)的所述步驟包括在所述源平臺上的父虛擬可信平臺模塊實例和所述目的地平臺上的父 虛擬可信平臺模塊實例之間交換對稱密鑰;用所述對稱密鑰加密所述源平臺上的所迷虛擬可信平臺模塊實例的狀 態(tài);以及用所述對稱密鑰解密所述目的地平臺上的所述虛擬可信平臺模塊實例 的狀態(tài)。
14.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)方法,其中在所述源平臺上的 父虛擬可信平臺模塊實例和所述目的地平臺上的父虛擬可信平臺模塊實例 之間交換對稱密鑰的所述步驟包括由所述源平臺上的父虛擬可信平臺模塊實例生成隨機的對稱密鑰;使用公鑰加密所述隨機的對稱密鑰;以及將已加密的隨機的對稱密鑰導(dǎo)出到所述目的地平臺上的父虛擬可信平 臺模塊實例,其中所述目的地平臺上的父虛擬可信平臺模塊實例通過使用 與所述公鑰相關(guān)聯(lián)的私鑰來解密已加密的隨機的對稱密鑰。
15,根據(jù)權(quán)利要求1所述的計算機實現(xiàn)方法,進一步包括將消息^代碼附加到所述虛擬可信平臺模塊實例的狀態(tài);以及驗證所述消息驗證代碼。
16. 根據(jù)權(quán)利要求15所迷的計算機實現(xiàn)方法,進一步包括由所述源平臺上的父虛擬可信平臺模塊實例生成用于所述消息驗證代 碼的密鑰;在所述源平臺上的父虛擬可信平臺^=莫塊和所述目的地平臺上的父虛擬 可信平臺模塊之間交換所述密鑰;以及其中所述密鑰用于由所述目的地平臺上的父虛擬可信平臺模塊實例對 于所述消息g代碼的驗證。
17. 才艮據(jù)權(quán)利要求16所述的計算機實現(xiàn)方法,其中生成用于所述消息驗證代碼的密鑰以及在所述源平臺上的父虛擬可信平臺模塊和所述目的地平臺上的父虛擬可信平臺模塊之間交換所述密鑰的所述步驟包括由所述源平臺上的父虛擬可信平臺模塊實例生成mt密鑰; 由所述源平臺上的父虛擬可信平臺模塊實例用公鑰加密所述驗證密 鑰;以及由所述目的地平臺上的父虛擬可信平臺模塊實例使用與所述/i^相關(guān) 聯(lián)的私鑰來解密所述發(fā)汪密鑰。
18. 根據(jù)權(quán)利要求l所迷的計算機實現(xiàn)方法,進一步包括 鎖定所述虛擬可信平臺模塊實例,其中在所述虛擬可信平臺模塊實例已被鎖定之后,所述虛擬可信平臺模塊實例的狀態(tài)可以被導(dǎo)出,以及其中 一旦所述虛擬可信平臺模塊實例已被鎖定,則所述虛擬可信平臺模塊實例 無法纟皮解鎖。
19. 根據(jù)權(quán)利要求l所述的計算機實現(xiàn)方法,進一步包括 鎖定所述目的地平臺上的子虛擬可信平臺才莫塊實例,其中在所述目的地平臺上的所述子虛擬可信平臺模塊實例已被鎖定之后,所述虛擬可信平 臺模塊的狀態(tài)被導(dǎo)入,以及其中除非所述虛擬可信平臺模塊的全部狀態(tài)已 被導(dǎo)入,否則所述目的地平臺上的所述子虛擬可信平臺才莫塊實例無法被解 鎖。
20. —種包括計算機可用媒體的計算機程序產(chǎn)品,所述計算機可用媒 體包括用于遷移虛擬可信平臺模塊實例的計算機可用程序代碼,所述計算 機程序產(chǎn)品包括用于通過源平臺上的父虛擬可信平臺模塊實例導(dǎo)出虛擬可信平臺模塊 實例的狀態(tài)的計算機可用程序代碼;以及用于通過目的地平臺上的父虛擬可信平臺^t塊實例導(dǎo)入所述虛擬可信 平臺模塊實例的所述狀態(tài)的計算機可用程序代碼。
21. 根據(jù)權(quán)利要求20所述的計算機程序產(chǎn)品,進一步包括用于刪除所述源平臺上的所述虛擬可信平臺模塊實例的狀態(tài)的計算機 可用程序代碼。
22. 根據(jù)權(quán)利要求20所述的計算^f呈序產(chǎn)品,其中用于導(dǎo)出虛擬可信 平臺模塊實例的狀態(tài)的所迷計算機可用程序代碼包括用于在多個步驟中導(dǎo)出所述虛擬可信平臺模塊實例的狀態(tài)的計算機可用程序代碼,并且其中用于導(dǎo)入虛擬可信平臺模塊實例的狀態(tài)的所述計算機可用程序代碼包括 用于在多個步驟中導(dǎo)入所述虛擬可信平臺模塊實例的狀態(tài)的計算機可用程 序代碼。
23. 根據(jù)權(quán)利要求20所述的計算機程序產(chǎn)品,進一步包括用于由所述源平臺上的父虛擬可信平臺模塊實例將完整性數(shù)據(jù)添加到 所述虛擬可信平臺模塊實例的狀態(tài)的計算機可用程序代碼;以及用于由所述目的地平臺上的父虛擬可信平臺模塊實例驗證所述完整性 數(shù)據(jù)的計算機可用程序代碼。
24. 根據(jù)權(quán)利要求23所述的計算機程序產(chǎn)品,進一步包括 其中所述完整性數(shù)據(jù)是遷移摘要;其中用于導(dǎo)出虛擬可信平臺模塊實例的狀態(tài)的所述計算機可用程序代 碼包括用于將所述虛擬可信平臺模塊實例的狀態(tài)的每一段串行化為字節(jié) 流的計算機可用程序代碼,其中所述源平臺上的父虛擬可信平臺模塊實例 將每個串行化字節(jié)流構(gòu)造為源摘要;用于積累所有的源摘要以構(gòu)造最終的源摘要的計算機可用程序代碼;用于導(dǎo)出所迷最終的源摘要的計算機可用程序代碼;用于由所述目的地平臺上的父虛擬可信平臺模塊實例接收所述串行化字節(jié)流的計算機可用程序代碼,其中所述目的地平臺上的父虛擬可信平臺模塊實例將每個串行化字節(jié)流構(gòu)造為目的地摘要;用于積累所有的目的地摘要以構(gòu)造最終的目的地摘要的計算機可用程序代碼;以及用于比較所述最終的源摘要和所述最終的目的地摘要的計算機可用程 序代碼。
25. 根據(jù)權(quán)利要求20所迷的計算機程序產(chǎn)品,進一步包括用于阻止所述虛擬可信平臺模塊實例的狀態(tài)被多個父虛擬可信平臺模塊實例所導(dǎo)入的計算機可用程序代碼。
26. 根據(jù)權(quán)利要求25所述的計算機程序產(chǎn)品,其中用于阻止所述虛擬可信平臺模塊實例的狀態(tài)被多個父虛擬可信平臺模塊實例所導(dǎo)入的所述計算機可用程序代碼包括用于生成唯一遷移標識符的計算機可用程序代碼;用于將所述唯一遷移標識符添加到所述可信平臺模塊實例的狀態(tài)的計 算機可用程序代碼;以及用于由目的地可信平臺模塊實例驗證所述遷移標識符的計算機可用程 序代碼。
27. 根據(jù)權(quán)利要求20所述的計算機程序產(chǎn)品,進一步包括用于在所述虛擬可信平臺模塊實例的狀態(tài)被導(dǎo)出之前,加密所述虛擬 可信平臺模塊實例的狀態(tài)的計算機可用程序代碼;以及用于在所述虛擬可信平臺模塊實例的狀態(tài)被導(dǎo)入之后,解密所述虛擬 可信平臺模塊實例的狀態(tài)的計算機可用程序代碼。
28. 根據(jù)權(quán)利要求27所述的計算機程序產(chǎn)品,其中用于加密所述虛擬 可信平臺^f莫塊實例的狀態(tài)的所述計算機可用程序代碼和用于解密所述虛擬 可信平臺模塊實例的狀態(tài)的所述計算機可用程序代碼包括用于由所述源平臺上的父虛擬可信平臺才莫塊實例生成隨^l的對稱密鑰的計算機可用程序代碼;用于使用公鑰加密所述隨機的對稱密鑰的計算機可用程序代碼;用于將已加密的隨機的對稱密鑰導(dǎo)出到所述目的地平臺上的父虛擬可信平臺模塊實例的計算機可用程序代碼,其中所述目的地平臺上的父虛擬可信平臺模塊實例通過使用與所述公鑰相關(guān)聯(lián)的私鑰來解密所述已加密的隨機的對稱密鑰;用于由所迷父虛擬可信平臺模塊實例用所述隨才幾的對稱密鑰加密所述源平臺上的所述虛擬可信平臺模塊實例的狀態(tài)的計算機可用程序代碼;以 及用于由所述父虛擬可信平臺4莫塊實例用所述隨^L的對稱密鑰解密所述 目的地平臺上的所迷虛擬可信平臺模塊實例的狀態(tài)的計算機可用程序代 碼。
29. 根據(jù)權(quán)利要求20所述的計算機程序產(chǎn)品,進一步包括用于將消息lHi代碼附加到所述虛擬可信平臺模塊實例的狀態(tài)的計算 機可用程序代碼;以及用于驗證所述消息驗證代碼的計算機可用程序代碼。
30. 根據(jù)權(quán)利要求29所述的計算機可用程序代碼,其中用于將消息驗 證代碼附加到所述虛擬可信平臺模塊實例的狀態(tài)的所述計算機可用程序代 碼以及用于lHi所述消息^代碼的所述計算機可用程序代碼包括用于由所述源平臺上的父虛擬可信平臺模塊實例生成發(fā)汪密鑰的計算 機可用程序代碼;用于由所述源平臺上的父虛擬可信平臺模塊實例用乂^加密所述m^密鑰的計算機可用程序代碼;用于由所述源平臺上的父虛擬可信平臺模塊實例導(dǎo)出所述已加密的驗 證密鑰的計算機可用程序代碼;用于由所述目的地平臺上的父虛擬可信平臺模塊實例導(dǎo)入所述已加密 的驗證密鑰的計算機可用程序代碼;用于由所述目的地平臺上的父虛擬可信平臺4莫塊實例使用與所述7^ 相關(guān)聯(lián)的私鑰來解密所述IHi密鑰的計算機可用程序代碼;用于由所述父虛擬可信平臺模塊實例使用所述驗汪密鑰將消息驗證代 碼附加到所述源平臺上的虛擬可信平臺模塊實例的狀態(tài)的計算機可用程序 代碼;以及用于由所述目的地平臺上的父虛擬可信平臺模塊實例使用所述!Hit密 鑰來發(fā)^所附加的消息mt代碼的計算機可用程序代碼。
31. 根據(jù)權(quán)利要求20所述的計算機程序產(chǎn)品,進一步包括用于鎖定所述虛擬可信平臺模塊實例的計算機可用程序代碼,其中在 所述虛擬可信平臺模塊實例已被鎖定之后,所述虛擬可信平臺模塊實例的 狀態(tài)被導(dǎo)出,以及其中一旦所迷虛擬可信平臺模塊實例已被鎖定,則所述 虛擬可信平臺模塊實例無法被解鎖。
32. 根據(jù)權(quán)利要求20所述的計算機程序產(chǎn)品,進一步包括用于鎖定所述目的地平臺上的子虛擬可信平臺模塊實例的計算機可用 程序代碼,其中在所述目的地平臺上的所述子虛擬可信平臺模塊實例已被 鎖定之后,所述虛擬可信平臺模塊的狀態(tài)被導(dǎo)入,以及其中除非所述虛擬 可信平臺模塊的全部狀態(tài)已被導(dǎo)入,否則所述目的地平臺上的所述子虛擬 可信平臺模塊實例無法被解鎖。
33. —種用于遷移虛擬可信平臺模塊實例的系統(tǒng),包括 存儲設(shè)備,其中所述存儲設(shè)備存儲計算機可用程序代碼;以及 處理器,其中所述處理器執(zhí)行所述計算機可用程序代碼以通過源平臺上的父虛擬可信平臺模塊實例導(dǎo)出虛擬可信平臺模塊實例的狀態(tài);以及 通過目的地平臺上的父虛擬可信平臺模塊實例導(dǎo)入所述虛擬可信平臺模塊 實例的所述狀態(tài)。
34. —種用于遷移虛擬可信平臺模塊實例的方法,包括 4戶機接收遷移虛擬可信平臺模塊實例的請求;以及將遷移應(yīng)用傳送到客戶機,其中所述遷移應(yīng)用將被安裝到源平臺和目 的地平臺上,并且其中所述遷移應(yīng)用向父虛擬可信平臺模塊發(fā)送命令用于 串行化所述虛擬可信平臺模塊實例的狀態(tài),以及使能已擴展的可信平臺模 塊命令集的使用,其中所述已擴展的可信平臺模塊命令集使能對于虛擬可信平臺才莫塊實例的完整狀態(tài)的下載。
全文摘要
呈現(xiàn)了一種用于虛擬化的可信平臺模塊(430、432、434)的遷移方案。過程能夠安全地將虛擬可信平臺模塊的實例從一個物理平臺(402)遷移到另一個(404)。虛擬可信平臺模塊實例的狀態(tài)從源虛擬可信平臺模塊(432)下載,并且所有其狀態(tài)信息使用公共和對稱密鑰加密法的混合來加密(612)。已加密的狀態(tài)被傳送到目標物理平臺(616)、被解密,并且虛擬可信平臺模塊實例的狀態(tài)被重建(620)。
文檔編號G06F7/04GK101405694SQ200780009921
公開日2009年4月8日 申請日期2007年3月19日 優(yōu)先權(quán)日2006年3月21日
發(fā)明者K·A·高曼, R·賽勒, S·貝格爾 申請人:國際商業(yè)機器公司