secure boot基本概念

secure boot简介

secure boot是基于数字签名认证。在启动流程中,第一部分去认证第二部分,以此类推,从而建立信任链。每个组件都使用其数字签名public key验证前面一部分的有效性。
可信信任链

以下使用i.MX平台进行说明。
public key可以存到One-Time-Programmable (OTP) fuses里面,或者也可以将public keyhash化后(srk fuse)使其size减小并存到OTP中。在boot启动的时候,ROM code将存在bootloader中未hash化(srk table)的public keyhash化,然后与OTP中hash化过的public key进行比较(因为hash不可逆),如果相等,使用bootloader中未hash化的public key对已签名的bootloader进行校验。以此类推。如下是i.MX6(i.MX8没有CSF)平台安全启动的流程:

i.MX平台安全启动

在上图中:
1、在安全的环境中对SW Image内容hash化生成摘要A,然后使用private key摘要A进行签名(采用RSA算法),得到SW ImageSignature
2、将该SW ImageSignature烧录到flash中后去启动;
3、在启动的时候会将SW Image内容hash化生成摘要B(如果SW Image没有被修改过,摘要A摘要B肯定相等),使用Fuse中的public key进行对Signature进行验签得到摘要C,如果摘要B摘要C相等,表示认证成功,就去启动OS。

注意,这里i.MX处理器中芯片存储的是SRK,而不是hash化后的值,所以该SRK可以直接进行验签。


encryption加密概念

加密是为了防止信息被偷看。
public key是每个人都可以持有的,经过该public key加密的数据,只能由持有private key的人去解密获得最终数据。既然是加密,肯定是要我自己一个人才能解出来的,那解密肯定是私有的,也就是private key解密。
加密


signature签名概念

签名是为了防止信息被冒充。
经过private key签名的数据,所有持有与之对应public key的人都可以进行验签,如果验签通过,表示该数据没有被修改过。既然是签名,不想别人冒充我发送消息,肯定是要我自己一个人签名的才算是我发送的信息,也就是private key签名。
解密

上述两者的区别是:
加密的概念中,public key负责加密数据,private key负责解密数据,只能唯一的解密;
签名的概念中,private key负责签名,public key负责verify,只能唯一的签名。


数字签名概念

将内容hash化,生成摘要digest,然后用private key签名,生成数字签名,用于验证数据是否被修改过。关于这部分的内容,可以详细参考数字签名是什么?
数字签名1
数字签名2


数字证书概念

CA中心用自己的private key对他人的public key和一些信息进行签名,生成数字证书
在证书中心(Certificate Authority,简称CA),为public key做认证。CA用自己的private keypublic key和一些相关信息一起签名,生成数字证书(Digital Certificate)。这样就可以防止手上的public key被修改,保证一致性。
数字证书(Digital Certificate)也可称之为公钥证书(public key certificate),使用CA

CA主要是对public key处理,保证public key是经过认证的。

参考资料

数字签名是什么?
What is a Digital Signature?
Secure Boot from A to Z

Title:secure boot基本概念

Author:Victor Huang

Time:2020-08-02 / 10:08

Link:http://wowothink.com/63d41710/

License: Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)