安全启动
安全启动功能可以帮助用户实现以下安全目标:
防止篡改 |
只有合法的固件才能在安全设备上运行,保护平台和数据。 |
防止抄板 |
固件只能在已授权的平台上运行,防止被复制到其它非授权平台。保护固件。 |

安全启动配置
- 密钥管理
本芯片的安全校验和固件加密都使用 SSK 密钥,该密钥烧录在 eFuse 相关区域中,并且会被设置为仅 CE 模块可见,CPU 无法读取。
-
安全验证
固件的安全验证使用 HMAC-SHA256 算法进行,验证流程如下:
-
将启动镜像加载到芯片内部 RAM 中。
-
配置 CE 模块,使用 SSK 对启动镜像计算 HMAC-SHA256 认证码。
-
如果算出来的认证码与保存在启动固件中的认证码一致,则安全验证通过。
-
- 固件解密
固件解密流程如下:
-
配置硬件加解密模块(CE),使用 SSK 对代码区域进行 AES-CBC 解密。
-
解密是原地进行的,直接覆盖原来的加密数据区域。
制作固件时,如果同时打开了安全认证和加密功能,则总是先对固件进行加密,再对加密后的结果进行安全认证。
-
JTAG 密钥加锁
芯片上电后,根据不同阶段和配置,JTAG 调试 CPU 的功能可能存在下列不同状态:
-
初始不可调试状态
上电即存在的状态,此状态下,JTAG 无法调试 CPU。
-
密钥加锁状态
如果 eFuse JTAG_DIS 没有被置为1,并且 BROM 读取启动镜像后,发现启动镜像中设置了 JTAG 密钥,则 BROM 通过设置 JTAG 密钥的方式,让 JTAG 进入了“密钥加锁状态”, 此后如果在工作过程中,主机工具通过设置密钥的方式,可连接 JTAG,并且解锁 JTAG。
-
完全关闭状态
在 SID 硬件模块开始工作时,如果检查发现 eFuse JTAG_DIS 比特位被设置为1,则 JTAG 会变为 “完全关闭”状态,此状态下 JTAG 完全不工作。
-
可调试状态


不同方式进入升级模式时,JTAG 调试 CPU 的功能是否可用有三种状态:
安全启动状态 | WRI 软件进入 | Flash 无固件 启动失败进入 |
Flash 有固件:BOOTPIN 检测进入 | |
---|---|---|---|---|
无 KSR | 有 KSR | |||
非安全 | 可用 | 可用 | 可用 | 加锁 |
安全使能 | 不可用 | 不可用 | 不可用 | 加锁 |
表格中状态说明如下所示:
-
加锁:被设置了密钥加锁,JTAG 需要使用密钥解锁使用 CPU 调试功能。
-
可用:可以直接使用 JTAG 进行 CPU 调试。
-
不可用:无法使用 JTAG 进行 CPU 调试,也不能通过输入密钥的方式使能该功能。