需要完成以下配置步骤来准备器件,以便支持安全启动:
- 必须配置启动映像管理器固件并将其编程到 MAIN 闪存中,其中复位矢量 0x0000.0004 指向启动映像管理器的开始
- 启动映像管理器所需的任何身份验证密钥材料都必须编程到 MAIN 闪存中,与启动映像管理器相邻
- 器件 NONMAIN 配置存储器必须使用以下特性进行编程:
- 包含启动映像管理器固件和密钥材料的 MAIN 闪存扇区必须配置为静态写保护以防止遭到修改。
- NONMAIN 闪存扇区必须配置为静态写保护以防止遭到修改。
- 建议使用密码保护或禁用批量擦除和恢复出厂设置命令(使用上述配置设置禁用恢复出厂设置将导致 NONMAIN 配置以及包含启动映像管理器和身份验证密钥的扇区永久锁定)。
- 建议启用 MAIN 闪存完整性检查,并将地址范围设置为包括启动映像管理器和身份验证密钥。
配置完成,并且将已签名的固件编程到器件中后,器件上电的安全启动流程如下所示:
- 在上电期间,器件处于最大安全状态。如果器件配置有效,BCR 将检查器件配置存储器的完整性,并相应地加载用户指定的策略。
- BCR 将计算与包含 BIM 和密钥材料的 MAIN 闪存相对应的 CRC 值。如果 CRC 校验通过,BCR 将转换到执行第一个用户代码(启动映像管理器)。
- 启动映像管理器将计算剩余应用程序代码的摘要:
- 在非对称身份验证的情况下,应用程序代码的安全哈希 (SHA2-256) 摘要将在软件中计算
- 在对称身份验证的情况下,与应用程序代码相对应的 CMAC 消息身份验证代码将使用身份验证密钥计算
- 启动映像管理器将根据提供的签名验证摘要:
- 在非对称身份验证的情况下,数字签名将在软件中使用椭圆曲线数字签名算法 (ECDSA) 进行解密,并将结果与计算的哈希值进行比较
- 在对称身份验证的情况下,计算出的 CMAC 将与数字签名中的 CMAC 进行比较
- 如果应用程序代码摘要与签名相匹配,则会启动应用程序代码,否则将调用用户指定的故障处理程序。