專利背景 截至2003年11月,
信息安全 領域中,最重要的一個部分就是嵌入式系統安全的問題,而
嵌入式系統 中的一個重要組成部分就是CPU,因而CPU核的安全性則決定了整個嵌入式系統的安全性能的高低。
由於2003年11月前普通的嵌入式CPU核在結構設計中主要考慮的是速度、可靠性、功耗等一些非安全性的因素,產品的安全漏洞很多,根本不能滿足構建信息安全系統的要求,因此要根據信息安全套用中的特殊要求設計專用的信息安全晶片。中國國內的信息安全產品,以
銀行卡 、
社保卡 、手機SIM卡等卡類產品為例,絕大多數仍然停留在8位機的水平,並且多數的市場也是被一些中國國外的大公司(如Atmel、
Philips 、Infineon等)所控制。8位CPU構成的產品功耗和成本相對較低,但是在當前政務網安全、電子商務安全、網路傳媒安全、網路安全管理等方面的套用中,8位機在處理能力、安全性等各個方面都已經顯得力不從心。
針對高端的32位機產品中,英國的ARM公司推出了SC100、SC200以及SC210三款針對信息安全的專用CPU,MIPS也推出了其4Ks系例的信息安全CPU。但是這些產品在使用方面不符合國家密碼管理委員會規定的關於中國商用密碼必須使用自主智慧財產權的要求;在安全性方面仍存在一些漏洞,比如ARM公司的SC200中的MPU就沒有地址數據的加解密功能,而只有簡單的記憶體保護功能。在中國國內,已發布的32位機有
龍芯 、方舟等,但這些公司2003年11月前還沒有推出針對信息安全的專用CPU。因此,中國國內在32位信息安全專用CPU方面的產品還是一片空白。
發明內容 專利目的 《一種用於信息安全的嵌入式CPU》提出了一種用於信息安全的嵌入式CPU。該嵌入式CPU通過設定存儲器加密保護單元(Memory Encryptionand Protection Unit,縮寫MEPU)實現了先進的數據/地址加解密機制和反攻擊機制,對系統數據進行了不同層次的保護,提高了系統運行的安全性。其中,MEPU的設計構思適用32位、16位、8位等各種信息安全CPU。
技術方案 《一種用於信息安全的嵌入式CPU》在未採用安全保護措施的原始CPU核與
存儲器 以及外部設備之間設有一個專門的存儲器加密保護單元(以下簡稱MEPU),CPU核通過地址、控制、數據三匯流排經過MEPU與存儲器以及外部設備通訊溝通。系統復位後將記憶體邏輯空間劃分成三類區域,即若干個超級用戶可程式區塊、一個系統區、一個存儲器保護單元控制區,同時將訪問用戶分為超級用戶和普通用戶兩種。
MEPU中包含有一訪問屬性保護單元、一存儲區加密單元和一系統區加密單元,其中:
(1)訪問屬性保護單元,用於對上述三類區塊進行訪問保護,其內容包括。
①地址範圍暫存器,用於存放識別存儲器及外設對應各區塊的地址範圍信息。
②訪問屬性暫存器,用於存放存儲器及外設對應各區塊的訪問屬性信息。
③地址比較器,用於將CPU核發出的一個地址與對應各區塊的地址範圍進行比較,如果說一個或多個區塊包含該地址,將產生對應這些包含區塊的信號,如果地址不在各區塊地址範圍,將產生一個地址異常信號。
④屬性判別邏輯,回響地址比較器產生的對應包含區塊信號,按照優先原則選擇最嚴格的訪問屬性來確定屬性對照標準,並輸出對應區塊的屬性與這次訪問的屬性進行比較,如果屬性匹配將產生一個訪問正常信號,如果不匹配將產生一個訪問異常信號。
⑤門開關,回響地址比較器和屬性判別邏輯的信號,對應作出關閉或開啟地址、控制及數據匯流排的反應。
(2)存儲區加密單元,用於對若干個超級用戶可程式區塊進行加密保護,其內容包括:
①加密使能暫存器,用來配置各個超級用戶可程式區塊的加密使能。
②密鑰暫存器,用於存放可軟體編程的密鑰。
③數據加密/解密器,使用密鑰暫存器中的軟密鑰對CPU核輸出到各個超級用戶可程式區塊的數據進行加密,對各個超級用戶可程式區塊輸入到CPU核的數據進行解密。
④地址加密器,使用密鑰暫存器中的軟密鑰將CPU核輸出到各個超級用戶可程式區塊的地址打散。
(3)系統區加密單元,用於對系統區進行加密保護,其內容包括:
①硬密鑰,該密鑰為硬體編程的密鑰,用於對系統區加密。
②數據加密/解密器,使用硬密鑰對CPU核輸出到系統區的數據進行加密,對系統區輸入到CPU核的數據進行解密。
③地址加密器,使用硬密鑰將CPU核輸出到系統區的地址打散。
上述技術方案的內容解釋如下:
1、上述方案中,為了進一實現反攻擊機制,訪問屬性保護單元中還包括訪問狀態暫存器和計數器,其中:訪問狀態暫存器,用於記錄非法訪問發生的區塊和訪問類型信息,其中包含:訪問狀態位,對應記錄所有區塊中的訪問狀態合法/非法;TC位,存放傳輸代碼信號,該信號與上一次非法訪問相聯繫;RW位,記錄上次非法訪問時讀/寫引腳信號;計數器,用於記錄相同類型非法訪問次數,如果記錄的次數到達設定次數後,系統檢測到外部的惡意攻擊和破解,產生一個信號將阻塞系統。
2、上述方案中,為了使超級用戶可程式區塊實現有效的保護,MEPU還包括一對應超級用戶可程式區塊的使能控制暫存器,用於將系統復位時處於禁止訪問狀態的超級用戶可程式區塊使能。
3、上述方案中,為了使每個超級用戶可程式區塊具有更好的加密性,在對超級用戶可程式區塊進行加密時,每個區塊的加密密鑰都是不同的。
4、上述方案中,在採用軟密鑰對若干個超級用戶可程式區塊中的數據加密時,是以1個位元組為單位進行的,而對地址加密時則是在1K位元組區內以四個位元組為單位而進行的,即32位地址中最高的22位及最低的2位是不加密的,中間8位地址是要通過打亂進行加密的。
5、上述方案中,所述若干個超級用戶可程式區塊的訪問屬性可選擇下列不同類型中的一種:
其中:R表示讀操作,W表示寫操作,X表示執行操作,---表示不允許。
6、上述方案中,超級用戶可程式區塊數≤存儲器保護單元中所設的配置暫存器的數量,各配置暫存器與各區塊一一對應。
7、上述方案中,為了便於實現,每個超級用戶可程式區塊的大小在1K位元組~4G位元組範圍,並以2的冪的倍數變化。
8、上述方案中,每個超級用戶可程式區塊的基地址可以位於邏輯空間中的任意位置,並且自動變為該分區大小的整數倍。在若干個超級用戶可程式區塊配置中,各個區塊之間允許重疊,重疊區域的訪問屬性選擇對應的最嚴格訪問屬性。
9、上述方案中,為了使超級用戶靈活、有效的控制可程式區塊,超級用戶可以通過相關暫存器對各超級用戶可程式區塊的基地址、大小、是否加密以及訪問屬性進行配置。
該發明的安全保護原理是:MEPU在系統復位後提供了以下三種安全保護措施:
(1)MEPU通過軟體將訪問用戶分為超級用戶和普通用戶兩種,超級用戶對系統區和MEPU控制區具有訪問許可權,超級用戶通過一組區塊配置暫存器對若干個超級用戶可程式區塊的基地址、大小、是否加密以及訪問屬性進行配置。
(2)MEPU對系統區採用硬密鑰進行加密;對若干個超級用戶可程式區塊採用軟密鑰進行加密,而且加密方式採用的是:對數據加密同時將數據存放的地址打散,軟密鑰存放在上述密鑰暫存器中。
(3)MEPU設有非法訪問類型判定和計數機制,該機制由地址比較器、各區塊配置暫存器、控制和狀態暫存器以及相應的軟體配合形成,地址比較器將訪問的地址與所有區塊進行比較以確定所處的區塊;軟體將相應區塊配置暫存器中設定的訪問屬性與企圖訪問的屬性進行對比來檢測該訪問的合法性;控制和狀態暫存器記錄非法訪問發生的區塊和訪問類型,非法訪問的類型信息將更新一個計數器,當計數器記錄相同類型非法訪問次數到達設定次數後,系統檢測到外部的惡意攻擊和破解,MEPU將鎖定系統。
改善效果 由於上述技術方案運用,《一種用於信息安全的嵌入式CPU》與2003年11月前已有技術相比具有下列優點:
1、該發明採用對數據加密同時將數據存放的地址打散的做法,在MEPU中實現了先進的反跟蹤機制(anti-trace),這樣確保了非法的跟蹤者不能通過對系統程式的跟蹤而探察到系統內部的敏感信息。
2、該發明將用戶分為了超級用戶和普通用戶兩種,超級用戶具有特定的許可權能配置MEPU,設定普通用戶的許可權,從而很好地保證了系統地訪問許可權的管理。
3、該發明將整個記憶體空間分成了系統區塊、MEPU控制區塊和若干個超級用戶可程式區塊,其中若干個超級用戶可程式區塊是可以由超級用戶設定其大小及所處的位置,以及指定其各個區塊的訪問許可權和是否需要加密,因此使這些區塊具有靈活的訪問屬性和數據/地址加密特性。
4、該發明採用了兩個類型的密鑰,即硬密鑰(hard-code key)和軟密鑰(soft-code key)。對於若干個超級用戶可程式區塊採用軟密鑰,只有超級用戶才能設定,而且每個區塊的加密密鑰都是可以設成不同的。對於系統區塊採用硬體加密編程,該密鑰與若干個超級用戶可程式的區塊是不一樣的,只有晶片製造商知道,從而保證了系統安全性。
5、該發明MEPU中設有訪問非法類型判定及計數機制,能檢測到外部的惡意攻擊和破解,從而阻塞系統防止非法的攻擊,保護系統。
附圖說明 附圖1為《一種用於信息安全的嵌入式CPU》系統框圖;
附圖2為該發明實施例CS320-32位信息安全專用CPU晶片系統結構圖;
附圖3為該發明MEPU系統初始化流程圖;
附圖4為該發明MEPU記憶體空間配置實施圖,其中,圖4(a)表示復位後系統配置情況;圖4(b)表示一個典型的系統套用配置情況;圖4(c)表示與圖4(b)相似的一種配置情況;圖4(d)表示當系統檢測到非法攻擊時的一種配置情況。
權利要求 1、《一種用於信息安全的嵌入式CPU》其特徵在於:在CPU核與存儲器及外設之間設定一存儲器加密保護單元,系統復位後將記憶體邏輯空間劃分成三類區域,即若干個超級用戶可程式區塊、一個系統區、一個存儲器保護單元控制區,同時將訪問用戶分為超級用戶和普通用戶兩種;
存儲器加密保護單元中包含有一訪問屬性保護單元、一存儲區加密單元和一系統區加密單元,其中:
(1)訪問屬性保護單元,用於對上述三類區塊進行訪問保護,其內容包括:
①地址分塊暫存器,用於存放識別存儲器及外設對應各區塊的地址範圍信息;
②訪問屬性暫存器,用於存放存儲器及外設對應各區塊的訪問屬性信息;
③地址比較器,用於將CPU核發出的一個地址與對應各區塊的地址範圍進行比較,如果說一個或多個區塊包含該地址,將產生對應這些包含區塊的信號,如果地址不在各區塊地址範圍,將產生一個地址異常信號;
④屬性判別邏輯,根據地址比較器產生的對應包含區塊信號,按照優先原則選擇最嚴格的訪問屬性來確定屬性對照標準,並輸出對應區塊的屬性與這次訪問的屬性進行比較,如果屬性匹配將產生一個訪問正常信號,如果不匹配將產生一個訪問異常信號;
⑤門開關,回響地址比較器和屬性判別邏輯的信號,對應作出關閉或開啟地址、控制及數據匯流排的反應;
(2)存儲區加密單元,用於對若干個超級用戶可程式區塊進行加密保護,其內容包括:
①加密使能暫存器,用來配置各個超級用戶可程式區塊的加密使能;
②密鑰暫存器,用於存放可軟體編程的密鑰;
③數據加密/解密器,使用密鑰暫存器中的軟密鑰對CPU核輸出到各個超級用戶可程式區塊的數據進行加密,對各個超級用戶可程式區塊輸入到CPU核的數據進行解密;
④地址加密器,使用密鑰暫存器中的軟密鑰將CPU核輸出到各個超級用戶可程式區塊的地址打散;
(3)系統區加密單元,用於對系統區進行加密保護,其內容包括:
①硬密鑰,該密鑰為硬體編程的密鑰,用於對系統區加密;
②數據加密/解密器,使用硬密鑰對CPU核輸出到系統區的數據進行加密,對系統區輸入到CPU核的數據進行解密;
③地址加密器,使用硬密鑰將CPU核輸出到系統區的地址打散。
2、根據權利要求1所述的嵌入式CPU,其特徵在於:上述訪問屬性保護單元中還包括訪問狀態暫存器和計數器,其中:訪問狀態暫存器,用於記錄非法訪問發生的區塊和訪問類型信息,其中包含:訪問狀態位,對應記錄所有區塊中的訪問狀態合法/非法;TC位,存放傳輸代碼信號,該信號與上一次非法訪問相聯繫;RW位,記錄上次非法訪問時讀/寫引腳信號;計數器,用於記錄相同類型非法訪問次數,如果記錄的次數到達設定次數後,系統檢測到外部的惡意攻擊和破解,產生一個信號將鎖定系統。
3、根據權利要求1所述的嵌入式CPU,其特徵在於:上述存儲器加密保護單元還包括一對應超級用戶可程式區塊的使能控制暫存器,用於將系統復位時處於禁止訪問狀態的超級用戶可程式區塊使能。
4、根據權利要求1所述的嵌入式CPU,其特徵在於:上述超級用戶可程式區塊加密中,每個區塊的加密密鑰設成不同的。
5、根據權利要求1所述的嵌入式CPU,其特徵在於:所述軟密鑰對若干個超級用戶可程式區塊中的數據加密時,是以1個位元組為單位進行的,而對地址加密時則是在1K位元組區內以四個位元組為單位而進行的,即32位地址中最高的22位及最低的2位是不加密的,中間8位地址是要通過打亂進行加密的。
6、根據權利要求1所述的嵌入式CPU,其特徵在於:所述若干個超級用戶可程式區塊的訪問屬性可選擇下列不同類型中的一種:
其中:R表示讀操作,W表示寫操作,X表示執行操作,---表示不允許。
7、根據權利要求1所述的嵌入式CPU,其特徵在於:上述超級用戶可程式區塊數≤存儲器保護單元中所設的配置暫存器的數量,各配置暫存器與各區塊一一對應。
8、根據權利要求1所述的嵌入式CPU,其特徵在於:上述超級用戶可程式區塊中,每個區塊的大小在1K位元組~4G位元組範圍,並以2的冪的倍數變化。
9、根據權利要求1所述的嵌入式CPU,其特徵在於:上述超級用戶可程式區塊中,每個區塊的基地址可以位於邏輯空間中的任意位置,並且自動變為該分區大小的整數倍,
10、根據權利要求1所述的嵌入式CPU,其特徵在於:上述超級用戶通過相關暫存器對若干個超級用戶可程式區塊的基地址、大小、是否加密以及訪問屬性進行配置。
實施方式 實施例
參見附圖1、圖2所示,一種CS320-32位嵌入式信息安全專用CPU晶片,由原始CPU核、MEPU、存儲器以及外部設備組成,CPU核通過地址、控制、數據三匯流排經過MEPU與存儲器以及外部設備通訊溝通。
原始CPU核是一個低功耗的32位RISC核心,採用load/store的架構,可以支持byte/halfword/word訪問,並針對16位的外設做了性能最佳化。原始CPU核中包含16個32位通用暫存器,13個32位控制暫存器以及16個32位交替暫存器檔案用於快速中斷過程中保存上下文信息。CPU晶片具有高度最佳化的流水線結構,多數指令為單周期完成,跳轉指令需要兩個指令周期,其最佳化的16位指令體系能夠提高CPU的代碼密度,在價格敏感的智慧卡晶片產品中,這顯得尤為重要。CPU核中具有增強的位操作指令,另外還有一個單周期32×16硬體乘法器,可以提高CS320在實現信息安全領域常用算法如RSA、ECC時的性能。
針對信息安全的特殊套用,CS320-32位嵌入式信息安全專用CPU晶片中專門設計了一個MEPU。MEPU是整個CPU晶片安全保護核心結構,它是CPU核與存儲器以及外部設備之間的一道閘門。CPU核與存儲器以及外設之間的通訊要經過地址比較、訪問屬性許可、存儲器加密單元的加解密等環節的處理才能完成。如果出現訪問屬性不匹配等情況,MEPU會把所有與存儲器以及外設通訊的匯流排信號關閉,防止外界通過多次試探獲得CPU核的信息。
一、MEPU特性
1、安全保護措施
MEPU在系統復位後將記憶體邏輯空間劃分成三類區域,即一個系統區、一個MEPU控制區、8個超級用戶可程式區塊,並提供以下三種安全保護措施:
(1)MEPU通過軟體將訪問用戶分為超級用戶和普通用戶兩種,超級用戶對系統區和MEPU控制區具有訪問許可權,超級用戶通過8個區塊配置暫存器對8個超級用戶可程式區塊的基地址、大小、是否加密以及訪問屬性進行配置。
(2)MEPU採用硬體加密電路對系統區單獨進行硬加密;採用密鑰暫存器以及軟體密鑰對8個超級用戶可程式區塊進行軟加密。
(3)MEPU設有非法訪問類型判定和計數機制,該機制由地址比較器、各區塊配置暫存器、控制和狀態暫存器以及相應的軟體配合形成,當計數器記錄相同類型非法訪問次數到達設定次數後,系統檢測到外部的惡意攻擊和破解,MEPU將鎖定系統。
2、8個超級用戶可程式區
MEPU具有8個超級用戶可程式區塊,也就是說超級用戶能在系統復位後通過對MEPU配置暫存器進行編程而靈活的將系統記憶體空間劃分為8個區塊,每個區塊的大小是可變的,但最小為1K位元組,最大為4G位元組,具體可以設定的區塊的大小及其對應的編碼如表1所示。
表1:可設定的區塊大小及其對應的編碼 每個區塊的基地址可以位於4G位元組記憶體映象的任何位置內,並且會自動變為該分區大小的整數倍(例如,一個區塊的大小為4K位元組,則該區塊的基地址會自動根據設定變為為4K的倍數,如0x0000000,0x00001000,...,)。
每個區塊的地址和數據可以單獨的由超級用戶指定是否被加密,如果被加密的話,則該區域記憶體中的數據被加密同時將數據存放的地址打亂,但CPU核讀寫執行該區塊的數據時會自動的進行解密,這樣在用戶看來感覺不到其中的加解密過程,但卻有效的防止了非法用戶對系統內部數據的讀取,另外這8個分區可以由超級用戶對暫存器AP[3:0]編程而指定各自的問屬性,這些屬性主要包括超級用戶訪問、普通用戶訪問、寫操作、讀操作、執行(取指)操作等要素,MEPU中8個區塊所具有的訪問屬性如表2所示。
表2:MEPU可設定的區塊訪問屬性表 其中:R表示讀操作,W表示寫操作,X表示執行操作,---表示不允許。
還要指出的是:在設定8個記憶體空間區塊時,各個區塊之間是可以重疊的,發生重疊時,重疊區域的訪問屬性將採用最嚴格的訪問屬性,並且當重疊的區塊中有一個是要加密時,則該重疊的部分將要加密。
3、系統區
MEPU具有一個4K位元組固定大小的區塊,這個區塊的基地址為0x00000000,它是用來存放異常向量表和作業系統(OS),這個區塊的數據和地址是加密的,該區塊的訪問屬性為超級用戶讀/寫/執行訪問,即該區塊只能由超級用戶執行讀、寫、執行指令等訪問,普通用戶無權訪問該區塊。在這4K位元組的空間中,512位元組的區塊0x00000000~0x000001FF主要用來存放128個異常向量,而0x00000200-0x00000FFF用來存放作業系統程式,注意到這部分程式已經是經過加密的,因此只有超級用戶通過解密才能正確地訪問該區域。但是作業系統程式有可能會大於3.5K位元組,如果出現這種情況的話,則可以在這3.5K位元組的空間記憶體放系統的初始化程式,對MEPU進行配置在8個超級用戶可程式區中以提供一個可以存放所有作業系統程式的區塊,並對該區塊進行加密。
4、MEPU控制區
MEPU還具有一個64K位元組的固定大小的區塊,這個區塊的基地址為0xFFFF0000,它是用來進行MEPU控制的,該區塊中沒有數據和地址的加密,它的訪問屬性為超級用戶讀/寫訪問,也就是說只有超級用戶才能對該區域的地址進行讀/寫訪問。
為了加解密,MEPU中還有一個可程式32位的數據/地址密鑰,該密鑰存放在該區塊中的MEPU密鑰暫存器中(MEPU Encryption Key Register),在MEPU對數據加密時,是以1個位元組為單位進行的,而對地址加密時則是在1K位元組區內以四個位元組為單位而進行的,也就是說32位地址中最高的22位及最低的2位是不打亂的,中間8位地址是要進行加密的。
為了記錄非法訪問的情況,MEPU中還提供了一個控制和狀態暫存器,則CPU核可以根據該暫存器中的記錄情況判斷系統是否受到非法的攻擊和破解,如果產生了上述情況則CPU核將阻塞系統,只有拿到廠商處由專人解鎖,這樣將更好的保護系統數據。
5、MEPU工作狀態
在系統復位後,MEPU將始終處於使能狀態,而異常處理向量表/作業系統區塊(系統區)和MEPU控制區塊將是始終處於保護狀態,也就是只有超級用戶能對該區域進行訪問。而那些可程式的區塊在系統復位後將是被禁止的,只有通過超級用戶對這8個區塊進行配置並使能。
二、MEPU記憶體空間
MEPU作為CS320系統的一部分,本身占用了64K位元組的地址空間,這個空間也就是MEPU的控制空間。下表3是整個CPU處理器地址空間。
表3:CPU處理器地址空間 超級用戶能訪問所有的地址空間(除了已經編程過的),而普通用戶能夠訪問的最大地址範圍為0x00001000 to 0xFFFEFFFF。普通用戶訪問這個範圍外的地址將產生訪問錯誤。
4G位元組的地址空間一共可以分成十個地址區塊,有兩個地址區塊是固定的,而其它8個分區是通過MEPU中的寫分區配置暫存器來設定的。兩個固定的分區如下:
1、系統區用於存放異常向量表和作業系統
2、MEPU控制區用來進行存儲器保護單元的控制
三、MEPU編程
MEPU的編程共包括以下10個暫存器,見表4:
表:4MEPU編程模型表 記憶體空間0xFFFF_0028~0xFFFF_FFFF被保留,對該區域讀訪問將得到的數據是0,而對該區域的寫操作也將沒有任何效果,並且還將產生一個傳輸應答信號。任何對MEPU控制空間區塊的訪問不管是有效還是無效將使所有的地址及選通信號被立即關閉。而mpu_tbusy_b、mpu_data_out信號將在訪問的數據傳輸周期中被關閉。
1、MEPU控制和狀態暫存器(MPUCSR)
MEPU控制和狀態暫存器有兩個目的:一個是提供MEPU的使能作用,另一個是保存上一次記憶體訪問的狀態信息。表5給出了暫存器的細節。
表5:MEPU控制及狀態暫存器 注意到R8V對應系統區塊(0x00000000to0x00000FFF),而R9V是對應MEPU控制區塊(0xFFFF0000to0xFFFFFFFF)。
TC位則存放著傳輸代碼信號TransferCodesignal(rce_tc[2:01),
注意到MEPU使能位只能使能/禁止可程式的8個區塊,而預先定義的系統區塊(Exception Vectorand OSRegion)和MEPU控制區塊(MEPU Control Space Region)是始終使能的。
2、MEPU密鑰暫存器(MEPU Encryption Key Register)
MEPU密鑰暫存器MPUEKR是用來存放一個32位的密鑰,通過這個密鑰可以對外部數據輸入/輸出匯流排進行加密/解密,也可以對8個可程式的區域地址匯流排進行加密,當然前提條件是相應區塊的加密使能位應該有效(具體可見下一部分的介紹)。
數據匯流排的加密是在位元組基礎上進行的,也就是說半字或者整字的訪問也是各自加密的,而對地址匯流排的加密則是在1K位元組的區塊內以整字為單位進行的,也就是說地址匯流排的最高的22位和最低的2位在加密過程中是保持不變的,而只有中間的8位是被加密的。8個區塊中某個區塊若加密使能,則在CPU核訪問該區塊時,MEPU也會進行解密,這樣對合法用戶來說會感覺不到這個加解密過程的存在,但是卻很好的保護了系統記憶體中的數據,這對信息安全系統來說就非常的有利。表6給出了MEPU密鑰暫存器細節。
表6:MEPU密鑰暫存器 值得提出的是對系統區塊(Exception Vector and OS Region)的加解密是採用硬密鑰(hard-code key)進行加密的,該密鑰在晶片製作時,是由硬體編程的一個32位的密鑰,用於對系統區塊的加密,只有晶片製造商知道,這樣對系統區塊的保護就更加可靠。
8個可程式區塊的加解密雖然都是採用密鑰暫存器,但是各個區塊的加密密鑰是不相同,因此進一步提高了系統的安全措施。該密鑰是一個軟密鑰(soft code key),即由一個可以軟體編程的32位的密鑰,只有超級用戶才能知道。該密鑰用於8個可程式區塊的加密。
MEPU的控制區塊(MEPU Control Space Region)則沒有進行加密。
3、MEPU區塊配置暫存器0-7(MEPU Region Configuration Register 0-7)
MEPU區塊配置暫存器(MPURRn)共有8個32位的暫存器,分別對應超級用戶可程式的8個區塊。這8個暫存器分別用來配置8個可程式的區域的基地址、大小、是否加密和屬性。而系統區塊(Exception Vector and OS Region)與MEPU控制區塊(MEPU Control Space Region)是由硬體控制並不需要相應的配置暫存器。表7給出了該暫存器的細節。
表7:MEPU區塊配置暫存器MPURR0-MPPURR7 22b0000_0000_0000_0000_0001_00
區塊的基地址,注意到地址比較時將自動取區塊大小的整數倍,而區塊的大小是在SIZE項中定義的。
1:該區塊的地址將被加密而數據也將被加密/解密,加密和解密將使用密鑰暫存器MPUEKR中存放的密鑰。
Region Access Permissions
這部分值將決定該區塊保護的具體級別(讀/寫/執行),詳細的定義可以參見表2,表中給出了相應設定所對應的訪問許可權。
四、MEPU工作原理
1、訪問非法檢測機制
當處理器通過CPU核的MLB匯流排對記憶體進行一次訪問時,MEPU將對訪問的地址和MEPU的10個區塊(8個超級用戶可程式的區塊和系統區塊以及MEPU控制空間區塊)的地址進行比較以確定訪問地址所處的區塊,任何一次都將進行10次比較。在有多個區塊重疊的情況下,比較後有可能會發現訪問的地址可以同時屬於多個區塊,因此這時就採用訪問屬性最嚴格的區塊,然後將這次訪問的屬性(主要是傳輸代碼和讀/寫指示信號)與所處區域的屬性進行對比,如果不匹配將產生訪問異常,如果發現訪問的地址不是這十個區域中的地址範圍,則會導致一個訪問非法,所有的地址和控制匯流排的信號都將被立即關閉,並且產生一個傳輸錯誤異常信號TEA,而在下一個周期中數據匯流排也將被全部關閉。
每當發生傳輸錯誤時,將把訪問的屬性存進MEPU控制及狀態暫存器MPUCSR。而由軟體根據該暫存器的內容來判定訪問非法的類型。如果某種原因有連續多個訪問非法產生(比如一個訪問非法產生後,緊接著訪問異常向量讀取也造成訪問非法),只有最近一次的非法訪問的傳輸屬性將被記錄在MEPU控制狀態暫存器MPUCSR中的TC和RW。注意到在正常情況下,當出現兩個或兩個以上的訪問異常時,系統將執行不可恢復的異常處理子程式,而不是一般的訪問異常處理子程式。在執行不可恢復的異常處理子程式時又有訪問非法產生,則系統將很可能停止工作。在每次訪問時,如果出現了訪問非法,則相應的MEPU控制狀態暫存器MPUCSR中的RnV將被設定。
2、非法類型的判定
軟體應該能判定訪問非法的類型和所在的區塊,因此MEPU提供記錄在MEPU控制狀態暫存器MPUCSR的上一次訪問非法信息。RnV位表示訪問非法發生的區塊,而TC[5:3]和RW[2]位表示企圖進行的訪問的類型,而訪問非法異常子程式應該檢查那些RnV位被設定的分區配置暫存器MPURRn,當MPURRn的AP[3:0]位設定訪問權信息與保存的企圖進行的訪問的類型進行比較,這樣就有可能判定訪問非法的類型。這個訪問非法的類型信息將被用來更新內部的一個計數器,該計數器將記錄訪問相同類型非法訪問的次數,當到達一定次數後,將表明系統有可能收到了惡意的攻擊,MEPU將阻塞系統,這樣就有效的防止了系統收到攻擊,提高了系統的安全性。
3、鎖定MEPU
鎖定MEPU也就是使MEPU保持當前的狀態不變化,例如當對一個超級用戶唯讀的MEPU控制空間區塊進行編程並使能MEPU時,則將鎖定MEPU。只有當系統復位後才能解開MEPU的鎖定。
4、反跟蹤機制(anti-trace)
在CS320中還實現了先進的反跟蹤機制,在普通的CPU中,一般復位0地址中存放的是復位異常處理程式的地址,比如說是一個32位地址Addr_data1。然後根據該地址,程式跳轉到相應的地址執行復位的初始化程式,一般非法跟蹤者就可能通過記憶體中的0地址中的內容而對復位程式進行跟蹤,從而探察CPU內部的工作,在CS320中,因為地址匯流排和數據匯流排都是經過加密的,因此復位向量存放的地址0經過加密後已經變成了另一個地址,而在該地址中存放的初始化程式的首地址也因為數據加密的原因不是原來的Addr_data1,例如變成了Addr_data2,因此非法跟蹤者就很難通過對記憶體0地址的探查而跟蹤CPU的工作。
5、安全系統的初始化
CS320採用了兩個類型的密鑰,即硬密鑰(hard-code key)和軟密鑰(soft-code key),硬密鑰(hard-code key)是只有IC設計者知道並用於給4K系統區塊(Exception Vector and OS Region)進行加密,超級用戶(Supervisor)也不知道該密鑰,並且每塊CPU的特定硬密鑰(hard-code key)也是不一樣的,這樣可以最大程度的保護系統區塊內的數據。而軟密鑰(soft-code key)是由supervisor指定並存放在密鑰暫存器MPUEKR中,用以對8個區塊進行加密,普通用戶無法訪問該密鑰。
為了使得MEPU能夠在信息安全晶片系統中提供最大可能的安全性能,系統區塊(Exception Vector and OS Region)將是由硬體進行加密編程的一個超級用戶讀/寫/執行的4K位元組大小的區塊,該區塊的基地址在0x00000000。
系統初始化開始時,首先從0x00000000獲取復位異常向量,該向量指向復位異常處理子程式的首地址,該邏輯地址應該存放於地址0x00000200到0x0000FFF之間,復位異常處理子程式一開始就要使能MEPU(即對地址0xFFFF0000的MEPU控制和狀態暫存器MPUCSR寫1),接著向密鑰暫存器MPUEKR和MEPU分區配置暫存器MPURR0-MPURR7中寫入適當的數據對8個超級用戶可程式區塊進行配置。其中的一個或者更多的區塊將被用來存放附加的作業系統,以彌補系統區塊(Exception Vector and OS Region)的不足。這些分區採用不同的密鑰進行加密,它們將由系統區塊(Exception Vector and OS Region)中的程式進行編程。整個初始化過程由圖3表示。
下面是MEPU配置的實例:
圖4給出了不同的MEPU配置實例。圖4(a)中給出了復位後的系統配置情況,只有兩個區塊被使能的:映射圖底部4K位元組加密的超級用戶讀/寫/執行區塊和項部64K位元組的MEPU控制區塊,剩下的部分將是不能被訪問的。這時系統將不進行針對套用的系統安全套用的MEPU配置。
圖4(b)給出了一個典型的系統套用配置。在下面的4K位元組空間將被擴展為放置附加的系統程式。另外附加的兩個加密的記憶體區塊被用來放置用戶應用程式。另外的區域將是不能被訪問到的。
圖4(c)給出了與圖4(b)相似的配置情況,不同的只是不同的區塊被使能。這將使得一個不同的用戶應用程式,圖4(b)和(c)共同享有超級用戶加密塊(supervisor encrypted)。
圖4(d)給出了當系統檢測到非法攻擊時的一種配置,例如連續發生了同一種特定類型的非法訪問,超級用戶將禁止整個記憶體空間,注意到這將是永久性的禁止整個記憶體空間。
榮譽表彰 2007年,《一種用於信息安全的嵌入式CPU》獲得第五屆江蘇省專利項目獎優秀獎。