在系统软件中有系统升级功能,方便软件的版本迭代,而在系统升级前需要校验升级的Image是否是可信的,以及信息是否被篡改过。
升级包由以下部分组成 数字证书 + 升级文件的文件摘要 + 使用密钥加密升级文件摘要得到的数字签名 + 升级文件
验证过程大体如下图
下面简述基于开源库Openssl的验证过程,在系统中会有一个预先存好的根证书,当新的软件包接入的时候,首先会使用根证书来校验软件包中的证书是否是正确的,包含下面这些细节;
1.校验软件包中的证书的签发者和用途是否合规;
2.校验软件包中的证书有效期时间是否在有效期内(所以对系统时间有依赖);
3.使用根证书中的密钥解密软件包证书中的数字签名,并与软件包中证书的摘要进行对比;
4.其他验证步骤;
经过以上几上步骤的验证可以得到软件包中的证书是可信的,那么接下来就可以使用软件包中的证书里携带的密钥了。Openssl中提供用于证书验证接口。
下面代码可以将证书从文件中读取,并转换为X50