Edit online

方案 V2

3 Mar 2025
Read time: 2 minute(s)

本节介绍了 SPI Flash 防抄板方案 V2 的详细配置说明,以 D12x 开发板为例。

本方案通过使用 D12x 的 SPIENC 总线加密功能来实现防抄板,结合实际使用的需求,提供对应的软件方案。

SPIENC 总线加密

SPIENC 总线加密功能是一个芯片硬件支持的安全功能。芯片使能了 SPIENC 后,内部的 SPIENC 模块对 SPI 总线上传输的数据进行实时的加密或解密,即对写出去的数据进行 AES 加密,读回来的数据进行 AES 解密, 使得保存在 Flash 上的数据总是密文。

SPIENC 进行加解密时,使用芯片 eFuse 中特定密钥区域中的密钥对数据进行加密和解密,该密钥区域可以做到烧录后 CPU 不可读写,在芯片内部也仅有 SPIENC 模块能够访问,因此可以做到硬件安全保密。

启用 SPIENC 需要:
  1. 在芯片中烧录特有的的 AES 密钥,并且将相关密钥区域设置为仅 SPIENC 可访问。

  2. 提供对应的加密固件。

  3. 对 AES 密钥进行妥善管理,防止泄露。

此时芯片和对应的固件就被绑定在一起,提供出去的固件,只能运行在烧录了对应加密密钥的芯片上; 烧录了密钥的芯片,也只能运行使用对应密钥加密后的固件。

SPI ENC 功能对应的 eFuse 烧录信息

D12x 使能 SPIENC 功能,需要烧录的 eFuse 信息如下:
  • SECURE 区域中的 SPI_ENC_EN 位。

  • SPI_ENC KEY 区域中的密钥内容。

  • DIS RD/DIS WR 区域中,关于 SPI_ENC KEY 的读写禁止位。

  • SECURE 区域中的 JTAG_LOCK 位(可选,关闭 JTAG 更安全)。

注:

相关信息可参考芯片用户手册 > 安全 > SID 章节。

1. eFuse 空间划分
用途 位数 地址 禁止位 禁写 禁读 归属 备注
DIS 32 0~3 0 - - CSTM 每位对应 1 个 32bits 空间
  • 15:00 eFuse 读禁止配置
  • 31:16 eFuse 写禁止配置
BROM_SECURE 32 4~7 1 V - CSTM BROM 参数配置区域
CALI 64 8~F 2~3 V - AIC 模拟校准使用
CHIP ID 128 10~1F 4~7 V - AIC 芯片编号(子编号用到 Reserved 区域)
SPI_ENC KEY 128 20~2F 8~11 V V CSTM 安全,连接到 SPI_ENC,对称密钥
Reserved 128 30~3F 12~15 - - CSTM OEM 可自定义使用
2. SECURE 区域定义
比特位 名称 描述
31:29 - -
28 SPI_ENC_EN BROM 读取使用,使能 SPI 总线数据加密功能
27:25 - -
24 JTAG_LOCK 逻辑组合后连接到 CPU 屏蔽 TDO,关闭 JTAG 调试功能,在安全方案中烧录为 1