secure boot
1.安全启动时序

normal mode:
FACTORY_HASH
1.Flash boot
2.trim constants
3.TOC1
不可被重新编程
在Normal生命周期阶段用于验证SFlash的FACTORY_HASH值存储在eFuse中,不能更改
secure mode
SECURE_HASH
1.TOC2
2.public key.
在安全生命周期阶段,每次设备reset,整个SFlash块都用SECURE_HASH进行验证。
如果在验证SFlash时发现错误,设备将不再完成引导顺序,并进入Dead状态
验证过程

1.1 代码签名和验证
加密方法:公钥加密PKC,通过私钥和公钥(将私钥保存在安全位置)
如果私钥暴露,将会危及系统安全
公钥是公开的,但必须有一种方法验证或者锁定公钥,能够检测到对公钥的修改。
1.2 code签名

1.固件镜像必须进行数字签名并与代码镜像绑定在一起
2.代码本身并不是以加密格式存储在闪存中,但是数字签名是加密的
3.通过私钥对数字签名进行加密(对数字前面加密是因为第三方如果拿不到私钥就不能创建有效的代码/签名包)
1.3 code验签
安全系统必须能够检测到不是由原始制造商或者可信来源的代码。
校验需要三部分:数据、签名和加密密钥
数据和签名是成对的;密钥存储在一个不能更改的位置
-
Data:嵌入式固件中包括可执行代码和常量
-
Digital signature:采用SHA-256。数字签名可以单独用于验证数据的完整性。通过使用加密密钥对数字签名进行加密,可以保证数据来源可信,同时可以确保数据的完整。
-
Crypto key:可以是公钥或私钥
公钥存储在设备上,私钥由开发人员保护
公钥必须通过以下两种方式来保障安装性:
1.验证密钥来源(可以通过与已知来源或服务器进行某种类型的通信来实现)
2.通过使用内存中不可被修改的key来验证key数据。
校验过程:

1.使用公钥对加密的数字签名进行解密
2.将计算出的与解密出的数字摘要进行对比
2.资源保护
只有bus master和task可以访问资源。
资源访问类型:读 写 执行
MCU里有“protection units”来提供此功能。这些protection units可以创建多个保护区域(包括flash sram peripherals和I/Os)
protection units有四种类型:
- MPU
- SMPU
- PPU
- SWPU
MPU
每个CPU都有自己的MPU,MPU保护结构只满足与单个主控有关的保护属性。MPU保护属性为用户/权限,读、写、执行。
SWPU
通过SWPU可以在引导过程中配置flash和eFuse访问保护。SWPU被称为应用程序保护单元。
SMPU
SMPU保护由多个主控制器使用的内存区域。安全镜像使用SMPU来限制非安全应用程序对安全区域的访问。
PPU
ppu是专门设计用来保护外围寄存器的。

浙公网安备 33010602011771号