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

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

3天内不再提示

什么是汽车安全启动,如何实现

星星科技指导员 来源:瑞萨电子 作者:Philip Lapczynski 2022-04-25 09:17 次阅读

大家好,我是瑞萨电子汽车安全首席工程师 Phil Lapczynski。我在 Renesas 的安全团队工作了 4 年,在此之前,我在汽车安全、OTA 解决方案和引导加载程序方面工作了十多年。我很高兴地发布一系列博客文章,介绍安全启动的概念并描述如何使用我们的瑞萨汽车 MCU 和 SoC 设备实现这些概念。这篇博客文章是三部分系列的第一部分,旨在让读者基本了解什么是安全启动以及为什么需要它。期待来自同事 Satoshi Yamanaka-san 和我的更多安全引导文章。

1. 日益严峻的挑战

自 1960 年代后期将微处理器引入车辆架构以来,现代汽车的复杂性呈指数级增长。车载计算机最初用于电控燃油喷射,现在可以控制现代车辆的各个方面,从加热座椅到半自动驾驶。今天的汽车有 100 多台车载计算机执行超过 1 亿行代码。从复杂性的角度来看,1亿正在接近像老鼠这样的小动物的DNA碱基对总数(人类大约有33000亿碱基对)。未来的自动驾驶汽车将拥有超过 3 亿行代码。

fig1 百万行代码

随着这种复杂性的增加,网络安全成为汽车设计中持续关注的问题。随着更多的驾驶控制权被赋予计算机,网络安全事件的影响更加复杂。为了使事情更具挑战性,安全架构师需要平衡隐私和安全与功能安全要求。对于安全和安保来说,在车辆中运行的代码必须是真实的和不变的。这就是安全启动的用武之地。安全启动回答了“我怎么知道软件在执行之前是真实的?”和“我怎么知道软件在执行之前没有改变?”的问题。

2. 安全训练营

安全启动是现代多层嵌入式系统安全的基础性第一步。安全启动是一种安全机制,通过它在执行之前验证软件的完整性和真实性。换句话说,安全启动允许在启动嵌入式设备时检测(并且可能不允许执行)不真实或修改的软件。安全启动降低了攻击者在设备中获得持久性的能力。

Fig2 安全训练营

在最基本的层面上,如果预期的软件不是预期的,则会执行一组定义的制裁。制裁可能包括禁止访问加密密钥或外围设备、重置 CPU 或执行后备或设备恢复程序。虽然从最高级别来看,这个概念似乎很简单,但确保安全启动正常工作涉及许多步骤。

3. 建立信任根

要执行安全启动,需要“信任根”。这实质上为所有进一步的步骤建立了基本事实,并将信任链锚定到不可变的东西上。“信任根”,有时称为“信任锚”,植根于设备硬件的不可变部分。虽然有几种方法可以实现这一概念,但它们通常都有两个关键特征:1)必须能够安全地控制复位向量。2) 复位向量指向的代码必须是安全的。

复位后执行的常见解决方案包括:

无法更改的固定掩码 ROM

编程和锁定的一次性可编程 (OTP) 代码闪存

在以受保护内存为引导核心的专用安全核心上执行软件

第一个代码块必须执行安全启动逻辑。其目标是为下一个引导阶段准备系统并对其进行验证。这个关键的代码块必须经过严格的审计,并将复杂性保持在最低限度。作为系统的不可变部分,这部分代码中的任何漏洞或错误通常只能通过完全更换硬件来修复。

4.验证软件镜像

构建安全启动实施的下一步是验证软件映像。通常有两种不同的方法用于检查安全启动中的真实性和完整性。选择的方法基于设计要求或启动时间等因素。

fig3 验证软件镜像

4.1 方法一:使用对称算法进行安全启动验证

验证引导代码的一种方法是使用称为消息验证代码的密钥对称加密算法。如果硬件设备具有用于所用算法的加速器,则可以实现此方法的好处。使用 CMAC 或 HMAC 算法可以缩短启动时间。该解决方案的最大挑战是加密密钥和参考 MAC 的存储。用于对称算法的私钥需要安全地存储在受保护的安全环境(如 HSM)中。此外,由于 MAC 生成和 MAC 验证使用相同的密钥,因此默认情况下不提供不可否认性属性。为了解决这个缺点,可以将密钥配置为具有由硬件强制执行的 MAC 生成或仅验证属性。

4.2 方法二:使用非对称算法进行安全启动验证

在这种方法中,代码使用非对称加密算法(也称为公钥加密)进行验证。非对称算法基于称为单向函数的数学问题。两种流行的解决方案是RSA和ECDSA。虽然基础数学和算法不同,但两种解决方案都依赖于公钥和私钥对。

fig4 非对称算法

FlippyFlink,CC BY-SA 4.0,来自维基共享资源

要验证图像,必须由签名机构使用私钥对图像进行签名。这是在设备外部完成的。在设备上,安全启动代码使用公钥验证映像。由于密钥是公开的,并且私钥不能轻易地从公开密钥的知识中推导出来,因此公开密钥的私密性不是必需的。虽然为了密钥的安全不需要公钥的隐私,但系统仍然必须确保公钥不能在未经授权的情况下被修改或替换。

4.2.1 签名生成

要生成签名,需要根据输入数据计算消息摘要(哈希)。这通常是在嵌入式设备之外的企业环境中创建的。签名者用他们的私钥加密消息摘要。加密的摘要称为签名。签名的类型取决于算法和填充方案(例如 RSA-PSS)。原始图像数据和签名被编程到设备中。

4.2.2 签名验证

签名验证是根据代码签名验证数据的完整性和真实性的过程。验证涉及计算数据的消息摘要(散列)并将其与解密签名中收到的摘要进行比较。

图6 验证流程

5. 建立信任链

在进行安全启动时,存在多种构建信任链的方法。选择的策略主要由启动时间要求驱动。

fig7 单片安全启动

执行安全启动的最简单方法是单片方法,其中整个映像由第一阶段启动验证。虽然干净简单,但由于启动时间要求,单片启动很少在现实世界中工作。嵌入式设备通常需要在上电复位后的几毫秒内启动并执行其主要任务。在这些情况下,必须采取分阶段的方法。

fig8 分阶段安全启动

更先进的解决方案允许部分执行和验证并行运行。这在多核系统上最为常见。

fig9 多核并行安全启动

随着图像大小和复杂性的增加,加密硬件加速器成为满足时序要求的必要条件。

6. 当幸福的道路不那么幸福时……制裁

到目前为止,我们只讨论了验证通过时的一般流程,但是如果其中一个阶段验证失败会发生什么?在这种情况下,需要实施制裁。系统设计者必须决定在验证阶段失败时该怎么做。根据阶段和其他系统要求,可能会发生一种或多种可能的制裁:

系统重置

以降低的权限执行下一个阶段

例如,禁止使用加密密钥或某些外围设备

执行备用验证应用程序

将执行更改为后备或备用应用程序

这种情况在 OTA 或诊断更新失败的情况下特别有用

停留在当前启动阶段

7. 如何更新软件?

好的,所以我们知道安全启动将确保应用程序是真实的和不变的,但是我们如何解决使用新(真实)软件更新设备的需求?软件更新允许新功能并允许修复错误和安全漏洞。关键是保护这些更新的能力。每次新软件发布,新软件都必须辞职。已发布软件的签名需要成为生产软件开发的构建/发布过程的一部分。解决此过程的复杂性和安全性并非易事。我们不会在本文中讨论软件更新安全,但是有像TUF和Uptane这样的项目直接关注这个话题。我们计划在未来发布一篇关于软件更新的深入文章。

8. 结论

总之…

安全启动对于创建安全的信任链系统是不可或缺的。

它提供:

#1 - 身份验证(未经授权的图像不允许运行)

#2 - 完整性(应检测到“篡改”图像)

它通常使用:

数字签名

确保身份验证和完整性

私钥 -》 用于签名

公钥 -》 用于验证

(可选)图像/数据加密

用于保密

用于防克隆/防伪

当验证失败时,将应用制裁

安全启动需要与软件更新策略共存

审核编辑:郭婷

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

    关注

    3027

    文章

    7979

    浏览量

    167237
  • 瑞萨电子
    +关注

    关注

    37

    文章

    2868

    浏览量

    72246
收藏 人收藏

    评论

    相关推荐

    NTC温度传感器:护航新能源汽车电池安全运行

    近几年随着新能源汽车的发展,电池安全性能问题也逐渐成为大家议论的话题之一。汽车电动机动力来源完全依赖于电池组,一旦电池发生热失控、短路等故障,可能引发火灾甚至爆炸,对车辆及乘员构成严重威胁。因此
    发表于 11-26 10:15

    汽车无钥匙进入及一键启动功能介绍

    随着汽车的普及和发展,人们对汽车的智能化和舒适化要求越来越高,为了满足人们对汽车的这些要求,汽车无钥匙进入和无钥匙启动系统应运而生。   无
    的头像 发表于 11-16 10:19 997次阅读
    <b class='flag-5'>汽车</b>无钥匙进入及一键<b class='flag-5'>启动</b>功能介绍

    UID加密安全启动原理分析

    本文导读 ZDP14x0系列芯片是内置开源GUI引擎的图像显示专用驱动芯片,在实际产品开发中需要加密保护,防止应用程序被读取和盗用,本文将介绍如何实现UID加密安全启动。 UID加密安全
    的头像 发表于 11-11 11:49 464次阅读
    UID加密<b class='flag-5'>安全</b><b class='flag-5'>启动</b>原理分析

    自动驾驶汽车安全吗?

    随着未来汽车变得更加互联,汽车逐渐变得更加依赖技术,并且逐渐变得更加自动化——最终实现自动驾驶,了解自动驾驶汽车安全问题变得非常重要,这样
    的头像 发表于 10-29 13:42 544次阅读
    自动驾驶<b class='flag-5'>汽车</b><b class='flag-5'>安全</b>吗?

    外接电源启动汽车如何接线

    外接电源启动汽车的基本步骤和注意事项 1. 准备工具和设备 外接电源(如另一辆车的电池) 跳线电缆(至少2米长,足够粗以承载启动电流) 手套(保护手部免受电击) 绝缘胶带(用于固定电缆) 手电筒(在
    的头像 发表于 10-12 09:27 715次阅读

    中国首推汽车智能安全评价体系,助力自动驾驶汽车安全性评估

    10月10日传来消息,我国在智能汽车安全领域取得了显著进展,在重庆正式推出了首个汽车智能安全评价体系。该体系针对智能汽车的环境感知、决策控制
    的头像 发表于 10-10 16:29 1026次阅读

    PWM技术如何实现电机的平滑启动和停止

    PWM(脉冲宽度调制)技术在电机控制中实现平滑启动和停止的功能,主要通过精确调节电机输入电压或电流的波形来实现。这种技术能够显著减少电机在启动和停止过程中的机械冲击和振动,从而延长电机
    的头像 发表于 08-12 17:53 1906次阅读

    esp32-c3开启安全启动和flash加密概率不启动是什么原因导致的?

    esp32-c3开启安全启动和flash加密概率不启动,重新上电就好了,启动时候签名校验错误,硬件sha256 返回全0,怀疑是烧efuse影响了硬件sha,把硬件sha替换为软件sh
    发表于 06-19 06:42

    什么叫软启动?如何实现启动

    启动(Soft Start)是一种电动机启动方式,它通过控制电动机的启动电流,使电动机在启动过程中逐渐加速,从而减少启动时的电流冲击和机械
    的头像 发表于 06-18 11:31 8776次阅读

    大众汽车集团启动“KI 10”项目

    为应对市场挑战,大众汽车集团启动了一项名为“KI 10”的绩效项目。该项目旨在未来三年内实现降本20%的宏伟目标,涵盖固定成本和人员成本。
    的头像 发表于 06-05 14:41 892次阅读

    哪吒汽车APP启动鸿蒙原生应用开发

    哪吒汽车正式签约,启动鸿蒙原生应用开发;在5月17日,在上海市经济和信息化委员会指导的“千帆竞发启航 共筑鸿蒙生态——HDD上海站·鸿蒙原生应用专场”活动中哪吒汽车与华为签约启动鸿蒙原
    的头像 发表于 05-18 09:48 1182次阅读

    专家访谈 | AI如何助力汽车功能安全?(汽车安全②:功能安全

    汽车行业中,确保功能安全至关重要。开发汽车功能需要一个严格的流程来最小化风险并增强安全性。本期“专家访谈”栏目,我们邀请到广电计量汽车功能
    的头像 发表于 04-08 15:42 440次阅读
    专家访谈 | AI如何助力<b class='flag-5'>汽车</b>功能<b class='flag-5'>安全</b>?(<b class='flag-5'>汽车</b><b class='flag-5'>安全</b>②:功能<b class='flag-5'>安全</b>)

    请问汽车ECU通信如何实现

    汽车ECU通信如何实现
    发表于 02-01 07:09

    如何使用PSoC 61进行安全启动

    我们知道所有关于安全启动的文档都是基于 PSoC 62、63 或 64 的。 因为安全启动机制包括 M0+ 和 M4。 我们想知道如何使用 PSoC 61 进行
    发表于 01-30 07:51

    混合动力汽车驱动系统的启动/停止功能

    轻度混合动力和全混合动力都具有启动/停止功能(图1-8)。但是,传统驱动汽车也可装备一套启动/停止系统。
    的头像 发表于 01-23 13:41 841次阅读
    混合动力<b class='flag-5'>汽车</b>驱动系统的<b class='flag-5'>启动</b>/停止功能