本文框架
前言
在信息安全中有两个非常重要的应用:安全启动及安全刷新,所谓安全启动即是在用户程序启动前,先进行校验,防止恶意或被篡改的程序得到允许,安全刷新则是在对软件包刷新前,校验刷新包是不是被篡改过,两者目的都是保护程序的完整性与真实性。
在安全刷新及安全启动中普遍采用的技术是数字签名,可采用的加密方式有非对称加密及对称加密方式,两者的区别往大的说就是非对称加密安全性更高,但比较吃算力,对称加密的加解密只有一把秘钥安全性相对差一点但计算的速度比较快。
以上为背景,本文假设具体需求为:请通过python脚本对起始地址0x0000F300,数据长度为128K的数据,基于AES128算法进行CMAC认证,并将CMAC值patch到原hex中。
对需求进行拆分,需要我们做的主要是如下几点:
- 对hex文件解析,如何找到待计算的block;
- 如何在对称加密AES128算法计算对应Block的MAC值;
- 如何将计算的MAC填充到hex中。
本文大纲如下:
1. 基于AES128的CMAC认证脚本开发
1.1 hex文件解析
在进行AES CMAC认证前需要对hex文件进行解析,主要目的是获取待校验的数据,hex文件格式解析之前有篇文章详细介绍了: