鉴源实验室丨HSM技术浅述

news2025/1/16 3:35:48

作者 | 徐奕华 上海控安可信软件创新研究院汽车网络安全组

来源 | 鉴源实验室

引言:2023年5月初,工业和信息化部装备工业一司组织全国汽车标准化技术委员会开展《汽车整车信息安全技术要求》等四项强制性国家标准的制修订[1]。这意味着车辆信息安全管理逐渐成为了车辆全生命周期中不可或缺的一部分。本文就与车辆信息安全息息相关的HSM(硬件安全模块)技术展开介绍。

01

HSM背景与概念

1.1 HSM背景

汽车信息安全涉及到很多应用场景,其中包括远程的安全诊断和固件更新、随机数生成和密钥交换、安全启动和即时的数据/代码完整性校验、安全的生命周期管理、安全的板上通讯(SecOC)。

针对汽车信息安全各类应用场景,业界也给出了信息安全架构。从需求角度看,定义包含威胁分析和管理的安全模型,现有的比如ISO 21434标准;从车载网络角度看,根据当前车载网络架构,依据安全目标,实现相应的安全策略,这些基本上由车厂定义;从ECU应用层软件的角度看,包含通讯服务模块、安全服务模块以及安全板上通讯模块,在AutoSAR架构下,有对这些模块的规范;从MCU相关底层软件角度看,包含底层驱动以及HSM固件;从硬件角度看,包含安全芯片以及安全协处理器(HSM)。

关于汽车信息安全硬件模块的硬件级规标主要包括SHE和EVITA HSM标准,如图1,下面从结构和功能两个方面来描述。在SHE规范下,架构需求是可配置的、有固定功能的,具体体现为SHE规范下均使用AES-128算法进行加解密,应用程序工程师需要能够对SHE Bootloader起始地址和大小进行配置,功能需求包括安全启动、AES 128加解密算法、真伪随机数发生器、密钥派生。在EVITA规范下,架构需求是可编程的、安全的CPU,即安全计算核独立于应用程序核实现,与之相绑定的有独立的安全存储区域、硬件加速电路以及提供给应用程序核调用的硬件接口,同时安全计算核的内核代码需要定期地升级迭代。功能需求下,EVITA项目制定了三个等级的规范,每个等级对功能要求逐级递减。相对于SHE,EVITA功能中包含了非对称算法的引擎需求、Hash引擎需求等等,并且对各层级的ECU需要的HSM硬件支持有了更细致的划分,将成本效益考虑进HSM设计。那么在将来的硬件级规标下,我们可以预想到在架构方面可能对安全通讯模块有加速的需求,在功能方面可能需要对更多的加解密算法支持,同时在国密算法逐渐被普及应用的背景下,可想将来也会制定与国密相关的硬件级规标。

图1 汽车信息安全硬件模块硬件级规标

1.2 HSM概念

在简单了解了信息安全架构和信息安全硬件级规标后,我们就能很容易地理解HSM的概念以及作用了。

在维基百科中,HSM有如下定义:HSM(Hardware Security Module,硬件安全模块)是一种用于保障和管理强认证系统所使用的数字密钥,并同时提供相关密码学操作的计算机硬件加速设备[2]。

详解定义,HSM主要有两个功能:

第一个是存储管理密钥。由于应用程序本身有权限读取密钥,并且其本身逻辑漏洞可能导致密钥泄露,所以如果密钥存储在应用程序的代码或者数据中,那么就会变得不安全。同时如果硬件层面上不对密钥进行隔离和保护,容易因为物理攻击或者暴力提取导致密钥泄露。为了解决密钥泄露问题,增设硬件安全模块,专门存储管理密钥,限制对密钥的访问。

第二个是加速加解密算法。通用内核进行复杂的加解密算法运算通常会占用大量计算资源,而车上MCU通常对实时性有很高的需求。为了解决这个问题,增设硬件安全模块,提供硬件层级的优化,对各类加解密算法进行加速。 

1.3 EVITA HSM分级

上面提到的EVITA硬件级规标是一种被广泛接受和应用的HSM硬件规范。本章主要介绍EVITA HSM的三种分级,具体如图2。

图2 EVITA HSM分级[3]

FULL EVITA HSM:该层级的HSM主要保护车载域免受V2X通讯安全漏洞的影响。这需要创建和验证电子签名,为了完成高效的签名操作,需要一个非常高效的非对称加解密引擎。该层级提供了所有不同HSM变体的最高级别的功能、安全性和性能。

Medium EVITA HSM:该层级的HSM着重于保护板上通讯。区别于FULL层级,Medium层级无需支持非对称加解密引擎以及哈希引擎。不过在软件层面,可以执行一些对实时性要求不高的非对称加密算法。出于效率与成本,板上通讯都基于对称算法,省去非对称算法引擎可以节省成本和硬件规模。

Light EVITA HSM:该层级的HSM专注于确保ECU和传感器和执行器之间通讯的安全。其仅需要包含一个对称加解密引擎和对应的经过裁剪的硬件接口。因此,Light层级可以满足严格的成本和效率要求。

02

HSM在SecOC中的应用

SecOC模块属于AutoSAR里一个独立的模块,其目的是为PDUs级数据交互提供资源高效和实用的认证机制。也就是,SecOC模块能为总线上传输的数据提供身份验证,可以有效地检测出数据回放、欺骗以及篡改等攻击手段。

图3 SecOC在AutoSAR框架下的位置和信息流[4]

SecOC在AutoSAR框架下位置和信息流如图3。SecOC从AutoSAR通讯栈中获取消息,从新鲜度管理器获取新鲜度,并且调用加解密接口对PDU和新鲜度计算消息认证码(MAC),并且将包装好的Secure I-PDU发送给下层链路层以及物理层。其中SecOC调用加解密接口时通过向HSM寄存器写入对应服务(SecOC一般为CMAC算法)的命令以及参数来使用HSM完成加解密算法,同时通过HSM/Host Interface寄存器控制对HSM的访问。HSM内核端维护对密钥的管理和更新,防止密钥泄露。

参考文献:

[1]公开征求《汽车整车信息安全技术要求》等四项强制性国家标准的意见.

https://wap.miit.gov.cn/jgsj/zbys/gzdt/art/2023/art_04c9975d77f54f60bf678861e7503c46.html

[2]维基百科HSM定义.

https://zh.wikipedia.org/wiki/%E7%A1%AC%E4%BB%B6%E5%AE%89%E5%85%A8%E6%A8%A1%E5%9D%97

[3]SECURE AUTOMOTIVE ON-BOARD ELECTRONICS NETWORK ARCHITECTURE.

https://www.evita-project.org/Publications/AEHR10.pdf

[4]12月车规MCU系列直播预告.

https://zhuanlan.zhihu.com/p/314961393

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

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

相关文章

CPU调优 iostat命令

目录 一、命令描述 二、命令作用 三、命令 1.用法 2.命令参数 四、使用实例 1.CPU属性值说明 五、压力测试stress 1.stress介绍 2.stress参数 3.安装stress 四、实验 五、总结 一、命令描述 Linux 中的 iostat 是I/O statistics(输入/输出统计&#xf…

毕业设计心得总结10篇

毕业设计心得总结1 201_年5月30日上午,我们的毕业论文答辩圆满结束了。当刘老师给我们送上人生的祝语时,一种即将离别的难舍之情油然而生,我开始眷恋培养我大学四年的母校,看着一张张熟悉的面孔,过去的欢乐和不快都烟消…

JavaEE课程设计——校园招聘管理系统(vue框架分析)

目录 Vue架构 登录 Vue架构 前端执行命令 npm run serve 这是整个前端的目录结构 vue.config.js是对前端vue的一个配置, // var webpack require(webpack); const path require(path)function resolve(dir) {return path.join(__dirname, dir) }function pu…

每日学术速递6.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Tracking Everything Everywhere All at Once 标题:一次跟踪所有地方的一切 作者:Qianqian Wang, Yen-Yu Chang, Ruojin Cai, Zhengqi Li, Bharath Hariha…

数据结构 栈(C语言实现)

绪论 时间就是生命,时间就是速度,时间就是气力。——郭沫若;本章继续学习数据结构,本章主要讲了什么是栈以及栈的基本功能和实现方法。 话不多说安全带系好,发车啦(建议电脑观看)。 附&#xff…

专业科普:什么是单片机?

一、什么是单片机 单片机诞生于20世纪70年代末,它是指一个集成在一块芯片上的完整计算机系统。单片机具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器&#xff…

AI日报|GitHub报告:开发者正将AI视为新机会;突破ChatGPT的能力极限;AI会让我们变得愚蠢吗?

今日值得关注的人工智能新动态: AI 会让我们变得愚蠢吗?安永:与老板们不同,大多数工人正在拥抱 AI突破 ChatGPT 的能力极限谷歌推出AI虚拟试穿工具Gannett 涉足生成式 AIGitHub 报告:开发者将 AI 视为一个新机会专家敦…

Nik Color Efex 滤镜详解(4/5)

油墨效果 Ink 模拟特种相纸和调色剂的冲印效果。 颜色组合 Color Set 可选择不同的颜色组合。 强度 Strength 调整滤镜效果程度。 层次和曲线 Levels & Curves 用色阶和曲线来调整图像的影调和色调。常与其它滤镜组合使用。 通道 Channel 选择调节色调的通道。 通道除了…

C++基础(10)——函数模板和类模板

前言 本文主要介绍了C中函数模板和类模板基本知识 6.1&#xff1a;函数模板 模板函数的定义 template<typename T>函数的定义或声明 模板函数的两种使用方法&#xff08;编译器自动推测、显示指定T的类型&#xff09; 注意事项&#xff1a;模板一定要确定指出T的数据…

nuxt打包后文件过大的优化

在使用nuxt.js来做项目的时候&#xff0c;遇到了加载缓慢的问题。解决思路如下 1、大文件拆分 2、文件压缩 大文件拆分 通过nuxt build --analyze或者nuxt build -a命令来启用 在package.json中 添加–analyze&#xff0c;然后执行npm run build 打包后如下&#xff1a; …

MySQL数据库——事物

MySQL数据库——事物 一、事务的概念二、事务的ACID特点1.原子性2.一致性3.隔离性4.持久性5.事务隔离级别的作用范围 三、事务级别的查看与设置1.查询全局事务隔离级别2.查询会话事务隔离级别3.设置全局事务隔离级别4.设置会话事务隔离级别 四、事务控制语句1.测试提交事务2.测…

threeJs着色器

一、着色器 着色器&#xff08;Shaders &#xff09;是一种使用GLSL(OpenGL Shading Language)编写并在GPU上运行的程序。它们被用于定位几何体的每个顶点&#xff0c;并为该几何体的每个可见像素着色。使用“像素Pixel”来描述其实并不准确&#xff0c;因为渲染的每个点不一定…

神经网络小结:训练的全过程

这一节我们主要是将之前的知识穿起来&#xff0c;形成一个整体。如果之前的没看过可以回翻一下专栏。但是在整体回归之前&#xff0c;我们还需要学习一个小知识点——随机初始化 随机初始化 在神经网络中&#xff0c;我们大致的训练流程就是&#xff1a;通过前向传播得出当前…

指针和数组--指针和二维数组的关系

指针和二维数组的关系 目录 一、二维数组的行地址和列地址 二、通过二维数组的行指针和列指针来引用二维数组元素 一、二维数组的行地址和列地址 在C语言中&#xff0c;可将一个二维数组看成是由若干个一维数组构成的。例如若有下面的定义&#xff1a; int a[3][4]&#xf…

8、DuiLib创建子窗口

文章目录 1、创建子窗口2、创建子窗口 XML 配置文件 1、创建子窗口 一个大规模的应用不可能只有一个窗口&#xff0c;之前我们的案例都是在一个窗口实现的&#xff0c;接下来我们实现一个关于窗口&#xff0c;来介绍如何通过 DuiLib 实现子窗口管理。 2、创建子窗口 XML 配置…

小红书种草软文怎么写?教你几招

小红书种草软文写得好&#xff0c;能打消用户的疑虑&#xff0c;吸引更多的用户关注和购买你的产品&#xff0c;从而获得源源不断的流量和口碑&#xff0c;小红书种草软文怎么写&#xff1f;接下来伯乐网络传媒就来给大家讲解一下&#xff0c;教你几招超实用的方法&#xff01;…

MMSegmentation V0.27.0官方问题(包含多尺度设置)(四)

1、在单个 GPU 上再现性能 #179&#xff08;添加链接描述&#xff09; 2、如何使用 PyTorch 的 WeightedRandomSampler 或编写自定义采样器添加链接描述 4、使用独立的分段器 #2931添加链接描述 5、How to change the training policy from Iter to Epoch based on the existin…

【产品运营】如何通过数据分析掌握用户行为?

对于运营来说&#xff0c;需要掌握用户行为来制定不同的运营策略。而用户行为是通过数据分析得出的&#xff0c;那么&#xff0c;具体的数据分析是哪些数据&#xff0c;不同的数据又有什么区别&#xff1f; 通过本文能够学到什么&#xff1f; 快速了解一款APP。行业趋势&#…

完美解决 ---latex运行正常,但是公式显示有问题,latex公式不显示等号 = 和加号 +

文章目录 一、问题展示二、分析原因三、 我的解决办法四、 \usepackage{txfonts}宏包是什么&#xff1f;五、\usepackage{amsmath}宏包是什么&#xff1f;总结 一、问题展示 latex运行正常&#xff0c;但是公式显示有问题&#xff0c;latex公式不显示等号 和加号 二、分析原…

C++基础(9)——文件操作

前言 本文主要介绍了C中文件操作基本知识 5.1&#xff1a;C语言使用标准C库函数读写文件复习 fgets、fputs&#xff08;读写文本文件&#xff09; int main(int argc, char *argv[]) {FILE *file;file fopen("a.txt", "a");if (file NULL){perror(&q…