特別是在醫療和軍事應用中,數據安全性和設備的持續安全運行至關重要。 MCU制造商具有內置的眾多功能,如果使用得當,通常可以檢測并響應設備故障,以及存在未經授權的代碼。本文將研究領先的半導體供應商使用的一些硬件安全功能及其檢測和響應異常的策略。
什么是安全性?
安全系統基本上是一個無法被未授權方復制,損壞或接管的系統。雖然這通常被認為是防火墻或軟件問題,但MCU制造商正在越來越多的內置硬件安全措施,可以幫助您防止,檢測或最壞的情況從嵌入式系統的攻擊中恢復。在嵌入式設計中需要考慮安全性的三個方面:
機密性適用于您無法承受的密碼或加密密鑰等信息。硬件加密模塊可以極大地提高數據機密性。
完整性對于正在處理的數據以及MCU的不同組件,特別是閃存以及根表和結構至關重要。 MCU具有各種啟動例程,旨在檢查片上存儲器和外設的完整性。
真實性。如果你不能確定數據的完整性,至少要確保它是真實的,也就是說,攻擊者沒有改變它。
安全啟動
幾乎所有的MCU都至少檢查過首次初始化或從低壓狀態恢復時的操作完整性。這些檢查在上電復位(POR)或掉電復位(BOR)期間發生,但在正常操作期間也可能由于訪問沖突而觸發復位。某些MCU在啟動時可能會進行進一步的系統檢查。
德州儀器(TI)的MSP430 MCU是首批采用超低功率外殼的產品之一。 MSP430G2230IDR不是專為大量網絡應用而設計的,它包含專用的安全功能。 MSP430的閃存控制器報告訪問沖突,以響應任何錯誤的寫入閃存的嘗試。此外,任何對高字節中除0A5h以外的任何值的FCTLx寄存器的寫操作都會被報告為安全密鑰違規。看門狗定時器也是如此。當MSP430首次上電或VCC在掉電事件后重新上電時,會產生上電復位(POR)信號,從而產生上電清零(PUC)信號。如果PUC來自POR,則芯片開始正常初始化,激活CPU和外設。但是,如果看門狗定時器或閃存控制器生成PUC信號,報告安全密鑰違規(圖1),則設備將保持在復位狀態,直到問題得到解決。
圖1:MSP430中斷優先級(由德州儀器公司提供)。
內存保護
檢測篡改看門狗定時器或閃存內容的企圖是防止嵌入式系統接管或至少防止數據損壞的關鍵。但是,也可以簡單地防止攻擊者首先訪問您的啟動代碼。 MSP430包含一個安全保險絲,可保護編程到閃存中的代碼。
如果第三方無法讀取或寫入MCU上的嵌入式閃存,則可以有效防止它們篡改設備。瑞薩RX631提供多種保護設置,以防止第三方訪問片上閃存(圖2)。它們提供三種類型的保護:
ID代碼保護 - 在啟動模式下啟動MCU并與PC等主機設備建立串行通信接口(SCI)連接后,執行身份驗證阻止第三方連接和編程,讀取或擦除片上閃存。
片上調試器ID代碼保護 - 在單片機模式或用戶啟動模式下啟動MCU后并且與片上調試器建立連接,執行ID認證以防止第三方連接和編程,讀取或擦除片上閃存。
ROM代碼保護 - 當使用PROM編寫器,第三方無法編程,讀取或擦除片上閃存。
通過分配控制代碼,ID代碼或ROM來啟用各種保護功能碼。控制代碼和ID代碼分配給0xFFFFFFA0,ROM代碼分配給0xFFFFFF9C。嘗試連接時執行身份驗證;如果驗證失敗,則不允許連接,從而阻止讀取,編程或擦除片上閃存。
圖2:RX631保護設置選擇表(由Renesas提供)。
嵌入式開發人員需要開發一種策略來檢測嘗試寫入未分配內存部分的代碼。一種方法涉及用未定義的指令填充空白存儲器。當非法代碼嘗試訪問此內存時,它將生成未定義的指令中斷,提醒CPU采取糾正措施。
Microchip的PIC24H MCU為程序閃存提供引導和程序安全性(CodeGuard)。 PIC24H MCU支持數據RAM保護功能,可在與引導和安全代碼段安全性結合使用時保護RAM段。與軟件加密庫配合使用時,CodeGuard Security使多方能夠在單個芯片上安全地共享資源(內存,中斷和外設)。
啟用后,BSRAM(引導段的安全RAM)只能從引導段閃存代碼訪問,而SSRAM(RAM的安全RAM段)只能從安全段閃存代碼訪問。任何嘗試更改受保護段中受限制的位置都會導致安全性重置。
Well ARMed
大部分MCU基于ARM內核,提供各種硬件安全功能,芯片供應商可以構建這些功能。
較大的MCU可能使用ARM?Cortex?-A系列處理器,其中包括TrustZone安全擴展。 TrustZone硬件架構(圖3)對硬件和軟件資源進行分區,使它們存在于兩個域中:所謂的敏感資源安全世界和所有其他領域的普通世界。這兩個世界通過支持TrustZone的AMBA3-AXI總線結構進行通信,該結構在兩個域之間創建了一個強大的邊界邊界,確保Normal World組件無法訪問Secure World資源。
圖3:ARM TrustZone硬件架構(由ARM提供)。
TrustZone架構允許單個核心通過稱為監控模式的上下文切換運行兩個虛擬處理器(每個域一個),嚴格控制對其的訪問以確保兩個域的安全性。您可以在Secure World中運行單獨的安全操作系統,也可以在其中放置同步代碼庫。還可以實現一個安全的內核,該內核可以運行多個同步的Secure World應用程序,與普通世界中發生的情況無關。
536 MHz Atmel SAMA5D3 MCU基于Cortex-A5,集成了128 KB RAM,128 KB閃存和高數據帶寬架構。憑借其安全啟動機制,用于加密的硬件加速引擎(AES,TDES)和散列函數(SHA),SAMA5D3可確保反克隆,代碼保護和安全的外部數據傳輸。
能夠對兩個操作系統進行分區可以提供出色的安全性,但是這條路線會帶來成本,復雜性和代碼大小等問題。 MCU更常用于Cortex-M系列處理器,這些處理器針對低成本,低功耗,混合信號嵌入式應用進行了優化,如智能計量,汽車和工業控制系統,便攜式消費產品和醫療設備。 Cortex-M4,Cortex-M3和Cortex-M0 + MCU包括一個可選的內存保護單元(MPU),可提供細粒度內存控制,使應用程序能夠實現安全權限級別,并在任務中分離代碼,數據和堆棧 - 任務基礎。 ARM許可證持有者通常會實施其他安全功能
Cortex-M4處理器(圖4)是M系列中最大的處理器。為了安全起見,它們提供可選的8區MPU。如果在沒有所需權限的情況下訪問內存區域,則會引發權限錯誤,觸發不可屏蔽中斷(NMI),啟動RTOS或應用程序代碼的保護操作。 MPU特別適用于必須保護某些關鍵或認證代碼免受其他任務不當行為的應用程序。
圖4:ARM Cortex-M4框圖(由ARM提供)。
除了MPU之外,STMicroelectronics的基于Cortex-M4的STM32F2 MCU還具有CRC計算單元,可驗證數據傳輸或存儲完整性。 CRC計算單元幫助在運行時期間計算軟件簽名,以與在鏈接時生成并存儲在給定存儲器位置的參考簽名進行比較。
Cortex-M3處理器基本上是沒有DSP指令的Cortex-M4和一個(可選)浮點單元。德州儀器(TI)的Stellaris M3系列包括Cortex-M3 MPU以及只能在特權模式下訪問的系統控制模塊(SCB)寄存器。此外,閃存控制器(FMC)允許您以2 KB的塊為基礎應用閃存保護。
Silicon Labs基于Cortex-M3的SiM3C167 Precision32 MCU具有寄存器鎖定和鎖定機制,可防止任何從固件中不期望地訪問外圍設備(圖5)。必須寫入一個密鑰序列,以便KEY寄存器修改PERIPHLOCKx中的任何位。隨后對KEY的任何寫入將禁止PERIPHLOCKx的任何訪問,直到通過KEY再次解鎖為止。如果外設寄存器被鎖定,則所有寫操作都將被忽略。無論外設的鎖定狀態如何,都可以始終讀取寄存器。產品培訓模塊“Precision32 ARM Cortex-M3 MCU簡介”提供了對產品的更多信息。
圖5:Precision32外設鎖定方案(由Silicon Labs提供)。
低功耗Cortex M0 +處理器還包括可選的8區MPU,可用于更大的同類產品。飛思卡爾基于Cortex-M0 +的Kinetis KL02增加了安全電路,以防止未經授權訪問RAM和Flash內容。當Flash安全性處于活動狀態時,SWD端口無法訪問MCU的內存資源。
恩智浦LPC4350在單芯片上集成了Cortex-M4處理器和Cortex-M0協處理器。雖然微小的Cortex-M0缺乏安全功能,但較大的內核占用了空間。除了MPU之外,LPC4350還提供硬件來保護存儲的數據內容,并加速數據解密,數據完整性和原始證據的處理。其AES引擎支持128位ECB/CBC解碼和CMAC哈希計算。
-
處理器
+關注
關注
68文章
19890瀏覽量
235128 -
mcu
+關注
關注
146文章
17978瀏覽量
366698 -
寄存器
+關注
關注
31文章
5434瀏覽量
124443
發布評論請先 登錄
評論