專利名稱:多核架構(gòu)中的虛擬機(jī)內(nèi)存劃分的制作方法
技術(shù)領(lǐng)域:
本公開中呈現(xiàn)的實(shí)施例通常涉及用于提供用于虛擬化服務(wù)器的計(jì)算基礎(chǔ)設(shè)施的技木,并且更具體來說,涉及用于基礎(chǔ)設(shè)施即服務(wù)(IaaS)云環(huán)境中的可信虛擬機(jī)執(zhí)行的方法和裝置。
背景技術(shù):
服務(wù)器虛擬化技術(shù)允許多個(gè)虛擬機(jī)同時(shí)在單個(gè)物理計(jì)算系統(tǒng)中運(yùn)行。當(dāng)前,數(shù)據(jù)中心環(huán)境用來創(chuàng)建這些物理計(jì)算系統(tǒng)(通常稱為服務(wù)器)的大型群集,其中每個(gè)服務(wù)器運(yùn)行多個(gè)虛擬機(jī)(VM)。這種方法已經(jīng)導(dǎo)致可以提供大量計(jì)算能力的數(shù)據(jù)中心。若干供應(yīng)商當(dāng)前允許用戶提供虛擬機(jī)實(shí)例以便在數(shù)據(jù)中心的運(yùn)營商所提供的虛擬化服務(wù)器上運(yùn)行。以各種形式,這種通用計(jì)算模型已經(jīng)被稱為“云計(jì)算”或“基礎(chǔ)設(shè)施即服務(wù)”(laaS),因?yàn)橛脩粼诔橄笥布脚_(tái)上簡單地運(yùn)行其虛擬機(jī)實(shí)例,而無需擁有或管理所述硬件平臺(tái)。如果不是數(shù)百或數(shù)千虛擬機(jī)實(shí)例來響應(yīng)對(duì)于計(jì)算資源需求的改變,這種方法允許給定用戶迅速地?cái)U(kuò)增幾十倍。同吋,云計(jì)算和IaaS供應(yīng)商所面對(duì)的顯著障礙在于需要用戶信任云供應(yīng)商和管理在服務(wù)器上運(yùn)行的多個(gè)VM的管理程序(或虛擬機(jī)管理器(VMM))的實(shí)施。當(dāng)前,這是通過對(duì)云供應(yīng)商在有關(guān)安全的適當(dāng)?shù)胤竭M(jìn)行的操作過程的檢查和理解來完成。這產(chǎn)生了信任感,但是仍不存在強(qiáng)有力的機(jī)制來保證在同一個(gè)中央處理單元(CPU)套接字服務(wù)器中執(zhí)行的VM之間的有效分離。屬于不同企業(yè)的VM被布置在同一個(gè)服務(wù)器中的事實(shí)可能導(dǎo)致側(cè)面攻擊和安全問題。例如,當(dāng)屬于不同企業(yè)的VM在同一 CPU的不同核中執(zhí)行時(shí),他們通過L3緩存(或者通過繞過管理程序設(shè)定的內(nèi)存保護(hù))共享對(duì)內(nèi)存的訪問。本領(lǐng)域技術(shù)人員知道,這可能導(dǎo)致信息從ー個(gè)VM泄露到另ー個(gè)VM。也就是說,來自一個(gè)企業(yè)的惡意VM可能試圖獲得對(duì)為了另ー個(gè)企業(yè)運(yùn)行的VM的內(nèi)存的訪問。另ー個(gè)問題在于管理程序本身。即使管理程序被設(shè)計(jì)成執(zhí)行不同VM之間的分離,但是數(shù)據(jù)仍可能由于管理程序錯(cuò)誤或由于針對(duì)管理程序本身的明確攻擊而從ー個(gè)VM泄露到另ー個(gè)VM。另外,惡意管理員(其是云供應(yīng)商人員的一部分)可能會(huì)發(fā)出另ー組攻擊。
因此,以可以詳細(xì)理解本公開的上述特征的方式,可以參照實(shí)施例對(duì)以上概述的本公開進(jìn)行更為具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)注意的是,附圖僅示出本公開的典型實(shí)施例,并且因此不應(yīng)被認(rèn)為限制本發(fā)明的范圍,因?yàn)楸竟_可以允許其他同等有效的實(shí)施例。圖1A至圖1B是示出了根據(jù)本公開的某些實(shí)施例的用于基礎(chǔ)設(shè)施即服務(wù)(IaaS)云環(huán)境中的可信執(zhí)行的不同安全模型的方框圖。圖2是示出了根據(jù)本公開的某些實(shí)施例的被配置成提供用于IaaS環(huán)境中的多個(gè)VM的可信執(zhí)行的虛擬化服務(wù)器的部件的方框圖。圖3是示出了根據(jù)本公開的某些實(shí)施例的被配置成提供用于IaaS環(huán)境中的可信虛擬機(jī)執(zhí)行的處理器架構(gòu)的示例的方框圖。圖4進(jìn)ー步示出了根據(jù)本公開的某些實(shí)施例的圖3中第一次示出的CPU架構(gòu)的各方面。圖5示出了根據(jù)本公開的某些實(shí)施例的一種用于安全地啟動(dòng)VM實(shí)例的方法。圖6示出了根據(jù)本公開的某些實(shí)施例的ー種用于加密L3緩存線的方法。圖7示出了根據(jù)本公開的某些實(shí)施例的ー種用于解密L3緩存線的方法。
具體實(shí)施例方式概述本文描述的ー個(gè)實(shí)施例包括ー種方法。所述方法可以通常包括識(shí)別內(nèi)存地址,獲得隨機(jī)數(shù)(nonce),并且使用至少第一密鑰、所述隨機(jī)數(shù)和識(shí)別出的內(nèi)存地址來產(chǎn)生密鑰流。所述方法還可以包括使用所產(chǎn)生的密鑰流來對(duì)在從第一緩存寫入到第二緩存中時(shí)與內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行加密。第一緩存在中央處理單元(CPU)上的多個(gè)處理核中ー個(gè)核的本地。并且第二緩存由所述多個(gè)處理核共享。所述方法還可以包括將隨機(jī)數(shù)寫入到第二緩存中。本文描述的另一個(gè)實(shí)施例提供ー種計(jì)算系統(tǒng),所述計(jì)算系統(tǒng)包括內(nèi)存和具有多個(gè)處理核的CPU。每個(gè)核自身可以具有第一緩存,并且CPU還可以包括第二緩存,其中所述第ニ緩存可以由所述多個(gè)處理核中的每ー個(gè)訪問。每個(gè)處理核可以包括將各自的處理核耦合到第二緩存上的加密/解密塊。所述加密/解密塊通??梢员慌渲贸蓤?zhí)行包括以下步驟的操作識(shí)別內(nèi)存地址,獲得隨機(jī)數(shù),使用至少第一密鑰、所述隨機(jī)數(shù)和識(shí)別出的內(nèi)存地址來產(chǎn)生密鑰流,以及使用所產(chǎn)生的密鑰流來對(duì)在從第一緩存寫入到第二緩存中時(shí)與內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行加密。CPU可以進(jìn)一歩包括配置成將隨機(jī)數(shù)寫入到第二緩存中的內(nèi)存控制器。本文描述的又一個(gè)實(shí)施例包括ー種方法。這種方法通??梢园ㄔ噲D執(zhí)行讀取操作以讀取與進(jìn)入多個(gè)第一緩存之一的內(nèi)存地址相關(guān)聯(lián)的數(shù)據(jù)。所述第一緩存各自在中央處理單元(CPU)上的多個(gè)處理核中一個(gè)核的本地。另外,所述讀取操作試圖從由所述多個(gè)處理核共享的第二緩存讀取與第一內(nèi)存地址相關(guān)聯(lián)的數(shù)據(jù)。在確定了與所述內(nèi)存地址相關(guān)聯(lián)的數(shù)據(jù)在第二緩存中之后,可以通過獲得隨機(jī)數(shù)、使用至少第一密鑰、所述隨機(jī)數(shù)和所述內(nèi)存地址來產(chǎn)生密鑰流來執(zhí)行讀取操作。所述讀取操作還可以包括使用所產(chǎn)生的密鑰流來對(duì)在從第二緩存讀取到所述第一緩存中時(shí)與內(nèi)存地址相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行解密。示例實(shí)施例的描述本文描述的實(shí)施例提供用于內(nèi)存劃分的技術(shù),內(nèi)存劃分允許在多核處理架構(gòu)上的虛擬機(jī)(VM)的可信執(zhí)行。內(nèi)存劃分可以通過在給定VM的控制下在執(zhí)行所述VM的處理核的信任邊界內(nèi)使用密鑰加密層3 (L3)緩存線來實(shí)現(xiàn)。另外,本文描述的實(shí)施例提供ー種用于存儲(chǔ)和處理與對(duì)L3緩存線執(zhí)行的毎次加密/解密操作相關(guān)聯(lián)的加密相關(guān)元數(shù)據(jù)的有效方法。
如以下更詳細(xì)描述,物理多核CPU可以包括硬件信任錨部件。所述信任錨可以被配置成管理用以在多核CPU的ー個(gè)核上執(zhí)行VM或管理程序時(shí)加密/解密指令和數(shù)據(jù)的密鑰。在一個(gè)實(shí)施例中,所述信任錨可以使用安全通信過程來接收與加密的VM啟動(dòng)映像相關(guān)聯(lián)的密鑰。一旦由所述信任錨接收到并存儲(chǔ),則所述密鑰可以用以解密VM啟動(dòng)映像并將其載入到虛擬化服務(wù)器上的內(nèi)存中。所述信任錨還可以產(chǎn)生(或獲得)會(huì)話密鑰,所述會(huì)話密鑰用以當(dāng)在多核CPU的處理核之一上執(zhí)行VM時(shí)加密/解密寫入到L3緩存中和從L3緩存中讀取的數(shù)據(jù)。在一個(gè)實(shí)施例中,所述信任錨可以使用高級(jí)加密標(biāo)準(zhǔn)(AES)計(jì)數(shù)器模式(AES-CTR)來加密/解密寫入到L3緩存中和從L3緩存中讀取的數(shù)據(jù)。使用AES-CTR可以提供足以加密/解密在ー個(gè)核上的L2緩存與多核架構(gòu)內(nèi)的多個(gè)處理核之間共享的L3緩存之間移動(dòng)的數(shù)據(jù)的加密速度。當(dāng)然,可以使用具有足夠性能特點(diǎn)的其他流密碼。更大體而言,可以在計(jì)數(shù)器模式中使用任何帶密鑰的偽隨機(jī)函數(shù);AES是通常使用的偽隨機(jī)函數(shù),我們具體使用AES來描述實(shí)施例。使用AES-CTR,實(shí)際加密可以通過在將明文在寫入到L3緩存中時(shí)以通過使用與給定VM的執(zhí)行上下文相關(guān)聯(lián)的密鑰加密計(jì)數(shù)器的遞增值所產(chǎn)生的密鑰流(即,以會(huì)話密鑰)對(duì)明文進(jìn)行異或來執(zhí)行。在一個(gè)實(shí)施例中,用以產(chǎn)生用于加密/解密L3緩存線的密鑰流的計(jì)數(shù)器通過將與具體讀取/寫入操作相關(guān)聯(lián)的內(nèi)存地址與隨機(jī)數(shù)值相連結(jié)而構(gòu)成。在寫入操作的情況下,所述隨機(jī)數(shù)值可以是每次執(zhí)行寫入操作時(shí)遞增的計(jì)數(shù)器值,或僅僅是從隨機(jī)噪音源得出的值。用于給定寫入操作的隨機(jī)數(shù)值也與加密數(shù)據(jù)一起存儲(chǔ)在L3緩存中。另外,如果發(fā)生緩存刷新(cache flush),則隨機(jī)數(shù)值與加密數(shù)據(jù)一起被寫入到內(nèi)存中。對(duì)于讀取操作來說,所述隨機(jī)數(shù)值被用來(與內(nèi)存地址一起)重建密鑰流。實(shí)際的解密可以通過在將加密數(shù)據(jù)從L3緩存讀取并且寫入到處理器核上的L2緩存中時(shí)以密鑰流對(duì)加密數(shù)據(jù)進(jìn)行異或來執(zhí)行。在一個(gè)實(shí)施例中,CPU上的內(nèi)存控制器被配置成管理寫入到L3緩存和內(nèi)存中并且從L3緩存和內(nèi)存讀取的隨機(jī)數(shù)的寫入。當(dāng)出現(xiàn)異常時(shí)(例如,計(jì)時(shí)器中斷、硬件訪問等),所述信任錨換出與運(yùn)行VM實(shí)例相關(guān)聯(lián)的會(huì)話密鑰并且為新的執(zhí)行上下文選擇適當(dāng)密鑰。在一個(gè)實(shí)施例中,CPU可以被配置成用信號(hào)向所述信任錨通知關(guān)于被排程來執(zhí)行的下ー個(gè)VM實(shí)例(或管理程序)的執(zhí)行上下文。例如,由丨ntei VT-x技術(shù)和AMD-V技術(shù)提供的虛擬化擴(kuò)展。另外,用于切換密鑰并且初始化所述信任錨中所包括的加密引擎的過程可能要求比上下文切換本身要求更少的時(shí)鐘周期。呈現(xiàn)以下描述來使得本領(lǐng)域的一般技術(shù)人員能夠制造和使用所提議的技木。具體實(shí)施例和應(yīng)用的描述僅被作為示例提供,并且各種修改對(duì)于本領(lǐng)域技術(shù)人員將是顯而易見的。本文描述的一般原理在不脫離本公開的范圍的情況下可以適用于其他實(shí)施例和應(yīng)用。因此,本公開不限于所示的實(shí)施例,而是應(yīng)符合與本文描述的原理和特征一致的最廣范圍。為了清晰的目的,不對(duì)與所提出的概念的相關(guān)技術(shù)領(lǐng)域中已知的技術(shù)材料相關(guān)的特征進(jìn)行詳細(xì)描述。圖1A至圖1B是示出了根據(jù)本公開的某些實(shí)施例的用于基礎(chǔ)設(shè)施即服務(wù)(IaaS)云環(huán)境中的可信VM執(zhí)行的不同模型的方框圖。如圖1A中所示,堆棧模型105可以用來提供用于執(zhí)行一個(gè)或多個(gè)虛擬機(jī)125的可信環(huán)境。具體來說,硬件錨芯片(例如,可信平臺(tái)模塊(TPM)IlO)或等效物可以用來執(zhí)行以下任務(wù)安全密鑰存儲(chǔ)、簽名征收/驗(yàn)證以及密鑰的安全輸出等。TPMllO形成堆棧模型105中的信任的第一環(huán)節(jié)。一旦TPMllO對(duì)其進(jìn)行確認(rèn),安全BIOSl 15可以依次確認(rèn)管理程序120是未被修改。這樣做使信任鏈從TPMllO延伸到安全BI0S115,并且隨后,延伸到管理程序120。一旦被啟動(dòng),管理程序120就遵循相同的程序來初啟虛擬機(jī)125。也就是說,一旦被安全BI0S115確認(rèn),管理程序120則用作可信操作程序來確認(rèn)和啟動(dòng)虛擬機(jī)實(shí)例125。此后,每個(gè)虛擬機(jī)125上的操作系統(tǒng)130對(duì)啟動(dòng)應(yīng)用程序135進(jìn)行相同的操作。更簡單地說,TPMllO確認(rèn)BIOSl 15,BIOSl 15確認(rèn)管理程序120,管理程序120又確認(rèn)在管理程序120上啟動(dòng)的每個(gè)VM125。因此,堆棧模型105依靠信任其前趨的鏈中的每個(gè)元素。在堆棧模型105中,上層依靠下層以獲得信任。如果在所述鏈上存在任何中斷,則系統(tǒng)是不安全的。另外,所述鏈上的下層可以仍對(duì)上層可以執(zhí)行的內(nèi)容具有可見性。另外,即使管理程序確認(rèn)并啟動(dòng)了給定虛擬機(jī)125,其也不會(huì)限制可信0S130和可信應(yīng)用程序135執(zhí)行的動(dòng)作。因此,堆棧模型105不會(huì)阻止以其他方式被確認(rèn)的應(yīng)用程序135 (或VM125)訪問屬于由管理程序120執(zhí)行的另ー個(gè)VM的數(shù)據(jù),例如,存儲(chǔ)在L3緩存中的數(shù)據(jù)。 圖1B示出了根據(jù)本公開中呈現(xiàn)的ー個(gè)實(shí)施例的可替代信任模型。如圖所示,信任模型150提供一種星形模型,其中信任錨165位于中間而不是位于底部。這樣做允許信任錨165直接確認(rèn)虛擬化服務(wù)器上的BI0S175和管理程序170。然而進(jìn)ー步說,這樣也允許信任錨165確認(rèn)傳遞到管理程序170以供執(zhí)行的每個(gè)VM映像(例如,VM1155和VM2160)以及確認(rèn)用于應(yīng)用程序108載入VM155U60并在其上執(zhí)行的代碼。也就是說,與堆棧模型105不同,星形模型150提供被配置成提供信任錨165的信任錨165。為了防止執(zhí)行上下文之間的未經(jīng)授權(quán)的訪問,星形模型150從完整性保護(hù)(在堆棧模型中)轉(zhuǎn)變成關(guān)于虛擬化服務(wù)器中的每個(gè)相關(guān)操作程序的機(jī)密性。這樣做可以用來為VM155U60提供安全計(jì)算環(huán)境。例如,與堆棧模型105不同,星形模型150防止具有較高特權(quán)的操作程序(例如,管理程序170)訪問其他操作程序(例如,VM155U60)的數(shù)據(jù),以及防止ー個(gè)VM訪問屬于另ー個(gè)VM的數(shù)據(jù),SP使這些VM同時(shí)在多核處理器上的不同核中執(zhí)行并且共享L3緩存和內(nèi)存。以下論述的圖2至圖4提供在具有多核CPU的虛擬化服務(wù)器上實(shí)施圖1B中所示的星形模型150的示例架構(gòu)。圖2是示出了根據(jù)本公開的某些實(shí)施例的被配置成提供用于IaaS環(huán)境中的多個(gè)VM的可信執(zhí)行的虛擬化服務(wù)器200的部件的方框圖。虛擬化服務(wù)器200通常可以包括由一個(gè)或多個(gè)互連250連接的硬件計(jì)算部件的集合。說明性地,虛擬化服務(wù)器200包括網(wǎng)絡(luò)接ロ卡(NIC)251、內(nèi)存252、CPU253以及存儲(chǔ)設(shè)備254 (例如,本地附接的磁盤驅(qū)動(dòng)器、固態(tài)設(shè)備(SSD)或與諸如SAN的遠(yuǎn)程存儲(chǔ)設(shè)備的連接)。虛擬化服務(wù)器200允許多個(gè)虛擬機(jī)(VM) 230^3同時(shí)在服務(wù)器200上執(zhí)行,從而共享虛擬化服務(wù)器200上存在的計(jì)算硬件。然而,虛擬機(jī)23(V3通常不直接知道虛擬化服務(wù)器200上的計(jì)算硬件。相反,管理程序240可以被配置成為每個(gè)虛擬機(jī)230”提供虛擬化硬件元件。請(qǐng)注意,雖然虛擬硬件分配對(duì)于在每個(gè)虛擬機(jī)230卜3上運(yùn)行的OS和應(yīng)用程序136呈現(xiàn)出不同,但是他們?cè)谔摂M化層下被共享。也就是說,虛擬資源提供關(guān)于下層物理資源的抽象概念,并且下層物理資源在虛擬機(jī)230卜3之間共享。說明性地,內(nèi)存252包括管理三個(gè)虛擬機(jī)實(shí)例(VM) 230^3的管理程序240。每個(gè)VM23(V3提供具有虛擬CPU、內(nèi)存、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)接ロ的虛擬化計(jì)算平臺(tái)。操作系統(tǒng)在每個(gè)VM230”上被啟動(dòng),并且用以載入和執(zhí)行應(yīng)用程序232^。在一個(gè)實(shí)施例中,管理程序240可以被實(shí)施為在虛擬化服務(wù)器200的計(jì)算硬件上直接運(yùn)行的軟件層。在這種情況下,管理程序240可以被配置成攔截由在VM230上運(yùn)行的OS作出的ー些(或所有)操作系統(tǒng)調(diào)用。更大體而言,管理程序240在系統(tǒng)硬件上運(yùn)行并且允許虛擬化服務(wù)器200作為VM23(V3的主機(jī)。在一個(gè)實(shí)施例中,信任錨258可以用來確認(rèn)管理程序240。也就是說,管理程序240 (S卩,管理程序240在存儲(chǔ)盤上的映像)可以由加密密鑰來簽名,并且信任錨258可以被配置成獲得在載入管理程序240之前驗(yàn)證管理程序240未被修改所需要的密鑰。例如,給定IaaS供應(yīng)商(或管理程序廠商)可以使用私人/公共密鑰對(duì)的私人密鑰來對(duì)管理程序代碼進(jìn)行簽名。在一些情況下,公共密鑰也可以通過認(rèn)證授權(quán)來簽名(并且被提供作為PKI認(rèn)證的一部分)。接下來,信任錨258可以從PKI認(rèn)證獲得公共密鑰,并且確認(rèn)與管理程序240相關(guān)聯(lián)的數(shù)字簽名。一旦被確認(rèn),管理程序240可以啟動(dòng)并執(zhí)行VM23(V3。另外,每個(gè)VM230也可以是 被簽名和/或加密的對(duì)象。例如,企業(yè)可以將使用VM映像加密密鑰加密的VM映像傳送到虛擬化服務(wù)器200。在一個(gè)實(shí)施例中,信任錨258向企業(yè)進(jìn)行自身鑒別,以在虛擬化服務(wù)器230上執(zhí)行給定VM230之前,獲得與該VM230相關(guān)聯(lián)的VM映像加密密鑰。所述VM映像加密密鑰可以用來解密提交給虛擬化服務(wù)器200的加密VM映像。另外,信任錨258可以產(chǎn)生(或獲得)關(guān)于每個(gè)給定VM230的內(nèi)存會(huì)話密鑰,并且在VM在一個(gè)執(zhí)行核256上執(zhí)行的同時(shí),將所述內(nèi)存會(huì)話密鑰用以加密/解密從緩存255讀取和寫入到緩存255的信息。在一個(gè)實(shí)施例中,信任錨258可以作為載入給定VM實(shí)例的一部分而產(chǎn)生內(nèi)存會(huì)話密鑰。信任錨258可以被配置成在CPU253上的執(zhí)行核256之一的執(zhí)行上下文改變的任何時(shí)候交換內(nèi)存會(huì)話密鑰,例如,不同VM23(V3之間的上下文切換或VM23(V3與管理程序240自身之間的上下文切換。緩存255提供由CPU253上的執(zhí)行核256訪問的高速內(nèi)存。雖然內(nèi)存252可以跨虛擬機(jī)230被分段,但是緩存255通常由不同的VM23(V3共享。例如,如圖所示,CPU253可以包括一個(gè)或多個(gè)執(zhí)行核256。當(dāng)在不同的執(zhí)行核256上執(zhí)行不同的VM23(V3吋,VM23(V3可以共享對(duì)緩存255的訪問。在一個(gè)實(shí)施例中,信任錨258可以為每個(gè)VM230使用不同的內(nèi)存會(huì)話密鑰,以加密/解密到緩存255的每次讀取/寫入。這樣做防止在一個(gè)執(zhí)行核256上執(zhí)行的VM230訪問屬于在不同的執(zhí)行核256上執(zhí)行的另ー個(gè)VM230的緩存255中的數(shù)據(jù)。另外,這樣做還防止了管理程序240訪問屬于給定VM23(V3的緩存255中的數(shù)據(jù),不管管理程序240是否具有通常較高的特權(quán)等級(jí)。圖3是示出了根據(jù)本公開的某些實(shí)施例的被配置成提供用于IaaS環(huán)境中的可信虛擬機(jī)執(zhí)行的處理器架構(gòu)的示例的方框圖。如圖所示,CPU300包括兩個(gè)不同的處理核305,310。并且,每個(gè)CPU核305包括層I (LI)指令和數(shù)據(jù)緩存和L2緩存。CPU300還包括信任錨315,并且處理核305、310各自具有相關(guān)聯(lián)的密鑰產(chǎn)生部件320"和加密/解密塊325"。說明性地,將處理核305、310連接到共享的L3緩存330的緩存線各自包括加密/解密塊325"中的ー個(gè)。L3緩存330連接到內(nèi)存控制器335,內(nèi)存控制器335又連接到內(nèi)存 340。盡管CPU300說明具有兩個(gè)處理核305、310的ー個(gè)示例實(shí)施例,但是本領(lǐng)域的一般技術(shù)人員將認(rèn)識(shí)到,本文描述的實(shí)施例可以容易地適用于具有多個(gè)處理核的CPU。在這種情況下,每個(gè)額外的CPU核將包括到信任錨315的連接以及密鑰產(chǎn)生部件320和與加密/解密塊連接的共享L3緩存330。在一個(gè)實(shí)施例中,信任錨315可以被配置成管理處理核305、310上的多租戶執(zhí)行上下文(即,多個(gè)虛擬機(jī)映像的執(zhí)行)以及管理與外部世界的通信。例如,信任錨315可以被配置成提供安全啟動(dòng)程序,所述安全啟動(dòng)程序用于載入和啟動(dòng)VM實(shí)例,以提供VM實(shí)例之間的安全上下文切換,以便基于執(zhí)行上下文來交換內(nèi)存會(huì)話密鑰,并且在VM執(zhí)行期間提供安全密鑰存儲(chǔ)。另外,在制造時(shí),可以對(duì)嵌入有CPU300的信任錨315提供公共/私人密鑰對(duì)和由認(rèn)證授權(quán)(CA)頒發(fā)的認(rèn)證,所述CA將信任錨身份綁定到公共密鑰??梢园–PU模型和制造商名稱作為該認(rèn)證的屬性。在一個(gè)實(shí)施例中,信任錨315可以使用公共/私人密鑰對(duì)來證明虛擬化服務(wù)器具有配置有信任錨的多核CPU,并且因此,可以在以其他方式不可信的云環(huán)境中啟動(dòng)并執(zhí)行VM映像。此外,信任錨315可以在發(fā)生上下文切換的任何時(shí)候從處理核305、310接收指示。這種指示可以提供對(duì)于輸入執(zhí)行上下文的標(biāo)識(shí)符。如上所述,某些多核處理器提供擴(kuò)展的指令集,這允許從CPU上的處理核輸出執(zhí)行上下文。例如,由丨nt.el VT-X技術(shù)和VMX指
令集提供的虛擬化擴(kuò)展提供用以用信號(hào)通知處理核上的執(zhí)行上下文的改變的指令(例如,VMEXIT 和 VMRESUME 指令)。響應(yīng)于來自核305、310之一的指示執(zhí)行上下文的改變的信號(hào),信任錨315可以配置與用于新執(zhí)行上下文的處理核305、310相關(guān)聯(lián)的加密/解密塊325"和密鑰產(chǎn)生部件310卜2。當(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ù)寄存器)重新存儲(chǔ)(或初始化)以用于輸入執(zhí)行上下文。在一個(gè)實(shí)施例中,信任錨315可以被配置成交換適當(dāng)?shù)募用苊荑€并且使用比執(zhí)行上下文切換本身(當(dāng)前,過程通常需要約20至30個(gè)時(shí)鐘周期)所需要更少的時(shí)鐘周期來初始化加密/解密塊325"。這樣做允許信任錨提供用于輸入VM實(shí)例(或管理程序)的安全執(zhí)行上下文,而不會(huì)帶來任何附加等待時(shí)間。一旦被初始化,加密/解密塊325在數(shù)據(jù)在處理核305、310與L3緩存255之間的緩存線上移動(dòng)時(shí)對(duì)數(shù)據(jù)進(jìn)行加密/解密。在一個(gè)實(shí)施例中,加密/解密塊325"提供基于硬件的流密碼實(shí)施。如所已知,流密碼是對(duì)稱密鑰密碼,其中將明文與密鑰流相組合以加密小單元的數(shù)據(jù)(例如,每次單個(gè)位元或字節(jié))。在具體的實(shí)施例中,加密/解密塊可以被配置成使用AES-CTR (高級(jí)加密標(biāo)準(zhǔn)-計(jì)數(shù)器模式)作為流密碼。使用流密碼允許數(shù)據(jù)在處理核305、310與L3緩存330之間移動(dòng)時(shí)對(duì)其進(jìn)行加密/解密,而不需要額外的時(shí)鐘周期。相反,一旦被初始化,加密/解密塊3251-2可以使用密鑰流將移動(dòng)到特定核305、310/從特定核305、310移動(dòng)的每個(gè)位元進(jìn)行異或。因此,信任錨所提供的功能性定位在與每個(gè)處理核305、310相鄰,并且確保由VM共享的任何元件在不同的核(在這種情況下,L3緩存330和內(nèi)存340)上運(yùn)行。在一個(gè)實(shí)施例中,密鑰產(chǎn)生部件320卜2可以被配置成使用VM密鑰、內(nèi)存地址和隨機(jī)數(shù)來產(chǎn)生由加密/解密塊325"使用的密鑰流。內(nèi)存控制器335可以被配置成在內(nèi)存340與L3緩存之間移動(dòng)數(shù)據(jù)。例如,內(nèi)存控制器335可以選擇將數(shù)據(jù)從L3緩存330刷新到內(nèi)存340。在一個(gè)實(shí)施例中,當(dāng)這樣做吋,內(nèi)存控制器335還將用以在數(shù)據(jù)被寫入到L3緩存330中時(shí)對(duì)數(shù)據(jù)進(jìn)行加密的隨機(jī)數(shù)值寫入至IJ內(nèi)存340中。類似地,內(nèi)存控制器335可以在從內(nèi)存340讀取加密數(shù)據(jù)時(shí)檢索適當(dāng)?shù)碾S機(jī)數(shù)值。圖4進(jìn)ー步示出了根據(jù)本公開的某些實(shí)施例的圖3中第一次示出的處理器架構(gòu)的各方面。圖4尤其示出圖3的處理器架構(gòu),所述處理器架構(gòu)用以執(zhí)行到L3緩存433的安全寫入操作401并且用以執(zhí)行從L3緩存433的安全讀取操作402。如圖所示,寫入操作401在明文數(shù)據(jù)405i從處理核本地的L2緩存移動(dòng)到由多個(gè)處理核共享的L3緩存433時(shí)對(duì)所述明文數(shù)據(jù)405i進(jìn)行加密。說明性地,加密/解密塊410:包括密鑰415” AES引擎4201、內(nèi)存地址425i和隨機(jī)數(shù)43(^。密鑰415i通過信任錨來提供給加密/解密塊410卩如上所述,密鑰415i與在多核CPU(例如,圖3中所示的處理器架構(gòu))的處理核之一上執(zhí)行的VM (或管理程序)相對(duì)應(yīng)。內(nèi)存地址425:與從L2緩存寫入到共享 的L3緩存433的明文405i的內(nèi)存地址相對(duì)應(yīng)。隨機(jī)數(shù)43(^提供用于給定寫入操作的一次值。通常,隨機(jī)數(shù)430:可以是對(duì)共享的L3緩存433的毎次寫入(和讀取)遞增的計(jì)數(shù)器值。然而,可替代地,隨機(jī)數(shù)430:可以從隨機(jī)或偽隨機(jī)噪音源產(chǎn)生。在一個(gè)實(shí)施例中,AES引擎420提供AES-CTR流密碼的硬件實(shí)施,并且被配置成從密鑰材料(即,從密鑰4151、內(nèi)存地址425i和隨機(jī)數(shù)430P產(chǎn)生密鑰流。所得的密鑰流在明文405i從處理核上的L2緩存被推送到共享的L3緩存433中時(shí)與明文405i進(jìn)行異或,產(chǎn)生密文435”除了將所得的加密數(shù)據(jù)寫入到L3緩存433中之外,加密/解密塊41(^中的隨機(jī)數(shù)值也被寫入到L3緩存433中(圖4中所示為隨機(jī)數(shù)440J。更大體而言,加密/解密塊可以將任何帶密鑰的偽隨機(jī)函數(shù)應(yīng)用到計(jì)數(shù)器,以便產(chǎn)生與明文405i異或的密鑰流。在一個(gè)實(shí)施例中,加密/解密塊410i可以包括與L3緩存433分離的緩存線,從而允許隨機(jī)數(shù)430i與明文405i平行地存儲(chǔ)在L3緩存433中(作為隨機(jī)數(shù)44(^),明文405:是使用密鑰流來加密并且作為密文435i存儲(chǔ)在L3緩存433中??商娲兀S機(jī)數(shù)34(^可以使用用以寫入密文435i的相同緩存線來寫入到緩存433中。讀取操作402類似于寫入操作401,但是方向相反。為了從L3緩存433讀取加密數(shù)據(jù)4352,內(nèi)存地址4252和隨機(jī)數(shù)4402被讀取到加密/解密塊4102中。另外,密鑰4152是與在多核處理器的處理核上執(zhí)行的VM (或管理程序)相關(guān)聯(lián)的會(huì)話密鑰,并且在所述處理核上的上下文切換之間保持不變。內(nèi)存地址4252與被拉入到L2緩存中的數(shù)據(jù)的內(nèi)存地址相對(duì)應(yīng),并且隨機(jī)數(shù)4302是用以在數(shù)據(jù)被寫入到L3緩存433中時(shí)對(duì)所述數(shù)據(jù)進(jìn)行加密的隨機(jī)數(shù)值。也就是說,由寫入操作401用來產(chǎn)生用以加密明文405i的密鑰流的相同密鑰材料被用來重新產(chǎn)生相同的密鑰流以解密來自L3緩存433的加密數(shù)據(jù)4352。因此,在ー個(gè)實(shí)施例中,使用AES-CTR來從用于讀取操作402的密鑰材料產(chǎn)生密鑰流。當(dāng)然,可以使用其他帶密鑰的偽隨機(jī)函數(shù)。所得密鑰流隨后被與來自L3緩存433的加密數(shù)據(jù)4352進(jìn)行異或,并且被作為明文4052寫入在L2緩存中。圖5不出了根據(jù)本公開的某些實(shí)施例的一種用于安全地啟動(dòng)VM實(shí)例的方法500。如圖所示,方法500在步驟505開始,在步驟505中,管理程序接收虛擬機(jī)的啟動(dòng)映像以便啟動(dòng)虛擬化服務(wù)器并在其上執(zhí)行。例如,在一個(gè)實(shí)施例中,用戶可以將VM啟動(dòng)映像連同對(duì)在其上執(zhí)行VM實(shí)例的虛擬化硬件系統(tǒng)的ー組要求(例如,處理器速度、內(nèi)存要求等)一起傳送到云供應(yīng)商。VM啟動(dòng)映像可以使用由用戶產(chǎn)生的VM映像加密密鑰來加密。在一個(gè)實(shí)施例中,每4kb數(shù)據(jù)塊被獨(dú)立地加密,以使得數(shù)據(jù)塊可以在虛擬化服務(wù)器上的內(nèi)存的內(nèi)外被解密并標(biāo)記頁碼,而無需解密整個(gè)映像。在步驟510,管理程序視圖啟動(dòng)VM啟動(dòng)映像。在步驟515,管理程序確定VM啟動(dòng)映像是否被加密。如果是,那么管理程序觸發(fā)信任錨與提交VM啟動(dòng)映像以進(jìn)行執(zhí)行的用戶(或相關(guān)聯(lián)的密鑰服務(wù))之間的協(xié)商,以獲得用以加密VM啟動(dòng)映像的VM映像加密密鑰。一旦獲得,則信任錨用所述密鑰來配置磁盤控制塊(步驟520)。VM映像加密密鑰用來在從存儲(chǔ)設(shè)備取得加密VM啟動(dòng)映像并將其存儲(chǔ)在內(nèi)存中時(shí)解密其內(nèi)存頁面(或者加密從內(nèi)存刷新到存儲(chǔ)設(shè)備的頁面)。信任錨將與所述VM映像相關(guān)聯(lián)的VM映像加密密鑰存儲(chǔ)在安全密鑰存儲(chǔ)設(shè)備中。在步驟525,信任錨也產(chǎn)生內(nèi)存會(huì)話密鑰,所述內(nèi)存會(huì)話密鑰用以在每個(gè)處理核上的L3緩存與內(nèi)存之間和L3緩存與L2緩存之間的緩存線中配置加密/解密塊。一旦CPU上的加密/解密塊被配置,則從存儲(chǔ)設(shè)備取得VM映像并將其啟動(dòng)。管理程序隨后啟動(dòng)VM映像并對(duì)其進(jìn)行排程以用于執(zhí)行(步驟530)。在步驟535,管理程序在處理核之一上執(zhí)行VM映像。由于加密VM映像的一部分是從存儲(chǔ)設(shè)備取得的,磁盤控制塊使用VM映像加密密鑰來對(duì)其進(jìn)行解密(步驟540)。內(nèi)存會(huì)話密鑰隨后用來在這些元素被寫入到L3緩存中時(shí)對(duì)其進(jìn)行重新加密。當(dāng)需要用于給定內(nèi)存地址的數(shù)據(jù)時(shí),處理核的L2緩存與共享的L3緩存之間的緩存線中的內(nèi)存會(huì)話密鑰被用來解密從L3緩存讀取(和寫入到L3緩存)的數(shù)據(jù)。因此,L3緩存中(在多個(gè)處理核之間共享)的數(shù)據(jù)保持加密,直到被取到L2緩存(在處理核本地)中。如果VM啟動(dòng)映像未被加密(步驟515),則信任錨可以仍產(chǎn)生內(nèi)存會(huì)話密鑰,以便在處理核上執(zhí)行的同吋,加密/解密由VM對(duì)L3緩存做出的所有寫入/讀取(步驟525)。在任一種情況下,管理程序可以開始排程VM以在多處理器CPU的處理核之一上執(zhí)行(步驟530)。此外,當(dāng)管理程序開始上下文切換時(shí),信任錨用適當(dāng)?shù)腣M映像加密密鑰和用于輸入VM的內(nèi)存會(huì)話密鑰來配置CPU上的加密/解密塊。圖6描繪了根據(jù)本公開的某些實(shí)施例的ー種用于加密L3緩存線的方法600。方法600進(jìn)ー步說明了圖4的寫入操作401。如圖所示,方法在步驟605開始,在步驟605中,識(shí)別L2緩存中寫入到L3緩存中的數(shù)據(jù)的內(nèi)存地址(例如,內(nèi)存地址425J。在步驟610,L2緩存與L3緩存之間的緩存線上的加密/解密塊獲得用于寫入操作的隨機(jī)數(shù)值(例如,隨機(jī)數(shù)430J。在一個(gè)實(shí)施例中,所述隨機(jī)數(shù)值是由信任錨提供的64位整數(shù)值。例如,信任錨可以僅對(duì)每次寫入操作存儲(chǔ)和遞增64位值。64位隨機(jī)數(shù)值可能足夠大以確保隨機(jī)數(shù)值在核的壽命內(nèi)決不可再。在步驟615,加密/解密塊產(chǎn)生密鑰流。所述密鑰流可以使用識(shí)別出的內(nèi)存地址、隨機(jī)數(shù)值和與將數(shù)據(jù)從其L2內(nèi)存寫入到共享的L3內(nèi)存的處理核的當(dāng)前執(zhí)行上下文相關(guān)聯(lián)的會(huì)話密鑰來產(chǎn)生。通常,所述密鑰流是通過用會(huì)話密鑰(例如,密鑰415:)連續(xù)加密計(jì)數(shù)器的遞增值(即,內(nèi)存地址和隨機(jī)數(shù))來產(chǎn)生。例如,如上所述,給定L2/L3緩存線上的加密/解密塊可以提供AES-CTR模式流密碼的硬件實(shí)施。全AES實(shí)施可以維持由內(nèi)存讀取和寫入產(chǎn)生的400-500Gbps的吞吐量。然而,在產(chǎn)生用以加密/解密64字節(jié)緩存線的密鑰流的前128位吋,使用AES-CTR帶來少量的等待時(shí)間。這意味著在開始寫入到L3緩存中之前需要大約10個(gè)時(shí)鐘周期來執(zhí)行AES-128所要求的10個(gè)AES循環(huán)。因此,產(chǎn)生L2緩存刷新或移出的每個(gè)內(nèi)存寫入操作將帶來產(chǎn)生密鑰流的前128位所需要的約10個(gè)時(shí)鐘周期的額外等待時(shí)間。在步驟620,一旦密鑰流的前128位可用,則加密/解密塊在數(shù)據(jù)被寫入到L3緩存中時(shí)使用密鑰流對(duì)其進(jìn)行加密。例如,當(dāng)64字節(jié)的L2緩存項(xiàng)被寫入到L3緩存中吋,明文L2緩存線(即,明文405J與由在用會(huì)話密鑰加密計(jì)數(shù)器過程中AES塊所產(chǎn)生的密鑰流進(jìn)行異或。所得密文(即,密文435:)被存儲(chǔ)在L3緩存中。在步驟625,隨機(jī)數(shù)值被寫入到L3緩存中(S卩,隨機(jī)數(shù)440J。也就是說,用于加密給定寫入操作的隨機(jī)數(shù)值連同加密64字節(jié)內(nèi)存值一起被存儲(chǔ)在L3緩存中。請(qǐng)注意,將64位隨機(jī)數(shù)存儲(chǔ)在L3緩存中將存儲(chǔ)每64字節(jié)數(shù)據(jù)所需要的空間增加了 12. 5%。在步驟630,如果L3緩存中的加密64字節(jié)數(shù)據(jù)被刷新到內(nèi)存中,則相關(guān)聯(lián)的隨機(jī)數(shù)值也被寫入到內(nèi)存中。請(qǐng)注意,這可能導(dǎo)致內(nèi)存寫入等待時(shí)間的少量増加。例如,假定內(nèi)存控制器在每個(gè)寫入周期將64位寫入到DRAM中(對(duì)于當(dāng)前內(nèi)存控制器較常見),則需要八個(gè)寫入周期來將64字節(jié)加密數(shù)據(jù)(并且通常是8位檢查和)存儲(chǔ)在DRAM中的相應(yīng)內(nèi)存地址上。存儲(chǔ)64位隨機(jī)數(shù) 值需要額外的寫入周期。此外,就內(nèi)存、大小來說,存儲(chǔ)用于每個(gè)L3緩存線的隨機(jī)數(shù)對(duì)于每個(gè)64字節(jié)的內(nèi)存來說增加了 64位的開銷,也就意味著有12. 5%的增加。圖7描繪了根據(jù)本公開的某些實(shí)施例的ー種用于解密L3緩存線的方法700。方法700進(jìn)ー步說明了圖4的讀取操作402。如圖所示,方法700在步驟705開始,在步驟705中,識(shí)別讀取到L2緩存中的數(shù)據(jù)的內(nèi)存地址(即,內(nèi)存地址4252)。例如,在L2緩存中可能發(fā)生緩存缺失,從而導(dǎo)致試圖從L3緩存讀取所請(qǐng)求的地址。在步驟710,如果所請(qǐng)求的地址尚不在L3緩存中,則在步驟715,發(fā)生L3緩存故障。在這種情況下,內(nèi)存控制器從所識(shí)別出的內(nèi)存地址取得加密數(shù)據(jù),以及取得用以加密存儲(chǔ)在所述內(nèi)存地址上的數(shù)據(jù)的隨機(jī)數(shù)。一旦加密數(shù)據(jù)在L3緩存中,則加密/解密塊產(chǎn)生與來自L3緩存的數(shù)據(jù)進(jìn)行異或的密鑰流(步驟720)。具體來說,加密/解密塊讀取隨機(jī)數(shù)值(即,隨機(jī)數(shù)4302)和在步驟705識(shí)別出的內(nèi)存地址705(即,內(nèi)存地址4252)。所述隨機(jī)數(shù)與在步驟705識(shí)別出的物理內(nèi)存地址相連結(jié),并且與會(huì)話密鑰一起被送入到緩存線上的加密/解密塊上。所述加密/解密塊上的AES引擎隨后可以通過用信任錨所提供的VM (或管理程序)的會(huì)話密鑰(例如,密鑰4152)來連續(xù)加密計(jì)數(shù)器的遞增值(即,內(nèi)存地址和隨機(jī)數(shù))來重新產(chǎn)生密鑰流。在步驟725,所得密鑰流再次與加密L3緩存線進(jìn)行異或,以產(chǎn)生存儲(chǔ)在L2緩存中的64字節(jié)明文數(shù)據(jù)(例如,明文40 52)。在發(fā)生L2緩存缺失和L3緩存命中的情況下,L3緩存線立即可用,因此重新產(chǎn)生密鑰流的前128位對(duì)于從L3緩存的內(nèi)存讀取増加了十個(gè)時(shí)鐘周期的等待時(shí)間。然而,在發(fā)生L2和L3緩存都缺失的情況下,可以優(yōu)化內(nèi)存讀取,以使得首先從內(nèi)存取得隨機(jī)數(shù)。隨后L3緩存可以從內(nèi)存讀取64字節(jié)加密數(shù)據(jù),同時(shí)計(jì)算出密鑰流的前128位。在這種情況下,不會(huì)帶來額外的等待時(shí)間。總而言之,本文描述的實(shí)施例提供用于在多核處理架構(gòu)上的虛擬機(jī)(VM)的可信執(zhí)行的內(nèi)存劃分的技木。內(nèi)存劃分可以通過在給定VM的控制下在執(zhí)行所述VM的處理核的信任邊界內(nèi)使用密鑰加密層3 (L3)緩存線來實(shí)現(xiàn)。另外,本文描述的實(shí)施例提供ー種用于存儲(chǔ)和處理與對(duì)L3緩存線執(zhí)行的毎次加密/解密操作相關(guān)聯(lián)的加密有關(guān)元數(shù)據(jù)的有效方法。有利地,將多核CPU配置有信任錨并且將處理核與共享的L3緩存之間的每個(gè)緩存線配置有加密/解密塊允許使用在虛擬化服務(wù)器上運(yùn)行的每個(gè)VM (和管理程序)特有的會(huì)話密鑰來加密每個(gè)內(nèi)存讀取/寫入操作。這樣做使得能夠進(jìn)行VM實(shí)例的可信執(zhí)行,即使是在非可信云環(huán)境中和非可信管理程序上。雖然上述內(nèi)容是針對(duì)本公開的實(shí)施例,但是在不脫離本公開的基本范圍的情況下,可以設(shè)計(jì)出本公開的其他和進(jìn)ー步的實(shí)施例,并且本公開的范圍由以下權(quán)利要求確定。
權(quán)利要求
1.一種方法,包括識(shí)別內(nèi)存地址;獲得隨機(jī)數(shù)使用至少第一密鑰、所述隨機(jī)數(shù)和所識(shí)別出的內(nèi)存地址來產(chǎn)生密鑰流;使用所產(chǎn)生的密鑰流來對(duì)在從第一緩存寫入到第二緩存中時(shí)與內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行加密,其中所述第一緩存在中央處理單元(CPU )上的多個(gè)處理核中的一個(gè)核的本地, 并且其中所述第二緩存由所述多個(gè)處理核共享;以及將所述隨機(jī)數(shù)寫入到所述第二緩存中。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括將與所述內(nèi)存地址相對(duì)應(yīng)的所述數(shù)據(jù)刷新到內(nèi)存中;以及將所述隨機(jī)數(shù)寫入到所述內(nèi)存中。
3.如權(quán)利要求1所述的方法,其中使用至少第一密鑰、所述隨機(jī)數(shù)和所識(shí)別出的內(nèi)存地址來產(chǎn)生密鑰流包括將所述內(nèi)存地址與所述隨機(jī)數(shù)相連結(jié)以產(chǎn)生計(jì)數(shù)器;以及連續(xù)遞增所述計(jì)數(shù)器并且將帶密鑰的偽隨機(jī)函數(shù)應(yīng)用到所述計(jì)數(shù)器,從而產(chǎn)生偽隨機(jī)輸出。
4.如權(quán)利要求3所述的方法,其中使用所產(chǎn)生的密鑰流來對(duì)在從第一緩存寫入到第二緩存中時(shí)與內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行加密包括將與所述內(nèi)存地址相對(duì)應(yīng)的所述數(shù)據(jù)的每一位與所述密鑰流的連續(xù)位進(jìn)行異或。
5.如權(quán)利要求1所述的方法,其中所述隨機(jī)數(shù)是由信任錨存儲(chǔ)的64位值,并且其中所述信任錨對(duì)于將與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)寫入到所述第二緩存中的每次操作遞增所述隨機(jī)數(shù)。
6.如權(quán)利要求1所述的方法,其中所述隨機(jī)數(shù)是由信任錨對(duì)于將與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)寫入到所述第二緩存中的每次操作產(chǎn)生的固定位大小的隨機(jī)或偽隨機(jī)數(shù)。
7.如權(quán)利要求1所述的方法,其中信任錨管理所述第一密鑰和至少第二密鑰,其中所述第一密鑰和所述第二密鑰各自提供與在所述CPU的所述多個(gè)處理核上執(zhí)行的相應(yīng)虛擬機(jī)相關(guān)聯(lián)的會(huì)話密鑰。
8.如權(quán)利要求1所述的方法,進(jìn)一步包括從所述第二緩存讀取與所述內(nèi)存地址相對(duì)應(yīng)的所述隨機(jī)數(shù);使用所述第一密鑰、所述隨機(jī)數(shù)以及所識(shí)別出的內(nèi)存地址來重新產(chǎn)生所述密鑰流;以及使用所產(chǎn)生的密鑰流來在與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)正被從所述第二緩存讀取并且寫入到所述第一緩存中時(shí)對(duì)其進(jìn)行解密。
9.一種計(jì)算系統(tǒng),包括,內(nèi)存;以及CPU,具有多個(gè)處理核,每個(gè)核至少具有第一緩存;第二緩存,其中所述第二緩存可由所述多個(gè)處理核中的每一個(gè)訪問;對(duì)于所述多個(gè)處理核中的每一個(gè),將各自的處理核耦合到所述第二緩存的加密/解密塊,其中每個(gè)加密/解密塊被配置成執(zhí)行包括以下步驟的操作識(shí)別內(nèi)存地址,獲得隨機(jī)數(shù),使用至少第一密鑰、所述隨機(jī)數(shù)和所識(shí)別出的內(nèi)存地址來產(chǎn)生密鑰流,以及使用所產(chǎn)生的密鑰流來對(duì)在從所述第一緩存寫入到所述第二緩存中時(shí)與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行加密;以及內(nèi)存控制器,其中內(nèi)存控制器被配置成將所述隨機(jī)數(shù)寫入到所述第二緩存中。
10.如權(quán)利要求9所述的計(jì)算系統(tǒng),其中所述內(nèi)存控制器進(jìn)一步被配置成將與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)刷新到內(nèi)存中;以及將所述隨機(jī)數(shù)寫入到所述內(nèi)存中。
11.如權(quán)利要求9所述的計(jì)算系統(tǒng),其中使用至少第一密鑰、所述隨機(jī)數(shù)和所識(shí)別出的內(nèi)存地址來產(chǎn)生密鑰流包括將所述內(nèi)存地址與所述隨機(jī)數(shù)相連結(jié)以產(chǎn)生計(jì)數(shù)器;以及連續(xù)遞增所述計(jì)數(shù)器并且將帶密鑰的偽隨機(jī)函數(shù)應(yīng)用到所述計(jì)數(shù)器,從而產(chǎn)生偽隨機(jī)輸出。
12.如權(quán)利要求11所述的計(jì)算系統(tǒng),其中使用所產(chǎn)生的密鑰流來對(duì)在從所述第一緩存寫入到所述第二緩存中時(shí)與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)進(jìn)行加密包括將與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)的每一位與所述密鑰流的連續(xù)位進(jìn)行異或。
13.如權(quán)利要求9所述的計(jì)算系統(tǒng),進(jìn)一步包括信任錨,其中所述隨機(jī)數(shù)是由所述信任錨存儲(chǔ)的64位值,并且其中所述信任錨對(duì)于將與所述內(nèi)存地址相對(duì)應(yīng)的數(shù) 據(jù)寫入到所述第二緩存中的每次操作遞增所述隨機(jī)數(shù)。
14.如權(quán)利要求9所述的計(jì)算系統(tǒng),進(jìn)一步包括信任錨,其中所述隨機(jī)數(shù)是由所述信任錨對(duì)于將與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)寫入到所述第二緩存中的每次操作產(chǎn)生的固定位大小的隨機(jī)或偽隨機(jī)數(shù)。
15.如權(quán)利要求9所述的計(jì)算系統(tǒng),進(jìn)一步包括信任錨,其中所述信任錨管理所述第一密鑰和至少第二密鑰,其中所述第一密鑰和所述第二密鑰各自提供與在所述CPU的所述多個(gè)處理核上執(zhí)行的相應(yīng)虛擬機(jī)相關(guān)聯(lián)的會(huì)話密鑰。
16.如權(quán)利要求9所述的計(jì)算系統(tǒng),所述操作進(jìn)一步包括從所述第二緩存讀取與所述內(nèi)存地址相對(duì)應(yīng)的隨機(jī)數(shù);使用所述第一密鑰、所述隨機(jī)數(shù)以及所識(shí)別出的內(nèi)存地址來重新產(chǎn)生所述密鑰流;以及使用所產(chǎn)生的密鑰流來在與所述內(nèi)存地址相對(duì)應(yīng)的數(shù)據(jù)正被從所述第二緩存讀取并且寫入到所述第一緩存中時(shí)對(duì)其進(jìn)行解密。
全文摘要
描述用于內(nèi)存劃分的技術(shù),所述內(nèi)存劃分用于在多核處理架構(gòu)上的虛擬機(jī)(VM)的可信執(zhí)行。內(nèi)存劃分可以通過在給定VM的控制下在執(zhí)行所述VM的處理核的信任邊界內(nèi)使用密鑰加密層3(L3)緩存線來實(shí)現(xiàn)。另外,本文描述的實(shí)施例提供一種用于存儲(chǔ)和處理與對(duì)L3緩存線執(zhí)行的每次加密/解密操作相關(guān)聯(lián)的加密相關(guān)元數(shù)據(jù)的有效方法。
文檔編號(hào)G06F12/08GK103026347SQ201180037006
公開日2013年4月3日 申請(qǐng)日期2011年5月24日 優(yōu)先權(quán)日2010年5月27日
發(fā)明者法彼奧·R·麥諾, 皮瑞·曼克魯斯, 大衛(wèi)·A·麥格魯 申請(qǐng)人:思科技術(shù)公司