Edit online

密钥来源

SPI 数据加密使用 AES-128-CTR 算法,其算法原理可参照AES-128-CTR 算法原理 中 AES-128-CTR 的算法原理。具体计算过程如下:
  1. 以 16 字节为单位对数据进行分组,并且为每个数据分组产生对应的 Counter 值。
  2. 使用一个 128 bit 的 AES 密钥,对 Counter 值进行加密运算,产生数据分组的对应分组密钥。

    产生数据分组对应的 Counter 值,需要使用一个 Nonce,在 SPI ENC 使用过程中,Nonce 作为密钥数据的一部分提供。

  3. 使用分组密钥与数据进行异或运算,得到密文。
密钥数据的来源有两个:
  • SPI 加密模块从 eFuse 中读取 AES KEY 和 Nonce;
  • 用户通过相应的寄存器配置 AES KEY 和 Nonce,该配置主要用于内部调试。
eFuse 中保存的密钥数据如下:
名称 长度 说明
SPI_ENC_KEY 128 bit 加密密钥,仅 SPI_ENC 模块可见。
SPI_ENC_NONCE 64 bit 生成 Counter,仅 SPI_ENC 模块可见。