车载信息安全之Secure Boot实现策略_vector secure boot-程序员宅基地

技术标签: AUTOSAR  非对称加密技术  对称加密技术  车载信息安全  Hash算法  信息安全  Secure boot  ADAS  

车载信息安全之Secure Boot实现策略

前言

开篇老规矩,”小T三问“,你是否清楚:

  • 车载信息安全的重要性体现在哪里?
  • Secure Boot的主要实现目的是什么?
  • Secure Boot常规的实现方案是怎样的?

这篇,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:

在这里插入图片描述


正文

在开始讲解安全启动(Secure Boot)之前,我们首先来简单认识以下为什么需要有车载信息安全?

为什么要有车载信息安全?

随着智能驾驶,智能座舱的不断发展,车内ECU也越来越集中化,网络化,ECU之间不单单可以直接通过以太网通信,同时也可以通过V2X技术与车外进行通信,车与车之间,车与外界之间联系越来越紧密,如此一来便无形之中给外界开了诸多与车辆通信的渠道。

比如我们最为常见的整车OTA技术,如果在行车过程中,ECU中运行的软件突然被黑客进行篡改或者控制,将会大大影响到行车安全,随着未来整车自动驾驶技术的不断发展,从L3到L4甚至到L5,人在驾驶方面起到的作用将会越来越小,此时整车的信息安全将会显得至关重要。

而整车信息安全的就在于整车各个智能控制ECU在启动阶段就做好相关的安全确认与校验,才能将风险及时控制住,如果在Runtime时候去检测,则可能会造成更大的行车安全问题。

因此,在车载信息安全领域,在各个智能ECU节点的启动阶段做好相应的安全检查技术,也就是我们所说的安全启动技术,即Secure Boot技术,毫无疑问便可以将各种黑客造成的篡改早早的扼杀在摇篮之中,从而保证最终各ECU中程序Runtime中的行车安全。

Secure Boot简介

应用背景

在芯片上运行的代码一般来说可能会面临两大类信心安全攻击风险:

  • 代码被恶意更改或者攻击;
  • 代码IP被非法读取活获取;

对于第一类风险,我们需要采用某种安全机制来确保芯片运行用户指定的程序,防止代码被恶意篡改;对于第二类风险,为了防止代码被盗,需要针对代码原文进行加密存储,在芯片启动过程中再进行解密后启动。

由于上述代码加密或者启动代码验证等方面都需要花费更多的CPU资源来完成这些工作,因此仅仅依靠传统CPU可能无法高效完成此类工作,需要引入与安全加密有关的单独硬件来做这方面工作,比如我们常说的HSM或者HSE等。

HSM或者SHE模块本质上来讲就是一种硬件加解密引擎,将这些特别耗时的任务交给专门的硬件模块来处理,一方面能够实现Secure boot需求,另一方面也能够提高程序启动效率。

一般来说,支持安全启动的芯片一般都会存在OTP区域(one time programable),其工作原理与保险丝一致,芯片再出厂后,该区域内所有的bit均为1,如果某个bit被烧写为0,就会彻底熔断该bit,再也无法改变该值,也就是再也无法更改为1了,一般该OTP区域用于存储用户的密钥信息。

当然有些芯片可能实现OTP的方式是通过某些控制寄存器来控制某些内存区域,通过控制这些控制寄存器无法被再次改写,从而间接完成被控制的内存区域具备OTP区域特性。

实现目标

具备安全特性如HSM的芯片加入到Secure boot功能之后,便会利用OTP区域内存储的用户密钥信息对即将加载的软件进行多级安全验证,从而最终建立起可靠的安全信任链,通过该安全启动信任链便可以完成软件信息安全的五大特性指标

  • 真实性:即软件版本未经过篡改;
  • 完整性:软件版本包含了开发者发布的所有内容,没有发生任何变化;
  • 时效性:软件版本是有效期间内的版本;
  • 不可抵赖性:软件发布后,发布者不能否认版本的所有权;
  • 机密性:软件版本不泄露给未授权的个人或实体,不能被非法盗取或者读取;
Secure Boot 相关密码学方法总结

在讲解Secure Boot实现策略之前,小T有必要跟大家一起先来了解下与Secure Boot有关的相关密码学基本方法,这样才能够更为彻底的理解为什么Secure Boot实现策略要这么来做才更加安全。

代码明文加密与对称加密算法

为了保护软件版本IP,防止代码被恶意串改,因此有必要针对软件版本进行加密处理,即针对代码明文进行加密处理。

AES作为一种较为常见的对称加密算法,具备应用范围广,相对容易隐藏,吞吐量高等优点,通常便可以用来做代码加密处理。

所谓对称加密算法就是加密,解密都是用的同一个密钥,如下图1所示,代码释放者可以将如下代码明文用AES加密算法加密成密文,然后将代码密文烧写到对应的存储芯片中,安全芯片HSM或HSE在启动过程中将加密后的代码密文加载到内存中,同时利用OTP区域中事先烧录的密钥进行代码解密,此时便可以发现整个解密过程用到了相同的密钥及相同算法的逆算法,从而通过解密将代码密文恢复成明文。

该AES对称加密技术的显著优势就是加解密速度快,特别适用于大数据量的加密存储。

在这里插入图片描述

图1-1 代码明文对称加密过程

在这里插入图片描述

图1-2 代码密文对称解密过程

信息摘要与哈希函数

哈希函数又称为哈希算法,是一种可以将任意长度的一组数据创建为定长的小的数字指纹的方法,该数字指纹也被称作为信息摘要,为了便于理解,后续统一以这种数字指纹称呼为信息摘要。

哈希函数用到的就是哈希变换,哈希变换具备如下两个典型的特征:

  • 加密过程不可逆:也就意味着任何人都无法根据信息摘要推算出加密前的明文到底是什么?
  • 一一对应性:输入的明文与信息摘要一一对应,绝对不会存在不同的明文哈希变换之后得到的信息摘要一样的情况。

在Secure Boot中,一般采用SHA哈希函数来实现哈希变换,来完成最终的信息摘要生成,比如最为常见的SHA256,即生成的信息摘要为32个Byte(Hash Value),如下图中Hash Value存在错误,应该为32个字节,以便用来校验代码的完整性,如下图2所示。

在这里插入图片描述

图2 哈希算法过程

信任链与非对称加密算法

在整个Secure Boot的过程中除了解决防止代码IP被意外获取之外,最为关键的还是要解决一个信任问题,所谓信任问题就是CPU加载的软件版本是软件发布者A发布的软件版本,而不是别人的非法软件版本。

要解决这类信任问题,就需要使用到非对称加密算法,所谓非对称加密算法就是该算法中存在两个密钥,一个是公钥,一个是私钥。它们是一对,如果用公钥进行加密,只有用对应的私钥才能进行解密,如果用私钥进行加密,也只有使用对应的公钥进行解密才行。

一般来说,密钥的长度越长,算法便会越安全,一般来说会使用非对称加密算法来解决上述信任问题,如RSA非对称加密算法。它是一种公开的、基于数学理论的加密算法,不依赖于任何机构或个人,也不容易被破解,可以实现数字签名与认证工作。

如下图3-1所示,在如下的安全启动过程中软件版本发布者A可以使用RSA私钥来实现对代码的信息摘要进行加密处理,生成数字签名;然后芯片端则可以使用对应的公钥来对数字签名进行解密,从而来完成版本的真实性,同时一旦验证成功,则也具备不可抵赖性,因为只有软件版本发布者A才具有私钥,如图3-2所示:

在这里插入图片描述

图3-1 私钥加密生成数字签名过程

在这里插入图片描述

图3-2 公钥解密还原信息摘要过程

公钥信息交互与数字证书

除了上述解释软件版本自身的信任问题,还需要确保密钥信息自身传输过程的安全性与保密性,此时就需要建立一套完备的信任机制来完传递密钥。

数字证书就是一种权威性的文档,由证书签发机关(CA)签发的对用户公钥的认证,也就是我们常说的"根证书"。 证书一般包含如下几个方面的内容:

  • 电子签证机关的信息;
  • 公钥用户信息;
  • 公钥;
  • 有效期和数字签名等;

一般来说,该数字证书的格式跟验证方法需遵循X.509国际标准。

Secure Boot实现策略

至此,与车载信息安全Secure Boot有关的密码学方法到此基本就介绍完毕了,想必大家应该对secure boot为什么要使用这些密码学方法有了更为清晰的认识,接下来我们将重点来讲解Secure Boot如何利用上述密钥学方法实现如下两个方面的内容:

  • 安全镜像生成流程:该流程主要介绍通过密码学相关方法能够生成供芯片端正确识别的合法软件版本,防止非法软件被意外启动;
  • 安全镜像启动流程:该流程主要介绍通过密码学相关方法来完成针对软件版本的多层安全校验机制如何进行实施;

整个安全启动版本需要校验的文件主要包含如下两个部分:

  • 符合X.509格式的数字证书或根证书;

  • 用户软件版本;

安全镜像生成流程

如下图4所示,整个安全镜像文件生成包含如下几个基本步骤:

S1:用户使用AES加密算法来实现将代码明文转换为密文,同时用户也需要提前在芯片端OTP区域烧录该AES密钥;

S2:用户需采用SHA256哈希函数来对代码密文进行哈希运算,最终得到该软件版本密文的信息摘要;

S3:用户需生成符合X.509国际标准的数字证书或者根证书文件,该文件中需包含上述软件版本密文的信息摘要与RSA公钥信息;

S4:用户需采用SHA256哈希函数来对上述数字证书做哈希运算,得到数字证书的信息摘要,同时用户使用RSA私钥对该信息摘要进行加密处理,最终得到该用户的数字签名。

在这里插入图片描述

图4 安全镜像生成全流程

安全镜像启动流程

如下图5所示,较为详细的展示了安全启动流程中的多级安全校验机制,从而保证最终的软件的安全性,合法性与完整性。

S1:芯片复位启动后,通过硬件加密模块如HSM或者HSE先对烧录在Flash中的X.509标准数字证书公钥信息进行哈希运算,并与提前烧录到芯片OTP区域的公钥哈希值进行比对,如果结果一致,那么则可以确认公钥的合法性,这个就是整个信息安全信任链的第一个环节,也是十分重要的环节;

S2:公钥合法性确认后,硬件加密模块如HSM或HSE再利用数字证书的数字签名进行用户合法性鉴权。具体操作步骤就是通过上述确认的公钥对数字签名进行解密处理得到证书的哈希值,同时针对存储在Flash芯片上的证书重新进行哈希运算,对比两个哈希值是否一致,如果一致,则鉴权成功,合法性得到了保障;

S3:然后再利用硬件加密模块如HSM或HSE来重新计算Flash芯片上存储的软件版本的哈希值,即信息摘要,并与数字证书的信息摘要进行比对确认是否一致,如果匹配则说明代码没有被恶意篡改, 用户软件版本的完整性与安全性得到了保障;

S4:芯片硬件加密模块如HSM或HSE最终利用OTP区域提前存储的AES对代码进行解密处理,从而得到代码明文,最终便可以正常加载到CPU中启动运行。

注意:上述任意一个流程没有通过,将不会进行后续流程的校验,则停留在当前的Boot中。

在这里插入图片描述

图5 安全镜像启动全流程

由于Secure Boot想必传统的Boot而言,增加了多重安全校验机制,毫无疑问会增加代码启动时间,从而因此第一帧报文发出过晚,因此需要权衡并优化。针对这类问题在具体项目实施过程中与上述流程可能允许存在些许差异,常见的一些差异表现如下:

  • 比如数字证书的公钥信息提取在上位机已成功提取,无需软件来做,减少启动时间;

  • 软件代码的AES加解密措施有些项目考虑到启动时间问题可能也会省略,这个具体还是要看项目端具体需求;
    Boot而言,增加了多重安全校验机制,毫无疑问会增加代码启动时间,从而因此第一帧报文发出过晚,因此需要权衡并优化。针对这类问题在具体项目实施过程中与上述流程可能允许存在些许差异,常见的一些差异表现如下:

  • 比如数字证书的公钥信息提取在上位机已成功提取,无需软件来做,减少启动时间;

  • 软件代码的AES加解密措施有些项目考虑到启动时间问题可能也会省略,这个具体还是要看项目端具体需求;

  • 不同供应商使用的Secure Boot流程与上述流程可能均存在差异,这个依照各个项目而定,本文只是提供了一般性的Secure Boot实现策略。

更多精彩内容,欢迎大家多多关注公众号"ADAS与ECU之吾见"!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wto9109/article/details/134724173

智能推荐

jquery 获取子 div_jq 子级别div-程序员宅基地

文章浏览阅读908次。获取 dom 对象$("#divId").children("div").get(0);$("#divId").children("div")[0];获取 jquery 对象$("#divId").children("div").eq(0);$($("#divId").children("div").get(0));【Java面试题与答案】整理推荐基础..._jq 子级别div

基于Springboot + vue实现的交通管理在线服务系统-程序员宅基地

文章浏览阅读271次,点赞4次,收藏4次。管理员管理:负责添加、删除、修改管理员账号,并设置相应的权限,确保管理员团队的专业性和高效性。新闻信息管理:发布、编辑和删除交通新闻、政策更新、路况信息等,保持信息的实时性和有效性。驾驶证业务管理:在线提交驾驶证申请、查询、更新、补办等业务,并实时查看办理进度。新闻信息查看:浏览系统发布的交通新闻、政策更新、路况信息等,了解最新的交通动态。机动车业务管理:在线提交车辆注册、年检、转移、报废等业务申请,并获取办理结果。用户管理:管理用户账号,包括用户注册、登录、权限设置等,确保系统的安全性。

打印系统开发(42)——静默打印_静默打印是什么意思-程序员宅基地

文章浏览阅读4.4k次。1.问题描述希望每次打印时,都是用固定的打印机打印并且不希望弹出对话框进行设置,此时便可以设置静默打印。1.1什么是静默打印静默打印即点击打印时不弹出选项窗口和打印机设置窗口直接进行打印。1.2支持静默打印的打印方式零客户端打印、本地打印、服务器端打印支持静默打印。2.静默打印设置方法2.1 零客户端打印设置方法注:只支持 IE点击模板-打印..._静默打印是什么意思

STM32+74HC595:带领你10分钟用对74HC595_74hc595连接stm32-程序员宅基地

文章浏览阅读2.4w次,点赞14次,收藏68次。使用的是STM32CBT8,小模块用起来性价比超级高,资源丰富,移植u/COS及HTTP、MQTT协议等等用起来简直欲罢不能,摇摇欲仙!BUT:IO口资源太少了,我想让你驱动100个LED,你缺告诉我,我的要求太多,你满足不了......还好,找到了74HC595,但是网上很多资源讲的我看了半天才总结、提炼并另辟蹊径出来精髓===============================_74hc595连接stm32

莱昂哈德·欧拉生平及其成就简介_欧拉的物理成就-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏8次。莱昂哈德·欧拉(Leonhard Euler ,1707年4月15日~1783年9月18日),瑞士数学家、自然科学家。1707年4月15日出生于瑞士的巴塞尔,1783年9月18日于俄国圣彼得堡去世。欧拉出生于牧师家庭,自幼受父亲的影响。13岁时入读巴塞尔大学,15岁大学毕业,16岁获得硕士学位。欧拉是18世纪数学界最杰出的人物之一,他不但为数学界作出贡献,更把整个数学推至物理的领域。他是数学史上最多产的数学家,平均每年写出八百多页的论文,还写了大量的力学、分析学、几何学、变分法等的课本,《无穷小分析引论》、_欧拉的物理成就

Error: PL/SQL: ORA-00980: 同义词转换不再有效_sql数据库中同义词转换不再有效-程序员宅基地

文章浏览阅读1.5w次。今天在写存储过程的时候,碰到一个问题,在执行存储过程的时候总是报错--同义词转换不再有效,发现一个查询语句中的一个表原来使用的是一个同义词,就试着把这个同义词单独拿出来进行查询操作,发现并没有问题。最后,经过一番努力,发现该同义词并不是直接指向一个实体表,而是指向另一个同义词。所以,将改同义词的指向改为直接指向原实体表的指向,问题得到解决。即同义词指向的 object ow_sql数据库中同义词转换不再有效

随便推点

AssertionError: Torch not compiled with CUDA enabled-程序员宅基地

文章浏览阅读1.7w次,点赞17次,收藏101次。解决问题:AssertionError: Torch not compiled with CUDA enabled_assertionerror: torch not compiled with cuda enabled

Silvaco TCAD 2017 在RedHat6.5 Linux系统的安装教程_silvaco的license更新-程序员宅基地

文章浏览阅读1.5w次,点赞4次,收藏37次。Silvaco TCAD 2017 在RedHat6.5 Linux系统的安装教程很多网友问到关于在Linux系统下安装Silvaco TCAD的问题,这里我整理了最近安装Silvaco的安装方法,前前后后共花六个月的时间研究,无数个深夜在重装中度过,希望看到的网友不要重复我的经历首先感谢网络上各路大神提供的安装方法,相信在Windows环境中很多人都能安装上但苦于Windows下无..._silvaco的license更新

html页面点击按钮上传文件,点击按钮实现文件上传及控制文件上传类型-程序员宅基地

文章浏览阅读4.3k次。1.原生js实现文件上传html部分:上传文件js部分:upload(event) { //代替执行上传功能let it = event.target;$(it).next().click();},UploadFile() { //上传文件let msg = new FormData();msg.append('file', $('#uploadBillsInp')[0].files[0..._formdata.append('enctype', 'multipart/form-data');

Android后台源码,Android8.0的后台Service优化源码解析-程序员宅基地

文章浏览阅读245次。今天在用户的错误列表上看到这么个bugjava.lang.RuntimeException: Unable to start receiver com.anysoft.tyyd.appwidget.PlayAppWidgetProvider:java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com...._to start receiver com.mediatek.engineermode.emstartreceiver: java.lang.secur

深刻对比一下阿里云服务器和腾讯云服务器的优劣和区别_腾讯云与阿里云的优劣-程序员宅基地

文章浏览阅读2.5w次,点赞10次,收藏19次。我来简单对比阿里云服务器和腾讯云服务器的优劣和区别腾讯云相比阿里云优势不明显。阿里云比腾讯云开放的时间更早,辅助系统更完善些,功能更多可用性更强。但腾讯云不是单纯卖云服务的,凡是要接入腾讯的生态(比如微信小程序等)必须得用腾讯云服务器,腾讯云迅速发展壮大。腾讯云也在慢慢完善,大多数应用场景也都能满足,但就是对很多新技术的支持总是比阿里云慢一些,高级的配置定制也少一些。服务器结构不是很复杂的话用......_腾讯云与阿里云的优劣

应用C预处理命令_c 添加预处理命令-程序员宅基地

文章浏览阅读1.6k次。********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi)时间:2011.10.17类别:C基础************_c 添加预处理命令

推荐文章

热门文章

相关标签