FOTA升级包签名
带加密与签名的FOTA升级包
信息摘要和数字签名
信息摘要:对数据进行处理,得到一段固定长度的结果,其特点输入:
输出长度固定。即输出长度和输入长度无关
不可逆。即由输出数据理论上不能推导出输入数据
对输入数据敏感。当输入数据变化极小时,输出数据也会发生明显的变化
防碰撞。即不同的数据数据得到相同输出数据的可能性极低
由于信息摘要有上述特点,一般保证数据的完整性,对一个大文件进行摘要运算,得到其摘要值。通过网络或者其他渠道传输后,通过验证其摘要值,确定大文件本身有没有发生变化
数字签名:数字签名其实分成两步,首先对原始文件进行摘要运算,得到摘要值,然后使用公开密钥算法中的私钥对摘要值进行加密。其签名和验证过程如下图所示
密钥获取
使用openssl生成密钥
1 |
|
这里-out指定生成文件的。需要注意的是这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密。后面的1024是生成密钥的长度
使用密钥生成公钥
1 |
|
-in指定输入文件,-out指定提取生成公钥的文件名。至此,我们手上就有了一个公钥,一个私钥(包含公钥)
签名生成与验证
使用私钥生成签名
1 |
|
摘要为sha256格式,输出签名为test.sha256
使用公钥验证签名
1 |
|
制作FOTA升级包
加密
将签名与升级镜像使用zip压缩,并使用自带的加密方式进行加密
1 |
|
解密
直接使用unzip解密
1 |
|
FOTA升级包签名
https://carl-5535.github.io/2021/01/20/工作总结/FOTA升级包签名/