分享四种Bootloader程序安全机制设计

strongerHuang 2026-08-11 08:46

来源 | 最后一个bug

Bootloader是嵌入式系统的“第一道门槛”——从MCU上电复位到应用程序跳转执行,它承担着硬件初始化、时钟配置、外设使能以及应用镜像加载等核心职责。

然而在实际产品中,Bootloader面临的远不止“把代码跑起来”这么简单:外部SPI Flash中的固件可能被篡改、OTA升级包可能在传输中损坏、甚至未经签名的恶意程序可能被注入执行

作为嵌入式工程师,我们必须在Bootloader层面构筑足够健壮的安全防线——既要保证镜像完整性校验的可靠性,又要权衡签名认证中的密钥管理与存储安全

本文将逐一拆解镜像校验、数字签名、内存保护与只读存储这四种安全机制的设计思路与实现细节。

1、进行image校验

image校验我们也常叫镜像校验,Bootloader程序可以对从外部存储器中读取的应用程序镜像进行校验,以确保其完整性和正确性,常见的镜像校验方式包括CRC、哈希值等。
当然你如果想简单一点使用求和检验也是可行的,将应用程序镜像中每个字节的值相加,得到一个校验和。Bootloader程序将计算得到的校验和与预先存储在应用程序镜像中的校验和进行比较,如果两者相等,说明应用程序镜像没有被篡改,校验和的优点是计算简单,缺点当然就是校验能力有限,更易受攻击。
而相比求和校验,CRC等是一种更加可靠和安全的校验方式,它可以检测出更多的错误,并且不易受攻击。
在STM32中,CRC校验可以使用硬件或软件实现。硬件CRC校验可以使用STM32的CRC模块,直接对应用程序镜像进行校验,速度快、精度高。软件CRC校验则需要Bootloader程序自行实现CRC算法,速度较慢,但也可以得到较好的校验效果。
如果校验通过,则可以加载应用程序镜像;如果校验失败,则应该拒绝加载应用程序镜像,并给出相应的提示。
镜像校验是可以保证从外部存储器中读取的应用程序是可信的,避免恶意程序的注入和攻击。如果镜像校验失败,Bootloader程序可以拒绝加载应用程序镜像,避免恶意程序的注入。

2、签名认证

签名认证并不是一个加密和解密的过程,它是一种数字签名技术。
数字签名是一种用于确保电子文档的完整性和认证性的技术,它使用密钥对(公钥和私钥)来生成和验证签名。
数字签名的过程如下:
1、生成签名:文档的发送者使用私钥对文档进行哈希运算,然后使用私钥对哈希值进行加密,生成签名。
2、验证签名:文档的接收者使用公钥对签名进行解密,得到哈希值,然后对文档进行哈希运算,得到另一个哈希值。接收者比较这两个哈希值,如果相等,则说明文档没有被篡改,并且签名是可信的。

需要注意的是,数字签名技术依赖于密钥对的安全性,私钥需要妥善保管,防止泄露和丢失,公钥需要预置在Bootloader程序中,确保其可信和安全。
签名认证需要使用一组密钥对,包括私钥和公钥。开发者使用私钥对应用程序进行签名,Bootloader程序使用公钥进行认证。如果签名认证失败,Bootloader程序可以拒绝加载应用程序镜像。

3、内存保护

在STM32的Bootloader中,内存保护是一种重要的安全机制,可以保护Bootloader程序和其他重要的代码和数据不被应用程序覆盖、修改或篡改。
内存保护通常使用硬件或软件实现。在STM32中,硬件内存保护可以使用CPU的内存保护单元(MPU)实现,软件内存保护可以使用内存管理单元(MMU)或软件实现的保护机制,具体使用哪种需要看资源情况。
硬件内存保护可以将MCU的内存空间划分为若干个区域,并为每个区域配置不同的访问权限。Bootloader程序可以将应用程序加载到特定的区域中,防止应用程序覆盖或修改Bootloader程序和其他重要的代码和数据。硬件内存保护的优点是速度快、可靠性高,缺点是配置复杂,需要占用一定的硬件资源。
软件内存保护可以使用MMU或软件实现的保护机制,但一般有MMU单元的都属于微处理器了,而微控制器。MMU是一种硬件单元,用于将虚拟地址映射到物理地址,并可以配置不同的访问权限。软件实现的保护机制可以在Bootloader程序中实现一些保护代码,用于检测和防止应用程序的篡改和攻击。软件内存保护的优点是灵活性高,缺点是速度较慢,可靠性较低。
内存保护可以保护Bootloader程序和其他重要的代码和数据不被应用程序覆盖、修改或篡改。在实现内存保护时,需要注意区域划分、加载位置、访问权限、保护代码等方面的问题。

4、使用只读存储器

只读存储器(ROM)通常是一种非易失性存储器,具有读取快、安全可靠、不易受攻击等优点。
将Bootloader程序放在只读存储器中,可以保证Bootloader程序的完整性和安全性,防止恶意程序的注入和攻击。只读存储器也可以是MCU的Flash、ROM等。

最后

值得注意的是,Bootloader程序的安全机制应该根据实际的应用场景和需求进行设计和实现。
安全机制的增加会增加系统的复杂性和开发成本,因此应该在安全性和可用性之间进行权衡。

------------ END ------------



关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
安全
more
《智能网联汽车 自动驾驶系统安全要求》强标发布
SoC+安全+射频+电源全栈布局,国民技术领航国产MCU平台化发展
中国低空经济构建以安全为基石的低空治理体系:从"野蛮生长"到"规范发展"
小米澎程详解安全冗余设计,门把手与涉水能力成焦点
温岭市城发低空经济发展有限公司:招聘安全专员,本科起报,base台州丨低空招聘
苹果发布 iOS 26.6.1、macOS 26.6.2 等多个 RC 版,均为安全修复
从「产品出海」到「产能出海」:如何安全落地
十万亿参数大模型逼近临界点:算力军备竞赛与安全悖论的双重变奏
Kimi K3“越狱”实录:沙箱配置失误背后的AI安全困局
AI“无中生有”合成16种新病毒,生物安全警钟再鸣
Copyright © 2025-成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号