打印
[AURIX™]

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

[复制链接]
862|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-8-12 08:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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,噪声生成就会结束。



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_36750998/article/details/140818104

使用特权

评论回复
沙发
Amazingxixixi| | 2024-10-30 16:43 | 只看该作者
不同架构的东西竟然可以柔和到一起

使用特权

评论回复
板凳
中国龙芯CDX| | 2024-10-30 19:18 | 只看该作者
HSM 的启动系统 (BOS) 存储在启动 ROM 中,包含用于内部测试、生产和启动行为的所有必要功能。

使用特权

评论回复
地板
小夏天的大西瓜| | 2024-10-30 19:52 | 只看该作者
HSM内核安全开发

使用特权

评论回复
5
小小蚂蚁举千斤| | 2024-10-30 23:29 | 只看该作者
HSM内核开发安全系统稳定

使用特权

评论回复
6
kmnqhaha| | 2024-12-2 16:45 | 只看该作者
SSW和BOS不共享相同的指令集架构需要分开执行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2028

主题

15903

帖子

14

粉丝