功能描述
3 Mar 2025
Read time: 2 minute(s)
CE 模块内部含有多个重要功能和组件,包括:
- 对称密钥算法加速单元:支持多种类型的对称密钥算法。
- 消息摘要算法加速单元:支持使用算法规定的默认初始化向量值,也支持用户配置初始化向量值。
- 专用的安全 SRAM,用于存放密钥。
- 支持以任务链的形式将一个运算请求分拆为多个链接在一起的子运算任务。一个任务链中的所有任务,算法类型必须相同。
对称密钥算法
CE 内部包含对称密钥算法加速单元,支持以下类型的对称密钥算法:
- AES 算法,支持下列模式:
- ECB
- CBC
- CTR
- DES/ TDES 算法,支持下列模式:
- ECB
- CBC
TDES 算法具体实现为 TDES-EDE,支持三种密钥长度,分别对应使用 1、2、3 个 64-bit 子密钥的场景:- 64 bits
- 128 bits
- 192 bits
TDES 算法的基础是 DES 算法,DES 算法使用 56-bit 长度的密钥,对于输入的 64-bit 密钥数据,每个字节只取高 7 位。
使用 TDES 算法时:- 当输入 64-bit 长度的密钥时,TDES 算法单元实际执行经典 DES 算法运算。
- 当输入 128-bit 长度的密钥时,TDES 算法单元将输入密钥分为两个子密钥 K1 和 K2,并且使用 K1-K2-K1 分别执行 Encrypt-Decrypt-Encrypt 三次 DES 运算。
- 当输入 192-bit 长度的密钥时,TDES 算法单元将输入密钥分为三个子密钥 K1、K2 和 K3,并且使用 K1-K2-K3 分别执行 Encrypt-Decrypt-Encrypt 三次 DES 运算。
消息摘要算法
CE 内部的消息摘要算法加速单元包括:
-
MD5 算法
-
SHA 算法
-
使用 SHA1、SHA256 的 HMAC 算法
- TRNG 算法
消息摘要算法支持使用算法规定的默认初始化向量值,也支持用户配置初始化向量值。
警告:
-
MD5 算法的初始化向量,输入时使用小端序;
-
其它算法的初始化向量,输入时使用大端序。
任务和处理
CE 以任务的方式处理运算请求,支持以任务链的形式将一个运算请求分拆为多个链接在一起的子运算任务。
CE 内部的三个算法单元,可以并行处理各自的运算任务,但是一个算法单元每次仅接受一个任务链的处理请求,完成之后, 继续处理下一个任务链。因此软件在发起运算请求之前,需要检查对应的算法单元是否空闲。

在 CE 对任务的处理中,当 CE
的算法单元没有空闲时,对应的任务需要等待,由软件处理等待。
警告: 一个任务链中的所有任务,算法类型必须相同。
硬件安全密钥
CE 模块包含一块内部专用的安全 SRAM,用于存放密钥。保存在安全 SRAM 中的密钥称为硬件安全密钥 (HSK)。
安全 SRAM 的大小为 1 KB,由软件驱动完成具体空间的分配和管理,CE 模块仅使用该区域中的数据。安全 SRAM 只能被 CE 模块访问,因此保存在其中的密钥安全性高,外界无法窥探。
安全 SRAM 的使用规则如下:
- 必须以 64 bits 为单位分配。
- 仅 CE 可以访问,可以作为 CE 的输入密钥,也可以作为 CE 的输出。
- HSK 只能从其它密钥派生,由 CE 输出到安全 SRAM。
- 不能以任何方式导出安全 SRAM 中的 HSK。即 HSK 不能作为 CE 的输入数据,只能作为 CE 的密钥。
- 通过安全 SRAM 的地址索引使用 HSK。
模块名称 |
基地址 |
地址空间 |
---|---|---|
Secure SRAM |
0x1002_1000 |
1 KB |
仅 CE 可以访问安全 SRAM 的地址空间,CPU 和其它模块无法访问。 CE 访问安全 SRAM 时,只需在任务描述符中直接指定使用的安全 SRAM 地址。