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