1、STM32硬件安全特性概覽
STM32 MCU底層硬件具備的安全特性能夠覆蓋存儲訪問保護、代碼/系統隔離、啟動入口限定、防篡改檢測、密碼學算法加速、身份識别等多方面的安全需求,例如:
芯片硬件安全功能結合軟件能夠實現更多應用層次的安全功能,例如安全啟動,安全更新,安全存儲,安全通信,可信執行環境等等。
1.1 身份識别
Unique ID芯片唯一标識:STM32全系列産品都帶有UID,出廠時已經燒寫在STM32芯片的系統Flash區域,UID的長度為96bit,作為芯片的唯一标識号。
UID的常見用途:
OTP的常見用途:
OTP的操作方式請參考芯片的參考手冊 Embedded Flash memory (FLASH)章節的相關描述。
1.2 存儲保護/軟件IP保護
WRP 内部Flash寫保護
WRP能夠保護片内Flash指定區域的内容不被意外地或者惡意地修改或擦除,STM32全系列産品都帶有寫保護功能。
根據産品系列的不同,WRP的配置方式略有不同,L4、G0、G4、WB、L5系列可以設置受保護的起始和末尾Page,其它系列可以獨立設置需要保護的Page/Sector。
WRP結合RDP2可以使得一段片上Flash成為相當于ROM的區域,該區域代碼或數據将具有不可改變特性。
RDP讀保護
RDP讀保護所保護的對象包括内部Flash,選項字節,内部SRAM(如SRAM2),OTP區域,Backup後備域RAM及寄存器等。除F1外,其他所有STM32系列産品都具有RDP功能。
RDP具有0、1、2三個級别,L5還增加了一個0.5級别,出廠時芯片的RDP級别缺省為0,即完全開放沒有保護;RDP設置為級别1時,調試端口雖然可以連接,但是對于受保護的各個區域(Flash,RAM,Backup RAM/register)等等,已經無法通過調試端口訪問,即使從system bootloader啟動或者從RAM運行的代碼也無法訪問那些區域,RDP1狀态下選項字節仍舊可以修改,因而可以回退到RDP0,但是該操作會觸發全片Flash擦除;RDP2狀态則會完全關閉調試端口,并且無法回退到RDP1或者RDP0。
L5是基于CM33内核帶有TrustZone的産品系列,對應也增加了一個RDP0.5級别,RDP0.5狀态能夠鎖定Secure區域的訪問,但依舊允許Non-Secure區域的存儲訪問以及調試,給TrustZone環境下的開發帶來更多靈活性。
RDP1/2可以提供基本的代碼和IP保護功能,防止設備出廠後被非法從調試端口獲取。
PCROP私有代碼保護
PCROP提供了一個額外層次的代碼保護,PCROP可以設置内部Flash的指定區域成為隻能執行的代碼區域,該區域無法被讀取(作為數據),修改或擦除,也就是說無論是通過調試器還是芯片運行的代碼(包括運行在PCROP區域内部的代碼本身)都無法讀取PCROP保護區域的指令,而且,即使在RDP0的狀态下,PCROP所保護的區域也無法通過調試器進行數據讀取。
PCROP的常見用途是聯合開發,對部分軟件IP進行保護,受保護部分的代碼不能被二次開發用戶讀出或修改,但是其中的函數API可以被調用。PCROP同時也可以成為對數據進行某種程度保護的手段,這時候,需要将被保護的數據轉換成一段指令,隻有執行該段指令之後,數據才會被恢複到寄存器或者RAM當中。
PCROP相關資源:
DB2641:STM32Cube的專有代碼讀保護(PCROP)軟件擴展
AN4701:STM32F4系列微控制器的專有代碼讀取保護
AN4758:STM32L4系列微控制器的專有代碼讀取保護
AN4968:STM32F72xxx和STM32F73xxx微控制器的專有代碼讀出保護(PCROP)
AN4246:STM32L1 微控制器的專有代碼讀取保護
專有代碼保護 (PCROP) STM32Cube軟件擴展包 X-CUBE-PCROP
WRP,RDP,PCROP的操作方式請參考芯片的參考手冊 FLASH memory protection 章節的相關描述。
WRP,RDP,PCROP能夠對代碼、數據等提供基本的保護,如果希望這種保護具有更多的靈活性,包括考慮芯片内運行的軟件本身對敏感數據、代碼的訪問控制等,則可以進一步使用代碼和系統隔離機制,參見代碼/系統隔離部分的介紹
OTFDEC(On-The-Fly Decryption)實時解密
OTFDEC功能是STM32L5具有的新功能,用于保護放置于外部SPI Flash上的代碼和數據,代碼和數據都可以首先經過AES加密後以密文的形式存儲于外部SPI Flash,從而防止由于數據代碼明文存放于外部Flash而帶來的安全風險。系統運行時可以通過OTFDEC模塊對存儲于外部SPI FLASH上的代碼和數據進行實時解密,該解密過程對CPU透明。
詳細的使用方法詳見芯片參考手冊OTFDEC章節的相關描述。
1.3 代碼/系統隔離
MPU存儲器保護單元
MPU是Cortex-M内核具備的功能,可以通過定義不同的Region(區域)設置不同地址範圍的屬性和CPU訪問權限,例如某個地址範圍是否允許執行,是否允許讀或寫,是否允許特權模式訪問以及用戶模式訪問。通過合理配置和使用MPU可以實現對系統資源和代碼的隔離,例如可以将Flash的某個區域的訪問權限設置為隻允許特權模式讀訪問,但不能執行,配合代碼的特權和用戶模式轉換,達到部分代碼能夠訪問該資源,其餘代碼無直接法訪問該資源的目的。
除F0系列外,其它STM32系列都帶有MPU單元。更詳細的内容可以參考 AN4838。
AN4838:STM32 MCU 的存儲器保護單元 (MPU)
Firewall防火牆
使用Firewall防火牆硬件IP,可以在片上Flash和RAM中隔離出一塊隔離區,該隔離區具有唯一的入口,隻有從該入口進入後防火牆隔離區域内的代碼和數據才能夠被執行和訪問,從防火牆保護區域跳轉出去之前也必須進行關閉操作才能夠允許跳轉,也就是說函數隻能從設計允許的出口退出,除此之外的任意的調用、訪問和跳轉都會引發系統複位。通過防火牆提供的隔離功能,部分關鍵的軟件功能和數據可以放置于防火牆隔離區内,防火牆外的應用程序隻能夠通過防火牆提供的唯一入口函數調用防火牆内部的功能,而無法直接看到其中的代碼或者數據,起到将關鍵操作與系統其它部分的軟件隔離開的作用。
防火牆的功能是系統運行後動态開啟的,而不是來自OptionByte的靜态設置,但是防火牆一旦使能,則在當前的Power Cycle始終有效,且不能被禁止,直到下一次複位。
具有防火牆功能的STM32系列包括STM32L0和STM32L4。
TrustZone
STM32L5是第一個基于CM33内核帶有TrustZone的STM32MCU産品系列,V8-M TrustZone及其在STM32L5上的系統級的實現提供了更加完整和靈活隔離功能。CPU的運行區分安全和非安全狀态,存放在Flash, RAM上的代碼和數據被分配到安全和非安全區,允許CPU安全或者非安全狀态下的訪問,除此之外,系統的各個外設以及CPU之外的Bus Master也都能夠被分配到安全和非安全區,這樣就意味着安全區所管理的不僅僅隻有代碼和數據,還可以包含關鍵外設及其對應的中斷等等。基于TrustZone提供的隔離功能,可以在MCU上實現可信執行環境,關鍵代碼與操作置于可信執行環境内,避免系統的關鍵資源因為應用軟件可能帶有的脆弱性而受到攻擊。
關于V8M-TZ的具體細節,可以參考ARM相關的文檔;STM32L5的TZ系統架構等可以參考STM32L5的參考手冊,以及相關應用筆記。
AN5421:STM32L5系列微控制器和TrustZone®開發入門
AN5347:STM32L5 系列 TrustZone® 功能
Secure User Memory安全用戶存儲區
安全用戶存儲區是STM32 MCU内部Flash上的一塊特殊存儲區域,該區域在上電複位後可以訪問,軟件可以通設置寄存器打開對該區域的保護功能,一旦保護打開,該區域則變得完全不可訪問,這種保護在整個Power Cycle都有效,直到下一次複位。受保護的安全存儲區的大小位置可以通過芯片的Option Byte進行設置,屬于靜态設置,上電自動生效,不需要軟件進行配置;保護的打開可以通過軟件動态使能。安全存儲區域的一個典型用法是将每次上電隻運行一次的代碼和數據放在該區域,例如安全啟動的代碼,一但跳轉到應用程序區域,則安全啟動代碼以及該階段使用的Flash上的數據(例如密鑰)變得完全不可見,可以使得啟動代碼與應用程序完全隔離開,避免應用程序訪問任何啟動階段使用的敏感代碼與數據。這個功能可以用于實現DICE機制。
目前支持安全存儲區功能的STM32産品系列包括G0,G4,H7,L5。
安全用戶存儲區的使用請參考芯片參考手冊相關章節的描述
1.4 啟動入口限定
關于STM32的各個系列的啟動模式,詳見芯片參考手冊相關章節的描述。
1.5 Anti-Tamper防篡改檢測
Anti-Tamper的目的是檢測電路闆級别的物理攻擊,并且在檢測到入侵事件時自動清除敏感數據。Anti-Tamper包括靜态檢測和動态檢測(STM32L5支持動态檢測),配合電路闆上的布線和開關一起使用,用于檢查是否出現非法打開設備外殼的情況。靜态檢測針對防篡改引腳的電平或邊沿變化,動态檢測則使用成對的檢測管腳,輸出管腳會持續輸出随機序列,輸入管腳将檢查收到的序列與輸出的序列是否匹配,相比靜态檢測更難被繞過。除了防篡改引腳,異常檢測的範圍還包括對時鐘頻率,溫度以及電壓的監測,任何的異常都将自動引發(存儲于後備域寄存器或RAM的)敏感數據的擦除,并觸發相應的中斷,由應用程序作進一步處理,例如保存異常檢測事件,用作後續的審計等。
1.6 Crypto密碼學單元
密碼學相關的功能單元包括TRNG真随機數發生器,AES、CRYP加解密引擎,HASH加速器,PKA公鑰算法加速器。
密碼學單元的具體使用方法,請參考芯片參考手冊AES,CRYP,HASH,TRNG,PKA相關章節的描述。
2、STM32信息安全相關培訓資源
線上課程培訓
STM32信息安全
從智能鎖談STM32安全技術
線下技術培訓資料
STM32軟硬件安全技術培訓
STM32加解密技術
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!