4.1 概述
本章提供安全功能、特性的概述以及安全组件的高级描述。
安全子系统 (SECO) 包含以下组件:
![](https://i-blog.csdnimg.cn/blog_migrate/cbb9796cf157cf574e1aac4d6daa302d.png)
有关安全子系统组件的更多详细信息,请参阅芯片的安全参考手册。
安全子系统的高级框图如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/9a5950ad1b172ebc4f4d142fc5b6297a.png)
图 4-1 高级安全框图
SECO 支持以下功能:
• 安全子系统 (SECO)
• 隔离式安全微控制器
• 支持 133MHz 的节能 M0+ 内核
• 具有多达 32 个 IRQ 的中断控制器
• 通过经过验证的调试模块 (ADM) 进行安全控制
• 专用80KB ROM、80KB RAM,带纠错码 (ECC)
• 专用一次性可编程 (OTP) 密钥
• 共享外设:
• 硬件中的 4x 消息单元 (MU)
• 实时时钟 (RTC) 和安全 RTC (SRTC) 计时器( SNVS)
• DTCP、HDMI RX/TX 和 IEE 的私钥总线接口
• 加密加速和保证模块 (CAAM):
• 两个作业环供应用程序核心、CM4 使用
• 安全的纯硬件加密密钥管理
• 加密启动
• DEK 包括 IV
• 基于保险丝值的版本控制检查
• 二进制和素数字段函数
• 制造保护
• 签名生成和验证
• RSA 1024/2048/3072/4096;
• ECDSA p256/p384/p521
• 用于 V2X 性能的 64 位乘法器(750+ NIST P-256 签名/秒)
• 椭圆曲线引擎支持 NIST、Brainpool、Curve25519
• 对称引擎:
• AES 128/196/256
• AES 与模式:ECB、CBC、CFB、OFB、CTR
• 数据加密标准 (DES)、3DES
• 加密哈希引擎
• SHA-1、SHA-2 224/256/384/512、MD5
• 消息验证码
• 哈希消息验证码(HMAC)
• AES-CMAC
• AES-XBC-MAC
• AES-CCM
• AES-GCM
• 随机数生成 (RNG4):
• 真正的随机熵源
• 确定性随机位生成器(基于哈希)
• 安全非易失性存储 (SNVS):
• 纽扣电池电源域
• 安全实时时钟 (RTC)
• 10 个外部篡改引脚,可配置为支持 5 个活动网格
• 用于温度/电压/频率篡改检测的传感器
• 256位安全参数,在检测到篡改时立即擦除
• 64 位单调计数器
• 安全的 64KB RAM:
• 资源域和 TrustZone 支持的总线属性访问控制
• 自动擦除和篡改访问限制
• 基于 R/W 的安全访问分区
• 16 个分区和 4KB CAAM 页
• DID 和 TrustZone 的内部访问控制,权限由 SECO 在运行时设置
• CAAM 专用总线到安全 RAM:
• 与 SoC 总线路径机制隔离
• 从作业环提供 DID 和 TrustZone 访问控制
• 由 SECO 管理,但由所有人使用
• 一次性可编程 (OTP):
• 用于加速安全限制和调试功能的早期调试和启动信号
• 用于加密启动和通用OTP的访问控制修订控制
• 存储安全敏感参数
• 生命周期包括 Fab、Open、NXP Closed (NXP 固件已锁定)、OEM 已关 闭(OEM 已关闭部件)、部分字段返回和完整字段返回
• 已验证调试支持 (ADM):
• 基于熔丝、启动时间和验证程序的调试访问策略
• 安全性调试和跟踪方面
• 隔离调试架构的域分离
• 核心复合体之间调试期间的隔离
• 支持 CoreSight 身份验证接口
• OTP 安装的分阶段过程允许早期调试和测试程序
• 具有八个加密上下文的内联加密
• AES-XTS DRAM/SRAM 加密/解密
• AES-CTR FlexSPI/QSPI 解密
• AES-CTR 通信流支持(直接芯片到芯片)
• HDCP 身份验证引擎:
• 支持 HDCP 2.x 和1.4 发射器、接收器和中继器
• 每个 HDMI RX、TX 和 PHY 中的专用 HDCP 控制器和密码器
• 用于密钥加载的安全接口
• 经过身份验证的固件
• 安全视频路径支持
• XRDC2 支持在启动和运行时隔离异构内核
4.1.1 安全微控制器
SECO 子系统包括一个专用于特定安全功能的微控制器。它有一个带中断控制器、ARM DAP 总线、80KB ROM 和80KB RAM 的 M0+ 平台。它具有连接到系统外围设备和安全 RAM 的总线,以及连接到 SECO-only 保险丝和加密密钥总线(例如加载内容设备密钥)的专用总线。
注意:SECO M0+ 无法访问外部总线(安全输出),除非通过 CAAM DMA。
完全受安全微控制器控制的是 uC 平台、RAM、ROM、CAAM 管理器页面、看门狗、两个作业环、SNVS 状态机、ADM系统控制、私钥总线、许多与安全相关的保险丝、B-四个消息单元的一侧,如果需要,安全 RAM 内存分区。
安全微控制器作为资源提供消息单元的 A 侧、两个 CAAM 作业环,如果需要,还提供安全 RAM 分区,这些分区仍然在逻辑上与安全微控制器隔离。它还可以提供安全性SoC 上的主机和其他内核使用它们的消息传递单元和关联的中断服务。
4.1.2 消息单元
子系统有四个平台上的消息单元(MU)来与SCU 和其他内核进行通信。一个MU仅用于与SCU通信,而另外三个MU则用于与其他核心通信。当 SECO 收到来自其中一个 MU 的中断时,它会去相应的 MU 接收命令。
4.1.3 ADM
Authenticated Debug Module (ADM) 是与调试系统和熔丝配置一起工作以提供安全措施的模块。它在启动时和运行时从各种来源(例如引脚、OTP 熔丝和 SCU、DAP 和 JTAG)接收控制信号,以确定、限制和指示调试组件的使用。根据NXP 和OEM 要求,允许或禁止某些调试功能。
ADM 支持 CoreSight 身份验证接口和 OTP安装的分阶段过程,以允许早期调试和测试过程。
ADM 块还支持以下功能:
• 调试安全控制
• SDP 安全控制
• JTAG 安全控制
• 内容密钥安全控制
• 芯片生命周期安全控制
4.1.4 SNVS
SNVS 为安全的非易失性存储提供了基础。它分为两部分,低功率部分 (SNVS_LP) 和高功率部分 (SNVS_HP)。
SNVS_HP和 SNVS_LP 位于两个不同的电源域中。SNVS_HP 处于芯片电源域。SNVS_HP 提供SNVS_LP 和系统其余部分之间的接口。SNVS_HP 具有以下功能单元:
• 系统安全监视器 (SSM)
• 可归零主密钥编程机制
• 主密钥控制块
• 带警报的非安全实时计数器
• 控制和状态寄存器
SNVS_LP 块位于始终通电域中。它旨在消耗非常低的功率,约为个位数微安 (uA)。SNVS_LP 具有以下功能单元:
• 可归零主密钥
• 带警报的安全非翻转实时计数器
• 非翻转单调计数器
• 主动和被动篡改检测
SNVS 包括安全状态机 (SSM) 和安全违规检测电路与软件一起工作以确定芯片当前是否处于安全状态。
4.1.4.1 篡改检测
篡改、电压和温度监控器连接到 SNVS 安全违规端口。这些表示检测到超出范围的值。此外,外部引导指示和活动调试信号连接到 SNVS 安全违规端口。这些表明设备未从 ROM 引导,或者 JTAG 或 DAP 处于活动状态。这些信号可防止在设备启动时进入安全状态,或者如果已进入安全状态,则这些信号的断言会将状态切换为故障状态,并且信号将发送到CAAM、CPU 和内部寄存器以阻止访问和清除安全 RAM 和加密密钥寄存器中的秘密。最多有 5 个活动篡改(5 个输入和 5 个输出)或 10 个无源篡改(仅输入)。
4.1.5 CAAM 和安全RAM
CAAM 用于支持一组行业标准硬件加速器。它支持哈希函数的启动时间加速、加密密钥保护、受保护的视频路径(来自软件)支持、制造保护和公钥加密加速。CAAM 还与 TrustZone、资源域和系统虚拟化访问控制进行互操作。
CAAM 加速器和安全 RAM 为安全密钥处理和卸载计算密集型加密过程提供了基础。这些加速器包括用于对称和非对称加密、加密散列和随机数生成的最常见算法和模式。
4.1.6 IEE (Inline Encryption/Decryption Engine)
Inline 加解密引擎(IEE)对软件和 I/O 外设透明地执行加密和解密,因此在事务处理时,发起设备(Core、DMA、I/O)不需要与引擎本身接触。相反,发起设备只是简单地读取或写入加密内存。这允许即时加密和解密以安全存储数据和代码。
4.1.7 OCOTP
片上一次性可编程 (eFuse) 控制器 (OCOTP_CTRL)从保险丝盒加载保险丝并将其存储在软件可读寄存器和/或硬件可见信号中。在某些情况下,与安全相关的熔丝可作为OCOTP_CTRL 内存映射中的软件可见熔丝直接使用。在其他情况下,与安全相关的保险丝是设计逻辑使用的硬件信号,或者它们作为硬件信号发送到ADM 专用接口,在那里它们只能由 SECO 访问。
OCOTP_CTRL 提供:
• 能够读取和覆盖影子缓存中的熔丝值
• 能够直接读取熔丝
• 能够通过软件或 JTAG 写入(编程)熔丝
• 能够为选定的熔丝字段锁定熔丝