8.2.2. 参数配置

8.2.2.1. 驱动配置

在 ZX-RTT 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择(配置只打开了 QSPI0 的加密使能,作为示例):

Board options  --->
    [*] Using spienc  --->
        [*]   Enc qspi0

SPIENC 中的 Tweak 可以影响 COUNTER 的生成,进而改变加密的结果。 如果需要让在不同的产品对相同的数据有不同的加密结果,则可以进入 menuconfig 的功能配置界面调整该值。

Board options  --->
    [*] Using spienc  --->
        (0)     set qspi0 tweak

8.2.2.2. 密钥配置

SPI_ENC 模块使用 AES-128-CTR 算法对 SPI 总线数据进行加解密,该算法在计算时的密钥有两部分

  • 128 bit AES 密钥(KEY)

  • 128 bit 数据块的 COUNTER 值

其中 KEY 直接使用 eFuse 中的 SPI_ENC_KEY ,COUNTER 值则由几部分共同产生

  • eFuse 中的 SPI_ENC_NONCE

  • menuconfig 的功能配置界面中配置的 tweak

  • 访问数据所在的地址 address

../../../_images/spienc_counter_value.png

图 8.2 COUNTER 值的生成

因此在使能 SPI_ENC 时,需要设置以下的 eFuse 信息:

eFuse 区域

大小(BIT)

说明

SPI_ENC_KEY

128

AES 密钥,烧录后应设置不可读写

SPI_ENC_NONCE

64

用于生成 COUTNER 的随机数,烧录后应设置不可读写

SPI_ENC_ENABLE BIT

1

使能 BROM 的 SPI_ENC 功能,才可正确启动

具体 eFuse 区域的地址,请参考芯片的数据手册。