一些微控制器配有片載EEPROM,這樣既提供了非易失性數(shù)據(jù)存儲(chǔ)器,還能節(jié)省電路板空間。然而,隨著數(shù)據(jù)安全變得愈發(fā)重要,許多現(xiàn)代嵌入式系統(tǒng)需要一種實(shí)用的方法,利用非易失性存儲(chǔ)器來安全地存儲(chǔ)數(shù)據(jù),同時(shí)還要能抵御外部黑客的攻擊。
本文將介紹如何利用單芯片安全EEPROM來抵御黑客攻擊,安全地存儲(chǔ)非易失性數(shù)據(jù),而不過多地涉及詳細(xì)的加密功能。相反,本文將介紹一款來自知名供應(yīng)商的合適的安全EEPROM示例,并描述該EEPROM的工作原理和應(yīng)用方式。
為什么要用EEPROM?
許多嵌入式系統(tǒng)都得益于非易失性數(shù)據(jù)存儲(chǔ)器,而EEPROM便是典型的代表之一。與掉電時(shí)失去狀態(tài)的RAM相比,EEPROM可在系統(tǒng)掉電時(shí)依靠固件控制來執(zhí)行讀寫操作并保持其狀態(tài)。
雖然微控制器內(nèi)的EEPROM總是會(huì)有助于存儲(chǔ)那些掉電時(shí)須保留的程序數(shù)據(jù),但這種存儲(chǔ)器通常存在與RAM相同的安全漏洞。在一些現(xiàn)代的8位、16位和32位微控制器中,有一些安全方法可以避免在固件控制下讀取數(shù)據(jù)存儲(chǔ)器區(qū)域,或阻止調(diào)試器等外部接口讀取數(shù)據(jù)。在過去,這種安全性可能稱得上足夠充分,但如今,在許多情況下,黑客可能擁有足夠的資金、時(shí)間、動(dòng)機(jī)和資源來繞過這種看似充分的安全性,獲得對(duì)關(guān)鍵系統(tǒng)的訪問權(quán)限。
如今,隨著現(xiàn)代嵌入式系統(tǒng)的發(fā)展,許多應(yīng)用都需要更強(qiáng)大數(shù)據(jù)保護(hù)能力。在一些物聯(lián)網(wǎng)節(jié)點(diǎn)、安防系統(tǒng)、車到車通信、現(xiàn)代醫(yī)療設(shè)備和自主駕駛車輛中尤其如此。僅僅是預(yù)防系統(tǒng)克隆也可能需要數(shù)據(jù)安全性。在一些應(yīng)用中,如果EEPROM數(shù)據(jù)因?yàn)槭艿綈阂夂诳偷某晒舳斐尚孤?,可能?huì)導(dǎo)致財(cái)產(chǎn)損失或更糟糕的情況發(fā)生。
在這類情況下,就需要強(qiáng)有力的EEPROM去防御擁有大量資源的黑客。這時(shí)可使用具有高安全性的EEPROM,它能輕松地對(duì)密碼、克隆哈希、指紋數(shù)據(jù)、傳感器校準(zhǔn)信息以及生物識(shí)別數(shù)據(jù)等敏感數(shù)據(jù)進(jìn)行加密。
Microchip Technology已憑借一系列CryptoAuthentication器件解決了這一設(shè)計(jì)問題。如果這些器件聽起來很熟悉的話,那是因?yàn)镸icrochip是通過收購(gòu)Atmel延續(xù)了該產(chǎn)品系列。ATAES132A 32KB安全EEPROM就是來自該系列的前述器件之一(圖1)。
圖1:ATAES132A 32KB串行EEPROM專門設(shè)計(jì)有安全功能,可用于保護(hù)數(shù)據(jù)和內(nèi)部寄存器。(圖片來源:Digi-KeyElectronics)
ATAES132A可以像任何標(biāo)準(zhǔn)32KB串行EEPROM一樣使用。該器件采用標(biāo)準(zhǔn)SPI和I2C引腳分配,因此無需任何硬件修改便能替換現(xiàn)有設(shè)計(jì)中的標(biāo)準(zhǔn)串行EEPROM。這樣一來,現(xiàn)有設(shè)計(jì)只需修改應(yīng)用固件,便可輕松升級(jí)額外的安全性。
此外,該器件還具有顯著的物理保護(hù)功能、加密功能和其他融入設(shè)計(jì)的安全功能;啟用這些功能后,將可以保護(hù)EEPROM數(shù)據(jù)和內(nèi)部寄存器免受最頑固的黑客以外的所有黑客攻擊。數(shù)據(jù)可以通過使用軍用級(jí)AES加密技術(shù)(最多16個(gè)128位密鑰)進(jìn)行保護(hù)。
多方面的物理保護(hù)
首先,ATAES132A 具有許多機(jī)械安全機(jī)制,可防止器件受到物理上的反向工程。該器件對(duì)環(huán)境溫度的某些變化很敏感,以應(yīng)對(duì)例如試圖“深度凍結(jié)”器件以維護(hù)存儲(chǔ)器內(nèi)容等手段。它還能檢測(cè)試圖暴露芯片的“去蓋”嘗試——金屬屏蔽可以遮蓋芯片,如果將其移除,芯片將可以檢測(cè)其是否曝露于光線中,而這種曝光可能引發(fā)破壞存儲(chǔ)器內(nèi)容的機(jī)制。
最后,存儲(chǔ)器內(nèi)容得到加密。該器件還可能包括只有Microchip工程師才知道的未公開安全機(jī)制,因?yàn)镸icrochip會(huì)對(duì)這些安全機(jī)制的細(xì)節(jié)保密,這就為安全存儲(chǔ)器提供了廣泛的物理安全性,無需開發(fā)人員構(gòu)建復(fù)雜的外殼來提供EEPROM屏障。
上電時(shí),可將ATAES132A配置為使用SPI或I2C接口對(duì)接至大多數(shù)微控制器。當(dāng)采用I2C模式時(shí),不使用片選引腳,并且必須將該引腳連接到電源或接地。當(dāng)配置用于SPI模式時(shí),按照常規(guī)會(huì)使用片選引腳。
安全EEPROM的AES數(shù)字加密
通過將AES-CCM與128位密鑰一起使用,可在ATAES132A上實(shí)現(xiàn)加密。簡(jiǎn)而言之,針對(duì)將要加密的數(shù)據(jù)引入一系列復(fù)雜的數(shù)學(xué)函數(shù)處理,使得這些數(shù)據(jù)與固件開發(fā)人員所設(shè)定的128位數(shù)字進(jìn)行組合。AES加解密操作過程中執(zhí)行的復(fù)雜數(shù)學(xué)運(yùn)算均由ATAES132A完成,而且除了設(shè)置一些變量和選擇128位密鑰外,此過程對(duì)固件開發(fā)人員而言是透明的,從而大大簡(jiǎn)化了產(chǎn)品開發(fā)。
詳解ATAES132A存儲(chǔ)器映射
該器件可以簡(jiǎn)單地用作標(biāo)準(zhǔn)非加密串行EEPROM。但如果開發(fā)人員使用高級(jí)安全功能,則器件的結(jié)構(gòu)和使用方式會(huì)有很大差別。要了解ATAES132A,最快捷的方法是檢查存儲(chǔ)器映射,如表1所示,該映射比標(biāo)準(zhǔn)EEPROM的映射更加深入。
表1:ATAES132A存儲(chǔ)器映射比標(biāo)準(zhǔn)串行EEPROM映射更深入。(數(shù)據(jù)來源:Microchip Technology)
此存儲(chǔ)器映射中的大多數(shù)位置都是使用標(biāo)準(zhǔn)I2C或SPI命令讀取或?qū)懭氲摹?/p>
EEPROM和存儲(chǔ)區(qū)安全配置寄存器
這款32KB數(shù)據(jù)EEPROM存儲(chǔ)器被分為16個(gè)2KB存儲(chǔ)區(qū)。每個(gè)存儲(chǔ)區(qū)都可以單獨(dú)配置安全性(或不配置安全性)。16個(gè)存儲(chǔ)區(qū)分別在存儲(chǔ)區(qū)安全配置寄存器區(qū)域設(shè)置安全性設(shè)置。以下是可以為16個(gè)2KB存儲(chǔ)區(qū)分別單獨(dú)設(shè)置的基本安全性設(shè)置:
? 啟用/禁用加密以讀取數(shù)據(jù)
? 啟用/禁用加密以寫入數(shù)據(jù)
? 啟用/禁用身份驗(yàn)證以讀取數(shù)據(jù)
? 啟用/禁用身份驗(yàn)證以寫入數(shù)據(jù)
? 將存儲(chǔ)區(qū)永久設(shè)置為只讀
在設(shè)置應(yīng)用的安全性時(shí),這些設(shè)置項(xiàng)能夠提供極大的靈活性。一個(gè)存儲(chǔ)區(qū)可以設(shè)置為不使用加密、不對(duì)讀/寫訪問進(jìn)行身份驗(yàn)證,從而允許像任何標(biāo)準(zhǔn)EEPROM一樣進(jìn)行讀寫。另一個(gè)存儲(chǔ)區(qū)則可能要求進(jìn)行完全加密和身份驗(yàn)證,從而為敏感數(shù)據(jù)提供高安全性。
器件配置寄存器
器件的一般特性可在器件配置寄存器區(qū)域設(shè)置。此區(qū)域還包含關(guān)于器件的一些只讀信息,包括用于標(biāo)識(shí)器件的唯一32位器件序列號(hào)。其他寄存器允許將存儲(chǔ)區(qū)或其他寄存器設(shè)為只讀,也稱為鎖定存儲(chǔ)器。一旦鎖定某個(gè)寄存器或存儲(chǔ)區(qū),將是永久性鎖定,永遠(yuǎn)無法解鎖。
此區(qū)域還有I2CAddr寄存器,用于配置器件是在I2C模式還是SPI模式下使用。器件上電時(shí)會(huì)寫入1個(gè)字節(jié)的I2CAddr寄存器。I2CAddr的0位決定串行接口模式。如果固件寫入0,則將器件配置為SPI模式。如果寫入1,則選擇了I2C模式。如果選擇了I2C模式,7位器件地址為50h。
命令和響應(yīng)存儲(chǔ)緩沖區(qū)
雖然可以使用標(biāo)準(zhǔn)SPI或I2C尋址來訪問器件中的存儲(chǔ)器位置,但器件也接受類似于微控制器的命令。命令及其操作數(shù)(稱為“命令塊”)可能是一個(gè)或多個(gè)字節(jié),并且始終直接寫入到位于地址FE00h的命令和響應(yīng)存儲(chǔ)緩沖區(qū)。命令塊由一個(gè)單字節(jié)指令、一個(gè)或多個(gè)字節(jié)的操作數(shù)和一個(gè)2字節(jié)校驗(yàn)和組成。
可用命令包括數(shù)據(jù)驗(yàn)證、來自EEPROM存儲(chǔ)區(qū)的塊讀取、遞增計(jì)數(shù)器,以及直接讀取任何需要驗(yàn)證的受保護(hù)存儲(chǔ)器或寄存器。命令響應(yīng)可從同一位置FE00h讀回。FE00h的所有寫入均是發(fā)送到命令存儲(chǔ)緩沖區(qū)的命令,來自FE00h的所有讀取均來自響應(yīng)存儲(chǔ)緩沖區(qū)。
位于FFE0h的I/O地址復(fù)位寄存器是一個(gè)只寫寄存器,用于復(fù)位命令和響應(yīng)存儲(chǔ)緩沖區(qū)。向FFE0h寫入任何值都需要執(zhí)行兩項(xiàng)操作:將命令存儲(chǔ)緩沖區(qū)清除,以便可以接受新的命令塊;將響應(yīng)存儲(chǔ)緩沖區(qū)復(fù)位至零,以便可以從頭開始讀取內(nèi)容。
復(fù)位響應(yīng)存儲(chǔ)緩沖區(qū)可允許固件重新讀取整個(gè)響應(yīng)。這在以下代碼中可能非常有用:代碼中發(fā)生中斷時(shí)主機(jī)微控制器正在讀取響應(yīng)存儲(chǔ)緩沖區(qū),而且在從中斷恢復(fù)時(shí)需要從頭開始重新讀取數(shù)據(jù)。
此外,還有一些命令可針對(duì)EEPROM的讀寫操作執(zhí)行AES加密和解密。這些計(jì)算極其復(fù)雜,本文將不予討論。不過,Microchip提供的微控制器驅(qū)動(dòng)程序和固件可以輕松執(zhí)行所有這些功能,因此程序員只需了解很少的AES加密知識(shí)即可。
存儲(chǔ)區(qū)計(jì)數(shù)寄存器
該寄存器區(qū)域包含16個(gè)與各存儲(chǔ)區(qū)關(guān)聯(lián)的只讀計(jì)數(shù)器。各存儲(chǔ)區(qū)均使用其128位存儲(chǔ)區(qū)密鑰完成加密或解密。每次使用存儲(chǔ)區(qū)密鑰時(shí),關(guān)聯(lián)的32位存儲(chǔ)區(qū)計(jì)數(shù)器可能遞增也可能不會(huì)遞增,具體取決于關(guān)聯(lián)的存儲(chǔ)區(qū)計(jì)數(shù)器配置寄存器中的設(shè)置。出于安全目的,計(jì)數(shù)器永遠(yuǎn)不會(huì)遞減或復(fù)位。
固件可以直接寫入存儲(chǔ)區(qū)計(jì)數(shù)器,以將其遞增到初始值,但絕不可遞增到低于現(xiàn)有計(jì)數(shù)器內(nèi)容的值。制造期間可以寫入并鎖定存儲(chǔ)區(qū)計(jì)數(shù)器,以限制計(jì)數(shù)數(shù)量。當(dāng)計(jì)數(shù)器達(dá)到最大值2,097,151時(shí),可以永久禁用關(guān)聯(lián)的密鑰,以防止使用該密鑰執(zhí)行進(jìn)一步的加密或解密操作。這對(duì)于有限使用密鑰可能非常有用,例如,允許重新閃存微控制器固件有限的次數(shù)。
為實(shí)現(xiàn)額外的安全性,每個(gè)32位存儲(chǔ)區(qū)計(jì)數(shù)器都是重復(fù)的,這樣做是為了在存儲(chǔ)區(qū)計(jì)數(shù)器遞增期間發(fā)生電源故障的情況下,可以檢測(cè)存儲(chǔ)區(qū)計(jì)數(shù)器是否損壞。應(yīng)用上電時(shí),固件應(yīng)讀取所有存儲(chǔ)區(qū)計(jì)數(shù)器的兩個(gè)計(jì)數(shù)器值。如果在某個(gè)耐用型應(yīng)用中這兩個(gè)值不同,則證明存在未經(jīng)授權(quán)的掉電事件,而這可能表明有人在未經(jīng)授權(quán)的情況下試圖在應(yīng)用運(yùn)行時(shí)禁用其安全功能。
狀態(tài)寄存器
ATAES132A狀態(tài)寄存器為只讀寄存器,用于指示包括錯(cuò)誤的校驗(yàn)和命令錯(cuò)誤在內(nèi)的錯(cuò)誤代碼,還可以指示ATAES132A是處于I2C模式還是SPI模式,以及命令的進(jìn)度和響應(yīng)的有效性。該寄存器應(yīng)在所有讀取、寫入、命令和響應(yīng)前后進(jìn)行讀取。錯(cuò)誤可能指示干擾主機(jī)微控制器和ATAES132A之間的I2C或SPI連接的外部企圖。出現(xiàn)錯(cuò)誤時(shí),采取哪種通知方式取決于主機(jī)固件,例如提示操作員或發(fā)出警報(bào)。
在制造過程中設(shè)置ATAES132A
為幫助開發(fā),Microchip提供了DM320109 Xplained-Pro CryptoAuthentication入門套件(圖2)。ATAES132A可以連接到Microchip ATSAMD21J18A Arm Cortex-M0+ 微控制器。
圖2:Microchip的DM320109 Xplained CryptoAuthentication入門及開發(fā)套件提供了一種簡(jiǎn)單的方式來評(píng)估和開發(fā)ATAES132A代碼。該套件配有大量代碼示例,可以與大多數(shù)支持Windows、Linux或MacOS的PC連接。(圖片來源:MicrochipTechnology)
Microchip的ATSAMD21J18A微控制器配有USB接口,可與PC開發(fā)環(huán)境連接。該控制器既支持I2C接口,也支持SPI接口,兩種接口均可用于連接ATAES132A。使用隨附的USB電纜連接到目標(biāo)PC后,可使用該套件來配置和監(jiān)控ATAES132A的所有功能。
提供的第二根USB電纜可用于監(jiān)控并記錄ATAES132A和ATSAMD21J18A之間的數(shù)據(jù)包。此電纜一端連接Xplained電路板,另一端連接PC上的可用USB端口。然后,開發(fā)人員可以監(jiān)控微控制器和EEPROM之間的信號(hào),觀察兩個(gè)器件之間移動(dòng)的加密數(shù)據(jù)。
Xplained套件附帶了ATAES132A的所有固件庫(kù)和示例代碼。在充分了解本文描述的ATAES132A存儲(chǔ)器映射和寄存器之后,開發(fā)人員即便對(duì)器件加密知之甚少,也能輕松地自定義示例代碼,以符合其目標(biāo)應(yīng)用。
AES 128位加密是一個(gè)復(fù)雜的主題。盡管如此,開發(fā)人員仍可以在專為此目的而設(shè)計(jì)的EEPROM中保護(hù)敏感數(shù)據(jù)。而這有賴于機(jī)械保護(hù)、強(qiáng)加密、特殊分區(qū)和存儲(chǔ)器映射,以及只有公司和/或最終用戶知道的自定義或機(jī)密功能。
-
微控制器
+關(guān)注
關(guān)注
48文章
7553瀏覽量
151426 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19126瀏覽量
305255 -
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120379
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論