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

存儲器IC的應(yīng)用技巧 【日 桑野雅彥】
存儲器IC的應(yīng)用技巧 [日 桑野雅彥]
快速了解電源模塊的使用方法
便攜式光合作用測定儀使用方法
示波器高壓探頭使用方法
探針頭型使用方法有哪些
西門子中繼器使用方法及作用
光纖收發(fā)器的使用方法和注意事項
MSP430 FRAM技術(shù)–使用方法和最佳實踐

圖片動畫控件和Video image控件的使用方法

評論