專(zhuān)利名稱(chēng):不可信云基礎(chǔ)設(shè)施中的安全虛擬機(jī)引導(dǎo)的制作方法
不可信云基礎(chǔ)設(shè)施中的安全虛擬機(jī)引導(dǎo)技術(shù)領(lǐng)域
本公開(kāi)中所提出的實(shí)施例一般地涉及用于為虛擬化服務(wù)器提供計(jì)算基礎(chǔ) 設(shè)施的技術(shù),并且更特別地,涉及一種用于在不可信云基礎(chǔ)設(shè)施(untrusted cloud infrastructure)中安全地啟動(dòng)虛擬機(jī)(VM)的方法和裝置。
背景技術(shù):
服務(wù)器虛擬化技術(shù)允許多個(gè)虛擬機(jī)在單個(gè)物理計(jì)算系統(tǒng)上同時(shí)運(yùn)行。目前,數(shù)據(jù) 中心環(huán)境被用來(lái)創(chuàng)建這樣的物理計(jì)算系統(tǒng)(通常被稱(chēng)為服務(wù)器)的大集群,其中,每個(gè)服務(wù) 器都運(yùn)行多個(gè)虛擬機(jī)(VM)。該方法已經(jīng)導(dǎo)致了能夠供應(yīng)大量計(jì)算能力的數(shù)據(jù)中心。若干供 應(yīng)商目前允許用戶(hù)供應(yīng)虛擬機(jī)實(shí)例以在由數(shù)據(jù)中心的運(yùn)營(yíng)商所提供的虛擬化服務(wù)器上運(yùn) 行。在各種形式下,這個(gè)通用計(jì)算模型逐漸被稱(chēng)為“云計(jì)算”或“基礎(chǔ)設(shè)施即服務(wù)”(IaaS), 因?yàn)橛脩?hù)在抽象硬件平臺(tái)上簡(jiǎn)單地運(yùn)行他們的虛擬機(jī)實(shí)例,而不必?fù)碛谢蛘吖芾碓撚布?臺(tái)。若非成百上千的虛擬機(jī),該方法允許給定用戶(hù)快速地?cái)U(kuò)增幾十倍以響應(yīng)對(duì)于計(jì)算資源 的需求變化。
同時(shí),云計(jì)算和IaaS供應(yīng)商所面對(duì)的主要障礙是需要用戶(hù)信任云供應(yīng)商和管理 在服務(wù)器上運(yùn)行的多個(gè)VM的管理程序(hypervisor)(或虛擬機(jī)管理器,(VMM))的實(shí)施。目 前,這個(gè)通過(guò)云供應(yīng)商針對(duì)安全性定制的操作流程的檢查和理解來(lái)完成。這導(dǎo)致信任感,但 沒(méi)有強(qiáng)大的機(jī)制來(lái)保證在相同的中央處理單元(CPU)套接字服務(wù)器中執(zhí)行的VM之間的有 效分離。
屬于不同企業(yè)的VM被并置在相同的服務(wù)器中的事實(shí)能夠?qū)е聜?cè)面攻擊和安全問(wèn) 題。例如,當(dāng)屬于不同企業(yè)的VM被在相同CPU的不同核中執(zhí)行時(shí),它們經(jīng)由L3緩存共享對(duì) 存儲(chǔ)器的訪問(wèn)(或者繞過(guò)由管理程序所設(shè)置的存儲(chǔ)器保護(hù))。在技術(shù)人員的手中,這能夠?qū)?致信息從一個(gè)VM泄漏到另一個(gè)VM。也就是說(shuō),來(lái)自一個(gè)企業(yè)的惡意VM能夠設(shè)法獲得對(duì)代 表另一個(gè)企業(yè)運(yùn)行的VM的存儲(chǔ)器的訪問(wèn)。
另一個(gè)問(wèn)題是管理程序本身。即使管理程序被設(shè)計(jì)為執(zhí)行不同VM之間的分離,由 于管理程序漏洞或由于直接針對(duì)管理程序本身的顯式攻擊,數(shù)據(jù)也仍然能夠從一個(gè)VM泄 漏到另一個(gè)VM。而且,作為云供應(yīng)商人員的一部分的惡意管理員能夠發(fā)起另一組攻擊。
所以,以可以詳細(xì)理解本公開(kāi)的上述特征的方式,可以參照實(shí)施例對(duì)以上概述的 本公開(kāi)進(jìn)行更為具體的描述,其中一些實(shí)施例在附圖中示出。然而,要注意的是,附圖僅舉 例說(shuō)明了本公開(kāi)的典型實(shí)施例并且因此將不認(rèn)為限制其范圍,因?yàn)楸竟_(kāi)可以許可其他同 等有效的實(shí)施例。
圖1A至圖1B是圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于基礎(chǔ)設(shè)施即服務(wù)(IaaS) 云環(huán)境中的可信執(zhí)行的不同安全模型的框圖。
圖2是圖示了根據(jù)本公開(kāi)的某些實(shí)施例的被配置成在IaaS環(huán)境中提供多個(gè)VM的可信執(zhí)行的虛擬化服務(wù)器的組件的框圖。
圖3是圖示了根據(jù)本公開(kāi)的某些實(shí)施例的被配置成在IaaS環(huán)境中提供可信虛擬 機(jī)執(zhí)行的處理器架構(gòu)的示例的框圖。
圖4進(jìn)一步圖示了根據(jù)本公開(kāi)的某些實(shí)施例的圖3中首先示出的CPU架構(gòu)的方面。
圖5圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于安全地啟動(dòng)VM實(shí)例的方法。
圖6圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于不可信云基礎(chǔ)設(shè)施中的安全虛擬機(jī) 引導(dǎo)的方法。
圖7圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于從儲(chǔ)存器中提取VM鏡像的加密部分 的方法。
圖8A至圖8E描繪了根據(jù)本公開(kāi)的某些實(shí)施例的用來(lái)使用圖6和圖7的方法在不 可信云基礎(chǔ)設(shè)施中安全地啟動(dòng)虛擬機(jī)的處理器架構(gòu)的示例。
具體實(shí)施方式
概述
本文所述的一個(gè)實(shí)施例包括一種方法。所述方法一般地可以包括通過(guò)具有多個(gè)處 理核的中央處理單元(CPU)上的信任錨接收虛擬機(jī)(VM)鏡像。當(dāng)接收到VM鏡像時(shí),使用 VM鏡像加密密鑰對(duì)所述VM鏡像進(jìn)行加密。所述方法還可以包括獲得VM鏡像加密密鑰并且 用該VM鏡像加密密鑰來(lái)配置第一加密/解密塊。所述方法還可以包括生成存儲(chǔ)器會(huì)話密 鑰并且用該存儲(chǔ)器會(huì)話密鑰來(lái)配置第二加密/解密塊。所述方法還可以包括將所述VM鏡 像的一個(gè)或多個(gè)頁(yè)提取到可被多個(gè)處理核訪問(wèn)的存儲(chǔ)器中。每個(gè)提取的頁(yè)都可以由第一加 密/解密塊使用VM鏡像加密密鑰來(lái)解密,并且隨后由第二加密/解密塊使用存儲(chǔ)器會(huì)話密 鑰來(lái)加密。
在一個(gè)具體實(shí)施例中,所述方法還可以包括獲得VM鏡像加密密鑰可以包括用嵌 入在信任錨中的私有密鑰來(lái)對(duì)該VM鏡像加密密鑰的第一加密拷貝進(jìn)行簽名;將經(jīng)簽名的、 加密的VM鏡像加密密鑰的拷貝傳送到密鑰服務(wù),以便認(rèn)證信任錨在CPU上的存在;以及響 應(yīng)于所述認(rèn)證,接收VM鏡像加密密鑰的第二加密拷貝,其中,VM鏡像加密密鑰的第二加密 拷貝使用信任錨的公共密鑰來(lái)加密。
本文所述的另一個(gè)實(shí)施例包括一種計(jì)算系統(tǒng)。所述系統(tǒng)可以包括具有多個(gè)處理核 的CPU、可被所述多個(gè)處理核訪問(wèn)的存儲(chǔ)器以及信任錨。所述信任錨一般地可以被配置成 獲得VM鏡像加密密鑰,用該VM鏡像加密密鑰來(lái)配置第一加密/解密塊,生成存儲(chǔ)器會(huì)話密 鑰,以及用該存儲(chǔ)器會(huì)話密鑰來(lái)配置第二加密/解密塊。所述計(jì)算系統(tǒng)還可以包括存儲(chǔ)器 控制器,所述存儲(chǔ)器控制器被配置成將所述VM鏡像的一個(gè)或多個(gè)頁(yè)提取到存儲(chǔ)器中。每個(gè) 提取的頁(yè)可以由第一加密/解密塊使用VM鏡像加密密鑰來(lái)解密,并且隨后當(dāng)被寫(xiě)入到存儲(chǔ) 器時(shí),由第二加密/解密塊使用存儲(chǔ)器會(huì)話密鑰來(lái)加密。
本文所述的又一個(gè)實(shí)施例包括一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì)存儲(chǔ)由具有多個(gè)處理核的中央處理單元(CPU)上的信任錨執(zhí)行的代碼。當(dāng)被信任錨執(zhí)行 時(shí),所述代碼可以執(zhí)行操作。并且所述操作本身一般地可以包括接收已經(jīng)使用VM鏡像加密 密鑰加密的虛擬機(jī)(VM)鏡像。所述操作還可以包括獲得VM鏡像加密密鑰;用該VM鏡像加密密鑰來(lái)配置第一加密/解密塊;生成存儲(chǔ)器會(huì)話密鑰;用該存儲(chǔ)器會(huì)話密鑰來(lái)配置第 二加密/解密塊。一旦所述加密/解密塊由信任錨配置,VM鏡像的頁(yè)就被提取到可被所述 多個(gè)處理核訪問(wèn)的存儲(chǔ)器中,并且其中,每個(gè)提取的頁(yè)由第一加密/解密塊使用VM鏡像加 密密鑰來(lái)解密,并且隨后當(dāng)被寫(xiě)入到存儲(chǔ)器時(shí),由第二加密/解密塊使用存儲(chǔ)器會(huì)話密鑰 來(lái)加密。
示例實(shí)施例的描述
本文所述的實(shí)施例提供了用于在不可信云基礎(chǔ)設(shè)施中安全地啟動(dòng)和執(zhí)行虛擬機(jī) (VM)鏡像的技術(shù)。例如,本文所述的一個(gè)實(shí)施例提供了用來(lái)啟動(dòng)和執(zhí)行VM鏡像的計(jì)算架 構(gòu)。所述計(jì)算架構(gòu)可以是具有附加的硬件組件(被稱(chēng)為信任錨)的多核處理器。所述信任 錨可以被配置成管理由本文所述的安全引導(dǎo)過(guò)程所使用的加密密鑰。
在一個(gè)實(shí)施例中,信任錨與多核處理器嵌入在一起并且可以在制造時(shí)配備有私有 /公共密鑰對(duì)和公共密鑰基礎(chǔ)設(shè)施(PKI)證書(shū),所述證書(shū)將信任錨標(biāo)識(shí)綁定到在該證書(shū)中 所列出的公共密鑰。CPU模型和制造商可以被列出為該證書(shū)的屬性。有利地,將信任錨嵌入 CPU內(nèi)允許企業(yè)在不用信任BIOS載入器/BI0S/0S載入器/管理程序鏈的元件中的任何一 個(gè)的情況下安全地引導(dǎo)VM。
在啟動(dòng)加密VM鏡像之前,信任錨從事安全協(xié)議以向企業(yè)進(jìn)行自身認(rèn)證并且獲得 用來(lái)對(duì)加密VM鏡像進(jìn)行解密的VM鏡像加密密鑰。如在本文中更詳細(xì)地描述的那樣,信任 錨用該VM鏡像加密密鑰配置磁盤(pán)控制塊。信任錨還生成存儲(chǔ)器會(huì)話密鑰,所述存儲(chǔ)器會(huì)話 密鑰被用來(lái)配置在每個(gè)處理核上的L3緩存與存儲(chǔ)器之間和在L3緩存與L2緩存之間的緩 存線中的加密/解密塊。一旦CPU上的加密/解密塊被配置,VM鏡像就可以被從儲(chǔ)存器中 提取并且啟動(dòng)。
當(dāng)加密VM鏡像的元素被從儲(chǔ)存器中提取時(shí),磁盤(pán)控制塊使用VM鏡像加密密鑰來(lái) 解密它們。當(dāng)它們被寫(xiě)入到L3緩存時(shí),存儲(chǔ)器會(huì)話密鑰然后被用來(lái)重新加密這樣的元素。 當(dāng)需要給定存儲(chǔ)器地址的數(shù)據(jù)時(shí),處理核的L2緩存與共享L3緩存之間的高速緩存線路中 的存儲(chǔ)器會(huì)話密鑰被用來(lái)解密從L3緩存中讀取(和寫(xiě)入到L3緩存)的數(shù)據(jù)。因此,L3緩 存(在多個(gè)處理核之間共享)中的數(shù)據(jù)保持加密直到被提取到L2緩存(對(duì)于處理核而言 是本地的)中為止。
例如,在一個(gè)實(shí)施例中,信任錨可以使用高級(jí)加密標(biāo)準(zhǔn)(AES)計(jì)數(shù)器模式 (AES-CTR)來(lái)加密/解密寫(xiě)入到L3緩存和從L3緩存讀取的數(shù)據(jù)。使用AES-CTR可以提供 足以加密/解密在核上的L2緩存與在多核架構(gòu)內(nèi)的多個(gè)處理核之間共享的L3緩存之間移 動(dòng)的數(shù)據(jù)的加密速度。當(dāng)然,可以使用具有充分性能特性的其他流密碼。更一般地,任何帶 密鑰的偽隨機(jī)函數(shù)能夠被用在計(jì)數(shù)器模式中,并且AES是常用的偽隨機(jī)函數(shù),用于在描述 實(shí)施例方面的具體化。使用AES-CTR,實(shí)際加密可以通過(guò)在將明文在寫(xiě)入到L3緩存中時(shí)以 通過(guò)使用與給定VM的執(zhí)行上下文相關(guān)聯(lián)的密鑰加密計(jì)數(shù)器的遞增值所生成的密鑰流(即, 以存儲(chǔ)器會(huì)話密鑰)對(duì)明文進(jìn)行異或來(lái)執(zhí)行。在一個(gè)實(shí)施例中,用來(lái)生成用于對(duì)L3緩存線 進(jìn)行加密/解密的密鑰流的計(jì)數(shù)器通過(guò)將與具體讀取/寫(xiě)入操作相關(guān)聯(lián)的存儲(chǔ)器地址與隨 機(jī)數(shù)(nonce)值相連結(jié)而構(gòu)成。
當(dāng)出現(xiàn)異常時(shí)(例如,計(jì)時(shí)器中斷、硬件訪問(wèn)等),信任錨換出與運(yùn)行VM實(shí)例相關(guān) 聯(lián)的VM鏡像加密密鑰,并且為新的執(zhí)行上下文選擇適當(dāng)?shù)拿荑€(例如,與另一個(gè)VM鏡像或管理程序相關(guān)聯(lián)的密鑰)。在一個(gè)實(shí)施例中,CPU可以被配置成用信號(hào)向所述信任錨通知關(guān) 于被調(diào)度來(lái)執(zhí)行的下一個(gè)VM實(shí)例(或管理程序)的執(zhí)行上下文。例如,由ImelT< VT-X技 術(shù)和AMD-V技術(shù)所提供的虛擬化擴(kuò)展。而且,用于切換密鑰并且初始化所述信任錨中所包 括的加密弓I擎的過(guò)程可能要求比上下文切換本身要求更少的時(shí)鐘周期。
呈現(xiàn)以下描述來(lái)使得本領(lǐng)域的普通技術(shù)人員能夠做出和使用所提出的技術(shù)。具體 實(shí)施例和應(yīng)用的描述僅僅被提供為示例,并且各種修改對(duì)于本領(lǐng)域的技術(shù)人員而言將是顯 而易見(jiàn)的。在不背離本公開(kāi)的范圍的情況下,本文所述的一般原理可以被應(yīng)用于其他實(shí)施 例和應(yīng)用。因此,本公開(kāi)將不限于所示出的實(shí)施例,但應(yīng)符合與本文描述的原理和特征一致 的最廣范圍。出于清楚的目的,不對(duì)與所提出的概念的相關(guān)技術(shù)領(lǐng)域中已知的技術(shù)材料相 關(guān)的特征進(jìn)行詳細(xì)描述。
圖1A至圖1B是圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于基礎(chǔ)設(shè)施即服務(wù) (Infrastructure as a Service, IaaS)云環(huán)境中的可信VM執(zhí)行的不同模型的框圖。如圖1A中所示,堆棧模型105可以用來(lái)提供用于執(zhí)行一個(gè)或多個(gè)虛擬機(jī)125的可信環(huán)境。特別 地,硬件錨芯片(例如,可信平臺(tái)模塊(TPM)IlO)或等效物可以用來(lái)執(zhí)行以下任務(wù)安全密 鑰存儲(chǔ)、簽名征收/檢驗(yàn)、以及密鑰的安全導(dǎo)出等。TPM 110形成信任在堆棧模型105中的 第一環(huán)節(jié)。一旦TPM 110對(duì)其進(jìn)行確認(rèn),安全BIOS 115可以依次確認(rèn)管理程序120是未 被修改的。這樣做將信任鏈從TPM 110擴(kuò)展到安全BIOS 115,并且隨后,擴(kuò)展到管理程序 120。一旦被啟動(dòng),管理程序120就遵循相同的程序以初啟虛擬機(jī)125。也就是說(shuō),一旦被 安全BIOS 115確認(rèn),管理程序120就作為可信行動(dòng)者以確認(rèn)并且啟動(dòng)虛擬機(jī)實(shí)例125。其 后,每個(gè)虛擬機(jī)125上的操作系統(tǒng)130做相同的事情以啟動(dòng)應(yīng)用135。更簡(jiǎn)單地,TPM 110 確認(rèn)BIOS 115,所述BIOSl 15確認(rèn)管理程序120,所述管理程序120反過(guò)來(lái)確認(rèn)在管理程序 120上啟動(dòng)的每個(gè)VM 125。因此,堆棧模型105依賴(lài)信任其前趨的鏈中的每個(gè)元素。
在堆棧模型105中,上層依靠下層以獲得信任。如果在鏈上存在任何中斷,則系統(tǒng) 是不安全的。進(jìn)一步地,鏈上的下層可以仍對(duì)上層可以執(zhí)行的內(nèi)容具有可見(jiàn)性。更進(jìn)一步 地,即使管理程序確認(rèn)并且啟動(dòng)了給定虛擬機(jī)125,其也不限制由可信OS 130和可信應(yīng)用 135所執(zhí)行的動(dòng)作。因此,堆棧模型105不阻止以其他方式確認(rèn)的應(yīng)用135 (或VM 125)訪 問(wèn)屬于由管理程序120所執(zhí)行的另一個(gè)VM的數(shù)據(jù),例如,在L3緩存中存儲(chǔ)的數(shù)據(jù)。
圖1B示出了根據(jù)在本公開(kāi)中呈現(xiàn)的一個(gè)實(shí)施例的可替代信任模型。如圖所示,信 任模型150提供了一種星形模型,其中信任錨(trust anchor) 165位于中間而不是在底部。 這樣做允許信任錨165直接地確認(rèn)虛擬化服務(wù)器上的BIOS 175和管理程序170。但進(jìn)一 步,這樣做還允許信任錨165確認(rèn)傳遞到管理程序170以便執(zhí)行的每個(gè)VM鏡像(例如,VMl 155和VM2 160),以及確認(rèn)用于應(yīng)用108載入VM 155、160并在其上執(zhí)行的代碼。也就是 說(shuō),與堆棧模型105不同,星形模型150提供了被配置成提供信任錨165的信任錨165。為 了阻止執(zhí)行上下文之間的未經(jīng)授權(quán)的訪問(wèn),星形模型150針對(duì)虛擬化服務(wù)器內(nèi)的每個(gè)相關(guān) 操作程序從完整性保護(hù)(在堆棧模型中)向機(jī)密性轉(zhuǎn)移。這樣做可以用來(lái)為VM 155,160 提供安全的計(jì)算環(huán)境。例如,與堆棧模型105不同,星形模型150阻止具有更高特權(quán)的操作 程序(例如,管理程序170)訪問(wèn)其他操作程序(例如,VM 155,160)的數(shù)據(jù),以及阻止一個(gè) VM訪問(wèn)屬于另一個(gè)VM的數(shù)據(jù),即使這些VM同時(shí)在多核處理器上的不同核中執(zhí)行并且共享 L3緩存和存儲(chǔ)器。下文討論的圖2至圖4提供了在具有多核CPU的虛擬化服務(wù)器上實(shí)施圖IB中所示出的星形模型150的示例架構(gòu)。
圖2是圖示了根據(jù)本公開(kāi)的某些實(shí)施例的被配置成在IaaS環(huán)境中提供多個(gè)VM的可信執(zhí)行的虛擬化服務(wù)器200的組件的框圖。虛擬化服務(wù)器200通??梢园ㄓ梢粋€(gè)或多個(gè)互連250連接的硬件計(jì)算組件的集合。用作說(shuō)明地,虛擬化服務(wù)器200包括網(wǎng)絡(luò)接口卡 (NIC) 251、存儲(chǔ)器252、(一個(gè)或多個(gè))CPU 253以及存儲(chǔ)設(shè)備254 (例如,本地附接的磁盤(pán)驅(qū)動(dòng)器、固態(tài)設(shè)備(SSD)或與諸如SAN的遠(yuǎn)程儲(chǔ)存器的連接)。
虛擬化服務(wù)器200允許多個(gè)虛擬機(jī)(VM)23(V3同時(shí)在服務(wù)器200上執(zhí)行,共享存在于虛擬化服務(wù)器200上的計(jì)算硬件。然而,虛擬機(jī)23(^3通常不直接地知道虛擬化服務(wù)器200上的計(jì)算硬件。相反,管理程序240可以被配置成為每個(gè)虛擬機(jī)230”提供虛擬化硬件元件。注意,雖然虛擬硬件分配似乎與在每個(gè)虛擬機(jī)230”上運(yùn)行的OS和應(yīng)用136不同,但它們?cè)谔摂M化層下面被共享。也就是說(shuō),虛擬資源提供了下層物理資源的抽象概念, 并且下層物理資源在虛擬機(jī)230卜3之間共享。
用作說(shuō)明地,存儲(chǔ)器252包括管理三個(gè)虛擬機(jī)實(shí)例(VM) 230^3的管理程序240。每個(gè)VM23(V3提供具有虛擬CPU、存儲(chǔ)器、存儲(chǔ)器和網(wǎng)絡(luò)接口的虛擬化計(jì)算平臺(tái)。操作系統(tǒng)在每個(gè)VM23(V3上被啟動(dòng)并且用來(lái)載入和執(zhí)行應(yīng)用232卜3。在一個(gè)實(shí)施例中,管理程序240可以被實(shí)施為在虛擬化服務(wù)器200的計(jì)算硬件上直接地運(yùn)行的軟件層。在這樣的情況下,管理程序240可以被配置成攔截由在VM 230上運(yùn)行的OS所進(jìn)行的一些(或全部)操作系統(tǒng)調(diào)用。
更一般地,管理程序240運(yùn)行在系統(tǒng)硬件之上并且允許虛擬化服務(wù)器200伺服 VM 230卜3。在一個(gè)實(shí)施例中,信任錨258可以用來(lái)確認(rèn)管理程序240。也就是說(shuō),管理程序 240 (即,管理程序240在存儲(chǔ)盤(pán)上的鏡像)可以由加密密鑰簽名,并且信任錨258可以被配置成獲得在載入管理程序240之前驗(yàn)證管理程序240未被修改所需要的密鑰。例如,給定 IaaS供應(yīng)商(或管理程序廠商)可以使用私·有/公共密鑰對(duì)的私有密鑰來(lái)對(duì)管理程序代碼進(jìn)行簽名。在一些情況下,公共密鑰還可以通過(guò)證書(shū)授權(quán)來(lái)簽名(并且提供為PKI證書(shū)的一部分)。接下來(lái),信任錨258可以從PKI證書(shū)中獲得公共密鑰并且確認(rèn)與管理程序240 相關(guān)聯(lián)的數(shù)字簽名。
一旦被確認(rèn),管理程序240就可以啟動(dòng)和執(zhí)行VM 230卜3。進(jìn)一步地,每個(gè)VM 230 還可以是被簽名和/或加密的對(duì)象。例如,企業(yè)可以將使用VM鏡像加密密鑰加密的VM鏡像傳送到虛擬化服務(wù)器200。如在下面更詳細(xì)地描述的那樣,在一個(gè)實(shí)施例中,信任錨258 向企業(yè)進(jìn)行自身認(rèn)證,以便在虛擬化服務(wù)器230上執(zhí)行給定VM 230之前,獲得與該VM 230 相關(guān)聯(lián)的VM鏡像加密密鑰。VM鏡像加密密鑰可以用來(lái)加密提交到虛擬化服務(wù)器200的加密VM鏡像。
進(jìn)一步地,信任錨258可以獲得(或者生成)針對(duì)每個(gè)給定VM 230的存儲(chǔ)器會(huì)話,并且當(dāng)VM在執(zhí)行核256中的一個(gè)上執(zhí)行時(shí),使用所述存儲(chǔ)器會(huì)話來(lái)加密/解密從緩存 255中讀取和寫(xiě)入到緩存255的信息。如在下面更詳細(xì)地描述的那樣,信任錨258可以將存儲(chǔ)器會(huì)話密鑰作為載入給定VM實(shí)例的一部分來(lái)生成。信任錨258可以被配置成在CPU 253上的執(zhí)行核256之一的執(zhí)行上下文改變的任何時(shí)候交換存儲(chǔ)器會(huì)話密鑰,例如,不同VM 230卜3之間的上下文切換或VM 230η與管理程序240自身之間的上下文切換。
緩存255提供了由CPU 253上的執(zhí)行核256訪問(wèn)的高速存儲(chǔ)器。雖然存儲(chǔ)器252能夠橫跨虛擬機(jī)230被分段,但是緩存255常常被不同的VM 230卜3共享。例如,如圖所示, CPU 253可以包括一個(gè)或多個(gè)執(zhí)行核256。當(dāng)在不同的執(zhí)行核256上執(zhí)行不同的VM 230^ 時(shí),VM 230^3可以共享對(duì)緩存255的訪問(wèn)。在一個(gè)實(shí)施例中,信任錨258可以針對(duì)每個(gè)VM 230使用不同的存儲(chǔ)器會(huì)話密鑰來(lái)對(duì)緩存255加密/解密每個(gè)讀取/寫(xiě)入。這樣做阻止了在一個(gè)執(zhí)行核256上執(zhí)行的VM 230訪問(wèn)屬于在不同的執(zhí)行核256上執(zhí)行的另一個(gè)VM 230 的緩存255中的數(shù)據(jù)。進(jìn)一步地,這樣做還阻止管理程序240訪問(wèn)屬于給定VM 23(^3的緩存255中的數(shù)據(jù),盡管管理程序240具有一般更高的特權(quán)級(jí)別。
圖3是圖示了根據(jù)本公開(kāi)的某些實(shí)施例的被配置成在IaaS環(huán)境中提供可信虛擬機(jī)執(zhí)行的處理器架構(gòu)的示例的框圖。如圖所示,CPU 300包括兩個(gè)不同的處理核305、310。 而每個(gè)CPU核305包括第一層(LI)指令和數(shù)據(jù)緩存以及L2緩存。CPU 300還包括信任錨 315,并且處理核305、310各自具有相關(guān)聯(lián)的密鑰生成組件320卜2和加密/解密塊325"。用作說(shuō)明地,將處理核305、310連接到共享L3緩存330的緩存線各自包括加密/解密塊325" 中的一個(gè)。L3緩存330被連接到存儲(chǔ)器控制器335,所述存儲(chǔ)器控制器335又連接到存儲(chǔ)器 340。
盡管CPU 300圖示了具有兩個(gè)處理核305、310的示例實(shí)施例,但是本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,本文所述的實(shí)施例能夠被容易地適配以用于具有更多處理核的CPU。在這樣的情況下,每個(gè)額外的CPU核都將包括到信任錨315的連接以及密鑰生成組件320和與加密/解密塊連接的共享L3緩存330。
在一個(gè)實(shí)施例中,信任錨315可以被配置成管理處理核305、310上的多租戶(hù)執(zhí)行上下文(即,多個(gè)虛擬機(jī)鏡像的執(zhí)行)以及管理與外界的通信。例如,信任錨315可以被配置成提供用于載入和啟動(dòng)VM實(shí)例的安全啟動(dòng)過(guò)程;在VM實(shí)例之間提供安全的上下文切換;基于執(zhí)行上下文交換存儲(chǔ)器會(huì)話密鑰;以及在VM執(zhí)行期間提供安全的密鑰存儲(chǔ)。在一個(gè)實(shí)施例中,與CPU 300嵌入在一起的信任錨315可以在制造時(shí)配備有公共/私有密鑰對(duì)和由證書(shū)授權(quán)機(jī)構(gòu)(CA)頒發(fā)的證書(shū),所述證書(shū)將信任錨165標(biāo)識(shí)綁定到公共密鑰。CPU模型和制造商名稱(chēng)可以被包括為該證書(shū)的屬性。如在下面更詳細(xì)地描述的那樣,信任錨315 可以使用公共/私有密鑰對(duì)來(lái)證明虛擬化服務(wù)器具有配置有信任錨的多核CPU,并且因此, 能夠在以其他方式不可信云環(huán)境中啟動(dòng)和執(zhí)行VM鏡像。
信任錨315可以在發(fā)生上下文切換的任何時(shí)候從處理核305、310接收指示。這樣的指示可以為輸入的執(zhí)行上下文提供標(biāo)識(shí)符。如上文中所提及的那樣,某些多核處理器提供了允許執(zhí)行上下文從CPU上的處理核導(dǎo)中的擴(kuò)展指令集。例如,由Intel VT-X技術(shù)所提供的虛擬化擴(kuò)展和VMX指令集提供了用來(lái)用信號(hào)通知處理核上的執(zhí)行上下文中的改變的指令(例如,VMEXIT和VMRESUME指令)。
響應(yīng)于指示執(zhí)行上下文中的改變的來(lái)自核305、310中的一個(gè)的信號(hào),信任 錨315 可以針對(duì)新的執(zhí)行上下文配置與處理核305、310相關(guān)聯(lián)的加密/解密塊325"和密鑰生成組件320"。當(dāng)發(fā)生上下文切換時(shí),信任錨換出與處理核305、310上的當(dāng)前執(zhí)行上下文相關(guān)聯(lián)的密鑰,并且將其替代為與輸入執(zhí)行上下文相關(guān)聯(lián)的密鑰。如已知的那樣,VM實(shí)例之間 (或VM實(shí)例與管理程序之間)的多核處理器上的上下文切換需要在CPU核上的寄存器(例如,狀態(tài)寄存器、IR寄存器、通用寄存器、計(jì)數(shù)寄存器)恢復(fù)(或初始化)以用于輸入執(zhí)行上下文。在一個(gè)實(shí)施例中,信任錨315可以被配置成交換適當(dāng)?shù)募用苊荑€并且使用比執(zhí)行上下文切換本身(當(dāng)前,過(guò)程通常需要約20至30個(gè)時(shí)鐘周期)所需要更少的時(shí)鐘周期來(lái)初始化加密/解密塊325"。這樣做允許信任錨在不用引入任何附加等待時(shí)間的情況下為輸入VM實(shí)例(或管理程序)提供安全的執(zhí)行上下文。
一旦被初始化,加密/解密塊325在數(shù)據(jù)在處理核305、310與L3緩存255之間的緩存線上移動(dòng)時(shí)對(duì)數(shù)據(jù)進(jìn)行加密/解密。在一個(gè)實(shí)施例中,加密/解密塊325"提供了基于硬件的流密碼的實(shí)施。如已知的那樣,流密碼是對(duì)稱(chēng)密鑰密碼,其中明文與密鑰流相結(jié)合以加密小單位的數(shù)據(jù)(例如,每次一位或單字節(jié))。在具體實(shí)施例中,解密/解密塊可以被配置成將AES-CTR(高級(jí)加密標(biāo)準(zhǔn)-計(jì)數(shù)器模式)用作為流密碼。使用流密碼允許數(shù)據(jù)在無(wú)需額外的時(shí)鐘周期的情況下在處理核305、310與L3緩存330之間移動(dòng)時(shí)被加密/解密。 相反,一旦被初始化,加密/解密塊325"可以使用所述密鑰流對(duì)移動(dòng)到特定核305、310/從特定核305、310移動(dòng)的每個(gè)位進(jìn)行異或。因此,由信任錨所提供的功能性定位在與每個(gè)處理核305、310鄰近,并且確保由VM共享的任何元件在不同的核(在這種情況下為L(zhǎng)3緩存 330和存儲(chǔ)器340)上運(yùn)行。在一個(gè)實(shí)施例中,密鑰生成組件320"可以被配置成使用VM密鑰、存儲(chǔ)器地址以及隨機(jī)數(shù)(nonce)來(lái)生成加密/解密塊325"所使用的密鑰流。
存儲(chǔ)器控制器335可以被配置成在存儲(chǔ)器340與L3緩存之間移動(dòng)數(shù)據(jù)。例如,存儲(chǔ)器控制器335可以選擇來(lái)將數(shù)據(jù)從L3緩存330刷新到存儲(chǔ)器340。在一個(gè)實(shí)施例中,當(dāng)這樣做時(shí),存儲(chǔ)器控制器335還將用來(lái)在數(shù)據(jù)被寫(xiě)入到L3緩存330中時(shí)對(duì)數(shù)據(jù)進(jìn)行加密的隨機(jī)數(shù)值寫(xiě)入到存儲(chǔ)器340中。同樣地,存儲(chǔ)器控制器335可以在從存儲(chǔ)器340中讀取加密數(shù)據(jù)時(shí)檢索適當(dāng)?shù)碾S機(jī)數(shù)值。
圖4進(jìn)一步圖示了根據(jù)本公開(kāi)的某些實(shí)施例的圖3中首先示出的處理器架構(gòu)的方面。特別地,圖4示出了用來(lái)執(zhí)行到L3緩存433的安全寫(xiě)入操作401并且用來(lái)執(zhí)行從L3 緩存443的安全讀取操作402的圖3的處理器架構(gòu)。
如圖所示,寫(xiě)入操作401在明文數(shù)據(jù)405i從處理核本地的L2緩存移動(dòng)到由多個(gè)處理核共享的L3緩存433時(shí)對(duì)所述明文數(shù)據(jù)405i進(jìn)行加密。用作說(shuō)明地,加密/解密塊MO1 包括密鑰415p AES引擎4201、存儲(chǔ)器地址425i以及隨機(jī)數(shù)43(^。密鑰415i通過(guò)信任錨而被提供給加密/解密塊410i。如上文中所提及的那樣,密鑰415i對(duì)應(yīng)于在多核CPU(例如, 圖3中所示出的處理器架構(gòu))的處理·核中的一個(gè)上執(zhí)行的VM(或管理程序)。存儲(chǔ)器地址 425!對(duì)應(yīng)于從L2緩存寫(xiě)入到L3緩存433的明文405i的存儲(chǔ)器地址。隨機(jī)數(shù)43(^提供了用于給定寫(xiě)入操作的一次值。典型地,隨機(jī)數(shù)43(^可以是針對(duì)共享L3緩存433的每次寫(xiě)入(和讀取)增量的計(jì)數(shù)器值。然而,可替代地,隨機(jī)數(shù)430i可以從隨機(jī)或偽隨機(jī)噪聲源生成。
在一個(gè)實(shí)施例中,AES引擎420提供了 AES-CTR流密碼的硬件實(shí)施,并且被配置成從密鑰材料(即,從密鑰4151、存儲(chǔ)器地址425i以及隨機(jī)數(shù)430J生成密鑰流。所得的密鑰流在明文405i從處理核上的L2緩存被推送到共享的L3緩存433中時(shí)與明文405i進(jìn)行異或,產(chǎn)生密文435p除將所得的加密數(shù)據(jù)寫(xiě)入到L3緩存433之外,加密/解密塊41(^中的隨機(jī)數(shù)值也被寫(xiě)入到L3緩存433 (在圖4中示出為隨機(jī)數(shù)440D。更一般地,加密/解密塊可以將任何帶密鑰的偽隨機(jī)函數(shù)應(yīng)用到計(jì)數(shù)器,以便生成與明文405i異或的密鑰流。
在一個(gè)實(shí)施例中,加密/解密塊41(^可以包括到L3緩存433的單獨(dú)緩存線,其允許隨機(jī)數(shù)430i與明文405i并行存儲(chǔ)在L3緩存433中(作為隨機(jī)數(shù)44(^),明文405i使用密鑰流來(lái)加密并且作為密文435i存儲(chǔ)在L3緩存433中。可替代地,隨機(jī)數(shù)34(^可以使用用來(lái)寫(xiě)入密文435i的相同緩存線寫(xiě)入到緩存433。
讀取操作402與寫(xiě)入操作401類(lèi)似,但是方向相反。為了從L3緩存433中讀取加密數(shù)據(jù)4352,存儲(chǔ)器地址4252和隨機(jī)數(shù)4402被讀取到加密/解密塊4102中。再者,密鑰 4152是與在多核處理器的處理核上執(zhí)行的VM(或管理程序)相關(guān)聯(lián)的會(huì)話密鑰,并且在處理核上的上下文切換之間保持不變。存儲(chǔ)器地址4252對(duì)應(yīng)于被拉到L2緩存中的數(shù)據(jù)的存儲(chǔ)器地址,并且隨機(jī)數(shù)4302是用來(lái)當(dāng)數(shù)據(jù)被寫(xiě)入到L3緩存433時(shí)對(duì)數(shù)據(jù)進(jìn)行加密的隨機(jī)數(shù)值。也就是說(shuō),由寫(xiě)入操作401用來(lái)生成用來(lái)加密明文405i的密鑰流的相同密鑰材料被用來(lái)重新生成相同的密鑰流以解密來(lái)自L3緩存433的加密數(shù)據(jù)4352。因此,在一個(gè)實(shí)施例中,使用AES-CTR來(lái)從用于讀取操作402的密鑰材料生成所述密鑰流。當(dāng)然,可以使用其他帶密鑰的偽隨機(jī)函數(shù)。所得的密鑰流然后與來(lái)自L3緩存433的加密數(shù)據(jù)4352進(jìn)行異或, 并且作為明文4052寫(xiě)入在L2緩存中。
圖5圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于安全地啟動(dòng)VM實(shí)例的方法500。如圖所示,方法500在步驟505處開(kāi)始,其中,管理程序接收虛擬機(jī)的啟動(dòng)鏡像以在虛擬化服務(wù)器上啟動(dòng)和執(zhí)行。例如,在一個(gè)實(shí)施例中,用戶(hù)可以將VM啟動(dòng)鏡像連同針對(duì)在其上用于執(zhí)行VM實(shí)例的虛擬化硬件系統(tǒng)的一組需求(例如,處理器速度、存儲(chǔ)器需求等)一起傳送到云供應(yīng)商。VM啟動(dòng)鏡像可以使用由用戶(hù)所生成的VM鏡像加密密鑰來(lái)加密。在一個(gè)實(shí)施例中,每4kb數(shù)據(jù)塊被獨(dú)立地加密,使得塊可以在不用解密整個(gè)鏡像的情況下進(jìn)入虛擬化服務(wù)器上的存儲(chǔ)器或從虛擬化服務(wù)器上的存儲(chǔ)器出來(lái)時(shí)被解密和分頁(yè)。
在步驟510處,管理程序嘗試啟動(dòng)VM啟動(dòng)鏡像。在步驟515處,管理程序確定該 VM啟動(dòng)鏡像是否被加密。如果是,則管理程序觸發(fā)信任錨與提交VM啟動(dòng)鏡像以便執(zhí)行的用戶(hù)(或相關(guān)聯(lián)的密鑰服務(wù))之間的協(xié)商,以獲得用來(lái)加密VM啟動(dòng)鏡像的VM鏡像加密密鑰。 一旦獲得,信任錨就用該密鑰來(lái)配置磁盤(pán)控制塊(步驟520)。VM鏡像加密密鑰用來(lái)在從存儲(chǔ)器提取加密VM啟動(dòng)鏡像的存儲(chǔ)器頁(yè)并將其存儲(chǔ)在存儲(chǔ)器中時(shí)解密該存儲(chǔ)器頁(yè)(或者加密從存儲(chǔ)器刷新到存儲(chǔ)器的頁(yè))。信任錨將與VM鏡像相關(guān)聯(lián)的VM鏡像加密密鑰存儲(chǔ)在安全密鑰存儲(chǔ)中。在步驟525處,信任錨還生成存儲(chǔ)器會(huì)話密鑰,所述存儲(chǔ)器會(huì)話密鑰被用來(lái)在每個(gè)處理核上的L3緩存與存儲(chǔ)器之間和在L3緩存與L2緩存之間的緩存線中配置加密 /解密塊。一旦CPU上的密鑰加密/解密塊被配置,則可以從儲(chǔ)存器中提取VM鏡像并且將其啟動(dòng)。管理程序然后可以啟動(dòng)VM鏡像并且對(duì)其進(jìn)行調(diào)度以便執(zhí)行(步驟530)?!?br>
在步驟535處,管理程序在處理核中的一個(gè)上執(zhí)行該VM鏡像。當(dāng)加密VM鏡像的一部分從儲(chǔ)存器中提取時(shí),磁盤(pán)控制塊使用VM鏡像加密密鑰來(lái)對(duì)其進(jìn)行解密(步驟540)。 存儲(chǔ)器會(huì)話密鑰然后被用來(lái)在這些元素被寫(xiě)入到L3緩存中時(shí)對(duì)其進(jìn)行重新加密。當(dāng)需要給定存儲(chǔ)器地址的數(shù)據(jù)時(shí),處理器核的L2緩存與L3緩存之間的緩存線中的存儲(chǔ)器會(huì)話密鑰被用來(lái)解密從L3緩存讀取(和寫(xiě)入到L3緩存)的數(shù)據(jù)。因此,L3緩存(在多個(gè)處理核之間共享)中的數(shù)據(jù)保持加密,直到被提取到L2緩存(對(duì)于處理核而言是本地的)中。
如果VM啟動(dòng)鏡像未被加密(步驟515),則信任錨仍然可以生成存儲(chǔ)器會(huì)話密鑰, 以便在處理核上執(zhí)行的同時(shí),加密/解密由VM進(jìn)行的對(duì)L3緩存的所有寫(xiě)入/讀取(步驟 525)。在任一情況下,管理程序可以開(kāi)始調(diào)度VM以在多處理器CPU的處理核之一上執(zhí)行 (步驟530)。此外,當(dāng)管理程序發(fā)起上下文切換時(shí),信任錨用適當(dāng)?shù)腣M鏡像加密密鑰和用于輸入VM的存儲(chǔ)器會(huì)話密鑰來(lái)配置該CPU上的加密/解密塊。
圖6圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于不可信云基礎(chǔ)設(shè)施中的安全虛擬機(jī)引導(dǎo)的方法600。方法600的元素與圖8A至圖SC相結(jié)合地描述,圖8A至圖SC描繪了根據(jù)本公開(kāi)的某些實(shí)施例的可以被用來(lái)在不可信云基礎(chǔ)設(shè)施中安全地啟動(dòng)虛擬機(jī)的示例處理器架構(gòu)。
如圖所示,方法600在步驟605處開(kāi)始,其中,用戶(hù)生成VM鏡像加密密鑰(KS)并且使用其來(lái)加密VM鏡像。在一個(gè)實(shí)施例中,用戶(hù)用對(duì)應(yīng)于由用戶(hù)或企業(yè)所持有的密鑰對(duì)(表示為E-Pub-K)的公共密鑰來(lái)加密VM鏡像加密密鑰(KS)。注意,如本文所用,使用給定密鑰加密的對(duì)象被表示為{加密對(duì)象}^ 。因此,使用加密密鑰(KS)加密的VM鏡像被表示為 IVM 鏡像}KS。
在一個(gè)實(shí)施例中,在RFC 3852中定義的IETF加密消息語(yǔ)法(CMS)能夠被用來(lái)包裝密鑰。RFC 3852中的封裝數(shù)據(jù)內(nèi)容類(lèi)型支持此密鑰包裝;KS被稱(chēng)作內(nèi)容加密密鑰。鏡像加密方法能夠使用任何方便的密碼,其包括AES-CBC (密碼塊鏈接)、AES-GCM(伽羅瓦計(jì)數(shù)器模式)、或諸如AES-XCB (擴(kuò)展碼本)的存儲(chǔ)友好模式。此外,被選擇來(lái)加密VM鏡像的加密方法可以是非延展性的;這意味著攻擊者不能夠改變密文以使后解密明文為任何特定值。相反,后解密密文隨機(jī)出現(xiàn)。這樣做確保了能夠改變密文的攻擊者仍然不能夠操縱后解密明文的值。AES-XCB是適合于VM鏡像加密的非延展性密碼。
在一個(gè)實(shí)施例中,密鑰服務(wù)還可以對(duì)VM進(jìn)行簽名。而企業(yè)也可以在將VM鏡像發(fā)送到虛擬化服務(wù)器之前對(duì)該VM鏡像進(jìn)行簽名。也就是說(shuō),除信任錨向企業(yè)進(jìn)行自身認(rèn)證之外,企業(yè)可以向信任錨進(jìn)行自身認(rèn)證。
在步驟610處,企業(yè)將加密VM鏡像和加密會(huì)話密鑰上載到虛擬化服務(wù)器。也就是說(shuō),企業(yè)將{VM鏡像}KS和{KS}E_PubK上載到虛擬化服務(wù)器。一旦接收到,管理程序就將該VM 鏡像加密密鑰(KS) ( S卩,{KS}E_Pub_K)傳遞到多核CPU上的信任錨?!?br>
例如,圖8A圖示了具有加密VM鏡像815、密鑰服務(wù)820以及加密會(huì)話密鑰{KS} E,b_K825的企業(yè)810。企業(yè)810通常表示期望以根據(jù)本文提出的實(shí)施例中的任何一個(gè)的安全方式在不可信云基礎(chǔ)設(shè)施中啟動(dòng)和執(zhí)行VM鏡像的任何用戶(hù)和組織。密鑰服務(wù)820提供了企業(yè)所使用的公共/私有密鑰對(duì)。注意,盡管被示出為企業(yè)810的一部分,但是密鑰服務(wù) 820能夠由在企業(yè)810外部的可信第三方提供,例如由用來(lái)對(duì)由證書(shū)授權(quán)機(jī)構(gòu)頒發(fā)的PKI證書(shū)中命名的公共密鑰(E-PubK)進(jìn)行簽名的證書(shū)授權(quán)機(jī)構(gòu)來(lái)提供。
用作說(shuō)明地,箭頭830表示加密VM鏡像815 (即,{VM鏡像}KS)和VM鏡像加密密鑰825 (即,{KS} )正被上載到虛擬化服務(wù)器800上的存儲(chǔ)庫(kù)840。一旦被虛擬化服務(wù)器 800接收到,{KS}E_PubK就被傳遞到CPU 805上的信任錨835。在一個(gè)實(shí)施例中,信任錨835 觸發(fā)用于向企業(yè)進(jìn)行自身認(rèn)證的過(guò)程,以便獲得VM鏡像加密密鑰的明文拷貝(S卩,以獲得 KS)。返回到方法600,在步驟615處,信任錨使用嵌入在該信任錨中的私有密鑰對(duì){KS}E_PubK 進(jìn)行簽名。這樣做產(chǎn)生了 {{KS}E_PubK}TA_MvK。所得的加密數(shù)據(jù)被往回發(fā)送到用戶(hù)或企業(yè)以便進(jìn)行認(rèn)證。例如,如圖8B中所示,箭頭845表示IKSppublJta_PHvK850正被往回發(fā)送到密鑰服務(wù)820。
在步驟620處,密鑰服務(wù)用信任錨的公共密鑰(即,用TA-PubK)和企業(yè)私有密鑰 (即,用E-Priv-Κ)解開(kāi)VM鏡像加密密鑰(KS)。所得的KS明文拷貝與發(fā)送到信任錨的KS的原始版本相比較。如果從信任錨接收到的KS的拷貝(在解密操作后)和發(fā)送到信任錨的KS的版本匹配,則虛擬化服務(wù)器被視為認(rèn)證有效,即是,被視為具有多核CPU的虛擬化服務(wù)器配置有根據(jù)本文所述的實(shí)施例配置的信任錨。一旦認(rèn)證有效,密鑰服務(wù)然后就用該信任錨的公共密鑰(即,用TA-PubK)來(lái)加密KS,并且將其往回傳送到虛擬化服務(wù)器。
在步驟625處,信任錨接收用信任錨的公共密鑰加密的KS的拷貝,即,信任錨接收 {KS}TA_PubK。一旦接收到,信任錨就可以使用在該信任錨上嵌入的私有密鑰來(lái)解密{KS}TA_PubK。 因此,一旦信任錨被認(rèn)證有效,企業(yè)然后就發(fā)送該信任錨能夠解密的VM鏡像加密密鑰(KS) 的加密拷貝。信任錨可以將KS的明文拷貝存儲(chǔ)在私有密鑰存儲(chǔ)器中。此外,信任錨可以生成存儲(chǔ)器會(huì)話密鑰(KM)并且將其存儲(chǔ)在私有密鑰存儲(chǔ)器中。在步驟630處,信任錨配置多核CPU以啟動(dòng)加密VM鏡像。例如,信任錨可以用VM鏡像加密密鑰(KS)來(lái)配置存儲(chǔ)庫(kù)與存儲(chǔ)器之間的加密/解密塊,并且用存儲(chǔ)器會(huì)話密鑰(KM)來(lái)配置存儲(chǔ)器與L3緩存之間的緩存線中的加密/解密塊。
圖8C圖示了步驟620、625以及630的示例。如圖所示,密鑰服務(wù)820使用信任錨的公共密鑰來(lái)加密VM鏡像加密密鑰(KS),產(chǎn)生{KS}TA_PubK855。箭頭860表示{KS} TA_PubK855 正被傳送到信任錨835。如所描述的那樣,解密{Κ5}τα_μκ給信任錨835提供了 VM鏡像加密密鑰(KS)的非加密拷貝874,所述非加密拷貝874然后被存儲(chǔ)在密鑰存儲(chǔ)器870中。進(jìn)一步地,信任錨還生成了同樣地存儲(chǔ)在密鑰存儲(chǔ)器870中的存儲(chǔ)器會(huì)話密鑰(KM) 872。
為了允許管理程序啟動(dòng)存儲(chǔ)庫(kù)840中的加密VM鏡像842,信任錨835用VM鏡像加密密鑰(KS) 874來(lái)配置加密/解密塊865。在CPU 805的示例架構(gòu)中,加密/解密塊865提供了加密/解密引擎,所述加密/解密引擎被配置成對(duì)加密VM鏡像842的4Κ字節(jié)數(shù)據(jù)塊進(jìn)行操作。更一般地,加密/解密塊865在數(shù)據(jù)被寫(xiě)入到磁盤(pán)時(shí)對(duì)數(shù)據(jù)進(jìn)行加密并且在數(shù)據(jù)被從磁盤(pán)(即,從存儲(chǔ)庫(kù)840)讀取時(shí)對(duì)數(shù)據(jù)進(jìn)行解密。加密/解密塊865還能夠使用與緩存加密/解密塊876和878相比不同的AES操作模式,諸如AES-XBC,其不易受到剪切和粘貼攻擊。當(dāng)然,還可以使用其他的密碼。重要的是,當(dāng)企業(yè)810將VM鏡像加密密鑰(KS) 提供給虛擬化服務(wù)器800時(shí),寫(xiě)入到存儲(chǔ)庫(kù)的數(shù)據(jù)被使用由企業(yè)810所持有的密鑰進(jìn)行加LU O
加密/解密塊876提供了用來(lái)加密/解密被寫(xiě)入到DRAM 878和從DRAM 878讀取的數(shù)據(jù)的加密/解密引擎。加密/解密塊876可以被配置成在64字節(jié)緩存線上工作,例如如相對(duì)于圖3和圖4在上文所討論的加密/解密塊878 (包括隨機(jī)數(shù)管理)。因此,加密/ 解密塊876和878可以使用AES-CTR模式操作以使用存儲(chǔ)器地址和隨機(jī)數(shù)值生成密鑰流, 以便加密/解密在L2緩存880與L3緩存882之間(針對(duì) 塊878)和在DRAM 878與L3緩存328 (針對(duì)塊876)的數(shù)據(jù)。
在一個(gè)實(shí)施例中,加密/解密塊865和876以I/O速度( 6Gbps)而不是以加密 /解密塊878的緩存速度操作,并且能夠選擇門(mén)有效實(shí)施。該架構(gòu)使被用于磁盤(pán)加密的密鑰 (BP, KS 874)與用于緩存加密的密鑰(S卩,KM 872)分離。這樣做確保了存儲(chǔ)器會(huì)話密鑰 (KM) 872永遠(yuǎn)不離開(kāi)CPU邊界或信任錨835的直接控制。
I/O通過(guò)從存儲(chǔ)庫(kù)840讀取加密VM鏡像842的nKB的數(shù)據(jù)塊而開(kāi)始。數(shù)據(jù)塊的讀取用KS進(jìn)行解密并且當(dāng)被寫(xiě)入到DRAM 848時(shí)用KM進(jìn)行重新加密。一旦針對(duì)L3緩存882 的給定緩存線的數(shù)據(jù)被拷貝到L2緩存880,所述數(shù)據(jù)就將被解密并且可用于引導(dǎo)VM鏡像,即,L2緩存880中的明文指令和數(shù)據(jù)可用于處理核885上的LI指令和數(shù)據(jù)緩存。例如,圖 7圖示了根據(jù)本公開(kāi)的某些實(shí)施例的用于從儲(chǔ)存器中提取加密VM鏡像的部分的方法700。
如圖所示,方法700在步驟705處開(kāi)始,其中從儲(chǔ)存器中提取的一個(gè)或多個(gè)頁(yè)被標(biāo) 識(shí)。當(dāng)存儲(chǔ)器控制器指向?qū)㈨?yè)寫(xiě)入DRAM時(shí),由信任錨用VM鏡像加密密鑰(KS)所配置的第 一加密/解密塊當(dāng)從儲(chǔ)存器中提取頁(yè)時(shí)對(duì)頁(yè)進(jìn)行解密(步驟710)。第一加密/解密塊的輸 出可以傳遞到第二加密/解密塊,其中,信任錨已經(jīng)用存儲(chǔ)器會(huì)話密鑰(KM)配置了第二加 密/解密塊。當(dāng)頁(yè)被寫(xiě)入到存儲(chǔ)器時(shí),第二加密/解密塊使用存儲(chǔ)器會(huì)話密鑰(KM)來(lái)對(duì)頁(yè) 進(jìn)行加密(步驟715和720)。
例如,圖8D示出了 VM鏡像842的加密頁(yè){P}KS849正被寫(xiě)入到虛擬化服務(wù)器800 上的DRAM 848。箭頭885表示當(dāng)加密頁(yè){P}KS849正被寫(xiě)入到DRAM 848時(shí)該頁(yè)849正被傳 遞到加密/解密塊865和876。加密/解密塊865使用KS 874解密{P}KS。隨后,加密/解 密塊876使用KM加密P,產(chǎn)生正被寫(xiě)入到DRAM 848的{P}KM849’。一旦在DRAM 848中,存 儲(chǔ)器控制器890能夠?qū)㈨?yè)P(yáng)拉到由虛擬化服務(wù)器800的CPU 805上的處理核所共享的L3 緩存中。例如,圖8E示出了加密頁(yè){P}KM849’正被寫(xiě)入到虛擬化服務(wù)器800的CPU 805上 的L3緩存882。如圖所示,箭頭892表示加密頁(yè){P}KM849’正被寫(xiě)入到L3緩存882,并且當(dāng) 其正被寫(xiě)入L2緩存880時(shí)使用加密/解密塊878對(duì)其進(jìn)行解密(例如,使用相對(duì)于圖3和 圖4上文中所描述的方法)。加密/解密塊878解密{P}KM849’,并且將解密頁(yè)P(yáng) 895寫(xiě)入 到處理核885上的L2緩存880。
因此,能夠訪問(wèn)VM鏡像842的非加密頁(yè)的CPU 805的架構(gòu)中的唯一實(shí)體是L2緩 存880和在其上執(zhí)行VM鏡像842的處理核885。進(jìn)一步地,存儲(chǔ)器會(huì)話密鑰(KM) 872永遠(yuǎn) 不離開(kāi)CPU 805的邊界,并且僅僅被用來(lái)當(dāng)CPU用信號(hào)向信任錨835通知VM鏡像842將在 處理核885上被執(zhí)行時(shí),由信任錨835來(lái)配置加密/解密塊878。進(jìn)一步地,盡管在從儲(chǔ)存 器840中讀取頁(yè)P(yáng) 895方面示出,但是本領(lǐng)域的普通技術(shù)人員將容易地認(rèn)識(shí)到,當(dāng)將到L3 緩存的數(shù)據(jù)往回寫(xiě)入到DRAM 848和儲(chǔ)存器840時(shí)所述過(guò)程以類(lèi)似方式起作用。當(dāng)加密數(shù) 據(jù)從L3緩存882刷新時(shí),該數(shù)據(jù)首先被傳遞到加密/解密塊876,所述加密/解密塊876使 用存儲(chǔ)器會(huì)話密鑰KM來(lái)解密該數(shù)據(jù)。然后,該數(shù)據(jù)被傳遞到加密/解密塊865,所述加密/ 解密塊865在頁(yè)數(shù)據(jù)被寫(xiě)入到儲(chǔ)存器840時(shí)使用VM鏡像加密密鑰(KS)來(lái)加密該頁(yè)數(shù)據(jù)。
總而言之,本文所述的實(shí)施例提供了用于在不可信云基礎(chǔ)設(shè)施中安全地啟動(dòng)和執(zhí) 行虛擬機(jī)(VM)鏡像的技術(shù)。例如,本文所述的一個(gè)實(shí)施例提供了一種包括配置有附加的硬 件組件(被稱(chēng)為信任錨)的多核處理器的計(jì)算架構(gòu)。如所描述的那樣,該信任錨可以配備 有私有/公共密鑰對(duì),從而允許多核CPU當(dāng)能夠在不可信云基礎(chǔ)設(shè)施中安全地啟動(dòng)和執(zhí)行 虛擬機(jī)(VM)鏡像時(shí)進(jìn)行自身認(rèn)證。
例如,在啟動(dòng)加密VM鏡像之前,所述信任錨從事安全協(xié)議以向企業(yè)進(jìn)行自身認(rèn) 證,并且獲得用來(lái)對(duì)加密VM鏡像進(jìn)行解密的VM鏡像加密密鑰。如上所述,所述信任錨用VM 鏡像加密密鑰來(lái)配置磁盤(pán)控制塊。所述信任錨還生成存儲(chǔ)器會(huì)話密鑰,所述存儲(chǔ)器會(huì)話密 鑰被用來(lái)配置在每個(gè)處理核上的L3緩存與存儲(chǔ)器之間和在L3緩存與L2緩存之間的每個(gè) 緩存線中的加密/解密塊。一旦CPU上的加密/解密塊使用所述密鑰配置,VM鏡像就可以 被從儲(chǔ)存器中提取并且啟動(dòng)。
當(dāng)加密VM鏡像的元素被從儲(chǔ)存器中提取時(shí),磁盤(pán)控制塊使用VM鏡像加密密鑰來(lái)解密它們。當(dāng)它們被寫(xiě)入到L3緩存時(shí),存儲(chǔ)器會(huì)話密鑰然后被用來(lái)重新加密這樣的元素。 當(dāng)需要給定存儲(chǔ)器地址的數(shù)據(jù)時(shí),處理核的L2緩存與共享L3緩存之間的緩存線中的存儲(chǔ) 器會(huì)話密鑰被用來(lái)解密從L3緩存讀取(和寫(xiě)入到L3緩存)的數(shù)掘。因此,L3緩存(在多 個(gè)處理核之間共享)中的數(shù)據(jù)保持加密直到被提取到L2緩存(對(duì)于處理核而言是本地的) 中為止。
雖然前文涉及了本公開(kāi)的實(shí)施例,但是在不背離其基本范圍的情況下,可以設(shè)計(jì) 本公開(kāi)的其他和進(jìn)一步的實(shí)施例,并且其范圍由如下的權(quán)利要求確定。
權(quán)利要求
1.一種方法,包括 通過(guò)具有多個(gè)處理核的中央處理單元(CPU)上的信任錨接收虛擬機(jī)(VM)鏡像,其中,所述VM鏡像使用VM鏡像加密密鑰來(lái)加密; 獲得所述VM鏡像加密密鑰; 用所述VM鏡像加密密鑰來(lái)配置第一加密/解密塊; 生成存儲(chǔ)器會(huì)話密鑰; 用所述存儲(chǔ)器會(huì)話密鑰來(lái)配置第二加密/解密塊;以及 將所述VM鏡像的一個(gè)或多個(gè)頁(yè)提取到可由所述多個(gè)處理核訪問(wèn)的存儲(chǔ)器中,其中,每個(gè)提取的頁(yè)由所述第一加密/解密塊使用所述VM鏡像加密密鑰來(lái)解密,并且隨后由所述第二加密/解密塊使用所述存儲(chǔ)器會(huì)話密鑰的來(lái)加密。
2.如權(quán)利要求1所述的方法,其中,獲得所述VM鏡像加密密鑰包括 用嵌入在所述信任錨中的私有密鑰來(lái)對(duì)所述VM鏡像加密密鑰的第一加密拷貝進(jìn)行簽名; 將經(jīng)簽名的、加密的所述VM鏡像加密密鑰的拷貝傳送到密鑰服務(wù),以便認(rèn)證所述信任錨在所述CPU上的存在;以及 響應(yīng)于所述認(rèn)證,接收所述VM鏡像加密密鑰的第二加密拷貝,其中,所述VM鏡像加密密鑰的第二加密拷貝使用所述信任錨的公共密鑰來(lái)加密。
3.如權(quán)利要求2所述的方法,其中,所述VM鏡像加密密鑰的第一加密拷貝使用與所述密鑰服務(wù)相關(guān)聯(lián)的公共密鑰來(lái)加密。
4.如權(quán)利要求1所述的方法,其中,所述頁(yè)被從磁盤(pán)存儲(chǔ)庫(kù)中提取,并且其中,所述第一解密/解密塊和所述第二加密/解密塊被布置在可由所述多個(gè)處理核訪問(wèn)的所述磁盤(pán)存儲(chǔ)庫(kù)與所述存儲(chǔ)器之間的I/O路徑中。
5.如權(quán)利要求1所述的方法,還包括 用所述存儲(chǔ)器會(huì)話密鑰來(lái)配置第三加密/解密塊,其中,所述第三加密/解密塊存在于所述CPU上的第一緩存與第二緩存之間,并且其中,所述第一緩存對(duì)于所述CPU上的所述處理核中的一個(gè)而言是本地的,而所述第二緩存由所述CPU上的所述多個(gè)處理核共享。
6.如權(quán)利要求5所述的方法,還包括 標(biāo)識(shí)數(shù)據(jù)的存儲(chǔ)器地址以從所述存儲(chǔ)器讀取到所述第一緩存中; 從所述存儲(chǔ)器將與所述存儲(chǔ)器地址相關(guān)聯(lián)的數(shù)據(jù)寫(xiě)入到所述第二緩存中; 從所述存儲(chǔ)器將與所述存儲(chǔ)器地址相關(guān)聯(lián)的隨機(jī)數(shù)寫(xiě)入到所述第二緩存中; 至少使用所述存儲(chǔ)器會(huì)話密鑰、所述隨機(jī)數(shù)以及所述存儲(chǔ)器地址來(lái)生成密鑰流,以及使用所生成的密鑰流來(lái)解密與所述存儲(chǔ)器地址相關(guān)聯(lián)同時(shí)正被從所述第二緩存讀取到所述第一緩存的所述數(shù)據(jù)。
7.如權(quán)利要求1所述的方法,其中,所述VM鏡像的一個(gè)或多個(gè)頁(yè)通過(guò)在所述處理核中的一個(gè)上執(zhí)行的管理程序而被提取到所述存儲(chǔ)器中以便啟動(dòng)所述VM鏡像。
8.一種計(jì)算系統(tǒng),包括 CPU,其具有多個(gè)處理核; 存儲(chǔ)器,可由所述多個(gè)處理核訪問(wèn); 信任錨,其中,所述信任錨被配置成獲得VM鏡像加密密鑰, 用所述VM鏡像加密密鑰來(lái)配置第一加密/解密塊;生成存儲(chǔ)器會(huì) 話密鑰,以及 用所述存儲(chǔ)器會(huì)話密鑰來(lái)配置第二加密/解密塊;以及 存儲(chǔ)器控制器,其中,所述存儲(chǔ)器控制器被配置成 將所述VM鏡像的一個(gè)或多個(gè)頁(yè)提取到所述存儲(chǔ)器中,其中,每個(gè)提取的頁(yè)都由所述第一加密/加密塊使用所述VM鏡像加密密鑰來(lái)解密,并且隨后當(dāng)被寫(xiě)入到所述存儲(chǔ)器時(shí),由所述第二加密/解密塊使用所述存儲(chǔ)器會(huì)話密鑰的來(lái)加密。
9.如權(quán)利要求8所述的計(jì)算系統(tǒng),其中,所述信任錨被配置成通過(guò)以下操作獲得所述VM鏡像加密密鑰 用嵌入在所述信任錨中的私有密鑰來(lái)對(duì)所述VM鏡像加密密鑰的第一加密拷貝進(jìn)行簽名; 將經(jīng)簽名的、加密的所述VM鏡像加密密鑰的拷貝傳送到密鑰服務(wù),以便認(rèn)證所述信任錨在所述CPU上的存在;以及 響應(yīng)于所述認(rèn)證,接收所述VM鏡像加密密鑰的第二加密拷貝,其中,所述VM鏡像加密密鑰的第二加密拷貝使用所述信任錨的公共密鑰來(lái)加密。
10.如權(quán)利要求9所述的計(jì)算系統(tǒng),其中,所述VM鏡像加密密鑰的第一加密拷貝使用與所述密鑰服務(wù)相關(guān)聯(lián)的公共密鑰來(lái)加密。
11.如權(quán)利要求8所述的計(jì)算系統(tǒng),其中,所述頁(yè)通過(guò)所述存儲(chǔ)器控制器從磁盤(pán)存儲(chǔ)庫(kù)中提取,并且其中,所述第一解密/解密塊和所述第二加密/解密塊被布置在可由所述多個(gè)處理核訪問(wèn)的所述磁盤(pán)存儲(chǔ)庫(kù)與所述存儲(chǔ)器之間的I/O路徑中。
12.如權(quán)利要求8所述的計(jì)算系統(tǒng),其中,所述信任錨被進(jìn)一步配置成 用所述存儲(chǔ)器會(huì)話密鑰來(lái)配置第三加密/解密塊,其中,所述第三加密/解密塊存在于所述CPU上的第一緩存與第二緩存之間,并且其中,所述第一緩存對(duì)于所述CPU上的所述處理核中的一個(gè)而言是本地的,而所述第二緩存由所述CPU上的所述多個(gè)處理核共享。
13.如權(quán)利要求12所述的計(jì)算系統(tǒng),其中,所述存儲(chǔ)器控制器被進(jìn)一步配置成 從所述存儲(chǔ)器將與存儲(chǔ)器地址相關(guān)聯(lián)的數(shù)據(jù)寫(xiě)入到所述第二緩存中;以及 從所述存儲(chǔ)器將與所述存儲(chǔ)器地址相關(guān)聯(lián)的隨機(jī)數(shù)寫(xiě)入到所述第二緩存中。
14.如權(quán)利要求13所述的計(jì)算系統(tǒng),其中,所述第三加密/解密塊被配置成 至少使用所述存儲(chǔ)器會(huì)話密鑰、所述隨機(jī)數(shù)以及所述存儲(chǔ)器地址來(lái)生成密鑰流;以及 使用所生成的密鑰流來(lái)解密與所述存儲(chǔ)器地址相關(guān)聯(lián)同時(shí)正被從所述第二緩存讀取到所述第一緩存的所述數(shù)據(jù)。
15.如權(quán)利要求8所述的計(jì)算系統(tǒng),其中,所述VM鏡像的一個(gè)或多個(gè)頁(yè)被提取到所述存儲(chǔ)器中,以便管理程序啟動(dòng)所述VM鏡像。
全文摘要
描述了用于在不可信云基礎(chǔ)設(shè)施中安全地啟動(dòng)和執(zhí)行虛擬機(jī)(VM)鏡像的技術(shù)。多核處理器可以配置有附加的硬件組件(被稱(chēng)為信任錨)。所述信任錨可以配備有私有/公共密鑰對(duì),其允許所述多核CPU當(dāng)能夠在不可信云基礎(chǔ)設(shè)施中安全地啟動(dòng)和執(zhí)行虛擬機(jī)(VM)鏡像時(shí)進(jìn)行自身認(rèn)證。
文檔編號(hào)G06F21/57GK103069428SQ201180038880
公開(kāi)日2013年4月24日 申請(qǐng)日期2011年6月6日 優(yōu)先權(quán)日2010年6月7日
發(fā)明者法彼奧·R·麥諾, 皮瑞·曼克魯斯, 大衛(wèi)·A·麥格魯, 羅伯特·T·貝爾, 史蒂芬·約瑟夫·里奇 申請(qǐng)人:思科技術(shù)公司