USER GUIDE / SECURITY / SC AES / OPERATION GUIDE

操作指南

通用模式

AES流程
图 1 AES 流程
软件配置实例
图 2 软件配置实例

TestVectors:

128bitKey: 0x2b7e1516 28aed2a6abf71588 09cf4f3c
IV: NULL
DataInput: 0x3243f6a8885a308d 313198a2 e0370734
Encoding Output: 0x3925841d02dc09fbdc118597 196a0b32

128bitKey: 0x2b7e1516 28aed2a6abf71588 09cf4f3c
IV: 0x0001020304050607 08090a0b 0c0d0e0f
DataInput: 0x6bc1bee2 2e409f96e93d7e117393172a
Encoding Output: 0x7649abac8119b246cee98e9b 12e9197d

DMA 模式

当使用 DMA 模式传输大文件时,文件可以被分段送入 AES 进行加解密,利用 PDMA 更新 AES 每一段的 ASSA、ASSTC、ASDA、ASDTC 寄存器即可由硬件自主实现文件加解密;如果文件不需要分段传输,ASSA、ASSTC、ASDA、ASDTC 也可以通过 CPU 配置一次即可。无论是 PDMA 还是 CPU 配置 ADDR 和 TC 寄存器,必须保证先配置 ADDR,再配置 TC 的顺序(其中 ASCR.DMAS 在地址和数据量寄存器配置前/后置 1 都可以)。具体传输流程如下:

DMA模式流程
图 3 DMA 模式流程

当在使用 PDMA 配置 ADDR 和 TC 时,要正确执行无描述符 DMA 传输,请参考 PDMA 寄存器表执行以下步骤:

  1. 检查 PDMA 控制器的状态是否可用,即对于全局控制 (DMAC),确保 DMAC.AR=0 和 DMAC.HLT=0;然后对于预期通道 n,确保 DCSn.AR=0、DCSn.HLT=0、DCSn.TT=0、DTCn=0;
  2. 对于使用的通道 n,正确初始化 DSAn、DTAn、DTCn、DRTn、DCSn、DCMn;
  3. 设置 DMAC.DMAE=1 和 DCSn.CTE=1 以启动 DMA 传输:

对于具有自动请求(DRTn.RT=0x8)的通道,当 DCSn.CTE 位和 DMAC.DMAE 位设置为 1 时,传输将自动开始。而对于具有其他请求类型的通道,只有当传输请求被 DMA 检测到时,传输才会开始。

对于任何通道 n,每成功传输一个数据单元,DTCn 值就会递减 1。当指定数量的传输数据单元完成后(DTCn = 0),传输正常结束。同时,如果 DCMn.TIE=1,DIRQP 的相应位将被置 1,以发出中断请求。但是,在传输过程中,如果发生 DMA 地址错误,则应暂停传输。

EFUSE user_key 模式

  1. 复位读
  2. 复位后,AES 读取 EFUSE 中 user_key/chip_id 段。可以配置 ASCR.EKEY_MODE 以及 ASCR.ID_FUSION 决定 key 的使用形式。如果 ASSR.EKEY_RSTD 读为 1,代表 EFUSE 复位读完成,可以配置 ASCR.EKEY_USE 为 1 使用 user_key 加解密。
  3. CPU 配置读
  4. 配置 ASCR.EKEY_RD /EID_RD 为 1 开始读取 EFUSE 中 user_key /chip_id 段(会比复位读消耗更多时间)。如果 ASSR.EKEY_RDD/EID_RDD 读为 1,代表 EFUSE 读完成,可以配置 ASCR.EKEY_USE 为 1 使用 user_key 加解密。
  5. 配置 ASCR.EKEY_CLR 为 1 可以清除读取的 user_key 和 chip_id 内容,如果需要再次使用 user_key,必须配置 ASCR.EKEY_RD /EID_RD 为 1 再次读取。