卖辅助网站怎么做,查企业信息的黄页有哪些,天津建设工程信息网专家库官网,外贸网站建设青岛TBB
Trusted Board Boot#xff08;TBB#xff09;对所有固件镜像#xff08;包括普通世界的bootloader#xff09;进行身份验证#xff0c;以防止恶意固件在平台上运行。TBB使用公钥加密标准 #xff08;PKCS#xff09;来建立信任链#xff08;Chain of Trust#…TBB
Trusted Board BootTBB对所有固件镜像包括普通世界的bootloader进行身份验证以防止恶意固件在平台上运行。TBB使用公钥加密标准 PKCS来建立信任链Chain of Trust。
CoT
信任链 (CoT) 从一些可信组件开始其以链式方式建立后续组件的信任依此类推。CoT取决于几个因素
平台上运行的镜像固件如通用镜像BL1BL2BL31以及BL33以及平台需要的其他镜像密钥管理方案设备密钥的全生命周期配置密钥所有权模型谁拥有哪个密钥
下面这些可信组件提供了信任锚点
信任根公钥 (ROTPK) 或其哈希值BL1镜像假定其固化在ROM中无法更改
其余的CoT组件是证书或者启动镜像。证书遵循X.509 v3标准其允许向证书添加自定义扩展用于存储建立CoT所需的基本信息。所有证书都是自签名的无需证书颁发机构 (CA)因为CoT不是通过验证证书颁发者的有效性而建立的而是通过证书扩展中的内容建立的。
证书分为“密钥”和“内容”证书。密钥证书用于验证签发内容证书的公钥内容证书用于存储启动镜像的哈希值。在启动阶段计算启动镜像的哈希值并从内容证书中提取镜像的哈希值通过比较以上两个哈希值是否相等来判断镜像是否可信。公钥和哈希值作为非标准扩展字段包含在X.509 v3证书中。
TBBR
在TF-A中实施了TBBR CoT所有的固件和证书都直接或者间接地与信任根公钥ROTPK相关。通常设备的供应商拥有 ROTPK、Trusted key和Non-Trusted key。
组件说明Root of trust key信任根密钥私钥部分用于签发Trusted Boot Firmware Certifacate和Trusted Key Certificate两个证书公钥部分就是ROTPKTrusted world key安全世界密钥私钥部分用于签发安全世界镜像BL31和BL32的密钥证书BL31/BL32 Key Certificate公钥部分存放在Trusted Key Certificate的扩展域中Non-Trusted world key非安全世界密钥私钥部分用于签发非安全世界镜像BL33的密钥证书BL3 Key Certificate公钥部分存放在Trusted Key Certificate的扩展域中BL3X keysBL3X密钥私钥部分用于签发BL3X镜像的内容证书BL31/BL32/BL33 Content Certificate公钥部分存放在相应密钥证书BL31/BL32/BL33 Key Certificate的扩展域中Trusted Boot Firmware Certificate使用信任根密钥ROT签发的自签名证书其包括BL2镜像的哈希值Trusted Key Certificate使用信任根密钥ROT签发的自签名证书其包括密钥Trusted world key和Non-Trusted world key的公钥部分BL31 Key Certificate使用Trusted world key签发的自签名证书其包括BL31镜像的哈希值BL32 Key Certificate使用Trusted world key签发的自签名证书其包括BL32镜像的哈希值BL33 Key Certificate使用Non-Trusted world key签发的自签名证书其包括BL33镜像的哈希值
下图展示了按照TBBR实施的信任链CoTTF-A实施的其他部分如调试证书SCP镜像等没有列举出来。 X509
TF-A使用X509证书标准实现信任链的传递证书的要求如下
每张证书都符合X.509v3标准在其扩展域存放了安全参数如NV counters固件哈希值公钥以及SoC其他安全参数每张证书需要包含发行商名称证书主体名称序列号算法公钥信息有些情况为了减小证书大小不会传公钥值每张证书都具备有效期在对可信固件证书进行任何身份验证之前该证书必须存在于可信RAM中在可信启动过程中如果还未对软件镜像执行完整性检查必须将其先下载到可信RAM中
下面是采用X.509 v3标准的证书示例 可信启动流程
在TF-A中上电复位后从信任锚点BL1开始运行BL1加载和认证BL2认证通过后跳转到BL2执行然后BL2再加载和认证BL3x认证通过后最后跳转到BL3x镜像继续执行。
BL1认证BL2
BL1加载和认证BL2镜像的流程如下
上电复位后BL1开始执行从存储介质中读取证书BL2 Content Certficate到可信RAM中解析证书BL2 Content Certficate获取信任根公钥ROTPK并计算其哈希值从OTP/EFUSE中读取可信的根公钥哈希值并与上一步计算的根公钥哈希值进行比较如果二者相等则表示ROTPK根公钥可信否则进入异常处理解析证书BL2 Content Certficate获取签名值并使用ROTPK对该证书进行验签如果验签通过说明证书可信从中解析出参考的镜像哈希值BL2 image hash否则进入异常处理从存储介质中加载BL2镜像计算其哈希值并与上一步参考的BL2 image hash进行比较如果二者相等说明BL2镜像可信跳转到BL2开始执行否则进入异常处理 BL2认证BL3x
BL2加载和认证BL3x镜像的流程如下
BL1跳转到BL2开始执行后从存储介质中读取密钥证书Trust Key Certficate到可信RAM中解析密钥证书Trust Key Certficate获取信任根公钥ROTPK并计算其哈希值从OTP/EFUSE中读取可信的根公钥哈希值并与上一步计算的根公钥哈希值进行比较如果二者相等则表示ROTPK根公钥可信否则进入异常处理解析密钥证书Trust Key Certficate获取签名值并使用ROTPK对该证书进行验签如果验签通过说明证书可信从中解析出Trusted World Public Key和Non-Trusted World Public Key否则进入异常处理接下来就是安全世界和非安全世界每个镜像的认证过程。先从存储介质中读取密钥证书Trust Key Certficate到可信RAM中解析获取签名值并使用上一步的Trusted World Public Key对该证书进行验签如果验签通过说明证书可信从中解析出BL31或BL32 Public Key否则进入异常处理从存储介质中加载内容证书BL31或BL32 Content Certficate解析获取签名值并使用上一步的BL31或BL32 Public Key对该证书进行验签如果验签通过说明证书可信从中解析出参考的BL31或BL32 image hash否则进入异常处理从存储介质中加载BL31或BL32 image计算其哈希值并与上一步参考的BL31或BL32 image hash进行比较如果二者相等说明BL31或者BL32镜像可信否则进入异常处理接着是非安全世界镜像的认证过程与上面安全世界的镜像类似只是改成使用Non-Trusted World Public Key对密钥证书BL33 Key Certficate进行验签认证通过再使用BL33 Public Key对BL33 Content Cerificate验签当所有镜像都认证通过后说明安全世界镜像和非安全世界镜像均可信可以跳转后续镜像继续启动执行 镜像解密
为了保证镜像的机密性防止被复制克隆TF-A认证框架也支持镜像加密功能。在启动流程中如果镜像被加密首先需要对其进行解密然后才执行认证流程。
参考
Trusted Board Boot Requirements Client (TBBR-CLIENT) Armv8-ATrusted Firmware-A Documentation
欢迎关注“安全有理”微信公众号。