電堂科技c.51diantang.com
STM32安全特性概覽
出廠前由STM32燒寫在晶片的系統Flash部分,提供STM32晶片的唯一标志号
- Wafer位置,X坐标值BCD編碼@2位元組
- Wafer位置,Y坐标值BCD編碼@2位元組
- Lot編号低位址,ASCII編碼 @2位元組
- Wafer編号 @1位元組
- Lot編号高位址,ASCII編碼 @4位元組
- 通過某種算法生成該晶片所在産品的序列号
- 密鑰派生
- 保護片上Flash指定區域的内容不被意外地修改,也不能被擦除
- 常見用途:WRP+RDP2,鎖定一段片上Flash區域成為ROM
- 通過選項位元組使能保護和撤除保護
保護片上Flash指定區域不能被資料總線通路,隻能執行
- 不能被讀、修改、擦除
- 調試接口也無法讀出區域裡的内容
- 這段代碼可以被調試:觀察寄存器、堆棧等上下文
常見用途:聯合開發時,對IP代碼進行保護,不被終端使用者讀出或修改
通過選項位元組使能保護
- L4、H7、G0、G4、WB:設定起始page和末尾page,連續位址
- 其他系列:每個page/sector可獨立設定
通過選項位元組撤除保護:RDP降級+同時取消保護區域的範圍設定
- PCROP_RDP=1,RDP降級:片上Flash所有内容被擦除,包括PCROP保護的區域
- PCROP_RDP=0,RDP降級:隻擦除PCROP區域以外
使用技巧1,關于敏感代碼涉及的常數
- 在IDE中設定特别的編譯選項
- 代碼用到的常量放在保護區域之外
使用技巧2,存儲敏感資料
- 也要結合其他保護機制,把敏感資料恢複到安全的寄存器/SRAM
使用技巧3,可以增大PCROP保護區域
從産品系列來看PCROP在不同保護級别下,可以實作對誰的,什麼保護(什麼條件下的什麼行為)
能做什麼:
- 從使用者Flash啟動,對所有保護對象的操作不受任何限制(除非媒體本身的屬性限制)
- 允許調試器連接配接,讀、修改選項位元組
- 被調試器連接配接,但是核心複位
- 被調試器hotplug連接配接,讀取SRAM1和外設寄存器目前值
不能做什麼:
- 被調試器連接配接/從SRAM啟動/從系統Flash啟動,看不到使用者Flash、備份域、受保護SRAM的内容
- 從SRAM啟動的代碼不能通過DMA讀出使用者Flash的内容
選項位元組被鎖死,任何代碼都無法再修改它
- 選項位元組的配置永久生效:讀保護、啟動位址、PCROP……
- 寫保護+RDP2
調試接口再也無法連接配接
- 失效分析受影響
隻能從使用者Flash啟動,仍可做使用者Flash的固件更新
從産品系列來看RDPSTM32安全使用者存儲區/G0,G4
安全使用者閃存,用于配合UBE,做安全啟動。
- 用于隔離使用者代碼和敏感代碼:secure開關打開後,這段區域不可見,直到下次複位
- (secure開關打開之前)執行敏感代碼時,可關閉調試通路
安全使用者閃存是使用者Flash的一部分。
- 起始位址固定在0x0800 0000
- 大小可配置,[email protected]_SECR(和UBE的使能控制在同一寄存器)。大小為0時,表示沒有安全使用者閃存;隻能在RDP0時修改該位域;大小粒度,和Flash page相同:2KB/4KB。
secure開關,使用者軟體置位後,隻能由系統複位清零。
MPU常見用法:
- OS或者敏感代碼設定成特權級别的代碼才能通路,防止不可靠的非特權級别使用者代碼因為軟體漏洞,而污染了敏感代碼
- 把DMA控制寄存器所在區域設定成隻能特權級别代碼通路,防止非特權級别的使用者代碼操作DMA來避開MPU的限制
- 把RAM區域設定成XN,以免緩沖區溢出造成的攻擊
- 任務切換之前,把其他任務的資料區設定成不能通路,以免造成互相污染
相關設計:
- AN4838 STM32上的MPU
- PM0056,PM0223,PM0214,PM0253 Cortex-M3/M0+/M4/M7 核心程式設計手冊
防火牆注意事項:
- 進入防火牆執行前,最好關閉中斷(如果ISR在牆外),否則中斷發送時會立刻産生複位,或者在ISR執行完傳回時複位,取決于FPA
- 通過寄存器操作激活防火牆功能,知道下一次系統複位,防火牆狀态才能再次回到IDLE
- PC從固定的入口進入,才能open防火牆;此狀态下是可以調試的
相關設計資源
- AN4730使用L0和L4的防火牆來安全通路敏感代碼和資料
- STM32CubeL4 Nucleo-L496/L476 example/FIREWALL
TrustZone,從ARM Cortex-M33核心,擴充到STM32L5整個系統
- 新的系統架構,啟動模式
- 新的程式設計模型
- 新的安全規劃思路
- 新的生态系統
OTFDEC
- 對存儲在外部OSPI Flash的資料和指令,取指和取資料,與實時解密同時進行
- 該功能僅在TZ使能時可用
http://weixin.qq.com/r/ey4gONXE7IiTrZFb93tp (二維碼自動識别)