功能描述
本章节描述 CE 模块内部的重要功能和组件。
对称密钥算法
- AES 算法,支持下列模式:
- ECB
- CBC
- CTR
- XTS
- CTS
- DES/ TDES 算法,支持下列模式:
- ECB
- CBC
TDES 算法具体实现为 TDES-EDE,支持三种密钥长度,分别对应使用 1、2、3 个 64-bit 子密钥的场景:- 64 bit
- 128 bit
- 192 bit
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 内部的非对称密钥算法实现,仅支持 RSA 算法,以算子形式实现。因此在使用非对称密钥算法时,需要指定具体算子,并且提供算子对应的操作数。操作数通过指定的位置输入到 CE 的算法处理单元。
RSA 算法使用模幂算子,共有三个操作数和一个输出:
- P、e 和 N 对应三个操作数。
- C 对应输出。
-
1024 bits
-
2048 bits
-
N - Modulus
-
e - public Exponent
-
d - private Exponent
公钥加密,私钥解密运算公式:
- P、C 分别表示明文和密文。
消息摘要算法
-
MD5 算法
-
SHA 算法
-
使用 SHA1、SHA256 的 HMAC 算法
- TRNG 算法。
随机数的生成过程中,硬件使用 SHA256 算法对产生的随机数进行处理,使得比特分布的随机性更高。 因此 TRNG 也归类到消息摘要算法单元。
消息摘要算法支持使用算法规定的默认初始化向量值,也支持用户配置初始化向量值。
-
MD5 算法的初始化向量,输入时使用小端序;
-
其他算法的初始化向量,输入时使用大端序。
任务和处理
CE 以任务的方式处理运算请求,支持以任务链的形式将一个运算请求分拆为多个链接在一起的子运算任务。
CE 内部的三个算法单元,可以并行处理各自的运算任务,但是一个算法单元每次仅接受一个任务链的处理请求,完成之后, 继续处理下一个任务链。因此软件在发起运算请求之前,需要检查对应的算法单元是否空闲。

硬件安全密钥
CE 模块包含一块内部专用的安全 SRAM,用于存放密钥。保存在安全 SRAM 中的密钥称为硬件安全密钥 (HSK)。
安全 SRAM 的大小为 1 KB,由软件驱动完成具体空间的分配和管理,CE 模块仅使用该区域中的数据。安全 SRAM 只能被 CE 模块访问,因此保存在其中的密钥安全性高,外界无法窥探。
- 必须以 64 bit 为单位分配。
- 仅 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 地址。