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

这篇具有很好参考价值的文章主要介绍了一文搞懂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域。

secure boot,ADAS,Secure boot,secure boot,ADAS,Cyber security

信任链(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将会形同虚设。

secure boot,ADAS,Secure boot,secure boot,ADAS,Cyber security

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

启动时对软件组件的合法性校验由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 启动流程。

secure boot,ADAS,Secure boot,secure boot,ADAS,Cyber security

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

验证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,内容太多,难免挂一漏万,但是迈出第一步就是成功的一半。如果你觉得此文对你或者同行们有一些价值,欢迎转发。如果对文中的任何内容有任何建议请不吝赐教,如果想看到更多相关的感兴趣的内容,也欢迎私信联系。

感兴趣的朋友可以关注微信公众号“日拱一卒不期而至”获取更多内容。文章来源地址https://www.toymoban.com/news/detail-861077.html

到了这里,关于一文搞懂Secure Boot (安全启动)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS安装nvidia显卡驱动报错:CENTOS unable to load the kernel module ‘nvidia.ko‘/Secure Boot is enable

    具体错误: 是不是莫名其妙?恨不得把电脑砸了了。 经过一番搜索,终于找到了解决办法: 重启后再安装,万事大吉! 有人就奇怪,这么神奇的办法,谁发明的? Centos安装Nvidia驱动解决内核版本不匹配问题_Man in Himself的博客-CSDN博客 fedora - yum installs kernel-devel different from

    2024年02月13日
    浏览(59)
  • Spring Boot安全管理—Spring Security基本配置

    1.1 创建项目,添加依赖 创建一个Spring Boot Web 项目,然后添加spring-boot-starter-security依赖。 1.2 添加hello接口 在项目中添加一个简单的/hello接口,内容如下: 1.3 启动项目测试 访问/hello接口会自动跳转到登录页面,这个页面有Spring Security提供的。 默认的用户名是user,默认的登

    2024年02月08日
    浏览(52)
  • 【8】Spring Boot 3 集成组件:安全组件 spring security【官网概念篇】

    个人主页: 【⭐️个人主页】 需要您的【💖 点赞+关注】支持 💯 📖 本文核心知识点: spring security B 官网Doc : Spring Security Spring Security 是一个框架,它提供 身份验证 、 授权 和针对常见 攻击的保护 。它具有保护命令式和响应式应用程序的一流支持,是保护基于spring的应用

    2024年02月03日
    浏览(56)
  • Spring Boot 优雅集成 Spring Security 5.7(安全框架)与 JWT(双令牌机制)

    本章节将介绍 Spring Boot 集成 Spring Security 5.7(安全框架)。 🤖 Spring Boot 2.x 实践案例(代码仓库) Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。 它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring

    2024年02月12日
    浏览(57)
  • spring boot中常用的安全框架 Security框架 利用Security框架实现用户登录验证token和用户授权(接口权限控制)

    spring boot中常用的安全框架 Security 和 Shiro 框架 Security 两大核心功能 认证 和 授权 重量级 Shiro 轻量级框架 不限于web 开发 在不使用安全框架的时候 一般我们利用过滤器和 aop自己实现 权限验证 用户登录 Security 实现逻辑 输入用户名和密码 提交 把提交用户名和密码封装对象

    2024年02月06日
    浏览(55)
  • Spring Boot 3 + JWT + Security 联手打造安全帝国:一篇文章让你掌握未来!

    Spring Security 已经成为 java 后台权限校验的第一选择.今天就通过读代码的方式带大家深入了解一下Security,本文主要是基于开源项目spring-boot-3-jwt-security来讲解Spring Security + JWT(Json Web Token).实现用户鉴权,以及权限校验. 所有代码基于 jdk17+ 构建.现在让我们开始吧! Springboot 3.0 Spri

    2024年02月07日
    浏览(75)
  • Secure Copy Protocol or SCP - 安全拷贝协议

    Secure Copy (remote file copy program) The SCP program is a software tool implementing the SCP protocol as a service daemon or client. It is a program to perform secure copying. The SCP server program is typically the same program as the SCP client. The SCP Server software can be installed on a Regular Machine and be configured to only accept SCP Traffic on

    2024年04月14日
    浏览(45)
  • SSL(Secure Sockets Layer)安全套接层协议详解

    SSL(Secure Sockets Layer 安全套接层)协议 ,及其继任者 TLS(Transport Layer Security传输层安全)协议 ,是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密,用于保障网络数据传输安全,利用数据加密技术,确保数据在网络传输过程中不会被截取

    2023年04月09日
    浏览(42)
  • 【网络协议】远程登录安全连接协议SSH(Secure Shell)

    SSH(Secure Shell)协议是一种用于在不安全网络上提供安全远程登录、命令执行和数据传输的加密网络协议,通过公钥加密和身份验证技术确保通信的安全性和隐私性。 SSH(Secure Shell)最初由Tatu Ylönen在1995年开发,现在已经发展成为一种广泛使用的标准工具,尤其是在Unix和

    2024年02月03日
    浏览(63)
  • Secure-NSUserDefaults: 更安全地存储 iOS 用户默认数据

    在开发 iOS 应用程序时,我们经常需要持久化地存储用户的偏好设置或一些轻量级的数据。 NSUserDefaults 是一个非常方便的工具,用于存储简单的键值对数据。然而,由于其底层基于 SQLite 数据库,直接使用 NSUserDefaults 可能会导致敏感信息泄露。 本文将向您介绍 Secure-NSUserDef

    2024年04月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包