1.1 课程架构介绍:STM32H5信息安全特性概览
1. 概述
开发者在打造嵌入式系统时,安全和性能是产品开发设计的考量重点。为实现这一目标,ST推出了STM32H5系列,该系列作为微控制器新标杆面向工业应用市场,将为用户带来更强劲性能和安全性,提供更多设计自由,加快产品上市。
STM32H5系列可提供从安全硬件到完整解决方案的丰富资源,用户可根据需要选择。
STM32H5带来更加出色的安全机制,例如配备永久信任根(iRoT )和可更新可信根(uRoT)的双级可信根。
STM32H5还加入了生命周期管理,基于认证的调试等新功能,这些新功能可帮助开发人员更好地在现场管理调试设备。使用STM32H5系列,工程师可以在不影响安全性的情况下,重新打开调试功能,从而为其他现场工作提供便利。有了全新STM32H5系列的硬件和软件功能,安全性将更加实用。
由ST开发和维护的全新的可信执行环境解决方案——安全管理器,可简化开发人员的工作流程,且不受开发人员专业能力的限制,极大地降低了信息安全功能的开发门槛。
STM32推出《STM32H5信息安全培训课程》:https://c.51diantang.com/columndetail?id=154aaa87d2634480ad9ad5aff3ead364,下面是我自己在学习过程中总结的笔记,也算留下点记忆,给平淡的生活留下点痕迹
2. 嵌入式设备信息安全
嵌入式设别信息安全的典型需求:
- 调试访问控制与设备生命周期管理:保护调试端口,管理各阶段设备资源的访问;
- 安全启动与安全升级:保证应用固件完整可信,来源可靠;
- 软件IP与存储器保护:保护代码与数据的机密性,防止未经授权的访问;
- 加解密引擎与随机数发生器:用于身份认证,数据加密,安全通信等;
- 安全存储:实现敏感数据和密钥的安全存储和使用;
- 关键代码隔离与可信执行环境:保护复杂系统敏感代码和冠军外设相关操作。
3. STM32 H5 安全特性总览
-
存储保护(防止未授权保护):OTP,HDP(隐藏保护),WRP(写保护),MPU,OTFDec(外部Flash实时解密),Product State(调试端口保护),Active Tamper(动态放拆机保护)。
-
加解密(带硬件安全防护):带侧信通道攻击防御的SAES,PKA,AES,SHA,TRNG,OTFDec,HUK硬件唯一密钥,NIST-CAVP认证的Cryptolib。
-
安全启动与系统验证(产品生命周期管理):多级Flash启动保护,ST-iROT / OEM-iROT安全启动方案,带认证的调试Debug Authentication。
-
代码隔离与安全存储(存储与动态执行保护):7个隔离保护区,Arm TrustZone 系统级隔离技术,专用的安全存储区,HUK硬件唯一密钥。
-
交钥匙安全服务解决方案:STM32 Trust TEE Secure Manager安全管理器,Easy registration to clouds & servers,多方软件IP保护,预集成第三方PKI生命周期管理,永久信任根。
通过上述的介绍,客户可以根据自己不同的使用场景,来匹配不同的方案,如果在信息安全方面没有经验,可以直接使用ST的交钥匙的安全服务解决方案。
目前主导的两种的信息安全认证:一个是ARM的PSA的level3,Global platform的认证,同样也是Level3.
4. STM32H5 安全特性 vs. 使用场景
软件IP保护:
- Product State:管理芯片访问权限
- Debug Authentication:安全调试
- HDP,WRP:保护Flash上的代码和数据
- OTFDEC:保护外部Flash
安全启动/升级:
- ST-iROT:安全启动的BootROM,不需要开发,硬件出厂自带安全启动的方案;
- OEM-iROT:源代码方式,可以交由OEM任意修改的安全启动方案。
实现安全通信:
- 硬件加解密单元
- X-Cube-Cryptolib:如果不带硬件加密单元,可以使用软件加密的算法库X-Cube-Cryptolib。
存储机密数据:
- SAES+HUK:存储私钥,和云端交互的密钥,用SAES+HUK实现存储秘密数据的时候一机一密,
- OBK安全存储区:Flash和Ram数据的隔离
- TrustZone:Flash和Ram数据的隔离
可信执行环境与安全服务:
- TrustZone:
- TF-M:开源的软件方案
- Secure Manager: ST提供的安全方案
5. 如何选择使用STM32H5的安全特性和解决方案
使用场景:
场景1:
保护自己产品的软件IP,不希望被抄袭,使用Product State功能,Lock住,保护固件的时候还希望保留调试功能,可以使用Debug Authentication安全调试的功能,通过调试的时候安全认证后,开启调试功能,内部FLash不够用,还希望外挂Flash上,并且不想在和外置Flash通信的数据明文发送,可以使用OTFDEC的功能。
场景2:
安全启动,安全升级等需求,希望能够使用芯片上固化的BootRom,不希望自己开发代码,可以选择STM32H57x系列芯片的ST-iROT的安全启动方案。如果发现ST提供的ST-iROT不能满足自己的安全启动方案,可以使用OEM-iROT方案,可以使用官方提供的源代码,实现定制化的设计安全启动和安全升级。有自己的BootLoader,希望在这个基础上开发信任根的功能,可以利用安全相关的硬件Boot_LOCK,HDP/HDPL,WRP,OBK等来实现安全启动等技术要求。
场景3:
实现安全通信,如果使用的是不带硬件Crypto型号,可以使用X-Cube-Cryptolib,mbedtls。如果需要同时实现通信安全和硬件加速或硬件安全防护,可以使用带Crypto型号,用SAES,PKA,AES,HASH,RNG等硬件加密模块。如果需要安全存储设备密钥等机密数据,联云等,可以用OBK的专用存储区,SAES+HUB这种一机一密来存储机密数据,可以用到TrustZone的隔离保护,对于关键数据只允许关键的代码操作。
场景4:
- 需要保护关键代码和外设控制:本身自己精通TrustZone技术->直接自己开发TrustZone应用;
- 希望有TEE架构和内建的安全服务:有开发能力,有定制化修改的需求-> TF-M;
- 希望有无需开发的安全启动+TEE+安全服务:可以使用ST官方生成的二进制文件,应用于STM32H57x系列芯片-> Secure Manager。