# 从车灯模组的角度聊聊信息安全需求

news2024/7/4 4:40:27

文章目录

    • 1. 前言
    • 2.信息安全需求
      • 2.1 硬件安全
        • 2.1.1 接口安全
        • 2.1.2 主板安全
        • 2.1.3 芯片安全
      • 2.3 系统安全
        • 2.3.1 代码安全
        • 2.3.2 软件读保护
        • 2.3.3 安全启动
        • 2.3.4 安全升级
        • 2.3.5 安全诊断
      • 2.4 通信安全
      • 2.5 数据安全
    • 3. 安全启动流程
      • 3.1 基于签名技术的安全启动方案
      • 3.2 基于对称签名技术的安全启动方案
      • 3.3 基于CMAC技术的安全启动方案
    • 4. 安全升级流程
      • 4.1 基于签名技术的安全升级方案
    • 5. 参考资料

1. 前言

最近在和一些车灯客户交流时,发现很多车灯项目都多了信息安全的需求,为了进一步了解信息安全的需求,笔者收集了信息安全相关的文档进行学习和梳理。
下文是笔者自己整理的信息安全需求,并从车灯模组的角度增加了一些看法。如有不对的地方,欢迎指出。

2.信息安全需求

本章节主要从硬件安全、系统安全、通信安全、数据安全四个方面介绍下信息安全的需求,重点介绍硬件安全和系统安全。

2.1 硬件安全

硬件安全主要关注的是PCB板的保密措施和关键芯片的加密功能。

2.1.1 接口安全

  • 量产阶段,调试接口(如JTAG,SWD等)不宜直接暴露在PCB板上,如果无法避免,建议改为测试PIN方式分散布置。
  • 量产阶段,调试接口需要设置安全的身份验证,身份验证的口令至少为8位,且必须包含数字、大小写字母。

对于车灯模组来说,需要注意的是主控MCU的调试接口,其他的外围芯片基本不涉及到代码读取。

2.1.2 主板安全

  • 量产阶段,主板上的关键芯片(如主控芯片、硬件加密芯片、收发器等)、端口和管脚功能的标识丝印需要去除。
  • 芯片间敏感数据的通信线路应尽量隐藏,对抗针对控制器内部数据传输的窃听和伪造攻击。
  • 主板上的关键芯片采用可靠焊接封装(如BGA、CSP),防止关键芯片被拆下读取芯片内部信息。

2.1.3 芯片安全

为保证整车的网络安全,需考虑硬件级的安全加密,一般选择集成了FULL EVITA等级的HSM模块的MCU,如果使用的MCU没有加密模块,可以外接一个车规级别SE芯片,该SE芯片至少可提供如下接口:

  • AES128算法接口
  • 对称密钥存储接口
  • SHA256算法接口
  • RSA2048算法接口
  • 非对称密钥存储接口
  • 真随机数获取接口

主要芯片及加密芯片需满足抗攻击保护,满足:

  • 使用必要的安全机制,防御针对芯片的电压、时钟的单次故障注入攻击;
  • 使用必要的安全机制,防御针对芯片的电磁、激光的单次故障注入攻击;
  • 使用必要的防护措施,对抗针对加密芯片的侧信道简单功耗分析(SPA)攻击;
  • 使用必要的防护措施,对抗针对加密芯片的侧信道一阶差分功耗分析(DPA)攻击;
  • 使用必要的防护措施,对抗针对加密芯片的侧信道相关功耗分析(CPA)攻击。

EVITA(E-safety Vehicle Instruction Protected Applications)项目定义了可用于汽车网络信息安全领域的HSM(Hardware security module)的相关规范,针对不同的硬件能力将其分为Full、Medium和Light HSM。EVITA官网有对应的分类表,如下所示。

EVITA HSM 分类表

不同等级的HSM模块以及SHE(Secure Hardware Extension)支持的详细功能对比如下:

EVITA HSM level(来源:CSDN@ppyang395942297111)

2.3 系统安全

系统安全主要关注的是整个系统的软件代码的真实性和完整性,以及如何防止软件泄露的措施。

2.3.1 代码安全

系统开发过程中对代码进行安全扫描或分析,并提供代码扫描报告。
对核心功能相关代码实施代码混淆、加固,防止被逆向分析。

车灯模组使用的MCU一般都是M0,M4内核的,代码相比BCM,网关等不算复杂,不太需要安全扫描。如果是高端车型需要做ADB,这部分算法目前比较复杂,建议实施代码混淆、加固。

2.3.2 软件读保护

在代码存储区增加外部读保护机制,对固件进行保护,防止被窃取。

2.3.3 安全启动

  • 保证可信根安全;
  • 对bootloader、应用程序的真实性和完整性进行校验,防止被恶意篡改。

2.3.4 安全升级

  • 对要升级的应用层程序进行来源合法性和完整性校验;
  • 对flash驱动进行真实性和完整性校验。

2.3.5 安全诊断

  • 应支持适配新的诊断、刷写的安全访问算法;
  • 禁止开放未定义的诊断服务。

2.4 通信安全

通信安全关注的是ECU之间如何保证关键消息的可靠传输。

  • 关键数据需要加密传输和消息认证,保证消息来源的合法性和完整性。
  • 消息认证需要符合车厂的SecOC(Security Onboard Communication)规范

对使用速率较高的CAN FD通信的ECU,车厂会要求一些关键数据在传输时先进行对称加密然后再传输加密后的消息。目前前灯模组逐渐开始使用CAN FD通信,但是车厂并不强制要求通信安全

2.5 数据安全

数据安全关注的是关键信息的安全存储。

  • 重要数据和个人敏感信息应实现安全存储和隔离,防止未经授权的访问、篡改、删除和检索;
  • 实现重要数据和个人敏感信息的安全传输,保证其机密性、完整性和可用性。

车灯模组主要的诉求要保存用于加密重要数据的密钥,使用带HSM模块的MCU或者外挂的SE芯片,都是支持该功能的。

3. 安全启动流程

随着车规MCU自带的加密模块功能变丰富之后,安全启动(Secure Boot)也变得更加容易实现。如下是安全启动的流程示意图。

安全启动流程示意图

MCU上电之后,先运行可信引导程序。可信引导程序会去验证bootloader对应区域的数据是否被篡改,即验证bootloader的真实性和完整性。如果Bootloader验证成功,就跳转到bootloader,然后由bootloader验证应用程序的真实性和完整性。应用程序验证成功后,就跳转到应用程序,至此整个安全启动流程就结束。

对于带硬件加密模块的MCU来说,可信引导程序一般通过加密模块进行使能以及配置需要验证的bootloader的大小。如S32K144的Secure boot,需要通过CSEc模块进行使能;S32K3的Secure boot功能由HSE模块负责。推荐阅读如下文章:

  • S32K3亮点介绍-secure boot功能

对应上述安全启动流程的方案有三种,如下所示,接下来详细介绍下这三种方案。

  • 基于签名技术的安全启动方案
  • 基于对称签名技术的安全启动方案
  • 基于CMAC技术的安全启动方案

3.1 基于签名技术的安全启动方案

方案框图如下:

基于签名技术的安全启动方案

生产阶段:

MCU在出厂前,对bootloader和应用程序的bin文件分别使用Hash算法(SHA256选用较多)得到概要值(或称为完整性度量值),然后使用私钥和RSA2048算法对概要值进行签名,最后将bin文件、签名之后的概要值以及公钥一起烧录到MCU中。

安全启动阶段用到的私钥,其生成、存储和运算由汽车零部件供应商负责,汽车厂商不参与。

启动阶段:

MCU上电之后,可信引导程序开始运行,根据预先保存的bootloader的地址信息,通过Hash运算得到bootloader的概要值1。然后使用预先保存的公钥对bootloader的签名概要使用RSA2048算法进行验签,得到概要值2。最后将概要值1和概要值2进行比较,如果一样,MCU就跳转到bootloader运行,否则就一直保持复位或者其他车厂要求的状态。

bootloader运行之后,根据预先保存的应用程序的地址信息、公钥、签名概要,执行和可信引导程序一样的操作,验证应用程序的真实性和完整性。

3.2 基于对称签名技术的安全启动方案

方案框图如下:

基于对称签名技术的安全启动方案

生产阶段:

MCU在出厂前,对bootloader和应用程序的bin文件分别使用Hash算法(SHA256选用较多)得到概要值(或称为完整性度量值),然后使用密钥和对称算法(不低于AES128)对概要值进行加密得到MAC值,最后将bin文件、MAC值以及密钥一起烧录到MCU中。

MAC:Message Authentication Code,消息身份验证代码。

启动阶段:

MCU上电之后,可信引导程序开始运行,根据预先保存的bootloader的地址信息,通过Hash运算得到bootloader的概要值1。然后使用预先保存的密钥对bootloader的MAC值使用对称算法(不低于AES128)进行解密,得到概要值2。最后将概要值1和概要值2进行比较,如果一样,MCU就跳转到bootloader运行,否则就一直保持复位或者其他车厂要求的状态。

bootloader运行之后,根据预先保存的应用程序的地址信息、密钥、MAC值,执行和可信引导程序一样的操作,验证应用程序的真实性和完整性。

3.3 基于CMAC技术的安全启动方案

方案框图如下:

基于CMAC技术的安全启动方案

生产阶段:

MCU在出厂前,对bootloader和应用程序的bin文件分别使用密钥和CMAC应用的算法(不低于AES128)得到各组的CMAC值,然后将bin文件、CMAC值以及密钥一起烧录到MCU中。

CMAC:Cipher Block Chaining-Message Authentication Code,也简称为CBC_MAC,它是一种基于对称密钥分组加密算法的消息认证码。

启动阶段:

MCU上电之后,可信引导程序开始运行,根据预先保存的bootloader的地址信息,使用预先保存的密钥对bootloader的BIN文件使用CMAC算法(不低于AES128)得到CMAC值1,然后将预先保存的CMAC值和CMAC值1进行比较,如果一样,MCU就跳转到bootloader运行,否则就一直保持复位或者其他车厂要求的状态。

bootloader运行之后,根据预先保存的应用程序的地址信息、密钥、CMAC值,执行和可信引导程序一样的操作,验证应用程序的真实性和完整性。

4. 安全升级流程

安全升级和传统的升级方式相比,主要是验证应用程序的真实性和完整性的方法更加完善了,一般采用3.1-3.3中的任意一种方式即可。下面只介绍下基于签名技术的安全升级方案,其他两种方案就不赘述了。

4.1 基于签名技术的安全升级方案

方案框图如下:

基于签名技术的安全升级方案

生产阶段:

客户只需要将车厂分配过来的公钥和BIN文件一起烧录进MCU即可。

私钥的生成、存储和运算有主机厂负责。

升级阶段:

零部件厂商登录车厂指定的网站,提交更新后的应用程序的BIN文件,车厂审核通过后,会从云端下发到车身网关。在这个过程中,应用程序的BIN文件也增加了对应的签名概要(如上图左框部分)。

车身网关将BIN文件和签名概要通过CAN/LIN总线传输给对应的ECU节点。ECU中的MCU会对BIN文件进行
Hash和验签操作,然后将得到的签名概要和传输过来的签名概要进行比较,如果一样,就升级传输过来的应用程序,否则放弃此次升级并删除传输过来的应用程序。

5. 参考资料

  • Microsoft Word - EVITA_Final_Publishable_Summary.docx (evita-project.org)

  • 硬件安全模块- HSM_hsm she_ppyang395942297111的博客-CSDN博客


如果觉得本篇文章对你有用, 不妨给个一键三连!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

netty源码阅读--处理客户端请求

背景 netty是一个非常成熟的NIO框架,众多apache的顶级项目底层通信框架都是用的是netty,本系列博客主要是记录自己复习netty源码的过程,重在理解netty的关键如:如何启动,如何接受网络数据、netty的内存管理机制以及编解码器等&am…

Python学习笔记--面向对象

未完待续。。。。。 (一)面向对象的基本概念 我们之前学习的编程方式就是面向过程的 面相过程和面相对象,是两种不同的编程方式 对比面向过程的特点,可以更好地了解什么是面向对象 1.1过程和函数 过程是早期的一个编程概念 过程…

4.3 分段低次插值

学习目标: 如果我要学习分段低次插值,我可能会采取以下几个步骤: 学习插值的基本概念和方法 在学习分段低次插值之前,我需要先掌握插值的基本概念和方法,例如拉格朗日插值、牛顿插值和内维尔方法等。这些基础知识可…

C#调用C++封装的SDK库(dll动态库)——上

C#调用C封装的SDK库(dll动态库)——上 一、C封装库 通过前几篇文章,我们封装了C的动态DLL库,有Qt版的,有C版的,当然还有介绍了Pimpl模式在SDK封装中的使用: Qt创建SDK VS创建SDK Pimple在SDK封装中的应用 但是&a…

关于逻辑回归的几个函数

写作业时重新理了下,如果有问题欢迎指正! 说是回归,其实就是个分类,用【0,1】标记结果y是录取还是录取,而影响结果y的就是X(x0,x1,…xn-1)。怎么判断结果y是0还是1用到的是逻辑回归函数(也叫假…

java企业级信息系统开发学习笔记05 初探Spring AOP

文章目录 一、学习目标二、Spring AOP(一)AOP基本含义(二)AOP基本作用(三)AOP和OOP对比(四)AOP使用方式(五)AOP基本概念 三、采用配置方法使用AOP&#xff08…

windows下Tomcat安装

目录 1.安装java环境 2.配置Tomcat环境变量 3.安装服务 4.启动前修改配置文件 (1)设置tomcat端口 (2)设置临时日志等文件夹的位置 5.放入应用 6.启动Tomcat服务 1.安装java环境 安装tomcat版本对应的JDK 比如:…

Mysql的简介和选择

文章目录 前言一、为什么要使用数据库 数据库的概念为什么要使用数据库二、程序员为什么要学习数据库三、数据库的选择 主流数据库简介使用MySQL的优势版本选择四、Windows 平台下安装与配置MySQL 启动MySQL 服务控制台登录MySQL命令五、Linux 平台下安装与配置MySQL总结 前言…

Redis 分布式锁解决方案

1 背景 我们日常在电商网站购物时经常会遇到一些高并发的场景,例如电商 App 上经常出现的秒杀活动、限量优惠券抢购,还有我们去哪儿网的火车票抢票系统等,这些场景有一个共同特点就是访问量激增,虽然在系统设计时会通过限流、异步…

设计模式:行为型模式 - 责任链模式

文章目录 1.概述2.结构3.案例实现4.优缺点5.源码解析 1.概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经…

链表方式实现栈和队列(C语言)

目录 栈 队列 栈 栈(Stack)是一种常见的数据结构,它是一种线性数据结构,具有后进先出(Last In First Out, LIFO)的特点。栈可以看作是一个容器,只能在容器的一端进行插入和删除操作&#xff0c…

【12 Filter 学习笔记】

Filter 笔记记录 1. Filter 过滤器2. Filter介绍3. FilterChain3. Filter 过滤器的使用4. 过滤器使用细节5. Filter的声明周期6. FilterConfig7. 过滤器五种拦截行为 1. Filter 过滤器 2. Filter介绍 3. FilterChain 3. Filter 过滤器的使用 import javax.servlet.ServletExcep…

SQL:group by 的用法及其与 over(partition by)的区别

1.group by的作用 根据一定的规则将一个数据集划分成若干个小区域,然后针对每个区域进行数据处理。即分组查询,一般是和聚合函数配合使用。 重点说明(重要): 如果用Select选择某个字段,那么这个字段要么在G…

cpld 模拟iic 访问原理实现

1,因为 单片机访问sfp和ds125占用了6路iic,但是现在还有lm75需要使用iic访问,所以要么使用iic片选,但是扩展iic需要的总线不多,这里要么考虑使用互斥锁,也就是使用同一路iic时候加锁,使用完成后就释放。也可以考虑使用cpld模拟iic来访问lm75。 2,cpld 软件模拟iic总线原理…

初识MySql数据库

​​​​使用MySql数据库的英文打字小游戏: 英文打字小游戏 MySql学习 1:MySql是关系型数据库,跨平台的。Sql Server是微软出的啊。 2:Web服务器端运行原理图。 Web服务器:网页资源的获取 游戏服务器:游戏数据的同步…

WEB通讯技术。前端实现SSE长连接,nodejs+express搭建简单服务器,进行接口调试,通过curl请求数据

描述 长连接(Keep-Alive)是一种HTTP/1.1的持久连接技术,它允许客户端和服务器在一次TCP连接上进行多个HTTP请求和响应,而不必为每个请求/响应建立和断开一个新的连接。长连接有助于减少服务器的负载和提高性能。 长连接的HTTP请…

《Android性能优化》一次失败的启动速度优化

正文 在优化APP启动之前,我们首先需要知道,APP启动时究竟发生了什么,才能有的放矢的优化。 APP的启动过程 APP的启动过程就是指,在手机屏幕上点击某个APP的图标,到APP的首页显示在用户面前的过程。 一般APP的启动过…

Web自动化测试简介及web自动化测试实战交教程

一、认识web自动化测试 1.什么是自动化测试? 自动化测试的概念: 软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试,他是软件测试的一个重要组成部分,能够完成许多手工测试无法完成或…

Linux网络服务----ftp

文章目录 一 、什么是FTP1.1 Standard模式(主动模式)1.2 Passive模式(被动模式) 二 、FTP的作用及工作原理2.1 FTP的作用和模式以及通信方式2.2 FTP的工作原理 三、搭建和配置FTP服务3.1 设置匿名用户访问的FTP服务(最大权限)3.2 …

优化改进YOLOv5算法之添加Res2Net模块(超详细)

目录 1 Res2Net 2 YOLOv5中添加Res2Net block 2.1 common.py配置 2.2 yolo.py配置 2.3.3 创建添加Res2Net block模块的YOLOv5的yaml配置文件 1 Res2Net 关于代表性计算机视觉任务的进一步消融研究和实验结果,即目标检测,类激活 mapping和显著目标检…