一文搞懂Secure Boot (安全启动)

何为安全启动?

随着汽车新四化的发展,尤其是网联化及自动驾驶的推进,汽车网络信息安全显得越来越重要。

随着高级驾驶辅助(ADAS)及自动驾驶的推出,车辆动力及制动控制需要部分或全部授权给智能驾驶系统,而车辆又暴露在互联网当中,此时如果智能驾驶系统被黑客攻破,后果将不堪设想。

黑客可能会篡改自动驾驶系统的软件控制系统,植入他们事先编制好的软件,从而实现非法控制车辆的目的。

自动驾驶系统开发人员如何避免这种情况发生呢?这就是今天我们要讲的主题:安全启动。所谓安全启动,也就是只能让自动驾驶系统运行合法的软件(由零部件供应商开发的软件),当软件被篡改时,整个自动驾驶系统将不会工作,这样就可以避免黑客操纵车辆。

安全启动在TDA4上的实现

知道了什么是安全启动以及它的作用,我们一起来看一下它是如何实现的,介绍实现最好有具体的例子,这样方便大家理解。今天我们基于德州仪器的TDA4这款SoC来介绍一下安全启动的实现方案。

TDA4是德州仪器推出的一款高性能、超异构的多核SoC,拥有ARM Cortex-R5F、ARM Cortex-A72、C66以及C71内核,可以部署AUTOSAR CP系统、HLOS(Linux或QNX)、图像处理以及深度学习等功能模块,从而满足ADAS对实时性、高运算能力、环境感知及深度学习等方面的需求。

TDA4的架构如下图,可以分为MAIN域、MCU域和WKUP域(DMSC)。
MAIN域集成了2个A72核,4个R5F核,2个C66核和1个C71核。环境感知(图像感知和超声感知),传感器融合(图像和超声信号融合),智能驾驶算法(路径规划),深度学习等会部署到MAIN域,也就是智能驾驶的主要功能逻辑会部署到MAIN域。

在这里插入图片描述

信任链(Trust chain)和信任根(Trust root)

在我们的整个软件系统中存在多个软件组件,比如SBL(Second bootloader),FBL(Flash bootloader)和Application,当系统启动时这些组件的运行是有一个确定的先后顺序的(SBL->FBL->App),启动过程中需要按照启动顺序依次对每个软件组件进行校验,校验通过后再启动该组件。

校验通过的组件被称为受信任的组件,当所有的软件组件校验通过,它们就组成了一个受信任的软件链条,即信任链(Trust chain)。这条链条中最初被校验的组件(例子中的SBL),就是信任根(Trust root)。

信任根是整个信任链的根本,如果不对SBL进行校验或者校验被绕过试想会发生什么?如果SBL被黑客替换,黑客可以在自己的SBL中不去校验FBL,从而替换掉FBL,在非法的FBL中不对APP进行校验,从而替换掉APP,由此可见信任根(上面例子中的SBL)在安全启动过程中的重要性。

软件镜像签名

系统在启动时如何判断将要运行的软件是否合法呢?我们需要给每一个软件组件的头上加上一个X509证书(X509 Certificate),X509是密码学里公钥证书的格式标准,应用场景很广泛,感兴趣的可以自行搜索查阅。

TDA4软件组件的X509证书主要包含以下几个内容:

公钥-与加密用到的私钥对应

软件镜像的 SHA2-512 Hash值,通过SHA2-512算法计算得来

X509证书的数字签名

介绍证书校验的时候会说明上面各个项目的作用。

下图展示了给软件镜像添加X509证书的过程:

此步骤的完成可以通过TI SDK里提供的脚本实现,可以在Makefile中调用,而签名用到的私钥和公钥则要自己生成并妥善保管,如果密钥被泄露secure boot将会形同虚设。

在这里插入图片描述

启动时软件镜像签名的校验

启动时对软件组件的合法性校验由TDA4专门的一个控制器实现,该控制器叫DMSC(Device Management. & Security Controller),该控制器主要负责设备管理(设置时钟、启动其他核等)及安全控制。上文提到的SBL是运行在MCU域的,和DMSC是相互独立的。我们在SBL中通过调用API(TISCI_MSG_PROC_AUTH_BOOT)请求DMSC对FBL和APP进行合法性校验,而对SBL的校验则是由Boot ROM发起的,Boot ROM的介绍可以查阅之前发布的一篇文章:一文搞懂德州仪器TDA4 启动流程。

在这里插入图片描述

上图展示了系统在启动时对软件组件的校验过程,可分为五个步骤:

验证X509证书中的公钥是否是合法。对比X509证书中包含的公钥Hash和fuseROM中储存的公钥Hash,如果一致则进行第2步校验,失败的话将返回失败结果给校验发起者。fuseROM是SoC内部的一个ROM,这个ROM只能被烧录一次且内容只能被DMSC读出来,这样就可以保证公钥的安全性。fuseROM的烧录TI也提供了专门的工具: key-writter,感兴趣的可以到TI官网查阅相关信息。

对X509证书的内容进行校验。对证书内容(除证书Signature以外)进行Hash运算,与证书Signature解密出来的Hash进行对比,如果一致则进行第3步校验,失败的话将返回失败结果给校验发起者。

校验软件镜像的一致性。根据软件镜像的数据内容计算Hash,并与证书中的镜像Hash对比,如果一致则进行第4步校验,失败的话将返回失败结果给校验发起者。

对镜像的数据内容进行解密,这一步是建立在软件镜像加签名时对镜像数据内容进行了加密。

对比解密后的软件镜像中Magic Number和证书中的Magic Number,这一步同样是建立在软件镜像加签名时对镜像数据内容进行了加密。

如果不对整个软件镜像内容进行加密,则第3步通过后将返回校验通过的结果给校验请求发起者(假设是SBL请求校验APP),反之则是第5步通过后将返回校验通过的结果给校验请求发起者。SBL收到校验通过的结果,将会加载并跳转到APP运行。

TDA4的软件系统包含的软件组件不止上面提到的SBL、FBL及APP,还有主域A72运行的软件(Linux或QNX),主域R5F核运行的软件,以及DSP核(C66, C71等),这些软件镜像的校验过程和上面描述的是一样的。前文只是简化了软件组件,方便大家理解。

一篇文章很难完全说明白Secure boot,内容太多,难免挂一漏万,但是迈出第一步就是成功的一半。如果你觉得此文对你或者同行们有一些价值,欢迎转发。如果对文中的任何内容有任何建议请不吝赐教,如果想看到更多相关的感兴趣的内容,也欢迎私信联系。

感兴趣的朋友可以关注微信公众号“日拱一卒不期而至”获取更多内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/354835.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么测试app?app的测试技巧是什么?

前言 今天笔者想和大家来唠唠app测试,现在的app有非常的多,这些app都是需要经过测试之后才能发布到应用市场中,app已经成为了我们日常生活中不可或缺的一部分了,但它的功能必须强大,才能受到消费者的重视,…

WordPress如何自定义日期和时间格式?附PHP日期和时间格式字符串

WordPress网站在很多地方都需要用到日期和时间,那么我们应该在哪里设置日期和时间呢?又如何自定义日期和时间格式呢?下面boke112百科就跟大家一起来学习一下PHP标准化的日期和时间格式字符串。 特别说明:格式字符是标准化的&#…

【控制算法笔记】卡尔曼滤波(一)——基本概念和一维卡尔曼估计实现(python,C++)

本文是个人学习笔记,包含个人理解,如有错误欢迎指正。 前言–关于Kalman Filter 在工程实践中卡尔曼滤波器的应用场景非常丰富,尤其是针对需要大量连续数据处理的自动驾驶和工业现场控制场景中,几乎离不开卡尔曼滤波的踪迹。 在多…

类和对象 第五部分第二小节:左移运算符重载

作用&#xff1a;可以输出自定义数据类型 代码案例&#xff1a; 1.成元函数重载&#xff1a; 利用成员函数重载写出来的代码为 void operate<<(cout)等于p<<cout&#xff0c;与预期效果不符。因此我们不会利用成员函数重载<<运算符&#xff0c;因为无法实现c…

06.领域驱动设计:使用DDD分层架构,可以有效降低层与层之间的依赖

目录 1、概述 2、什么是DDD分层架构 1.用户接口层 2.应用层 3.领域层 4.基础层 3、DDD分层架构最重要的原则是什么 4、DDD分层架构如何推动架构演进 1.微服务架构的演进 2.微服务内服务的演进 5、三层架构如何演进到DDD分层架构 我们该怎样转向DDD分层架构 6、总结…

0127-2-Vue深入学习5—Vue-Router路由模式

1、Vue-Router三种路由模式&#xff1a; hash&#xff1a;#️⃣使用URL hash 值来做路由&#xff0c;支持所有路由器&#xff1b;history:&#x1f4d6;依赖HTML5 History API和服务器配置&#xff1b;abstract:⛓支持所有JS运行环境&#xff0c;Node.js服务端&#xff1b; 1.1…

陪诊小程序开发:让医疗服务更贴心

随着社会的发展和人口老龄化的加剧&#xff0c;医疗服务的需求日益增长。在这个背景下&#xff0c;陪诊小程序的开发应运而生&#xff0c;为医疗服务提供了更加便捷、高效的解决方案。本文将探讨陪诊小程序开发的意义、功能、优势以及未来发展趋势。 一、陪诊小程序开发的意义…

ES -倒排索引

倒排索引 在学习ES中的映射之前&#xff0c;我们先学习一下ES中的倒排索引。 定义 倒排索引就是单词到文档id的关系&#xff0c;如下所示&#xff0c;左边是一个正排索引&#xff0c;右边就是一个单词到文档id的倒排索引&#xff1a; 倒排表以字或词为关键字进行索引&#x…

XCTF:Normal_RSA[WriteUP]

从题目中获取到两个文件 flag.enc内容是通过rsa加密了的密文 pubkey.pem是rsa公钥&#xff0c;加密者利用这个文件对flag原文进行了加密 如果对rsa加密算法不了解的可以补一下教学视频 数学不好也能听懂的算法 - RSA加密和解密原理和过程_哔哩哔哩_bilibili 使用openssl对公…

【前端web入门第二天】02 表单-input标签-单选框-多选框

表单 文章目录: 1.input标签基本使用 1.1 input标签占位文本1.2 单选框 radio 1.3 多选框 checkbox 作用:收集用户信息。 使用场景: 登录页面注册页面搜索区域 1.input标签基本使用 input标签type属性值不同&#xff0c;则功能不同。 <input type"..."&g…

BGP同步规则

BGP同步规则:开启同步下,从IBGP收到一条路由不会传给任何EBGP邻居(实验效果IBGP邻居和EBGP邻居都不传),除非从自身的IGP中也学到这条路由。目的是防止AS内部出现路由黑洞,向外部通告了一个本AS不可达的虚假的路由。 同步规则只影响从IBGP邻居收到的路由,不影响从EBGP邻居收…

伊恩·斯图尔特《改变世界的17个方程》相对论笔记

它告诉我们什么&#xff1f; 物质包含的能量等于其质量乘以光速的平方。 为什么重要&#xff1f; 光的速度很快&#xff0c;它的平方绝对是一个巨大的数。1千克的物质释放出的能量相当于史上最大的核武器爆炸所释放能量的约40%。一系列相关的方程改变了我们对空间、时间、物质和…

C语言 unicode 字符串处理Demo

概述 做个笔录 1、示例1 #include <stdio.h> #include <string.h> #include "main.h"struct strStruct {uint16_t phone_num[16];uint16_t message[400]; };void filterSpaces(char* src, char* dst) {uint8_t i 0;uint8_t flag 0;char* p NULL; fo…

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【Go-Zero】Windows11下etcd的安装与初步使用 大家好 我是寸铁&#x1f44a; 总结了一篇Windows11下etcd的安装与初步使用的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言&#xff1a; 在使用etcd 前&#xff0c;我们需要了解一下etcd 是什么&#xff0c;为什么使用etcd…

C++ STL中list迭代器的实现

list 的模拟实现中&#xff0c;重难点在于迭代器功能的实现&#xff0c;因此本文只围绕 iterator 及 const_iterator 的设计进行介绍&#xff0c;其余如增删查改则不再赘述——在C语言的基础上&#xff0c;这些都非常简单。 与 string / vector 不同&#xff0c;list 的节点原生…

基于springboo校园社团信息管理系统

摘要 随着高校规模的扩大和学生社团活动的日益丰富多彩&#xff0c;校园社团信息管理成为一个备受关注的问题。为了更有效地组织、管理和推动校园社团的发展&#xff0c;本文设计并实现了一套基于Spring Boot的校园社团信息管理系统。本系统以实现社团信息的集中管理和高效运营…

Android Automotive:在路上释放 Android 操作系统的力量

Android Automotive&#xff1a;在路上释放 Android 操作系统的力量 Android 在汽车行业的历程车载信息娱乐系统 (IVI) 的演变汽车中的 Android&#xff1a;演变和进步Android 汽车操作系统的崛起Polestar 2&#xff1a;开创 Android 汽车体验Android 开源项目 (AOSP) 及其他项…

不确定优化入门:用简单实例讲明白随机规划、鲁棒优化和分布鲁棒优化

文章目录 1 引言2 学习动机3 经典问题4 解决方案4.1 忽略不确定性4.2 随机规划4.3 鲁棒优化4.4 分布鲁棒优化 5 总结相关阅读 1 引言 按2024的原定计划&#xff0c;今年开始要学习不确定优化了。 粗略翻阅了一些相关的书籍和教程&#xff0c;大都包含许多数学公式&#xff0c…

网络安全科普:SSL证书保护我们的网上冲浪安全

当我们在线上愉快冲浪时&#xff0c;各类网站数不胜数&#xff0c;但是如何判定该站点是安全还是有风险呢&#xff1f; 当当当&#xff0c;SSL数字证书登场&#xff01;&#xff01; SSL证书也称为数字证书&#xff0c;是一种用于保护网站和用户之间通信安全的加密协议。由权…

Steam游戏免费玩 gamebox 一起来玩幻兽帕鲁吧

steam大作免费畅玩 幻兽帕鲁也有资源 UI设计精美 还有补票链接&#xff0c;点击一下&#xff0c;就能跳转至Steam商店 可以自定义安装位置 下载链接 gamebox&#xff1a;https://rssm666.lanzn.com/b039g6dqj