Edit online

配置和校验

开启防抄板功能

方案商开启防抄版功能需要如下步骤:

  1. 编译一个烧录 eFuse 的 BootLoader,该固件只完成对出货的芯片烧录相关的 eFuse 和密钥,并使能 SPIENC 和安全启动功能。

  2. 编译一个进行了加密的量产固件,该量产固件可以发放给生产商。

  3. 生产商使用方案商提供的主控进行生产,烧录方案商提供的固件。

使用 SPIENC 进行防抄板开发

使用 SPIENC 进行防抄板开发需要用到如下几个开发步骤:
  1. 烧录 eFuse

    防抄板的核心,烧录一个客户的私有密码,SPIENC 模块借助该密码完成从 flash 上读数据的解密和写数据加密功能。

  2. 固件签名

    对从其他总线(TF卡,USB)读数据到内存中运行的路径进行签名校验,防止从非 SPI 总线的介质启动系统。

  3. 固件加密

    对固件进行加密,防止明文固件流转。

重要:
  • 防抄板支持 SPINOR 离线烧录,不支持 SPINAND 离线烧录。

  • 为调试方便而增加的调试配置在量产的时候必须关闭。

  • 为安全原因,可能获取解密后固件的接口:UART,TF卡在量产固件中应该关闭。

  • AES 为对称性加密算法,只有一组秘钥,要保护好该秘钥不被泄露。

制定校验方案

烧录 eFuse 并启用 SPIENC 后 eFuse 相关域无法显示,因此需要有严格的校验方案:
  1. eFuse 校验
    • 执行 “gen_spienc_key” 后会生成一组校验数字,存放在“crc32.txt”中
      ./gen_spienc_key.sh
      67e86628    spi_aes.key
      67e86628    all.key
      
    • eFuse 烧录后 SDK 会读出烧录后的秘钥值进行运算并生成一组校验数字,该数组将写入TF卡中
      SPI ENC KEY crc32 value:0x67e86628
      SPI ENC NONCE crc32 value:0x28c7d1ae
      ROTPK crc32 value:0xb543441a
      BROM SPIENC is ENABLED
      SPI ENC Key is read DISABLED
      SPI ENC Key is write DISABLED
      SPI ENC ROTPK is write DISABLED
      JTAG LOCK   is ENABLED
      
    • 通过该两组数字对比进行校验

  2. SPINOR 离线烧录校验

    SPINOR 离线烧录加密的固件的验证因为是验证当前的SPINOR,除了前期对要烧录的固件进行严格追踪外,只能通过贴样片到开发板的方式验证。

  3. OTA 校验

    OTA 包不经过加密,使用的是 SPIENC 逻辑加密写入到 flash,因此不需要校验。