ToB企服应用市场:ToB评测及商务社交产业平台
标题:
一文搞懂Secure Boot (安全启动)
[打印本页]
作者:
小小小幸运
时间:
2024-11-28 21:00
标题:
一文搞懂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域。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/fed2cbca14da44728582fab0e140f936.png)
信托链(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将会形同虚设。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/d8fe62a3ebd847ef9416936f15bda187.png)
启动时软件镜像署名的校验
启动时对软件组件的合法性校验由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 启动流程。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/848253b3d6c8418c9b6d90796845badb.png)
上图展示了体系在启动时对软件组件的校验过程,可分为五个步骤:
验证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,内容太多,难免挂一漏万,但是迈出第一步就是成功的一半。如果你觉得此文对你大概偕行们有一些代价,接待转发。如果对文中的任何内容有任何建议请不吝见教,如果想看到更多相干的感兴趣的内容,也接待私信接洽。
感兴趣的朋友可以关注微信公众号“日拱一卒不期而至”获取更多内容。
学习筹划安排
我一共分别了六个阶段,但并不是说你得学完全部才能上手工作,对于一些低级岗位,学到第三四个阶段就足矣~
这里我整合并且整理成了一份【282G】的网络安全从零底子入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!
如果你对网络安全入门感兴趣,那么你需要的话可以
点击这里
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4