安全启动 - STM32安全技术RDP与MPU

发布时间:2023-02-28  

检查安全配置 & 构造安全执行环境

同一般的 MCU 启动比较,STM32 安全启动多了一些步骤。首先,安全启动检查相关的安全静态配置是否已经设置完毕,例如 RDP 的级别,PCROP,WRP。如果首次启动则需要配置这些选项字节。然后,安全启动会去设置那些每次运行都需要重新设置的硬件配置 Firewall,MPU,IWDG 的配置。用户可参考下图图示理解安全启动的过程。最后,是对下一级固件进行验证。这个安全的执行环境保证了启动的顺序不会被改变,以及启动代码的保密性。


防外部攻击

此处谈及的外部攻击不是把芯片剖开,使用光学显微镜进行拍照,从而进行逆向工程;或者使用激光对芯片线路进行切割或者连接。这种攻击的成本非常高,需要丰富的专业知识,也不是通用 MCU 所设计防护的目标。还是那句话,没有绝对的安全。我们所做的防范都是根据安全风险分析而制定的。

MCU 的内置 Flash、内置 SRAM 的特点决定了 STM32 可以很容易做到防外部攻击。因为外部攻击的主要手段会来自 JTAG。而不像非单片机那样,你需要担心外置的 Flash,是否直接被 Solder off, 然后放在其他读写器进行修改。也不需要担心外置的 SRAM 会不会被攻击者进行探测。


STM32 防外部攻击主要通过将 RDP 设置成2。

RDP

读保护 RDP 是 STM32 系列一个非常重要的安全设置,而且设置特别简单

芯片默认的 RDP 一般是等级 0。这个时候任何人可以通过 JTAG 访问所有资源,可以擦除、读写 Flash,可以进行调试,可以通过 JTAG 直接从 SRAM 启动,也可以修改 boot pin 脚从 system memory 进行启动。

若需要达到的一般化的安全等级,RDP 要设置成 1。这个时候通过 JTAG 就没有办法直接访问 Flash 了。在这种情况下,固件的知识产权受到了保护。

为了更好的安全性,一般将 RDP 设置成2。

◎ JTAG 不能连接 STM32

◎ 选项字节再也不能修改;例如 WRP 所保护的区域就是一个真正的 ROM 了,再也不能修改了。

不过 RDP 设置成2,就再也不能回退了。所以,如果代码还没有测试好,例如通过软件更新系统的功能还没有测试好,那么就不要急着把 RDP 设成2。

STM32 全系列都有 RDP 的设置。当然 STM32F1 系列不具有 RDP2 的设置。使用 STM32F1,又想达到比较高的安全性,需要自己考虑软件中的设计。或者,简单一点,可以考虑去使用其他兼容 STM32F1 的系列,例如cSTM32F4 替换。

RDP 的设置非常简单,开发时可以通过 ST-Link 直接选择。也可以通过 STM32 CubeProgrammer 来完成。更方便的途径,是可以在程序里直接完成。若想了解在程序里直接设置 RDP 的代码,可以参考 SBSFU 开发包。


其他手段

外部攻击还有一些手段,例如操纵电压、操作芯片的温度、操纵时钟,将设备打开让开发板的布线暴露,针对这些攻击,STM32 也有相应的技术。我们把它归结为系统监控类。这些防护我们后面会提到。


防内部攻击

内部攻击的表现形式一般是注入恶意代码,或者缓冲区溢出。通过这些攻击手段,攻击者的目的就是为了盗取密钥,固件代码或者其他敏感信息,达到破解设备或者仿冒设备的结果。“外敌易挡,家贼难防”,如果有恶意代码混进来,我们需要额外的多项 STM32 安全技术来保护。


MPU

内存保护单元是来自 ARM 的一项技术。在所有的 STM32 系列除了 STM32F0,都有该硬件单元。STM32F0 的用户,也不用着急。为了更好的安全,用户可以选择产品 STM32G0。STM32G0 是可以看成是 STM32F0 的升级版本。

MPU 是一种权限设置保护。通过MPU,可以将内存分成多个单元。每个单元可以单独的设置权限。例如,若将 RAM 设置成不可执行,那么代码注入和 Buffer overflow 到 RAM 就不能工作。

MPU 是一种内存保护技术,主要保护内核所访问的内存,缺点之一它不能保护DMA,缺点之二是它不能自己保护自己。默认情况下,后面的代码依然可以修改MPU 配置。也就是说,如果如果你前面使用了MPU 保护一段内存单元,后面的其他代码还可以修改MPU 配置将保护去掉。

解决这个问题的办法是结合内核的特权模式与非特权模式。我们可以查阅 STM32 的编程手册。手册里写到,某些寄存器只有在特权模式下才能访问。这些只有在特权模式下才能访问的寄存器,就包括了 MPU 的控制寄存器。即只有特权模式才能将 MPU 的配置 修改。如果我们将整个代码分成两部分:安全敏感性操作工作在特权模式,一般用户固件工作在非特权模式下。那么非特权模式下的用户代码就没有办法直接修改 MPU 寄存器,也就是没有办法将配置好的 MPU 关掉或者修改掉。STM32 SBSFU 对 STM32F4、STM32F7 就使用了 MPU 结合特权用户模式,来达到更好的安全效果。

值得强调的,MPU 作为动态保护技术,无法单独存在,必须结合防护外部攻击的 RDP 一起使用。但是,MPU 也可以被用来做开发诊断。MPU 的分区权限设置这个功能,可以帮助开发人员定位错误。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>