论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
一文搞懂Secure Boot (安全启动)
一文搞懂Secure Boot (安全启动)
锦通
金牌会员
|
2024-6-19 10:41:19
|
显示全部楼层
|
阅读模式
楼主
主题
892
|
帖子
892
|
积分
2676
何为安全启动?
随着汽车新四化的发展,尤其是网联化及自动驾驶的推进,汽车网络信息安全显得越来越紧张。
随着高级驾驶辅助(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,内容太多,难免挂一漏万,但是迈出第一步就是成功的一半。如果你以为此文对你大概偕行们有一些价值,欢迎转发。如果对文中的任何内容有任何建议请不吝赐教,如果想看到更多相关的感爱好的内容,也欢迎私信联系。
感爱好的朋友可以关注微信公众号“日拱一卒不期而至”获取更多内容。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
锦通
金牌会员
这个人很懒什么都没写!
楼主热帖
漏洞利用
快速入手node.js
vue3 - 最新详细实现 “拖曳式课程表“ ...
如何成为一位人心所向的管理者?我的经 ...
奇怪,为什么ArrayList初始化容量大小 ...
如何在文章中设置灰色文本框(正文底色 ...
医院HIS体系厂家统计
八、MySQL之事务控制语言
Vue实现复制粘贴功能
理解MVCC
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表