TWI627556B - 微處理器與其中安全執行指令的方法 - Google Patents

微處理器與其中安全執行指令的方法 Download PDF

Info

Publication number
TWI627556B
TWI627556B TW105132329A TW105132329A TWI627556B TW I627556 B TWI627556 B TW I627556B TW 105132329 A TW105132329 A TW 105132329A TW 105132329 A TW105132329 A TW 105132329A TW I627556 B TWI627556 B TW I627556B
Authority
TW
Taiwan
Prior art keywords
instruction
key
microprocessor
encrypted
decryption key
Prior art date
Application number
TW105132329A
Other languages
English (en)
Other versions
TW201715434A (zh
Inventor
G 葛蘭 亨利
泰瑞 派克斯
布蘭特 比恩
湯姆士A 克理斯賓
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
Priority claimed from US14/884,547 external-priority patent/US9911008B2/en
Application filed by 威盛電子股份有限公司 filed Critical 威盛電子股份有限公司
Publication of TW201715434A publication Critical patent/TW201715434A/zh
Application granted granted Critical
Publication of TWI627556B publication Critical patent/TWI627556B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • 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
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Abstract

於微處理器中規劃一安全記憶體,儲存解密所需的資訊。該安全記憶體之存取有所限制,以避免遭惡意盜取。在安全執行模式,該安全記憶體之存取係基於所欲解密的加密指令之位址。該微處理器更可對取自安全記憶體的數據進行調整,更提升解密密鑰的複雜度。

Description

微處理器與其中安全執行指令的方法
本發明係有關於微處理器(microprocessor)領域,特別用於增加微處理器所執行的程式之安全性。
很多軟體程式在面臨破壞電腦系統安全的攻擊時,通常是脆弱不堪的。例如,駭客可藉由攻擊一運行中程式的緩衝溢位區漏洞(buffer overflow vulnerability)植入不當程式碼、並轉移主控權給該不當程式碼。如此一來,所植入的程式碼將主導被攻擊的程式。一種防範軟體程式遭攻擊的方案為指令集隨機化(instruction set randomization)。概略解釋之,指令集隨機化技術會先將程式加密(encrypt)為某些形式,再於處理器將該程式自記憶體提取後,於該處理器內解密(decrypt)該程式。如此一來,駭客便不易植入惡意指令,因為所植入的指令必須被適當地加密(例如,使用與所攻擊程式相同的加密密鑰或演算法)方會被正確地執行。例如,參閱文件「Counter Code-Injection Attacks with Instruction-Set Randomization,by Gaurav S.Kc,Angelos D.Keromytis,and Vassilis Prevelakis,CCS’03,October 27-30,2003,Washington,DC,USA,ACM 1-58113-738-9/03/0010」,其中敘述Bochs-x86 Pentium模擬器(emulator)之改良版本。相關技術的缺點已被廣泛討論。例如, 參閱資料「Where’s the FEEB?The Effectiveness of Instruction Set Randomization,by Ana Nora Sovarel,David Evans,and Nathanael Paul,http://www.cs.virginia.edu/feeb」。
本發明可表徵為揭露一種在一微處理器內安全執行加密指令的方法。複數個解密密鑰元儲存在一安全記憶體。加密指令係快取自一指令快取記憶體。兩個或更多上述解密密鑰元係接收自該安全記憶體。一解密密鑰係推導自上述兩個或更多解密密鑰元。快取自該指令快取記憶體的加密指令是採用推導自上述兩個或更多解密密鑰元的解密密鑰進行解密。隨後,解密的指令在該微處理器內被執行。
更進一步討論之,所揭露之方法包括提供一種微處理器結構,以避免從微處理器外部觀察出加密指令。
又更令一方面討論之,該微處理器透過一解密邏輯(例如,一解密電路)自一指令快取記憶體以及管線快取純文字以及加密指令兩者。一種實施例包括對快取自該指令快取記憶體的一加密指令以及推導自上述兩個或更多解密密鑰元的解密密鑰進行互斥運算。優選實施例中,該微處理器之設置更包括:同快取並解密上述純文字指令採等量的時間,快取並解密上述加密指令。
一種實施例中,所揭露之方法更涉及在推導該解密密鑰之前更新解碼密鑰元。
另一種實施例中,該解密密鑰之推導包括:基於一加密指令位址選擇兩個或更多解密密鑰元;以一函式運算一 加密指令位址所得的一數值旋轉移位上述解密密鑰元其中之一,以產生一旋轉移位解密密鑰元;以及,自減法積累以及加法積累中選擇其一,以積累該旋轉移位解密密鑰元至一第二解密密鑰元,上述減法積累以及加法積累的選擇係基於加密指令位址的一函式運算結果。
在一更具體實施例中,推導一解密密鑰的動作包括:對所採用的上述至少兩個解密密鑰元進行一數值運算;且產生一解密密鑰,該解密密鑰的有效密鑰長度等於一第一數值以及一第二數值的乘積,該第一數值為用於產生解密密鑰的解密密鑰元的可選擇數量,該第二數值為該數值運算所能產生的密鑰之可能數值組合的數量。
另一種實施例中,解密密鑰用於複數個加密指令塊,上述加密指令塊之長度不長於該有效密鑰長度,且各接續的加密指令塊係由源自至少一個不同的解密密鑰元的一個新的且不同的解密密鑰。
本發明也可表徵為提供一微控制器,包括一指令快取記憶體、一快取邏輯(例如,一快取電路)、一安全記憶體、一密鑰擴展邏輯(例如,一密鑰擴展電路)、以及一解密邏輯(例如,一解密電路)。該指令快取記憶體用於儲存加密指令。該快取邏輯係設置來從該指令快取記憶體快取加密指令。該安全記憶體係設置來儲存複數個解密密鑰元。該密鑰擴展邏輯係設置來從該等解密密鑰元之中兩個或更多解密密鑰元導出一解密密鑰。該解密邏輯係設置來以上述兩個或更多解密密鑰元導出的該解密密鑰對快取自該指令快取記憶體的一加密指令進 行解密。
在一種實施方式中,該指令快取記憶體也用於儲存純文字指令,快取自該指令快取記憶體的上述純文字指令以及加密指令皆設置成通過該解密邏輯管線化。該微處理器之設置更包括:同快取並解密上述純文字指令採等量的時間,快取並解密上述加密指令。
在另一種實施方式中,該解密邏輯包括互斥邏輯閘,設置來以上述兩個或更多解密密鑰元導出的該解密密鑰對快取自該指令快取記憶體的一加密指令進行互斥運算。
在另一種實施方式中,該安全記憶體的儲存區域僅允許安全執行模式的程式存取。在另一種實施方式中,上述解密密鑰元之更新是在該密鑰擴展邏輯使用解密密鑰元推導該解密密鑰之前進行。
在一種實施方式中,該密鑰擴展邏輯更設置成:基於一加密指令位址自該等解密密鑰元中選擇所需的上述兩個或更多解密密鑰元;以一函式運算一加密指令位址所得的一數值旋轉移位該解密密鑰元;以及,自減法積累以及加法積累中擇一,以積累該旋轉移位解密密鑰元至一第二解密密鑰元,且上述減法積累以及加法積累的選擇係基於一加密指令位址的一函式運算結果。
在另一種實施方式中,該密鑰擴展邏輯係設置來對所採用的上述至少兩個解密密鑰元進行一數值運算,以推導出解密密鑰。該解密密鑰的一有效密鑰長度等於一第一數值以及一第二數值的乘積。該第一數值為用於產生解密密鑰的解密 密鑰元的可選擇數量。該第二數值為該數值運算所能產生的密鑰之可能數值組合的數量。
在另一種實施方式中,該密鑰擴展邏輯係設置來將複數個解密密鑰用於複數加密指令塊。上述加密指令塊之長度不長於該有效密鑰長度,且該密鑰擴展邏輯係對各接續的加密指令塊施予源自至少一個不同的解密密鑰元的一個新的且不同的解密密鑰。
本發明可表徵為揭露一種在一微處理器內安全執行加密指令的方法。複數個主密鑰儲存於一安全記憶體。加密指令快取自一指令快取記憶體。基於一加密指令快取位址,自該安全記憶體選擇一組一或多個主密鑰。選定的該組主密鑰、或推導自選定的該組主密鑰的一解密密鑰係用於解密快取自該指令快取記憶體的加密指令。解密後的指令接著安全地在該微處理器內執行。
在另一種實施方式中,所揭露之方法更包括從選定的該組一或多個主密鑰推導出解密密鑰。更具體說明之,所揭露方法更包括對各快取量(fetch quantum)基於一加密指令快取位址推導新的一解密密鑰。在一種實施方式中,各解密密鑰的位元長度t為2s,其中s為一個快取量的位元組數。此外,上述加密指令分組成指令區塊,上述指令區塊的長度不大於解密密鑰的長度。所揭露方法更包括:基於上述指令區塊內的加密指令的快取位址,為各指令區塊推導出新的解密密鑰。
在另一種實施方式中,所揭露之方法更包括旋轉移位選定的該組一或多個主密鑰其一,據以產生新的一個解密 密鑰,其中所旋轉移位的量係基於該加密指令快取位址。在一種實施方式中,該加密指令快取位址的位[b:0]子集不影響主密鑰的旋轉移位量,其中數字0與b分別用於標示該加密指令快取位址的最低有效位元以及第b位有效位元。在另一實施例中,該加密指令快取位址的位[d:c]子集定義主密鑰的旋轉移位量,數字c以及d分別用於標示該加密指令快取位址的第c位有效位元以及第d位有效位元。更具體說明之,旋轉移位的動作係以n個可能旋轉移位量其一做主密鑰之旋轉移位,其中n=2m,m為該加密指令快取位址的位[d:c]子集的位元數。
在另一種實施方式中,所揭露方法更包括基於新的一加密指令快取位址選擇新的一組一或多個主密鑰,並據以推導新的一解密密鑰。在一種實施方式中,選擇新的一組一或多個主密鑰的動作決定於新的該加密指令快取位址的位[f:e]子集所代表的數值,其中數字e以及f分別用於標示該加密指令快取位址的第e位有效位元以及第f位有效位元。在一種實施方式中,新的一組一或多個主密鑰的選擇動作選擇包括選擇可用的q組一或多個主密鑰中任一組,其中p=2q,且q為新的該加密密鑰快取位址的位[f:e]子集中可能數值之一。
本發明可更表徵為揭露一微處理器,該微處理器可將加密指令安全地解密並且執行。該微控制器包括一指令快取記憶體、一快取邏輯(例如,一快取電路)、一安全記憶體、一密鑰選擇邏輯(例如,一密鑰選擇電路)、以及一解密邏輯(例如,一解密電路)。該指令快取記憶體用於儲存加密指令。該快取邏輯係設置來從該指令快取記憶體快取出加密指令。該安 全記憶體係設置來儲存複數個主密鑰。該密鑰選擇邏輯係設置來基於一加密指令快取位址選擇一組一或多個主密鑰。此外,該解密邏輯係設置來採用選定的該組一或多個主密鑰、或推導自選定的該組一或多個主密鑰的一解密密鑰來解密快取自該指令快取記憶體的加密指令。
在一種實施方式中,該微處理器更包括一解密密鑰產生邏輯(例如,解密密鑰產生電路),設置來從選定的該組一或多個主密鑰推導出解密密鑰。在一更具體實施例中,該解密密鑰產生邏輯係設置來對各快取量推導新的一解密密鑰。在一種實施方式中,各解密密鑰的位元長度t為2s,其中s為一個快取量的位元組數。此外,上述加密指令分組成指令區塊,上述指令區塊的長度不大於解密密鑰的長度,且該解密密鑰產生邏輯係設置來基於上述指令區塊內的加密指令的快取位址為各指令區塊推導出新的解密密鑰。
在另一種實施方式中,該解密密鑰產生邏輯係設置來旋轉移位選定的該組一或多個主密鑰其一,據以產生新的一個解密密鑰,且所旋轉移位的量係基於該加密指令快取位址。在一種實施方式中,該加密指令快取位址的位[b:0]子集不影響主密鑰的旋轉移位量,數字0與b分別用於標示該加密指令快取位址的最低有效位元以及第b位有效位元。更甚者,該加密指令快取位址的位[d:c]子集定義主密鑰旋轉移位的寬度,數字c以及d分別用於標示該加密指令快取位址的第c位有效位元以及第d位有效位元。更具體說明之,該解密密鑰產生邏輯係設置來以n個可能旋轉移位量其一做主密鑰之旋轉移位,其中 n=2m,且m為該加密指令快取位址的位[d:c]子集的位元數。
在另一種實施方式中,該解密密鑰產生邏輯係設置來基於新的一加密密鑰快取位址選擇新的一組一或多個主密鑰,並據以推導新的一解密密鑰。在一種實施方式中,新的該加密指令快取位址的位[f:e]子集決定新的該組一或多個主密鑰的修飾,數字c以及f分別用於標示該加密指令快取位址的第e位有效位元以及第f位有效位元。更甚者,該解密密鑰邏輯係設置來選擇可用的q組一或多個主密鑰中任一組,p=2q,q為新的該加密密鑰快取位址的位[f:e]子集中可能數值之一。
本發明可表徵為揭露一種在一微處理器內安全執行加密指令的方法。解密任何加密指令之前,該微處理器接收一請求(例如,指令型式),使自加密指令無法執行的一般執行模式切換至加密指令得以執行的一安全執行模式(SEM)。該微控制器有條件地允許該請求。需符合的條件自身可為某種密碼認證。例如,在一種實施方式中,該微處理器係設置來執行指令,以該指令的一即時數據字段將加密密鑰數值寫入該安全記憶體。
接著,該微處理器接收一指令,將用於一加密程式之解密的一組加密密鑰數值寫入該微處理器的安全記憶體。此指令不同於要求一般執行模式至安全執行切換的任何指令。
此後,該微處理器自一指令快取記憶體快取一加密程式,並且解密該加密程式為純文字指令。解密過程採用該安全記憶體內儲存的一或多組的一或多個加密密鑰數值或所 衍生之一或多個數值。
將加密程式指令解密為純文字指令時,該微處理器未將上述純文字指令曝光給任何非特權程式或該微處理器外的任何資源。
在一種實施方式中,儲存加密密鑰數值的該安全記憶體不可經該微處理器的一處理器匯流排訪問,且不屬於一快取記憶體分層結構的一部分。此外,一非特權程式無法對該安全記憶體讀取或寫入加密密鑰數值。
本發明另外表徵一種微處理器,包括:一指令處理管線;一處理器匯流排;一快取記憶體分層結構;以及儲存加密密鑰的一安全記憶體。
該微處理器係設置來:接收一請求,使自加密指令無法執行的一般執行模式切換至加密指令得以執行的一安全執行模式;有條件地允許該請求;執行指令,將一組一或多個加密密鑰數值寫入該微處理器的安全記憶體;以及自一指令快取記憶體快取一加密程式。該微處理器更設置來解密該加密程式為純文字指令,其中使用該指令處理管線中的一解密邏輯。該解密邏輯採用該安全記憶體中儲存的加密密鑰數值或所衍生之一或多個數值,以解密該加密程式。
在一種實施方式中,該微處理器係設置來執行程式,其中未將上述純文字指令曝光給任何非特權程式或該微處理器外的任何資源。在另一種實施方式中,該安全記憶體不可經該處理器匯流排訪問,且非該快取記憶體分層結構的一部分。因此,該微處理器避免一非特權程式對該安全記憶體讀取或寫 入加密密鑰數值,以限制該安全記憶體的存取。
在另一種實施方式中,該微處理器係設置來解密該加密程式的連續段落,其中係根據該加密程式之上述連續段落儲存的位址自該安全記憶體選擇多組一或多個加密密鑰數值或以其衍生數值做解密。
在另一種實施方式中,該微處理器係設置來根據該請求的形式是否為載有加密參數的一指令,有條件地允許該請求,以切換至該安全執行模式。該指令為一特權程式或程序的一部分,且解密時上述加密參數符合執行該加密程序的一預設標準。在一種實施方式中,上述加密參數以及加密程式之加密係採用不同的加密機制。
在另一種實施方式中,該加密程式的連續段落之加密係基於該加密程式的連續段落的儲存位址。
在另一種實施方式中,該微處理器更包括一般執行模式下運行之程式所無法存取的一安全執行模式異常處理邏輯以及一安全執行模式中斷處理邏輯,且該微處理器係設置成在運作於安全執行模式下使用上述安全執行模式異常處理邏輯以及安全執行模式中斷處理邏輯。更甚者,該微處理器避開加密指令之解密,除非該微處理器處於上述安全執行模式。
在另一種實施方式,該安全記憶體係設置來透過一加密通道接收加密密鑰數值。在另一種實施方式中,該微處理器係設置來避開加密指令之解密,除非該微處理器操作在x86架構的系統管理模式。
以上描述並不意圖限定本案的表徵方式以及保護 範圍。本發明有多種表徵、保護方式,並不意圖限定於以上敘述。本發明替代表徵可僅包括此發明內容有描述的子集內容、或與其他未於此部分提及的內容結合之子集。專利保護範圍實際界定要依照其描述內容作解讀。
100‧‧‧微處理器
102‧‧‧指令快取記憶體
104‧‧‧提取單元
106‧‧‧指令數據(可為加密)
108‧‧‧解碼單元
112‧‧‧執行單元
114‧‧‧引出單元
118‧‧‧通用暫存器
122‧‧‧安全存儲區
124‧‧‧密鑰暫存器檔案
128‧‧‧標誌暫存器
132‧‧‧微代碼單元
134‧‧‧提取位址
142‧‧‧主密鑰暫存器
144‧‧‧控制暫存器
148‧‧‧E位元
152‧‧‧密鑰擴展器
154‧‧‧多工器
156‧‧‧互斥邏輯
162‧‧‧純文字指令數據
164‧‧‧提取位址產生器
172‧‧‧兩組密鑰
174‧‧‧解密密鑰
176‧‧‧多位元的二進位零值
178‧‧‧多工器154的輸出
212‧‧‧多工器A
214‧‧‧多工器B
216‧‧‧旋轉器
218‧‧‧加法/減法器
234‧‧‧第一密鑰
236‧‧‧第二密鑰
238‧‧‧旋轉器的輸出
302-316‧‧‧步驟方塊
402‧‧‧E位元欄位
408‧‧‧多個位元的標準x86標誌
500‧‧‧密鑰載入指令
502‧‧‧操作碼
504‧‧‧密鑰暫存器檔案目標位址
506‧‧‧安全存儲區來源位址
600‧‧‧密鑰切換指令
602‧‧‧操作碼
604‧‧‧密鑰暫存器檔案索引
702-708‧‧‧方塊步驟
800‧‧‧記憶體用量
900‧‧‧分支與切換密鑰指令
902‧‧‧操作碼
904‧‧‧密鑰暫存器檔案索引
906‧‧‧分支資訊
1002-1018‧‧‧步驟方塊
1102-1106‧‧‧步驟方塊
1200‧‧‧分支與切換密鑰指令
1202‧‧‧操作碼
1300‧‧‧塊位址範圍表
1302‧‧‧位址範圍
1304‧‧‧密鑰暫存器檔案索引
1402-1418‧‧‧步驟方塊
1500‧‧‧分支與切換密鑰指令
1502‧‧‧操作碼
1600‧‧‧塊位址範圍表
1604‧‧‧安全存儲區位址
1714‧‧‧步驟方塊
1802-1806‧‧‧步驟方塊
1902-1944‧‧‧步驟方塊
2002-2008‧‧‧步驟方塊
2104‧‧‧索引
2202-2216‧‧‧步驟方塊
2302-2316‧‧‧步驟方塊
2402‧‧‧淘汰位元
2506‧‧‧步驟方塊
2607、2609‧‧‧步驟方塊
2702‧‧‧分支目標位址快取記憶體(BTAC)
2706‧‧‧目標位址
2708‧‧‧採用/不採用指標
2712‧‧‧密鑰切換邏輯
2714‧‧‧型式指標
2716‧‧‧密鑰暫存器檔案索引
2802‧‧‧BTAC陣列
2808‧‧‧BTAC單元
2902‧‧‧有效位元
2904‧‧‧標記欄位
2906‧‧‧目標位址
2908‧‧‧採用/不採用欄位
2912‧‧‧密鑰暫存器檔案索引
2914‧‧‧型式欄位
3002-3004‧‧‧步驟方塊
3102-3116‧‧‧步驟方塊
3208-3222‧‧‧步驟方塊
ZEROES‧‧‧多位元的二進位零值
第1圖為一方塊圖,圖解根據本發明技術實現的一微處理器;第2圖為一方塊圖,用以詳細說明圖解第1圖的提取單元;第3圖為一流程圖,根據本發明技術,圖解第2圖提取單元之操作;第4圖為一方塊圖,根據本發明技術,圖解第1圖標誌暫存器的欄位;第5圖為一方塊圖,根據本發明技術,圖解一密鑰載入指令的格式;第6圖為一方塊圖,根據本發明技術,圖解一密鑰切換指令的格式;第7圖為一流程圖,根據本發明技術,圖解第1圖微處理器的操作,其中執行第6圖之密鑰切換指令;第8圖為一方塊圖,根據本發明技術,圖解一加密程式的記憶體用量,該加密程式包括多個第6圖所揭露的密鑰切換指令;第9圖為一方塊圖,根據本發明技術,圖解一分支與切換密鑰指令的格式; 第10圖為一流程圖,根據本發明技術,圖解第1圖微處理器的操作,其中執行第9圖之分支與切換密鑰指令;第11圖為一流程圖,根據本發明技術,圖解一後處理器的操作,由軟件工具實現,可用於後部處理一程式、且加密之,以由第1圖微處理器執行;第12圖為一方塊圖,圖解本發明另外一種實施方式的分支與切換密鑰指令的格式;第13圖為一方塊圖,根據本發明技術,圖解塊位址範圍表;第14圖為一流程圖,根據本發明技術,圖解第1圖微處理器的操作,其中執行第12圖之分支與切換密鑰指令;第15圖為一方塊圖,圖解本發明另外一種實施方式的分支與切換密鑰指令的格式;第16圖為一方塊圖,根據本發明技術,圖解塊位址範圍表;第17圖為一流程圖,根據本發明技術,圖解第1圖微處理器的操作,其中執行第15圖之分支與切換密鑰指令;第18圖為一流程圖,圖解本發明技術另外一種實施方式,其中敘述一後處理器的操作,用於後部處理一程式、且加密之,由第1圖微處理器執行;第19圖為一流程圖,根據本發明技術,圖解第1圖微處理器的操作,用於應付一任務切換,切換於一加密程式以及一純文字程式之間;第20圖圖解一流程圖,根據本發明技術,圖解第1圖微處理器所執行的系統軟體之操作;第21圖圖解一方塊圖,根據本發明另外一種實施方式,圖 解第1圖標誌暫存器的欄位;第22圖為一流程圖,根據本發明技術,圖解採用第21圖之標誌暫存器的第1圖微處理器之操作,用於應付一任務切換,切換於多個加密程式之間;第23圖為一流程圖,根據本發明技術,圖解採用第21圖之標誌暫存器的第1圖微處理器之操作,用於應付一任務切換,切換於多個加密程式之間;第24圖為一方塊圖,根據本發明另外一種實施方式,圖解第1圖密鑰暫存器檔案中的單一個暫存器;第25圖為一流程圖,根據本發明另外一種實施方式,圖解採用第21圖標誌暫存器以及第24圖密鑰暫存器檔案的第1圖微處理器之操作,以應付一任務切換,切換於多個加密程式之間;第26圖為一流程圖,根據本發明另外一種實施方式,圖解採用第21圖標誌暫存器以及第24圖密鑰暫存器檔案的第1圖微處理器之操作,以應付一任務切換,切換於多個加密程式之間;第27圖為一方塊圖,圖解第1圖微處理器100部分內容的其他實施方式;第28圖為一方塊圖,根據本發明技術,詳細圖解第27圖的分支目標位址快取記憶體(BTAC);第29圖為一方塊圖,根據本發明技術,詳細圖解第28圖之BTAC各單元之內容;第30圖為一流程圖,根據本發明技術,圖解第27圖微處理 器採用第28圖BTAC的操作;第31圖為一流程圖,根據本發明技術,圖解第27圖微處理器採用第28圖BTAC的操作;以及第32圖為一流程圖,根據本發明技術,圖解第27圖微處理器對一分支與切換密鑰指令的操作。
參閱第1圖,一方塊圖圖解根據本發明技術所實現的一微處理器100。微處理器100包括一管線(pipeline),其中包括一指令快取記憶體(instruction cache)102、一提取單元(fetch unit)104、一解碼單元(decode unit)108、一執行單元(execution unit)112、以及一引出單元(retire unit)114。微處理器100更包括一微代碼單元(microcode unit)132,用以提供微代碼指令(microcode instructions)給該執行單元112。微處理器100更包括通用暫存器(general purpose registers)118以及標誌暫存器(EFLAGS register)128,以提供指令運算元(instruction operands)給執行單元112。而且,透過引出單元114,將指令執行結果更新於通用暫存器118以及標誌暫存器128。在一種實施方式中,標誌暫存器128是由傳統x86標誌暫存器修改實現,詳細實施方式將於後續篇幅說明。
提取單元104自指令快取記憶體102提取指令數據(instruction data)106。提取單元104操作於兩種模式:一為解密模式(decryption mode),另一為純文字模式(plain text mode)。提取單元104內一控制暫存器(control register)144的一E位元(E bit)148決定該提取單元104是操作於解密模式(設定E位元)、或 操作於純文字模式(清空E位元)。純文字模式下,提取單元104視自該指令快取記憶體102所提取出的指令數據106為未加密、或純文字指令數據,因此,不對指令數據106作解密。然而,在解密模式下,提取單元104視自該指令快取記憶體102所提取出的指令數據106為加密指令數據,因此,需使用該提取單元104的一主密鑰暫存器(master key register)142所儲存的解密密鑰(decryption keys)將之解密為純文字指令數據,詳細技術內容將參考第2圖以及第3圖進行討論。
提取單元104亦包括一提取位址產生器(fetch address generator)164,用以產生一提取位址(fetch address)134,以自該指令快取記憶體102提取指令數據106。提取位址134更供應給提取單元104的一密鑰擴展器(key expander)152。密鑰擴展器152自主密鑰暫存器142中選取兩組密鑰172,並對其實施運算以產生一解密密鑰174,作為多工器154的第一輸入。多工器154的第二輸入為多位元的二進位零值(binary zeroes)176。E位元148控制多工器154。若E位元148被設定,多工器154選擇輸出該解密密鑰174。若E位元148被清除,多工器154選擇輸出多位元的二進位零值176。多工器154的輸出178將供應給互斥邏輯156作為其第一輸入。互斥邏輯156負責對提取的指令數據106以及多工器輸出178施行布林互斥運算(Boolean exclusive-OR,XOR),以產生純文字指令數據162。加密的指令數據106乃預先以互斥邏輯將其原本的純文字指令數據以一加密密鑰進行加密,其中該加密密鑰之數值與該解密密鑰174相同。提取單元104的詳細實施方式將配合第2圖以及第3圖內 容於稍後敘述。
純文字指令數據162將供應給解碼單元108。解碼單元108負責將純文字指令數據162之串流解碼、並分割為多個X86指令,交由執行單元112執行。在一種實施方式中,解碼單元108包括緩衝器(buffers)或佇列(queues),以在解碼之前或期間,緩衝存儲的純文字指令數據162之串流。在一種實施方式中,解碼單元108包括一指令轉譯器(instruction translator),用以將X86指令轉譯為微指令microinstructions或micro-ops,交由執行單元112執行。解碼單元108輸出指令時,更會針對各指令輸出一位元值,該位元值乃伴隨該指令沿所述管線結構一路行進而至,用以指示該指令是否為加密指令。該位元值將控制該執行單元112以及該引出單元114,使之根據該指令自該指令快取記憶體102取出時是加密指令或純文字指令而進行決策並且採取動作。在一種實施方式中,純文字指令不被允許執行專供指令解密模式設計的特定操作。
在一種實施方式中,微處理器100為一x86架構處理器,然而,微處理器100也可以其他架構之處理器實現。若一處理器可正確執行設計給x86處理器執行的大多數應用程式,則視之為x86架構的處理器。若應用程式執行後可獲得預期結果,則可判斷該應用程式是被正確執行。特別是,微處理器100是執行x86指令集的指令,且具有x86用戶可用暫存器組(x86user-visible register set)。
在一種實施方式中,微處理器100乃設計成供應一複合安全架構(comprehensive security architecture)-稱為安全 執行模式(secure execution mode,簡稱SEM)-以於其中執行程式。根據一種實施方式,SEM程式的執行可由數種處理器事件(processor events)引發,且不受一般(非SEM)操作封鎖。此外,SEMENABLE指令可引發自一般執行模式(normal execution mode)至安全執行模式(SEM mode)的轉態。在一種實施方式中,SEMENABLE指令具有經加密的一參數,該參數係經授權單位的一私鑰加密,屬一種密鑰編寫機制(cryptographic mechanism),不同於加密程式之加密使用的對稱密鑰加密之密鑰編寫機制(symmetric key encryption cryptographic mechanism)。微處理器100內的安全碼介面邏輯採用的為一公開密鑰,該公開密鑰是在製造程序中存入,用以解密且鑑定該參數。該參數解密後,安全執行模式初始邏輯會初始化該安全模式。
在一種實施方式中,為安全執行模式之資料所供應的安全非揮發性記憶體(未顯示於圖中)-如,快閃記憶體-可用於儲存解密密鑰。該安全非揮發式記憶體經由一私有序列匯流排耦接該微處理器100,且其中所有資料為AES加密且簽名認證。在一種實施方式中,微控制器100包括小尺寸非揮發性記憶體(未顯示於圖中),可用於儲存解密密鑰。在一種實施例中,上述非揮發性記憶體為熔絲型非揮發儲存裝置(fuse-embodied non-volatile storage),詳述於美國專利案U.S.Patent No.7,663,957,通過引用主張全文完整併入本文。本文所述之指令解密特徵之優點為展延安全執行模式,使得安全程式儲存在微處理器100外的記憶體,無須將安全程式完整儲存 在微處理器100之中。因此,安全程式碼可利用記憶體階層架構的完整尺寸與功能。在一種實施方式中,架構上的例外/中斷(例如,頁面錯誤(page faults)、偵錯斷點(debug breakpoint)…等)在安全執行模式運行下部分或全數除能。在一種實施方式中,架構上的例外/中斷在解密模式運行下(即,E-位元148處設定狀態)部分或全數除能。
運行在安全執行模式的程式所執行的功能有多種例子,包括關鍵安全事件(critical security task),如,辨識憑證並加密資料、監控系統軟體活動、辨識系統軟體完整性、追蹤資源使用、控制新軟體安裝…諸如此類。安全執行模式的例子詳細描述於2013年12月24日核發的美國專利案U.S.Patent No.8,615,799,其主張2008年5月24申請之美國臨時申請案U.S.Provisional Application No.61/055,980之優先權-以上文件皆通過引用主張全文完整併入本文。
在一種實施方式中,微處理器架構做一般模式以及安全模式兩者的指令執行。若運作在一般模式下,安全應用程式之安全執行所相關的資源無一為可觀察或可操作。監視邏輯(watchdog logic)監視安全碼、資料、以及環境與物理屬性的真實性,以蒐集竄改證據。針對安全執行模式所供應的中斷處理以及異常邏輯不同於一般模式之中斷處理以及異常邏輯。
微處理器100更包括一密鑰暫存器檔案(key register file)124。密鑰暫存器檔案124包括複數個暫存器,其中儲存的密鑰可藉由密鑰切換指令(switch key instruction,後續討論之)載入提取單元104的主密鑰暫存器142,以解密所提 取的加密指令數據106。
微處理器100更包括一安全存儲區(secure memory area,簡寫為SMA)122,用於存儲解密密鑰,該解密密鑰待經第5圖所示之密鑰載入指令(load key instruction)500進而載入密鑰暫存器檔案124。在一種實施方式中,安全存儲區122限定以SEM程式存取。也就是說,安全存儲區122不可藉一般執行模式(非SEM)下所執行的程式存取。此外,安全存儲區122也不可藉處理器匯流排存取,且不屬於微處理器100之快取記憶體階層的一部份。因此,舉例說明之,快取清空操作(cache flush operation)不會導致安全存儲區122的內容寫入記憶體。關於安全存儲區122的讀寫,微處理器100指令集架構中設計有特定指令。一種實施方式是在安全存儲區122中設計一隔離式隨機存取記憶體(private RAM),相關技術內容可參考2008年2月20日申請的美國專利申請案12/034,503(該案於2008年10月16日公開,公開號為2008/0256336);可參照上述案件內容應用於本案發明。
起先,作業系統或其他特權程序(privileged program)下載密鑰的初始化設定於該安全存儲區122、密鑰暫存器檔案124、以及主密鑰暫存器142。微處理器100起先會以該密鑰的初始化設定以解密一加密程式。此外,加密程式本身可接續寫入新的密鑰至安全存儲區122、並自安全存儲區122將密鑰載入密鑰暫存器檔案124(藉由密鑰載入指令)、且自密鑰暫存器檔案124將密鑰載入主密鑰暫存器142(藉由密鑰切換指令)。所述操作之優勢在於:所揭露的密鑰切換指令使得加密程式在 執行當下得以切換解密密鑰組(on-the-fly switching),以下將詳述之。新的密鑰可由加密程式指令自身的即時數據組成。在一種實施方式中,程式檔案標頭的一欄位會指示程式指令是否為加密型式。
第1圖所描述的技術有多項優點。第一,自加密指令數據106所解密出來的純文字指令數據無法由微處理器100外部獲得。
第二,提取單元104提取加密指令數據所需的時間與提取純文字指令數據所需的時間相同。此特色關係著安全與否。反之,若有時間差存在,駭客可藉此破解加密技術。
第三,相較於傳統設計,本案所揭露之指令解密技術不會額外增加提取單元104所耗的時脈數量。如以下討論,密鑰擴展器152增加解密密鑰之有效長度,該解密密鑰用於解密一加密程式,且此方式不會使提取加密程式數據所需的時間長於提取純文字程式數據所需的時間。特別是,因為密鑰擴展器152之運作限時於以提取位址134查表該指令快取記憶體102獲得指令數據106之內完成,密鑰擴展器152並不會增加一般的提取程序的時間。此外,因為多工器154以及密鑰擴展器152一併限時於以提取位址134查表該指令快取記憶體102獲得指令數據106之內完成,故不會增加一般的提取程序的時間。互斥邏輯156是唯一添加於一般提取路徑的邏輯運算,所幸互斥操作156的傳播延遲相當小,不會增加工作週期。因此,本案所揭露的指令解密技術不會增加提取單元104時脈數量負擔。此外,相較於一般技術所應用於解密指令數據106的複雜解密機 制,例如S盒(S-boxes),一般技術會增加提取以及解碼指令數據106時所需的工作週期且/或所消耗的時脈數量。
接著,參考第2圖,一方塊圖詳細圖解第1圖之提取單元104。特別是,第1圖之密鑰擴展器152也詳細圖列其中。先前已討論採用互斥邏輯解密上述加密指令數據106的優點。然而,快且小的互斥邏輯有其缺點:若加密/解密密鑰被重複使用,則互斥邏輯屬於一種脆弱加密方法(weak encryption method)。不過,若密鑰的有效長度等同所欲加密/解密之程式的長度,互斥邏輯加密會是一種強度極高的加密技術。微處理器100之特徵在於可增長解密密鑰的有效長度,以降低密鑰重複使用的需求。第一,主密鑰暫存器檔案142所儲存的數值為中大型尺寸:在一種實施方式中,其尺寸等同自指令快取記憶體102所取出的指令數據106之提取量、或區塊尺寸,為128位元(16位元組)。第二,加密擴展器152用於增長解密密鑰的有效長度,例如,增至一實施方式所揭露的2048位元組,將於後續篇幅詳述。第三,加密程式可藉由密鑰切換指令(或其變形)在操作中改變主密鑰暫存器142內的數值,之後段落將詳述之。
在第2圖所示實施方式中,142使用了五個主密鑰暫存器,編號0-4。然而,在其他實施方式中,也可以較少或較多量的主密鑰暫存器142數量增長解密密鑰長度。例如,一種實施方式採用12個主密鑰暫存器142。密鑰擴充器152包括一第一多工器A 212以及一第二多工器B 214,用以接收主密鑰暫存器142所供應的密鑰。提取位址134的部分內容用於控制多工器212/214。在第2圖所示實施方式中,多工器B 214為三轉一 多工器,而多工器A 212為四轉一多工器。表格1顯示多工器212/214如何根據各自的選擇輸入選取該等主密鑰暫存器142(以上述編號識別)。表格2顯示上述選擇輸入的產生方式,以及基於提取位址134的位元[10:8]所呈的主密鑰暫存器142組合。
多工器B 214的輸出236是供應給加法/減法器218。多工器A 212的輸出234是供應給一旋轉器(rotator)216。旋轉器216接收提取位址134的位元[7:4],據以旋轉多工器輸出234,決定旋轉的位元組數量。在一種實施方式中,提取位址134的位元[7:4]在供應給旋轉器216控制旋轉的位元組數量前增量,以表格3顯示之。旋轉器216的輸出238是供應給加法/減法器218。加法器/減法器218接收提取位址134的位元[7]。若該位元[7]為清空,加法/減法器218將旋轉器216的輸出238自多工器B 214之輸出236減去。若該位元[7]為設定,加法/減法器218將旋轉器216的輸出238加上多工器B 214的輸出236。加法/減法器218的輸出即第1圖所示之解密密鑰174,將供應給多工器154。以下以第3圖之流程圖詳述相關技術。
接著,參閱第3圖,一流程圖基於本發明技術圖解第2圖提取單元104的操作。流程始於方塊302。
在方塊302,提取單元104以提取位址134讀取指令快取記憶體102,以開始提取一16位元組之區塊的指令數據106。指令數據106可為加密狀態或為純文字狀態,視指令數據106是為一加密程式或一純文字程式的一部分而定,由E位元148標示。流程接著進入方塊304。
參考方塊304,根據提取位址134較高的數個位元,多工器A 212以及多工器B 214分別自主密鑰暫存器142所供應的密鑰172中選取出一第一密鑰234以及一第二密鑰236。在一種實施方式中,提取位址134所供應的該些位元施加於多工器212/214,以產生特定的密鑰對(234/236 key pair)組合。在第2 圖所示之實施方式中,所供應的主密鑰暫存器142數量為5,因此,存在10組可能的密鑰對。為了簡化硬體設計,僅使用了其中8組;此設計將供應2048位元組的有效密鑰,將於後續段落詳細討論之。然而,其他實施方式也可能使用其他數量的密鑰暫存器142。以供應12個主密鑰暫存器142的實施方式為例,主密鑰暫存器142的可能組合有66組,若採用其中64組,所產生的有效密鑰將為16384位元組。整體而言,假設上述複數個密鑰數值總量為K(例如:5,且採用全部組合),該解密密鑰、以及上述複數個密鑰數值各自的長度為W位元組(例如:16位元組),則產生的有效密鑰將為W2 *(K!/(2*(K-2)!))位元組。流程接著進入方塊306。
在方塊306,基於提取位址134的位元[7:4],旋轉器216使第一密鑰234旋轉相應數量的位元組。例如,若提取位址134的位元[7:4]為數值9,旋轉器216將第一密鑰234朝右旋轉9個位元組。流程接著進入方塊308。
在方塊308,加法/減法器218將旋轉後的第一密鑰238加至/減自該第二密鑰236,以產生第1圖之解密密鑰174。在一種實施方式中,若提取位址134的位元[7]為1,則加法/減法器218將旋轉後的第一密鑰234加至該第二密鑰236;若提取位址134的位元[7]為0,則加法/減法器218將旋轉後的第一密鑰234自該第二密鑰236減去。接著,流程進入方塊312。
在決策方塊312,多工器154根據其控制信號判斷所提取的該區塊之指令數據106是來自一加密程式或一純文字程式,所述控制信號來自控制暫存器144所供應的位元E 148。 若指令數據106為加密狀態,流程進入方塊314,反之,則流程進入方塊316。
在方塊314,多工器154選擇輸出解密密鑰174,且互斥邏輯156令加密指令數據106以及解密密鑰174進行一布林互斥運算,以產生第1圖之純文字指令數據162。流程止於方塊314。
在方塊316,多工器154選擇輸出16位元組的二進位零值176,且互斥邏輯156令指令數據106(為純文字)以及該16位元組的二進位零值進行一布林互斥運算,以產生同樣的純文字指令數據162。流程止於此方塊316。
參考第2圖以及第3圖所揭露內容,解密密鑰174供應給所提取的該區塊指令數據106進行互斥運算,且該解密密鑰174是所選取的主密鑰對234/236以及提取位址134之函數。相比於傳統解密程序-使解密密鑰為先前密鑰值的一函數,其中持續修正密鑰以供應新的在下一次工作區間使用-本案所揭露之解密技術完全不同。以主密鑰對234/236以及提取位址134為函式獲得解密密鑰174的方式有至少以下兩種優點。第一,如以上所討論,加密指令數據以及純文字指令數據106之提取耗時相當,不會增加微處理器100所需的工作時脈。第二,遇到程式中的分支指令(branch instruction),提取指令數據106所需的時間不會增加。在一種實施方式中,一分支預測器(branch predictor)接收提取位址134,並預測該提取位址134所指之該區塊的指令數據106是否存在一分支指令,並預測其方向以及目標位址。以第2圖所示實施方式為例,產出的解密密鑰174是主 密鑰對234/236以及提取位址134的一函式,將在目標位址所指之該區塊指令數據106送抵該互斥邏輯156的同一時間產出預測之目標位址的適當解密密鑰174。與傳統解密密鑰運算手法針對目標位址計算解密密鑰所必須的多個「倒帶(rewind)」步驟相較,本案所揭露技術在處理加密指令數據時不會產生額外的延遲。
另外,如第2圖以及第3圖所示,密鑰擴展器152之旋轉器216以及加法/減法器218之聯合設計,使得解密密鑰長度有效擴展,超越主密鑰之長度。例如,主密鑰共貢獻32位元組(2*16位元組);更甚者,以駭客企圖判斷解密密鑰174為何的角度而言,旋轉器216以及加法/減法器218有效地將位於主密鑰暫存器142的32位元組的主密鑰擴展為256位元組的密鑰序列。更具體地說,有效擴展後的密鑰序列之位元組n為: 為第一主密鑰234的位元組n,且為第二主密鑰236的位元組n+x。如上所述,密鑰擴展器152所產生的前八套16位元組解密密鑰174是由減法方式產生,且後八套是由加法方式產生。具體來說,選定的主密鑰對234/236各自所提供的位元組內容用於為16個連續的16位元組區塊之指令數據各個位元組產生解密密鑰174位元組,詳情請見表格3。舉例說明之,表格3第1列的符號“15-00”表示第二主密鑰236的位元組0的內容會經8位元算數運算(an eight-bit arithmetic operation)自第一主密鑰234的位元組15減去,以獲得一位元組的有效解密密鑰174, 用以與一16位元組區塊之指令數據106中的位元組15進行互斥運算。
給定適當的主密鑰數值後,密鑰擴展器152所產生的擴展密鑰統計來說可有效預防互斥加密常見的攻擊,包括令文件之加密區塊以密鑰長度位移、並對加密區塊一併施行互斥運算,以下更詳細討論之。密鑰擴展器152對選定主密鑰對234/236之影響是:在所述實施方式中,程式中以完全相同的 密鑰所加密的兩個指令數據106位元組之跨距可高達256位元組。在其他具有不同區塊尺寸的指令數據106、以及不同主密鑰長度的實施方式中,以同樣密鑰加密的兩個指令數據106位元組的最大跨距可有不同的量。
用來選定主密鑰對234/236的主密鑰暫存器142以及密鑰擴展器152內的多工器212/214也會決定有效密鑰長度的擴展程度。如以上討論,第2圖所示實施方式供應有5個主密鑰暫存器142,主密鑰暫存器142所供應的內容因此可以10種方式組合,而多工器212/214是用於自上述10種可能組合方式中選擇八種作用。表格3所示各密鑰對234/236所對應的256位元組有效密鑰長度搭配八種主密鑰對234/236組合後,所產生的有效密鑰長度為2048位元組。也就是說,程式中以完全相同之密鑰加密的兩個指令數據106位元組之跨距可高達2048位元組。
為了更加說明密鑰擴展器152所帶來的優點,以下簡短敘述互斥加密程序所常見的的攻擊。若互斥加密運算所採用的密鑰長度短於所加密/解密之程式指令數據的長度,密鑰中的許多位元組必須被重複使用,且被重複使用的位元組數量視程式之長度而定。此弱點使互斥指令加密程序可被破解。第一,駭客嘗試判斷出重複密鑰之長度,以下展示的說明(1)至(3)令之為n+1。第二,駭客假定指令數據內各個密鑰長度區塊(key-length block)是以同樣密鑰加密。以下列舉根據一傳統互斥加密運算加密得到的二密鑰長度區塊的數據:
其中,為第一密鑰長度區塊之數據的位元組n,將被加密;為第二密鑰長度區塊之數據的位元組n,將被加密;且k n 為密鑰的位元組n。第三,駭客對所述兩區塊進行互斥運算,使其中密鑰成分彼此相銷,獨留以下內容:
最後,由於計算出的位元組為單純兩個純文字位元組的函式,駭客可以統計分析純文字內容之出現頻率,以嘗試求得純文字位元組的數值。
然而,根據第2圖以及第3圖所揭露方式計算出的加密指令數據106位元組之圖樣如以下說明(4)與(5)所示:
其中標示所加密之第一16位元組區塊之指令數據的位元組n,標示所加密之第二16位元組區塊之指令數據的位元組n,標示主密鑰x的位元組n,且標示主密鑰y的位元組n。如前述,主密鑰x與y為不同密鑰。假定一種實施方式以五個主密鑰暫存器142提供八種主密鑰對234/236組合,2048位元組序列中各位元組是與兩個獨立的主密鑰位元組的一組合進行互斥運算。因此,當加密數據以任何方式於256位元組的區塊中移位並且彼 此作互斥運算,所求得的位元組都會存在兩個主密鑰的複雜成分,因此,不若說明(3)的內容,此處所得的運算結果不單純只是純文字位元組。例如,假設駭客選擇使同一256位元組區塊中的16位元組區塊對齊並彼此進行互斥操作使同樣的密鑰零位元組在各段中被使用,位元組0之運算結果如說明(6)所示,所獲得的位元組存在兩個主密鑰的複雜組合: 其中n不為1。
再者,若駭客換成將選自不同256位元組區塊內的16位元組區塊對齊、且彼此作互斥運算,運算結果的位元組0如說明(7)所示: 其中主密鑰u與v中至少一者不同於主密鑰x以及y。模擬隨機主密鑰數值所產生之有效密鑰位元組之互斥運算,可發現運算結果呈現相當平滑的分布。
當然,若駭客選擇將不同的2048位元組長度區塊內的16位元組區塊對齊、並且彼此進行互斥操作,駭客可能會獲得與說明(3)類似的結果。然而,請參照以下內容。第一,某些程式-例如,安全性相關程式-可能短於2048位元組。第二,相距2048位元組的指令位元組之統計相關性(statistical correlation)很可能非常小,導致很難破解。第三,如前述內容,所述技術之實施方式可以較多數量實現主密鑰暫存器142,使解密密鑰之有效長度擴展;例如,以12個主密鑰暫存器142供 應16384位元組長度的解密密鑰,甚至其他更長的解密密鑰。第四,以下將討論的密鑰下載指令500以及密鑰切換指令600更使程式設計師得以載入新的數值至主密鑰暫存器142,以有效擴展密鑰長度超過2048位元組,或者,如果必要,也可擴展密鑰長度至程式的完整長度。
現在,參考第4圖,一方塊圖根據本發明技術圖解第1圖的標誌暫存器128。根據第4圖所示之實施方式,標誌暫存器128包括標準x86暫存器的複數個位元408;不過,為了此處敘述的新功能,第4圖所示實施方式會動用x86架構中一般為預留(RESERVED)的一位元。特別說明之,標誌暫存器128包括一E位元欄位402。E位元欄位402用於修復控制暫存器144的E位元148數值,用以於加密以及純文字程式間切換以及/或於不同加密程式間切換,以下將詳細討論之。E位元欄位402標示目前所執行的程式是否有加密。若目前所執行的程式有加密,E位元欄位402為設定狀態,否則,為清除狀態。當中斷事件發生,控制權切換給其他程式(例如,中斷interrupt、異常exception如頁錯誤page fault、或任務切換task switch),儲存標誌暫存器128。反之,若控制權重回先前因中斷事件中斷的程式,則修復標誌暫存器128。微處理器100之設計會在標誌暫存器128修復時以標誌暫存器128之E位元402欄位數值更新控制暫存器144之E位元148數值,以下將詳細討論之。因此,若中斷事件發生時一加密程式正在執行(即提取單元104處於解密模式),當控制權交還給該加密程式時,以修復的E位元欄位402令E位元148為設定狀態,以修復提取單元104為解密模式。在一種實施 方式中,E位元148以及E位元欄位402為同一個具體硬體位元,因此,儲存標誌暫存器128的E位元欄位402中數值即是儲存E位元148,且修復標誌暫存器128的E位元欄位402的數值即是修復E位元148。
參閱第5圖,一方塊圖圖解根據本發明技術所實現的一密鑰載入指令500之格式。密鑰載入指令500包括一操作碼(opcode)502欄位,特地標示其為微處理器100指令集內的密鑰載入指令500。在一種實施方式中,操作碼欄位502數值為0FA6/4(x86領域)。密鑰載入指令500包括兩個運算元:一密鑰暫存器檔案目標位址504以及一安全存儲區來源位址506。該安全存儲區來源位址506為安全存儲區122中儲存一16位元組主密鑰的一位址。密鑰暫存器檔案位址504標示密鑰暫存器檔案124內的一個暫存器的位址,此暫存器將載入自安全存儲區122載出之16位元組主密鑰。在一種實施方式中,若一程式企圖在微處理器100不為安全操作模式下執行密鑰載入指令500,則視之為無效指令異常;此外,若安全存儲區來源位址506數值位於有效安全存儲區122之外,則視之為一般保護異常。在一種實施方式中,若一程式試圖在微處理器100不為最高權限級別時(例如,x86環0權限/x86 ring 0)執行密鑰載入指令500,則視之為無效指令異常。在某些狀況下,16位元組主密鑰之構成可能包括在加密指令的即時數據字段內。所述即時數據可被一塊一塊移至安全存儲區122組成16位元組的密鑰。
現在,參閱第6圖,一方塊圖圖解根據本發明技術所實現的一密鑰切換指令600之格式。密鑰切換指令600包括一 操作碼602欄位,特指其為微處理器100指令集內的密鑰切換指令600。密鑰切換指令600更包括一密鑰暫存器檔案索引欄位604,標示密鑰暫存器檔案124一序列暫存器中的開端,以自此將密鑰載入主密鑰暫存器142。在一種實施方式中,若一程式嘗試在微處理器100不為安全操作模式時執行一密鑰切換指令600,則視之為無效指令異常。在一種實施方式中,若一程式意圖在微處理器100不為最高權限級別(例如,x86環0權限)時執行一密鑰切換指令600,則視之為無效指令異常。在一種實施方式中,密鑰切換指令600為原子操作型式(atomic),即不可中斷;此處所討論,用於載入密鑰至主密鑰暫存器142的其他指令也是如此-例如,以下將討論的分支與切換密鑰指令。
現在,參閱第7圖,一流程圖圖解第1圖之微處理器100之操作,其中,根據本發明技術執行第6圖介紹的密鑰切換指令600。流程始於方塊702。
在方塊702,解碼單元108將一密鑰切換指令600解碼,且將解碼結果代入微代碼單元132內實現密鑰切換指令600的微代碼程序。流程接著進入方塊704。
在方塊704,微代碼會根據密鑰暫存器檔案索引欄位604自密鑰暫存器檔案124下載主密鑰暫存器142的內容。較佳實施方式是:微代碼以密鑰暫存器檔案索引欄位604所標示的密鑰暫存器為起始,自密鑰暫存器檔案124下載連續的n個暫存器內容作為n個密鑰存入主密鑰暫存器142,其中n為主密鑰暫存器142的總數。在一種實施方式中,數值n可標示於密鑰切換指令600的一額外空間,設定為少於主密鑰暫存器142的總數。 流程接著進入方塊706。
在方塊706,微代碼使微處理器100分支至接續的x86指令(即該密鑰切換指令600之後的指令),將導致微處理器100中較密鑰切換指令600新的所有x86指令被清空,致使微處理器100內、較切換至接續x86指令的微操作新的所有微操作被清空。上述被清空的指令包括自指令快取記憶體102提取出、緩衝暫存於提取單元104以及解碼單元108內等待解密與解碼的所有指令位元組106。流程接著進入方塊708。
在方塊708,基於方塊706分支至接續指令的操作,提取單元104開始利用方塊704載入主密鑰暫存器142的新一組密鑰值自指令快取記憶體102提取並且解密指令數據106。流程結束於方塊708。
如第7圖所示,密鑰切換指令600令正在執行中的加密程式在自指令快取記憶體102提取出來的同時得以改變主密鑰暫存器142內所儲存、供解密該加密程式使用的內容。所述主密鑰暫存器142動態調整技術使得加密該程式的有效密鑰長度超越提取單元104先天支援的長度(例如,第2圖實施方式所提供的2048位元組);如第8圖所示程式,若將之以第1圖微處理器100操作,駭客會更不易攻破電腦系統的安全防護。
現在,參閱第8圖,一方塊圖圖解根據本發明技術所實現的一加密程式的一記憶體用量(memory footprint)800,其中採用第6圖所示之密鑰切換指令600。第8圖所示之加密程式記憶體用量800包括連續數「塊chunk」指令數據位元組。每一「塊」的內容為一序列多個指令數據位元組(其中為預先加 密的數據),且屬於同一「塊」的指令數據位元組是由同樣的一套主密鑰暫存器142數值解密。因此,不同兩「塊」的界線是由密鑰切換指令600定義。也就是說,各「塊」的上、下界是由密鑰切換指令600之位置區分(或者,以一程式的第一「塊」為例,其上界為該程式的起始處;此外,以該程式的最後一「塊」為例,其下界為該程式的結束處)。因此,各「塊」指令數據位元組是由提取單元104基於不同套主密鑰暫存器142數值解密,意即各「塊」指令數據位元組的解密是根據前一「塊」所供應的一密鑰切換指令600所載入主密鑰暫存器142數值。加密一程式的後處理器(post-processor)會知曉各密鑰切換指令600所在之記憶體位址,並且會利用此資訊-即提取位址的相關位址位元-配合密鑰切換指令600密鑰數值產生加密密鑰位元組,以加密該程式。一些目的檔格式(object file format)允許程式設計者標示程式載入記憶體何處,或至少載明特定大小的對齊形式(例如,頁面邊界page boundary),以提供足夠的位址資訊加密該程式。此外,一些作業系統預設值是將程式載入頁面邊界上。
密鑰切換指令600可安置於程式的任何地方。然而,若密鑰切換指令600載入特定值至主密鑰暫存器142供下一「塊」指令數據位元組解密使用、且密鑰切換指令600(或甚至密鑰載入指令500)之位置導致每一「塊」之長度短於、或等於提取單元104所能應付的有效密鑰長度(例如,第2圖實施方式所揭露的2048位元組),則程式可被以有效長度等同整體程式長度的密鑰加密,此為相當強健的加密方式。此外,即使密鑰切換指 令600的使用使得有效密鑰長度仍短於加密程式的長度(即,同樣一套主密鑰暫存器142數值被用於加密一程式的多個「塊」),改變「塊」尺寸(例如,不限定全為2048位元組)可增加駭客破解系統的困難度,因為,駭客必須先判斷以同一套主密鑰暫存器142數值加密的「塊」位於何處,並且必須判斷該些長度不一的「塊」各自的尺寸。
值得注意的是,以密鑰切換指令600實現的動態密鑰切換耗費相當大量的時脈數目,主要是因為管線必須清空。此外,在一種實施方式中,密鑰切換指令600主要是以微代碼(microcode)實現,通常較非微代碼實現的指令慢。因此,程式碼開發者須考慮密鑰切換指令對效能的影響,在執行速度以及特定應用之安全性考量之間尋求平衡點。
現在,參閱第9圖,一方塊圖圖解根據本發明技術實現的一分支與切換密鑰指令900的格式。首先敘述該分支與切換密鑰指令900的必要性。
根據以上實施例所揭露內容,加密程式交由提取單元104提取的各個16位元組區塊的指令數據是有先經過加密運算(採互斥技術),所採用的加密密鑰等同提取單元104用來解密(互斥運算)所提取之各區塊之指令數據106的各個16位元組長之解密密鑰174。如以上所述,解密密鑰174的位元組數值是由提取單元104基於以下兩種輸入計算而得:儲存於主密鑰暫存器142的主密鑰位元組數值、以及所提取之16位元組區塊之指令數據106的提取位址134的部分位元(以第2圖所揭露實施方式為例,為位元[10:4])。因此,加密一程式使之由微處理器 100執行的一後處理器會知曉將儲存於主密鑰暫存器142的主密鑰位元組數值、以及一位址(或更限定為該位址的數個相關位元);該位址指示加密程式將被載入記憶體何處、且微處理器100將自此處一連串地提取出該加密程式數個區塊的指令數據。基於上述資訊,後處理器得以適切產生解密密鑰174數值,用於加密該程式的各個16位元組區塊之指令數據。
如以上所討論,當一分支指令被預測到且/或被執行,提取單元104會以分支目標位址更新提取位址134。只要加密程式從未改變(經由密鑰切換指令600)主密鑰暫存器142內儲存的主密鑰數值,分支指令是由提取單元104透明控制。也就是說,提取單元104會採用同樣的主密鑰暫存器142數值估算解密密鑰174,以供解密包括該分支指令的一區塊之指令數據106、以及解密該分支指令之目標位址所指的一區塊之指令數據106內的指令。然而,程式改變(經由密鑰切換指令600)主密鑰暫存器142數值的能力意味著提取單元104有可能以一套主密鑰暫存器142數值估算解密密鑰174解密包括該分支指令的一區塊之指令數據106,並以不同的另外一套主密鑰暫存器142數值估算解密密鑰174解密該分支指令之目標位址所指的一區塊之指令數據106內的指令。解決此問題的一種方法是限定分支目標位址於程式同一「塊」中。另外一種解決方式是採用第9圖所揭露的分支與切換密鑰指令900。
再次參閱第9圖,一方塊圖圖解根據本發明技術實現的一分支與切換密鑰指令900的格式。分支與切換密鑰指令900包括一操作碼902欄位,標示其為微處理器100指令集內的 分支與切換密鑰指令900。分支與切換密鑰指令900更包括一密鑰暫存器檔案索引欄位904,標示密鑰暫存器檔案124中一連串暫存器裡的開端,以自此將密鑰載入主密鑰暫存器142。分支與切換密鑰指令900更包括一分支資訊欄位906,記載分支指令的典型資訊一如,計算目標位址的資訊、以及分支條件。在一種實施方式中,若一程式在微處理器100不為安全執行模式時嘗試執行一分支與切換密鑰指令900,則視之為無效指令異常。在一種實施方式中,若一程式在微處理器100不為最高權限層級(例如,x86的環0權限)時試圖執行分支與切換密鑰指令900,則視之為無效指令異常。在一種實施方式中,分支與切換密鑰指令900為原子操作型(atomic)。
參閱第10圖,一流程圖圖解第1圖微處理器100之操作,其中,根據本發明技術執行第9圖所揭露之分支與切換密鑰指令900。流程始於方塊1002。
在方塊1002,解碼單元108解碼一分支與切換密鑰指令900且將之代入微代碼單元132中實現該分支與切換密鑰指令900的微代碼程序。流程接著進入方塊1006。
在方塊1006,微代碼解出分支方向(採用、或不採用)、以及目標位址。值得注意的是,對於無條件型分支指令(unconditional branch instruction),所述方向衡為採用。流程接著進入判斷方塊1008。
在判斷方塊1008,微代碼判斷方塊1006所解出的方向是否為採用。若為採用,流程進入方塊1014。反之,流程進入方塊1012。
在方塊1012,微代碼不切換密鑰、或跳至目標位址,因為分支操作未被採用。流程結束於方塊1012。
在方塊1014,微代碼根據密鑰暫存器檔案索引欄位904,將密鑰自密鑰暫存器檔案124載入主密鑰暫存器142。較佳實施例是,微代碼以密鑰暫存器檔案索引欄位904所標示的位置為起始,將密鑰暫存器檔案124內n個鄰近暫存器所記載的n個密鑰載入主密鑰暫存器142,其中n為主密鑰暫存器142的總數。在一種實施方式中,n值可紀錄於分支與切換密鑰指令900的一額外空間,設定為小於主密鑰暫存器142總數的值。流程接著進入方塊1016。
在方塊1016,微代碼使得微處理器100跳至方塊1006所解出的目標位址,將導致微處理器100中較分支與切換密鑰指令900新的所有x86指令被清空,致使微處理器100內、較分支至目標位址的微操作新的所有微操作被清空。上述被清空的指令包括自指令快取記憶體102提取出、緩衝暫存於提取單元104以及解碼單元108內等待解密與解碼的所有指令位元組106。流程接著進入方塊1008。
在方塊1018,隨著方塊1016分支至目標位址的操作,提取單元104採用方塊1014載入主密鑰暫存器142的新一組密鑰數值開始自指令快取記憶體102提取且解密指令數據106。流程結束於方塊1018。
現在,參閱第11圖,一流程圖圖解根據本發明技術所實現的一後處理器的操作。所述後處理器為軟件工具,可用於後處理一程式並加密之,以交由第1圖的微處理器100執行。 流程始於方塊1102。
在方塊1102,後處理器接收一程式的一目的檔。根據一種實施方式,該目的檔內的分支指令的目標位址可在程式執行前確定;例如,指向固定目標位址的分支指令。在程式運行前決定好目標位址的分支指令尚有另一形式,例如,一相對分支指令(relative branch instruction),其中記載一偏移量,用來加上分支指令所在之記憶體位址,以求得分支目標位址。反之,關於目標位址不會在程式執行前確定的分支指令,其中一種例子是基於暫存器或記憶體所儲存的運算元計算出目標位址,因此,其值在程式執行當中可能有變動。流程接著進入方塊1104。
在方塊1104,後微處理器將跨塊分支指令(inter-chunk branch instruction)以分支與切換密鑰指令900取代,所述指令900在密鑰暫存器檔案索引空間904儲存有適當的數值,該數值乃基於分支指令之目標位址所坐落的「塊」而設定。如第8圖所揭露內容,一「塊」是由一序列多個指令數據位元組所組成,將由同一套主密鑰暫存器142數值解密。因此,跨塊分支指令之目標位址所坐落的「塊」不同於分支指令本身的「塊」。值得注意的是,塊內分支-即目標位址與本身位於同一「塊」的分支指令-無須被替代。值得注意的是,產生出原始檔(source file)以產出目的檔的程式設計及/或編譯器可視需求明確包括分支與切換密鑰指令900,以降低後處理器取代操作的負擔。流程接著進入方塊1106。
在方塊1106,後處理器加密該程式。後處理器知 道每一「塊」之記憶體位置以及主密鑰暫存器142數值,並將之用於加密該程式。流程結束於方塊1106。
現在,參閱第12圖,一方塊圖圖解本發明技術另一種實施方式所實現的一分支與切換密鑰指令1200之格式。第12圖所示之分支與切換密鑰指令1200適用於目標位址在程式執行前為未知的分支操作,以下將詳細討論之。分支與切換密鑰指令1200包括一操作碼1202欄位,用以標示其為微處理器100指令集內的分支與切換密鑰指令1200。分支與切換密鑰指令1200同樣包括一分支資訊欄位906,功用與第9圖之分支與切換密鑰指令900的該欄位類似。在一種實施方式中,若一程式在微處理器100不為安全執行模式時試圖執行分支與切換密鑰指令1200,則視之為無效指令異常。在一種實施方式中,若一程式在微處理器100不為最高權限級別(例如,x86環0權限)時試圖執行一分支與切換密鑰指令1200,則視之為無效指令異常。在一種實施方式中,分支與切換密鑰指令1200為原子型式。
現在,參閱第13圖,一方塊圖圖解根據本發明技術實現的「塊」位址範圍表1300。表格1300包括多個單元。每一單元與加密程式的一「塊」相關。每一單元包括一位址範圍欄位1302以及一密鑰暫存器檔案索引欄位1304。位址範圍欄位1302標示所對應「塊」的記憶體位址範圍。密鑰暫存器檔案索引欄位1304標示密鑰暫存器檔案124內的暫存器,由分支與切換密鑰指令1200將索引所指的暫存器所儲存的密鑰數值載入主密鑰暫存器142,供提取單元104解密該「塊」使用。以下參考第18圖進行討論,表格1300於需要存取表格1300內容的分支 與切換密鑰指令1200執行前載入微處理器100。
現在,參閱第14圖,一流程圖圖解第1圖微處理器100的操作,其中,根據本發明技術執行第12圖的分支與切換密鑰指令1200。流程始於方塊1402。
在方塊1402,解碼單元108解碼一分支與切換密鑰指令1200且將之代入微代碼單元132中實現分支與切換密鑰指令1200的微代碼程序。流程接著進入方塊1406。
在方塊1406,微代碼解出分支方向(採用、或不採用)、且找出目標位址。流程接著進入判斷方塊1408。
在判斷方塊1408,微代碼判斷方塊1406所解出的分支方向是否為採用。若為採用,流程進入方塊1414。反之,流程進入方塊1412。
在方塊1412,微代碼不切換密鑰、或跳至目標位址,因為該分支未被採用。流程結束於方塊1412。
在方塊1414,微代碼基於方塊1406所解出的目標位址查詢第13圖所示之表格1300,得到該目標位址所坐落之「塊」所對應之密鑰暫存器檔案索引欄位1304的內容。微代碼接著基於密鑰暫存器檔案索引欄位1304內所記載的索引,自密鑰暫存器檔案124將密鑰數值載入主密鑰暫存器142。較佳實施方式是,微代碼根據密鑰暫存器檔案索引欄位1304所儲存的索引,自密鑰暫存器檔案124將n個相鄰暫存器儲存的n個密鑰值載入主密鑰暫存器142的,其中,n為主密鑰暫存器142的總數。在一種實施方式中,數值n可紀錄於分支與切換密鑰指令1200的一額外欄位中,設定為少於主密鑰暫存器142總數。流程接 著進入方塊1416。
在方塊1416,微代碼致使微處理器100分支至方塊1406所解出的目標位址,將導致微處理器100中較分支與切換密鑰指令1200新的所有x86指令被清空,致使微處理器100內、較分支至目標位址的微操作新的所有微操作被清空。上述被清空的指令包括自指令快取記憶體102提取出、緩衝暫存於提取單元104以及解碼單元108內等待解密與解碼的所有指令位元組106。流程接著進入方塊1418。
在方塊1418,隨著方塊1416分支至目標位址的操作,提取單元104採用方塊1414載入主密鑰暫存器142的新一套密鑰值,開始自指令快取記憶體102提取並且解密指令數據106。流程結束於方塊1418。
現在,參考第15圖,一方塊圖圖解根據本發明技術另外一種實施方式所實現的一分支與切換密鑰指令1500的格式。第15圖所示之分支與切換密鑰指令1500以及其操作類似第12圖所示之分支與切換密鑰指令1200。然而,取代自密鑰暫存器檔案124載入密鑰至主密鑰暫存器142,分支與切換密鑰指令1500是自安全存儲區122載入密鑰至主密鑰暫存器142,以下討論之。
現在,參考第16圖,一方塊圖圖解根據本發明技術所實現的「塊」位址範圍表1600。第16圖所示表格1600類似第13圖所示之表格1300。然而,取代包括一密鑰暫存器檔案索引欄位1304,表格1600包括一安全存儲區位址欄位1604。安全存儲區位址欄位1604記載安全存儲區122內的一位址,該位址 儲存的密鑰值須由分支與切換密鑰指令1500載入主密鑰暫存器142,以供該提取單元104解密該「塊」時使用。以下討論參考第18圖內容,表格1600是在需要查詢該表格1600的分支與切換密鑰指令1500被執行前載入微處理器100。在一種實施方式中,安全存儲區122位址之較低數個位元無須儲存在安全存儲區位址欄位1604,特別是因為安全存儲區122中儲存一組密鑰的位置之總量相當大(例如,16位元組x 5)、且該組密鑰可沿著一設定尺寸範圍對齊。
現在,參閱第17圖,一流程圖圖解第1圖微處理器100的操作,其中根據本發明技術執行第15圖的分支與切換密鑰指令1500。流程始於方塊1702。第17圖之流程圖的許多方塊與第14圖的許多方塊類似,因此採同樣的編號。然而,方塊1414是由方塊1714取代,微代碼基於方塊1406所求得的目標位址查表第16圖之表格1600,以獲得目標位址所坐落的「塊」之安全存儲區位址欄位1604數值。微代碼接著根據安全存儲區位址欄位1604數值自安全存儲區122將密鑰數值載入主密鑰暫存器142。較佳實施方式是,微代碼由安全存儲區位址欄位1604數值自安全存儲區122將n個鄰近16位元組空間位置內所儲存的n個密鑰數值載入主密鑰暫存器142,其中n為主密鑰暫存器142的總數。在一種實施方式中,數值n可記載於分支與切換密鑰指令1500中一額外欄位,設定為少於主密鑰暫存器142總數。
現在,參閱第18圖,一流程圖圖解根據本發明另外一種實施方式所實現的一後處理器的操作。所述後處理器可用於後處理一程式並加密之,以交由第1圖的微處理器100執行。 流程始於方塊1802。
在方塊1802,後處理器接收一程式的目的檔。根據一種實施方式,該目的檔內的分支指令,可為目標位址在程式執行前判定、可為目標位址不可在程式執行前判定。流程接著進入方塊1803。
在方塊1803,後處理器建立第13圖或第16圖之「塊」位址範圍表1300或1600,以列入該目標檔。在一種實施方式中,作業系統在載入且執行一加密程式前將表格1300/1600載入微處理器100,使分支與切換密鑰指令1200/1500得以存取之。在一種實施方式中,後處理器在程式中插入指令,以在任何分支與切換密鑰指令1200/1500執行前載入表格1300/1600至微處理器100。流程接著進入方塊1804。
在方塊1804,類似先前所討論、關於第11圖之方塊1104的操作,後處理器將每個執行前目標位址可決定的跨塊分支指令以第9圖的分支與切換密鑰指令900取代,指令900基於分支指令目標位址所在「塊」記載有合適的密鑰暫存器檔案索引欄位904數值。流程接著進入方塊1805。
在方塊1805,後處理器根據方塊1803所產生的表格型態(1300/1600)將每個限於執行過程中決定目標位址的分支指令以第12圖或第15圖所示之分支與切換密鑰指令1200或1500取代。流程接著進入方塊1806。
在方塊1806,後處理器加密該程式。該後處理器知道關於各「塊」的記憶體位置與主密鑰暫存器142數值,將用於加密該程式。流程結束於方塊1806。
現在,參閱第19圖,一流程圖圖解第1圖微處理器100的操作,其中,根據本發明技術處理加密程式以及純文字程式之間的任務切換。流程始於方塊1902。
在方塊1902,標誌暫存器128的E位元欄位402的E位元以及第1圖控制暫存器144之E位元148由微處理器100的一重置操作清空。流程接著進入方塊1904。
在方塊1904,微處理器100在執行其重置微代碼進行初始化後,開始提取並且執行使用者程式指令(例如,系統韌體),其為純文字程式指令。特別是,由於E位元128為清空,如前所述,提取單元104視提取出來的指令數據106為純文字指令。流程接著進入方塊1906。
在方塊1906,系統韌體(例如,作業系統、韌體、基本輸入輸出系統BIOS…等)接收一要求(request),要執行一加密程式。在一種實施方式中,執行一加密程式的上述要求伴隨、或由一切換操作指示,以切換至微處理器100的一安全執行模式,如以上討論內容。在一種實施方式中,微處理器100僅在安全執行模式時,方允許操作於一解密模式(即,E位元148為設定狀態)。在一種實施方式中,微處理器100僅在系統管理模式(system management mode,例如,x86架構中常見的SSM),方允許以解密模式操作。流程接著進入方塊1908。
在方塊1908,系統軟體於主密鑰暫存器142中載入其初始值,與程式中將被執行的第一「塊」相關。在一種實施方式中,系統軟體執行一密鑰切換指令600下載密鑰至主密鑰暫存器142。在載入密鑰至主密鑰暫存器142之前,密鑰暫存器 檔案124的內容可由一或多個密鑰載入指令500載入。在一種實施方式中,載入密鑰至主密鑰暫存器142以及密鑰暫存器檔案124之前,安全存儲區122可先被寫入密鑰數值,其中,所述寫入乃經由常見的安全通道技術,例如,AES或RSA加密通道,以防止駭客窺探其值。如以上所討論,以上密鑰數值可儲存在一安全非揮發性記憶體(例如快閃記憶體)經由一隔離串行總線(private serial bus)耦接微處理器100,或者,可儲存在微處理器100的一非揮發性單次寫入記憶體。如以上討論,所述程式可包含在單一「塊」中。也就是說,所述程式可不包括密鑰切換指令600,整個程式可由單一套主密鑰暫存器142數值解密。流程接著進入方塊1916。
在方塊1916,隨著控制權轉移至加密程式,微處理器100設定標誌暫存器128的E位元欄位402標示目前所執行的程式為加密型式,且設定控制暫存器144的E位元148,使提取單元104處於解密模式。微處理器100更致使管線內的指令被刷新,其動作類似第7圖方塊706所實行的刷新操作。流程接著進入方塊1918。
在方塊1918,提取單元104提取加密程式內的指令106,並且參考第1圖至第3圖所揭露的技術將之以解密模式解密並且執行之。流程接著進入方塊1922。
在方塊1922,微處理器100提取並且執行加密程式時,微處理器100接收到中斷事件。舉例說明之,所述中斷事件可為一中斷interrupt、一異常exception(如頁面錯誤page fault)、或任務切換task switch。當一中斷事件發生,微處理器 100管線所有待處理的指令會被清空。所以,若管線中有任何先前提取的加密指令,將之清空。此外,自指令快取記憶體102所提取出、可能在緩衝儲存在提取單元104以及解碼單元108中等待被解密、解碼的所有指令位元組會被清空。在一種實施方式中,微代碼被喚起回應中斷事件。流程接著進入方塊1924。
在方塊1924,微處理器100儲存標誌暫存器128(以及微處理器100其他結構狀態,包括受中斷的加密程式的目前指令指標數值)至一堆疊式記憶體(stack memory)。儲存加密程式之E位元欄位402數值將使其得以在後續操作中修復(在方塊1934)。流程接著進入方塊1926。
在方塊1926,當控制權轉移到新的程式(例如,中斷處理程序interrupt handler、異常處理程序exception handler、或新任務),微處理器100清空標誌暫存器128的E位元欄位402、以及控制暫存器144的E位元148,以應付純文字的新程式。也就是說,第19圖所示實施例假設微處理器100同一時間只有允許運作一個加密程式,且已有一個加密程式在執行(但被中斷)。第22圖至第26圖另外揭露有其他種的實施方式。流程接著進入方塊1928。
在方塊1928,提取單元104參考第1圖至第3圖所揭露內容以純文字模式提取新程式的指令106。特別是,控制暫存器144內E位元148的清空狀態使得多工器154將指令數據106與多位元的二進位零值176進行互斥運算,使得指令數據106不被解密操作。流程接著進入方塊1932。
在方塊1932,新程式執行一返回操作自中斷指令 (例如,x86 IRET)或類似指令返回,使得控制權回歸加密程式。在一種實施方式中,自中斷指令返回的操作由微代碼實現。流程接著進入方塊1934。
在方塊1934,回應前述自中斷指令返回的操作,由於控制權移轉回加密程式,微處理器100修復標誌暫存器128,令標誌暫存器128之E位元欄位402重回先前方塊1924所儲存的設定狀態。流程接著進入方塊1938。
在方塊1938,由於控制權移轉回加密程式,微處理器100以標誌暫存器128的E位元欄位402數值更新控制暫存器144的E位元148,使得提取單元104重新提取並且解密該加密程式之指令數據106。流程接著進入方塊1942。
在方塊1942,微代碼令微處理器100分支至先前方塊1924儲存於堆疊式記憶體中的指令指標數值,使得微處理器100中所有x86指令清空、且使得微處理器100中所有微操作清空。所清空內容包括提取自指令快取記憶體102、緩衝暫存在提取單元104以及解碼單元108中等待被解密、解碼的所有指令位元組106。流程接著進入方塊1944。
在方塊1944,提取單元104重新開始提取該加密程式內的指令106,並且參考第1圖至第3圖所揭露技術以解密模式解密並且執行之。流程結束於方塊1944。
現在,參考第20圖,一流程圖圖解根據本發明技術實現的一系統軟體之操作,由第1圖之微處理器100執行。第20圖流程可配合第19圖內容執行。流程始於方塊2002。
在方塊2002,系統軟體收到一要求,欲執行一個 新的加密程式。流程接著進入決策方塊2004。
在決策方塊2004,系統軟體判斷此一加密程式是否為系統已在執行的程式之一。在一種實施方式中,系統軟體以一旗標標示一加密程式是否為系統中已在執行的程式之一。若此加密程式是系統已在執行的程式之一,流程進入方塊2006,反之,則流程進入方塊2008。
在方塊2006,系統軟體等待該加密程式執行完畢且不再是系統執行中的程式之一。流程接著進入方塊2008。
在方塊2008,微處理器100允許新的加密程式開始執行。流程結束於方塊2008。
現在,參考第21圖,一方塊圖根據本發明技術另外一種實施方式,圖解第1圖標誌暫存器128的欄位。第21圖的標誌暫存器128類似第4圖所示實施方式,相比之,更包括索引欄位(index bits)2104。根據一種實施方式,索引欄位2104(類似E位元402)通常是x86架構所預留的位元。索引欄位2104用於應付多個加密程式的切換,以下詳細討論之。較佳實施方式是,密鑰切換指令600以及分支與切換密鑰指令900/1200以本身的密鑰暫存器索引欄位604/904/1304更新標誌暫存器128的索引欄位2104。
現在,參考第22圖,一流程圖圖解第1圖微處理器100的操作,其中,根據本發明技術採用第21圖所示之標誌暫存器128實行多個加密程式之間的任務切換。流程接著進入方塊2202。
在方塊2202,一要求發向該系統軟體,要執行一 個新的加密程式。流程接著進入決策方塊2204。
在決策方塊2204,系統軟體判斷密鑰暫存器檔案124中是否有空間應付一個新的加密程式。在一種實施方式中,方塊2202所產生的該要求會指出需要密鑰暫存器檔案124內多少空間。若密鑰暫存器檔案124中有空間應付新的加密程式,流程進入方塊2208,反之,流程進入方塊2206。
在方塊2206,系統軟體等待一或多個加密程式完成、使密鑰暫存器檔案124騰出空間應付新的加密程式。流程接著進入方塊2208。
在方塊2208,系統軟體將密鑰暫存器檔案124內的空間配置給新的加密程式,並且隨之填寫標誌暫存器128中的索引欄位2104,以標示密鑰暫存器檔案124中新配置的空間。流程接著進入方塊2212。
在方塊2212,系統軟體在方塊2208所配置的密鑰暫存器檔案124位置載入供新程式使用的密鑰數值。如以上討論,所載入的密鑰數值可採用密鑰載入指令500自安全存儲區122載入,或者,在必要情況下,可以安全管道由微處理器100外部位置取得。流程接著進入方塊2214。
在方塊2214,系統軟體基於密鑰暫存器檔案索引欄位604/904/1304將密鑰自密鑰暫存器檔案124載入主密鑰暫存器142。在一種實施方式中,系統軟體執行一密鑰切換指令600載入密鑰至主密鑰暫存器142。流程接著進入方塊2216。
在方塊2216,由於控制權移轉至加密程式,微處理器100設定標誌暫存器128之E位元欄位402以標示目前執行 的程式為加密型式,並且設定控制暫存器144的E位元148以設定提取單元104為解密模式。流程結束於方塊2216。
現在,參考第23圖,一流程圖圖解第1圖微處理器100的操作,其中,根據本發明技術採用第21圖所示之標誌暫存器128應付多個加密程式之間的任務切換。流程始於方塊2302。
在方塊2302,目前執行的程式執行一返回操作,自一中斷指令返回,引發一任務切換至新程式;所述新程式先前曾被執行過但被跳開,且其結構狀態(例如,標誌暫存器128、指令指標暫存器、以及通用暫存器)曾被儲存在堆疊式記憶體中。如先前所提過,在一種實施方式中,自中斷指令返回的操作是由微代碼實現。現在執行中的程式以及新的程式可為加密程式或純文字程式。流程進入方塊2304。
在方塊2304,微處理器100根據堆疊式記憶體修復標誌暫存器128,以應付接續返回的程式。也就是說,微處理器100將接續程式(即目前跳換回的程式)先前跳換出去時儲存於堆疊式記憶體的標誌暫存器128數值重新載入標誌暫存器128。流程接著進入決策方塊2306。
在決策方塊2306,微處理器100判斷修復後的標誌暫存器128之E位元402是否為設定狀態。若是,則流程進入方塊2308;反之,則流程進入方塊2312。
在方塊2308,微處理器100根據方塊2304所修復的EFLAGS暫存器128索引欄位2104數值將密鑰載入密鑰暫存器檔案124。流程接著進入方塊2312。
在方塊2312,微處理器100將控制暫存器144之E位元148的內容以方塊2304所修復的標誌暫存器128之E位元欄位402數值更新。因此,若接續的程式是一個加密程式,提取單元104會被設定為解密模式,反之,則設定為純文字模式。流程接著進入方塊2314。
在方塊2314,微處理器100以堆疊式記憶體的內容修復指令指標暫存器、並且分支跳躍至指令指標所指的位置,所述動作將清除微處理器100所有x86指令,並且清除微處理器所有微操作。所清除的包括自指令快取記憶體102所提取出、緩衝暫存於提取單元104、解碼單元108中等待解密、解碼的所有指令位元組106。流程接著進入方塊2316。
在方塊2316,提取單元104參考第1圖至第3圖技術重新開始自接續程式中提取指令106,並視方塊2312所修復的控制暫存器144之E位元148數值以解密模式或純文字模式操作。流程結束於方塊2316。
現在,參考第24圖,一方塊圖根據本發明、圖解第1圖密鑰暫存器檔案124之單一個暫存器的另外一種實施方式。根據第24圖所示之實施方式,每個密鑰暫存器檔案124更包括一位元-為淘汰位元2402(kill bit,以下簡稱K位元)。K位元2402用於應付微處理器100對多個加密程式的多任務(multitasking)操作,所述多個加密程式總計需要多於密鑰暫存器檔案124空間尺寸的密鑰儲存空間,以下將詳述之。
現在,參考第25圖,一流程圖圖解第1圖微處理器100的操作,其中根據本發明技術以第21圖之標誌暫存器128以 及第24圖之密鑰暫存器檔案124實現多個加密程式之間之任務切換的另外一種實施方式。第25圖所示流程類似第22圖所示流程。不同處在於決策方塊2204判定密鑰暫存器檔案124中沒有足夠可用空間時,第25圖流程會進入方塊2506而非不存在於第25圖的方塊2204。另外,若決策方塊2204判定密鑰暫存器檔案124中尚有足夠可用空間,則第25圖流程同樣進入第22圖之方塊2208至方塊2216。
在方塊2506,系統軟體將密鑰暫存器檔案124中已經被其他加密程式使用(即已經被配置)的空間(即暫存器)配置出來,並且設定所配置暫存器的K位元2402為設定狀態,並且隨之設定標誌暫存器128的索引欄位2104以標示新配置空間在密鑰暫存器檔案124中的位置。K位元2402之設定狀態,是標示該暫存器中關於其他加密程式的密鑰值將被方塊2212的操作覆寫為新的加密程式的密鑰值。然而,如以下第26圖所敘述,其他加密程式的密鑰值將在其返回程序中由方塊2609重新載入。第25圖流程進入方塊2506,會接著導向第22圖所示之方塊2212,結束於方塊2216。
現在,參閱第26圖,一流程圖圖解第1圖微處理器100的操作,其中根據本發明技術以第21圖之標誌暫存器128以及第24圖之密鑰暫存器檔案124實現多個加密程式之間之任務切換的另外一種實施方式。第26圖所示流程類似第23圖所示流程。不同處在於,若決策方塊2306判定標誌暫存器128的E位元402為設定,第26圖令流程進入決策方塊2607而非方塊2308。
在決策方塊2607,微處理器100判斷密鑰暫存器檔 案124中,由標誌暫存器128索引欄位2104數值(於方塊2304中修復)所標示的任何暫存器之K位元2402是否為設定狀態。若是,則流程進入方塊2609;若否,則流程進入方塊2308。
在方塊2609,微處理器100產生一異常警示(exception)交由一異常處理程序處理。在一種實施方式中,異常處理程序設計於系統軟體中。在一種實施方式中,異常處理程序是由安全執行模式架構提供。根據方塊2304所修復的標誌暫存器128索引欄位2104數值,異常處理程序將目前修復的加密程式(即現在所返回執行的加密程式)之密鑰重新載入密鑰暫存器檔案124。異常處理程序可類似先前第19圖所提及的方塊1908作動,將修復之加密程式的密鑰載入密鑰暫存器檔案124,或者,在必要情況下,自微處理器100外部將密鑰載入安全存儲區122。同樣地,若密鑰暫存器檔案124中被重新載入的暫存器有被其他加密程式使用,系統軟體會令其暫存器的K位元2402為設定狀態。流程接著自方塊2609進入2308,且方塊2308至2316是參考第23圖內容。
如第24圖至第26圖所教示,此處所敘述的實施方式令微處理器100得以實行多個加密程式的多任務操作,即便上述加密程式需要密鑰暫存空間總合多於密鑰暫存器124空間尺寸。
現在,參考第27圖,一方塊圖圖解修改自第1圖微處理器100的本發明另外一種實施方式。與第1圖類似的元件是採用同樣標號;例如,指令快取記憶體102、提取單元104以及密鑰暫存器檔案124。然而,此處提取單元104被修正成更包括 密鑰切換邏輯2712,耦接第1圖所介紹之主密鑰暫存器檔案142以及密鑰暫存器檔案124。第27圖之微處理器100更包括一分支目標位址快取記憶體(branch target address cache,BTAC)2702。BTAC 2702接收第1圖所揭露之提取位址134,且與指令快取記憶體102的存取平行,皆是基於該提取位址134。根據提取位址134,BTAC 2702供應分支目標位址2706給第1圖所揭露的提取位址產生器164,供應一採用/不採用指標(T/NT indicator)2708以及一型式指標(type indicator)2714給密鑰切換邏輯2712,並且供應一密鑰暫存器檔案(KRF)索引2716給密鑰暫存器檔案124。
現在,參閱第28圖,一方塊圖根據本發明技術更詳細圖解第27圖的BTAC 2702。BTAC 2702包括一BTAC矩陣2802,其中具有複數個BTAC單元2808,第29圖圖解BTAC單元2808的內容。BTAC 2802儲存的資訊包括先前執行過的分支指令的歷史資訊,以預測接續執行之分支指令的方向以及目標位址。特別是,BTAC 2802會採用儲存的歷史資訊,基於提取的位址134預測先前執行過的分支指令後續發生的提取操作。分支目標位址快取之操作可參考常見的分支預測技術。然而,本發明所揭露的BTAC 2802是更修正成記錄先前執行過的分支與切換密鑰指令900/1200的歷史資訊,以進行相關的預測操作。特別是,儲存的歷史紀錄使得BTAC 2802得以在提取時間內預測所提取的分支與切換密鑰指令900/1200將載入主密鑰暫存器142的該組數值。此操作致能密鑰切換邏輯2712在分支與切換密鑰指令900/1200實際執行前將密鑰數值載入,避免受限於 需根據分支與切換密鑰指令900/1200之執行清空微處理器100的管線內容,以下將詳細討論之。此外,根據一種實施方式,BTAC 2802更被修正成儲存包括先前執行過的密鑰切換指令600的歷史資訊,以達到相同的效果。
現在,參閱第29圖,一方塊圖根據本發明技術更詳細圖解第28圖BTAC單元2808的內容。每個單元2808包括一有效位元2902指示所屬單元2808是否為有效。每個單元2808更包括一標記欄位2904,用以與提取位址134的部分內容比較。若提取位址134的索引部分選擇的單元2808使得提取位址134之標記部分吻合其中有效標記2904,則提取位址134正中BTAC 2802。每個陣列單元2808更包括一目標位址欄位2906,用於儲存先前執行過之分支指令-包括分支與切換密鑰指令900/1200-的目標位址。每個陣列單元2808更包括一採用/不採用欄位2908,用以儲存先前執行過的分支指令-包括分支與切換密鑰指令900/1200-的方向(採用/不採用)記錄。每個陣列單元2808更包括一密鑰暫存器檔案索引2912欄位,用於儲存先前執行過的分支與切換密鑰指令900/1200的密鑰暫存器檔案索引904/1304記錄,以下將詳細討論之。根據一種實施方式,BTAC 2802是在其密鑰暫存器檔案索引2912欄位儲存先前執行過的密鑰切換指令600的密鑰暫存器檔案索引604記錄。每個陣列單元2808更包括一型式欄位2914,指示所紀錄的指令的型式。例如,型式欄位2914可標示所紀錄的歷史指令為一呼叫(call)、返回(return)、條件跳躍(conditional jump)、無條件跳躍(unconditional jump)、分支與切換密鑰指令900/1200、或密鑰 切換指令600。
現在,參閱第30圖,一流程圖圖解第27圖微處理器100的操作,其中,根據本發明技術,所述微處理器100包括第28圖揭露的BTAC 2802。流程始於方塊3002。
在方塊3002,微處理器100執行一分支與切換密鑰指令900/1200,以下將以第32圖詳述之。流程接著進入方塊3004。
在方塊3004,微處理器100在BTAC 2802中配置一陣列單元2808給執行過的分支與切換密鑰指令900/1200,將該分支與切換密鑰指令900/1200解出的方向、目標位址、密鑰暫存器檔案索引904/1304、以及指令型式分別紀錄於所配置的該陣列單元2808之採用/不採用欄位2908、目標位址欄位2906、密鑰暫存器檔案索引2912欄位、以及型式欄位2914中,以作為該分支與切換密鑰指令900/1200的歷史資訊。流程結束於方塊3004。
現在,參閱第31圖,一流程圖圖解第27圖微處理器100的操作,其中,根據本發明技術,所述微處理器100包括第28圖揭露的BTAC 2802。流程始於方塊3102。
在方塊3102,提取位址134供應給指令快取記憶體102以及BTCA 2802。流程接著進入方塊3104。
在方塊3104,提取位址134正中BTAC 2802,且BTAC 2802將對應的陣列單元2808之目標位址2906、採用/不採用2908、密鑰暫存器檔案索引2912欄位以及型式2914欄位的內容分別以目標位址2706、採用/不採用指標2708、密鑰暫存器 檔案索引2716、以及型式指標2714輸出。特別是,型式欄位2914用於指示所儲存指令為一分支與切換密鑰指令900/1200。流程接著進入決策方塊3106。
在決策方塊3106,密鑰切換邏輯2712藉由檢驗採用/不採用輸出2708判斷分支與切換密鑰指令900/1200被BTAC 2802預測為會採用。若採用/不採用輸出2708顯示分支與切換密鑰指令900/1200被預測為採用,流程接著進入方塊3112;反之,流程接著進入方塊3108。
在方塊3108,微處理器100隨著分支與切換密鑰指令900/1200順著輸送一指示,顯示BTAC 2802預測其不被採用。(此外,若採用/不採用輸出2708顯示該分支與切換密鑰指令被預測為採用,微處理器100在方塊3112隨著該分支與切換密鑰指令900/1200順著輸送一指示,顯示BTAC 2802預測其會被採用)。流程結束於3108。
在方塊3112,提取位址產生器164以BTAC 2802於方塊3104所預測的目標位址2706更新提取位址134。流程接著進入方塊3114。
在方塊3114,根據BTAC 2802於方塊3104所預測的密鑰暫存器檔案索引2712,密鑰切換邏輯2712以其所指示之密鑰暫存器檔案124位置更新主密鑰暫存器142內的密鑰數值。在一種實施方式中,必要狀況下,密鑰切換邏輯2712會拖延提取單元104提取指令數據106內的區塊,直至主密鑰暫存器142被更新。流程接著進入方塊3116。
在方塊3116,提取單元104利用方塊3114所載入的 新主密鑰暫存器142內容持續提取並且解密指令數據106。流程結束於方塊3116。
現在,參閱第32圖,一流程圖圖解第27圖微處理器100的操作,其中,根據本發明技術,執行一分支與切換密鑰指令900/1200。第32圖流程在某一方面類似第10圖流程,且類似的方塊是採以同樣標號。雖然第32圖的討論是參照第10圖內容,其應用可更考慮第14圖所介紹的分支與切換密鑰指令1200操作。第32圖流程始於方塊1002。
在方塊1002,解碼單元108解碼一分支與切換密鑰指令900/1200,且將之代入微代碼單元132實現分支與切換密鑰指令900/1200的微代碼程序。流程接著進入方塊1006。
在方塊1006,微代碼解出分支方向(即採用/不採用)以及目標位址。流程接著進入方塊3208。
在方塊3208,微代碼判斷BTAC 2802是否為該分支與切換密鑰指令900/1200提供一預測。若有提供,流程接著進入決策方塊3214;若無提供,流程接著進入第10圖的方塊1008。
在決策方塊3214,微代碼藉由將BTAC 2802輸送出的採用/不採用指標2708以及目標位址2706與方塊1006所解出的方向以及目標位址判斷BTAC 2802所做的預測是否正確。若BTAC 2802的預測正確,則流程結束;反之,則流程來到決策方塊3216。
在決策方塊3216,微代碼判斷此不正確的BTAC 2802預測有沒有被採用。若已被採用,流程進入方塊3222;若 無,流程進入第10圖的方塊1014。
在方塊3222,微代碼修復主密鑰暫存器142的內容,因為BTAC 2802對分支與切換密鑰指令900/1200所做的錯誤預測被採用,導致第31圖方塊3114將錯誤的密鑰數值載入其中。在一種實施方式中,密鑰切換邏輯2712包括修復主密鑰暫存器142所需的儲存元件與邏輯。在一種實施方式中,微代碼產生一異常警示交由一異常處理器修復主密鑰暫存器142。此外,微代碼使得微處理器100分支跳躍到該分支與切換密鑰指令900/1200之後接續的x86指令,使得微處理器100中新於該分支與切換密鑰指令900/1200的所有x86指令清空,並且使微處理器100中較分支至目標位址之微代碼新的所有微代碼清空。被清空的內容包括讀取自指令快取記憶體102、且緩衝暫存於提取單元104、解碼單元108中等待被解碼的所有指令位元組106。隨著分支至接續的指令,提取單元104開始使用主密鑰暫存器142內的該組修復後的密鑰數值自指令快取記憶體102提取並且解密指令數據106。流程結束於方塊3222。
除了以上所述、由微處理器100實現的指令解密實施方式所帶來的安全優勢,發明入更發展出建議編碼指南,其使用可配合以上實施方式,削弱藉由分析x86指令實際使用量、對加密x86碼以統計技巧發展出的駭客攻擊。
第一,由於駭客通常假設所提取的16位元組的指令數據106全數為x86指令,因此,相對於程式執行流程,編碼時應當在16位元組區塊之間加入「洞(holes)」。也就是說,其編碼應當以多個指令跳躍一些指令位元組,以未加密的位元組 產生多個「洞」,其中可填入適當的數值,以增加純文字位元組的熵值(entropy)。此外,倘若能更提升純文字位元組的熵值,其編碼可盡可能採用即時數據值。此外,所述即時數據值可作為假線索,指向錯誤的指令操作碼位址。
第二,所述編碼可包括特別的NOP指令,其中包括“不理會”欄位,填有適當數值以增加上述熵值。例如,x86指令0x0F0D05xxxxxxxx屬於7位元組的NOP,其中最後四個位元組可為任意值。此外,NOP指令的操作碼型式以及其「不理會」位元組的數量更可有其他變化。
第三,許多x86指令具有與其他x86指令相同的基本功能。關於等效功能的指令,其編碼可捨棄重複使用同樣的指令,改採用多重型式並且/或採用使純文字熵值提升的型式。例如,指令0xC10107以及指令0xC10025作的是同樣的事情。甚至,某些等效指令是以不同長度的版本呈現,例如,0xEB22以及0xE90022;因此,編碼時可採用多種長度但相同效果的指令。
第四,x86架構允許使用冗餘且無意義的操作碼字首(opcode prefixes),因此,編碼時可小心應用之,以更增加上述熵值。例如,指令0x40以及0x2627646567F2F340作的是完全一樣的事情。因為其中僅有8個安全的x86字首,他們需被小心地安插在編碼中,以避免過度頻繁地出現。
雖然已經列舉多種實施例以密鑰擴展器對主密鑰暫存器數值中的一對數值進行旋轉以及加/減運算,尚有其他實施方式可考慮使用,其中,密鑰擴展器可對多於兩個的主密 鑰暫存器數值進行運算,此外,所進行的運算可不同於旋轉以及加/減運算。此外,第6圖揭露的密鑰切換指令600以及第9圖揭露的分支與切換密鑰指令900更可有其他實施方式,例如,將新的密鑰數值由安全存儲區122載入主密鑰暫存器142而非由密鑰暫存器檔案124載入,並且,第15圖所介紹的分支與切換密鑰指令1500的其他實施方式是以索引欄位2104儲存安全存儲區122的位址。此外,雖然已列舉多種實施例調整BTAC 2702儲存KRF索引配合分支與切換密鑰指令900/1200使用,尚有其他實施方式是調整BTAC 2702儲存安全存儲區位址,以配合分支與切換密鑰指令1500使用。
特別是,由於解密密鑰174衍生自第一以及第二密鑰234與236,主密鑰172(包含組成任一特定密鑰對的第一以及第二密鑰234與236)可替代為解密密鑰元(decryption key primitives)。”元(primitive)”在此作為”衍生物(derivative)”的反義詞。
以上列舉的本發明諸多實施方式僅是作為說明例使用,並非意圖限制發明範圍。相關電腦技術領域入員可在不偏離本發明範圍的前提下作出形式以及細節的諸多變形。例如,可以軟體方式實現所述如函式、製作、模組化、模擬、說明、以及/或測試此篇所討論之設備與方法的方式。實現方式包括一般程式語言(例如,C、C++)、硬體描述語言包括Verilog HDL、VHDL…等、或其他可用的程式工具。所述軟體可載於任何已知的計算機可讀媒體,例如,磁帶、半導體、磁碟、或光碟(例如,CD-ROM、DVD-ROM等)、網路、有線傳輸、無線或其他 通訊媒體。所述設備與方法的實施方式可包含於半導體知識產權核心,例如一微處理器核心(例如以HDL實現),並可轉成硬體以積體電路實現。此外,所述之設備與方法可由軟、硬體結合方式實現。因此,本發明範圍不應限定於所述任何實施方式,應當是以下列請求項以及其等效技術界定之。特別是,本發明技術可以一般用途計算機所採用的微處理器實現。值得注意的是,本技術領域入員可能不偏離請求項所定義之發明範圍、以所揭露之概念以及特殊實施例為基礎、設計或修正提出其他架構產生與本發明相同的效果。

Claims (69)

  1. 一種微處理器,包括:一指令快取記憶體,用以儲存加密指令;一快取邏輯,設置來從該指令快取記憶體快取加密指令;一安全記憶體,設置來儲存複數個解密密鑰元;一密鑰擴展邏輯,設置來從該等解密密鑰元之中兩個或更多解密密鑰元導出一解密密鑰;以及一解密邏輯,設置來以上述兩個或更多解密密鑰元導出的該解密密鑰對快取自該指令快取記憶體的一加密指令進行解密,其中,快取自該指令快取記憶體的純文字指令以及加密指令皆設置成通過該解密邏輯管線化(pipelined)。
  2. 如申請專利範圍第1項所述之微處理器,同快取並解密上述純文字指令採等量的時間,快取並解密上述加密指令。
  3. 如申請專利範圍第1項所述之微處理器,其中,該解密邏輯包括互斥邏輯閘,設置來以上述兩個或更多解密密鑰元導出的該解密密鑰對快取自該指令快取記憶體的一加密指令進行互斥運算。
  4. 如申請專利範圍第1項所述之微處理器,其中,該安全記憶體的儲存區域僅允許安全執行模式的程式存取。
  5. 如申請專利範圍第1項所述之微處理器,其中,上述解密密鑰元之更新是在該密鑰擴展邏輯使用解密密鑰元推導該解密密鑰之前進行。
  6. 如申請專利範圍第1項所述之微處理器,其中,該密鑰擴展邏輯係設置來基於一加密指令位址自該等解密密鑰元中選擇所需的上述兩個或更多解密密鑰元。
  7. 如申請專利範圍第1項所述之微處理器,其中,該密鑰擴展邏輯係設置來旋轉移位一解密密鑰元,以產生一旋轉移位解密密鑰元。
  8. 如申請專利範圍第7項所述之微處理器,其中,該密鑰擴展邏輯係設置來以一函式運算一加密指令位址所得的一數值旋轉移位該解密密鑰元。
  9. 如申請專利範圍第7項所述之微處理器,其中,該密鑰擴展邏輯係設置來積累該旋轉移位解密密鑰元至一第二解密密鑰元。
  10. 如申請專利範圍第9項所述之微處理器,其中,該密鑰擴展邏輯係設置來自減法積累以及加法積累中選擇其一,以積累該旋轉移位解密密鑰元至一第二解密密鑰元,且上述減法積累以及加法積累的選擇係基於一加密指令位址的一函式運算結果。
  11. 如申請專利範圍第1項所述之微處理器,其中:該密鑰擴展邏輯係設置來對所採用的上述至少兩個解密密鑰元進行一數值運算,以推導出解密密鑰;該密鑰擴展邏輯之設置所推導的解密密鑰的一有效密鑰長度等於一第一數值以及一第二數值的乘積,該第一數值為用於產生解密密鑰的解密密鑰元的可選擇數量,該第二數值為該數值運算所能產生的密鑰之可能數值組合的數量;且該密鑰擴展邏輯係設置來將複數個解密密鑰用於複數個加密指令塊,上述加密指令塊之長度不長於該有效密鑰長度,且該密鑰擴展邏輯係對各接續的加密指令塊施予源自至少一個不同的解密密鑰元的一個新的且不同的解密密鑰。
  12. 一種加密指令安全執行方法,於一微處理器中安全執行加密指令,包括:儲存複數個解密密鑰元於一安全記憶體;自一指令快取記憶體快取出加密指令;自該安全記憶體接收該等解密密鑰元之中的兩個或更多個解密密鑰元;從接收自該安全記憶體的上述兩個或更多個解密密鑰元推導出一解密密鑰;採用上述兩個或更多個解密密鑰元推導出的該解密密鑰,據以解密快取自該指令快取記憶體的一加密指令,其中將快取自該指令快取記憶體的純文字指令以及該加密指令皆管線化;以及在該微處理器中安全執行解密後的指令。
  13. 如申請專利範圍第12項所述之加密指令安全執行方法,更包括防制自該微處理器外獲得該加密指令。
  14. 如申請專利範圍第12項所述之加密指令安全執行方法,更包括:同快取並解密上述純文字指令採等量的時間,快取並解密上述加密指令。
  15. 如申請專利範圍第12項所述之加密指令安全執行方法,其中解密一加密指令的動作包括以上述兩個或更多個解密密鑰元導出的該解密密鑰對快取自該指令快取記憶體的一加密指令進行互斥運算。
  16. 如申請專利範圍第12項所述之加密指令安全執行方法,更包括在推導該解密密鑰之前更新上述解密密鑰元。
  17. 如申請專利範圍第12項所述之加密指令安全執行方法,更包括基於一加密指令位址選擇所需的上述兩個或更多個解密密鑰元。
  18. 如申請專利範圍第12項所述之加密指令安全執行方法,更包括旋轉移位一解密密鑰元,以產生一旋轉移位解密密鑰元。
  19. 如申請專利範圍第18項所述之加密指令安全執行方法,更包括以一函式運算一加密指令位址所得的一數值旋轉移位該解密密鑰元。
  20. 如申請專利範圍第18項所述之加密指令安全執行方法,更包括積累該旋轉移位解密密鑰元至一第二解密密鑰元。
  21. 如申請專利範圍第20項所述之加密指令安全執行方法,更包括自減法積累以及加法積累中選擇其一,以積累該旋轉移位解密密鑰元至一第二解密密鑰元,且上述減法積累以及加法積累的選擇係基於一加密指令位址的一函式運算結果。
  22. 如申請專利範圍第12項所述之加密指令安全執行方法,其中:解密密鑰推導動作對所採用的上述至少兩個解密密鑰元進行一數值運算;解密密鑰推導動作所產生的解密密鑰的一有效密鑰長度等於一第一數值以及一第二數值的乘積,該第一數值為用於產生解密密鑰的解密密鑰元的可選擇數量,該第二數值為該數值運算所能產生的密鑰之可能數值組合的數量;且該加密指令安全執行方法更包括將複數個解密密鑰用於複數個加密指令塊,上述加密指令塊之長度不長於該有效密鑰長度,且對各接續的加密指令塊施予源自至少一個不同的解密密鑰元的一個新的且不同的解密密鑰。
  23. 一種電腦程式產品,編碼於至少一非暫態電腦用媒體由一運算裝置運作,該電腦程式產品更包括:一電腦用程式碼,載於該非暫態電腦用媒體以操作一微處理器,該電腦用程式碼包括:一第一程式碼,用以操作一指令快取記憶體,以儲存加密指令;一第二程式碼,用以操作一快取邏輯,該快取邏輯係設置來從該指令快取記憶體快取出加密指令;一第三程式碼,用以操作一安全記憶體,該安全記憶體係設置來儲存複數個解密密鑰元;一第四程式碼,用以操作一密鑰擴展邏輯,該密鑰擴展邏輯係設置來自兩個或更多個上述解密密鑰元推導出一解密密鑰;以及一第五程式碼,用以操作一解密邏輯,該解密邏輯係設置來採用上述兩個或更多個解密密鑰元推導出的該解密密鑰解密快取自該指令快取記憶體的一加密指令,其中該解密邏輯將快取自該指令快取記憶體的純文字指令以及該加密指令皆管線化。
  24. 一種微處理器,包括:一指令快取記憶體,用於儲存加密指令;一快取邏輯,設置來從該指令快取記憶體快取出加密指令;一安全記憶體,設置來儲存複數個主密鑰;一密鑰選擇邏輯,設置來基於一加密指令快取位址選擇一組一或多個主密鑰;以及一解密邏輯,設置來採用選定的該組一或多個主密鑰、或推導自選定的該組一或多個主密鑰的一解密密鑰來解密快取自該指令快取記憶體的加密指令。
  25. 如申請專利範圍第24項所述之微處理器,更包括一解密密鑰產生邏輯,設置來從選定的該組一或多個主密鑰推導出解密密鑰。
  26. 如申請專利範圍第25項所述之微處理器,其中,該解密密鑰產生邏輯係設置來對各快取量推導新的一解密密鑰。
  27. 如申請專利範圍第26項所述之微處理器,其中各解密密鑰的位元長度t為2s,s為一個快取量的位元組數。
  28. 如申請專利範圍第25項所述之微處理器,其中上述加密指令分組成指令區塊,上述指令區塊的長度不大於解密密鑰的長度,且該解密密鑰產生邏輯係設置來基於上述指令區塊內的加密指令的快取位址為各指令區塊推導出新的解密密鑰。
  29. 如申請專利範圍第25項所述之微處理器,其中該解密密鑰產生邏輯係設置來旋轉移位選定的該組一或多個主密鑰其一,據以產生新的一個解密密鑰,且所旋轉移位的量係基於該加密指令快取位址。
  30. 如申請專利範圍第29項所述之微處理器,其中該加密指令快取位址的位[b:0]子集不影響主密鑰的旋轉移位量,數字0與b分別用於標示該加密指令快取位址的最低有效位元以及第b位有效位元。
  31. 如申請專利範圍第29項所述之微處理器,其中該加密指令快取位址的位[d:c]子集定義主密鑰旋轉移位的寬度,數字c以及d分別用於標示該加密指令快取位址的第c位有效位元以及第d位有效位元。
  32. 如申請專利範圍第31項所述之微處理器,其中該解密密鑰產生邏輯係設置來以n個可能旋轉移位量其一做主密鑰之旋轉移位,n=2m,m為該加密指令快取位址的位[d:c]子集的位元數。
  33. 如申請專利範圍第32項所述之微處理器,其中該解密密鑰產生邏輯係設置來基於新的一加密指令快取位址選擇新的一組一或多個主密鑰,並據以推導新的一解密密鑰。
  34. 如申請專利範圍第33項所述之微處理器,其中新的該加密指令快取位址的位[f:e]子集決定新的該組一或多個主密鑰的修飾,數字e以及f分別用於標示該加密指令快取位址的第e位有效位元以及第f位有效位元。
  35. 如申請專利範圍第34項所述之微處理器,其中該解密密鑰邏輯係設置來選擇可用的q組一或多個主密鑰中任一組,p=2q,q為新的該加密指令快取位址的位[f:e]子集中可能數值之一。
  36. 一種加密指令安全執行方法,於一微處理器中安全執行加密指令,包括:儲存複數個主密鑰於一安全記憶體;自一指令快取記憶體快取出加密指令;基於一加密指令快取位址自該安全記憶體選擇一組一或多個主密鑰;採用選定的該組一或多個主密鑰、或推導自選定的該組一或多個主密鑰的一解密密鑰來解密快取自該指令快取記憶體的加密指令;在該微處理器中安全執行解密後的指令。
  37. 如申請專利範圍第36項所述之加密指令安全執行方法,更包括從選定的該組一或多個主密鑰推導出解密密鑰。
  38. 如申請專利範圍第37項所述之加密指令安全執行方法,更包括對各快取量基於一加密指令快取位址推導新的一解密密鑰。
  39. 如申請專利範圍第38項所述之加密指令安全執行方法,其中各解密密鑰的位元長度t為2s,s為一個快取量的位元組數。
  40. 如申請專利範圍第37項所述之加密指令安全執行方法,其中,上述加密指令分組成指令區塊,上述指令區塊的長度不大於解密密鑰的長度,且該加密指令安全執行方法更包括基於各指令區塊之加密指令快取位址推導新的解密密鑰。
  41. 如申請專利範圍第37項所述之加密指令安全執行方法,更包括旋轉移位選定的該組一或多個主密鑰其一,據以產生新的一個解密密鑰,所旋轉移位的量係基於該加密指令快取位址。
  42. 如申請專利範圍第41項所述之加密指令安全執行方法,其中該加密指令快取位址的位[b:0]子集不影響主密鑰的旋轉移位量,數字0與b分別用於標示該加密指令快取位址的最低有效位元以及第b位有效位元。
  43. 如申請專利範圍第41項所述之加密指令安全執行方法,其中旋轉移位動作包括根據該加密指令快取位址的位[d:c]子集代表的數值所定義的量對主密鑰做旋轉移位,數字c以及d分別用於標示該加密指令快取位址的第c位有效位元以及第d位有效位元。
  44. 如申請專利範圍第43項所述之加密指令安全執行方法,其中旋轉移位動作以n個可能旋轉移位量其一做主密鑰之旋轉移位,n=2m,m為該加密指令快取位址的位[d:c]子集的位元數。
  45. 如申請專利範圍第37項所述之加密指令安全執行方法,更包括基於新的一加密指令快取位址選擇新的一組一或多個主密鑰,並據以推導新的一解密密鑰。
  46. 如申請專利範圍第37項所述之加密指令安全執行方法,其中選擇新的一組一或多個主密鑰的動作是決定於新的該加密指令快取位址的位[f:e]子集,數字e以及f分別用於標示該加密指令快取位址的第e位有效位元以及第f位有效位元。
  47. 如申請專利範圍第46項所述之加密指令安全執行方法,其中選擇新的一組一或多個主密鑰的動作包括選擇可用的q組一或多個主密鑰中任一組,p=2q,q為新的該加密指令快取位址的位[f:e]子集中可能數值之一。
  48. 一種電腦程式產品,編碼於至少一非暫態電腦用媒體由一運算裝置運作,該電腦程式產品更包括:一電腦用程式碼,載於該非暫態電腦用媒體以操作一微處理器,該電腦用程式碼包括:一第一程式碼,用以操作一指令快取記憶體,以儲存加密指令;一第二程式碼,用以操作一快取邏輯,該快取邏輯係設置來從該指令快取記憶體快取出加密指令;一第三程式碼,用以操作一安全記憶體,該安全記憶體係設置來儲存複數個主密鑰;一第四程式碼,用以操作一密鑰選擇邏輯,該密鑰選擇邏輯係設置來基於一加密指令快取位址選擇一組一或多個主密鑰;以及一第五程式碼,用以操作一解密邏輯,該解密邏輯係設置來採用選定的該組一或多個主密鑰、或推導自選定的該組一或多個主密鑰的一解密密鑰來解密快取自該指令快取記憶體的加密指令。
  49. 一種微處理器,包括:一指令處理管線;一處理器匯流排;一快取記憶體分層結構;以及一安全記憶體,不可經該處理器匯流排訪問,且非該快取記憶體分層結構的一部分,係設置來儲存加密密鑰;其中,該微處理器係設置避免一非特權程式對該安全記憶體讀取或寫入加密密鑰數值,以限制該安全記憶體的存取;其中,該微處理器更設置來:接收一請求,使自加密指令無法執行的一般執行模式切換至加密指令得以執行的一安全執行模式;有條件地允許該請求;執行指令,將一組一或多個加密密鑰數值寫入該微處理器的安全記憶體;自一指令快取記憶體快取一加密程式;以及解密該加密程式為純文字指令,其中使用該指令處理管線中的一解密邏輯,該解密邏輯採用該安全記憶體中儲存的加密密鑰數值或所衍生之數值解密該加密程式;且執行程式,其中未將上述純文字指令曝光給任何非特權程式或該微處理器外的任何資源。
  50. 如申請專利範圍第49項所述之微處理器,設置來解密該加密程式的連續段落,其中係根據該加密程式之上述連續段落儲存的位址自該安全記憶體選擇多組一或多個加密密鑰數值或以其衍生數值做解密。
  51. 如申請專利範圍第49項所述之微處理器,根據該請求的形式是否為載有加密參數的一指令,有條件地允許該請求以切換至該安全執行模式,該指令為一特權程式或程序的一部分,且解密時上述加密參數符合執行該加密程序的一預設標準。
  52. 如申請專利範圍第51項所述之微處理器,其中上述加密參數以及加密程式之加密係採用不同的加密機制。
  53. 如申請專利範圍第52項所述之微處理器,其中,該加密程式的連續段落之加密係基於該加密程式的連續段落的儲存位址。
  54. 如申請專利範圍第49項所述之微處理器,係設置來執行一指令,藉由該指令的一即時數據字段將加密密鑰數值寫入該安全記憶體。
  55. 如申請專利範圍第49項所述之微處理器,其中該安全記憶體係設置來透過一加密通道接收加密密鑰數值。
  56. 如申請專利範圍第49項所述之微處理器,包括一般執行模式下運行之程式所無法存取的一安全執行模式異常處理邏輯以及一安全執行模式中斷處理邏輯,且該微處理器係設置成在運作於安全執行模式下使用上述安全執行模式異常處理邏輯以及安全執行模式中斷處理邏輯。
  57. 如申請專利範圍第49項所述之微處理器,係設置來避開加密指令之解密,除非該微處理器處於上述安全執行模式。
  58. 如申請專利範圍第49項所述之微處理器,係設置來避開加密指令之解密,除非該微處理器操作在x86架構的系統管理模式。
  59. 一種加密指令安全執行方法,於一微處理器中安全執行加密指令,包括:接收一請求,使自加密指令無法執行的一般執行模式切換至加密指令得以執行的一安全執行模式;有條件地允許該請求;執行指令,將一組加密密鑰數值寫入該微處理器的一安全記憶體,其中該安全記憶體不可經該微處理器的一處理器匯流排訪問,且非一快取記憶體分層結構的一部分,且非特權程式無法對該安全記憶體讀取或寫入加密密鑰數值;自一指令快取記憶體快取一加密程式;以及解密該加密程式為純文字指令,其中使用該指令處理管線中的一解密邏輯,並採用該安全記憶體儲存的一或多組的一或多個加密密鑰數值或所衍生之數值實現解密;且執行程式,其中未將上述純文字指令曝光給任何非特權程式或該微處理器外的任何資源。
  60. 如申請專利範圍第59項所述的加密指令安全執行方法,更包括:根據該加密程式之連續段落儲存的位址,選擇連續組一或多個加密密鑰數值,供解密該加密程式使用;以及採用選擇的該些組一或多個加密密鑰數值,解密該加密程式的連續段落。
  61. 如申請專利範圍第59項所述的加密指令安全執行方法,其中有條件允許該請求以切換至該安全執行模式的動作係基於該請求的形式是否為載有加密參數的一指令,該指令為一特權程式或程序的一部分,且解密時上述加密參數符合執行該加密程序的一預設標準。
  62. 如申請專利範圍第61項所述的加密指令安全執行方法,更包括採用不同的加密機制加密上述加密參數以及加密程式。
  63. 如申請專利範圍第62項所述的加密指令安全執行方法,更包括基於該加密程式的連續段落的儲存位址對該加密程式的連續段落做加密。
  64. 如申請專利範圍第59項所述的加密指令安全執行方法,其中將加密密鑰數值寫入該安全記憶體的指令在指令的一即時數據字段儲存加密密鑰數值。
  65. 如申請專利範圍第59項所述的加密指令安全執行方法,更包括透過一加密通道接收加密密鑰數值。
  66. 如申請專利範圍第59項所述的加密指令安全執行方法,更包括使用一般執行模式下運行之程式所無法存取的一安全執行模式異常處理邏輯以及一安全執行模式中斷處理邏輯,以於運作於安全執行模式時處理異常以及中斷。
  67. 如申請專利範圍第59項所述的加密指令安全執行方法,更包括避開加密指令之解密,除非該微處理器處於上述安全執行模式。
  68. 如申請專利範圍第59項所述的加密指令安全執行方法,更包括避開加密指令之解密,除非該微處理器操作在x86架構的系統管理模式。
  69. 一種電腦程式產品,編碼於至少一非暫態電腦用媒體由一運算裝置運作,該電腦程式產品更包括:一電腦用程式碼,載於該非暫態電腦用媒體以操作一微處理器,該電腦用程式碼包括:一第一程式碼,用以操作一處理器匯流排;一第二程式碼,用以操作一快取記憶體邏輯,該快取邏輯係設置來從該指令快取記憶體快取出加密指令;一第三程式碼,用以操作一安全記憶體,該安全記憶體不可經該處理器匯流排訪問,且非該快取記憶體分層結構的一部分,且該安全記憶體係設置來儲存加密密鑰;一第四程式碼,用以操作該微處理器的結構,避免一非特權程式對該安全記憶體讀取或寫入加密密鑰數值,以限制該安全記憶體的存取;一第五程式碼,用以操作該微處理器的結構,使之接收一請求,使自加密指令無法執行的一般執行模式切換至加密指令得以執行的一安全執行模式;一第六程式碼,用以操作該微處理器的結構,使之有條件地允許該請求;一第七程式碼,用以操作該微處理器的結構,使之執行指令,將一組一或多個加密密鑰數值寫入該微處理器的安全記憶體;一第八程式碼,用以操作該微處理器的結構,使之自一指令快取記憶體快取一加密程式;一第九程式碼,用以操作該微處理器的結構,使之以該微處器內的一解碼器解密該加密程式為純文字指令,其中係使用該安全記憶體中儲存的一或多組的一或多個加密密鑰數值或所衍生之數值解密該加密程式;以及一第十程式碼,用以操作該微處理器的結構,使之執行程式,其中未將上述純文字指令曝光給任何非特權程式或該微處理器外的任何資源。
TW105132329A 2015-10-15 2016-02-26 微處理器與其中安全執行指令的方法 TWI627556B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/884,547 2015-10-15
US14/884,547 US9911008B2 (en) 2010-05-25 2015-10-15 Microprocessor with on-the-fly switching of decryption keys

Publications (2)

Publication Number Publication Date
TW201715434A TW201715434A (zh) 2017-05-01
TWI627556B true TWI627556B (zh) 2018-06-21

Family

ID=56596903

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105132329A TWI627556B (zh) 2015-10-15 2016-02-26 微處理器與其中安全執行指令的方法
TW105105820A TWI560575B (en) 2015-10-15 2016-02-26 Microprocessor and method for securely executing instructions therein

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW105105820A TWI560575B (en) 2015-10-15 2016-02-26 Microprocessor and method for securely executing instructions therein

Country Status (2)

Country Link
CN (1) CN105843776B (zh)
TW (2) TWI627556B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI769066B (zh) * 2021-07-15 2022-06-21 新加坡商瑞昱新加坡有限公司 網路裝置及其數據上行傳輸方法
TWI813815B (zh) * 2019-05-09 2023-09-01 韓商愛思開海力士有限公司 記憶體模組、其操作方法、記憶體系統以及其操作方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106789006A (zh) * 2016-11-28 2017-05-31 范睿心 一种解密方法及系统
CN107145308B (zh) * 2017-05-04 2021-06-22 惠州Tcl移动通信有限公司 移动终端、及其sd卡操作控制方法、系统、存储装置
US11070375B2 (en) * 2018-02-08 2021-07-20 Micron Technology, Inc. Key encryption handling
TWI786543B (zh) * 2021-02-17 2022-12-11 韋僑科技股份有限公司 無線通訊模組及其應用裝置控制系統與應用裝置控制方法
CN115145832B (zh) * 2022-09-05 2022-11-11 北京麟卓信息科技有限公司 一种公共数据的多线程访问轨迹的分析方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050105738A1 (en) * 2003-09-24 2005-05-19 Kabushiki Kaisha Toshiba On-chip multi-core type tamper resistant microprocessor
CN1722046A (zh) * 2004-06-30 2006-01-18 富士通株式会社 安全处理器和用于安全处理器的程序
TW201009583A (en) * 2008-08-29 2010-03-01 Phison Electronics Corp Storage system, controller and data protecting method thereof
TW201415282A (zh) * 2012-10-11 2014-04-16 Phison Electronics Corp 資料保護方法、行動通訊裝置與記憶體儲存裝置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996725B2 (en) * 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors
US7502928B2 (en) * 2004-11-12 2009-03-10 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
US8213612B2 (en) * 2007-12-07 2012-07-03 Inside Contactless S.A. Secure software download
US8910276B2 (en) * 2008-05-24 2014-12-09 Via Technologies, Inc. Apparatus and method for precluding execution of certain instructions in a secure execution mode microprocessor
US9256551B2 (en) * 2013-08-09 2016-02-09 Apple Inc. Embedded encryption/secure memory management unit for peripheral interface controller
CN104424407A (zh) * 2013-08-27 2015-03-18 宇宙互联有限公司 存储管理系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050105738A1 (en) * 2003-09-24 2005-05-19 Kabushiki Kaisha Toshiba On-chip multi-core type tamper resistant microprocessor
CN1722046A (zh) * 2004-06-30 2006-01-18 富士通株式会社 安全处理器和用于安全处理器的程序
TW201009583A (en) * 2008-08-29 2010-03-01 Phison Electronics Corp Storage system, controller and data protecting method thereof
TW201415282A (zh) * 2012-10-11 2014-04-16 Phison Electronics Corp 資料保護方法、行動通訊裝置與記憶體儲存裝置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI813815B (zh) * 2019-05-09 2023-09-01 韓商愛思開海力士有限公司 記憶體模組、其操作方法、記憶體系統以及其操作方法
TWI769066B (zh) * 2021-07-15 2022-06-21 新加坡商瑞昱新加坡有限公司 網路裝置及其數據上行傳輸方法

Also Published As

Publication number Publication date
TW201714114A (zh) 2017-04-16
TW201715434A (zh) 2017-05-01
CN105843776B (zh) 2018-11-27
CN105843776A (zh) 2016-08-10
TWI560575B (en) 2016-12-01

Similar Documents

Publication Publication Date Title
TWI502497B (zh) 解密密鑰產生裝置與方法
TWI627556B (zh) 微處理器與其中安全執行指令的方法
US9911008B2 (en) Microprocessor with on-the-fly switching of decryption keys
US9892283B2 (en) Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9798898B2 (en) Microprocessor with secure execution mode and store key instructions
CN107015926B (zh) 微处理器以及相关的操作方法
TWI437489B (zh) 微處理器以及相關的操作方法、以及加密、解密方法