我们启动STM32H7的安全软件安装 (SFI) 功能,并在 STM32 微控制器上启动安全模块安装 (SMI)。当时,利用这些新的硬件安全功能所必需的一些软件解决方案需要更加完善。既然它们已准备好迎接黄金时段,我们决定看看 SMI,看看是什么让 SFI 在 STM32H7 上独一无二,因为新型号代表了我们最新的旗舰安全 MCU。此外,我们还参加了Arm TechCon 2019,并希望突出推动这些设备的一些创新。
SFI 和 SBSFU:安全系统在其生命周期各个阶段的基础
安全固件安装 (SFI) 现在是一种相对流行的技术,它使系统制造商能够将其固件的加密版本发送给 OEM。由于代码只能在 MCU 内部解密,因此开发人员可以降低 IP 被盗的风险。同样,OEM 可以在不投资主要机器或技术的情况下提供重大保证,因为他们唯一需要的是STM32CubeProgrammer和 HSM 智能卡,其中包含能够将固件安全安装到微控制器上的安全凭证。一旦产品到达最终用户手中,开发人员就可以从安全启动和安全固件升级 (SBSFU)中受益以保护他们免受攻击。安全启动检查启动加载程序签名以确保黑客没有插入恶意代码,而安全固件升级允许制造商修补漏洞并修复潜在错误以增强客户体验。
任何关于 STM32H7 微控制器安全特性的讨论都必须首先说明新的 SMI 特性仅适用于 STM32H750、STM32H753、STM32H755 或 STM32757 部件号。就像其他 STM32 上的 SFI 或安全启动和安全固件更新 (SBSFU) 一样,工程师需要具有加密内核和其他特定硬件机制的 MCU。集成这些新 STM32H7 的 Nucleo、Discovery 和评估板已经上市,这将极大地帮助测试和部署这些功能。所有这些技术也属于STM32Trust,这是我们专注于软硬件解决方案的倡议,并且都经过第三方实验室的审核,以确保其稳健性和有效性。 因此,今天标志着一个象征性的发布,但这也是我们希望提高嵌入式系统安全性以保护最终用户、系统供应商和模块制造商的愿望的延续。
STM32H7 和 SMI:它是什么以及为什么它很重要?
STM32H7 是我们第一个受益于 SMI 的 MCU 系列,它使第三方模块制造商能够加密他们的二进制文件。MCU上运行的应用程序调用模块,就像任何其他常规模块一样,但系统制造商无法访问源代码,这大大降低了IP被盗的可能性。很多时候,开发系统固件的公司会购买第三方模块来添加功能,而无需从头开始开发。模块制造商现在可以为 STM32H7 开发代码,然后使用 STM32CubeProgrammer 的 Trusted Package Creator 对二进制文件进行加密。然后他们将加密凭证存储在硬件安全模块智能卡中他们运送给 OEM,后者将在使用 STM32CubeProgrammer 将加密模块加载到 MCU 时使用它。
细心的读者会注意到,SMI 过程与 SFI 相同,但开发人员不是加密整个固件,而是加密一个模块。此外,SFI 和 SMI 流程使用不同的 HSM 卡。一张智能卡无法存储所有凭据,但出于明显的安全原因,每个固件和模块都必须使用其卡。此外,与 SFI 不同,SMI 需要编译器支持独特的扩展。我们的STM32CubeIDE,集成 STM32CubeMX 的免费 IDE,已经兼容,并且其最近的更新刚刚带来了对 STM32H7 的支持,使其成为专业人士和爱好者的绝佳工具。Keil 和 iAR 也兼容,我们正在与其他 IDE 制造商合作,以确保尽可能广泛的支持。此外,我们已经与一些希望利用这一新功能的模块制造商合作,一旦他们为公众准备好他们的解决方案,我们将对其进行推广。
STM32H7 上的 SFI 和 SBSFU:哪些具体实现使它们更加强大
就像他们的前辈一样,带有加密内核的新 STM32H7 也兼容安全固件安装以及安全启动和安全固件更新。然而,最新的 MCU 是独一无二的,因为它们的 SMI 和 SFI 代码都在安全的系统内存中。在其他设备上,例如 STM32L4,SFI 位于用户内存中,因为该组件没有 STM32H7 拥有的所有安全空间。我们用特殊的锁保护STM32L4内部的代码,一旦OEM使用SFI安装固件,系统会自动删除该机制,以确保用户应用程序可以使用更多的内存。另一方面,STM32H7 将 SMI 和 SFI 代码存储在用户无法访问的系统内存中,并且代码在设备的整个生命周期内都保留在该内存中。
与 STM32WB、STM32G0 和 STM32G4 一样,STM32H7 的 SBSFU 集成了读取保护级别 2 (RDPL2),可保护闪存、备份寄存器和 SRAM 内容免受任何外部访问,同时永久禁用 JTAG/SWD 接口。一旦激活,RDPL2 就不可逆转,保护开发人员免受被遗忘的调试后门的影响,即使该设备在 ST 工厂时也是如此。传统上,如果用户执行系统复位,仅使用读取保护级别 1 的 STM32 器件会打开其 RAM 以进行 JTAG 访问。但是,STM32H7 禁止此类访问,即使在 RDPL1 中也是如此。同样,当从 RDPL1 切换到 RDPL0(不再提供保护)时,STM32H7 保持其专有代码读取保护 (PCROP) 处于活动状态。
相关文章