历史上的今天
返回首页

历史上的今天

今天是:2026年02月28日(星期六)

正在发生

2023年02月28日 | 安全启动 - STM32安全启动架构

2023-02-28 来源:jdzj

安全需要一个起点。现在我们理解,没有安全启动,设备平台的安全难以得到保证。安全启动要求启动的位置一定是固定在某个地方。那么固定启动位置靠什么保证?必须靠硬件。软件本身的特点,决定了它很容易被修改,即使做了加密和加扰,破解的难度依然比硬件低很多。所以,安全启动一定是靠 STM32 硬件来保证。脱离硬件谈安全启动基本上是不可能的


实现 Root of Trust(信任根)通用的做法是什么呢?一般是,芯片有一个 Bootrom 启动只读存储区。硬件的设计保证,芯片加电启动一定是从这个只读的甚至不可见的 Bootrom 里执行。


事实上,保持安全启动的原则不变,但是实现的方式可以不一样。 对于这个 Bootrom,直接固化在芯片里,会减少灵活性,无法适应 MCU 的广泛应用场景。所以,STM32 采用的是使用 STM32 硬件技术,允许客户在开发过程中形成 Bootrom。形成的 bootrom 具有我们前面所提到的安全启动几个特征:

◎ 启动位置是固定的

◎ 启动顺序是不可修改的

◎ 启动代码或者核心部分对后续代码是不可见的


安全启动的 STM32 软件架构


STM32 SBSFU 是一个层次结构,分为三层,可参考附件中的下图图示。



◇ 第一层是驱动层,包括 BSP 以及 STM32 HAL

◇ 第二层是中间件层,包括 STM32 Cryptolib,以及安全引擎。安全引擎提供了 Secure key storage 安全存储密钥的服务,以及安全进行加解密操作的服务。

◇ 第三层是应用层,包括 SBSFU,以及用户固件。其中,安全启动与安全固件更新部分,保括了安全配置,用户固件加载,以及为用户固件更新所准备的固件烧录功能。


在 STM32 中固定启动位置


我们看一下 SBSFU 的安全部分是如何实现的。复盘一下系统的初始执行过程:系统上电,STM32 MCU 根据 boot0 和 boot1 管脚的配置,再加上软件 boot 寄存器,可以确定系统应该什么地方启动,存在三种可能:

◎ 从系统内存启动 System memory bootloader。

◎ 从用户 Flash 启动

◎ 从SRAM 启动


理论上系统内存可以充当信任根。然而,考虑到系统内存所达到的安全级别和灵活性,我们不希望它从系统内存启动。从 SRAM 启动的话,如果没有信任根的话,那么这个 SRAM 的安全无法得到保证。因此,只有唯一的选择,也就是 STM32 目前的安全设计方案,将系统固定在用户 Flash 启动 。


我们如何将系统固定在用户 Flash 启动?


根据 STM32 手册,需要使用一个叫读保护的功能 RDP。不使用 RDP, 首先 boot pin 是可以重新拉高或者拉低,从而构成不同的配置;其次 JTAG 可以连上去,让 STM32 从 SRAM 启动。


读保护 RDP 要设置成2,才能够确保启动位置不会被修改。 将 RDP 设置成1,是保护 Flash 内容不被读出,并不能将启动顺序固定到用户 Flash。例如, JTAG 依然可以连上 STM32, boot 管脚依然可以重新修改。


所有的 STM32 系列都具备 RDP 功能。唯一需要注意的是 STM32F1 系列,不具备 RDP 级别2这一设置。


有些客户反映,使用 RDP 级别2,会不会造成一些问题,代码错了,系统会不会变化?还有使用 PCROP 保护的算法或者密钥会不会再也无法更新?为解决这些问题,可以采用特别的 STM32 型号,例如:STM32G0。


对于 STM32G0,这种情况下,是要使用一个选项字节功能。该功能被称为唯一启动入口 (Unique Boot entry)。若将该选项字节设置成1,STM32G0 只能从主 Flash 启动。不过,对于安全启动,需要将启动的位置固定这一需求,是可以进一步放松。例如:假如换到其他位置,对于安全相关的链条的影响为0,那么我们也可以认为这个信任的根的保密、完整、可靠目标在一定程度达到了。


例如,我们在不需要 RDP 为2,也可以实现可信的安全固件安装。在安全固件安装中,系统内存提供 RSS 根安全服务,在这个过程中,系统内存充当了信任根。这就是一个RDP 级别1 的信任根。


再例如:如果使用 STM32L4,将堆栈放在 SRAM2 中,那么在 RDP1 的情况下,想通过 JTAG 攻击STM32,例如读 Flash 内容,或者对 Flash 修改基本不可功能。


总结一下,构造安全启动,必然需要设置读保护 RDP, 一般设置成2,在有些情况下也可

以设置成1,这个时候要确保 SRAM1 不包含任何安全敏感信息。


推荐阅读

史海拾趣

Conditioning Semiconductor Devices Corp公司的发展小趣事

为了进一步提升技术水平和扩大市场份额,CSDC积极寻求与国际半导体巨头的合作。通过与这些公司的技术交流和合作研发,CSDC不仅获得了先进的技术支持,还成功打入了国际市场。这一合作不仅提升了CSDC的品牌影响力,也为其带来了更多的商业机会。

Emmoco公司的发展小趣事

Emmoco一直将品质管理作为公司发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,Emmoco还注重持续改进,通过引入先进的生产设备和工艺、优化生产流程等方式,不断提高产品质量和生产效率。这些举措使得Emmoco的产品在市场上赢得了良好的口碑和声誉。

Digital Voice Systems Inc公司的发展小趣事

Digital Voice Systems, Inc.(DVSI)于1988年成立,当时正值数字通信技术的兴起阶段。公司创始人凭借对语音编解码技术的深刻理解和前瞻性的市场洞察力,决定投身于这一领域。他们开发出了具有专利保护的基于鲁棒性多带激励模型(MBE Model)的低码率语音压缩算法,如IMBE和AMBE编解码系统。这些算法在当时的市场上独树一帜,为DVSI赢得了第一桶金。

在创立初期,DVSI面临着资金、技术、市场等多方面的挑战。然而,他们凭借着坚定的信念和不懈的努力,逐步克服了这些困难。他们不断投入研发,优化算法,提高产品的性能和稳定性;同时,他们积极开拓市场,与各大通信设备制造商建立合作关系,将产品推向市场。

随着时间的推移,DVSI的产品逐渐在市场上获得了认可。他们的编解码系统被广泛应用于移动通信、卫星通信、军事通信等领域,为客户提供了高效、稳定的语音通信解决方案。DVSI也因此逐渐崭露头角,成为了电子行业中一颗耀眼的明星。

故事二至五框架概述

  1. 技术创新与突破:DVSI在语音编解码技术方面的持续创新,如推出新一代的高效压缩算法,进一步提升了产品的竞争力。
  2. 市场拓展与国际化:随着公司实力的增强,DVSI开始拓展国际市场,与全球多家知名企业建立合作关系,实现了国际化发展。
  3. 合作与竞争:在电子行业中,DVSI与其他企业的合作与竞争并存。他们通过合作共赢的方式,共同推动行业的发展;同时,也面临着来自竞争对手的挑战和竞争压力。
  4. 企业文化与团队建设:DVSI注重企业文化建设,倡导创新、协作、共赢的价值观。他们注重团队建设,吸引了一批优秀人才加入公司,为公司的发展提供了有力的人才保障。

以上故事和框架概述仅供参考,您可以根据这些线索进一步挖掘和编写关于DVSI公司的故事。

安普康(AMPCOM)公司的发展小趣事

在电子行业竞争日益激烈的背景下,安普康深知创新是企业发展的核心动力。因此,公司始终将研发投入作为重要战略之一。通过引进先进的生产设备和技术,安普康不断提升产品的品质和性能。同时,公司还积极与国内外知名企业和研究机构合作,共同开展技术研发和创新。这些努力使得安普康在光纤产品、布线产品等领域取得了多项专利,并成功推出了一系列具有市场竞争力的新产品。

动运科技(DONGWOON)公司的发展小趣事

在全球化的大背景下,企业之间的合作与共赢成为了一种趋势。动运科技积极寻求与全球知名企业的战略合作,共同推动电子行业的发展。例如,公司与香港希荻微的合作就是一个典型的例子。通过独占许可的方式,希荻微获得了动运科技在中国大陆及港澳台地区生产、销售与自动对焦及光学防抖技术相关的产品的权利,并有权使用授权技术进行技术改进及新产品研发。这一合作不仅为双方带来了互利共赢的机会,也为整个电子行业的发展注入了新的活力。

Bipolar Integrated Technology Inc公司的发展小趣事

随着国内市场的饱和,BIT开始将目光投向国际市场。他们通过参加国际电子展会、与海外企业建立合作关系等方式,积极拓展海外市场。同时,BIT还在全球范围内设立研发中心和生产基地,以便更好地满足不同地区客户的需求。

问答坊 | AI 解惑

求助该电路中R1的取值

如图是本安型防爆电源,求助该电路的R1的阻值由什么决定。就是说R1的取值范围。 [ 本帖最后由 wzk07296 于 2010-4-29 23:46 编辑 ]…

查看全部问答>

请帮忙看看 按键驱动的问题!!

最近参考网上资料,为自己的S3C44B0X开发板1X4按键写了驱动程序key1x4.c,以及简单的测试程序key_test.c: /*********************************************************************/ /*key_test.c*/ #include #include #include #includ ...…

查看全部问答>

使用TI板子完成无线传感器网络的智能车定位

在无线传感器网络条件下,利用该TI实验板取代飞思卡尔单片机实现,智能车定位。由于定位需要大量数据计算,飞思卡尔单片机的运算在硬件实时性差些。…

查看全部问答>

急,急,急! 2812外扩SRAM不能正常读写!!

2812外扩SRAM不能正常读写,不知是什么原因? 几天前SRAM都已经正常调通了,但这几天,不知什么原因,SRAM就是不能正常读写,现象如下: (1)写一个数据,相邻随机地址的数据也发生变化; (2)仅读数据,相邻随机地址的数据也会发生变化; ( ...…

查看全部问答>

CortexM0__Timer32_0示例代码程序下载

CortexM0__Timer32_0示例代码程序下载…

查看全部问答>

同一工程项目中Verilog和C语言的作用分别是什么?

工程实践中,一般既要用到Verilog编程,同时要用到C语言编程,其作用分别是什么?难道只用Verilog就不能完成一个项目吗?…

查看全部问答>

求助

今天在ADC12的datasheet中看到这样一句话,不太明白它的意思,请高手给讲讲   the error in a conversion started after tADC12ON is less than ±0.5 LSB.  …

查看全部问答>

给位帮忙看看这段是延时么?

#ifndef __DELAY_H__ #define __DELAY_H__ #define        sbi(Y,X) Y |= (1 …

查看全部问答>

【TI视频分享】SensorTag intro and how to use one of TIs most popular tool

将您的Bluetooth® 低能耗产品连接到智能手机 TI 提供的新Bluetooth® 低耗能SensorTag 旨在将蓝牙应用开发的设计时间从数月缩短到数小时。 提供可下载的SensorTag 应用,且无需硬件或软件专业知识,此套件消除了智能手机应用开发人员的障 ...…

查看全部问答>