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

什么是機(jī)械安全系統(tǒng)?機(jī)械安全系統(tǒng)需要什么?
Lifi安全系統(tǒng)開源設(shè)計(jì)

基于遠(yuǎn)程家庭安全系統(tǒng)的設(shè)計(jì)

評論