TWI797521B - 基於隔離執行環境之保護外部記憶體資料的方法及系統 - Google Patents
基於隔離執行環境之保護外部記憶體資料的方法及系統 Download PDFInfo
- Publication number
- TWI797521B TWI797521B TW109145009A TW109145009A TWI797521B TW I797521 B TWI797521 B TW I797521B TW 109145009 A TW109145009 A TW 109145009A TW 109145009 A TW109145009 A TW 109145009A TW I797521 B TWI797521 B TW I797521B
- Authority
- TW
- Taiwan
- Prior art keywords
- mentioned
- data
- processor
- execution environment
- main system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本揭露提出一種基於隔離執行環境之保護外部記憶體資料的方法,用於位於一晶片系統之一隔離執行環境中的一處理器中,包括:存取上述晶片系統內一主系統之一主系統處理器的一輸出命令;根據上述輸出命令從上述主系統處理器中之一共享記憶體讀入一第一資料;使用一私密金鑰對上述第一資料進行加密,並產生一已加密第一資料;以及輸出上述已加密第一資料至一外部記憶體。
Description
本揭露係有關於一種保護外部記憶體資料的方法及系統,且特別係有關於基於隔離執行環境之保護外部記憶體資料的方法及系統。
通常包括微處理器的晶片內部並沒有足夠的記憶體元件,因此微處理器會搭配位於晶片外部的記憶體元件,例如,動態隨機存取記憶體(Dynamic Random Access Memory,DRAM),來做為其額外的儲存空間。而微處理器運行時所使用的暫存資料將會被存放於外部記憶體元件中。
然而,這些存放於晶片外部的資料較容易成為惡意攻擊的目標。相較於存放至晶片內部的儲存空間,存放於晶片外部的資料較容易被利用探針等方式竊取,或是資料易遭受破壞。
因此,透過一些機制來保障存放於晶片外部資料的安全性是必要的。
以下揭露的內容僅為示例性的,且不意指以任何方式加以限制。除所述說明方面、實施方式和特徵之外,透過參照附圖和下述具體實施方式,其他方面、實施方式和特徵也將顯而易見。即,以下揭露的內容被提供以介紹概念、重點、益處及本揭露所描述新穎且非顯而易見的技術優勢。所選擇,非所有的,實施例將進一步詳細描述如下。因此,以下揭露的內容並不意旨在所要求保護主題的必要特徵,也不意旨在決定所要求保護主題的範圍中使用。
因此,本揭露之主要目的即在於提供一種基於隔離執行環境之保護外部記憶體資料的方法及系統,以改善上述缺點。
本揭露提出一種基於隔離執行環境之保護外部記憶體資料的方法,用於位於一晶片系統之一隔離執行環境(Isolated Execution Environment,IEE)中的一處理器中,包括:存取上述晶片系統內一主系統之一主系統處理器的一輸出命令;根據上述輸出命令從上述主系統中之一共享記憶體讀入一第一資料;使用一私密金鑰對上述第一資料進行加密,並產生一已加密第一資料;以及輸出上述已加密第一資料至一外部記憶體。
在一些實施例中,上述方法更包括:計算上述第一資料之一第一雜湊值;以及記錄上述第一雜湊值至上述隔離執行環境之一隨機存取記憶體中。
在一些實施例中,在上述處理器存取上述讀取命令之前,上述方法更包括:存取上述主系統處理器所發出之一初始化命令;根據上述初始化命令存取位於上述隔離執行環境中至少一真亂數產生器(True Random Number Generator,TRNG),以產生一亂數;根據上述亂數產生上述私密金鑰;儲存上述私密金鑰於上述隔離執行環境中之一隨機存取記憶體中;以及回覆一完成訊息至上述主系統處理器。
在一些實施例中,上述方法更包括:存取上述主系統處理器中之一讀入命令;根據上述讀入命令從上述外部記憶體中讀入一已加密第二資料;使用上述私密金鑰對上述已加密第二資料進行解密,並產生一第二資料;以及傳送上述第二資料至上述主系統中之上述共享記憶體。
在一些實施例中,上述方法更包括:計算上述第二資料之一第二雜湊值;將上述第二雜湊值與記錄在上述隨機存取記憶體中對應上述第二資料之一第三雜湊值進行比對,並產生一比對結果;以及當上述比對結果不正確時,無效上述第二資料,並回報一錯誤訊息至上述主系統處理器。
上述方法更包括:存取上述主系統處理器中之一程式載入命令;根據上述程式載入命令將一程式從上述主系統載入至上述隔離執行環境之一隨機存取記憶體中;使用一認證金鑰對上述程式進行驗證,並產生一驗證結果;以及當上述驗證結果符合一程式簽章時,載入並執行上述程式。
本揭露提出一種基於隔離執行環境之保護外部記憶體資料的系統,上述系統係包括:一主系統,包括;一主系統處理器;以及一共享記憶體,耦接至上述主系統處理器;以及一隔離執行環境,耦接至上述主系統,包括:一處理器,其中上述處理器係執行以下步驟:存取上述主系統處理器中之一輸出命令;根據上述輸出命令從上述主系統中之上述共享記憶體讀入一第一資料;使用一私密金鑰對上述第一資料進行加密,並產生一已加密第一資料;以及輸出上述已加密第一資料至一外部記憶體。
本揭露實施例提供一種保護外部記憶體資料的方法及系統,加入了一隔離執行環境(Isolated Execution Environment,IEE)至晶片系統(SoC)中。隔離執行環境在晶片系統(SoC)中係為有別於主要運行系統的可獨立運作系統。隔離執行環境有處理器可執行程式,有專用的記憶體以儲存暫存資料。另外,隔離執行環境更包含亂數產生器以產生純亂數。隔離執行環境中的裝置僅可被隔離執行環境中的處理器使用,以達到與主系統之運作隔離並保護外部記憶體資料的目的。
現在將詳細參考本揭露的各實施例,其示例在附圖中示出。雖然本揭露將結合這些實施例進行描述,但是應該理解它們並非旨在將本揭露限定於這些實施例。相反,本揭露旨在覆蓋可以包括在如隨附請求項所限定的本揭露的精神和範圍內的替換、修改和等同物。此外,在本揭露的實施例的以下詳細描述中,闡述了許多具體細節以提供對本揭露的透徹理解。然而本領域之技術人員將認識到本揭露可以沒有這些具體細節而實施。在其他實例中,沒有詳細描述習知的方法、步驟、元件和電路,以免對本揭露的實施例的各方面造成不必要的混淆。
符號和術語:
接下來的部分詳細描述以過程、邏輯塊、處理以及對電腦記憶體內資料位元進行操作其他象徵性表示來呈現。這些描述和表示是由資料處理領域技術人員所使用的手 段,以向本領域的其他技術人員最有效地傳達他們工作的實質。在本揭露中,過程、邏輯塊、 處理等等,被設想為得出期望結果的步驟或指令的自洽序列。步驟利用物理量的物理操縱。 通常,儘管不是必要地,這些量採用能在電腦系統中被儲存、轉移、組合、對比和另外操縱的電或磁訊號的形式。己經證明,主要是出於共同使用的原因,將這些訊號稱為交易處理、位元、值、元素、符號、字元、樣本、像素等等有時是方便的。
然而,要牢記的是,所有的這些和類似的術語都要與適當的物理量相關聯,且僅僅是應用於這些量的便捷標籤。除非特別聲明,否則在下面的論述中很明顯,應意識到貫穿本揭露,利用術語諸如「存取」、「讀入」、「計算」、「儲存」、「記錄」、「決定」、「產生」、「驗證」、「回覆」等等的討論, 指的是電腦系統的動作與過程(如第2、4、6A~6B、7圖的方法流程)或類似的電子計算設備或處理器(如第1、3、5圖的晶片系統)。電腦系統或類似的電子計算設備對電腦系統記憶體、暫存器或其他這類資訊儲存、傳輸或顯示裝置內以物理(電子)量表示的資料進行操縱和轉換。
本揭露描述的實施例可一般圍繞著駐留在某一形式的電腦可讀儲存媒體上的電腦可執行指令加以討論,諸如由一台或多台電腦或其他設備執行的程式模組。以示例的方式但非限制,電腦可讀儲存媒體可以包括非暫時性電腦可讀儲存媒體和通訊媒體;非暫時性電腦可讀媒體包括除了暫時性傳播訊號之外所有的電腦可讀媒體。通常,程式模組包括例行程序、程式、物件、元件、資料結構等等,其執行特定任務或實現特定的抽象數據類型。程式模組的功能可以在各種實施例中按照期望加以組合或分配。
電腦儲存媒體包括易揮發性和非易揮發性、可移動的和不可移動的以任何方法或技術實現的媒體,用於儲存資訊諸如電腦可讀指令、資料結構、程式模組或其他資料。電腦儲存媒體包括但不限於,隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、電子抹除式可複寫唯讀記憶體(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、閃速記憶體或其他記憶體技術、唯讀記憶光碟(Compact Disc Read-Only Memory, CD-ROM)、數位多功能光碟(Digital Versatile Disc,DVD)或其他光碟儲存裝置、盒式磁帶、磁碟、磁片儲存裝置或其他磁性儲存裝置,或可用於儲存所需的資訊並且可被電腦存取的其它任何媒體。電腦儲存媒體本身不包括訊號。
通訊媒體一般包含電腦可讀取指令、資料結構、程式模組或其它採用諸如載波或其他傳輸機制之類的模組化數據訊號形式的數據,並包括任何資訊傳遞媒體。術語「模組化數據訊號」係指具有一或多個特徵集合或以在訊號中編碼資訊之一方式更改的訊號。舉例但不侷限於,通訊媒體包括像是有線網路或直接有線連接的有線媒體及無線媒體,像是聲頻、射頻(Radio frequency, RF)、紅外線以及其它無線媒體。上述媒體的組合包括在電腦可讀取媒體的範圍內。
第1圖係顯示根據本揭露一實施例所述之晶片系統100的架構圖。晶片系統100寬泛地代表任何能執行電腦可讀指令的單一處理器或多處理器計算設備或能夠執行電腦可讀指令的系統。晶片系統100的示例包括但不限於,工作站、膝上型電腦、客戶端終端、伺服器、分散式運算系統、手持設備或任何其他計算系統或設備。在其最基本的配置中,晶片系統100可以包括至少一個本揭露的實施例的主系統110和隔離執行環境120。而主系統110可透過隔離執行環境120儲存資料至位於晶片系統100外部之一外部記憶體140的區塊1~區塊n中。
主系統110至少包括一主系統處理器112、一共享記憶體114、一相互觸發裝置(Inter Trigger)116及一系統匯流排(BUS)118,其中主系統處理器112、共享記憶體114及相互觸發裝置116係耦接至系統匯流排118。
隔離執行環境120耦接至系統匯流排118,並至少包括一處理器122、一隨機存取記憶體(Random Access Memory,RAM)124、一真亂數產生器(True Random Number Generator,TRNG)126、一非揮發性記憶體(Non-Volatile Memory,NVM)128及一外部存取匯流排(BUS)130,其中處理器122係耦接至隨機存取記憶體124、真亂數產生器126、非揮發性記憶體128及外部存取匯流排130。
主系統處理器112包含本揭露的實施例,並且通常代表任何類型或形式的、能處理資料或解釋並執行指令的處理單元。在此實施例中,主系統處理器112為晶片系統100中提供主要功能的處理器。在某些實施例中,主系統處理器112可以從軟體應用或模組接收指令。這些指令可以使主系統處理器112實施一個或多個本揭露描述和/或示出的示範性實施例的功能。
共享記憶體114通常代表任何類型或形式的、能儲存資料和/或其他電腦可讀指令的易揮發性或非易揮發性儲存裝置或媒體。共享記憶體114的示例包括但不限於,隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、快閃記憶體或任何其他適合的記憶體設備。共享記憶體114可被主系統處理器112以及隔離執行環境120中的處理器122存取以進行資料交換。此外,共享記憶體114可提供暫存空間以儲存要置放於外部記憶體140的資料以及從外部記憶體140讀取的資料。
相互觸發裝置116主要係觸發處理主系統處理器112與隔離執行環境120中之處理器122之間的通訊。相互觸發裝置116可被隔離執行環境120中之處理器122存取以發出通知訊號命令主系統處理器112。相互觸發裝置116亦可被主系統處理器112存取以發出通知訊號命令隔離執行環境120中之處理器122。
隔離執行環境120中之處理器122主要係用以執行程式,其中上述程式至少包括可執行的現代密碼學演算法。密碼學演算法包括但不限制於對稱式加密演算法的進階加密標準(Advanced Encryption Standard,AES)、及雜湊值運算的安全雜湊演算法 (Secure Hash Algorithm,SHA)。此外,處理器122可執行儲存於隔離執行環境120中非揮發性記憶體128中的程式,或是可執行從主系統處理器112中載入至非揮發性記憶體128中的程式。在一實施例中,處理器122從主系統110中載入程式至非揮發性記憶體128的過程中需執行安全啟動流程以確認程式的完整性及真實性。
真亂數產生器126係用以產生亂數,且真亂數產生器126僅可被隔離執行環境120中的處理器122所存取。
隨機存取記憶體124可存放處理器122從主系統110中載入之程式、儲存於外部記憶體140中每一資料的雜湊值以及用以加密資料的一私密金鑰(Private key)。而隨機存取記憶體124僅可被隔離執行環境120中的處理器122所存取。
非揮發性記憶體128係用以儲存處理器122預設執行的程式,且非揮發性記憶體128僅可被隔離執行環境120中的處理器122所存取。
外部存取匯流排130係用以使隔離執行環境120中的處理器122能夠存取外部記憶體140,且外部存取匯流排130僅可被隔離執行環境120中的處理器122所存取。
第2圖係顯示根據本揭露一實施例所述之隔離執行環境之初始化程序的方法流程圖200。此方法可由如第1圖所示隔離執行環境120中的處理器122所執行。
須先說明的是,初始化程序係為建立系統會議(Session)階段的過程,利用隔離執行環境中的真亂數產生器126產生亂數,以該亂數做為產生會議金鑰的種子。接著,再由處理器122運行相對應的金鑰產生演算法(Key Generation)產生會議金鑰(即,私密金鑰),並儲存於隔離執行環境120中。初始化程序如下述:
在步驟S205中,處理器122存取一初始化命令。更詳細地說明,主系統處理器112會先發出一初始化命令通知處理器122。而處理器122係藉由相互觸發裝置116存取上述初始化命令。
接著,在步驟S210中,處理器122根據上述初始化命令存取位於隔離執行環境120中至少一真亂數產生器126,以產生一亂數。
在步驟S215中,處理器122根據上述亂數產生私密金鑰。再來,在步驟S220中,處理器122儲存上述私密金鑰於上述隔離執行環境120中之一隨機存取記憶體124中。
在步驟S225中,處理器122回覆一完成訊息至上述主系統處理器112。更詳細地說明,處理器122係透過存取相互觸發裝置116以回覆初始化過程之一完成訊息至上述主系統處理器112。
第3圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的系統300簡化示意圖。此系統300和第1圖中相同名稱的元件,其功能亦如前所述,在此不再贅述。為方便說明,系統300中之主系統110及隔離執行環境120僅示出部份元件,本領域之技術人士可理解在第3圖中的主系統110及隔離執行環境120係與第1圖相同。
第3圖係說明隔離執行環境120的處理器122如何輸出第一資料至外部記憶體140中,其中此輸出過程係一加密過程。而輸出第一資料的過程描述如下:
在步驟S1中,隔離執行環境120之處理器122從主系統110的共享記憶體114中讀取一第一資料Plaintext 1,其中此第一資料Plaintext 1係以一預先定義的區塊為單位。
接著,在步驟S2中,處理器122使用存於隨機存取記憶體124中的一私密金鑰對第一資料Plaintext 1進行加密,並計算加密前第一資料Plaintext 1的雜湊值並記錄於隨機存取記憶體124的區塊0中。
在步驟S3中,處理器122透過外部存取匯流排輸出已加密第一資料Cipher 1至外部記憶體140的區塊1中儲存。
第4圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的方法流程圖400。此方法流程圖400係更進一步詳細說明第3圖之流程,此方法可用於第1圖的晶片系統100或第3圖的系統300中。
在步驟S405中,位於隔離執行環境120中的一處理器122存取主系統處理器112中之一輸出命令。更詳細地說明,主系統處理器112會先發出一輸出命令通知處理器122。而處理器122係藉由相互觸發裝置116存取上述輸出命令。
在步驟S410中,處理器122檢查是否已完成初始化程序。當處理器122檢查已完成初始化程序時(在步驟S410中的「是」),在步驟S415中,處理器122根據上述輸出命令從主系統110中之共享記憶體114讀入一第一資料。
接著,在步驟S420中,處理器122使用一私密金鑰對上述第一資料進行加密,並產生一已加密第一資料。在步驟S425中,處理器122計算上述第一資料之一第一雜湊值,並記錄上述第一雜湊值至隔離執行環境120之隨機存取記憶體124中。
再來,在步驟S430中,處理器122透過外部存取匯流排130輸出已加密第一資料至外部記憶體140。在步驟S435中,處理器122透過存取相互觸發裝置116回報一完成訊息至主系統處理器112,其中上述完成訊息係指示第一資料輸出流程完成。
當處理器122檢查未完成初始化程序時(在步驟S410中的「否」),在步驟S440中,處理器122透過存取相互觸發裝置116回報一錯誤訊息至主系統處理器112。
第5圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的系統500簡化示意圖。此系統500和第1圖中相同名稱的元件,其功能亦如前所述,在此不再贅述。為方便說明,系統500中之主系統110及隔離執行環境120僅示出部份元件,本領域之技術人士可理解在第3圖中的主系統110及隔離執行環境120係與第1圖相同。
第5圖係說明隔離執行環境120的處理器122如何由外部記憶體140讀入第二資料至主系統110的共享記憶體114中,其中此讀入過程係一解密過程。而讀入第二資料的過程描述如下:
在步驟S1中,隔離執行環境120之處理器122透過外部存取匯流排130從外部記憶體140讀入位於區塊2的一已加密第二資料(Cipher 2)142,其中上述已加密第二資料142係以一個預先定義的區塊為單位。
在步驟S2中,處理器122使用儲存於隔離執行環境120之隨機存取記憶體124中的一私密金鑰對上述已加密第二資料142進行解密,並計算解密後第二資料142的第二雜湊值。
在步驟S3中,處理器122輸出第二資料(Plaintext 2)至主系統110的共享記憶體114中。
第6A~6B圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的方法流程圖600。此方法流程圖600係更進一步詳細說明第5圖之流程,此方法可用於第1圖的晶片系統100或第3圖的系統300中。
在步驟S605中,位於隔離執行環境120中的一處理器122存取主系統處理器112中之一讀入命令。更詳細地說明,主系統處理器112會先發出一讀入命令通知處理器122。而處理器122係藉由相互觸發裝置116存取上述讀入命令。
在步驟S610中,處理器122檢查是否已完成初始化程序。當已完成初始化程序時(在步驟S610中的「是」),在步驟S615中,處理器122根據上述讀入命令從上述外部記憶體140中讀入一已加密第二資料。當未完成初始化程序時(在步驟S610中的「否」),在步驟S645中,處理器122透過存取相互觸發裝置116回報一錯誤訊息至主系統處理器112。
接著,在步驟S620中,處理器122使用上述私密金鑰對上述已加密第二資料進行解密,並產生一第二資料且計算上述第二資料之一第二雜湊值。在步驟S625中,處理器122傳送上述第二資料至主系統110中之共享記憶體114中。
再來,在步驟S630中,處理器122將上述第二雜湊值與記錄在上述隨機存取記憶體124中對應上述第二資料之一第三雜湊值進行比對,並產生一比對結果。在步驟S635中,處理器122判斷比對結果是否正確(即,第二雜湊值是否與第三雜湊值相等)。
當處理器122判斷比對結果正確(即,第二雜湊值與第三雜湊值相等)時(步驟S635中的「是」),在步驟S640中,處理器122透過存取相互觸發裝置116回報一完成訊息至主系統處理器112,其中上述完成訊息係指示讀入第二資料流程完成。當處理器122判斷比對結果不正確(即,第二雜湊值與第三雜湊值不相等)時(步驟S635中的「否」),在步驟S650中,處理器122無效上述第二資料,並透過存取相互觸發裝置116回報一錯誤訊息至上述主系統處理器112。
第7圖係顯示根據本揭露一實施例所述之處理器載入程式的方法流程圖700。此方法可用於第1圖的晶片系統100中之隔離執行環境120中。
在本揭露中,隔離執行環境120中之處理器122係預設執行儲存於隔離執行環境120之非揮發性記憶體128中的程式。當載入更新的軟體及演算法時,隔離執行環境120中之處理器122將透過儲存在隨機存取記憶體128中的程式載入流程以從主系統110中讀入更新資料,其中更新資料包括程式資料及程式簽章,之後處理器122透過一認證金鑰驗證通過後才執行該程式。認證金鑰與預設程式一樣皆儲存於隔離執行環境120中的非揮發性記憶體128中。處理器122載入程式流程如下:
在步驟S705中,位於隔離執行環境120中的一處理器122存取主系統處理器112中之一程式載入命令。更詳細地說明,主系統處理器112會先發出一程式載入命令通知處理器122。而處理器122係藉由相互觸發裝置116存取上述程式載入命令。
在步驟S710中,處理器122根據上述程式載入命令將一程式從主系統110載入至上述隔離執行環境120之一隨機存取記憶體124中。
在步驟S715中,處理器122使用一認證金鑰對上述程式進行驗證,並產生一驗證結果。在步驟S720中,處理器122判斷驗證結果是否符合一程式簽章。
當處理器122判斷驗證結果符合一程式簽章時(步驟S720中的「是」),在步驟S725中,處理器122載入並執行上述程式。當處理器122判斷驗證結果不符合一程式簽章時(步驟S720中的「否」),在步驟S730中,處理器122透過存取相互觸發裝置116回報一錯誤訊息至上述主系統處理器112。
第8圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的實際晶片系統800示意圖。為方便說明,晶片系統800中之主系統810及隔離執行環境820僅示出部份元件,本領域之技術人士可理解在第8圖中的主系統810及隔離執行環境820係與第1圖相同。
在此一實施例中,定義共享記憶體814及外部動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)840中的資料區塊大小為4 Kbyte,且在隔離執行環境820中係使用Arm Cortex-M4做為處理器,而執行的加解密演算法為AES-256,因此私密金鑰的長度為256位元(Bit)。雜湊演算法係為SHA-2 (224位元),因此儲存於隔離執行環境820的隨機存取記憶體中對應於每個外部動態隨機存取記憶體840區塊之雜湊值佔224位元的空間。主系統810中使用Arm Cortex-A35做為主要的處理器,主系統810中的共享記憶體814區塊至少需要1個區塊大小的空間,即4 KByte。主系統810中的相互觸發裝置816使用中斷訊號(INT)以分別通知在隔離執行環境820中的處理器Cortex-M4 822以及主系統810的主系統處理器Cortex-A35 812。
第9圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的實際系統900示意圖。為方便說明,系統900中之主系統910及隔離執行環境920僅示出部份元件,本領域之技術人士可理解在第9圖中的主系統910及隔離執行環境920係與第1圖相同。
在此一實施例中,定義共享記憶體914及外部動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)940中的資料區塊大小為1Kbyte,且在隔離執行環境920中係使用Arm Cortex-M0做為處理器,而執行的加解密演算法為資料流加密演算法RC4。私密金鑰的長度可被定義為小於或等於區塊大小的值。雜湊演算法為SHA-1(160位元),因此儲存於隔離執行環境920的隨機存取記憶體924中對應於每個外部動態隨機存取記憶體940區塊的雜湊值佔160位元的空間。主系統910中使用Arm Cortex-M4做為主系統處理器912,主系統910中的共享記憶體914區塊至少需要1個區塊大小的空間,即1 Kbyte。主系統910中的的相互觸發裝置916使用中斷訊號(INT)以分別通知在隔離執行環境920中的處理器Cortex-M0 922以及主系統910的主系統處理器914 Cortex-M4。
如上敘述可知,本揭露基於隔離執行環境之保護外部記憶體資料的方法及系統在晶片系統中提供了另一隔離執行環境,更加入雜湊值運算以提供資料完整性的檢查。此外,雜湊值係儲存於隔離執行環境中,可有效避免受到主系統中其它的惡意程式破壞,提供更佳的安全性。
本揭露之操作方法,或特定型態或其部份,可以以程式碼的型態存在。程式碼可儲存於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限於外在形式之電腦程式產品,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之控制電路。程式碼也可透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之控制電路。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應用特定邏輯電路之獨特裝置。
在此所揭露程序之任何具體順序或分層之步驟純為一舉例之方式。基於設計上之偏好,必須了解到程序上之任何具體順序或分層之步驟可在此文件所揭露的範圍內被重新安排。伴隨之方法請求項以一示例順序呈現出各種步驟之元件,也因此不應被此所展示之特定順序或階層所限制。
申請專利範圍中用以修飾元件之「第一」、「第二」、「第三」等序數詞之使用本身未暗示任何優先權、優先次序、各元件之間之先後次序、或方法所執行之步驟之次序,而僅用作標識來區分具有相同名稱(具有不同序數詞)之不同元件。
雖然本揭露已以實施範例揭露如上,然其並非用以限定本案,任何熟悉此項技藝者,在不脫離本揭露之精神和範圍內,當可做些許更動與潤飾,因此本案之保護範圍當視後附之申請專利範圍所界定者為準。
100:晶片系統
110:主系統
112:主系統處理器
114:共享記憶體
116:相互觸發裝置
118:系統匯流排
120:隔離執行環境
122:處理器
124:隨機存取記憶體
126:真亂數產生器
128:非揮發性記憶體
130:外部存取匯流排
140:外部記憶體
200:方法流程圖
S205,S210,S215,S220,S225:步驟
300:系統
400:方法流程圖
S405,S410,S415,S420,S425,S430,S435,S440:步驟
500:系統
600:方法流程圖
S605,S610,S615,S620,S625,S630,S635,S640,S645,S650:步驟
700:方法流程圖
S705,S710,S715,S720,S725,S730:步驟
800:晶片系統
810:主系統
812:Cortex-A35
814:共享記憶體
816:相互觸發裝置
818:系統匯流排
820:隔離執行環境
822:Cortex-M4
824:隨機存取記憶體
840:外部動態隨機存取記憶體
INT:中斷訊號
900:晶片系統
910:主系統
912:Cortex-M4
914:共享記憶體
916:相互觸發裝置
918:系統匯流排
920:隔離執行環境
922:Cortex-M0
924:隨機存取記憶體
940:外部動態隨機存取記憶體
第1圖係顯示根據本揭露一實施例所述之晶片系統的架構圖。
第2圖係顯示根據本揭露一實施例所述之隔離執行環境之初始化程序的方法流程圖。
第3圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的系統簡化示意圖。
第4圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的方法流程圖。
第5圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的系統簡化示意圖。
第6A~6B圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的方法流程圖。
第7圖係顯示根據本揭露一實施例所述之處理器載入程式的方法流程圖。
第8圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的實際晶片系統示意圖。
第9圖係顯示根據本揭露一實施例所述之基於隔離執行環境之保護外部記憶體資料的實際系統示意圖。
100:晶片系統
110:主系統
112:主系統處理器
114:共享記憶體
116:相互觸發裝置
118:系統匯流排
120:隔離執行環境
122:處理器
124:隨機存取記憶體
126:真亂數產生器
128:非揮發性記憶體
130:外部存取匯流排
140:外部記憶體
Claims (6)
- 一種基於隔離執行環境之保護外部記憶體資料的方法,用於位於一晶片系統之一隔離執行環境(Isolated Execution Environment,IEE)中的一處理器中,其中該處理器用於執行下列步驟,包括:存取上述晶片系統內一主系統之一主系統處理器的一輸出命令;根據上述輸出命令從上述主系統中之一共享記憶體讀入一第一資料;使用一私密金鑰對上述第一資料進行加密,並產生一已加密第一資料;輸出上述已加密第一資料至一外部記憶體;存取上述主系統處理器中之一讀入命令;根據上述讀入命令從上述外部記憶體中讀入一已加密第二資料;使用上述私密金鑰對上述已加密第二資料進行解密,並產生一第二資料;以及傳送上述第二資料至上述主系統中之上述共享記憶體;其中在上述處理器存取上述讀入命令之前,上述方法更包括:存取上述主系統處理器所發出之一初始化命令;根據上述初始化命令存取位於上述隔離執行環境中至少一真亂數產生器(True Random Number Generator,TRNG),以產生一亂數; 根據上述亂數產生上述私密金鑰;儲存上述私密金鑰於上述隔離執行環境中之一隨機存取記憶體中;以及回覆一完成訊息至上述主系統處理器。
- 如請求項1之基於隔離執行環境之保護外部記憶體資料的方法,上述方法更包括:在使用上述私密金鑰對上述第一資料進行加密,並產生上述已加密第一資料之後,計算上述第一資料之一第一雜湊值;以及記錄上述第一雜湊值至上述隔離執行環境之該隨機存取記憶體中。
- 如請求項1之基於隔離執行環境之保護外部記憶體資料的方法,上述方法更包括:在使用上述私密金鑰對上述已加密第二資料進行解密,並產生上述第二資料之後,計算上述第二資料之一第二雜湊值;將上述第二雜湊值與記錄在上述隨機存取記憶體中對應上述第二資料之一第三雜湊值進行比對,並產生一比對結果;以及當上述比對結果不正確時,無效上述第二資料,並回報一錯誤訊息至上述主系統處理器。
- 如請求項1之基於隔離執行環境之保護外部記憶體資料的方法,上述方法更包括:存取上述主系統處理器中之一程式載入命令;根據上述程式載入命令將一程式從上述主系統載入至上述隔離執行環境之該隨機存取記憶體中;使用一認證金鑰對上述程式進行驗證,並產生一驗證結果;以 及當上述驗證結果符合一程式簽章時,載入並執行上述程式。
- 一種基於隔離執行環境之保護外部記憶體資料的系統,上述系統係包括:一主系統,包括:一主系統處理器;以及一共享記憶體,耦接至上述主系統處理器;以及一隔離執行環境,耦接至上述主系統,包括:一處理器;其中上述處理器係執行以下步驟:存取上述主系統處理器中之一輸出命令;根據上述輸出命令從上述主系統中之上述共享記憶體讀入一第一資料;使用一私密金鑰對上述第一資料進行加密,並產生一已加密第一資料;輸出上述已加密第一資料至一外部記憶體;存取上述主系統處理器中之一讀入命令;根據上述讀入命令從上述外部記憶體中讀入一已加密第二資料;使用上述私密金鑰對上述已加密第二資料進行解密,並產生一第二資料;以及傳送上述第二資料至上述主系統中之上述共享記憶體;其中在上述處理器存取上述讀入命令之前,上述處理器更執行:存取上述主系統處理器所發出之一初始化命令; 根據上述初始化命令存取位於上述隔離執行環境中至少一真亂數產生器(True Random Number Generator,TRNG),以產生一亂數;根據上述亂數產生上述私密金鑰;儲存上述私密金鑰於上述隔離執行環境中之一隨機存取記憶體中;以及回覆一完成訊息至上述主系統處理器。
- 如請求項5之基於隔離執行環境之保護外部記憶體資料的系統,其中上述處理器更執行:在使用上述私密金鑰對上述第一資料進行加密,並產生上述已加密第一資料之後,計算上述第一資料之一第一雜湊值;以及記錄上述第一雜湊值至上述隔離執行環境中之該隨機存取記憶體中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109145009A TWI797521B (zh) | 2020-12-18 | 2020-12-18 | 基於隔離執行環境之保護外部記憶體資料的方法及系統 |
CN202111491916.8A CN114647873A (zh) | 2020-12-18 | 2021-12-08 | 基于隔离执行环境的保护外部存储器数据的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109145009A TWI797521B (zh) | 2020-12-18 | 2020-12-18 | 基於隔離執行環境之保護外部記憶體資料的方法及系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202230178A TW202230178A (zh) | 2022-08-01 |
TWI797521B true TWI797521B (zh) | 2023-04-01 |
Family
ID=81991828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109145009A TWI797521B (zh) | 2020-12-18 | 2020-12-18 | 基於隔離執行環境之保護外部記憶體資料的方法及系統 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114647873A (zh) |
TW (1) | TWI797521B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200832182A (en) * | 2006-09-12 | 2008-08-01 | Ibm | System and method for securely restoring a program context from a shared memory |
CN101533451A (zh) * | 2008-05-24 | 2009-09-16 | 威盛电子股份有限公司 | 提供安全执行环境的微处理器及其执行安全编码的方法 |
US20170061122A1 (en) * | 2015-08-24 | 2017-03-02 | Accenture Global Services Limited | Isolated memory space |
US20200356492A1 (en) * | 2018-11-21 | 2020-11-12 | Nvidia Corporation | Securing memory accesses in a virtualized environment |
-
2020
- 2020-12-18 TW TW109145009A patent/TWI797521B/zh active
-
2021
- 2021-12-08 CN CN202111491916.8A patent/CN114647873A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200832182A (en) * | 2006-09-12 | 2008-08-01 | Ibm | System and method for securely restoring a program context from a shared memory |
CN101533451A (zh) * | 2008-05-24 | 2009-09-16 | 威盛电子股份有限公司 | 提供安全执行环境的微处理器及其执行安全编码的方法 |
US20170061122A1 (en) * | 2015-08-24 | 2017-03-02 | Accenture Global Services Limited | Isolated memory space |
US20200356492A1 (en) * | 2018-11-21 | 2020-11-12 | Nvidia Corporation | Securing memory accesses in a virtualized environment |
Also Published As
Publication number | Publication date |
---|---|
CN114647873A (zh) | 2022-06-21 |
TW202230178A (zh) | 2022-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9367701B2 (en) | Systems and methods for maintaining integrity and secrecy in untrusted computing platforms | |
US7318235B2 (en) | Attestation using both fixed token and portable token | |
US20130212401A1 (en) | Methods and devices for authentication and data encryption | |
KR20130140948A (ko) | 저장 장치의 식별자에 기반한 컨텐츠의 암복호화 장치 및 방법 | |
KR20110051181A (ko) | 데이터 보안 시스템, 방법 및 컴퓨터 판독가능 매체 | |
US9124432B2 (en) | Host device and authentication method for host device | |
US20150074406A1 (en) | Memory device and memory system | |
US20140006738A1 (en) | Method of authenticating a memory device by a host device | |
CN209803788U (zh) | 一种pcie可信密码卡 | |
US11019098B2 (en) | Replay protection for memory based on key refresh | |
WO2020000491A1 (zh) | 一种文件存储方法、装置及存储介质 | |
KR20210132721A (ko) | 네트워크에 액세스 시의 보안 통신 | |
US8798261B2 (en) | Data protection using distributed security key | |
TWI797521B (zh) | 基於隔離執行環境之保護外部記憶體資料的方法及系統 | |
US20140245011A1 (en) | Device and authentication method therefor | |
US11829231B2 (en) | Methods and systems for generating core dump in a user equipment | |
US11983420B2 (en) | Method and system for protecting data in external memory based on isolated execution environment | |
US11893115B2 (en) | Method for providing a secret unique key for a volatile FPGA | |
WO2016181976A1 (ja) | 情報送信装置 | |
CN117501271A (zh) | 通过利用物理不可克隆函数puf进行数据加密/解密向主机认证存储设备 | |
KR102476081B1 (ko) | Lisp을 이용한 통신에서 상호 인증을 수행하는 방법, 이를 수행하기 위한 장치 및 시스템 | |
US11816219B2 (en) | Binding a trust anchor and an ASIC | |
US11784807B2 (en) | Binding an ASIC to a trust anchor | |
US20220382867A1 (en) | Using a trust anchor to control functionality of an asic | |
US20220382912A1 (en) | Using a trust anchor to verify an identity of an asic |