1 微控制器安全起动 (Secure Boot) 的软硬件整合作法 – 以NuMicro M2351系列为例-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

微控制器安全起动 (Secure Boot) 的软硬件整合作法 – 以NuMicro M2351系列为例

jf_pJlTbmA9 来源:新唐MCU 作者:新唐MCU 2023-10-26 17:26 次阅读

Secure Bootloader 是一段被写在 Mask ROM 内无法被存取和更改的可开机程序代码。系统经由配置区设定为从 Secure Bootloader 启动后,便会启动 Secure Boot 验证机制,对存放在Flash Memory安全区域内的程序代码做开发者身分认证和代码完整性的验证。当 Secure 区域代码通过 Secure Boot 验证后,系统才会跳至 Secure 区域内执行被验证过的受保护代码,例如下图所示。

wKgZomUD6oCAXgffAABCijeXHfw935.png

如果下一阶段的启动代码没通过 Secure Boot 验证的检测,此时 Secure Bootloader 会执行USB/UART1 command 模式,等待接收并处理从 Secure ISPTool USB/UART1 接口送进来的 command。

另外在 Secure Bootloader 内有开放部分的 API,让程序开发人员可以直接使用这些已经在Secure Bootloader 代码内有提供的功能。

wKgaomUD6oKAF85zAABc_CXQi8s045.png

本文将以M2351为范例介绍Secure Bootloader 和整个 M2351 内存之间的关系开始,之后会说明如何配置启动 Secure Bootloader、Secure Bootloader 工作频率、如何启动 Secure Boot 验证以及Secure Boot 验证时必要的配置和验证流程。最后会介绍 USB/UART1 command 模式的功能和特性。

位置和属性

Secure Bootloader 代码被预写在 32KB Mask ROM 内,位置落在 0x0080_0000 ~ 0x0080_7FFF 间的 Secure 区域内,并被配置为 Execute-only memory (XOM) 属性,因此这段代码是无法被更改以及存取的。另外在 Secure Bootloader 运行过程中,会需要用到位于 0x2000_C000 至 0x2000_FFFF 共 16KB 的 Secure 内存。

wKgZomUD6oOAY8nhAAAwdm1KDaE880.png

起始开机区选择

M2351 User Configuration Block 是可以配置和系统启动选项相关的配置区块。在芯片上电后,CPU 执行任何代码之前,可以预先执行照配置区内所设定的动作。

因此透过更改配置区内 CBS (CONFIG0[7]) 和 MBS (CONFIG0[5]) 的设定,便可决定 M2351 在上电后的起始开机区域为何。

如要规划从 Secure Bootloader 启动开机,则只需将 MBS 配置为 0 后再做系统重置即可。否则系统起始开机区会由 CBS 的设定值来决定从 APROM 或 LDROM 启动。

wKgaomUD6oSAds1NAAAd5aIrW70100.png

Bootloader 工作频率

当起始开机区运行在 Secure Bootloader 时,系统的工作频率会切换为 48MHz。

如为有支持 USB 功能的芯片型号时,Secure Bootloader 启动后会先检测外部 HXT-12MHz 频率误差是否有小于 6% 后,再决定系统工作频率的时钟源。如外部 HXT-12MHz 频率误差小于 6%,则优先以此 HXT-12MHz 来产生 PLL-48MHz 的时钟源,并将此 PLL-48MHz 当作系统工作频率和 USB 装置的工作时钟源。

如果芯片没有支持 USB 功能,或是外部 HXT-12MHz 频率误差过大,则会转换成以内部 HIRC-12MHz 当作 PLL-48MHz 的时钟源,来当作是系统工作频率或是 USB 装置的工作时钟源。

启动 Secure Boot 验证

系统从 Secure Bootloader 启动后,可以开启 Secure Boot 验证的机制。这目的主要是验证下一阶段要被执行的 Secure 代码是否有通过代码开发者身分认证和代码完整性的验证。如果要启动 Secure Boot 验证,除了设定从 Secure Bootloader 开机外,还需透过设置 Secure Region Lock 或者是 All Region Lock 来对系统的 Secure 区域做保护。

在 Secure 区域没有受到保护的情况下,Secure Bootloader 启动后是不会执行 Secure Boot 验证机制的。此时系统将会跳到 Secure Bootloader 内的 USB/UART1 command 模式,等待接收并处理 USB/UART1 command,而不会跳到其他区域内的代码作执行。

当启动 Secure Boot 验证下一阶段要被执行的 Secure 区域代码无误后,Secure Bootloader 将会参照配置区内 CBS (CONFIG0[7]) 的设定值来决定 CPU重启之后是要执行 Secure APROM 或是 Secure LDROM 内的代码。

如果 Secure Boot 验证过程中有错误产生,则系统也一样会跳到 Secure Bootloader内 的USB/UART1 command模式,等待接收并处理 USB/UART1 command。

下面表格为 MBS、SCRLOCK、ARLOCK、CBS 和系统起始开机区的关系表:

wKgaomUD6oWAY0LJAAA_HTOKpm0338.png

Secure Boot 配置说明

前面章节大致说明了如何将系统配置从 M2351 Secure Bootloader 启动,并开启 Secure Boot验证的功能。

下面的子章节将说明执行 Secure Boot 验证时的必要配置。

SBK – Secure Boot Key

Secure Boot Key (SBK) 是一把对被 Secure Boot 验证的 Secure 区域代码 SHA-256 Hash 值做加密的 AES 加密安全密钥。

SBK安全密钥有效长度为 256-bits,只能被写入一次,无法被读出

如要更新此SBK安全密钥,只能做全芯片擦除后再做更新的操作

一定要有配置过SBK,后续的Secure Boot验证流程才可能会成功

IB – Information Block

Information Block (IB) 为一块被写在 Secure APROM 后面的数据区块。

区块内容记录着被 Secure Boot 验证的受保护代码存放位置,以及一组 256-bits 的数字检查码。此 256-bits 数字检查码为受保护代码的 SHA-256 Hash 值再使用 Secure Boot Key (SBK) 做 AES-256 加密后的结果。

IB被记录在 Secure APROM 最后的 144 bytes

最多可配置 6 组受Secure Boot验证的代码区域,

IB内容内有一组checksum数据,可让Secure Bootloaer判断这组IB数据的正确性

如果没有正确的IB数据区块,Secure Bootloader将不会执行 Secure Boot验证流程

Secure Region Lock

当系统安全属性有被配置为开启 Secure 区域保护时,Secure Bootloader 才会执行Secure Boot 验证。此时系统内的 Secure 区域代码将不能经由 ICE 界面被存取。

将SCRLOCK[7:0] 或是 ARLOCK[7:0] 任一组配置区改为非 0x5A后,Secure 区域代码将无法被 ICE 界面存取

只能做全芯片擦除后才可以解除Secure区域的保护

在没有开启Secure区域保护的系统里, Secure Bootloader将不会执行 Secure Boot验证流程

Secure Boot 验证流程

下列步骤会说明 Secure Bootloader 执行 Secure Boot 验证的流程。

判断是否有开启 Secure 区域保护功能

判断是否有正确的IB 区块

依据 IB区块内的资料,判断要被保护代码的SHA-256 Hash值是否正确

如果代码的SHA-256 Hash值比对正确,CPU将会跳去执行这段代码。如果Hash值比对错误,则Secure Bootloader会进入USB/UART1 command模式,等待接收并处理 USB/UART1 command。

下列流程图将说明 Secure Bootloader启动后执行 Secure Boot 验证到最终执行 Trusted Boot Code 的过程,以及在 Secure Boot 验证过程中出现错误时的处理方式。

wKgZomUD6oeAEgiTAAA1NNjwDT0497.png

USB/UART1 Command 模式说明

M2351 Secure Bootloader 除了可执行 Secure Boot 验证外,另一个功能为进入 USB/UART1 command 模式做代码的更新和配置区的设定。

透过 PC 端的 Nuvoton NuMicro® Secure ISPTool 即可和 Secure Bootloader 内的 USB/UART1 command 模式做传输。

本章节将会对 USB/UART1 command 模式做基本的介绍。

USB 界面

在 M2351 Secure Bootloader 提供的 USB command 模式内,用户无需做任何事先的配置,只要透过 USB 线和 PC 端的 Secure ISPTool 做连接后即可正常工作。

UART1 界面

在使用 M2351 Secure Bootloader 提供的 UART1 command 模式前,则需将目前芯片 UART1 的脚位和 PC 串口做连接,之后便可和 Secure ISPTool 做正常联机。

可透过更改配置区CONFIG3[2:0] 来决定 UART1 command模式的脚位:

000:UART1_TXD (PB.7),UART1_RXD (PB.6)

001:UART1_TXD (PA.9),UART1_RXD (PA.8)

010:UART1_TXD (PF.0), UART1_RXD (PF.1)

011:UART1_TXD (PB.3),UART1_RXD (PB.2)

Others:UART1_TXD (PA.3),UART1_RXD (PA.2)

UART1/USB Command 流程

下列流程图说明在 Secure Bootloader 程序内的 UART1/USB Command 模式和 PC 端的 Secure ISPTool 联机后的主要处理流程。

wKgZomUD6oiACnwAAABAnAmqmoU673.png

以上透过 M2351 Secure Boot 验证的程序为例,详细解释系统开发商如何确保必须要受到保护的开机代码没有被更改,意即可以确认系统启动后的行为都在程序开发者的规划内,进而可以达到数据不被窃取的目的。另由于M2351系列为带TrustZone功能,对Non-secure 程序开发者而言,另可以使用 Secure Bootloader 提供的 Non-secure callable API 来实现对 Non-secure 内存的读写和其他配置区的设定。不需要 Secure 程序开发者额外提供这些应用的 API 给 Non-secure 程序开发者使用。

而终端产品的应用可能是没有预留 ICE 脚位的。此时如果有需要做代码的更新,即可以执行 Secure Bootloader Non-secure callable API 所提供的 USB/UART1 command模式和 PC 端的Nuvoton NuMicro® Secure ISPTool 来实现代码的更新。

欢迎关注新唐的产品官网以获取更多的讯息,我们也会继续介绍M2354系列的安全启动做法。

来源:新唐MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

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

    关注

    48

    文章

    7542

    浏览量

    151309
  • ROM
    ROM
    +关注

    关注

    4

    文章

    563

    浏览量

    85731
  • 软硬件
    +关注

    关注

    1

    文章

    294

    浏览量

    19198
收藏 人收藏

    评论

    相关推荐

    stm32boot0和boot1对应哪个p引脚

    STM32系列微控制器是一种广泛应用于嵌入式系统领域的32位微控制器。在STM32系列微控制器中,BOO
    的头像 发表于 08-22 09:40 2893次阅读

    YTM32的HA系列微控制器启动过程详解

    HA系列微控制器基于Arm Cortex-M7处理内核,集成了Security Boot的功能。Security
    的头像 发表于 07-15 09:24 409次阅读
    YTM32的HA<b class='flag-5'>系列</b><b class='flag-5'>微控制器</b>启动过程详解

    MCX N系列微控制器适用于安全、智能的电机控制和机器学习应用

    学习应用。 NXP全新MCX N系列微控制器搭载Arm Cortex-M33 CPU,配备智能外设和加速、通信和信号处理功能,可扩展性强,易于开发。MCX N的低功耗高速缓存提高了系
    的头像 发表于 06-05 09:06 1066次阅读

    CY95710M系列和CY95710L系列8FX系列微控制器之间的区别?

    我想知道 CY95710M 系列和 CY95710L 系列 8FX 系列微控制器之间的区别。 我查看了各自的数据表,但没有发现任何不同之处。
    发表于 06-04 06:48

    中微半导体推出CMS32M67电机控制系列微控制器

    中微半导体(深圳)股份有限公司近日宣布,其最新研发的CMS32M67电机控制系列微控制器已正式推向市场。这款微控制器基于先进的Arm Cor
    的头像 发表于 05-11 14:58 1270次阅读

    英飞凌宣布与ThistleTechnologies技术整合

    全球半导体巨头英飞凌科技宣布,其OPTIGA™ Trust M安全控制器已成功整合Thistle Technologies的Verified Boo
    的头像 发表于 05-07 15:03 459次阅读

    磐启XNS1042软硬件资料

    德赢Vwin官网 网站提供《磐启XNS1042软硬件资料.zip》资料免费下载
    发表于 05-06 10:35 4次下载

    新唐科技推出一款NuMicro M091系列小尺寸高整合模拟微控制器

    面对智慧工厂传感升级需求,新唐科技推出NuMicro M091系列小尺寸高整合模拟微控制器
    的头像 发表于 03-25 11:33 644次阅读

    恩智浦推出全新面向工业与物联网应用的MCX微控制器产品组合

    恩智浦推出全新面向工业与物联网应用的MCX微控制器产品组合,赋能安全边缘计算,其中MCX N系列为用户带来高能效多任务处理、AI加速、智能外设与灵活的开发体验。
    的头像 发表于 03-21 13:33 1680次阅读
    恩智浦推出全新面向工业与物联网应用的MCX<b class='flag-5'>微控制器</b>产品组合

    32位 ARM® Cortex®-M0+ 微控制器PY32L020系列数据手册

    德赢Vwin官网 网站提供《32位 ARM® Cortex®-M0+ 微控制器PY32L020系列数据手册.pdf》资料免费下载
    发表于 01-19 16:58 3次下载

    Nuvoton的M2351板子,尝试启动Debugger时,显示ICE设备找不到怎么解决?

    Nuvoton的M2351板子,已经安装了Nuvoton的USBdriver, 可以用KEIL编译blinky demo app, 也可以用Drag Drop写入新的demo app,也可以正常运行
    发表于 01-17 08:23

    智能集成:整合模拟元件和ARM微控制器内核,解决棘手嵌入式系统问题

    智能集成:整合模拟元件和ARM微控制器内核,解决棘手嵌入式系统问题
    的头像 发表于 01-05 18:18 711次阅读
    智能集成:<b class='flag-5'>整合</b>模拟元件和ARM<b class='flag-5'>微控制器</b>内核,解决棘手嵌入式系统问题

    芯海科技推出CS8M320系列经济型信号链微控制器

      近日,芯海科技公司向广大客户发布了一款全新的经济型信号链微控制器——CS8M320(以下简称为M320)系列产品。
    的头像 发表于 12-27 13:54 891次阅读