0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

聊聊一些常用的Bootloader安全机制的设计

lilihe92 来源:最后一个bug 2023-06-11 09:51 次阅读

不管是玩单片机还是嵌入式linux,基本上都会接触到bootloader,所以bootloader程序也是一个关键的组件,进行硬件初始化,应用程序的合法性、完成性检测、升级功能等等都与其息息相关。

像一些在ram运行的应用程序,或者是一些运行内存比较小的MCU等等,它需要保证从外部存储器中读取的应用程序是可信的,不能拿过来就执行,那往往是不安全的,特别是为了防止恶意程序的注入和攻击,在Bootloader程序中实现一定的安全机制就非常有必要了~

那么今天就大致聊聊,一些常用的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等。

5

最后

值得注意的是,Bootloader程序的安全机制应该根据实际的应用场景和需求进行设计和实现。

安全机制的增加会增加系统的复杂性和开发成本,因此应该在安全性和可用性之间进行权衡。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620862
  • 存储器
    +关注

    关注

    38

    文章

    7151

    浏览量

    162000
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3431

    浏览量

    128223
  • CRC校验
    +关注

    关注

    0

    文章

    81

    浏览量

    15030
  • MCU控制
    +关注

    关注

    0

    文章

    45

    浏览量

    6651

原文标题:四种Bootloader程序安全机制设计

文章出处:【微信号:最后一个bug,微信公众号:最后一个bug】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    常用一些芯片资料

    以下是一些常用的芯片资料,如lcd1602,ds12c887,开发板proteus原理图
    发表于 05-09 17:18

    关于ARM的一些常用代码

    关于ARM的一些常用代码
    发表于 04-25 22:19

    bootloader一些疑问

    了?这个跳转是水区引导的呢? 问题有些多,但是都是原理性问题,我也是做好了boot后产生的一些疑问,麻烦Andy和大家了!
    发表于 06-21 09:33

    基于FPGA 的手机Bootloader 加锁机制

    Bootloader 加锁机制由于市场和客户的需要,手机安装或卸载程序需要的权限需要很好的安全机制,而Bootloader 加锁是比较
    发表于 09-03 10:41

    求大神分享种基于bootloader的嵌入式软件自动更新机制

    本文提出了种具有较高稳定性和安全性、基于bootloader的嵌入式软件自动更新机制。该更新机制同时保存了3个文件,需要较多的Flash存
    发表于 04-27 06:33

    常用一些伺服电机参数有哪些?

    常用一些伺服电机参数有哪些?
    发表于 09-24 11:44

    聊聊数字电路芯片设计的一些事情

    说说芯片设计这点事 芯片设计这个行当 ,从大的方面讲,主要分模拟和数字两大块, 而每大块又分前端和后端, 我想大部分同学对这个肯定是非常清楚的, 下面就数字电路聊聊芯片设计的一些事情,就是芯片设计有
    发表于 11-10 06:04

    聊聊关于STM32系列在存储芯片方面的需求的一些经验

    相信很多工程师朋友对STM32这款主控芯片非常熟悉了,它的应用也非常的广泛,今天就是和大家聊聊关于STM32系列在存储芯片方面的需求的一些经验。以前基本用内置的E2PROM,或者是外置的NOR
    发表于 11-26 06:30

    AVR和STM32的bootloader机制记录和讲解

    放在AVR和STM32的bootloader机制,做了一些阅读、实验、编写和移植的工作,最后才有了这篇文章,算是个阶段成果汇报。这里先简单总结磨叽
    发表于 12-09 07:37

    常用一些PID算法有哪些?

    PID的原理是什么?常用一些PID算法有哪些?
    发表于 01-21 06:48

    聊聊对单片机的内部存储器RAM和FLASH的一些认识和理解

    单片机内部个重要组成部分,存储器占有很重要的地位,今天就来聊聊我对于单片机的内部存储器RAM和FLASH的一些认识和理解。1、先聊聊存储器 存储器是单片机结构的重要组成部分,存储器是
    发表于 01-26 08:09

    聊聊我对单片机程序的整体框架设计的一些思路体会

    RTOS。或者使用RTOS,在整体思路上比较迷茫,不知从何入手,所以本文来聊聊我对单片机程序的整体框架设计的一些思路体会。为啥要讨论架构单片机系统开发人员的目标之是在编程环境中创建固件,以实现低成本系...
    发表于 02-23 07:30

    介绍AUTOSAR支持的四种功能安全机制

    1、AUTOSAR的四种功能安全机制虽然AUTOSAR不是个完整的安全解决方案,但它提供了一些安全
    发表于 06-10 17:33

    RAM、ROM常用安全机制

    存储器数据的稳定可靠是MCU安全运行的基础,但环境因素和存储器本身的物理特性都可能造成存储器数据异常,本文将详细介绍RAM&ROM常用安全机制
    的头像 发表于 06-13 14:48 3431次阅读
    RAM、ROM<b class='flag-5'>常用</b><b class='flag-5'>安全</b><b class='flag-5'>机制</b>

    常用Bootloader安全机制的设计

    image校验我们也常叫镜像校验,Bootloader程序可以对从外部存储器中读取的应用程序镜像进行校验,以确保其完整性和正确性,常见的镜像校验方式包括CRC、哈希值等。
    发表于 08-28 09:17 155次阅读