硬件安全模块(HSM)

article/2025/9/23 6:51:49

一、什么是HSM

说起信息安全和加解密,我们很容易会在脑海中浮现出锁和钥匙。那我们来想象一个场景:

假设一位父亲有三个儿子,他给每个儿子各买了一台掌上游戏机。为避免他们沉迷游戏,父亲把每台游戏机都锁到一个小盒子里。盒子归几个孩子自己保管。

怎么保证儿子不会偷偷拿去玩呢?简单啊,钥匙由父亲来保管。
儿子想玩的时候怎么办?简单啊,把盒子拿来父亲这里解锁。
儿子想玩的时候,父亲能把钥匙给儿子吗?肯定不行啊,儿子自己去配一条钥匙咋办。
那为啥不干脆把盒子也存父亲这里?因为父亲资源有限,不想随身携带盒子啊。

在这个场景中,父亲就是安全的根本保障。而这个安全之锚的角色,就类似于HSM。其最重要的作用就是机密数据管理和提供密码学操作。

HSM是硬件安全模块的英语缩写,全称是Hardware Security Module。HSM是一种用于保护和管理强认证系统所使用的密钥和敏感数据,并同时提供相关密码学操作的计算机设备。

HSM的核心功能是围绕加密解密的,它能保护敏感数据,确保只有授权的收件人或者应用才能拿到这些数据。同时HSM也会提供安全的数据解密方法,确保消息的机密性(confidentiality)和可靠性(Authenticity)。

HSM提供的这些安全功能专业而且单一,然而系统对安全操作的需求是消耗尽量少的计算资源来保证足够好的计算性能。这种既想马儿跑,又想马儿少吃草的需求听着是不是很熟悉?确实这在工程领域乃至社会领域都普遍存在。那怎么办?就是给马儿吃最合适、能量密度最高的草。而在计算机或者更广泛的电子领域,经常会通过专用的集成电路或者专用硬件设备来满足这功能。有时候,这种方法也被叫做硬件加速器。

IT界的硬件安全模块一般通过扩展卡或外部设备的形式直接连接到电脑或网络服务器。随着计算机技术的发展,现在也出现了不少基于云计算的HSM。云端HSM同样提供敏感数据管理和加解密计算等服务。

在这里插入图片描述
图:Utimaco 云端HSM的架构示意图

二、汽车上的HSM

在汽车上谈安全,大家普遍先想到的可能都是行车安全、碰撞试验、气囊爆炸等等。但其实汽车的安全应该是方方面面的,尤其随着汽车作为终端接入到互联网,并且越来越智能化的今天。相关组织更早一步地注意到了这个问题。

早在2008年,欧盟就出资赞助了EVITA(E-safety Vehicle Intrusion Protected Applications)项目,旨在提高汽车车载网络和V2X应用的防御攻击的能力。该项目通过识别电子电气用例、分析潜在威胁及其相关风险,为车载网络开发了一系列安全需求。其研究成果之后被提炼成一个标准,用来推荐硬件和软件架构,以满足相关的安全需求。

其中,EVITA也定义了HSM的相关硬件规范,针对不同的安全硬件能力,分为Full HSM、Medium HSM和Light HSM。这个分类也被广泛应用于汽车网络信息安全领域。其关键信息总结如下表。
在这里插入图片描述
表:EVITA HSM分类表

表中可见,Full和Medium的主要差别在于是否硬件支持非对称加密的加速。而Medium和Light主要差别在于是否有独立的计算存储资源以及是否具有随机数生成器。

三、英飞凌AURIX芯片中的HSM

接下来,我们以英飞凌AURIX芯片的HSM作为例子,进一步探讨HSM。

狭义的HSM指其硬件,在汽车电子领域一般是一片独立的芯片或者芯片上的一个分区。传统互联网行业有许多相关的芯片产品,但是能达到车规级鲁棒性要求的就不多了。英飞凌的AURIX广泛应用于汽车电子,这系列的芯片就集成了HSM。接下来我们以这系列的芯片为例,看看HSM的硬件实现。

下图是AURIX系列HSM模块的框架图。可以看到HSM内含
-32位的ARM Cortex M处理器,CPU频率高达100MHz
-特殊访问保护存储器
-启动闪存 BootRom,可用于支持安全启动(secure/ authentic boot)
-AES128 对称算法的硬件加速器,对CMAC消息验证码的加解密速率在25MByte/s以上
-真随机数发生器(True Random Number Generator),可用于密钥随机生成,挑战应答校验机制等

在这里插入图片描述
图:AURIX的HSM框架图

我们顺便来看看AES加速器和CMAC。

AES全称是Advanced Encryption System,是常用的一种对称加密标准,常见有AES 128和AES 256,主要差别是密钥长度(分别是128bits和256bits)和加密轮数(分别是10轮和14轮)。家里WiFi设置密码的时候也能经常看到AES的选项。AURIX的这个HSM是针对AES 128的加速器,主要是针对128Bits长度的数据设计了专门的叠加、移位和替换等计算逻辑单元。

CMAC的全称则是Cipher-based Message Authentication Code,其原理是通过密钥和对称加密算法(例如CBC-MAC)生成CMAC,通过对比校验CMAC来确定权限和真实性(Authentication)。安全启动(secure boot)也经常通过校验启动软件的CMAC来实现。

下图是HSM与芯片其他部分的逻辑框图。HSM通过系统外设总线(System Peripheral bus, SPB)与芯片的其他部分相连。其中存储软件程序和数据的PFlash和DFlash实际上与芯片的其他部件共用一块Flash,但是能通过TriCore的访问控制设置,来保护HSM所对应的Flash区域不被非法访问或篡改。安全密钥的存储就是在其中的DFlash里。

在这里插入图片描述
图:HSM及AURIX芯片内其他部件的连接框图

四、AUTOSAR中的HSM接口

除了硬件实现,广义的HSM还包括相应的固件和驱动。而在汽车电子领域谈软件或者固件,就不得不提AUTOSAR。随着近年来汽车互联化和智能化的发展,AUTOSAR也越来越重视网络安全,其中跟HSM最相关的就是其Cryto软件栈,其中包括了Crypto Service Manager(CSM)、Crypto Interface(CryIf)和Crypto Driver(CryDrv)三部分。

CSM是其他软件模块调用加解密模块的第一接口。应用层SWC通过RTE访问CSM,而其他底层软件(BSW)或者复杂驱动(CDD)则可以直接调用CSM。同时CSM也负责安全相关任务的队列管理,即优先级管理。

CryIf是CSM往下调用的接口模块,每一个CryIf中的加密基元都会与CSM中的一个服务相对应。而且CryIf支持分发相关任务,进一步调用不同的驱动(软件和硬件,对称和非对称等)。

Crypto Driver是驱动模块,访问相关部件,实现加解密操作,例如访问加解密加速器或者真随机数生成器等。
在这里插入图片描述

图:AUTOSAR中HSM相关模块的框图

五、Vector的HSM固件方案

Vector作为知名的AUTOSAR底层软件供应商,自然也有满足AUTOSAR要求的HSM固件方案。下图是其架构框图。

在这里插入图片描述
图:Vector的HSM固件方案

图中Crypto(vHSM)部分对应AUTOSAR中的CSM,为上层应用和其他基础软件模块提供抽象的加解密服务。而AUTOSAR中的CryIf部分则通过进程间通讯或者共享内存的方式实现,按照不同的应用场景和加解密服务(例如安全启动或者SecOC等),进一步访问不同的驱动程序,例如是加解密硬件加速器或者是存储密钥的访问控制内存区。

HSM的固件部分与芯片本身关系密切

六、硬件安全模块(HSM)的性能提升

1、通过设计保证安全
面对车内互联的增长趋势,在混合型车载网络中,应将通过设计保证安全和更新- 特别是考虑到硬件和软件的解耦以及许多软件的重新定义。在集中式的车载网络中集中管理信息安全功能,以及确保对域控制器所连接的ECU进行保护,变得可行。

HSM对于完全的安全车载通信 (Secure Onboard Communication, SecOC) 是必不可少的。HSM有助于确保此处收到的所有数据的真实性,并防止攻击者通过绕过与安全性相关的ECU接口,获得对中央处理器甚至车载网络的访问权限。

但是,集中式车载网络所面临的挑战不仅限于此:每当车辆计算机(通常划分为多个虚拟机)接管多个ECU的软件应用程序和功能时,对安全组件的需求也会增加。新一代的HSM也为此做好了准备。

2、任务偏好和实时操作系统
物理上,HSM的安全功能封装在相应处理器的HSM内核中。在那里,安全功能通过HSM软件协议栈激活和操作。因此,车辆计算机的主控制器可以专注于其实际任务,而HSM内核则处理安全性的要求:安全的车载通信、运行时的操作检测以及安全的启动、刷新、日志记录和调试。这使HSM比纯粹基于软件的安全解决方案要强大得多。

如果将软件应用程序和ECU功能组合在车辆计算机上,则可以预见,有时会有许多应用程序同时调用HSM的安全功能。在这种情况下,HSM必须提供必要的安全功能,并实时管理多个应用程序的数据流。这将到达标准HSM的极限,甚至超过纯软件安全解决方案的极限多。但是,具有实时操作系统和智能、灵活的会话概念的新一代HSM可以完成任务。

3、多核/多应用的支持
在未来的架构中,如果多个内核并行发出请求,则新的HSM固件可确保HSM内核最多处理16个并行会话,而HSM软件中的会话数量可配置。这种多核和多应用程序支持的秘密在于HSM固件驱动程序的特殊体系结构。这允许不同的虚拟化应用程序独立集成驱动程序,从而为独立开发各种软件部件铺平了道路:在集成过程中,“链接器”步骤可确保驱动程序的各种实例在硬件的共享RAM中使用通用结构。如图2所示,每个实例创建自己的结构(会话),以便驱动程序始终可以并行管理来自应用程序的多个请求。

在这里插入图片描述
图. HSM固件在并行会话中处理来自多个主机核心的请求

如下图所示,上述设计中的中央安全组件是主机到HSM的桥接模块(bridge module)。桥接模块的主要目的是将HSM子系统连接到主机系统 (host system),并进行两个系统之间的所有交互。作为将HSM与主机分开的组件,桥接模块将接管到HSM的流量控制。在桥接模块的寄存器中,来自主机的请求队列以确保HSM作为有限资源的最佳利用,并尽可能快地执行所请求的安全功能的方式来设置和处理。下一代HSM软件将HSM的多应用程序和多核功能变为现实。

在这里插入图片描述
图. HSM固件在并行会话中处理来自多个主机的请求

4、批量消息验证码的实时性能
新的E/E架构带来的另一个挑战是如何确保大量增加的通讯安全。它要求在混合车载网络中能够并行处理CAN/CAN FD总线和车载以太网的通信,并保护所需要的通信协议数据交换的安全。新的HSM尽管受制于本身性能,但也为此提供了解决方案。一种解决方案是批量MAC接口:首先,主机在预定时间段内收集所有消息,然后将它们作为请求通过桥模块寄存器整体发送到HSM。这样,一次数据传输就足够了。HSM固件立即处理HSM模块上所有收集的消息,并将结果发送到主机(如下图所示)。
在这里插入图片描述
图. HSM固件在并行会话中处理来自多个主机的请求

这带来了巨大的性能提升。 假设主机和HSM之间的每次数据传输仅花费10us,对于100条消息,延迟总计也高达1 ms = 10us * 100,这给实时系统带来了挑战。使用批量MAC接口,可以在百分之一的时间内处理这100条消息。对于使用车辆计算机和域控制器建立网络并在此过程中定义了许多PDU的主机厂而言,批量MAC接口具有明显的优势。通过确保对大量不同消息的足够快速的身份验证,它可以在车载网络中维持安全的实时通信。在下一代HSM软件中,已经集成了批量MAC。

5、面向未来的HSM
车载网络向集中式平台的转换,正在推动硬件和软件的分离。HSM在确保这些平台的安全性方面发挥着核心作用。HSM不仅可以通过SecOC保护在域控制器连接的ECU中占主导地位的CAN/CAN FD总线的数据流免受访问和操纵,而且能够保护最高级别的安全用例,和具有高数据负载和实时要求的软件应用程序的安全运行。新一代HSM设计用于多核和多应用程序任务,使用批量MAC接口,即使在高数据负载和异构格式的情况下,也可以确保通信的实时性。

基于车载网络的多样性和自动驾驶的发展趋势,主机厂越来越多地为E/E架构设置自己的特定安全标准。下一代HSM固件可以根据主机厂特定安全标准提供对应的差异化产品。HSM固件在最新的微控制器上运行,并以源代码的方式提供主机驱动程序。这为主机厂和零部件供应商重用和定制提供了便利。由于具有这种灵活性和高性能,带有最新固件的HSM对于确保未来的集中式混合型车载网络的安全而言是不可或缺的组件。

转载自ETAS,焉知智能汽车公众号

参考来源:

  1. E-safety Vehicle Intrusion Protected Applications (EVITA),
    https://argus-sec.com/e-safety-vehicle-intrusion-protected-applications-evita/

  2. How hardware security modules enable AUTOSAR,
    https://www.embedded.com/how-hardware-security-modules-enable-autosar/

  3. Vector Cyber Security Solution – vHSM Firmware,
    https://assets.vector.com/cms/content/events/2018/Webinars18/Vector_Webinar_MICROSAR_HSM_20181127.pdf


http://chatgpt.dhexx.cn/article/NU7TB02y.shtml

相关文章

什么是WSDL?

WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL,可描述Web服务的三个基本属性&#xff1…

已有wsdl,怎么去调用他的方法

1,在浏览器验证该wsdl地址是否可以打开,显示为该模式 2,新建一个项目,右击该项目,other,webservice,webservice clent , 讲该wsdl地址输入,finish 3,新建一个类,实例化impl,调用一个…

WSDL的文件结构(WSDL 1.1规范

为能将一个WebService描述清楚&#xff0c;WSDL从三个层面对一个服务进行了描述&#xff1a; 一&#xff1a;描述服务的接口(<wsdl:portType/>部分)&#xff0c;也就是服务有哪些操作(<wsdl:operation/>部分)以及每个操作的输入输出参数(<wsdl:message/>部分…

WSDL阅读方法

我们以天气预报WebService服务为例&#xff0c;来看看怎么阅读一个wsdl文档。 打开一个wsdl文档后&#xff0c;先看底部。 binding在这里&#xff1a; portType在这里&#xff1a; 好了&#xff0c;看了上面的&#xff0c;我们来说说wsdl说明书的整体结构吧&#xff1a; 1.&l…

IDEA wsdl教程

这篇文章教你如何利用IDEA发布WSDL 博主大学复习周精心制作,共推出几个模块供大家利用, ####今天我们先来学习一下如何利用IDEA发布WSDL 首先打开IDEA 新建一个Java项目 OK了基本的项目已经创建完成! 创建一个新的类命名为Java6WB代码如下所示: package com.company; im…

【WebService】wsdl配置详解以及使用注解修改wsdl配置

欢迎关注我新搭建的博客&#xff1a;http://www.itcodai.com/ WebService系列文章&#xff1a; 【WebService】带你走进webservice的世界 【WebService】自定义WebService服务及其调用 【WebService】CXF处理javaBean等复合类型以及Map等复杂类型的数据 【WebService】CXF拦…

WSDL实例解析

WSDL的主要文档元素 WSDL文档可以分为两部分。顶部分由抽象定义组成&#xff0c;而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息&#xff0c;它们并不包含任何随 机器或语言而变的元素。这就定义了一系列服务&#xff0c;截然不同的应用都可以实现。…

WSDL、详解

WebService中的WSDL详解 有人在WebService开发的时候&#xff0c;特别是和第三方有接口的时候&#xff0c;走的是SOAP协议&#xff0c;然后用户&#xff08;或后台&#xff09;给你一个WSDL文件&#xff08;或网址&#xff09;&#xff0c;说按照上面的进行适配&#xff0c; 这…

wsdl和wadl区别

1、Java开发WebService最重要的两个规范&#xff1a; JSR-224 (JAX-WS&#xff1a;Java API for XML-Based Web Services ) &#xff0c;主要使用soap协议&#xff0c;使用wsdl来描述&#xff1b;JSR-311 (JAX-RS&#xff1a;The Java API for RESTful Web Services)&#xff…

WebService中的WSDL详细解析

WebService中的WSDL详解 有人在WebService开发的时候&#xff0c;特别是和第三方有接口的时候&#xff0c;走的是SOAP协议&#xff0c;然后用户&#xff08;或后台&#xff09;给你一个WSDL文件&#xff08;或网址&#xff09;&#xff0c;说按照上面的进行适配&#xff0c; 这…

WSDL详解

原文链接&#xff1a;WebService中的WSDL详解 有人在WebService开发的时候&#xff0c;特别是和第三方有接口的时候&#xff0c;走的是SOAP协议&#xff0c;然后用户&#xff08;或后台&#xff09;给你一个WSDL文件&#xff08;或网址&#xff09;&#xff0c;说按照上面的进…

WebService的WSDL详解以及远程访问WebService

一、WSDL详解 1.wsdl是一个用于精确描述Web服务的文档&#xff0c;是一个遵循wsdl-xml模式的xml文档。 2.一个wsdl文档通常包括8个重要元素&#xff0c;即definitions、types、import、message、portType、operation、binding、service元素。 3.这些元素嵌套在definitions元…

WebService中的WSDL详解

WebService中的WSDL详解 有人在WebService开发的时候&#xff0c;特别是和第三方有接口的时候&#xff0c;走的是SOAP协议&#xff0c;然后用户&#xff08;或后台&#xff09;给你一个WSDL文件&#xff08;或网址&#xff09;&#xff0c;说按照上面的进行适配&#xff0c; 这…

云计算与网格计算关系有别

导读&#xff1a;最近不断有人或询问云计算与网格计算的区别&#xff0c;或认为云计算是网格计算的延伸&#xff0c;甚至有学者写出比较的论文。事实上&#xff0c;云计算和网格计算本没有任何关系&#xff0c;但本文将澄清云计算和网格计算的区别&#xff0c;至于云计算和分布…

SOA、网格计算、云计算与P2P技术

1.面向服务的体系结构SOA 1&#xff09;定义&#xff1a;Service-Oriented Architecture&#xff0c;一种应用的体系结构&#xff0c;其中所有的功能都定义为独立的具有可调用的接口的服务。这些服务可以在一个流程中被调用从而完成相应的商业处理过程。服务可以位于同一个应用…

简单理解串行计算、并行计算、分布式计算、网格计算与云计算

并行计算 并行计算可以划分成时间并行和空间并行。时间并行即流水线技术&#xff0c;空间并行使用多个处理器执行并发计算&#xff0c;当前研究的主要是空间的并行问题。 并行计算是相对于串行计算来说的。要理解并行计算&#xff0c;首先需要了解串行计算。串行计算是不将任…

网格计算和云计算之间的比较

转自&#xff1a;http://www.chinacloud.cn/show.aspx?id15020&cid14 随着网络技术的不断的发展和深入&#xff0c;网络信息越来越多&#xff0c;数据海量的进行挖挖取&#xff0c;而随之而来的就是新概念和新技术的诞生&#xff0c;目前有两种网络的计算方法最受人们关注…

云计算机基于什么网络吗,什么是云计算,什么是网格计算,他们之间有什么区别...

原标题&#xff1a;什么是云计算&#xff0c;什么是网格计算&#xff0c;他们之间有什么区别 随着网络技术的广泛应用和深化&#xff0c;网络信息与服务趋于海量&#xff0c;海量数据挖掘处理、分布异构等问题逐渐显现&#xff0c;随之新概念新技术也层出不穷&#xff0c;以云计…

高性能计算中的并行计算、分布式计算、网格计算和云计算之间的区别与联系

并行计算、分布式计算、网格计算与云计算都属于高性能计算&#xff08;High Performance Computing&#xff0c;HPC&#xff09;的范畴&#xff0c;主要目的在于对大数据的分析与处理&#xff0c;但它们却存在很多差异。电子海图云服务是基于高性能计算的理论技术、通过对传统服…

云计算、分布式计算和网格计算,主要有什么区别,基本概念是什么?

分布式计算 分布式计算是利用互联网上的计算机的中央处理器的闲置处理能力来解决大型计算问题的一种计算科学。研究如何把巨大的问题分成许多小的部分&#xff0c;然后把这些小任务分配给许多计算机进行处理&#xff0c;最后把这些计算结果综合起来得到最终的结果。在两个或多…