Edit online

计算分组密钥

../images/aes-128-ctr-alg.png
1. AES-128-CTR 算法原理
AES-128-CTR 算法原理中,使用 AES-128-CTR 进行加密或者解密的过程分为三个步骤:
  1. 生成数据分组的 Counter 值。

  2. 生成分组密钥。

  3. 使用分组密钥对数据进行异或运算,产生加密数据。

    Counter 值的产生方式如下:
    ID = (SPIE_ADDR & 0xFFFFFFF0) / 16
    Counter(ID) = (Nonce << 64) +(SPIE_TWEAK << 32) +  ID
    1. 使用数据地址寄存器 SPIE_ADDR 中的地址值,计算分组 ID。
    2. 分组 ID 与 Nonce 和 Tweak 值组成 Counter 值。
    3. 使用 AES-128-ECB 加密算法,用 AES KEY 对 Counter 值进行加密,得到分组密钥。

    SPI ENC 一次可产生16 字节的分组密钥,输出到内部 Key buffer。

    模块开始工作后,只要 Key buffer 有空间,计算分组密钥就会继续,并且总是按地址顺序自动计算下一组密钥,直到控制寄存器 SPIE_CTL[0] 被设置为0。
    注:AES-128-CTR 算法原理所示,数据的加密和解密的分组密钥计算流程完全一致。