英飞凌 TC3XX单片机HSM内核开发-Secure Boot(五)

ROM固件和启动过程

AURIX 芯片,带有硬件安全模块 (HSM) 的芯片,包含两个 ROM 固件:TriCore(CPU0) 的启动软件 (SSW) 和 HSM 的启动系统 (BOS)。这些固件不共享相同的指令集架构 (ISA)。

1. 芯片启动

AURIX芯片冷启动和热启动时的启动顺序受专用引脚值影响,这些引脚控制硬件设置以及特定的用户配置位 (UCB)。CPU0 从其 Boot ROM 执行 SSW 代码, CPU0 从 Boot ROM 运行,在CPU0启动的过程中启动其他核。如果启用了 HSM 的 UCB 控制,则 BOS 在 HSM 上执行。SSW 继续执行,直到到达等待 HSM 启动并通知TRICORE(SSWWAIT 位设置为TRUE)。

2. 硬件配置 (HWCFG) 引脚

设备启动由 HWCFG 引脚和 UCB 设置控制,决定设备是从闪存启动、进入备用启动模式 (ABM) 还是引导模式,以及 HSM 的配置。
在这里插入图片描述

3. 非易失性用户配置位 (UCB)

启动软件 (SSW) 根据以下内容初始化设备:

  • 存储在专用闪存位置(UCB)中的信息
  • 特定寄存器/内存位置中特殊位/字段的当前状态
  • 触发 SSW 执行的事件类型(上次重置事件)
  • 外部配置引脚上应用的值(可由软件覆盖)

具体细节参考对应的手册。

4. 时钟源和频率

在上电和系统重置后:

  • 系统运行在备用时钟 (100MHz, ± 2%)
  • 外部晶振 (OSC) 通过软件或 BMI 设置启用
  • 快速时钟 (SRI-Bus 和 CPU) 以备用时钟频率运行
  • 外设和系统外设总线 (SPB) 以备用时钟频率的一半运行
  • 默认的 HSM 核心频率由 SPB 频率直接派生,以其最大工作频率的一半运行

默认情况下,HSM 核心频率直接来源于系统外设总线(SPB)频率,这导致其以最大工作频率的一半运行,这实际上将其性能降低到最大性能的一半。用户软件可以配置系统的工作频率,使其运行在最大性能上。内部备用时钟是 PLL 的时钟源,选择内部时钟作为系统 PLL 的源是为了防止时钟干扰攻击。由于内部时钟的准确度为 ±2%,将时钟配置如下:CPU0 时钟(SRI 频率)为 290MHz,SPB 频率为 97.6MHz。

为了确保系统在最高频率下稳定运行,HSM代码会基于这一假设来配置闪存的等待状态。

5. HSM (ROM) 固件概述

HSM 的启动系统 (BOS) 存储在启动 ROM 中,包含用于内部测试、生产和启动行为的所有必要功能。某些配置信息,例如模块特定配置、AES 的安全密钥等,存储在位于闪存存储器 HSM 专属 1 KB 扇区中的 HSM 配置区域中。这些配置信息使用存储在 BOS-ROM 中的掩码专用密钥进行加密。此外,配置数据受到加密校验和的保护。
注意:仅当 HSM 通过其相应的 UCB 设置启用时,HSM BOS 才运行。
对于每种类型的 HSM 重置,HSM 硬件执行以下步骤以正确启动 BOS:

  • 重置所有寄存器(根据适用的冷重置或热重置条件)
  • 读取位于 BOS-ROM 偏移量 0 的 BOS 向量表。根据这些信息,HSM 硬件初始化堆栈指针并跳转到重置向量位置。
    在这里插入图片描述
    在启动初始化期间,基本准备工作由 BOS 完成。首先,配置中断和异常处理。然后,BOS 检查 HSM 配置区域的加密校验和的正确性。为此,使用 AES 模块为加密的 HSM 配置数据计算一个 16 字节的哈希值。AES 在 CBC 模式下使用,密钥和初始向量取自 BOS-ROM。
    HSM 配置区域的数据字节使用 AES 模块在 ECB 模式下使用存储在 BOS-ROM 中的掩码专用密钥解密。然后加载 TRNG 配置并启动 TRNG。
    之后,前两个 AES 密钥(AesKey0 和 AesKey1)从明文 HSM 配置区域复制到 AES 硬件模块,并锁定 AES(前两个密钥)。实施方式确保 AES 密钥不必临时存储在本地 RAM 中。此时,本地 RAM 中的所有安全相关数据都会被覆盖,BOS 转移到加载在 HSM 闪存存储器空间中的用户操作系统。
6. 主机 SSW 与 HSM 用户代码之间的信息交换

如果设备启用了安全启动(设置了 DMU_SP_PROCONHSMCFG.SSWWAIT)且没有在复位后请求暂停,SSW 将延迟执行主机用户代码,等待 HSM 的确认。在启动阶段,SSW 流程由 HSM 用户代码处理。

  • 后台安全启动:HSM 用户代码立即设置 HSM2HTF.0,SSW 跳转到主机用户代码,同时进行安全启动检查。
  • 前台安全启动:HSM 用户代码在安全检查完成且无安全违规后设置 HSM2HTF.0,SSW 直到检查完成才执行主机用户代码。如果存在安全违规,主机用户代码不会启动。

在前台安全启动的情况下,HSM 用户代码可以选择性地向 HSM2HTS 写入种子值。SSW 使用此种子值生成一些噪声,以掩盖功率曲线。一旦设置了 HSM2HTF.0,噪声生成就会结束。

在这里插入图片描述

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

美好生活丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值