密钥来源
SPI 数据加密使用 AES-128-CTR 算法,其算法原理可参照AES-128-CTR 算法原理 中 AES-128-CTR
的算法原理。具体计算过程如下:
- 以 16 字节为单位对数据进行分组,并且为每个数据分组产生对应的 Counter 值。
- 使用一个 128 bit 的 AES 密钥,对 Counter 值进行加密运算,产生数据分组的对应分组密钥。
产生数据分组对应的 Counter 值,需要使用一个 Nonce,在 SPI ENC 使用过程中,Nonce 作为密钥数据的一部分提供。
- 使用分组密钥与数据进行异或运算,得到密文。
密钥数据的来源有两个:
- SPI 加密模块从 eFuse 中读取 AES KEY 和 Nonce;
- 用户通过相应的寄存器配置 AES KEY 和 Nonce,该配置主要用于内部调试。
eFuse 中保存的密钥数据如下:
名称 | 长度 | 说明 |
---|---|---|
SPI_ENC_KEY | 128 bit | 加密密钥,仅 SPI_ENC 模块可见。 |
SPI_ENC_NONCE | 64 bit | 生成 Counter,仅 SPI_ENC 模块可见。 |