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

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

3天内不再提示

MCU如何安全启动以及安全启动的信任链如何建立

jf_EksNQtU6 来源: 开心果 Need Car 2023-12-28 10:28 次阅读

随着汽车智能化的发展,车辆已经成为万物互联的一部分。我们知道,不管何种终端设备,一旦联网,就存在着信息泄露的风险。自然,车辆也不例外,一旦车辆联网,那么,车辆就有被黑客或者第三方攻击、截获信息的风险。因此,车辆信息安全,已成为车企关注的焦点。本文,主要讨论MCU如何安全启动(Secure Boot),以及安全启动的信任链如何建立。

1、安全启动

讨论汽车信息安全的话题,绕不过"安全启动"的讨论。所谓安全启动就是确保每一个可执行程序都是可信的、没有被篡改的。目前,针对安全启动的方案有硬件(eg:HSM,Hardware Security Module)启动方案、软件启动两种方案。本文主要讨论基于HSM的硬件实现方案,不管哪种方案,"信任根"和"信任链"是所有安全启动设计中,不可规避的两个点。

(一)信任根

既然要安全启动,那么,启动总得有一个起点,而这个起点需要无条件信任,即:信任根。信任根必须具有不可攻破性,它可以是一段固化的程序或者硬件。以TC3xx为例,信任根是BootRom(也称为固件)。

(二)信任链

有了信任根以后,就可以从信任根开始,展开软件程序的逐级验证。工程中,常见的信任链验证方式如下:

b1736b0c-a4a1-11ee-8b88-92fbcf53809c.png

如上图,从芯片加电开始,程序从信任根开始执行,逐级的验证下一级程序,只有每级程序验证通过才能启动下一级程序,以此确保每个程序是安全的、可信的。

一般来说,程序可分为"安全启动程序"和"用户程序"。两者的CPU可以使用相同的内核架构,也可以使用不同的内核架构。一般,两者属于核间通信(Inter-Processor Communication)。

如上安全启动方式有一个不足:由于采用逐级验证方式,启动时间过长。如果OEM(Original Equipment Manufacturer)有严苛的启动时间要求,则这个方案很可能不能满足要求。

所以,工程上的另一种安全启动方案:"安全启动程序"和"用户程序"并行启动,如下所示:

b181a794-a4a1-11ee-8b88-92fbcf53809c.png

并行启动方案虽然可以缩短启动时间,但是,并行启动方案有被篡改用户入口程序地址的风险(如果用户程序入口存放在BootRom,几乎不可能修改)。所以,为了兼顾启动时间和安全性,工程上还有另一种方案:对程序采取部分校验的方式,缩短启动时间的同时,兼顾一定的安全性。

2、验证内容及验证方法

(一)公钥存储

信任链的校验自然脱离不了密码学的方法论,而密码学又和密钥紧密关联。工程上,不管程序刷写还是程序启动,均需要使用公钥验签,所以,加强公钥的保护,至关重要。如果公钥被第三方识别和替换,那么,第三方即可通过配对的私钥伪造签名信息,进而"为所欲为",信息安全也不复存在。

我们知道,在车辆下线时,OEM会在产线端分配根公钥(也就是产品公钥),产线刷写时,车辆不连接网络,也就不存在被网络攻击的风险,因此,根公钥的刷写是安全的(PS:不考虑异常断电场景)。一般来说,根公钥可以刷写到HSM专属的OTP(One Time Program)存储区,此区域,不允许Host端访问。如果根公钥对应的算法RSA-2048、RSA-3072等,根公钥的长度较长,所以,工程上,常存储根公钥的哈希值,通过校验根公钥的哈希值,确认根公钥的完整性

(二)级联校验内容

级联校验内容及时序如下所示:

b18f40e8-a4a1-11ee-8b88-92fbcf53809c.png

首先,安全启动程序(eg:HSM)通过计算User Bootloader中的根公钥,得到根公钥的Hash Value,如果与HSM中的根公钥Hash Value比对一致,则校验通过,之后,HSM通过根公钥得到UserBootloader+AppPublic KeyHashValue签名信息,如果与UserBootloader中的签名信息一致,则校验通过,程序可以进入User Bootloader程序。

User Bootloader+App Public Key Hash Value验证通过,则说明User Bootloader中的App Public Key Hash Value完整。User Bootloader通过指定地址找到App Public Key,进一步计算Application程序中的Application Public Key Hash Value,如果一致,则Application Public Key可以用于验证User Application,如果两者的Application签名信息一致,则验证通过,程序完成安全启动。

拓展思考:程序第一次烧录时,HSM中没有根公钥的Hash Value怎么办?答:程序启动时,如果发现HSM没有根公钥Hash Value,则认为是首次启动,User Bootloader去指定地址获取Root Public Key,计算得到的Root Public Key Hash Value,并存储到HSM,之后,执行复位,重新启动程序,并进行验证。

审核编辑:汤梓红

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

    关注

    146

    文章

    16019

    浏览量

    343650
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206570
  • 硬件
    +关注

    关注

    11

    文章

    2922

    浏览量

    64801
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79547

原文标题:信息安全:安全启动的信任链如何建立?

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用PSoC 61进行安全启动

    我们知道所有关于安全启动的文档都是基于 PSoC 62、63 或 64 的。 因为安全启动机制包括 M0+ 和 M4。 我们想知道如何使用 PSoC 61 进行
    发表于 01-30 07:51

    禁用安全启动Hades Canyon NUC

    的东西,却无法找到解决方案。我已经尝试更新BIOS,清除安全启动数据,以及其他一些功能,但都没有。有没有人对这个问题有什么想法?我可以确认UEFI启动仍然启用,我的闪存驱动器是使用UE
    发表于 12-05 10:44

    【HarmonyOS】安全指南

    模块可以作为后续的信任基础,此过程就是启动信任的构造过程。Bootloader通常首先对执行环境进行一定的初始化,主要是初始化DDR以及f
    发表于 09-16 17:34

    s32k312 MCU如何使用安全启动功能?

    我目前正在使用s32k312 MCU ,需要使用安全启动功能。 我试图在文档(HSE 参考手册等)中找到任何指示,说明如果启用此功能会增加多少时间到启动时间,但运气不好。我在哪里可以找
    发表于 06-05 09:54

    Arm CryptoCell-312生成和验证安全引导和安全调试证书指南

    安全启动证书安全调试证书之间的主要区别。 本指南包含以下各节: ·证书和证书。 ·证书
    发表于 08-24 06:09

    国内首创!通过SDK集成PUF,“芯片指纹”打造MCU安全芯片

    MCU芯片或嵌入式设备建立硬件信任根。通过将信任根作为锚点,逐步建立信任
    发表于 09-06 09:44

    使用STM32安全启动与固件更新

    STM32 内建的各种软硬件安全技术,构建了从启动开始的根信任,可以用来防止固件克隆、恶意软件下载以及固件破坏。本文则是带领读者一步一步
    发表于 09-11 07:35

    美高森美推出安全启动参考设计及主要特性

    FPGA-based 安全启动参考设计。这款新型参考设计使用了主流SmartFusion2 SoC FPGA中的先进安全特性,在嵌入式系统中安全
    的头像 发表于 02-11 13:25 4313次阅读

    痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具nxpSecBoot用户指南

     痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具nxpSecBoot用户指南nxpSecBoot1 软件概览1.1 介绍  nxpSecBoot是一个专为NXP MCU
    发表于 11-06 09:35 9次下载
    痞子衡嵌入式:恩智浦<b class='flag-5'>MCU</b><b class='flag-5'>安全</b>加密<b class='flag-5'>启动</b>一站式工具nxpSecBoot用户指南

    上海航芯ACM32 MCU安全特性

    上海航芯MCU提供安全启动安全更新参考实现,具体可见对应的软件包。安全启动
    的头像 发表于 04-22 16:09 1799次阅读

    基于Arm的Renesas R-Car Gen 3 SoC设备的安全启动

      SoC 具有比 MCU 设备更长的引导链。我们的 R-Car 设备中的安全启动逻辑允许设计人员在整个启动过程中利用签名检查的硬件加速。瑞萨电子 R-Car 设备利用硬件作为构建可靠
    的头像 发表于 04-24 15:00 2026次阅读
    基于Arm的Renesas R-Car Gen 3 SoC设备的<b class='flag-5'>安全</b><b class='flag-5'>启动</b>

    信任区是建立IoT安全的基石

    若攻击者成功欺骗嵌入式系统将假代码视为真代码接受,则所有数据都会丢失。所有代码必须验证为可信代码。设备制造期间,在工厂生成公/私钥对。公钥储存在MCU安全位置,通常位于一次编程(OTP)存储器中。MCU在开机
    的头像 发表于 08-24 15:33 528次阅读

    物联网安全始于安全启动

      总而言之,安全启动对于在设备的整个生命周期内保持设备完整性至关重要。重要的是设备架构师和应用程序设计人员在定义安全启动过程之前列出所有安全
    的头像 发表于 09-17 17:08 445次阅读

    提高安全需求的标准:“安全启动”的真正含义是什么

    嵌入式引导代码安全性是技术提供商正在研究的漏洞分析的一个重要领域。但是,在添加数字签名或身份验证步骤后,营销部门会立即将解决方案标记为“安全启动”。现在是时候研究安全boot_的真正含
    的头像 发表于 11-10 15:04 820次阅读
    提高<b class='flag-5'>安全</b>需求的标准:“<b class='flag-5'>安全</b><b class='flag-5'>启动</b>”的真正含义是什么

    车规MCU安全启动固件

    安全启动固件(Secure Boot Firmware) 车规MCU安全启动固件(Secure Boot Firmware)是一种用于保护
    的头像 发表于 10-27 17:20 1497次阅读
    车规<b class='flag-5'>MCU</b>的<b class='flag-5'>安全</b><b class='flag-5'>启动</b>固件