计算分组密钥

AES-128-CTR 算法原理中,使用 AES-128-CTR 进行加密或者解密的过程分为三个步骤:
-
生成数据分组的 Counter 值。
-
生成分组密钥。
-
使用分组密钥对数据进行异或运算,产生加密数据。
Counter 值的产生方式如下:ID = (SPIE_ADDR & 0xFFFFFFF0) / 16 Counter(ID) = (Nonce << 64) +(SPIE_TWEAK << 32) + ID
- 使用数据地址寄存器 SPIE_ADDR 中的地址值,计算分组 ID。
- 分组 ID 与 Nonce 和 Tweak 值组成 Counter 值。
- 使用 AES-128-ECB 加密算法,用 AES KEY 对 Counter 值进行加密,得到分组密钥。
SPI ENC 一次可产生16 字节的分组密钥,输出到内部 Key buffer。
模块开始工作后,只要 Key buffer 有空间,计算分组密钥就会继续,并且总是按地址顺序自动计算下一组密钥,直到控制寄存器 SPIE_CTL[0] 被设置为0。注: 如 AES-128-CTR 算法原理所示,数据的加密和解密的分组密钥计算流程完全一致。