欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

不可信云基礎(chǔ)設(shè)施中的安全虛擬機(jī)引導(dǎo)的制作方法

文檔序號:6361366閱讀:222來源:國知局
專利名稱:不可信云基礎(chǔ)設(shè)施中的安全虛擬機(jī)引導(dǎo)的制作方法
不可信云基礎(chǔ)設(shè)施中的安全虛擬機(jī)引導(dǎo)技術(shù)領(lǐng)域
本公開中所提出的實施例一般地涉及用于為虛擬化服務(wù)器提供計算基礎(chǔ) 設(shè)施的技術(shù),并且更特別地,涉及一種用于在不可信云基礎(chǔ)設(shè)施(untrusted cloud infrastructure)中安全地啟動虛擬機(jī)(VM)的方法和裝置。
背景技術(shù)
服務(wù)器虛擬化技術(shù)允許多個虛擬機(jī)在單個物理計算系統(tǒng)上同時運行。目前,數(shù)據(jù) 中心環(huán)境被用來創(chuàng)建這樣的物理計算系統(tǒng)(通常被稱為服務(wù)器)的大集群,其中,每個服務(wù) 器都運行多個虛擬機(jī)(VM)。該方法已經(jīng)導(dǎo)致了能夠供應(yīng)大量計算能力的數(shù)據(jù)中心。若干供 應(yīng)商目前允許用戶供應(yīng)虛擬機(jī)實例以在由數(shù)據(jù)中心的運營商所提供的虛擬化服務(wù)器上運 行。在各種形式下,這個通用計算模型逐漸被稱為“云計算”或“基礎(chǔ)設(shè)施即服務(wù)”(IaaS), 因為用戶在抽象硬件平臺上簡單地運行他們的虛擬機(jī)實例,而不必?fù)碛谢蛘吖芾碓撚布?臺。若非成百上千的虛擬機(jī),該方法允許給定用戶快速地擴(kuò)增幾十倍以響應(yīng)對于計算資源 的需求變化。
同時,云計算和IaaS供應(yīng)商所面對的主要障礙是需要用戶信任云供應(yīng)商和管理 在服務(wù)器上運行的多個VM的管理程序(hypervisor)(或虛擬機(jī)管理器,(VMM))的實施。目 前,這個通過云供應(yīng)商針對安全性定制的操作流程的檢查和理解來完成。這導(dǎo)致信任感,但 沒有強(qiáng)大的機(jī)制來保證在相同的中央處理單元(CPU)套接字服務(wù)器中執(zhí)行的VM之間的有 效分離。
屬于不同企業(yè)的VM被并置在相同的服務(wù)器中的事實能夠?qū)е聜?cè)面攻擊和安全問 題。例如,當(dāng)屬于不同企業(yè)的VM被在相同CPU的不同核中執(zhí)行時,它們經(jīng)由L3緩存共享對 存儲器的訪問(或者繞過由管理程序所設(shè)置的存儲器保護(hù))。在技術(shù)人員的手中,這能夠?qū)?致信息從一個VM泄漏到另一個VM。也就是說,來自一個企業(yè)的惡意VM能夠設(shè)法獲得對代 表另一個企業(yè)運行的VM的存儲器的訪問。
另一個問題是管理程序本身。即使管理程序被設(shè)計為執(zhí)行不同VM之間的分離,由 于管理程序漏洞或由于直接針對管理程序本身的顯式攻擊,數(shù)據(jù)也仍然能夠從一個VM泄 漏到另一個VM。而且,作為云供應(yīng)商人員的一部分的惡意管理員能夠發(fā)起另一組攻擊。


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