Edit online

安全启动

Read time: 1 minute(s)

安全启动功能可以帮助用户实现以下安全目标:

防止篡改

只有合法的固件才能在安全设备上运行,保护平台和数据。

防止抄板

固件只能在已授权的平台上运行,防止被复制到其它非授权平台。保护固件。



Edit online

安全启动配置

Read time: 1 minute(s)
  1. 密钥管理

    本芯片的安全校验和固件加密都使用 SSK 密钥,该密钥烧录在 eFuse 相关区域中,并且会被设置为仅 CE 模块可见,CPU 无法读取。

  2. 安全验证

    固件的安全验证使用 HMAC-SHA256 算法进行,验证流程如下:

    1. 将启动镜像加载到芯片内部 RAM 中。

    2. 配置 CE 模块,使用 SSK 对启动镜像计算 HMAC-SHA256 认证码。

    3. 如果算出来的认证码与保存在启动固件中的认证码一致,则安全验证通过。

  3. 固件解密

    固件解密流程如下:

    1. 配置硬件加解密模块(CE),使用 SSK 对代码区域进行 AES-CBC 解密。

    2. 解密是原地进行的,直接覆盖原来的加密数据区域。

    制作固件时,如果同时打开了安全认证和加密功能,则总是先对固件进行加密,再对加密后的结果进行安全认证。

Edit online

JTAG 密钥加锁

Read time: 1 minute(s)

芯片上电后,根据不同阶段和配置,JTAG 调试 CPU 的功能可能存在下列不同状态:

  • 初始不可调试状态

    上电即存在的状态,此状态下,JTAG 无法调试 CPU。

  • 密钥加锁状态

    如果 eFuse JTAG_DIS 没有被置为1,并且 BROM 读取启动镜像后,发现启动镜像中设置了 JTAG 密钥,则 BROM 通过设置 JTAG 密钥的方式,让 JTAG 进入了“密钥加锁状态”, 此后如果在工作过程中,主机工具通过设置密钥的方式,可连接 JTAG,并且解锁 JTAG。

  • 完全关闭状态

    在 SID 硬件模块开始工作时,如果检查发现 eFuse JTAG_DIS 比特位被设置为1,则 JTAG 会变为 “完全关闭”状态,此状态下 JTAG 完全不工作。

  • 可调试状态

下图为非安全启动方案中的 JTAG 状态变化图,启动失败、没有设置 JTAG 密钥或者使用密钥解锁 JTAG 成功后,都可以让 JTAG 进入可调试 CPU 状态。

下图为安全启动方案中的 JTAG 状态变化图,在使能了安全之后,仅当使用密钥解锁 JTAG 成功后,才可让 JTAG 进入可调试 CPU 状态。

不同方式进入升级模式时,JTAG 调试 CPU 的功能是否可用有三种状态:

1. 升级模式下的 JTAG 调试 CPU 功能
安全启动状态 WRI 软件进入 Flash 无固件

启动失败进入

Flash 有固件:BOOTPIN 检测进入
无 KSR 有 KSR
非安全 可用 可用 可用 加锁
安全使能 不可用 不可用 不可用 加锁

表格中状态说明如下所示:

  • 加锁:被设置了密钥加锁,JTAG 需要使用密钥解锁使用 CPU 调试功能。

  • 可用:可以直接使用 JTAG 进行 CPU 调试。

  • 不可用:无法使用 JTAG 进行 CPU 调试,也不能通过输入密钥的方式使能该功能。