硬件安全模块(HSM)

Posted Johnny 周

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬件安全模块(HSM)相关的知识,希望对你有一定的参考价值。

一、什么是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

使用 HSM 的对称加密密钥

【中文标题】使用 HSM 的对称加密密钥【英文标题】:Symmetric encryption keys with HSM 【发布时间】:2017-11-20 10:26:12 【问题描述】:

我想使用 HSM 加密/解密我将存储在数据库中的敏感数据。 HSM 设备/服务器可以创建对称和非对称密钥。我想以尽可能高的安全性存储数据。所以我有两种方法:

1) 使 HSM 生成一个公钥/私钥对,它会将私钥保存在其中,并且永远不会离开。现在我可以为每个要加密的条目创建一个随机对称密钥。我使用随机 AES 密钥加密数据,使用 HSM 中生成的公钥加密 AES 密钥,并将加密数据的结果 + 加密密钥数据存储在数据库中的每一行中。 现在每次我想访问数据时,我都会将加密的密钥数据发送到 HSM,HSM 会对其进行解密并将解密后的 AES 密钥发回给我,我使用它来实际解密数据。

2) 每行/每项,我让 HSM 生成 AES 密钥并将对称密钥令牌存储在其中。我以明文形式向它发送数据,它以加密形式发回给我。每次我想访问数据时,我都会将加密数据发送到 HSM,它会解密并将其发送回给我。

HSM 服务器将像 Thales 一样专业且快速,因此它可以快速处理流量(希望如此)。

第一个问题是我只需以 SO(安全官)身份登录即可在 HSM 中生成和存储我的公钥/私钥对,从现在开始,我只需以只读用户身份登录。但与 2 号相比,它的过程较慢且冗长。

2 号(据我所知)将要求我始终拥有对设备的访问权限。

你有什么建议?请指教。

【问题讨论】:

如果 HSM 需要访问某些数据,请不要忘记备份 HSM 中的密钥。您没有提及您的 HSM 的品牌,而且我一般不是 HSM 专家,但可以指出 Thales 与 Microsoft Azure 用于实施 Azure Key Vault (AKV) 服务 (azure.microsoft.com/en-us/services/key-vault) 的品牌相同。根据您的技术堆栈,将您的密钥安全地导出到 AKV 实例并将其用于日常操作安全性可能会很方便。您可以在同一个“安全世界”(Azure 维护的 Thales 概念)内管理多个副本。 【参考方案1】:

我不确定像这样的安全建议是否最适合这里,但我会给出一些建议,而不是分裂头发。

首先,我更喜欢混合(RSA + AES)加密,因为你不必保护公钥来加密(只要攻击者不能用他们自己的公钥替换它) - 你可能不会需要提供 PIN 码。所以这会给第一个方案带来优势。

为了非常安全,您最好包装 AES 数据密钥,而不是对其进行加密。包装和加密基本上是一回事,但在解包之后,AES 密钥变成了 HSM 静态或 会话密钥,仍然在 HSM 中,您可以使用它进行解密。解密会将其返回到 PC 的不安全内存中。在 PC 上解密可能更快,但在 HSM 上解密更安全,应该是首选。

您通常应该只需要 SO 访问权限来执行管理任务。通常,您应该能够使用用户访问权限创建对象,例如密钥。但最终这些事情取决于 HSM 配置。

【讨论】:

谢谢!我看到了 HSM 密钥包装,但正在使用 SoftHSMv2 进行测试,但没有帮助。我将深入研究密钥包装【参考方案2】:

根据安全设置,Thales HSM 只会在设备通过身份验证时创建公钥/私钥对。这意味着您可能无法根据需要创建它们。

我使用的一种技术是预先生成约 1000 个公钥/私钥对,并在 HSM 进行身份验证时将其存储在密钥库(数据库或其他)中。然后,您可以使用从数据库中随机选择的密钥,而无需对 HSM 进行身份验证。

请注意,HSM 通常只能在内部存储 20 个密钥 - 这就是您可能希望在外部存储它们的原因。如果您有多个负载均衡的 HSM,这也很有效。

【讨论】:

以上是关于硬件安全模块(HSM)的主要内容,如果未能解决你的问题,请参考以下文章

如何确保 Cloud HSM 服务提供商真正使用物理硬件安全模块而不是模拟软件?

如何将 HSM 加密与 C# 集成?

SafeNet ProtectServer 外部 2 HSM

关于VCU功能安全架构设计...

信息安全机构体系

如何在 microsoft azure vault 中配置 RSA HSM 私钥和公钥?