加密加签

1. 安全解决方案

  • GR5xxx系列芯片采用芯片内部加密引擎与外部配套工具相配合的方式,提供一套完整的安全解决方案。

  • 开发者可以通过工具(如GProgrammer)对芯片进行安全配置,随后通过芯片内部ROM发起的安全启动,实现对芯片的保护。

  • 安全解决方案主要包括系统配置区(System Configuration Area,SCA)的消息认证、固件及数据加解密和数字签名。

  • GR5xxx 低功耗典型值如下(更多详情见对应芯片Datasheet)

芯片 加密 加签 SCA安全算法 Firmware安全算法 数据安全算法 签名安全算法
GR551x HMAC-SHA256 ECC P-256 & PRESENT-128 PRESENT-128 RSASSA-PSS
GR5525 HMAC-SHA256 ECC P-256 & PRESENT-128 PRESENT-128 RSASSA-PSS / ECDSA
GR5526 HMAC-SHA256 ECC P-256 & PRESENT-128 PRESENT-128 RSASSA-PSS
GR533x × × × x ECDSA

2. 工具端工作流程

  • 生成firmware,data,hmac, signature等密钥信息;

  • 根据以上数据,生成Efuse烧录文件:Encrypt_key_info.bin和Mode_control.bin等

  • 工具端烧录Encrypt_key_info.bin和Mode_control.bin至Efuse,使能芯片硬件加密模式

  • 工具端加密加签Firmware,会再Firmware添加以下信息:

    • firmware pub key相关参数

    • signature pub key相关参数

    • signature pub key Hash数据

    • 加密固件文件的signature

  • 工具端烧录加密加签固件时,会加密烧录SCA区域信息,并附上HMAC

3. 设备端工作流程

  • 读取Efuse信息,以判断芯片是否使能硬件加密模式,以及是否开启SWD;

  • 触发Efuse controller将各key发送至Keyram;

  • 计算SCA区域信息HMAC是否与SCA存储HMAC匹配,完成SCA信息验证;

  • 使用Data Key解密SCA区域信息,取得boot info;

  • 根据boot info确定firmware load位置和大小,获取signature pub key相关参数,signature pub key Hash数据,加密固件文件的signature;

  • 计算signature pub key相关参数Hash,与Efuse中Hash进行匹配验证;

  • 使用signature pub key相关参数计算出signature pub key;

  • 使用signature pub key对加密固件文件的signature进行解密获取工具端计算的firmware文件Hash

  • 对于firmware文件Hash计算得到摘要,与工具端计算的firmware文件Hash进行匹配验证

  • signature验证通过后,获取firmware尾部firmware pub key相关参数,与efuse中生成firmware key参数计算出对称密钥FW Code Key;

4. 工具端(GProgrammer)加密加签操作

  • 输入Name和ID,配置Fimware Key(首次生成选择Using Random Key),Security Mode,SWD,Sign算法(仅适合GR5525),生成Efuse File

  • 烧录Encrypt_key_info.bin和Mode_control.bin Efuse File至芯片端;

  • 选择Product Info,Random Number(首次生成选择Using Random Number),需要加密加签的Firmware文件

  • Encrypt and Sign生成加密加签Firmware文件

5. 工具端(GProgrammer)仅加签操作

  • 仅加签模式是后续扩展功能,rom启动时不会对跳转固件进行signature验证,此模式应用于app bootloader对user app firmware或DFU Firmware进行验证

  • 仅加签模式无需烧录生成Efuse File,因此需要将Public_key_hash.txt中signature pub key Hash数据填写至app bootloader配置文件中

  • 取消勾选Encrypt,仅Sign对目标Firmware进行加签

6. 注意事项

  • 产品使用应用中,会有app bootloader firmware和user app firmware,对两个文件进行加密加签时,须使用相同的firmware.key和random.bin,否则硬件加载的是app bootloader firmware配置的FW Code Key,对user app firmware会解密失败,导致跳转失败。 若首次生成加密文件时,勾选Using Random Key和Using Random Nuber,后续加密加签固件时,应选择已生成后的firmware.key和random.bin