0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

汽车软件的安全启动

哆啦安全 来源:汽车电子与软件 2023-02-22 09:27 次阅读

首语

随着软件定义汽车(Software Defined Vehicles, SDV)的概念的提出,汽车软件发展迅速,其功能越来越多,也变得越来越智能,汽车在为人们更好服务的同时,许多安全问题也随之出现。汽车安全主要分为功能安全和信息安全,功能安全主要是要求降低汽车硬件的随机失效概率,信息安全则主要保证汽车软件安全运行、正常升级。怎样保证软件能够安全运行,让汽车ECU只运行完整的、可信的软件?这种要求可以让汽车的安全启动(Secure Boot)来做到。

一、安全启动了什么

当驾驶者准备启动汽车时,汽车中各种各样的软件便会被加载,完成各种各样的服务。这些软件是汽车厂商设计并经过验证的,汽车厂商保证了他们的软件可行性和安全性,并把这些软件在汽车卖给消费者之前就安装在汽车中,并在后期对软件维护和优化升级,通过在线升级(On The Air, OTA)技术对汽车软件进行远程升级。消费者能持续获得可靠的优质软件服务。

0ec22736-b249-11ed-bfe3-dac502259ad0.png

这些看起来都没什么问题,但如果在消费者使用过程,这些配套软件被恶意替换,那么不但软件可能无法提供相应的服务和安全性,还极有可能对人和汽车本身造成严重伤害。所以汽车厂商在设计之初,就考虑到这一问题,实现了安全启动来应对,安全启动是一段在启动引导程序(Bootloader)中的程序,在实现汽车各项功能的软件(App)启动之前,Bootloader会首先启动,对App进行校验,主要检查App的两项指标:完整性(Integrity)、可信度(Authentication),如果检查不通过,则不会启动App。完整性指软件二进制可执行文件是否保持原样,有没有被篡改;可信度指软件的来源是否可靠,在汽车软件中,指是否是汽车厂商提供的。这两项指标确保了汽车运行的软件是来自汽车厂商有安全保证的软件,并且没有被篡改,从而保护了人和汽车的安全。

0ed8bec4-b249-11ed-bfe3-dac502259ad0.png

二、怎样保证安全

怎么在汽车上实现对App的完整性和可信度的检查呢?这里就需要一些密码学(Cryptography)技术。

先来了解一些名词:

哈希函数(Hash Function):可将任意长度数据转化为指定长度摘要(e.g. SHA2安全哈希函数,MD5)

对称加密(Symmetric Encryption):用同一把密钥对数据进行加解密(e.g. DES,AES高级加密标准)

非对称加密(Asymmetric Encryption):使用公钥和私钥对数据加解密(e.g. RSA,ECC)

完整性验证

App可执行文件是一个二进制文件,可以把App的可执行文件作为哈希函数的输入,会得到一个固定长度的哈希值(Hash Value),这里就不得不提到哈希函数的一个特点,哈希函数的输入值改变会影响输出值,而且是极大的改变,哪怕是输入值的一位(Bit)数据被改变。设想,使用哈希函数把汽车厂商的正版软件作为输入得到一个哈希值,并把其保存起来,黑客得到了汽车厂商的App并对其修改,然后想让汽车运行他修改过的软件,Bootloader在启动安全启动时,对修改后的App的再做一次哈希,发现与先前的值截然不同,也就不会启动带有风险的App。这就保证了软件的整体性。

0eeb087c-b249-11ed-bfe3-dac502259ad0.png

但这还不够,哈希函数的实现方式是公开的,汽车厂商可以正常的App生成一个哈希值H1存放起来,那么黑客也可以生产一份经过修改的App的哈希值H2替换之前的H1, 并把修改后的App刷入汽车中,这样Bootloader启动时发现保存的哈希值H2和即将要运行的App(经过修改的)一致,则会正常运行。就可以骗过安全启动的验证,达到运行修改后App的目的。解决这一问题,这就要提到另一个技术——一次性可编程(One Time Programmable, OTP),这是单片机的一种存储器类型,其作用是程序烧入单片机后,将不可再次更改和清除,汽车厂商可以将自己App所生成的哈希值存储到这样的存储器中,就可以保证经过安全启动验证的App一定是汽车厂商所提供的,这块区域也不可能被篡改。

可信度验证

但接下来还有一个问题需要解决,前面我们提到过OTA技术,汽车厂商会在消费者使用汽车过程中,持续对汽车软件进行维护和升级,如果汽车厂商把最初那一版App的哈希值放到了OTP存储器中,那么结果就是,汽车厂商对App升级后,由于这块区域的内容无法被更改(汽车厂商也无法修改),结果就是升级App后,由于安全启动校验不通过,导致软件无法启动。所以我们得采取其他的解决方案。

这里可以使用数字签名(Digital Signature)技术,可以采用非对称加密算法,利用私钥(Private Key)对汽车厂商App的哈希值进行加密生成一个签名保存起来,签名只能用公钥(Public Key)才能解密,签名解密后是一串哈希值,我们就可以用这个哈希值和即将要启动的App的哈希值进行比较。这样看起来就好了很多,在OTA升级时,利于数字签名技术对将要升级的App进行完整性和可信度验证,确保将要升级的App没有被篡改并且确实来自于汽车厂商(汽车厂商利用私钥加密,汽车软件升级验证时用公钥解密),然后将签名写入FLASH某个区域(不需要OTP特性)。那么公钥放在那里呢?前面提到的OTP又派上用场了,这块区域就可用来存储和汽车厂商成对的公钥。

0f04f43a-b249-11ed-bfe3-dac502259ad0.png

当然也有采用基于分组密码的消息认证码算法(Cipher-based Message Authentication Code,CMAC)的方案进行安全启动的验证,其目的是相似的,只不过使用的方法不同。

如何实现加解密

有了解决方案,如何实现这些复杂的算法呢?这里就要讲一讲车规级MCU的发展历史了,在一开始, MCU的芯片厂商并没有集成硬件来完成加密算法(Cryptographic Algorithm),加解密过程基本都是软件来实现的,其实软件加解密这一块离大家都很近,比如,熟悉Linux的同学知道,两个客户端要进行SSH通信前,需要提前生成SSH钥匙,这里的SSH钥匙就是上面提到的非对称加密算法中的公钥和私钥。这样实现加密算法的方法就是软件实现,所以早期汽车实现这些加密算法也都是通过软件层面实现的。这种方式有一定缺陷,比如加解密过程中,需要MCU中主核(一般是M4或M7)来完成整个算法,期间也不能做其他的事,主核在设计之初也没有考虑对加解密算法进行优化,结果就是实际效率会差很多。 目前,主流的方法是通过硬件实现加密算法,例如硬件安全模块(HSM,Hardware Security Modules)和安全硬件拓展(SHE,Secure Hardware Extension)。

SHE顾名思义,是对MCU的扩展,它主要提供类似于OTP的存储空间,并不能为主核提供硬件加速,结构图如下:

0f1ea6f0-b249-11ed-bfe3-dac502259ad0.png

HSM就强大得多,拥有自己的CPU,并且有类似OTP的安全存储区域,其结构如下:

0f311ef2-b249-11ed-bfe3-dac502259ad0.png

目前,大多数高端车规级芯片都会集成SHE和HSM,国外芯片厂商有ST、NXP、infineon等,国内芯片厂商有芯驰、地平线、黑芝麻等,比较常见内嵌HSM模块的芯片有意法半导体的SPC58、英飞凌的Trave系列、芯驰的G9X。

三、安全启动流程

上述的这些解决方法和工具已经可以实现完整的安全启动过程,这里要介绍一个安全启动的概念——信任锚(Trust Anchor),大家可以把它理解为运动会中接力赛的接力棒,其实仔细想想就会发现,上面讲的很多安全启动的内容都是Bootloader来完成的,那么Bootloader的完整性和可信度又该怎么保证呢?其实就是靠这个信任锚,BootRom(是一段固化在芯片Rom中的程序)它先检查Bootloader的完整性和可信度,确保没有问题后,将信任锚传递给Bootloader,然后Bootloader进行密钥的检查、签名验证等操作,确保App是正确的,然后才启动App完成各种服务。

0f6dc316-b249-11ed-bfe3-dac502259ad0.png

四、发展与挑战

汽车软件发展迅速,它给人民生活带来极大的便利,但机会和风险是并存的,汽车软件的信息安全问题也不容小觑,以UNECE/WP. 29 (R155、R156) 和 ISO/SAE 21434 为代表的汽车信息安全的国际法规与标准已经发布与实施,我国也早已将发展智能网联汽车上升到国家战略高度,国家各部委根据在车联网关键部件和生命周期各环节的职责划分,制定相关政策及执行监管,包括网信办、工信部、交通运输部、公安部、国标委等,共同推动建立健全智能网联汽车信息安全管理机制。例如,市场监管总局分别在2020年11月和2021年6月发布文件,规范了 OTA 技术在召回工作中的应用,明确要求生产者采用 OTA 方式消除汽车产品缺陷、实施召回的,须向市场监管总局备案。要求车企在使用 OTA 开展技术服务活动时,需向市场监管总局质量发展局备案;车企如果使用 OTA 消除车辆缺陷、实施召回的,也需要向市场监管总局质量发展局备案。

汽车信息安全技术也在不断进步,国内外汽车厂商都在努力做出安全可靠的汽车软件。相关外企研发出HSM模块,并嵌入加密算法、访问控制、完整性检查等技术到汽车控制系统,但是目前HSM仍然不支持国密算法,存在技术壁垒,未能实现国产自主可控。国内对于芯片集成安全硬件还不完备,此种情况下能有一款支持国密标准的国产汽车硬件安全模块对国内汽车行业十分重要。国密算法是我国自主研发创新的一套数据加密处理系列算法,随着我国智能汽车信息安全的要求,需要将国密算法嵌入到硬件加密芯片中结合使用。

最好的情况就是,能在芯片层面保证安全启动的方案和App软件都是自主可控,这样就可以最大程度的保证人和汽车的安全。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    709

    浏览量

    41266
  • 函数
    +关注

    关注

    3

    文章

    3911

    浏览量

    61313
  • 汽车软件
    +关注

    关注

    0

    文章

    60

    浏览量

    3054

原文标题:汽车软件的安全启动

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    汽车安全电子有望成“标配”

    `近日,甘肃校车安全事件,将行车安全再度推到风口浪尖,引发了社会各界对行车安全的思考,包括汽车主动安全、被动
    发表于 06-28 14:38

    汽车电子技术使我们的汽车安全-汽车车身网络系统

    发挥作用了。自动锁死的免钥匙进入系统已在全球数亿个基于发射机应答器的钥匙上得到应用,能使汽车“锁死”,切断动力,使未经授权就试图启动汽车的人无法驾驶,从而加强汽车
    发表于 08-18 14:05

    汽车功能安全汽车设计人员意味着什么?

    )错误的安全管理、硬件或软件中的随机故障和环境条件引起的问题。功能安全不是关于可靠性或系统的可用性,只要车辆安全地发生故障,它仍然被认为是功能安全
    发表于 10-22 09:06

    未来汽车安全怎么保证

    功能,如帮助汽车制造商在启动过程中验证软件、更新软件,以及个人或车辆敏感信息出现时加强运行中应用程序和交易的安全性。 此外,“Jacinto
    发表于 03-27 06:45

    汽车电子技术安全方面应该考虑什么

    启动发动机。这种连接功能需要依赖于汽车上的远程信息通信系统,而这种系统目前已经是许多型号汽车的标准配置。在这种智能手机推出之前,有个大学研究小组发布了一份研究报告,报告中指出,通过利用汽车
    发表于 05-16 10:44

    什么是汽车安全网关?

    汽车安全网关的主要功能是在车载网络和各种电子控制单元之间提供安全的无缝通信,并且能够在车内网络和外界网络之间建起一座桥梁。安全网关作为中心枢纽,通过不同网络间的物理隔离和不同通信协议间
    发表于 03-24 12:10

    请问怎样去设计一种汽车安全监控系统?

    基于SoPC的汽车安全监控系统硬件是由哪些部分组成的?基于SoPC的汽车安全监控系统软件是由哪些部分组成的?
    发表于 05-17 06:24

    使用STM32安全启动与固件更新

    STM32 X-CUBE-SBSFU 软件包已经发布,提供了安全启动(Secure Boot)和安全固件更新(SecureFirmware Update)功能。
    发表于 09-11 07:35

    车联网时代 汽车软件安全与驾驶安全同等重要

    近年来,车联网、无人驾驶汽车等依托于新技术的汽车应用发展迅猛。随着物联网技术日渐成熟,车联网服务将逐步实现车内、车与人、车与车、车与路、车与服务平台的多方位网络连接。此时,也延伸出了新的安全问题 —— 联网
    的头像 发表于 02-27 13:42 6947次阅读

    汽车功能安全软件开发阶段软件架构安全设计

    软件安全架构旨在刻画出实现软件功能安全基本的软件框架,需要在系统架构的基础上,对其软件部分进行进
    发表于 10-08 10:45 2108次阅读

    浅析汽车芯片信息安全安全启动

    目前世界各国已经开始制定相关法规来保障汽车的信息安全。2021年初,联合国世界车辆法规协调论坛(简称UN/WP.29)发布了两个信息安全相关的重要法规R155/R156,即信息安全(C
    的头像 发表于 03-07 10:19 1037次阅读

    广电计量 | 汽车功能安全软件安全测试方法

    广电计量汽车安全性能测试根据软件开发V模型,软件安全详细设计完成之后,需要进行相应的软件验证,集
    的头像 发表于 02-06 11:40 649次阅读
    广电计量 | <b class='flag-5'>汽车</b>功能<b class='flag-5'>安全</b><b class='flag-5'>软件</b><b class='flag-5'>安全</b>测试方法

    如何用启动电源给汽车电瓶充电?快速而安全的做法

    电量。 一、准备工作 为了确保安全,在操作启动电源之前,我们需要做一些准备工作。首先,确保汽车处于停车状态,并关闭所有电器设备,例如车灯和CD音响等。然后,找到汽车电瓶的正负极。正极通
    的头像 发表于 08-30 11:13 2224次阅读

    车规MCU的安全启动固件

    安全启动固件(Secure Boot Firmware) 车规MCU的安全启动固件(Secure Boot Firmware)是一种用于保护汽车
    的头像 发表于 10-27 17:20 1509次阅读
    车规MCU的<b class='flag-5'>安全</b><b class='flag-5'>启动</b>固件

    汽车网络安全:防止汽车软件中的漏洞

    汽车网络安全汽车开发中至关重要,尤其是在 汽车软件 日益互联的情况下。在这篇博客中,我们将分享如何防止汽车网络安全漏洞。 静态分析工具有助
    的头像 发表于 12-21 16:12 777次阅读
    <b class='flag-5'>汽车网络安全</b>:防止<b class='flag-5'>汽车</b><b class='flag-5'>软件</b>中的漏洞