Edit online

算法描述符

12 Jun 2024
Read time: 9 minute(s)

算法描述符区域,用于描述当前任务的算法信息和参数。

以下以算法描述符的大小固定为 36 个字节为例。不同算法需要的输入参数各有不同,对于任务描述符中定义的算法描述符位域,具体的算法描述符根据需要给出具体定义。

1. 算法标记值列表
算法标记值 描述
0x00 AES-ECB
0x01 AES-CBC
0x02 AES-CTR
0x03 AES-XTS
0x04 AES-CTS-CBC
0x10 DES-ECB
0x11 DES-CBC
0x20 TDES-ECB
0x21 TDES-CBC
0x30 RSA
0x40 SHA-1
0x41 SHA-224
0x42 SHA-256
0x43 SHA-384
0x44 SHA-512
0x45 MD5
0x46 HMAC-SHA-1
0x47 HMAC-SHA-256
0x50 TRNG

AES-ECB 描述符

2. AES-ECB 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0 Algorithm tag: AES-ECB

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

Reserved 28 Bytes -

AES-CBC 描述符

3. AES-CBC 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0 Algorithm tag: AES-CBC

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

IV address 31:0 初始化向量地址

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

Reserved 24 Bytes -

AES-CTR 描述符

4. AES-CTR 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0 Algorithm tag: AES-CTR

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

Counter input 31:0 初始化计数值地址

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

Counter output 31:0 计数值输出地址

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

输出下一个数据块的计数值。

Reserved 20 Bytes -

AES-XTS 描述符

5. AES-XTS 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)

128bit 对应 AES-256-XTS, 256bit 对应 AES-512-XTS。

19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0

Algorithm tag: AES-XTS

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

Tweak address 31:0 XTS Tweak 地址

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

数据大小应为 128bit。

Reserved 24 Bytes -

AES-256-XTS 使用两个 128-bit 密钥进行运算,因此使用 AES-256-XTS 算法时,应该选择密钥大小为 128bit, 但是提供的密钥长度应该为 256 bits;同样,使用 AES-512-XTS 时应选择密钥大小为 256bit,但是提供的密钥长度应该为 512bit。

AES-CTS-CBC 描述符

6. AES-CTS-CBC 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0

Algorithm tag: AES-CTS-CBC

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

IV address 31:0 初始化向量地址

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

Reserved 24 Bytes -
注: CE 中 AES-CTS-CBC 按照 CS3 实现。使用 AES-CTS-CBC 算法时需注意输入的数据长度必须大于等于 128bit。

DES-ECB 描述符

7. DES-ECB 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0 Algorithm tag: DES-ECB

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

Reserved 28 Bytes -

DES-CBC 描述符

8. DES-CBC 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0 Algorithm tag: DES-CBC

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

IV address 31:0 初始化向量地址

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

Reserved 24 Bytes -

TDES-ECB 描述符

9. TDES-ECB 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0 Algorithm tag: TDES-ECB

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

Reserved 28 Bytes -

TDES-CBC 描述符

10. TDES-CBC 描述符
字段 位域 描述
Algorithm config 31:24 -
23:20
Key size,密钥大小
  • 0x00: 64(不支持)
  • 0x01: 128
  • 0x02: 192
  • 0x03: 256
  • 0x04: 512(不支持)
  • 0x05: 1024(不支持)
  • 0x06: 2048(不支持)
19:16
密钥源的选择
  • 0x00: User/RAM
  • 0x01: eFuse SSK
  • 0x02: eFuse HUK
15:9 -
8
Direction,运算方向
  • 0x00: Encryption
  • 0x01: Decryption
7:0 Algorithm tag: TDES-CBC

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

IV address 31:0

初始化向量地址

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

Reserved 24 Bytes -

Message Digest 描述符

11. Message Digest 描述符
字段 位域 描述
Algorithm config 31:12 -
11 Input IV Flag,初始化向量标记
  • 0x00: 使用内部默认的初始化向量值
  • 0x01: 使用用户提供的初始化向量值
10:8 -
7:0 Algorithm tag

具体参考 算法标记值列表

Key address 31:0
密钥地址

仅当密钥源类型为 RAM 时配置。

地址应是 SRAM/ DRAM 或 Secure SRAM 的地址

仅 HMAC 算法需要配置,为任意长度数据。

IV address 31:0 初始化向量地址(Input IV Flag 为 1 时)

地址应是 SRAM/ DRAM 的地址。

地址应 8 字节对齐。

初始化向量的长度,应参考对应算法的规定。

Reserved 24 Bytes -

PKC 算子描述符

12. PKC 算子描述符
字段 位域 描述
Algorithm config 31:24 -
23:20 Operand size,操作数大小
  • 0x00: 64(不支持)
  • 0x01: 128(不支持)
  • 0x02: 192(不支持)
  • 0x03: 256(不支持)
  • 0x04: 512
  • 0x05: 1024
  • 0x06: 2048
19:8 -
7:0 Algorithm tag: RSA

具体参考 算法标记值列表

Modulus address 31:0 模(n) 的地址

地址应是 SRAM/ DRAM/ Secure SRAM 的地址。

地址应 8 字节对齐。

Exp address 31:0 指数(即素数 d、e)的地址

地址应是 SRAM/ DRAM/ Secure SRAM 的地址。

地址应 8 字节对齐。

Reserved 24 Bytes -

TRNG 描述符

13. TRNG 描述符
字段 位域 描述
Algorithm config 31:8 -
7:0 Algorithm tag: TRNG

具体参考 算法标记值列表

Reserved 32 Bytes -