信息安全 (**Security**)
1. 概述¶
1.1. 简介¶
硬件安全引擎HSE_H(Hardware Security Engine)是一个为设备实现信息安全功能的子系统。它针对当前的安全规范为Host CPU和网络加速器提供加密服务。例如,安全硬件扩展SHE(Secure Hardware Extension)、硬件安全模块HSM(Hardware Security Modul)和 E-safety车辆入侵保护应用程序EVITA(E-safety Vehicle Intrusion Protected Application)。
HSE_H 子系统负责在引导过程中,实现在设备上建立信任根(root of trust)。它包括以下功能:
- 使用非对称或对称密钥安全启动客户代码
- 对称和非对称加速器
- 在硬件中支持以下加密功能:
- AES(支持 128 位、192 位和 256 位密钥)
- SHA-1 和 SHA-2
- 纠错码(ECC)
- RSA(最多支持 4096)。
- ARM Cortex-M7 中央处理器
- 真随机数发生器TRNG(True Random Number Generator)
- 伪随机数生成器PRNG(Pseudo Random Number Generator)
- 物理保护(Physical protection)
- FOTA(Firmware Over-the-Air)支持。
此设备通过一些对策来增强对针对平台安全功能(包括:安全启动、安全调试、生命周期和 HSE 服务)的故障注入(fault injection)和旁路攻击(side-channel attacks)的抵抗力。

- 有关工厂提供的固件控制 HSE_H功能的详细信息,请参阅下表中的文档。
- 受出口管制的设备中的客户应用程序代码不支持保密。
参考以下补充手册并将其内容纳入整体用户硬件和软件开发:
| Document identifier | Document Title | Description |
|---|---|---|
| HSEFWRM | HSE Firmware Reference Manual | Describes installation and configuration details of the HSE firmware. |
| HSESIRM | HSE Service API Reference Manual | Security firmware services API reference |
1.2. 安全软件更新¶
为避免昂贵且耗时的服务区(service bay)更新,在必须刷新车辆 MCU 软件的情况下支持无线更新OTA(over the air)。可能需要通过更新来修复一些已知问题或者为车辆提供额外功能。安全子系统支持设备上执行的软件的安全 OTA 更新。例如:HSE 代码、应用程序代码、操作系统和驱动程序,但不支持 ROM 中的引导加载程序。
1.3. 保护车辆网络和消息传递¶
车辆内 ECU 之间的通信对于安全和正确操作是必要的。ECU 之间的消息必须保证真实无误。对网络的攻击可以通过直接连接到网络线路或通过备用通信端口间接进行。安全子系统支持密钥(对称)和公钥(非对称)身份验证协议。由于大量的网络节点、数据速率和消息大小,对称密钥协议是普遍的身份验证选择。
1.4. 安全启动¶
存储在外部闪存中的可执行映像可以在启动时,并且在使用前,通过 HSE 来进行身份验证。多种身份验证方法被支持。例如:RSA-PSS、ECDSA 或 CMAC。安全启动配置分为两类:IVT 以及 HSE 本身的配置。有关详细信息,请参阅引导章节和 HSE 固件参考手册。
1.5. PMIC 设置或配置的附加建议¶
为了确保芯片指定的安全功能,用户软件必须启用外部电源管理PMIC(Power Management IC) 中包含的 LVD/HVD 电路,并确保 LVD/HVD 电平设置在芯片定义的工作条件内。只有在确保所有电压都在其工作范围内后,外部 PMIC 才会释放芯片的上电复位 (POR)。
1.6. 温度监控设置或配置的附加建议¶
为了确保芯片指定的安全功能,用户软件必须启用芯片中包含的温度监控电路。此外,温度阈值水平将设置在符合芯片定义的工作条件。
2. 安全子系统寄存器¶
2.1. 2.1。 安全子系统寄存器描述¶
本节详细介绍了安全子系统寄存器。

- 这些寄存器只支持字访问。
- 对地址偏移量 Ch-1Bh 的任何访问都不会产生传输错误。
2.2. SEC memory map¶
Security_CC 基地址:4007_C900h
2.3. External Debugger Status (EXT_DBGSTAT)¶
指示外部调试器连接。
2.4. HSE GPR 0 (HSE_GPR0)¶
这是一个通用寄存器,每次复位时都会复位。
对该寄存器的访问对于 HSE_H 软件是读/写,对于应用软件是只读。
2.5. HSE GPR n (HSE_GPR1)¶
这是一个通用寄存器,每次复位时都会复位。
对该寄存器的访问对于 HSE_H 软件是读/写,对于应用软件是只读。
2.6. HSE GPR n (HSE_GPR2)¶
这是一个通用寄存器,每次复位时都会复位。
对该寄存器的访问对于 HSE_H 软件是读/写,对于应用软件是只读。
2.7. HSE GPR n (HSE_GPR3 - HSE_GPR11)¶
这是一个通用寄存器,在破坏性复位和 POR 时复位。
对该寄存器的访问对于 HSE_H 软件是读/写,对于应用软件是只读。
3. 消息单元MU(Messaging Unit)¶
3.1. 概述¶
消息单元模块 (MU) 使 SoC 中的两个处理器能够通过 MU 接口传递消息。例如:数据、状态和控制,进行通信和协调。MU 还为一个处理器提供了使用中断向另一个处理器发送信号的能力。
由于 MU 管理可能使用不同时钟的处理器之间的消息传递,所以 MU 必须同步从一侧到另一侧的访问。MU 使用两组匹配寄存器(面向处理器A和面向处理器B)完成同步。
芯片包括了以下 MU 模块实例:
- MU0
- MU1
- MU2
- MU3
3.2. 特征¶
MU 包括以下功能:
- 内存映射寄存器
- MU 作为一个外围设备,连接到处理器A和处理器B侧的外设总线。
- 内核之间的同步消息传输
- 从一个MU端向另一个MU端发送数据或消息,MUA 提供16个发送寄存器和16个接收寄存器。同时 MUB 也提供16个发送寄存器和16个接收寄存器。
- 内核之间的数据消息传输,可以使用 MU两侧提供的传输空(transmit empty)和接收满(receive full)标志。
- 这些发送和接收标志的更新是使用同步机制完成的。在一侧更新标志和在另一侧反映其状态之间存在固有的延迟。
- MU有一个32位的标志数据寄存器,可以用来在两个MU端之间发送标志数据。
- 处理器间中断
- MU 的每一侧(处理器 A 侧、处理器 B 侧)都有 64 个中断源,用于向另一个处理器发送信号。中断可用于通知 RX/TX 事件和处理器之间的通用信号。有32 个可用的通用中断请求和 32 个 RX/TX 中断源。
- 处理器 A 可以向处理器 B 发起不可屏蔽中断。
- 处理器 B 可以向处理器 A 发起不可屏蔽中断。
- MU重置
- 每个处理器都可以使用每个处理器的控制寄存器 (CR) 中的控制位 (MUR) 向整个 MU 发出复位。
- MUR 位是一个自清除位。
功能说明¶
消息传递单元 (MU) 使两个内核(处理器 A 或处理器 B)能够相互通信,方法是相互传递消息/数据信息,并使一个内核能够使用中断唤醒另一个内核。
MU 的处理器 A 和处理器 B 端的消息传递、控制和状态寄存器作为常规外设映射到处理器 A 和处理器 B 内存。MU模块内部的外设数据总线为 32 位宽。
消息传递逻辑与外部存储器结合使用。 有多种消息传递方法可用于实现消息传递协议。 其中一些消息可能表示“已从内存中的偏移量 X 开始写入 N 个字的消息”,或“已读取上一个发送的数据块”。 使消息传递逻辑独立于内存阵列并不局限于预定义的硬件协议。 另一方面,管理消息传递所需的软件简短明了。
大多数消息传递机制是对称的。 它们是重复的,并且在处理器 A 端和处理器 B 端都可用。
消息传递机制是:
- 16个32位的发送寄存器,分别对应到另一方处理器端的16个只读接收寄存器中。这些寄存器可用于传送写入共享存储器的32位字消息(word message)或消息的帧信息,包括:字数,起始地址和消息类型代码。
- 写入发送器侧的发送寄存器会清除发送器侧状态寄存器中的发送器空位(transmitter empty bit),并设置接收器侧状态寄存器中的接收器满位(receiver full bit)。 接收器端的位设置可以选择性地触发接收器端的中断(可屏蔽接收中断)。
- 读取接收器侧的一个接收寄存器会清除接收器侧状态寄存器中的“接收器满”位,并设置发送器侧状态寄存器中的“发送器空”位。 “发送器空”位的设置可以选择性地触发发送器端的中断(可屏蔽发送中断)。
- 32 个通用中断请求标志反映在接收器端的通用状态寄存器 (GSR) 中。
- 32 位标志数据从标志控制寄存器 (FCR) 传送到接收标志数据一侧的标志状态寄存器 (FSR) 寄存器。 标志更新未决位 (SR[FUP]) 在传输标志数据时设置为“1”,并在接收方确认标志数据(标志已更新)时清除。
写入发送寄存器会向接收端发出数据已准备好检索的信号:
- 禁止在未验证数据已取回的情况下再次写入发送寄存器,因为发送方无法知道接收方尝试取回数据的确切时间。
- 在尝试再次写入发送寄存器之前,发送端应等待“发送器空”中断,或轮询发送状态寄存器中的“发送器空”位。 读取接收寄存器向发送器端发出信号,表明数据可以写入该寄存器。
- 禁止在未验证数据已写入的情况下再次读取接收寄存器,因为接收方无法知道发送方尝试写入数据的确切时间。
在尝试再次读取接收寄存器之前,接收方应等待“接收器已满”中断,或轮询接收状态寄存器中的“接收器已满”位。