專利名稱:采用安全存儲器分區(qū)來實(shí)現(xiàn)安全執(zhí)行的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及處理器中的安全執(zhí)行。具體地說,本發(fā)明涉及一種采用安全存儲器分區(qū)來實(shí)現(xiàn)安全執(zhí)行的方法和裝置。
安全執(zhí)行包括保證執(zhí)行的完整性和保證代碼和數(shù)據(jù)的保密性。多種類型的威脅會有損系統(tǒng)的完整性或保密性。例如,惡意軟件可能會利用操作系統(tǒng)中的弱點(diǎn)。直接存儲器訪問裝置能夠不需要處理器支持來讀取物理存儲器??刹捎眠壿嫹治銎鱽碛^察處理器和存儲器之間的通信量。還可利用處理器的內(nèi)置調(diào)試模式或探測模式來進(jìn)行攻擊,或者物理地修改系統(tǒng)中各部件的互連性以便觀察和修改部件之間的通信來進(jìn)行攻擊。攻擊者還可使硬件處于異常的電壓、溫度或頻率下,從而損害系統(tǒng)的執(zhí)行并可能使硬件“泄露”秘密。另外,攻擊者還可選擇性地除去處理層以暴露出隱藏有秘密的裝置結(jié)構(gòu),或者采用離子束來檢查裝置內(nèi)的信號流。
一些安全方案、如基于公開密鑰/秘密密鑰密碼術(shù)的方案采用需要保密的專用數(shù)據(jù)或代碼。在一些情況中,所使用的編碼算法是公知的,而密碼強(qiáng)度在于使密鑰保密。中間數(shù)據(jù)、如程序的控制流信息應(yīng)當(dāng)不被暴露,因為這可能使得更容易確定秘密密鑰。在此方面,可采用處理器體系結(jié)構(gòu)的條件分配能力來消除秘密數(shù)據(jù)的轉(zhuǎn)移,然而很難設(shè)計出代碼來滿足此要求。對于一些應(yīng)用,一部分密碼強(qiáng)度是在算法本身的保密性中。在這種情況下,執(zhí)行環(huán)境需要保證甚至是執(zhí)行代碼以及輸入數(shù)據(jù)和所有中間結(jié)果都保密。
在一些系統(tǒng)中,采用特殊的安全協(xié)處理器來保護(hù)主處理器的代碼和數(shù)據(jù)。已知的系統(tǒng)沒有為主處理器提供有效的裝置來保護(hù)主處理器內(nèi)的專用代碼或數(shù)據(jù)(如密鑰)不受攻擊,例如采用惡意軟件、直接存儲器訪問裝置、邏輯分析器,利用系統(tǒng)的調(diào)試/探測模式,或者修改硬件來泄露秘密,從而進(jìn)行攻擊。
圖2是根據(jù)本發(fā)明一個實(shí)施例的具有安全執(zhí)行部件的處理器和具有安全分區(qū)的存儲器的部分框圖。
圖3是虛擬和物理存儲器分區(qū)的部分框圖。
圖4表示根據(jù)本發(fā)明一個實(shí)施例的處理指令的方法的流程圖。
圖5表示根據(jù)本發(fā)明一個實(shí)施例的處理指令的另一方法的流程圖。
具體描述本發(fā)明的實(shí)施例通過將敏感代碼和數(shù)據(jù)存儲在安全存儲器分區(qū)中而實(shí)現(xiàn)安全執(zhí)行。敏感代碼和數(shù)據(jù)可包括用于驗證經(jīng)網(wǎng)絡(luò)接收的傳輸?shù)目煽啃院屯暾缘拇a和數(shù)據(jù),并可包括存儲在如DVD或CD-ROM等媒體中的內(nèi)容。安全存儲器分區(qū)可由體系結(jié)構(gòu)定義為處理器的通用地址空間內(nèi)的地址范圍。分區(qū)可以是虛擬存儲單元或物理存儲單元的地址范圍。地址范圍可由基址和范圍來指定。安全存儲器分區(qū)可具有固定的入口點(diǎn)。在另一實(shí)施例中,敏感代碼和數(shù)據(jù)在寫到存儲器中之前由處理器上的硬件加密,并在其被讀回到處理器中之后被解密,從而保護(hù)敏感代碼和數(shù)據(jù)免于泄露。本發(fā)明的不同實(shí)施例提供了針對不同級別威脅的保護(hù)。實(shí)施例提供了針對基于惡意軟件和智能輸入/輸出裝置的攻擊、采用邏輯分析器的攻擊以及包括將處理器從插槽中拔出然后將其放到完整性受損的平臺上的硬件攻擊的高度保護(hù)。
安全執(zhí)行系統(tǒng)的實(shí)施例
圖1是根據(jù)本發(fā)明一個實(shí)施例的可實(shí)現(xiàn)安全執(zhí)行的計算機(jī)系統(tǒng)的部分框圖。計算機(jī)100包括部件101,其中可包括處理器110、芯片組102、系統(tǒng)存儲器120、網(wǎng)絡(luò)接口卡103、非易失性大容量存儲器104、輸入/輸出(I/O)裝置107和基本輸入/輸出系統(tǒng)(BIOS)ROM108。處理器110可與芯片組102相連。用語“相連”包括直接連接、間接連接和間接通信等。芯片組102還可與系統(tǒng)存儲器120、網(wǎng)絡(luò)接口卡103、非易失性大容量存儲器104、輸入/輸出裝置107和BIOSROM 108相連。這些裝置可通過總線如系統(tǒng)總線、外圍部件接口(PCI)總線等與芯片組102相連。網(wǎng)絡(luò)接口卡103可與網(wǎng)絡(luò)130相連。計算機(jī)100還可包括其它部件,例如協(xié)處理器、調(diào)制解調(diào)器等。
處理器110可以是通用微處理器,例如由California,Santa Clara的Intel公司生產(chǎn)的PENTIUM類處理器。在另一實(shí)施例中,處理器可以是專用集成電路(ASIC)、控制器、微控制器等。芯片組102可以是一個或多個集成電路芯片,用作在處理器和計算機(jī)系統(tǒng)的其它部件之間進(jìn)行數(shù)據(jù)傳送的集線器或核心。在一個實(shí)施例中,芯片組102包括執(zhí)行所謂的“北橋功能”的存儲器控制集線器(MCH)和執(zhí)行所謂的“南橋功能”的輸入/輸出控制集線器(ICH)。系統(tǒng)存儲器120是適合于存儲數(shù)字信息的任何裝置,例如動態(tài)隨機(jī)存取存儲器(DRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)等、或者它們的任何組合。在一個實(shí)施例中,系統(tǒng)存儲器120是易失性存儲器。處理器110、芯片組102、系統(tǒng)存儲器120和BIOS ROM 108可以安裝在計算機(jī)100的系統(tǒng)主板上。
網(wǎng)絡(luò)接口卡103可包含邏輯以采用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議進(jìn)行通信。網(wǎng)絡(luò)130可以是局域或廣域計算機(jī)網(wǎng)絡(luò),例如可以為內(nèi)部網(wǎng)或因特網(wǎng)。非易失性大容量存儲器104可以是適合于存儲數(shù)字信息的任何裝置,例如閃速存儲器、硬盤、光學(xué)數(shù)字存儲裝置、磁電存儲裝置、DVD、CD-ROM等、或者它們的任何組合。圖1表示的非易失性大容量存儲器104包括光存儲器105和軟盤驅(qū)動器106。輸入/輸出裝置107可以是鍵盤、鼠標(biāo)、顯示屏、打印機(jī)等或者它們的任何組合。BIOS ROM108可包含用于控制外圍設(shè)備如鍵盤、顯示屏、盤驅(qū)動器、串行通信接口的代碼。BIOS ROM 108還可包含用于執(zhí)行其它雜項功能的代碼。
圖2是根據(jù)本發(fā)明一個實(shí)施例的具有安全執(zhí)行部件的處理器和帶有安全分區(qū)的存儲器的部分框圖。圖2表示了處理器210和系統(tǒng)存儲器220,作為計算機(jī)系統(tǒng)、如圖1所示計算機(jī)系統(tǒng)100的一部分。處理器210和系統(tǒng)存儲器220可以與圖1所示的處理器110和系統(tǒng)存儲器120相同。處理器210可例如通過芯片組、如圖1所示芯片組102與系統(tǒng)存儲器220相連。
處理器210可包括執(zhí)行單元211、如算術(shù)邏輯單元,它可與寄存器文件212相連。寄存器文件212可包括多個寄存器,諸如通用寄存器、標(biāo)志寄存器、指令指針、變址寄存器等、或者它們的組合。寄存器文件212可包括安全分區(qū)寄存器214。執(zhí)行單元211可與片上基本輸入/輸出系統(tǒng)(BIOS)215、處理器密鑰存儲元件216和隨機(jī)數(shù)發(fā)生器(RNG)單元217相連。片上BIOS 215可包含燒寫的邏輯,供處理器用來與其它系統(tǒng)部件、如系統(tǒng)存儲器120進(jìn)行通信,并可包含在處理器啟動(引導(dǎo))時運(yùn)行的邏輯。此邏輯可包括如下所述的引導(dǎo)安全性邏輯241。另外,片上BIOS 215可包括在系統(tǒng)啟動時將來自BIOSROM 108的指令裝入系統(tǒng)存儲器的邏輯(如固件、微碼等)。處理器密鑰存儲元件216包含秘密密鑰,處理器210可采用秘密密鑰來驗證和鑒別從其它系統(tǒng)部件和從其它計算機(jī)系統(tǒng)接收的信息。處理器密鑰可燒寫到處理器密鑰存儲元件216中。隨機(jī)數(shù)發(fā)生器單元217可以是采用任何隨機(jī)化函數(shù)的硬件隨機(jī)數(shù)發(fā)生器。在一個實(shí)施例中,隨機(jī)數(shù)發(fā)生器單元217利用物理器件中的統(tǒng)計現(xiàn)象(例如熱噪聲)來提供隨機(jī)數(shù)。
在此實(shí)施例中,執(zhí)行單元211還可與包含管理如下所述的存儲器中安全分區(qū)的邏輯的安全分區(qū)實(shí)施邏輯218相連。在另一實(shí)施例中,安全分區(qū)實(shí)施邏輯218與密碼邏輯219相連,后者對要存儲在安全分區(qū)中的信息加密,并對從安全分區(qū)讀出的信息進(jìn)行解密。密碼邏輯219可以是實(shí)現(xiàn)如數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)、Rivest-Shamir-Adleman(RSA)或數(shù)字信號標(biāo)準(zhǔn)(DSS)加密之類算法的硬件邏輯。在一個實(shí)施例中,密碼邏輯219采用平臺指定密鑰而不是存儲在處理器密鑰存儲元件216中的處理器密鑰。安全分區(qū)實(shí)施邏輯218和密碼邏輯219可以與翻譯旁視緩沖器(TLB)213相連,TLB 213可用于將處理器210的地址空間內(nèi)的虛擬地址映射到系統(tǒng)存儲器220和其它可由處理器210存取的存儲器中的物理存儲器地址。
圖2還表示了包括安全存儲器分區(qū)223的系統(tǒng)存儲器220。安全存儲器分區(qū)223可以是只能被駐留在安全分區(qū)內(nèi)的代碼訪問的物理存儲器或虛擬存儲器的一部分。在一個實(shí)施例中,安全分區(qū)223由兩個安全分區(qū)寄存器214定義。例如,安全分區(qū)223由指定虛擬存儲器中的安全分區(qū)開頭的安全分區(qū)虛擬地址基址寄存器和指定安全分區(qū)大小的安全分區(qū)虛擬地址范圍寄存器來定義。在圖2中,所示的安全分區(qū)223映射到系統(tǒng)存儲器220中的物理存儲器地址。安全存儲器分區(qū)223可包含安全數(shù)據(jù)部分225和安全代碼部分226。安全代碼部分226例如可存儲信任的驗證實(shí)施指令242,用于應(yīng)用密碼算法和驗證經(jīng)網(wǎng)絡(luò)接收的傳輸(或者存儲在媒體、如DVD或CD-ROM中的內(nèi)容)的可靠性和完整性。安全數(shù)據(jù)部分225可包含由安全代碼使用的數(shù)據(jù),例如秘密密鑰和中間數(shù)據(jù)(例如安全指令的控制流信息)。安全代碼部分226可具有入口點(diǎn)228,如下所述地使用。
圖2所示的實(shí)施例可如下操作。處理器210通過采用引導(dǎo)安全邏輯來驗證BIOS代碼(例如BIOS ROM 108中的代碼),從而保證平臺的完整性,引導(dǎo)安全邏輯例如為處理器微碼或片上BIOS驗證固件代碼,在圖2中表示為引導(dǎo)安全邏輯241。然后安全BIOS 108又確認(rèn)芯片組中任何其它保護(hù)機(jī)制的存在。根據(jù)一個實(shí)施例,當(dāng)處理器210被啟動時,它可以通過掃描存儲器并確定安全分區(qū)的位置來創(chuàng)建安全分區(qū)。然后處理器可以編制安全分區(qū)基址寄存器和安全分區(qū)范圍寄存器來定義安全分區(qū)。這些寄存器可以是一次寫入寄存器。在其它實(shí)施例中,可采用其它機(jī)制來創(chuàng)建安全分區(qū)。然后處理器可將驗證實(shí)施指令242和相關(guān)數(shù)據(jù)、如密鑰復(fù)制到系統(tǒng)存儲器220的安全存儲器分區(qū)223中。在另一實(shí)施例中,在處理器引導(dǎo)過程中將驗證實(shí)施指令242從非易失性大容量存儲器、如硬盤驅(qū)動器復(fù)制到安全存儲器分區(qū)223中。在此實(shí)施例中,處理器210可采用存儲在片上BIOS215中的引導(dǎo)安全邏輯241和存儲在處理器密鑰存儲元件216中的密鑰數(shù)據(jù)來驗證復(fù)制到安全存儲器分區(qū)223中的驗證實(shí)施指令242和數(shù)據(jù)的可靠性和完整性。此驗證可確定存儲在非易失性存儲器中的驗證實(shí)施指令242是否已經(jīng)被攻擊所破壞或損壞。將引導(dǎo)安全邏輯241存儲在處理器中和將驗證實(shí)施指令242存儲在非易失性存儲器中比將驗證實(shí)施指令242燒寫在處理器本身中的成本更低。
在一個實(shí)施例中,安全分區(qū)實(shí)施邏輯218監(jiān)測由處理器210進(jìn)行的對存儲器的任何訪問。這種訪問可包括執(zhí)行存儲在存儲器中的指令,或者執(zhí)行可操作存儲器中數(shù)據(jù)的指令。當(dāng)指令讀取存儲在存儲單元中的數(shù)據(jù)或向此存儲單元寫入數(shù)據(jù)時,指令操作存儲器中的該存儲單元中的數(shù)據(jù)。在此實(shí)施例中,安全分區(qū)實(shí)施邏輯218在處理器210執(zhí)行指令之前檢查各指令。如果指令是向安全存儲器分區(qū)223內(nèi)除分區(qū)入口點(diǎn)228外的存儲單元的轉(zhuǎn)移,那么安全分區(qū)實(shí)施邏輯確定不應(yīng)執(zhí)行此指令。在這種情況下,分區(qū)指令邏輯將轉(zhuǎn)移到中斷處理器。安全分區(qū)實(shí)施邏輯218允許執(zhí)行從分區(qū)內(nèi)存儲單元到分區(qū)內(nèi)另一存儲單元的轉(zhuǎn)移,并允許執(zhí)行到分區(qū)入口點(diǎn)228的轉(zhuǎn)移。入口點(diǎn)228可包含驗證例程的起點(diǎn),此例程驗證跳轉(zhuǎn)到安全分區(qū)的軟件的可靠性。因此,例如,此例程可防止未授權(quán)或惡意的程序執(zhí)行安全代碼。另外,通過為安全代碼226強(qiáng)加入口點(diǎn),安全分區(qū)實(shí)施邏輯218可防止未授權(quán)或惡意代碼繞過驗證例程。在另一實(shí)施例中,當(dāng)指令未存儲在分區(qū)入口點(diǎn)且先前執(zhí)行的指令為分區(qū)開頭之前的指令時,安全分區(qū)實(shí)施邏輯確定不執(zhí)行此指令。因此,如果分區(qū)入口點(diǎn)228不是分區(qū)中的第一指令,那么安全分區(qū)實(shí)施邏輯218將防止處理器隨后進(jìn)入到安全分區(qū)中入口點(diǎn)以外的點(diǎn)處。
在此實(shí)施例中,當(dāng)指令位于安全分區(qū)之外并嘗試在安全分區(qū)內(nèi)的存儲單元進(jìn)行操作(例如從中讀出或?qū)懭?時,安全分區(qū)實(shí)施邏輯確定不執(zhí)行此指令。因此,只有安全代碼部分226中可信任的指令才能對安全存儲器分區(qū)223的安全數(shù)據(jù)部分225內(nèi)的數(shù)據(jù)進(jìn)行操作。在此實(shí)施例中,安全數(shù)據(jù)不能被位于安全分區(qū)內(nèi)的代碼存取接受。在另一實(shí)施例中,安全分區(qū)中的代碼可訪問安全分區(qū)之外的數(shù)據(jù)。在另一實(shí)施例中,如果指令不具有適當(dāng)?shù)淖x/寫權(quán)限,那么安全分區(qū)實(shí)施邏輯218可確定不執(zhí)行試圖對分區(qū)的安全數(shù)據(jù)部分225內(nèi)的數(shù)據(jù)進(jìn)行操作的指令。在另一實(shí)施例中,當(dāng)安全分區(qū)之外的指令試圖對安全分區(qū)內(nèi)的存儲單元進(jìn)行操作時,安全分區(qū)實(shí)施邏輯218可轉(zhuǎn)移到中斷處理器。當(dāng)一個指令試圖對安全數(shù)據(jù)部分內(nèi)的數(shù)據(jù)進(jìn)行操作而沒有適當(dāng)?shù)淖x/寫權(quán)限時,也可以轉(zhuǎn)移到中斷處理器。
在一個實(shí)施例中,安全存儲器分區(qū)223可以是虛擬存儲器中的分區(qū)。在一個實(shí)施例中,處理器的地址空間是虛擬存儲器地址空間,并且所有指令根據(jù)虛擬地址來對存儲器進(jìn)行尋址。在此實(shí)施例中,安全分區(qū)在處理器210中由虛擬地址、如虛擬地址基址寄存器和虛擬地址范圍寄存器所指定。通過根據(jù)虛擬地址來指定安全分區(qū),安全分區(qū)實(shí)施邏輯可更早地位于流水線中。翻譯旁視緩沖器213可將這些虛擬地址轉(zhuǎn)換為物理地址。用于安全分區(qū)的虛擬地址到物理地址的映射可通過信賴的機(jī)制來完成。
圖3是虛擬和物理存儲器分區(qū)的部分框圖。圖3表示具有小應(yīng)用程序空間367和核心空間365的虛擬存儲器360。小應(yīng)用程序空間367和核心空間365映射到物理存儲器320內(nèi)的安全分區(qū)323。安全分區(qū)323中的信息可被調(diào)出到非易失性存儲器340中的安全非易失性空間345中。非易失性存儲器340可以是閃速存儲器。在一個實(shí)施例中,安全非易失性空間345只包括安全分區(qū)323中的一小部分代碼或數(shù)據(jù)。
在一個實(shí)施例中,驗證實(shí)施指令242和相關(guān)數(shù)據(jù)以加密形式存儲在安全分區(qū)223中,從而在從處理器210到存儲器的傳送或在存儲在存儲器中時保護(hù)代碼和數(shù)據(jù)不會泄露。根據(jù)此實(shí)施例,安全代碼和數(shù)據(jù)在它們從存儲器中的安全分區(qū)傳送到處理器210中之后被密碼邏輯219解密,使得執(zhí)行單元211可對代碼和數(shù)據(jù)起作用。相反,安全代碼和數(shù)據(jù)在它們從處理器210中傳送到存儲器中的安全分區(qū)之前被密碼邏輯219加密。這樣就可以保護(hù)安全代碼和數(shù)據(jù)免受通過例如直接存儲器訪問、邏輯分析器或離子束進(jìn)行的攻擊。如果采用足夠強(qiáng)度的加密,即使攻擊者可確定安全分區(qū)的內(nèi)容,也無法確定安全代碼或數(shù)據(jù)。在一個實(shí)施例中,可采用共享密碼算法、如Diffi Helman方法來對安全代碼和數(shù)據(jù)進(jìn)行加密和解密。在這樣的實(shí)施例中,可采用覆蓋密鑰來覆蓋數(shù)據(jù),此覆蓋密鑰不是共享的。覆蓋密鑰可通過啟動邏輯來產(chǎn)生。在另一實(shí)施例中,系統(tǒng)具有多個處理器,覆蓋密鑰由系統(tǒng)處理器共享。
在另一實(shí)施例中,計算機(jī)系統(tǒng)具有在非易失性大容量存儲器、如硬盤中的安全分區(qū)。非易失性大容量存儲器中的安全分區(qū)也可以是易失性大容量存儲器中的安全分區(qū)的補(bǔ)充。根據(jù)此實(shí)施例,非易失性存儲器中的分區(qū)只可由安全代碼尋址。
可采用隨機(jī)數(shù)發(fā)生器217來執(zhí)行密碼算法或產(chǎn)生新密鑰。處理器可采用安全的非易失性(NV)存儲器來保持當(dāng)前的單調(diào)值。
圖4表示根據(jù)本發(fā)明一個實(shí)施例的處理指令的方法的流程圖。此指令例如可以是將由處理器、如圖1和2所示的處理器110或210執(zhí)行的匯編語言指令。在執(zhí)行之前檢查指令(401)。當(dāng)指令是對虛擬存儲器的存儲單元分區(qū)中某一單元的未授權(quán)訪問時,作出不執(zhí)行此指令的決定。在一個實(shí)施例中,當(dāng)指令操作分區(qū)內(nèi)存儲單元中的數(shù)據(jù)且指令并不存儲在分區(qū)中時,作出不執(zhí)行此指令的決定(402)。在另一實(shí)施例中,當(dāng)指令是從分區(qū)外存儲單元到分區(qū)內(nèi)的分區(qū)入口點(diǎn)以外的存儲單元的轉(zhuǎn)移時,作出不執(zhí)行此指令的決定(403)。根據(jù)另一實(shí)施例,當(dāng)指令未存儲在分區(qū)入口點(diǎn)并且先前執(zhí)行的指令為緊接分區(qū)開頭之前的指令時,作出不執(zhí)行此指令的決定(404)。如果作出指令經(jīng)過授權(quán)的判決,則執(zhí)行此指令(405)。例如,當(dāng)指令從分區(qū)內(nèi)的存儲單元轉(zhuǎn)移到分區(qū)內(nèi)的另一存儲單元時以及當(dāng)指令從分區(qū)外的存儲單元轉(zhuǎn)移到分區(qū)入口點(diǎn)時,可以執(zhí)行此指令。根據(jù)一個實(shí)施例,此方法包括當(dāng)作出不執(zhí)行此指令的決定時轉(zhuǎn)移到中斷處理器(406)。
圖5表示根據(jù)本發(fā)明一個實(shí)施例的處理指令的另一方法的流程圖。根據(jù)一個實(shí)施例,從存儲器中的安全分區(qū)將加密指令讀到處理器中(501)。指令已經(jīng)采用了任何密碼技術(shù)進(jìn)行加密。所讀取的指令例如采用如圖2所示的密碼邏輯219進(jìn)行解密(502)。然后執(zhí)行所解密的指令。在一個實(shí)施例中,如果指令是從安全分區(qū)中讀出數(shù)據(jù)的指令(503),那么從安全分區(qū)中讀出數(shù)據(jù),對所讀取的數(shù)據(jù)進(jìn)行解密(504)。在另一實(shí)施例中,如果指令是將數(shù)據(jù)寫入安全分區(qū)的存儲單元中的指令(505),那么對數(shù)據(jù)進(jìn)行加密,且將加密數(shù)據(jù)寫入安全分區(qū)(506)。在另一實(shí)施例中,確定指令是否為從安全分區(qū)中讀取數(shù)據(jù)或向安全分區(qū)中的存儲單元寫入數(shù)據(jù)的指令包括將數(shù)據(jù)的虛擬地址與安全分區(qū)的邊界進(jìn)行比較。
安全特權(quán)級別(SPL)
在一個實(shí)施例中,定義了兩個“安全特權(quán)級別”。一個特權(quán)級別稱為安全核心特權(quán)級別,可用于只執(zhí)行原始安全函數(shù)/服務(wù)。第二特權(quán)級別可定義成用于執(zhí)行處理器或第三方提供的安全代碼。此第二特權(quán)級別可稱為小應(yīng)用程序特權(quán)級別。新的安全特權(quán)級別(SPL)可與執(zhí)行的特權(quán)級別的現(xiàn)有概念正交。因此在這個實(shí)施例中,用于給定虛擬地址范圍的訪問(執(zhí)行/讀/寫)特權(quán)不僅成為當(dāng)前特權(quán)級別(CPL)的函數(shù),而且成為當(dāng)前SPL(CSPL)的函數(shù)。CSPL表明了與當(dāng)前執(zhí)行有關(guān)的安全特權(quán)級別。CSPL的缺省值可為3。在這種情況下,當(dāng)CSPL為3時,此執(zhí)行模型可稱為缺省執(zhí)行模型。當(dāng)CSPL為缺省值以外的其它值時,執(zhí)行模型可稱為“隱藏執(zhí)行”模型。
兩個特權(quán)級別可稱為為0的SPL(對核心來說)和為1的SPL(對小應(yīng)用程序來說)。復(fù)合特權(quán)級別可稱為環(huán)x,y,其中x為當(dāng)前執(zhí)行的CPL,而y為當(dāng)前執(zhí)行的CSPL。因此,如果當(dāng)前執(zhí)行的特權(quán)級別為3.3,這就意味著當(dāng)前應(yīng)用在缺省環(huán)3下執(zhí)行。然而,如果當(dāng)前特權(quán)級別為3.0,這就意味著執(zhí)行的當(dāng)前特權(quán)級別為環(huán)3,并具有與安全核心特權(quán)級別相關(guān)的訪問權(quán)限。在一個實(shí)施例中,CSPL在實(shí)模式下總為3,在這種情況下不存在對實(shí)模式中隱藏執(zhí)行的支持。
核心特權(quán)級別該體系結(jié)構(gòu)可定義用于核心特權(quán)級別的新的虛擬地址范圍。新的虛擬地址范圍可由虛擬地址基址寄存器核心(VABRk)和虛擬地址范圍寄存器核心(VARRk)來定義。由VABRk和VARRk所指定的虛擬地址范圍可定義成具有與之相關(guān)的核心級別安全訪問權(quán)限,可稱為安全核心空間或核心的安全存儲器分區(qū)。
在一個實(shí)施例中,只有安全核心空間內(nèi)的代碼才可在此空間內(nèi)讀或?qū)?。在這種情況下,安全核心空間內(nèi)的數(shù)據(jù)和代碼的完整性和保密性不會被位于此空間之外的代碼所損壞。在另一實(shí)施例中,安全核心空間內(nèi)的代碼可從任何虛擬地址空間內(nèi)讀取數(shù)據(jù)或向其中寫入數(shù)據(jù),只要這種存取是被允許的,這例如可通過現(xiàn)有的分段和分頁保護(hù)機(jī)制來進(jìn)行。在另一實(shí)施例中,定義了只有在安全核心特權(quán)級別下才可執(zhí)行的指令。在另一實(shí)施例中,核心虛擬地址空間可自由地再定位。在另一實(shí)施例中,安全分區(qū)的大小在引導(dǎo)時間是固定的,并不受通用系統(tǒng)軟件的控制。例如,只有預(yù)裝操作系統(tǒng)固件或片上微碼能夠?qū)懭胩摂M地址范圍寄存器中。在這種情況下,虛擬地址范圍寄存器或者完全不能由軟件寫入(它由處理器微碼寫入),或者可在復(fù)位后只寫一次(如果由固件寫入的話)。
在另一實(shí)施例中,存在著到安全核心空間的固定入口點(diǎn),并且從這個空間外部轉(zhuǎn)移到安全核心空間中除入口點(diǎn)的預(yù)定義偏移量以外的偏移量是非法的??赏ㄟ^任何控制轉(zhuǎn)移機(jī)制從具有缺省安全特權(quán)的地址空間進(jìn)入安全核心空間,只要它是到固定入口點(diǎn)。在另一實(shí)施例中,在核心安全特權(quán)級別下代碼所請求的核心服務(wù)可以是請求者的當(dāng)前特權(quán)級別的函數(shù)。在此實(shí)施例中,進(jìn)入安全核心空間的入口點(diǎn)處的代碼檢查調(diào)用者的當(dāng)前特權(quán)級另和當(dāng)前安全特權(quán)級別,以便確定是否允許所請求的服務(wù)。在一個實(shí)施例中,安全核心地址空間可通過任何控制轉(zhuǎn)移機(jī)制退出到具有x.3的當(dāng)前安全特權(quán)級別的空間。在安全核心采用調(diào)用/返回機(jī)制以改變程序流的情況下,安全核心可能需要管理其安全棧空間以及安全和非安全應(yīng)用??臻g之間的轉(zhuǎn)移。
小應(yīng)用程序特權(quán)級別此體系結(jié)構(gòu)可定義處理器的通用虛擬地址空間內(nèi)的新的虛擬地址范圍。此虛擬地址范圍可由兩個寄存器來定義虛擬地址基址寄存器小應(yīng)用程序(VABRa)和虛擬地址范圍寄存器小應(yīng)用程序(VARRa)。由VABRa和VARRa定義的地址范圍具有小應(yīng)用程序級別,可具有與之相關(guān)的安全訪問權(quán)限,并可稱為安全小應(yīng)用程序空間。
在一個實(shí)施例中,對于與小應(yīng)用程序安全特權(quán)級別相對應(yīng)的虛擬地址空間來說,讀寫訪問權(quán)限被限于在地址范圍內(nèi)執(zhí)行且?guī)в行?yīng)用程序或核心安全特權(quán)級別的代碼。在一個實(shí)施例中,定義安全小應(yīng)用程序空間的應(yīng)用必須還在相同處理的上下文中的相同當(dāng)前特權(quán)級別下定義安全核心空間。在一個實(shí)施例中,核心或小應(yīng)用程序的隱藏執(zhí)行代碼以外的任何代碼都不能在安全小應(yīng)用程序空間內(nèi)進(jìn)行讀或?qū)?。因此,安全小?yīng)用程序地址空間內(nèi)數(shù)據(jù)和代碼的完整性和保密性不會被不具有安全訪問權(quán)限(即當(dāng)前安全特權(quán)級別為3)的代碼所損壞。在這個實(shí)施例中,安全小應(yīng)用程序空間內(nèi)的代碼不能讀或?qū)懓踩诵牡刂房臻g內(nèi)的數(shù)據(jù),并且安全小應(yīng)用程序空間內(nèi)的代碼可以讀和/或?qū)懓踩诵目臻g以外的任何其它地址范圍,只要它是現(xiàn)有分段和分頁保護(hù)機(jī)制所允許的。安全小應(yīng)用程序空間可自由地再定位。分區(qū)的大小在引導(dǎo)時間是固定的,并且不受通用系統(tǒng)軟件的控制。在這個實(shí)施例中,只有預(yù)裝操作系統(tǒng)固件或片上微碼能夠?qū)懭隫ARRa寄存器中。因此,寄存器VARRa完全不能由軟件寫入(在其由處理器微碼寫入的情況下),或者可在復(fù)位后只寫一次(如果由固件寫入的話)。
在一個實(shí)施例中,只能從安全核心空間進(jìn)入安全小應(yīng)用程序空間中。在這個實(shí)施例中,從缺省安全空間轉(zhuǎn)移到安全小應(yīng)用程序空間中是非法的,但是對從安全核心空間到安全小應(yīng)用程序空間中的入口點(diǎn)卻無限制。在這個實(shí)施例中,從具有缺省安全特權(quán)的地址空間調(diào)用安全小應(yīng)用程序空間中的函數(shù)需要到安全核心空間中的固定入口點(diǎn)的控制轉(zhuǎn)移,并且需要用于請求當(dāng)前安全小應(yīng)用程序空間內(nèi)的函數(shù)的適當(dāng)“憑證”。安全小應(yīng)用程序地址空間可通過任何控制轉(zhuǎn)移機(jī)制退到當(dāng)前安全特權(quán)級別為3的空間。然而,如果小應(yīng)用程序想調(diào)用具有缺省安全性的空間內(nèi)的函數(shù),則它通過到其安全核心空間的函數(shù)調(diào)用來實(shí)現(xiàn)此目的。
在一個實(shí)施例中,安全小應(yīng)用程序空間和安全核心空間之間的轉(zhuǎn)移與具有缺省安全性的地址空間和安全核心空間之間的轉(zhuǎn)移相似,只是小應(yīng)用程序被允許調(diào)用其它的安全核函數(shù)。在這個實(shí)施例中,安全小應(yīng)用程序空間可采用任何控制轉(zhuǎn)移機(jī)制來控制安全小應(yīng)用程序空間內(nèi)的轉(zhuǎn)移,但所有中斷會導(dǎo)致從安全小應(yīng)用程序空間中離開。只有安全核心支持安全小應(yīng)用程序??臻g的管理以及安全和非安全應(yīng)用??臻g之間的轉(zhuǎn)移時,安全小應(yīng)用程序空間才可使用調(diào)用/返回機(jī)制。在安全核心內(nèi)對這種能力的支持是可選的。
安全物理存儲器(RAM和非易失性)分區(qū)在一個實(shí)施例中,安全擴(kuò)展在物理存儲器中定義一個“安全”分區(qū)。如果處理器只實(shí)現(xiàn)安全核心特權(quán)級別,那么安全物理空間的大小等于或大于安全核心空間的大小。如果處理器支持安全核心和小應(yīng)用程序特權(quán)級別,那么物理分區(qū)的大小可等于或大于安全核心和小應(yīng)用程序空間之和。安全物理存儲器分區(qū)可由物理地址基址寄存器(PABR)和物理地址范圍寄存器(PARR)來定義。在一個實(shí)施例中,安全物理存儲器分區(qū)的基址和范圍在引導(dǎo)時間都是固定的,因此不受通用系統(tǒng)軟件的控制。只有預(yù)裝操作系統(tǒng)固件可寫入PABR或PARR寄存器中。因此這些寄存器只能在復(fù)位后寫入一次。
可采用物理地址分區(qū)在虛擬地址機(jī)制啟用(如處理器在受保護(hù)模式下執(zhí)行)時為安全虛擬地址分區(qū)提供物理存儲器。當(dāng)虛擬地址機(jī)制禁用(如處理器處于實(shí)模式)時,處理器硬件可能不允許任何對安全物理存儲器分區(qū)的訪問,并且在實(shí)模式中任何對安全物理存儲器分區(qū)的訪問會導(dǎo)致非法的操作陷阱。
在一個實(shí)施例中,安全物理存儲器分區(qū)可作為處理器芯片、即同一封裝中的單獨(dú)芯片中的物理存儲器或者作為外部系統(tǒng)存儲器的一部分而設(shè)置。在安全物理存儲器分區(qū)作為外部系統(tǒng)存儲器的一部分來實(shí)現(xiàn)的情況下,如果存儲器控制器也實(shí)現(xiàn)一對與PABR和PARR相似的寄存器,并且保證此地址空間不會被DMA裝置訪問,這是有利的。預(yù)裝操作系統(tǒng)BIOS可驗證芯片組中適當(dāng)保護(hù)機(jī)制的存在。安全物理存儲器的一部分可與非易失性存儲器相對應(yīng)。用于NV物理存儲器分區(qū)的基址可與PABR相同。還設(shè)置了額外的范圍寄存器、即NV存儲器范圍寄存器或NMRR,定義了安全NV存儲器分區(qū)的大小且只能由SPL 0代碼寫入。安全NV存儲器空間可屬于同一封裝中的單獨(dú)芯片,或者是外部部件的一部分。在一個實(shí)施例中,只有請求是安全核心空間內(nèi)運(yùn)行的代碼發(fā)起的,此NV存儲器才可被訪問。
在一個實(shí)施例中,在安全地址空間內(nèi)存在四個體系結(jié)構(gòu)分區(qū)1)安全小應(yīng)用程序空間,2)與小應(yīng)用程序地址空間相關(guān)的用于執(zhí)行小應(yīng)用程序所請求的安全核函數(shù)的安全物理存儲器,3)用于核心代碼和數(shù)據(jù)的安全物理存儲器,以及4)安全NV存儲器。用于小應(yīng)用程序空間的安全物理存儲器和與小應(yīng)用程序執(zhí)行相關(guān)的一部分安全核心空間可以是基于每次處理的資源。安全核心空間可實(shí)現(xiàn)函數(shù)以保存安全小應(yīng)用程序物理地址空間的內(nèi)容的加密版本,以及為從安全小應(yīng)用程序代碼中調(diào)用的安全核函數(shù)而保留的一部分安全核心空間。安全核心地址空間還可實(shí)現(xiàn)函數(shù)以恢復(fù)安全小應(yīng)用程序物理存儲器和與小應(yīng)用程序空間相關(guān)的一部分安全核心空間。這些函數(shù)實(shí)現(xiàn)安全小應(yīng)用程序物理存儲器和與幾次處理之間的小應(yīng)用程序空間相關(guān)的核心內(nèi)存的“虛擬化”。通過保持與安全NV存儲器中的交換狀態(tài)相關(guān)的散列值,以及與這個保存狀態(tài)的示例相對應(yīng)的“獨(dú)特標(biāo)記”,可以提供換出狀態(tài)的完整性。
在一個實(shí)施例中,可提供足夠的安全核心物理存儲器來實(shí)現(xiàn)同時執(zhí)行幾個核函數(shù),不需要允許在執(zhí)行中間換出由安全驅(qū)動器所啟動的核函數(shù)。在另一實(shí)施例中,一旦為執(zhí)行安全函數(shù)分配的安全核心空間正在使用,那么對核心安全函數(shù)的任何其它請求均被阻止,直到先前執(zhí)行的安全函數(shù)完成為止。
處理器密鑰在一個實(shí)施例中,處理器除獨(dú)特ID之外還具有秘密/公開密鑰對。密鑰對可以是RSA密鑰對、DSS密鑰對或者一些其它密鑰對,其中RSA密鑰對最有利。秘密密鑰可“燒寫”在處理器中,并只能與特定的核心安全函數(shù)一起使用。這些安全函數(shù)只能在特權(quán)級別cp1.0(因此在核心安全空間內(nèi))執(zhí)行。公開密鑰也可設(shè)置在處理器中并帶有相關(guān)的認(rèn)證。片上NV存儲器可設(shè)置用于整個秘密和公開密鑰。這足以為構(gòu)成公開和秘密密鑰的足量分量提供存儲空間,使得處理器在上電時能夠采用片上微碼或核心代碼來計算整個密鑰而不會泄露秘密密鑰。與密鑰的帶符號值相對應(yīng)的一部分公開密鑰認(rèn)證也應(yīng)設(shè)置在片上NV存儲器中。在一個實(shí)施例中,用于1024位秘密密鑰的RSA密鑰對需要處理器上隱藏NV存儲器中的1344位512位用于P分量,512位用于Q分量,320位用于公開密鑰認(rèn)證(假定認(rèn)證中的簽名為DSS簽名)。
除秘密和公開密鑰之外,處理器還可具有片上NV單元中的DES密鑰的56位(或者應(yīng)具有對三重DES的支持)。此密鑰還可為處理器保密,并且只用于執(zhí)行DES函數(shù)以對外部安全物理存儲器進(jìn)行存儲/讀出。在一個實(shí)施例中,采用平臺指定DES密鑰來代替處理器指定DES密鑰。
安全特權(quán)級別和處理器操作模式的交互作用在一個實(shí)施例中,缺省處理器執(zhí)行和當(dāng)前安全特權(quán)級別之間存在最小的交互作用。在另一實(shí)施例中,當(dāng)虛擬翻譯機(jī)制關(guān)閉(即處理器處于實(shí)模式)時,CSPL強(qiáng)制為3(即缺省模式),訪問安全物理地址分區(qū)是非法的。此安全機(jī)制可對實(shí)模式或虛擬模式禁用。在這個實(shí)施例中,當(dāng)虛擬翻譯機(jī)制起作用(即處理器處于受保護(hù)模式)時,任何對安全虛擬地址分區(qū)的訪問的TLB漏失均直接由處理器采用新的翻譯算法來處理。TLB漏失可能不會導(dǎo)致任何與TLB相關(guān)的錯誤。
在一個實(shí)施例中,用于安全地址空間的虛擬-物理映射的頁轉(zhuǎn)換入口格式這樣定義,使得在安全地址空間內(nèi),訪問權(quán)限只由CSPL控制。當(dāng)執(zhí)行來自任一安全虛擬分區(qū)的代碼時,性能監(jiān)測能力無效。在存在著由中斷或外部中斷引起的安全核心或小應(yīng)用程序空間的轉(zhuǎn)出的情況下,可將適當(dāng)?shù)募拇嫫鞅4嬖诎踩诵目臻g內(nèi)的預(yù)定義塊中。在存在著用于將臨時值保存在寄存器中的外部系統(tǒng)存儲器的情況下,在將安全地址空間內(nèi)的數(shù)據(jù)寫入外部存儲器之前,處理器可采用平臺指定的“覆蓋密鑰”通過片上DES單元來自動對這些值加密。在將這些寄存器保存在安全物理存儲器中后,相應(yīng)處理的寄存器值可變成一些合法但無意義的值。例如,大多數(shù)數(shù)據(jù)/地址寄存器可變成全“零”,但EIP可變成一些固定的合法值。
轉(zhuǎn)移出安全地址空間可由核心安全虛擬地址分區(qū)內(nèi)的片上微碼或中斷機(jī)制來處理。在外部存儲器用于安全物理地址分區(qū)的情況下,一些實(shí)現(xiàn)可支持采用DES并用平臺的“覆蓋密鑰”來從安全虛擬地址分區(qū)中獲得指令流的加密版本。
在一個實(shí)施例中,可以定義新的安全轉(zhuǎn)移(TSR)。根據(jù)此實(shí)施例,任何將程序控制從其它空間轉(zhuǎn)到安全核心空間內(nèi)的控制轉(zhuǎn)移機(jī)制提供在此寄存器中的調(diào)用者的CPL和CSPL。在安全核心空間中的入口點(diǎn)的代碼可檢查這些位和所請求的服務(wù),從而確定是否允許所請求的服務(wù)。例如,幾項安全服務(wù)只能由CPL為0的代碼(即安全驅(qū)動器)來請求。在一個實(shí)施例中,TSR寄存器只能由硬件或安全核心代碼(CSPL為0)來更新。
在一個實(shí)施例中,存在著安全核心空間的固定入口點(diǎn)。在此實(shí)施例中,到任何其它偏移地址的轉(zhuǎn)移都是非法的。寄存器之一可指定將在安全或應(yīng)用地址空間內(nèi)執(zhí)行的函數(shù)號。一些函數(shù)可能需要額外的參數(shù)如輸入操作數(shù)、將用于解密目標(biāo)代碼/數(shù)據(jù)的密鑰等。在一個實(shí)施例中,不允許從具有缺省安全性(CSPL為3)的地址空間到安全小應(yīng)用程序空間的控制轉(zhuǎn)移。在另一實(shí)施例中,預(yù)定義用于安全虛擬地址空間的高速緩存控制位,選擇安全物理存儲器空間的“反寫”屬性。
安全指令可提供安全指令來實(shí)現(xiàn)本發(fā)明的函數(shù)。這些指令可分類成支持安全函數(shù)所需的指令,或者用于提高安全函數(shù)或不同特權(quán)級別之間轉(zhuǎn)移的性能的指令。在一個實(shí)施例中,最小本機(jī)安全函數(shù)需要此實(shí)現(xiàn)能支持“邏輯分析器”威脅級的核心安全特權(quán)級別。可用于支持此函數(shù)級別的指令為(1)在cp1.0特權(quán)級別下讀取處理器秘密密鑰的指令,(2)在cp1.0特權(quán)級別下寫入平臺“覆蓋”密鑰和另一模型指定寄存器中的指令,(3)在任何CPL或CSPL下讀取處理器的公開密鑰及其認(rèn)證的指令,以及(4)在任何CPL或CSPL下讀取RNG的指令。
還可定義其它指令來便于實(shí)現(xiàn),并加速帶有不同安全特權(quán)的地址空間之間的轉(zhuǎn)移。這些可包括轉(zhuǎn)移“提示”指令,它指明即將到來的控制轉(zhuǎn)移指令實(shí)際上包含當(dāng)前安全特權(quán)級別的改變。此指令可以如下指令來實(shí)現(xiàn)將控制轉(zhuǎn)移到安全小應(yīng)用程序空間中的代碼的指令、將控制轉(zhuǎn)移到安全核心空間的指令、和/或?qū)⒖刂妻D(zhuǎn)移到缺省安全特權(quán)級別的指令??刹捎玫牧硪恢噶钍怯糜诖鎯Φ桨踩玁V存儲器中的指令。通過使在設(shè)計的前端而不是后端就知道當(dāng)前存儲指向NV存儲器,可幫助實(shí)現(xiàn)此指令。
軟件模式存在著可能的實(shí)現(xiàn)安全核心空間的大量選項。在一個實(shí)施例中,安全核心只能實(shí)現(xiàn)一個安全函數(shù)。在另一實(shí)施例中,安全核心可通過簡單地以宏碼實(shí)現(xiàn)其它函數(shù)來支持其它函數(shù)。在另一實(shí)施例中,安全核心可實(shí)現(xiàn)允許安全驅(qū)動器一次只調(diào)用一個函數(shù)的策略。在這種情況下,先前的安全函數(shù)應(yīng)當(dāng)在任何其它安全函數(shù)執(zhí)行啟動之前完成。在另一實(shí)施例中,安全核心只可支持其資源內(nèi)的一個活函數(shù),但允許由安全驅(qū)動器進(jìn)行安全核心空間的虛擬化。這種方法會導(dǎo)致顯著的開銷,用于加密部分執(zhí)行的函數(shù)的狀態(tài)并執(zhí)行新加載函數(shù)的完整性檢查。另一實(shí)施例在安全核心空間中提供了足夠的空間,允許多個安全函數(shù)同時起作用,并且不支持此空間的“虛擬化”。
在一個實(shí)施例中,當(dāng)CSPL為3的應(yīng)用想調(diào)用核心安全函數(shù)時,應(yīng)當(dāng)通過在CPL為0和CSPL為3時運(yùn)行的安全驅(qū)動器作出請求。出于性能原因,該體系結(jié)構(gòu)可允許應(yīng)用調(diào)用在其相關(guān)安全小應(yīng)用程序中的函數(shù),并且不會有通過安全驅(qū)動器調(diào)用的開銷。CSPL為3的應(yīng)用可通過安全核心空間來作出這種請求,只要按照對進(jìn)入安全核心空間的入口點(diǎn)的限制。在固定入口點(diǎn)的安全核心代碼可負(fù)責(zé)驗證調(diào)用者是否具有請求指定服務(wù)的適當(dāng)特權(quán)級別(PL和SPL)。為此,可以定義新的寄存器、即轉(zhuǎn)移狀態(tài)寄存器(TSR),以便提供到安全核心和小應(yīng)用程序空間中調(diào)用者的PL和SPL。
出于性能原因,可允許安全小應(yīng)用程序通過控制轉(zhuǎn)移指令將控制轉(zhuǎn)移回應(yīng)用中。為了保持執(zhí)行的保密性,只有安全核心為安全棧提供支持,小應(yīng)用程序才應(yīng)采用調(diào)用指令來將控制轉(zhuǎn)移給應(yīng)用。在一個實(shí)施例中,不在安全核心空間上增加驗證調(diào)用者的負(fù)擔(dān),而是通過安全驅(qū)動器只允許從應(yīng)用到安全小應(yīng)用程序空間的控制請求的轉(zhuǎn)移。在一個實(shí)施例中,基礎(chǔ)結(jié)構(gòu)還允許安全小應(yīng)用程序通過直接控制轉(zhuǎn)移指令來調(diào)用核心空間中的安全函數(shù),只要按照對入口點(diǎn)的限制。安全核心空間可僅提供與當(dāng)前安全小應(yīng)用程序相關(guān)的足夠空間,以便支持每次進(jìn)行一個活安全函數(shù)調(diào)用。在一個實(shí)施例中,即使可從任何CPL和任何CSPL進(jìn)入安全核心空間,在入口點(diǎn)的安全核心代碼確保從給定的PL和SPL只能進(jìn)行允許的安全核心服務(wù)請求。在入口點(diǎn)的安全核心代碼可檢查轉(zhuǎn)移狀態(tài)寄存器(TSR)中的請求者的特權(quán)級別,以便作出決定。
寄存器可采用寄存器來管理安全分區(qū)機(jī)制。這些寄存器可包括用于安全核心虛擬地址空間、小應(yīng)用程序虛擬地址空間、物理存儲器地址空間和非易失性存儲器地址空間的基址寄存器和范圍寄存器。寄存器還可設(shè)置成用以存取各種處理器密鑰。這些寄存器可包括用于處理器秘密密鑰的寄存器、用于具有與認(rèn)證對應(yīng)的簽名的處理器公開密鑰的寄存器、以及處理器DES“覆蓋密鑰”。寄存器可以是只讀寄存器。
其它寄存器可包括轉(zhuǎn)移狀態(tài)寄存器,它提供要轉(zhuǎn)移到安全地址空間中的調(diào)用者的PL和SPL。另外,獨(dú)特標(biāo)記號寄存器可保持分配給隱藏執(zhí)行的特定示例的標(biāo)記號??刹捎弥袛喟踩貦?quán)級別寄存器來記錄安全特權(quán)級別。這些寄存器可以是讀/寫寄存器。
安全核心和小應(yīng)用程序虛擬地址空間管理在一個實(shí)施例中,安全核心和小應(yīng)用程序地址空間只在虛擬-物理翻譯機(jī)制啟用時才定義。安全能力可以不依靠操作系統(tǒng)的存儲器管理程序來提供安全虛擬地址分區(qū)到安全物理存儲器的映射??稍诎踩摂M地址分區(qū)和安全物理存儲器分區(qū)之間定義固定的映射??梢圆粚Π踩摂M地址空間的訪問和修改故障作出規(guī)定,高速緩存控制位可設(shè)置為“反寫”模式。在一個實(shí)施例中,無需操作系統(tǒng)服務(wù)來建立安全虛擬地址空間和安全物理存儲器地址空間之間的鏈接。在另一實(shí)施例中,不存在關(guān)于這些虛擬地址分區(qū)的缺頁故障的概念。
安全虛擬空間可采用固定線性映射來映射到安全物理空間。頁轉(zhuǎn)換可以是PABR和VARRk寄存器的功能。可以預(yù)定義訪問權(quán)限。這些訪問權(quán)限可允許用于所有CPL的執(zhí)行/讀/寫權(quán)限,因此使虛擬安全分區(qū)能夠駐留在任何CPL。在此實(shí)施例中,一旦在入口點(diǎn)的安全核心代碼允許到安全地址空間的轉(zhuǎn)移,則在安全分區(qū)內(nèi)對于給定虛擬地址的訪問許可只由CSPL控制。
在一個實(shí)施例中,安全虛擬地址空間可自由地再定位。在此實(shí)施例中,安全虛擬分區(qū)無論在何時再定位,此再定位的安全虛擬分區(qū)的所有先前的有效映射均為無效。這樣,無論何時作出到新的安全虛擬分區(qū)的轉(zhuǎn)移,都存在為此新分區(qū)建立的新的有效TLB入口。在另一實(shí)施例中,增強(qiáng)用于具有缺省安全性的虛擬地址空間的TLB機(jī)制,以便確保用于這些PTE的物理存儲器頁面地址不會與安全物理存儲器空間重疊。潛在的重疊可能會導(dǎo)致非法操作故障。
中斷在一個實(shí)施例中,用于核心和小應(yīng)用程序地址的隱藏執(zhí)行可由軟件和/或通過外部中斷來中斷。體系結(jié)構(gòu)機(jī)制可設(shè)置成允許保存處理的上下文,此處理可處于核心或小應(yīng)用程序安全特權(quán)級別下的隱藏執(zhí)行的中間。即使在安全特權(quán)級別之一中執(zhí)行時處理由于單步執(zhí)行而中斷,硬件和軟件機(jī)制也可確保執(zhí)行的保密性和完整性一直保持到威脅模型。用于處理中斷的機(jī)制依賴于處理器體系結(jié)構(gòu)的特征。在一個實(shí)施例中,如果在安全特權(quán)級別中執(zhí)行的代碼被中斷,則在現(xiàn)有中斷微碼中添加例程以解決安全問題。在另一實(shí)施例中,定義了新的安全中斷向量表來處理這些中斷。在此實(shí)施例中,當(dāng)程序在安全特權(quán)級別中執(zhí)行時任何中斷將被重定向到安全核心地址空間中的處理程序。此安全中斷處理程序可執(zhí)行關(guān)鍵函數(shù)以確保中斷代碼的保密性和完整性,然后轉(zhuǎn)移回到具有所有正確相關(guān)的中斷狀態(tài)信息的缺省中斷向量。
安全級別說明不同的實(shí)現(xiàn)可提供對不同威脅級別的保護(hù)。例如,一些實(shí)現(xiàn)只提供針對軟件、智能IO和邏輯分析器(僅觀察模式)攻擊的保護(hù),而其它實(shí)現(xiàn)可提供針對包括來自離子束攻擊的威脅的所有威脅模型的保護(hù)。針對威脅類別保護(hù)的能力定義了安全級別。所有安全級別應(yīng)當(dāng)提供針對簡單硬件攻擊的保護(hù),這些硬件攻擊包括將處理器拔出插槽并將其放到完整性受損的平臺上,以便繞過對建立安全物理空間的高完整性BIOS的信賴。在一種實(shí)現(xiàn)中,通過采用處理器微碼或片上BIOS驗證固件代碼來驗證BIOS,處理器確保平臺的完整性。在這種情況下,BIOS代碼可確認(rèn)在芯片組中是否存在任何所需的安全特征。
在安全級別1(SL-1)模型的一個實(shí)施例中,采用了用于映射安全虛擬地址分區(qū)的外部系統(tǒng)存儲器和系統(tǒng)NV(閃速)存儲器的受保護(hù)分區(qū)。在一個實(shí)施例中,采用公共平臺密鑰來對隱藏執(zhí)行的代碼進(jìn)行加密,并將其以加密形式保存在受保護(hù)的物理存儲器中。關(guān)于對裝置的秘密密鑰操作的一些函數(shù),可采取預(yù)防措施以確保這些函數(shù)不具有任何依賴于裝置的秘密密鑰的各位的轉(zhuǎn)移。這可通過采用條件轉(zhuǎn)移指令或預(yù)測性能來實(shí)現(xiàn)。在一個實(shí)施例中,所有中間計算數(shù)據(jù)以明碼形式只保存在處理器寄存器和片上高速緩存中。在一個實(shí)施例中,無論安全地址范圍中的數(shù)據(jù)在何時需要被存儲在外部受保護(hù)的物理存儲器分區(qū)中,輸出的數(shù)據(jù)均采用總線接口單元中的DES單元來加密??赡艽嬖趩为?dú)的DES單元或者可共享公共DES單元,用于對來自安全物理地址空間的輸入數(shù)據(jù)和代碼進(jìn)行解密。如果DES單元采用至少一個56位DES密鑰,這是有利的。一些實(shí)現(xiàn)可采用更大的密鑰(在采用三重DES的情況下)。
對所有隱藏執(zhí)行來說,安全級別1可解決直到邏輯分析器(觀察模式)的安全威脅。當(dāng)安全物理空間中的代碼是加密形式時,通過主動修改外部總線信號來獲得對處理器/平臺秘密的訪問是非常困難的。然而,此安全級別不會提供對這種攻擊的任何擔(dān)保。在另一實(shí)施例中,采用抗竄改軟件來進(jìn)行“已知文本”攻擊均勻硬件。安全級別1模型還可提供一些保護(hù),防止采用實(shí)現(xiàn)檢測模式和調(diào)試掛鉤來獲得對實(shí)現(xiàn)指定狀態(tài)的訪問,以便對專用數(shù)據(jù)進(jìn)行解密。另外,SL1模型可采用一些有限量的保護(hù),防止用電壓和頻率竄改技術(shù)來使處理器的動作不正確以獲得對專用數(shù)據(jù)的訪問。
在SL-1模型中,物理存儲器的安全分區(qū)的保護(hù)可通過虛擬-物理轉(zhuǎn)換機(jī)制、處理器中的DES加密并經(jīng)存儲控制器中的物理存儲器類型寄存器來提供。在SL-1模型中,可通過只在處理器存儲裝置內(nèi)操作秘密數(shù)據(jù)來保證秘密數(shù)據(jù)的保密性。無論安全物理存儲器地址范圍內(nèi)的數(shù)據(jù)何時寫出到總線上,它都采用BIU中的DES單元來加密。對于一些系統(tǒng)來說,希望可用于從安全物理存儲器中加密/解密數(shù)據(jù)/代碼的DES單元采用平臺指定的密鑰而不是處理器指定的密鑰。
由于在SL-1模型中,安全物理地址空間中的所有外部代碼和數(shù)據(jù)可以用平臺密鑰來加密,因此無法通過只用邏輯分析器察看外部總線信號來對代碼或數(shù)據(jù)進(jìn)行解密。處理器/平臺的秘密密鑰可被保護(hù)在更高級別的威脅模型。由于外部代碼被加密,因此很難知道函數(shù)中的哪些指令在訪問秘密密鑰,或者如何修改輸入指令比特流以使處理器結(jié)束寫出明碼存儲器中的專用數(shù)據(jù)。SL-1模型還可提供適度的保護(hù),以防止采用處理器實(shí)現(xiàn)指定調(diào)試和機(jī)器檢查機(jī)制以及電壓和頻率竄改技術(shù)來獲得對處理器/平臺秘密的訪問。
安全級別2(SL-2)模型的實(shí)施例將安全級別提升到SL-1之上,這是通過為片上物理存儲器提供至少一部分安全物理存儲器分區(qū)來實(shí)現(xiàn)的。在這種情況下,所有安全NV存儲器分區(qū)仍駐留在平臺中。一些易失性安全物理存儲器也可駐留在外部系統(tǒng)存儲器中。對作為外部系統(tǒng)存儲器的一部分的一部分安全易失性存儲器的安全保護(hù)與SL-1級別相似。在SL-2安全模型中,可以從外部存儲器中以加密形式下載用于隱藏執(zhí)行的代碼。然后對代碼解密,并采用處理器片上存儲器驗證完整性。然后在處理器的片上存儲器之外執(zhí)行解密的代碼。所有專用數(shù)據(jù)也可以明碼形式保存在片上存儲器中。
根據(jù)此模型的一個實(shí)施例,片上存儲器是由安全驅(qū)動器管理的共享處理器資源。一部分片上存儲器可由不同處理共享。片上存儲器的此共享部分的虛擬化可由驅(qū)動器來完成。存在驅(qū)動器可用以提供加密和保存這部分片上存儲器的能力的安全核函數(shù)。還存在一種可用以解密和恢復(fù)片上物理存儲器先前保存的分區(qū)的安全核函數(shù)。專用數(shù)據(jù)到外部NV存儲器的任何存儲還可用相同DES來加密。SL-2模型可提供更高級別的保護(hù),防止采用處理器實(shí)現(xiàn)指定的探測模式或調(diào)試掛鉤以及通過電壓和頻率竄改的攻擊。
在SL-2模型中,通過虛擬-物理轉(zhuǎn)換機(jī)制、片上物理存儲器并通過采用對作為外部系統(tǒng)存儲器的一部分的那部分安全物理空間的DES加密,可提供對物理易失性存儲器的安全分區(qū)的保護(hù)。與SL-1模型相比,SL-2模型可提升裝置/平臺秘密密鑰和處理器隱藏執(zhí)行的安全級別。如果外部物理存儲器中的所有關(guān)鍵代碼和數(shù)據(jù)以加密形式保存,并且只在片上物理存儲器中以明碼形式保存,那么攻擊者無法通過只用邏輯分析器察看外部總線信號來對代碼或數(shù)據(jù)進(jìn)行解密。而且,在對片上存儲器中的下載檢查完整性時,隱藏執(zhí)行的完整性不會由于采用邏輯分析器來驅(qū)動外部總線信號而損壞。SL-2模型還可提供更多的保護(hù),以防止使用實(shí)現(xiàn)探測和調(diào)試掛鉤來獲得對實(shí)現(xiàn)指定狀態(tài)的訪問以對專用數(shù)據(jù)解密。SL-2模型還可采用另外的保護(hù),防止利用電壓和頻率竄改技術(shù)來使處理器的操作不正確以獲得對專用數(shù)據(jù)的訪問。
安全級別3(SL-3)模型的實(shí)施例將安全級別提升到SL-2之上,這是通過設(shè)置片上安全NV存儲器或在與處理器芯片相同的封裝內(nèi)引入安全NV存儲器分區(qū)來實(shí)現(xiàn)的。在一個實(shí)施例中,一些易失性和非易失性存儲器仍可作為系統(tǒng)存儲器和系統(tǒng)NV存儲器的一部分而保留。另外,此安全級別可提供更高級別的保護(hù),以防止采用實(shí)現(xiàn)調(diào)試掛鉤、機(jī)器檢查機(jī)制、各種實(shí)現(xiàn)竄改方案以及采用輻射攻擊。一些實(shí)現(xiàn)可提供蓋在處理器和NV存儲器硅上的保護(hù)芯片,以及處理器和安全NV存儲器芯片之間的互連上的保護(hù)芯片,以便防止離子束攻擊。對于易失性和非易失性存儲器的分區(qū)處于系統(tǒng)資源中的情況,這些實(shí)現(xiàn)提供了至少仍到SL-1級別的安全性。
在SL-3模型的實(shí)施例中,物理易失性安全分區(qū)和NV存儲器的保護(hù)通過虛擬-物理轉(zhuǎn)換機(jī)制和片上物理存儲器的組合來提供。此模型通過只在處理器存儲器內(nèi)操作秘密數(shù)據(jù)而確保了秘密數(shù)據(jù)的保密性。與SL-2模型相比,此模型可提升裝置/平臺秘密密鑰和處理器隱藏執(zhí)行的安全級別。在SL-3模型中,隱藏執(zhí)行中涉及的所有存儲器可設(shè)置在一個封裝內(nèi)。這就防止了在計算引擎和用于隱藏執(zhí)行的存儲器之間的任何內(nèi)部信號的暴露。另外,在此模型中,片上(或相同封裝)NV存儲器還可允許針對任何硬件重放攻擊的保護(hù)。SL-3模型可提供針對通過實(shí)現(xiàn)指定的探測和調(diào)試掛鉤而泄露專用數(shù)據(jù)的保護(hù)。該模型還可提供針對各種竄改方法的保護(hù),這些方法可導(dǎo)致處理器產(chǎn)生故障并且可能以明碼形式將專用數(shù)據(jù)寫出到外部總線上。一些實(shí)現(xiàn)還可提供覆蓋在處理器和秘密存儲區(qū)域上的保護(hù)性芯片,使得無法采用離子束攻擊來獲得對專用數(shù)據(jù)的訪問。
安全核心地址空間內(nèi)的宏函數(shù)可在安全核心地址空間內(nèi)實(shí)現(xiàn)的一些宏函數(shù)為驗證函數(shù)、密鑰管理函數(shù)、嵌入驗證核心、符號函數(shù)、檢驗函數(shù)、載入小應(yīng)用程序函數(shù)、加密保存小應(yīng)用程序、加密恢復(fù)小應(yīng)用程序以及小應(yīng)用程序空間內(nèi)函數(shù)的調(diào)用。
結(jié)論本發(fā)明的實(shí)施例涉及采用安全存儲器分區(qū)來實(shí)現(xiàn)安全執(zhí)行的方法和裝置。本發(fā)明提供了相對于具有特殊安全協(xié)處理器以保護(hù)主處理器的代碼和數(shù)據(jù)的現(xiàn)有系統(tǒng)的若干優(yōu)點(diǎn)。本發(fā)明由于無需協(xié)處理器而有效地降低了成本。另外,本發(fā)明是一種更高性能的解決方案,因為安全代碼可在更高性能的通用處理器中執(zhí)行。此外,本發(fā)明是一種更有效的解決方案,因為沒有協(xié)處理器數(shù)據(jù)傳送的開銷。
在這里具體地說明和/或描述了本發(fā)明的幾個實(shí)施例。然而可以理解,在不脫離本發(fā)明的精神和預(yù)期范圍的前提下,上述說明覆蓋了本發(fā)明的修改和變化并在所附權(quán)利要求的范圍內(nèi)。例如,存儲器分區(qū)可在虛擬存儲器或物理存儲器中實(shí)現(xiàn)。作為另一示例,實(shí)施例可包括符合SL-1、SL-2或SL-3安全模型的特征。
權(quán)利要求
1.一種處理器,它包括i.執(zhí)行單元;ii與所述執(zhí)行單元相連的安全分區(qū)實(shí)施邏輯;以及iii.與所述執(zhí)行單元相連的密碼邏輯。
2.如權(quán)利要求1所述的處理器,其特征在于,所述處理器還包括多個安全分區(qū)寄存器。
3.如權(quán)利要求2所述的處理器,其特征在于,所述安全分區(qū)寄存器包括分區(qū)入口點(diǎn)寄存器。
4.如權(quán)利要求3所述的處理器,其特征在于,所述處理器還包括與所述密碼邏輯相連的翻譯旁視緩沖器,所述安全分區(qū)實(shí)施邏輯連接在所述執(zhí)行單元和所述翻譯旁視緩沖器之間。
5.一種計算機(jī)系統(tǒng),它包括i.第一存儲器;以及ii.處理器,它與所述第一存儲器相連,并且包括安全分區(qū)實(shí)施邏輯,用以建立虛擬存儲單元的分區(qū)。
6.如權(quán)利要求5所述的計算機(jī)系統(tǒng),其特征在于,所述處理器還包括密碼邏輯。
7.如權(quán)利要求6所述的計算機(jī)系統(tǒng),其特征在于,所述計算機(jī)系統(tǒng)還包括非易失性存儲器,所述安全分區(qū)邏輯還在所述非易失性存儲器中建立存儲單元的安全分區(qū)。
8.如權(quán)利要求6所述的計算機(jī)系統(tǒng),其特征在于,所述非易失性存儲器存儲了驗證實(shí)施指令,所述處理器還包括引導(dǎo)安全邏輯,用以檢驗所述驗證實(shí)施指令的可靠性。
9.如權(quán)利要求6所述的計算機(jī)系統(tǒng),其特征在于,所述處理器還包括分區(qū)入口點(diǎn)寄存器,用以存儲所述第一存儲器中的分區(qū)入口點(diǎn)。
10.一種處理指令的方法,它包括i.在執(zhí)行指令之前檢查所述指令;以及ii當(dāng)所述指令是對虛擬存儲器中存儲單元的分區(qū)內(nèi)的存儲單元的未授權(quán)訪問時,決定不執(zhí)行所述指令。
11.如權(quán)利要求10所述的方法,其特征在于,所述決定不執(zhí)行所述指令的步驟還包括轉(zhuǎn)移到中斷處理器。
12.如權(quán)利要求10所述的方法,其特征在于,當(dāng)所述指令操作所述分區(qū)內(nèi)的存儲單元中的數(shù)據(jù)并且所述指令未存儲在所述分區(qū)內(nèi)時,所述指令是未授權(quán)的訪問。
13.如權(quán)利要求10所述的方法,其特征在于,當(dāng)所述指令是從所述分區(qū)外的存儲單元的轉(zhuǎn)移,所述轉(zhuǎn)移是到所述分區(qū)內(nèi)的存儲單元,并且所述轉(zhuǎn)移不是到分區(qū)入口點(diǎn)時,所述指令是未授權(quán)的訪問。
14.如權(quán)利要求13所述的方法,其特征在于,當(dāng)所述指令未存儲在所述分區(qū)入口點(diǎn)并且先前執(zhí)行的指令是緊接在所述分區(qū)開頭之前的指令時,所述指令也是未授權(quán)的訪問。
15.如權(quán)利要求14所述的方法,其特征在于,所述方法還包括i.當(dāng)所述指令從所述分區(qū)內(nèi)的存儲單元轉(zhuǎn)移到所述分區(qū)內(nèi)的另一存儲單元時,執(zhí)行所述指令;以及ii當(dāng)所述指令從所述分區(qū)外的存儲單元轉(zhuǎn)移到分區(qū)入口點(diǎn)時,執(zhí)行所述指令。
16.一種處理指令的方法,所述方法包括i.從存儲器中的安全分區(qū)將加密指令讀入處理器;ii對所讀取的指令進(jìn)行解密;以及iii.執(zhí)行所述解密的指令。
17.如權(quán)利要求16所述的方法,其特征在于,執(zhí)行所述解密的指令包括i.確定所述指令是否為從所述安全分區(qū)讀取數(shù)據(jù)的指令;以及ii如果所述指令是從所述安全分區(qū)讀取數(shù)據(jù)的指令,則從所述安全分區(qū)讀取數(shù)據(jù)并對所讀取的數(shù)據(jù)進(jìn)行解密。
18.如權(quán)利要求16所述的方法,其特征在于,執(zhí)行所述解密的指令包括i.確定所述指令是否為將數(shù)據(jù)寫入所述安全分區(qū)中的存儲單元內(nèi)的指令;以及ii如果所述指令是將數(shù)據(jù)寫入所述安全分區(qū)中的指令,則對所述數(shù)據(jù)進(jìn)行加密并將所述數(shù)據(jù)寫入所述安全分區(qū)中的所述存儲單元。
19.如權(quán)利要求17所述的方法,其特征在于,所述確定所述指令是否為從所述安全分區(qū)讀取數(shù)據(jù)的指令的步驟包括將所述數(shù)據(jù)的虛擬地址與安全分區(qū)邊界進(jìn)行比較。
全文摘要
一種能夠安全執(zhí)行的處理器。處理器包括執(zhí)行單元和保護(hù)存儲器中分區(qū)的安全分區(qū)邏輯。處理器還包括與執(zhí)行單元相連、對安全數(shù)據(jù)和代碼進(jìn)行加密和解密的密碼邏輯。
文檔編號G06F21/24GK1451117SQ01814609
公開日2003年10月22日 申請日期2001年6月7日 優(yōu)先權(quán)日2000年6月30日
發(fā)明者M·米塔爾 申請人:英特爾公司