STMCU小助手
发布时间:2022-8-10 09:19
|
方案概览5 ]! h8 u" p8 G; M • STM32L0和STM32L4系列的硬件除了通常的RDP、WRP,还带有Firewall和PCROP硬件安全特性 • 使用STM32的security硬件模块(Firewall和PCROP)实现对关键数据(密钥)的保护:应用代码可以使用加解密功能,但是无法拿到密钥0 Q1 H' Y' H8 F • 本方案提供了在STM32L073上的参考实现,以及相应测试代码, u4 B% X4 A( f9 Y • STM32L073-Nucleo9 c! r* \( |+ X8 f • 方案包的内容 • 三个IDE下的示例工程:IAR,MDK,STM32CubeIDE • 方案介绍文档* c( \( L7 \' U; t3 r8 O$ a • 脚本工具(生成秘钥相关文件); y" |2 P6 T0 z3 U) e4 C T PCROP 2• 防什么?:来自CPU、DMA以及通过调试端口的数据访问 5 o! |; J1 o7 J6 Y7 h3 C$ G" y |, g • 保护什么? • 用户片上Flash的一段区域(由选项字节设置区域范围,保护上电即生效)8 l) ]( Q5 j$ }' U8 l% ~. U5 B+ p • 保护机制 • PCROP区域仅能被指令访问,不允许数据访问(包括DMA 、调试访问) # S+ Y, E" Z1 r9 M3 q • 用途 • 常用于保护关键代码,只可被执行,不能被读出(dump) • 防止内部攻击:注入恶意程序读取关键代码 • 防止外部攻击:来自调试端口的读取 • 也可用于保护“代码化的” 关键常数数据$ P4 c3 ~9 m9 d3 ?+ S! e9 I. D0 X • 需要先将关键常数转换成代码5 m; W' @$ r0 J; q( W' V! h; ?- G • CPU执行这段代码,会把关键数据恢复到SRAM或者寄存器中,这段SRAM再 使用STM32的其他存储和执行保护模块,比如Firewall保护,防止恢复出来的: @$ U' @; E( C 关键数据被用户代码直接读取;或者寄存器本身是WO属性
Firewall,防火墙 •防什么?:CPU、DMA) i; A. u( d2 J2 { • 保护什么? • 用户片上Flash、片上EEPROM 和 片上SRAM上的指定区域(防火墙里的区域) • 保护机制; h0 X% {7 h9 A+ ]! \# t • 防火墙里的代码、数据不能被墙外的代码直接访问 • 必须走固定入口(Call Gate)进入墙里再访问/ `" P- e( n! w! c8 h6 Y# a • 出去(跳转到防火墙以外的代码)之前必须置位寄存器 • 否则产生系统复位 • 由寄存器设置范围并使能,即上电缺省没有保护 • 一旦防火墙使能,保护生效直到下一次系统复位 a, {/ N! l% z( h) f 完整版请查看:附件# |) K8 F* |9 V' d * N/ V! Z* V/ T5 M w3 c6 @1 `# Y& S F0 P |
关键数据和代码在L0上的保护基于防火墙和PCROP.pdf
下载918.66 KB, 下载次数: 1
微信公众号
手机版