在第一节,我们简单描述了汽车MCU常见的安全启动,以及英飞凌和vector设计的安全启动流程。这里我们就要对启动中所使用的加密算法进行描述。
首先我们来分析在MCU中安全启动时所需要的成员:
待校验对象(通常为应用程序)的数据长度、起始地址;
待校验对象进行校验时所需要的加密算法;
待校验对象进行校验时所需要的密钥;
有了上述三个成员,(注意:开始描述安全启动逻辑代码)启动的信任根(通常是HSM的BootRom)首先会查看待校验对象的数据长度和起始地址是否合法(通常就是范围判断),然后到slot中获取校验对象的验证密钥(思考下我这里为什么不说解密密钥而是说验证密钥?),最后将校验对象的数据按块放进硬件加速引擎进行处理,得出一个结果与预存在HSM NVM的结果(什么时候预存的?存到哪里的?)进行对比。
一、MCU安全启动加密算法选择
大家思考一个问题,在汽车MCU运行时代码通常都是直接在flash中运行,很少出现把一个功能栈拷贝到ram中运行,主要是MCU的SRAM通常十分珍贵,且比较小,虽然最近出来的片子S32G、TC3xx SRAM已经来到MB级别,但是鉴于成本、和芯片厂通常会将PFlash和CPU直连以加快取指速度,一般都还是采用比较传统的方式。
既然是直接取指,如果应用程序是加密存储在flash中,即使安全启动通过,应用程序解密完也没有足够的ram存放,所以一般来说,存放在flash中的代码均是以明文
本文转载自: https://blog.csdn.net/djkeyzx/article/details/132131182
版权归原作者 CyberSecurity_zhang 所有, 如有侵权,请联系我们删除。
版权归原作者 CyberSecurity_zhang 所有, 如有侵权,请联系我们删除。