硬件安全模块(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

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

智能推荐

SaltStack数据系统_comment: no top file or master_tops data matches f-程序员宅基地

文章浏览阅读69次。文章目录1SaltStack数据系统2 SaltStack数据系统组件2.1 SaltStack组件之Grains2.2 SaltStack组件之Pillar2.3 Grains与Pillar的区别1SaltStack数据系统SaltStack有两大数据系统,分别是GrainsPillar2 SaltStack数据系统组件2.1 SaltStack组件之GrainsGrains是SaltStack的一个组件,其存放着minion启动时收集到的信息。Grains是SaltStack组件中非_comment: no top file or master_tops data matches found. please see master lo

error C2668: “swap”: 对重载函数的调用不明确_swap对重载函数的调用不明确-程序员宅基地

文章浏览阅读3.4k次,点赞6次,收藏3次。当出现这个错误提示的时候,很有可能代码并没有问题,而是编译器的设定问题。测试代码如下:#include using namespace std;//函数模板templatevoid swap(T &a,T &b){ T temp; temp = a; a = b; b = temp;}int main(int ,char **){ int a = 1, b _swap对重载函数的调用不明确

ZYNQ PCIe EP实现DMA+Linux交互,非常简洁的程序_c++ 往pcie发送数据-程序员宅基地

文章浏览阅读1w次,点赞8次,收藏120次。ZYNQ PCIe-DMA源码 例程 PS-PL交互 linux/裸机 verilog C/C++ZYNQ PCIe-DMA的实现过程一、概述二、基础知识三、系统总框架四、工作原理与工作模式五、接口时序六、资源使用情况七、PS-PL交互以及测试程序ZYNQ PCIe-DMA的实现过程近期在网上淘来个源码,看了之后觉得还不错。完全刷新我对ZYNQ的认知啊,原来ZYNQ也可以这么玩的。PS-PL交..._c++ 往pcie发送数据

Python-Django毕业设计员工宿舍管理系统(程序+Lw)_用python设计一个宿舍管理系统,要求能实现寝室信息的增加、删除、修改、查询以及-程序员宅基地

文章浏览阅读173次。该项目含有源码、文档、程序数据库、配套开发软件、软件安装教程项目运行环境配置:Pychram社区版py项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。推荐pycharm社区版;3.mysql环境:建议是用5.7版本均可。_用python设计一个宿舍管理系统,要求能实现寝室信息的增加、删除、修改、查询以及

linux使用apache搭建http服务器(文件服务器)_linux怎么搭http apache服务器-程序员宅基地

文章浏览阅读8.4k次,点赞5次,收藏41次。一、安装Apache$ sudo apt-get install apache2二、修改服务器访问端口Apache2的默认访问端口为80,可修改为其他端口(当端口被占用时需要更改其访问端口)进入apache2的安装目录 /etc/apache2/,修改ports.conf文件$ cd /etc/apache2/$ sudo chmod 775 ports.conf$ vim po..._linux怎么搭http apache服务器

逆转广义表_将广义表(a,( (b, c),( ) ),( ( ( d ), e ),f) 逆转为 ((f,(e-程序员宅基地

文章浏览阅读898次。题目请编写递归算法, 逆转广义表中的数据元素。例如: 将广义表:(a,((b,c),()),(((d),e),f))逆转为:((f,(e,(d))),((),(c,b)),a)。代码#include <iostream>#include <cstring>#include <algorithm>using namespace std;void reverse_str(char *s, int l, int r){ int n = r-l; _将广义表(a,( (b, c),( ) ),( ( ( d ), e ),f) 逆转为 ((f,(e ,( d)),( ( ),(c,b), a)的代码

随便推点

HTC硬件介绍_htc是什么硬件-程序员宅基地

文章浏览阅读399次。其中最重要的是头盔中两个屏幕,用的是比较高端的三星AMOLED屏幕,屏幕尺寸对角线为91.8mm,PPI(每英寸集成的像素)达到了447(像素密度越高表现出来的画面就更细腻)。体验者可以在一个小范围的空间中行走,体验制作好的内容。是通过摄像头不停的采集周围环境的图像来达到设备的姿态估计(比如噪音等一些没用的信息也会影响到它的准确性)。是通过计算机视觉,以及设备自身自带的传感器比如陀螺仪、加速器来实现位置的追踪。不需要外部硬件来定位。由LED阵列和横向纵向的两个马达,马达以非常高的频率扫描场景中的定位。_htc是什么硬件

基于 Python 深度学习的车辆特征分析系统,附源码_pycharm实时检测车辆及源码-程序员宅基地

文章浏览阅读1.7k次,点赞25次,收藏29次。而在机动车的自动识别过程中,通过利用深度学习的算法来让计算机通过不断地获取信息要素形成信息库,可以更好的提升计算机对于车辆的识别能力。本次就是通过利用了深度学习技术结合Python开发工具来设计一款能够在线通过图片分析来识别车辆的品牌的软件。_pycharm实时检测车辆及源码

matlab采样点数傅里叶变换,【 MATLAB 】模拟信号采样及离散时间傅里叶变换(DTFT)案例分析...-程序员宅基地

文章浏览阅读1.1k次。中使用的模拟信号: 为了研究在频域数量上的采样效果,对该信号使用两种不同的采样频率采样。a. 在 fs = 5000 对信号进行采样,求出并画出其离散时间傅里叶变换;b. 在 fs = 1000 对信号采样,求出并画出其离散时间傅里叶变换。题解:上篇博文也分析了,信号的带宽为2kHz,奈奎斯特频率就为 4000 样本/s,它小于第一问给出的采样频率,所以频谱混叠几乎不存在。我们通过MATLAB验证..._采样点时间轴变换matlab

程序员的选择-程序员宅基地

文章浏览阅读117次。程序员的15种选择前端程序员后端程序员全栈工程师运维工程师移动端开发工程师自由职业程序员测试工程师图像处理工程师游戏开发工程师交互体验工程师量化交易工程师数据科学家& 数据工程师研究型工程师创业公司程序员持续学习程序员转载于:https://www.cnblogs.com/huameixiao/p/11571598.html..._c程序员刚入门接触闭源和开源

vue 图片:src字符串拼接路径无效问题_vue 图片 字符串 拼接-程序员宅基地

文章浏览阅读2.1k次。无效代码:<img :src="'../../../../static/Hongkong1/img/commodity/' + oneArticleData.icon_name" />改为使用require获取图片编码即可<img :src="require('../../../../static/Hongkong1/img/commodity/' + oneArticl..._vue 图片 字符串 拼接

Notes Sixth day-渗透攻击-红队-打入内网_打入目标内网-程序员宅基地

文章浏览阅读3.5k次,点赞4次,收藏23次。**Notes Sixth day-渗透攻击-红队-信息收集(dayu)**作者:大余时间:2020-09-22请注意:对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。我必须再重申一遍:务必不要做未授权测试!不要未经授权在真实网络环境中复现任何本书中描述的攻击。即使是出于好奇而不是恶意,你仍然会因未授权测试行为而陷入很多麻烦。为了个人能更好的继_打入目标内网

推荐文章

热门文章

相关标签