安全启动应用指南

本指南的目标是指导用户如何在应用中实现安全启动功能,以确保应用的完整性和安全性。

小技巧

在阅读本指南之前,用户应仔细阅读芯片用户手册第7章节 启动引导配置 ,以了解安全启动的基本概念和要求。

概述

ET6001芯片支持Normal启动和Secure启动两种模式。Secure启动模式提供了更高的安全性,确保只有经过验证合法性的代码程序可以在芯片上正常运行。 芯片默认未开启Secure启动模式,若需要使用Secure启动功能,用户需要在修改选项字,修改启动模式。

安全启动配置

在ET6001芯片中,安全启动配置主要通过修改选项字来实现。选项字是芯片内部存储的一组配置参数,用于控制芯片的启动行为和安全特性。 选项字的详细描述参考芯片用户手册第7.4节 选项字配置

选项字可以通过以下方式进行修改:

  • 通过自举接口使用上位机软件进行修改。

  • 通过自举接口由Host Device(主机设备)进行修改。

  • 通过Flash NVR API 编写应用程序进行修改。

安全启动模式是4种启动模式中的一种,根据用户手册表7.2 BootROM 启动模式选择 ,当GPIO24为高电平, 选项字nBOOT1和nSWBOOT1生效时,芯片将进入安全启动模式。

如果从安全启动模式切换到其他启动模式,必须通过鉴权验证通过才能切换成功。 鉴权验证通过自举模式下的上位机软件或Host Device进行。

安全启动流程如下图:

002

安全等级

关于安全等级的基本描述, 请参考7.5.1 安全等级章节描述,总共有2个安全等级可供选择:

  • Secure Level 0:出厂默认的安全级别,适用于一般应用场景。

  • Secure Level 1:适用于对安全性要求更高的应用场景,提供更严格的安全检查和保护。

Secure Level存储在芯片内部OTP区域中,只能进入自举模式通过上位机软件或者Host Device进行修改。

003

由上表可以看出,Secure Level 1提供了更严格的安全控制,禁止了对关键资源的访问和修改。

注意

修改 Secure Level 需慎重:

  • Secure Level 值只能从低等级设置为高等级 1 次,且不可逆。

  • 提升 Secure Level 等级前,请确保已经烧录了密钥,并妥善保存。

  • SWD 接口禁止功能为永久禁止,不可恢复。

  • SWD 鉴权需要额外的 GPIO 提供鉴权接口。

密钥烧录

  • 用户rootkey的烧录在生产环境下进行,生产环境需要保证安全性(离线烧录, 烧录工具, 烧录数据管制)

  • 用户可针对某一批次或者某一芯片类型使用同一个密钥,也可以采用一机一密的方式,对应关系需要用户自己维护相应的数据库

  • 用户需要妥善保管经过烧录工具加密的key文件,供后期鉴权使用

  • 烧录过程需要在自举启动模式下进行

密钥的验证(鉴权)

  • 某些场景下需要对用户操作进行鉴权(例如:恢复出厂设置,安全启动模式切换到其他模式)

  • 鉴权时,需要用户提供该芯片对应的key文件

  • 鉴权过程需要在BootROM自举启动模式下进行

  • 鉴权失败的重试累计次数最大 50 次。超过后 SecureLevel 提升为1,禁止SWD接口和用户选项字写入等操作。

固件签名

固件格式

固件格式定义如下:

001

Name

Length

Byte Offset

Description

Magic number

4Bytes

0

“MAGC”

Header Version

4Bytes

4

header version v1/2/3

Image Checksum

4Bytes

8

crc32 of the payload(without header )

Image Length

4Bytes

12

length of image (without header length)

Version number

4Bytes

16

image version

Header Checksum

4Bytes

20

crc32 of the header(without its self)

CMAC-TAG

32Bytes

24

CMAC-TAG是固件的签名,使用CMAC算法生成,确保固件的完整性和真实性。用户可使用ET-TOOL软件自动生成带签名的固件。

固件烧录与验签

  • 安全启动模式下,固件的引导加载强制进行CMAC校验

  • 用户提供原始的bin经过烧录工具CMAC计算后,生成烧录bin

  • BootROM收到烧录bin后对其合法性进行验证,验证通过后才会引导启动

小技巧

阅读 ET-TOOL 使用说明 ,以了解上位机工具的使用方法, 以及如何生成带签名的固件。