TWI576698B - 跨電源週期維持安全處理環境 - Google Patents

跨電源週期維持安全處理環境 Download PDF

Info

Publication number
TWI576698B
TWI576698B TW104131134A TW104131134A TWI576698B TW I576698 B TWI576698 B TW I576698B TW 104131134 A TW104131134 A TW 104131134A TW 104131134 A TW104131134 A TW 104131134A TW I576698 B TWI576698 B TW I576698B
Authority
TW
Taiwan
Prior art keywords
instruction
page
processor
secure
execution
Prior art date
Application number
TW104131134A
Other languages
English (en)
Other versions
TW201633154A (zh
Inventor
法蘭西斯 麥金恩
文森 史嘉拉塔
卡洛斯 羅哲斯
伊塔 亞納堤
凡德伊斯 沙巴吉
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201633154A publication Critical patent/TW201633154A/zh
Application granted granted Critical
Publication of TWI576698B publication Critical patent/TWI576698B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

跨電源週期維持安全處理環境
本揭露關於資訊處理的領域,且更特別地,關於在資訊處理系統中之安全性的領域。
機密資訊係藉由許多資訊處理系統來儲存、傳送、以及使用。因此,已經研發技術以提供用於機密資訊的安全處理與儲存。這些技術包括用以產生與維持安全、被保護、或獨立容器、分割區、或環境於資訊處理系統內的多種方法,其中許多以一些不同的電源狀態操作。
100‧‧‧系統
110‧‧‧處理器
112‧‧‧非揮發性儲存體
114‧‧‧電性連接器
120‧‧‧系統記憶體
130‧‧‧圖形處理器
132‧‧‧顯示器
140‧‧‧週邊控制媒介
142‧‧‧裝置
150‧‧‧資訊儲存裝置
1101‧‧‧ECREATE邏輯/硬體
1102‧‧‧EADD邏輯/硬體
1103‧‧‧EEXTEND邏輯/硬體
1104‧‧‧EINIT邏輯/硬體
1105‧‧‧EENTER邏輯/硬體
1106‧‧‧EPA邏輯/硬體
1107‧‧‧EWB邏輯/硬體
1108‧‧‧EWBPS邏輯/硬體
1109‧‧‧ELDPS邏輯/硬體
1110‧‧‧ELD邏輯/硬體
200‧‧‧處理器
210‧‧‧核心
212‧‧‧儲存單元
213‧‧‧處理器保留記憶體範圍暫存器
214‧‧‧指令單元
216‧‧‧執行單元
218‧‧‧控制單元
220‧‧‧核心
222‧‧‧儲存單元
223‧‧‧處理器保留記憶體範圍暫存器
224‧‧‧指令單元
226‧‧‧執行單元
228‧‧‧控制單元
230‧‧‧非核心
232‧‧‧快取單元
234‧‧‧介面單元
240‧‧‧非揮發性儲存體
250‧‧‧處理器保留記憶體範圍暫存器
252‧‧‧唯讀PRMMR有效組態暫存器
254‧‧‧PRMMR基礎暫存器
256‧‧‧PRMMR遮罩暫存器
260‧‧‧記憶體存取控制單元
262‧‧‧記憶體加密引擎
270‧‧‧加密硬體
272‧‧‧鍵
280‧‧‧加密硬體
282‧‧‧鍵
290‧‧‧非揮發性儲存體
292‧‧‧電性連接器
300‧‧‧指定位址空間頁面快取
310‧‧‧安全指定位址空間控制結構
312‧‧‧第一測量暫存器
314‧‧‧第二測量暫存器
316‧‧‧ATTRIBUTES欄位
320‧‧‧執行緒控制結構區域
330‧‧‧代碼/資料區域
332‧‧‧代碼/資料頁面
340‧‧‧版本陣列(VA)區域
342‧‧‧版本陣列(VA)頁面
344‧‧‧版本陣列(VA)頁面
400‧‧‧方法
410‧‧‧盒子
412‧‧‧盒子
414‧‧‧盒子
418‧‧‧盒子
420‧‧‧盒子
422‧‧‧盒子
424‧‧‧盒子
426‧‧‧盒子
428‧‧‧盒子
430‧‧‧盒子
440‧‧‧盒子
500‧‧‧方法
510‧‧‧盒子
512‧‧‧盒子
514‧‧‧盒子
516‧‧‧盒子
520‧‧‧盒子
522‧‧‧盒子
524‧‧‧盒子
526‧‧‧盒子
528‧‧‧盒子
530‧‧‧盒子
532‧‧‧盒子
534‧‧‧盒子
536‧‧‧盒子
538‧‧‧盒子
540‧‧‧盒子
542‧‧‧盒子
544‧‧‧盒子
546‧‧‧盒子
548‧‧‧盒子
550‧‧‧盒子
552‧‧‧盒子
554‧‧‧盒子
556‧‧‧盒子
558‧‧‧盒子
560‧‧‧盒子
562‧‧‧盒子
564‧‧‧盒子
566‧‧‧盒子
568‧‧‧盒子
570‧‧‧盒子
572‧‧‧盒子
574‧‧‧盒子
576‧‧‧盒子
580‧‧‧盒子
584‧‧‧盒子
586‧‧‧盒子
588‧‧‧盒子
590‧‧‧盒子
592‧‧‧盒子
594‧‧‧盒子
596‧‧‧盒子
598‧‧‧盒子
在附圖中,本發明藉由實例的方式而非限制來繪示。
圖1繪示一種系統,該系統包括根據本發明實施例之用於跨電源週期維持安全處理環境的支持。
圖2繪示一種處理器,該處理器包括根據本發明實施例之用於跨電源週期維持安全處理環境的支持。
圖3繪示根據本發明實施例的指定位址空間頁面快 取。
圖4繪示根據本發明實施例之用於建立欲被跨電源週期維持之安全處理環境的方法。
圖5繪示根據本發明實施例之用於跨電源週期維持安全處理環境的方法。
【發明內容及實施方式】
本文說明跨電源週期維持安全處理環境的本發明實施例。在此說明中,多個具體細節,譬如組件與系統組態,可被陳述,以便提供對本發明的更完整理解。不過,所屬技術領域中具有通常知識者將理解,本發明可在沒有此等具體細節之下實行。此外,一些眾所皆知的結構、電路、以及其他特徵不會被詳細顯示,以避免不必要地模糊本發明。
在下列說明中,提及「一項實施例」、「一實施例」、「實例實施例」、「多種實施例」等等,意指如此說明之本發明的該(等)實施例可包括特定特徵、結構、或特色,但超過一項實施例可且並非各實施例一定包括該等特定特徵、結構、或特色。進一步,一些實施例可具有說明用於其他實施例之該等特徵的其中一些、全部、或沒有。
正如在本說明與申請專利範圍中所使用的且除非另外被指定,用以說明一元件之次序形容詞「第一」、「第二」、「第三」等等的使用僅僅意指一元件的特定實例或 相同元件的不同實例正被提及且不打算意味著如此說明的該等元件必須呈特定次序、時間性、空間性、按等級、或呈任何其他方式。
同樣地,術語「位元」、「旗標」、「欄位」、「入口」、「指示符」等等可被使用來說明在暫存器、平台、資料庫、或其他資料結構中任何類型的儲存位置,不管以硬體或軟體實施,但不意味著限制本發明的實施例於任何特定類型的儲存位置或在任何特定儲存位置內的位元數目或其他元件。術語「清除」可被使用來意指儲存或以其他方式導致零的邏輯值被儲存在儲存位置中,且術語「設定」可被使用來指示儲存或以其他方式導致一個、全部、或一些其他具體指定值的邏輯值被儲存在儲存位置中;不過,這些術語不意味著限制本發明的實施例於任何特定的邏輯身分,因為在本發明的實施例內,可使用任何邏輯身分。
同樣地,正如在本發明實施例的說明中所使用的,在諸術語之間的「/」字元可意味著一實施例可包括或使用、以、及/或根據第一術語及/或第二術語(及/或任何其他額外術語)來實施。
正如在背景段中所說明的,用以產生與維持安全、被保護、或獨立容器、分割區、或環境於資訊處理系統內的多種方法已經被研發。一種此類方法涉及在共同申請審查中之美國專利申請案(標題「提供安全應用執行的方法與設備(Method and Apparatus to Provide Secure Application Execution)」,2012年6月19日提出申請,序號13/527,547)所說明的安全指定位址空間,其提供有關安全、被保護、或獨立容器、分割區、或環境之至少一項實施例的資訊。不過,此參考不打算以任何方式限制本發明實施例的範圍,且可使用其他實施例同時仍保持在本發明的精神與範圍內。因此,在本發明之任何實施例中所使用之任何安全、被保護、或獨立容器、分割區、或環境的任何實例在本文中被稱為安全指定位址空間或指定位址空間。
安全指定位址空間的安全性特性可藉由確保只有指定位址空間記憶體頁面或其他支持資料結構的單一複製存在來維持,且為了防止重播攻擊,那單一複製無法經得起備用、睡眠、懸置、或其他電力管理狀態。不過,在從電力管理狀態回復或返回的期間內重建指定位址空間可需要減少回應性與性能且增加電力消耗的額外過熱。因此,本發明的實施例可提供用於跨電源週期維持安全處理環境。
圖1繪示系統100,資訊處理系統,在該系統中,可根據本發明的實施例來跨電源週期維持安全處理環境。系統100可代表任何類型的資訊處理系統,譬如伺服器、桌上型電腦、可攜式電腦、機上盒、手持裝置(譬如平板或智慧型手機)、或嵌入式控制系統。系統100包括處理器110、系統記憶體120、圖形處理器130、週邊控制媒介140、以及資訊儲存裝置150。實施本發明的系統可包括這些組件與任何其他組件或其他元件(譬如週邊及輸入/ 輸出裝置)之各者的任何數目。在本或任何系統實施例中之該等組件或其他元件的任一者或全部,可經由任何數目的匯流排、點對點、或其他有線或無線介面或連接,彼此連接、耦合、或以其他方式通訊,除非另外被指定。系統100的任何組件或其他部份,不管在圖1顯示或不在圖1顯示,均可被整合或以其他方式被包括在單一晶片(晶片上系統或SOC)、晶粒、基板、或封裝上或中。
系統記憶體120係為動態隨機存取記憶體或可由處理器110所讀取的任何其他類型的媒體。圖形處理器130可包括任何處理器或用於處理用於顯示器132之圖形資料的其他組件。週邊控制媒介140可代表任何組件,譬如晶片組組件,包括或透過此,週邊、輸入/輸出(I/O)、或其他組件或裝置,譬如裝置142(例如,觸控式螢幕、鍵盤、麥克風、揚聲器、其他音頻裝置、照相機、攝影機或其他媒體裝置、網路配接器、動作或其他感測器、用於全球定位或其他資訊的接收器等等)及/或資訊儲存裝置150,其係可連接或耦合到處理器110。資訊儲存裝置150可包括任何類型的持續或非揮發性記憶體或儲存體,譬如快閃記憶體及/或固態、磁性、或光碟驅動器。
處理器110可代表被整合在單一基板上或被封裝在單一封裝內的一個或多個處理器或處理器核心,其中各者可包括呈任何組合的多數執行緒及/或多數執行核心。以或呈處理器110所代表的各處理器可以是任何類型的處理器,其包括通用微處理器,譬如在Intel®Core®處理器家 族中的處理器或來自Intel®公司或另一個公司的其他處理器家族,專用處理器或微控制器,或在其中可實施本發明之實施例之資訊處理系統中的任何其他裝置或組件。
處理器110可根據包括下列指令的指令集架構來操作,各者如下列進一步說明:第一指令,用以產生安全指定位址空間;第二指令,用以添加內容到指定位址空間;第三指令,用以測量指定位址空間的內容;第四指令,用以初始化指定位址空間;第五指令,用以輸入指定位址空間;第六指令,用以配置版本陣列頁面;第七指令,用以從指定位址空間頁面快取逐出一頁面;第八指令,用以在將電力移除之前從指定位址空間頁面快取逐出最後版本陣列入口;第九指令,用以在電力恢復之後將第一先前逐出的版本陣列入口往回載入到一指令位址空間頁面快取內;以及第十指令,用以將先前逐出的頁面往回載入到指令位址空間頁面快取內。雖然本發明的實施例可以具有任何指令集架構的處理器來施行,且不限於來自Intel®公司之處理器家族的架構,但是該等指令係為到現存架構之一組軟體保護延伸的一部份,且在本文中各別地稱為ECREATE指令、EADD指令、EEXTEND指令、EINIT指令、EENTER指令、EPA指令、EWB指令、EWBPS指令、ELDPS指令、以及ELD指令。用於這些指令的支持可於處理器中實施,該處理器使用如以下說明或根據任何其他方法所排列之嵌入於硬體、微碼、韌體、及/或其他結構之電路及/或邏輯的任何組合,且在圖1中,以ECREATE 邏輯/硬體1101、EADD邏輯/硬體1102、EEXTEND邏輯/硬體1103、EINIT邏輯/硬體1104、EENTER邏輯/硬體1105、EPA邏輯/硬體1106、EWB邏輯/硬體1107、EWBPS邏輯/硬體1108、ELDPS邏輯/硬體1109、以及ELD邏輯/硬體1110來代表。
圖1亦顯示在處理器110裡面的非揮發性儲存體112。非揮發性儲存體112可包括一個或多個可讀寫暫存器或其他儲存位置,其使用任何記憶體或儲存技術來實施,其中以儲存一個或多個二進制大型物件(「blobs」),該等二進位大型物件含有被使用來根據本發明實施例跨電源週期維持一個或多個安全處理環境的資訊。在一實施例中,非揮發性儲存體可包括128位元的暫存器,以儲存此一二進制大型物件,以藉由EWBPS指令寫入且藉由ELDPS指令讀取,如下文所說明。非揮發性記憶體可藉由在處理器110之封裝物上的一個或多個接腳或其他電性連接器114所啟動,使得非揮發性記憶體的內容能夠跨電源週期保留,例如,在備用、睡眠、懸置、及/或其他電力管理狀態內(當在處理器110中的其他電路可被電力切斷時)。雖然在圖1中以在處理器110內顯示,但是非揮發性儲存體112卻可在處理器110外面實施,例如,在週邊控制媒介140內或連接到週邊控制媒介140。在其他實施例中,根據本發明實施例之使用來跨電源週期維持一個或多個安全處理環境的資訊,其可被儲存在當處理器110被電力切斷時維持的另一安全處理環境 內;例如,在藉由安全性及/或可管理性引擎之韌體所產生、提供、及/或維持的信用執行環境內。
在實施例中,非揮發性儲存體112可包括任何類型的非揮發性儲存體,其包括跨電源週期保留電力以維持它的內容的記憶體(例如,靜態隨機存取記憶體)、不需要跨電源週期保留電力以維持它的內容的記憶體(例如,快閃記憶體)、或非揮發性儲存體類型的任何組合。在實施例中,非揮發性儲存體112可以是固定的,使得它的內容的完整性與機密性能夠根據任何方法被確保(例如,對處理器110)。注意,系統100亦可包括其他非揮發性儲存體,譬如資訊儲存裝置150,其沒有藉由EWBPS指令寫入或藉由ELDPS指令讀取且因此比非揮發性儲存體112更不安全。
圖2繪示處理器200,可當作系統100中之處理器110的實施例。處理器200可包括核心210、核心220、以及非核心230。核心210可包括儲存單元212、指令單元214、執行單元216、以及控制單元218。核心220可包括儲存單元222、指令單元224、執行單元226、以及控制單元228。非核心230可包括快取單元232、介面單元234、處理器保留記憶體範圍暫存器250、記憶體存取控制單元260、以及非揮發性儲存體290。處理器200亦可包括在圖2中沒顯示的任何其他電路、結構、或邏輯。如上文所介紹以及如下文進一步說明的ECREATE邏輯/硬體1101、EADD邏輯/硬體1102、EEXTEND邏輯/硬體 1103、EINIT邏輯/硬體1104、EENTER邏輯/硬體1105、EPA邏輯/硬體1106、EWB邏輯/硬體1107、EWBPS邏輯/硬體1108、ELDPS邏輯/硬體1109、以及ELD邏輯/硬體1110的功能性,其可被包含於標示單元任一者之間或在處理器200中的別處或分佈於其間。進一步,處理器200之所說明及/或所繪示單元之各者的功能性及/或電路可以任何方式組合及/或分佈。
儲存單元212與222可包括可各別地用於核心210與220內任何目的之任何類型儲存體的任何組合;例如,它們可包括使用任何記憶體或儲存體技術來實施之任何數目的可讀取、可寫入、及/或可讀取寫入暫存器、緩衝器、及/或快取,其中以各別地儲存能力資訊、組態資訊、控制資訊、狀態資訊、效能資訊、指令、資料、以及在核心210與220之操作中可使用的任何其他資訊,以及可使用以儲存此儲存體的電路。
指令單元214與224可包括任何電路、邏輯、結構、及/或其他硬體,譬如指令解碼器,以各別地提取、接收、解碼、解譯、排程、及/或處理欲由核心210及220所執行的指令。任何指令格式可在本發明的範圍內使用:例如,一指令可包括一運算碼以及一個或多個運算元,其中該運算碼可被解碼成一個或多個微指令或微操作,以用於由執行單元216或226所各別地執行。一個或多個指令,譬如ECREATE、EADD、EEXTEND、EINIT、EENTER、EPA、EWB、EWBPS、ELDPS、以及ELD指 令,其係為第一單獨運算碼(譬如,特殊權限安全指定位址空間運算碼(例如,ENCLS))或第二單獨運算碼(譬如,無特殊權限安全指定位址空間運算碼(例如,ENCLU))的葉片,其中該等葉片指令係由在處理器暫存器(例如,EAX)中的值所具體指定。運算元或其他參數係與一指令隱性地、直接地、間接地、或根據任何其他方法地產生關聯。
在一實施例中,EWBPS與ELDPS係為ENCLS指令的葉片。當處理器200使用來支持虛擬化處理環境時,處理器200可藉由虛擬機器監視器、超管理器或其他系統軟體來組態,以回應於EWBPS或ELDPS指令導致從虛擬處理環境離開(虛擬機器離開)。虛擬機器離開可隨後藉由使用EWB指令逐出根VA頁面來模擬EWBPS指令的行為及/或藉由使用ELD指令重新載入根VA頁面來模擬ELDPS指令的行為。
執行單元216與226可包括任何電路、邏輯、結構、及/或其他硬體(譬如算術單元、邏輯單元、浮動點單元、移位器等等),以處理資料且執行指令、微指令、及/或微操作。執行單元216與226的各者可代表任一個或多個實體或邏輯上明顯不同的執行單元。
執行單元216與226可各別地包括加密硬體270及280,其代表任何專用或共享的電路、邏輯、結構、及/或其他硬體,以執行任一個或多個加密演算法與對應解密演算法,以執行任一個或多個安全雜湊演算法,及/或產生 任一個或多個訊息認證碼(MAC)。加密硬體270與280可各別地使用一鍵,譬如鍵272與282,其中各者可代表任何鍵,譬如程式化到熔線陣列中之處理器200內、在開機程序內產生、及/或另外可使用當作密鑰以使用於密碼術、用於產生MAC、或用於任何其他目的之處理器或平台唯一鍵。
控制單元218與228可包括任何微碼、韌體、電路、邏輯、結構、及/或硬體,以各別地控制核心210與220之單元及其他元件的操作,以及在核心210與220內、到其內、以及離開之資料的傳送。控制單元218與228可導致核心210與220以及處理器200施行或參與本發明之方法實施例的效能,譬如在下列所說明的方法實施例,其例如藉由導致核心210與220執行藉由指令單元214與224所接收的指令以及從指令單元214與224所接收指令取得的微指令或微操作。
快取單元232可包括任何數目的快取陣列於資訊處理系統100之記憶體階層中的一或多階快取記憶體中,其以靜態隨機存取記憶體或任何其他記憶體技術連同電路、結構、及/或其他硬體來實施,以控制及/或提供它們的使用及維修。快取單元232可根據在資訊處理系統中快取的任何方法而在處理器200內之任何數目的核心及/或邏輯處理器之間共享。快取單元232亦可包括欲被使用當作指定位址空間頁面快取(EPC)240的一個或多個記憶體陣列,如下面進一步的說明。
介面單元234可代表任何電路、邏輯、結構、及/或其他硬體,譬如連結單元、匯流排單元、或發訊息單元,以容許處理器200經由任何類型的匯流排、點對點、或其他連接、直接地、或經由任何其他組件(譬如橋接器、輪轂、或晶片組)而與在系統(譬如系統200)中的其他組件通訊。介面單元234可包括一個或多個積體記憶體控制器以與系統記憶體(譬如系統記憶體130)通訊,或可經由在處理器200外面的一個或多個記憶體控制器而與系統記憶體通訊。
非揮發性儲存體290代表非揮發性儲存體112,如上文所說明。非揮發性儲存體290可藉由在處理器200之封裝物上的一個或多個接腳或其他電性連接器292而被啟動,使得可跨過電源週期保留非揮發性儲存體290的內容,例如在備用、睡眠、懸置、或其他電力管理狀態內(當在處理器200中的其他電路可被切斷時)。雖然在圖2中以在非核心220內顯示,但是非揮發性儲存體240卻可被包括在處理器的一個或多個核心內,或可在處理器200外面實施,如上文所說明。
處理器保留記憶體範圍暫存器(PRMRR)213、223、以及250可代表在儲存單元212以及222中的任何一個或多個儲存位置、在處理器200中別處、及/或在非核心230中的其副本。PRMRR213/223/250可例如藉由組態韌體(譬如基礎輸入/輸出系統)來使用,以保留稱為處理器保留記憶體(PRM)之記憶體的一個或多個實體相連範圍。 記憶體存取控制單元260可代表在處理器200中任何地方的任何電路、結構、邏輯、及/或其他硬體,該處理器可控制到PRM的存取,使得EPC240能夠在定義為PRM的系統記憶體空間內產生。
在一實施例中,PRM的尺寸係為二的整數幂,例如32MB、64MB、或128MB,且對準係為那尺寸倍數的記憶體位址。PRMRR213/223/250可包括用以指示PRM可經組態成之有效尺寸之唯讀PRMMR有效組態暫存器252中的一個或多個實例、用以定義PRM之一個或多個基礎位址與範圍之PRMMR基礎暫存器254與PRMMR遮罩暫存器256中的一個或多個實例。
EPC240係為安全儲存區域,其中軟體可被保護免於受到在任何特權位準上操作的惡意軟體所攻擊。一個或多個安全指定位址空間可被產生,使得各安全位址空間能夠包括EPC240中的一個或多個頁面或其他區域,其中以它可僅僅藉由在那指定位址空間裡面執行之軟體所存取的方式來儲存代碼、資料、或其他資訊。例如,安全指定位址空間可由軟體應用程式所使用,使得只有那軟體應用程式(當在那指定位址空間裡面運行時)可存取那指定位址空間的內容。沒有其他軟體,甚至不是作業系統或虛擬機器監視器,可讀取那指定位址空間的未加密內容,修改那指定位址空間的內容,或以其他方式以那指定位址空間的內容來竄改同時將該內容載入到EPC(假定該指定位址空間係為製造指定位址空間,而不是例如除錯指定位址空 間)。不過,指定位址空間的內容可藉由從在系統100中之任何處理器上之那指定位址空間內所執行的軟體來存取。此保護係藉由根據安全指定位址空間架構所操作的記憶體存取控制單元260來完成。
在圖2中,EPC240係顯示在快取單元232中,其中它可能是共享快取或專用記憶體的鉗合部份。在與處理器200相同的晶粒內或上,EPC240可以靜態隨機存取記憶體、嵌入的動態隨機存取記憶體、或任何其他記憶體技術來實施。EPC240亦可或額外地在處理器200外面實施,例如在系統記憶體130的安全區域內。為了保護安全指定位址空間的內容(當它在晶片外傳送時),加密硬體270及/或280可被使用(例如,在EWB與ELD指令執行時),以在它在晶片外傳送之前將內容加密且將在晶片內往回傳送到EPC240內的內容解密。處理器200亦可包括其他加密硬體,(例如,在非核心230中的記憶體加密引擎262可提供用於欲在系統記憶體120中實施/儲存之EPC240的全部或一部份),及/或用以實施保護機制以保護內容免於重播及其他攻擊的其他硬體。
圖3繪示EPC300,其中一實施例可當作圖2中的EPC240。在圖3中,EPC300包括安全指定位址空間控制結構(SECS)310、執行緒控制結構(TCS)區域320、代碼/資料區域330、以及版本陣列(VA)區域340。雖然圖3顯示分成4個分開區域的EPC300,但是EPC300卻可區分為任何數目的區塊、區域、或頁面,其中各者可使用於任何 類型的內容。在一項實施例中,EPC300係被分成4千位元組(KB)頁面且對準係為4KB倍數之系統記憶體130中的位址,SECS310可以是在EPC300中之4KB頁面的任一者,TCS區域320可以是任何數目的相連或非相連4KB頁面,代碼/資料區域330可以是任何數目的相連或非相連4KB頁面,且VA區域340可以是任何數目的相連或非相連4KB頁面。更者,雖然圖3顯示對應於一個安全指定位址空間的一個SECS、一個TCS區域、及一個代碼/資料區域,但是EPC卻可包括任何數目的SECS以及任何數目的TCS及代碼/資料區域,只要各指定位址空間具有一個且只有一個SECS,各有效TCS與有效代碼/資料區域(例如,頁面)則屬於一個且只有一個指定位址空間,且SECS、TCS、代碼/資料頁面、以及VA頁面的全部配合於EPC內(或可頁面移出且移入EPC)。
SECS可藉由執行ECREATE指令來產生,以含有欲由硬體所使用的元資料,且可僅僅藉由硬體存取(亦即,不可讀取、寫入、或另外由軟體存取,不論在指定位址空間裡面或外面運行),以定義、維持、且保護指定位址空間。例如,SECS310包括第一測量暫存器(MRENCLAVE)312,其可以是在SECS310內的任何尺寸欄位,在一項實施例中,MRENCLAVE312係為32位元組,MRENCLAVE312係用以儲存指定位址空間的建築測量(如下文所說明),其係由ECREATE指令所啟始,由與指定位址空間有關的各EADD與EEXTEND指令更新, 且由與指定位址空間有關的EINIT指令鎖定。SECS310亦包括用以儲存該實體之識別符(譬如公用鍵)之測量的第二測量暫存器(MRSIGNER)314,該實體驗證指定位址空間的產生,如下面所進一步說明。在一項實施例中,MRSIGNER314可以是32位元組。如下面所說明的指定位址空間屬性可儲存在ATTRIBUTES欄位316中,在一項實施例中,其可具有16位元組的尺寸。
一個或多個TCS亦可與安全指定位址空間有關。TCS含有由硬體所使用的元資料,以當進入與離開指定位址空間時儲存且恢復執行緒具體資訊。一個或多個VA亦可使用來促進分頁,如下文所進一步說明。
各頁面的安全屬性被儲存在稱為指定位址空間頁面快取地圖(EPCM)的微架構資料結構中,該指定位址空間頁面快取地圖係由記憶體存取控制單元260所使用,以加強由安全指定位址空間架構所提供的保護。EPCM儲存用於各頁面的一個入口於EPC中。各入口包括該頁面所屬於之SECS(亦即,指定位址空間)的識別符(例如,64位元欄位)。這些識別符可由安全指定位址空間指令所提及(例如,SECS的位址可儲存在譬如RCX的暫存器中,包括SECS之位址的微架構資料結構的位址可被儲存在譬如RBX的暫存器中等等),譬如EADD、EEXTEND、以及EINIT,以提供SECS由硬體讀取以便能夠執行指令。
現在回到圖1,EPA邏輯/硬體1106、EWB邏輯/硬體1107、EWBPS邏輯/硬體1108、ELDPS邏輯/硬體1109、 以及ELD邏輯/硬體1110提供用於可由操作系統或其他軟體所使用的指令,以管理EPC300且提供比EPC300之尺寸更大的虛擬記憶體空間,以供一個或多個安全處理環境所使用,其中各安全處理環境可跨電源週期被維持。
如下文更詳細的說明,可使用EWB指令來寫入或逐出頁面(除了根版本陣列頁面以外,如下文所說明),從EPC300至系統記憶體120,譬如代碼/資料頁面332。EEWBPS指令可被使用來將根版本陣列頁面入口,從EPC300逐出至非揮發性儲存體120。ELDPS指令可被使用來將先前逐出的根版本陣列頁面入口從非揮發性儲存體120重新載入到EPC300內。ELD指令可被使用來將先前逐出的頁面(除了根版本陣列頁面以外)從系統記憶體120重新載入到EPC300內。
EPA指令可被使用來配置特殊的EPC頁面,譬如VA頁面342,在該頁面上,以儲存用於各逐出頁面的獨特版本號,使得當將該頁面重新載入到EPC內時可檢查該版本號,以確保它與該逐出頁面相同,因而保護EPC免於受到重播攻擊。VA頁面可含有槽縫陣列(例如,4KB VA頁面可含有512槽縫),各槽縫用以儲存逐出頁面的版本號。一槽縫可被配置,以使用於當將頁面逐出時且當將頁面重新載入時,被釋放以當將另一(相同或不同)頁面逐出時重複使用。VA頁面可由超過一個的指定位址空間所共享。
為了使在任何時間可頁面移出的頁面數目不被VA頁 面的尺寸所限制,EPC可包括多數、階層式(亦即,以倒樹狀結構排列)的VA頁面。例如,第一VA頁面可使用來儲存用於第一組512代碼/資料頁面的版本資訊、第二VA頁面可使用來儲存用於第二組512代碼/資料頁面的版本資訊、且第三VA頁面可使用來儲存用於第一VA頁面(當它被逐出時)、第二VA頁面(當它被逐出時)、以及多達510額外VA或代碼/資料頁面(當它們被逐出時)的版本資訊。在本實例中,第三VA頁面可被稱為根VA頁面,以假定沒有用於第三VA頁面的版本資訊被儲存在另一VA頁面上。一般而言,根VA頁面係為在該階層最高階的VA頁面,換言之,來自全部逐出頁面的VA頁面可被參考,不論直接(亦即,用於逐出頁面的版本資訊被儲存在根VA頁面上)或間接(亦即,用於逐出頁面的版本資訊被儲存於介於根VA頁面與逐出頁面之間之階層中之一階上的逐出VA頁面上)。EPC可能具有只有一個根VA頁面。
與EWB指令之執行相關,將被逐出之EPC頁面的內容會被加密(例如,藉由加密單元270或280),且MAC基於該加密內容、該頁面的安全屬性、以及該頁面的版本號來產生。用於EWB指令的參數可包括:到將要頁面移出之EPC頁面的指標、到VA頁面中之空槽縫的指標(其中用以儲存將要頁面移出之頁面的版本號)、以及到EPC頁面外面之記憶體位置的指標(其中以儲存加密頁面、完整性檢查值、安全指定位址空間控制結構(SECS)資訊、以 及用於該頁面的任何其他元資料)。在EPC中的任何頁面,包括VA頁面與SECS頁面,可使用EWB指令被頁面移出,除了根VA頁面以外。
根VA頁面入口可使用EWBPS指令被逐出。用於EWBPS指令的參數可包括到將被逐出之根VA頁面入口的指標。在逐出根VA頁面入口之前,以與VA頁面階層一致的次序,系統軟體對頁面移出(例如,使用EWB指令)EPC中的全部其他頁面負責,直到只有具有一個VA入口(LAST_VA_VERSION,將被頁面移出之最後VA頁面的版本號)的根VA頁面保持為止。EWBPS指令的執行導致處理器寫回,例如到非揮發性儲存體290,含有最後有效頁面之分頁前後關係與版本的二進制大型物件(「PS blob」)。
回應於EWBPS指令,PS二進制大型物件可藉由處理器產生,其係藉由將輸入之組合加密,其包括LAST_VA_VERSION、PSVERSION、PK、PI、EID以及SVN,各者如上文或如以下所說明。PSVERSION係為用於根VA的獨特版本號,使得在電力恢復之後將EPC重新載入時可檢查該版本號,因而保護EPC免於受到重播攻擊,PK係為使用以有關於分頁指令之執行(例如,EWB與ELD)來加密且解密頁面內容及/或產生MAC的分頁鍵,且可被初始化成隨機值且被儲存在控制暫存器中(例如,在儲存體單元212或222中)。PI係為使用以加密PS二進制大型物件的鍵,且可從硬體基礎鍵(例如,鍵 272或鍵282)取得。EID係為使用以產生指定位址空間識別符的值,例如與ECREATE指令之執行有關,且可以是被初始化為零且當每一指定位址空間產生時增加的值。SVN係為一個或多個安全版本號,其中各者可被指定到使用EPC的指定位址空間。
根VA頁面入口可使用ELDPS指令被重新載入。在一實施例中,在執行ELDPS指令之前,新VA頁面產生於EPC中,其使用EPA指令,以當作根VA頁面。在另一實施例中,新VA頁面可被產生,以當作ELDPS指令之執行的一部份。在任一實施例中,ELDPS指令之執行包括從非揮發性儲存體讀取PS二進制大型物件且將PS二進制大型物件解密(例如,藉由加密單元270或280)、驗證版本號與對應MAC、使用解密PS二進制大型物件的內容來恢復當執行最近EWBPS指令時存在的EPC分頁前後關係且將欲被逐出之最後VA頁面的版本號載入到根VA頁面中的空槽縫內。
任何逐出頁面,包括VA頁面(但非根VA頁面)與SECS頁面,可在使用ELD指令時頁面移入。與ELD指令之執行有關的,欲被重新載入之EPC頁面的加密內容係被解密(例如,藉由加密單元270或280),版本號與對應MAC會被驗證,未加密的頁面係被重新載入到EPC300內,EPCM資訊會被恢復到EPCM。用於ELD指令的參數可包括到欲被頁面移入之加密頁面的指標及它的相關元資料、到EPC中之自由頁面位置的指標(其中以 載入頁面)、到用於(該頁面所配置到)安全指定位址空間之SECS的指標、以及到VA頁面中(其中該頁面的版本號會被儲存)之槽縫的指標。不同版本的ELD指令對在不同狀態中重新載入頁面有效,例如在阻擋狀態或未阻擋狀態中。
圖4繪示一種方法400,其用於根據本發明的實施例來建立欲跨電源週期維持的安全處理環境。雖然本發明的方法實施例不限於此態樣,但是可參考圖1、2以及3的元件,以有助於說明圖4的方法實施例。方法400包括使用ECREATE、EADD、EEXTEND、EINIT、以及EENTER指令來建立安全指定位址空間;不過,本發明的實施例卻不限於這些具體命名的指令。方法400的多種部份可藉由硬體(例如,指令單元214/224、執行單元216/226、及/或控制單元218/228)、韌體、軟體、資訊處理系統的使用者等等獨立地或以其組合施行。
在方法400的盒子410中,開始指定位址空間的建立。在盒子412中,ECREATE指令例如藉由安裝器應用來發送以產生指定位址空間。在盒子414中,例如藉由執行單元216或226,開始ECREATE指令的執行。在一項實施例中,ECREATE指令的執行包括由指定位址空間所使用之位址範圍的配置。在一項實施例中,該位址係為第一類型的位址,例如虛擬或線性位址,其係被轉換成第二類型的位址,例如在譬如系統記憶體120之系統記憶體中的實體位址。
ECREATE指令的執行亦包括建立指定位址空間的屬性以及儲存指定位址空間的屬性於SECS中,例如,於SECS310的ATTRIBUTES欄位316中。微架構資料結構(例如,PAGEINFO)可能與ECREATE指令(例如,在RBX暫存器中的它的位址)有關。PAGEINFO可具有指定複製到SECS310之來源SECS之位址的欄位。來源SECS可包括欲複製到SECS ATTRIBUTES欄位316的來源SECS ATTRIBUTES位元陣列。
在盒子418中,安裝器應用可例如藉由發送一個或多個EADD指令而添加一個或多個頁面(或其他區域)到指定位址空間,且例如藉由發送一個或多個EEXTEND指令而使它們被測量。添加一頁面到指定位址空間可包括將來自系統記憶體的來源頁面複製到EPC內且使EPC頁面與指定位址空間的SECS有關。來源頁面可以是含有未加密代碼、資料、或用於指定位址空間之代碼/資料區域之其他資訊的規則頁面,或來源頁面可以是含有用於TCS區域之元資料的TCS頁面。使它們被測量可包括基於該頁面或該等頁面之內容、位置、及/或其他屬性遞增地計算或延伸密碼雜湊以及儲存該雜湊於MRENCLAVE312中。
在盒子420中,安裝器應用發送EINIT指令,以致於結束指定位址空間的建立且起始它。在盒子422中,例如藉由執行單元216或226之EINIT指令的執行開始。
在盒子424中,EINIT指令的執行可包括藉由使用被包括在證書或簽名結構中的鍵來驗證由指定位址空間之安 裝器或簽名者所提供的指定位址空間證書或簽名結構(SIGSTRUCT)是有效的。在盒子426中,EINIT指令之執行亦可包括驗證MRENCLAVE312的內容匹配在證書或簽名結構中所提供之MRENCLAVE的期待值,其中MRENCLAVE312的最後值可以是獨特的安全雜湊演算法,(例如,SHA-256)摘要,其密碼識別放置在指定位址空間裡面的代碼與資料、在指定位址空間裡面之頁面的位置與放置次序、以及各頁面的安全特性。
在盒子428中,EINIT指令之執行可能以MRENCLAVE312之鎖定持續,使得它的內容保持不變,甚至藉由EADD或EEXTEND指令的後續執行以及在SECS中之屬性指示器的設定,以避免多一些區域或頁面被添加到指定位址空間。在盒子430中,指定位址空間的建立完成。在盒子440中,指定位址空間可被輸入(例如,藉由發送EENTER指令),以便安全地執行在指定位址空間內的軟體應用。
圖5繪示一種根據本發明實施例跨電源週期維持安全處理環境的方法500。雖然本發明的方法實施例不限於此態樣,但是卻可參考圖1、2、3以及4的元件,以有助於說明圖5的方法實施例。方法500包括安全處理環境的使用與維持,譬如使用EPA、EWB、EWBPS、ELDPS、以及ELD指令,根據方法400建立的安全指定位址空間;不過,本發明的實施例卻不限於這些具體命名的指令。為了方便起見,方法500顯示各類型EPC頁面之其中一者的 逐出;不過,根據本發明多種實施例的方法可包括任何數目之各類型EPC頁面的逐出,其取決於當啟始電力切斷時有多少EPC頁面正被使用。方法500的多種部份可藉由硬體(例如,指令單元214/224、執行單元216/226、及/或控制單元218/228)、韌體、軟體、資訊處理系統之使用者等等獨立地或以其組合地施行。在一實施例中,如下文所說明來發送且執行的EPA、EWB、EWBPS、ELDPS、以及ELD指令可以在處理器110上安裝、運行、及/或執行的操作系統軟體內。
在盒子510中,開始EPA指令之第一發送的執行。在盒子512中,當作EPA指令之執行的一部份,第一VA頁面(例如,VA頁面342)係在EPC300中產生,以使用以儲存用於逐出頁面的版本資訊。超過一個的VA頁面可以在本發明的範圍內產生,且VA頁面亦可被頁面移出,只要用於逐出VA頁面的版本資訊被儲存在存在於EPC300中的另一VA頁面中,且只要頁面移出的任何VA頁面能夠在頁面移入任何頁面(該頁面的版本資訊被儲存在那VA頁面中)之前被頁面移入。任何頁面佈局及/或類型的資料結構可被使用來儲存版本號及/或其他資訊於版本陣列頁面中且產生VA頁面的階層。
在盒子514中,開始EPA指令之第二發送的執行。在盒子516中,當作EPA指令之執行的一部份,第二VA頁面(例如,VA頁面344)係在EPC300中產生,以當作根VA頁面。注意,在一些實施例中,在圖5所示的一些 盒子可被省略,包括盒子514與516,因為單一VA頁面(例如,VA頁面342)可被使用,在該例子中,單一VA頁面將當作根VA頁面,且在該例子中,盒子550至558(關於如下文所說明之VA頁面342的逐出)亦將被省略。在其他實施例中,額外的VA頁面可被產生以便架構其他VA頁面階層。
在盒子520中,開始EWB指令之第一發送的執行。在盒子522中,當作EWB指令之執行的一部份,欲從EPC300被逐出之第一頁面(例如,代碼/資料頁面332)的內容係被加密(例如,藉由加密單元270或280,使用PK),以產生第一加密頁面。任何加密演算法或技術可在本發明的範圍內被使用。在盒子524中,當作EWB指令之執行的一部份,第一完整性檢查值、第一反重播值、及/或第一元資料係被產生,以用於第一頁面及/或第一加密頁面。對完整性檢查、反重播保護、及/或其他驗證或認證的任何方法可在本發明的範圍內被使用。在盒子526中,當作EWB指令之執行的一部份,用於第一頁面的第一獨特版本號係被儲存在VA頁面(例如,VA頁面342)中的第一空槽縫中。在盒子528中,當作EWB指令之執行的一部份,第一加密頁面、第一元資料、以及用於第一頁面的EPCM資訊係被寫入到系統記憶體120。
在盒子530中,開始EWB指令之第二發送的執行。在盒子532中,當作EWB指令之執行的一部份,欲從EPC300被逐出之第二頁面(例如,TCS頁面322)的內 容係被加密(例如,藉由加密單元270或280,使用PK),以產生第二加密頁面。在盒子534中,當作EWB指令之執行的一部份,第二完整性檢查值、第二反重播值、及/或第二元資料係被產生,以用於第二頁面及/或第二加密頁面。在盒子536中,當作EWB指令之執行的一部份,用於第二頁面的第二獨特版本號係被儲存在VA頁面(例如,VA頁面342)中的第二空槽縫中。在盒子538中,當作EWB指令之執行的一部份,第二加密頁面、第二元資料、以及用於第二頁面的EPCM資訊係被寫入到系統記憶體120內。
在盒子540中,開始EWB指令之第三發送的執行。在盒子542中,當作EWB指令之執行的一部份,欲從EPC300被逐出之第三頁面(例如,SECS頁面310)的內容係被加密(例如,藉由加密單元270或280,使用PK),以產生第三加密頁面。在盒子544中,當作EWB指令之執行的一部份,第三完整性檢查值、第三反重播值、及/或第三元資料係被產生,以用於第三頁面及/或第三加密頁面。在盒子546中,當作EWB指令之執行的一部份,用於第三頁面的第三獨特版本號係被儲存在VA頁面(例如,VA頁面342)中的第三空槽縫中。在盒子548中,當作EWB指令之執行的一部份,第三加密頁面、第三元資料、以及用於第三頁面的EPCM資訊係被寫入到系統記憶體120內。
在盒子550中,開始EWB指令之第四發送的執行。 在盒子552中,當作EWB指令之執行的一部份,欲從EPC300被逐出之第一VA頁面(例如,VA頁面342)的內容係被加密(例如,藉由加密單元270或280,使用PK),以產生第四加密頁面。在盒子554中,當作EWB指令之執行的一部份,第四完整性檢查值、第四反重播值、及/或第四元資料係被產生,以用於第四頁面及/或第四加密頁面。在盒子556中,當作EWB指令之執行的一部份,用於第四頁面的第四獨特版本號係被儲存在根VA頁面(例如,VA頁面344)中的空槽縫中。在盒子558中,當作EWB指令之執行的一部份,第四加密頁面、第四元資料、以及用於第四頁面的EPCM資訊係被寫入到系統記憶體120內。
盒子520至528、530至538、540至548、及/或550至558可依需求重複許多次,以逐出全部頁面,除了在EPC300中被使用的根VA頁面以外,直到只有單一入口仍保持在根VA頁面中。
在盒子560中,開始EWBPS指令之發送的執行。在盒子562中,當作EWBPS指令之執行的一部份,輸入之組合,包括LAST_VA_VERSION(來自在根VA頁面中的最後保持入口)、PSVERSION、PK、PI、EID、以及SVN,其係被加密(例如,藉由加密單元270或280,其使用PI)以產生PS二進制大型物件。在盒子564中,當作EWBPS指令之執行的一部份,PS二進制大型物件係被寫入到非揮發性儲存體290。
在盒子566中,例如,與到備用、睡眠、懸置、或其他電力管理狀態內之入口有關的,電力係從處理器110的至少一部份移除。在一實施例中,電力係從處理器封接接腳或供電到包括EPC300之處理器電路的其他外部連接器242移除,同時電力係維持到供電到非揮發性儲存體290的接腳292。在盒子568中,在沒有電力被施加以維持EPC300的內容之下,處理器110暫時地保持在備用、睡眠、懸置、或其他電力管理狀態中。
在盒子570中,再度施加電力到處理器110之那部分,該處理器包括例如與從備用、睡眠、懸置、或其他電力管理狀態離開有關的EPC300。在盒子572中,開始恢復處理器對安全處理環境的支持(例如,藉由基礎輸入/輸出系統韌體),其包括:PRMRR213/223/250的設置;任何微碼修補、驗證代碼模組、及/或任何其他韌體及/或軟體的安裝以支持處理器的安全處理環境或其他性能或功能;以及致能用於安全處理環境的支持。
在盒子574中,開始EPA指令之第三發送的執行。在盒子576中,當作EPA指令之執行的一部份,全部入口是空的第三VA頁面(例如,VA頁面344)係在EPC300中產生,以當作根VA頁面。此第三VA頁面可在與第二VA頁面之EPC300中相同的實體及/或邏輯位置上產生,其在EWBPS指令執行期間內當作根VA頁面。因此,第三VA頁面亦由VA頁面344代表。
在盒子580中,開始ELDPS指令之發送的執行。在 盒子584中,當作ELDPS指令之執行的一部份,PS二進制大型物件係從非揮發性儲存體290讀取。在盒子586中,當作ELDPS指令之執行的一部份,PS二進制大型物件係被解密(例如,藉由解密單元270或280,其使用PI)且被檢查完整性。在盒子588中,當作ELDPS指令之執行的一部份,經解密的PS二進制大型物件內容係被使用來恢復當執行EWBPS指令時存在的EPC分頁前後關係。恢復EPC分頁前後關係可包括將PK載入於鍵暫存器中的分頁鍵位置內且載入分頁前後關係暫存器(例如,CR_PAGING_VERSION暫存器,譬如將LAST_VA_VERSION載入到暫存器內,以用於欲被逐出之最後頁面之版本號的暫存器)。注意,這些暫存器(例如,分頁鍵與分頁前後關係暫存器)可裝填以與處理器110之供電有關的新/初始化值;因此,盒子588可涉及這些初始化值的覆寫。
在盒子590中,當作ELDPS指令之執行的一部份,將欲被逐出之最後VA頁面的版本號載入到根VA頁面中的空槽縫中。注意,假如ELDPS指令的執行沒有成功地完成(例如,PS二進制大型物件之解密及/或完整性檢查失敗),處理器110仍然可使用回應於最近供電所產生的分頁前後關係來支持安全處理環境(包括新分頁鍵以及用於分頁前後關係暫存器的其他初始化值);不過,沒有任何先前產生的安全處理環境可根據本發明的實施例來恢復。相反地,它們可根據任何先前已知的技術來重新建立,其中安全處理環境不會跨電源週期被維持。
假定成功完成ELDPS指令,在備用、睡眠、懸置、或其他電力管理狀態之前建立的安全處理環境,其可藉由以EPC頁面重新載入(例如,藉由發送ELD指令)EPC300來恢復(例如,藉由操作系統),該等EPC頁面係被逐出(例如,藉由操作系統),以準備用於備用、睡眠、懸置、或其他電力管理狀態。這些頁面可以與VA頁面階層一致的任何次序重新載入,且代碼/資料頁面可隨需要重新載入。
例如,在盒子592中,開始ELD指令之發送的執行。在盒子594中,當作ELD指令之執行的一部份,頁面(例如,VA頁面342)的加密內容係從系統記憶體120被讀取且解密(例如,藉由加密單元270或280,使用PK),以產生解密頁面。在盒子596中,完整性檢查值、反重播值、及/或用於該頁面的其他元資料係被檢查,以驗證該頁面的完整性,包括檢查該版本係為最後被寫出的相同版本(例如,用於VA頁面342,儲存在根VA頁面中的版本號)。在盒子598中,未加密的頁面係被重新載入到EPC300內且EPCM資訊被恢復成EPCM。
在本發明的多種實施例中,在圖4與5所示的方法係以不同次序來施行,組合或省略所繪示的盒子,添加額外的盒子,或重新排序、組合、省略、或額外盒子的組合。更者,本發明的方法實施例不限於方法400、方法500、或其變化。在本文中沒被說明的許多其他方法實施例(以及裝置、系統、與其他實施例)在本發明的範圍內是可能 的。
在上文所說明之本發明的實施例或部分的實施例,可被儲存在任何形式的機器可讀取媒體上。例如,方法400及/或500的全部或部分可以儲存在可由處理器110讀取之媒體上的軟體或韌體指令來實施,其當由處理器110執行時會導致處理器110執行本發明的實施例。同樣地,本發明的態樣可以儲存在機器可讀取媒體上的資料來實施,其中該資料代表可使用來製造處理器110之全部或一部分的設計或其他資訊。
因此,已經說明用於跨電源週期維持安全處理環境的本發明實施例。雖然特定實施例已經被說明且被顯示於附圖,但是要理解的是,此等實施例僅僅用來說明且非限制該廣泛發明,且因為當所屬技術領域中具有通常知識者研讀本揭露時多種其他修改可能發生,所以本發明不限於被顯示與說明的具體結構與配置。在譬如此之技術的領域中,在生長快速且進一步進展不會被輕易預見之處,所揭露的實施例可在藉由致使科技進步所促進的配置與細節中被輕易地修改而不脫離本揭露的原理或附加申請專利範圍的範圍。
100‧‧‧系統
110‧‧‧處理器
112‧‧‧非揮發性儲存體
114‧‧‧電性連接器
120‧‧‧系統記憶體
130‧‧‧圖形處理器
132‧‧‧顯示器
140‧‧‧週邊控制媒介
142‧‧‧裝置
150‧‧‧資訊儲存裝置
1101‧‧‧ECREATE邏輯/硬體
1102‧‧‧EADD邏輯/硬體
1103‧‧‧EEXTEND邏輯/硬體
1104‧‧‧EINIT邏輯/硬體
1105‧‧‧EENTER邏輯/硬體
1106‧‧‧EPA邏輯/硬體
1107‧‧‧EWB邏輯/硬體
1108‧‧‧EWBPS邏輯/硬體
1109‧‧‧ELDPS邏輯/硬體
1110‧‧‧ELD邏輯/硬體

Claims (17)

  1. 一種處理器,其包含:指令單元,其用以接收第一指令,其中該第一指令用以將根版本陣列頁面入口從安全快取逐出;以及執行單元,其用以執行該第一指令,其中該第一指令的執行包括產生二進制大型物件,以含有資訊,以跨一電源週期維持安全處理環境且將該二進制大型物件儲存於非揮發性記憶體中,其中產生該二進制大型物件用以包括將反映該安全快取之前後關係之輸入的組合加密,該輸入組合用以包括從該安全快取逐出的最後頁面的版本號。
  2. 如申請專利範圍第1項之處理器,其中該輸入組合亦用以包括該根版本陣列頁面的版本號。
  3. 如申請專利範圍第1項之處理器,其中該輸入組合亦用以包括用於將安全快取頁面的內容加密與解密的分頁鍵。
  4. 如申請專利範圍第1項之處理器,其中該輸入組合亦用以包括用於將該二進制大型物件加密的二進制大型物件鍵。
  5. 如申請專利範圍第1項之處理器,其中該輸入組合亦用以包括用於產生與安全處理環境產生指令之該執行相關之指定位址空間識別符的值。
  6. 如申請專利範圍第1項之處理器,其中該輸入組合亦用以包括一個或多個安全版本號,各被指定到使用該安全快取的安全處理環境。
  7. 如申請專利範圍第1項之處理器,其中:該指令單元亦用以接收第二指令,其中該第二指令係用以恢復該安全快取的前後關係;以及該執行單元亦用以執行該第二指令,其中該第二指令之執行包括從該非揮發性記憶體讀取該二進制大型物件且將該二進制大型物件解密。
  8. 如申請專利範圍第7項之處理器,其中該第二指令之執行亦包括將從該安全快取逐出的該最後頁面的該版本號載入到根版本陣列頁面中的入口內。
  9. 一種方法,其包含:接收第一指令,其中該第一指令係用以將根版本陣列頁面入口從安全快取逐出;以及執行該第一指令,其中該第一指令之執行包括產生二進制大型物件以含有資訊,以跨電源週期維持安全處理環境且將該二進制大型物件儲存於非揮發性記憶體中,其中產生該二進制大型物件用以包括將反映該安全快取之前後關係之輸入的組合加密,該輸入組合用以包括從該安全快取逐出的最後頁面的版本號。
  10. 如申請專利範圍第9項之處理器,其中該輸入組合亦用以包括該根版本陣列頁面之版本號、用於將安全快取頁面的內容加密與解密的分頁鍵、用於將該二進制大型物件加密的二進制大型物件鍵、用於產生與安全處理環境產生指令之該執行相關的指定位址空間識別符的值,以及一個或多個安全版本號,各被指定到使用該安全快取的安 全處理環境。
  11. 如申請專利範圍第9項之方法,其進一步包含:接收第二指令,其中該第二指令係用以恢復該安全快取的前後關係;以及執行該第二指令,其中該第二指令之執行包括從該非揮發性記憶體讀取該二進制大型物件且將該二進制大型物件解密。
  12. 如申請專利範圍第11項之方法,其進一步包含重新產生根版本陣列頁面。
  13. 如申請專利範圍第12項之方法,其中重新產生該根版本陣列頁面係回應於第三指令。
  14. 如申請專利範圍第12項之方法,其中該第二指令之執行亦包括將從該安全快取逐出的該最後頁面的該版本號載入到該根版本陣列頁面的入口內。
  15. 如申請專利範圍第12項之方法,其進一步包含:接收第三指令的一個或多個發送,其中該第三指令係用以將頁面從該安全快取逐出,且其中該第三指令的該發送係用以在發送該第一指令之前將該安全快取清空;以及執行該第三指令的該一個或多個發送,其中該第三指令之執行包括將該頁面解密且將該解密頁面寫入到系統記憶體。
  16. 如申請專利範圍第15項之方法,其進一步包含: 接收第四指令的一個或多個發送,其中該第四指令係用以將頁面重新載入到該安全快取內,且其中該第四指令的該發送係用以在發送該第二指令之後重新建立該安全快取,其中,在該電源週期內,在電源被恢復到該安全快取之後,該第二指令被發送;以及執行該第四指令的該一個或多個發送,其中該第四指令的執行包括從該系統記憶體讀取該加密頁面,解密該加密頁面,且將該解密頁面重新載入到該安全快取內。
  17. 一種系統,其包含:非揮發性記憶體;以及處理器,其包括指令單元,其用以接收第一指令,其中該第一指令係用以將根版本陣列頁面入口從安全快取逐出;以及執行單元,其用以執行該第一指令,其中該第一指令之執行包括產生二進制大型物件以含有資訊,以跨電源週期維持安全處理環境且將該二進制大型物件儲存於非揮發性記憶體中,其中產生該二進制大型物件用以包括將反映該安全快取之前後關係之輸入的組合加密,該輸入組合用以包括從該安全快取逐出的最後頁面的版本號。
TW104131134A 2014-10-28 2015-09-21 跨電源週期維持安全處理環境 TWI576698B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/525,421 US9684608B2 (en) 2014-10-28 2014-10-28 Maintaining a secure processing environment across power cycles

Publications (2)

Publication Number Publication Date
TW201633154A TW201633154A (zh) 2016-09-16
TWI576698B true TWI576698B (zh) 2017-04-01

Family

ID=55792111

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104131134A TWI576698B (zh) 2014-10-28 2015-09-21 跨電源週期維持安全處理環境

Country Status (6)

Country Link
US (2) US9684608B2 (zh)
EP (1) EP3213250A4 (zh)
KR (1) KR102282290B1 (zh)
CN (1) CN106687938B (zh)
TW (1) TWI576698B (zh)
WO (1) WO2016069187A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949726B2 (en) * 2010-12-10 2015-02-03 Wyse Technology L.L.C. Methods and systems for conducting a remote desktop session via HTML that supports a 2D canvas and dynamic drawing
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
JP6729166B2 (ja) 2016-08-16 2020-07-22 富士ゼロックス株式会社 情報処理装置及びプログラム
US10346641B2 (en) 2016-09-23 2019-07-09 Intel Corporation Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory
US10872145B2 (en) * 2017-10-25 2020-12-22 International Business Machines Corporation Secure processor-based control plane function virtualization in cloud systems
US10552344B2 (en) * 2017-12-26 2020-02-04 Intel Corporation Unblock instruction to reverse page block during paging
US11082231B2 (en) * 2017-12-29 2021-08-03 Intel Corporation Indirection directories for cryptographic memory protection
US10649911B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Supporting memory paging in virtualized systems using trust domains
US11243893B2 (en) * 2018-05-11 2022-02-08 Intel Corporation Preventing unauthorized access to encrypted memory
CN109947666B (zh) * 2019-02-27 2023-04-25 余炀 可信执行环境缓存隔离方法及装置、电子设备和存储介质
US11088846B2 (en) * 2019-03-28 2021-08-10 Intel Corporation Key rotating trees with split counters for efficient hardware replay protection
CN111142940B (zh) * 2019-12-23 2023-06-30 成都海光微电子技术有限公司 处理器与软件的适配方法、装置、处理器、芯片和设备
JP7293157B2 (ja) * 2020-03-17 2023-06-19 株式会社東芝 画像処理装置
CN112800431B (zh) 2020-08-28 2023-09-29 支付宝(杭州)信息技术有限公司 超线程场景下安全进入可信执行环境的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080244292A1 (en) * 2007-03-30 2008-10-02 Alok Kumar Method and Apparatus to Re-create trust model after sleep state
US20120216049A1 (en) * 2011-02-23 2012-08-23 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
TWM450603U (zh) * 2012-08-20 2013-04-11 Li Shyang Tech Co Ltd 控制器之週期密碼控制模組及其應用之電子鎖
US20140189325A1 (en) * 2012-12-28 2014-07-03 Francis X. McKeen Paging in secure enclaves

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
KR101379172B1 (ko) * 2008-04-02 2014-03-28 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 데이터 암호화 방법, 컴퓨터 판독 가능한 매체 및 저장 시스템
US8762742B2 (en) * 2011-05-16 2014-06-24 Broadcom Corporation Security architecture for using host memory in the design of a secure element
US9413538B2 (en) * 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US8954755B2 (en) * 2012-01-23 2015-02-10 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
US9058494B2 (en) 2013-03-15 2015-06-16 Intel Corporation Method, apparatus, system, and computer readable medium to provide secure operation
US9430384B2 (en) 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080244292A1 (en) * 2007-03-30 2008-10-02 Alok Kumar Method and Apparatus to Re-create trust model after sleep state
US20120216049A1 (en) * 2011-02-23 2012-08-23 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
TWM450603U (zh) * 2012-08-20 2013-04-11 Li Shyang Tech Co Ltd 控制器之週期密碼控制模組及其應用之電子鎖
US20140189325A1 (en) * 2012-12-28 2014-07-03 Francis X. McKeen Paging in secure enclaves

Also Published As

Publication number Publication date
EP3213250A1 (en) 2017-09-06
WO2016069187A1 (en) 2016-05-06
CN106687938A (zh) 2017-05-17
US20170270058A1 (en) 2017-09-21
KR102282290B1 (ko) 2021-07-29
US20160117265A1 (en) 2016-04-28
EP3213250A4 (en) 2018-06-20
US10216648B2 (en) 2019-02-26
TW201633154A (zh) 2016-09-16
CN106687938B (zh) 2020-11-06
KR20170046766A (ko) 2017-05-02
US9684608B2 (en) 2017-06-20

Similar Documents

Publication Publication Date Title
TWI576698B (zh) 跨電源週期維持安全處理環境
US11354423B2 (en) Cryptographic isolation of memory compartments in a computing environment
TWI797937B (zh) 用以支援保護容器的即時遷移之處理器、方法、系統和指令
TWI690822B (zh) 安全區之平台遷移
US11023622B2 (en) Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory
US10877806B2 (en) Method and apparatus for securely binding a first processor to a second processor
US9276750B2 (en) Secure processing environment measurement and attestation
US10565130B2 (en) Technologies for a memory encryption engine for multiple processor usages
TWI608378B (zh) 裝置與安全處理環境之間的介面
US20110161677A1 (en) Seamlessly encrypting memory regions to protect against hardware-based attacks
KR101653193B1 (ko) 보안 처리 환경으로부터의 기능의 오프로딩
CN116260606A (zh) 与遗留外围设备的密态计算
JP6068325B2 (ja) セキュアなアプリケーションの実行を提供するプロセッサ
JP6672341B2 (ja) 仮想マシンの状態情報の保護

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees