汽车MCU安全启动加密算法解读

发布者:玄幻剑客最新更新时间:2024-01-08 来源: elecfans关键字:汽车MCU  安全启动  加密算法 手机看文章 扫描二维码
随时随地手机看文章

我们之前简单描述了汽车MCU常见的安全启动。这里我们就要对启动中所使用的加密算法进行描述。


首先我们来分析在MCU中安全启动时所需要的成员:

1、待校验对象(通常为应用程序)的数据长度、起始地址;

2、待校验对象进行校验时所需要的加密算法;

3、待校验对象进行校验时所需要的密钥;

有了上述三个成员,(注意:开始描述安全启动逻辑代码)启动的信任根(通常是HSM的BootRom)首先会查看待校验对象的数据长度和起始地址是否合法(通常就是范围判断),然后到slot中获取校验对象的验证密钥(思考下我这里为什么不说解密密钥而是说验证密钥?),最后将校验对象的数据按块放进硬件加速引擎进行处理,得出一个结果与预存在HSM NVM的结果(什么时候预存的?存到哪里的?)进行对比。

01. MCU安全启动加密算法选择

大家思考一个问题,在汽车MCU运行时代码通常都是直接在flash中运行,很少出现把一个功能栈拷贝到ram中运行,主要是MCU的SRAM通常十分珍贵,且比较小,虽然最近出来的片子S32G、TC3xx SRAM已经来到MB级别,但是鉴于成本、和芯片厂通常会将PFlash和CPU直连以加快取指速度,一般都还是采用比较传统的方式。

既然是直接取指,如果应用程序是加密存储在flash中,即使安全启动通过,应用程序解密完也没有足够的ram存放,所以一般来说,存放在flash中的代码均是以明文+签名or认证码的方式进行处理。

因此,汽车网络安全工程师最熟悉的AES128-CMAC来了。

02. AES-CMAC详解

首先我们来回顾什么是AES(advanced encryption standard)加密算法。

AES屁股后面跟的工作模式通常是CBCCFB这些,这个CMAC是个啥?

来看下全称:Cipher-based Message Authentication Code。

我们知道MAC本身就是与密码相关的Hash,它不仅提供了比crc这类算法更强的数据完整性保护,还防止了数据未经允许的修改、破坏等(验证数据来源)。为什么呢?因为MAC就是将密钥和明文使用某种算法共同计算出一个值,只有知道密钥的接收方才能计算出与之匹配的值;即使密钥被攻击者破解,由于MAC的hash属性,攻击者是无法反推出数据的。

所以我们在SecOC里面最常用的还是AES128-CMAC外加FvM防止重放攻击。

本质上,AES-CMAC和OMAC1(一种改进的CBC-MAC算法)相同,使用一个私密的密钥、可变长度的消息数据(对齐该消息按照固定长度进行分块计算),最终返回一个固定长度的值,这个值我们叫做MAC。

2.1 子密钥的生成

对于CMAC来说,存在数据长度不是128bit整数倍的情况,因此,这个算法流程有两种,如下:

3908fe44-957d-11ee-8b88-92fbcf53809c.png

case a :消息数据是128bit的整数倍,使用私密密钥k1生成MAC(T);

case b:消息数据不能整除,使用私密密钥k2生成MAC(T);

而私密密钥的生成又是按照如下方式生成:

1、初始向量IV(0) + 原始key,使用AES-128-CBC,生成一个中间输出L;

2、判断该L最高位是否等于0;如果等于0,k1 = L << 1;否则,k1 = (L << 1)XOR 0x87(Rb_const);

3、判断k1的最高位是否等于0;如果等于0,k2 = k1 << 1;否则,k2 = (L << 1)XOR 0x87(Rb_const);

3915e24e-957d-11ee-8b88-92fbcf53809c.png

同时对于上述两个case,使用k1或者k2生成消息数据最后一块的数据。

392360ae-957d-11ee-8b88-92fbcf53809c.jpg

需要注意的是,当处于case b时,M_last是需要进行填充的,填充方式参考04.数据填充

2.2 MAC生成算法

使用AES-CMAC进行计算,需要三个输入:私密密钥(k)、消息数据、消息数据长度;具体操作流程如下:

392d0ffa-957d-11ee-8b88-92fbcf53809c.png

仅在最后一步使用的明文分组生成AES-CMAC。

可以选择直接把明文组包+CMAC发给接收方,也可以用密文+CMAC。

03. HMAC详解

HMAC(Hash-based Message Authentication Code):Hash函数是公开的,因此直接使用无密钥的Hash对数据处理,只能保证数据的完整性。如果加上MAC值,那么就可以验证数据的来源有效

MD-5和SHA-1就是这种hash函数的示例。

参考链接如下:https://datatracker.ietf.org/doc/html/rfc2104

04. 数据填充

我们发现,在使用上述算法进行计算时,AES都是以一个块进行计算,如果此时要计算的数据分组后最后一块不够128bit,就要进行填充,常见填充方式(假设数据块为8个byte)如下:

全0填充

填充结构:

Data:| 11 11 11 11 11 11 11 11 | 11 11 00 00 00 00 00 00 |

PKCS#7填充

每一个字节都表示填充的长度,如下:

| 11 11 11 11 11 11 11 11 | 11 11 06 06 06 06 06 06 |

ANSI X.923 填充

该方式用0进行填充,但用最后一个字节表示填充的长度,如下:

| AA AA AA AA AA AA AA AA | AA AA 00 00 00 00 00 06 |   


关键字:汽车MCU  安全启动  加密算法 引用地址:汽车MCU安全启动加密算法解读

上一篇:电动汽车动力电池热失控原因分析
下一篇:ETC车载电子标签(OBU)的芯片和方案选型

推荐阅读最新更新时间:2024-11-02 05:16

不止自研 CPU,龙芯中科进军汽车芯片:首款 MCU 已流片
8 月 4 日消息, 龙芯 中科作为国内为数不多自研 CPU 的公司,此前已推出 龙芯 1 号系列、 龙芯 2 号系列和龙芯 3 号系列产品。如今,龙芯中科将进军 汽车 芯片 。 据《科创板日报》今日报道,龙芯中科近期在接受机构调研时表示,在 汽车 芯片 方面,龙芯中科主要是做了控制用的高可靠 MCU 芯片 ,第一款已经流片。其中 MCU 芯片是指微控制器芯片,又称单片机。该芯片是把 CPU 的频率与规格做适当缩减,并将内存、USB 等周边接口和驱动电路整合在单一芯片上的芯片级计算机。 值得一提的是,有业内人士表示, 汽车 的电气化正在推动电子产品在汽车中的使用,对关键汽车 MCU 的需求持续火爆,预计车用 MCU
[汽车电子]
不止自研 CPU,龙芯中科进军<font color='red'>汽车</font>芯片:首款 <font color='red'>MCU</font> 已流片
飞思卡尔混合信号MCU助力中国应对汽车电子技术挑战
据中国汽车工业协会统计,中国汽车销售量增长迅速,2013年4月比去年同期增长13%。与此同时,为在这个竞争激烈的市场中脱颖而出,汽车制造商为汽车不断添加新的功能,每辆汽车采用的电子配置也不断增加。为了满足经济高效汽车电子系统的需求,飞思卡尔半导体(NYSE: FSL) 的S12 MagniV混合信号微控制器(MCU)系列组合为中国汽车制造商提供了高度集成、单芯片解决方案,这些解决方案极为可靠且易于开发,同时有助于降低物料成本(BOM)和总制造成本。 上汽集团(SAIC)技术中心高级经理金哲峰表示:“S12 MagniV单芯片解决方案帮助我们实现了以前需要多个器件才能实现的相同功能,节省了板卡空间,降低了物料成本,并使器件之间的
[单片机]
瑞萨为汽车电子应用市场提供最佳MCU和解决方案
瑞萨的汽车用MCU   瑞萨的汽车用MCU已有25年以上的历史,在世界汽车用MCU中占有20%以上的市场份额。瑞萨的汽车用MCU被Bosch、Continental、Delphi、TRW、Aisin和Denso等世界主要的汽车电子制造商所采用。这些汽车电子制造商的产品又被世界上的众多汽车制造商所采用。对汽车来说,质量和性能最为重要,汽车制造商、汽车电子制造商对瑞萨的汽车用MCU所具备的高质量、高性能给予了很高的评价。由于取得了这些实际成绩,瑞萨又从当时尚未使用瑞萨产品的汽车电子制造商那里获得了许多贸易合同,这些汽车电子制造商正在使用瑞萨的汽车用MCU进行汽车电子产品的开发。下面将介绍应用于32位MCU的新产品的解决方案。 多核
[汽车电子]
瑞萨为<font color='red'>汽车</font>电子应用市场提供最佳<font color='red'>MCU</font>和解决方案
TMS570 MCU提升汽车制动系统安全
  微处理器 (MCU) 是 ECU 中的关键组件。使用传统的汽车MCU不可能达到 SIL3 认证要求。需要采用全新的芯片架构,以确保处理结果、总线流量的数据完整性以及存储器中数据的安全性与可靠性,同时满足严格的响应时间要求。   开发人员可充分利用市场上的微处理器,为 ECU 制动控制功能达到 SIL3 认证标准提供所需技术。TI 与罗伯特•博世有限公司 (Robert Bosch GmbH) 联合开发的 TMS570 就是一款这样的微处理器。   对于任何主要的汽车系统功能而言,电子底盘管理技术都具有极大的吸引力,但由于种种原因,该技术还很难实现,更不用说在安全与可靠性方面还面临众多难题。不过,为应对当前面临的安全规定
[嵌入式]
基于51单片机汽车速度时间表的毕业设计
一、 前 言 1.1 汽车速度时间表原理 以AT89C51为核心,通过光电传感器来检测汽画的运转情况进而实现对自行车的速度的计算,存储,最后用6位的LED能直观的将速度显示给用户,并且在速度高于一定的值时可自动向用户报警,从而达到智能速度里程表。 1.2 单片机最小系统 1 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。  对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。下面给出一个51单片机的最小系统电路图(图1): 图11 2 详细
[单片机]
基于51<font color='red'>单片机</font>的 <font color='red'>汽车</font>速度时间表的毕业设计
飞思卡尔推出首个加快和简化软件开发的汽车微控制器产品
随着新汽车中芯片内容和复杂性的不断增加,未来的汽车发展对软件愈发依赖。新汽车通常集成了超过1亿行内置代码,比大多数民用客机的代码数量还要多。虽然软件带来了令人兴奋的创新机会,但同时也增加了复杂性,催生了大量的代码维护和上市速度挑战。因此,汽车电子供应商现在投入到软件领域的开发资源超过了在硬件方面的开发资源。 为了应对这些挑战,飞思卡尔半导体推出了首个旨在大大加快和简化软件开发的汽车微控制器产品线S32K。S32K基于广泛采用的ARM Cortex架构,具有卓越的可扩展性和兼容性,适用于过去由异构、非一致的8位、16位和32位MCU服务的多种汽车电子应用,同时还为先进的工具和软件平台提供强大的基础。 为软件工程师解决难
[汽车电子]
基于单片机汽车制动性能检测仪的设计
  制动性能是机动车安全检测的重点指标之一,检验的方法有路试法和台架法。根据GB7258-1997规定,路试法主要在道路上对汽车制动性能进行检测,其检测的参数有制动距离;充分发出的平均减速度;制动踏板力;制动协调时间等 。   在道路上对汽车制动性能进行检测,其测试仪器主要是车速传感器,通过对汽车在道路上制动时的车速变化对汽车整车制动性能进行评价。现在普遍使用的制动性能检测仪大多是在车身上安装传感器,使用和维护比较困难。在机动车辆制动性能检测和交通事故的勘查以及汽车维修行业中,一种能够快速测出制动距离和制动时间,方便快捷,智能化,高精度,性价比高,无需与车辆进行机械和电气安装连接的汽车制动性能测试仪显的特别重要。为提高检测的自动
[测试测量]
基于<font color='red'>单片机</font>的<font color='red'>汽车</font>制动性能检测仪的设计
PIC单片机汽车电动车窗控制器中的应用
 随着汽车电子技术的发展,越来越多的电子产品装载到汽车上,极大地提高了汽车的动力性和舒适性,同时也增加了车内布线的难度和成本。CAN(Controller Area Network)作为一种串行数据通信总线,由于具有良好的可靠性、实时性及灵活性,已经成为国际标准(ISO11898) ,在汽车电子系统中得到了广泛的应用。  目前,在CAN系统设计中,使用最多的是单片机外挂独立的CAN控制器,如Philips公司的PCA82C200、SJA1000以及Intel公司的82526、82527等芯片。但是采用此类芯片的设计方案不利于系统集成化。本文以Microchip公司内部集成的CAN模块PIC18F258单片机为核心,介绍CAN总线电
[单片机]
PIC<font color='red'>单片机</font>在<font color='red'>汽车</font>电动车窗控制器中的应用
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved