一、意义
安全启动可以防止未授权的或是进行恶意篡改的软件在系统上运行,是系统安全的保护石,每一级的前一个镜像会对该镜像进行校验。
1.1 安全启动原理介绍
通过数字签名进行镜像完整性验证(使用到非对称加密算法和哈希算法)
签名过程:
raw_image--->use hash--->digest(摘要)
private_key--->digest--->signature
image+signature组合成为签名镜像
验签过程:
use hash--->raw_image--->digest1
public_key--->signature--->digest2
digest1 =? digest2
等于则验签成功,否则验签失败
说明:
一般是先验证证书,然后再验证镜像(对根证书使用哈希计算,然后和efuse中存储的进行对比,一致后,则可通过;
镜像验证:是使用根证书中的公钥对签名进行验证,然后从认证签名证书中取出公钥,对镜像签名数据验证)
1.2 dm-verity原理
squashfs需要读取某个块时,调用dm-verity读取对应的块,dm-verity根据verity-table中block_device,调用block_device读取对应的块,读取到块的内容后dm-verity会算出块的sha256,然后跟verity-hash-tree中相对应的hash值进行比较,如果相等,则说明该块没有被修改过。