【硬件安全】硬件安全模块—HSM

Perface

硬件安全模块(英语:Hardware security module,缩写HSM)是一种用于保障和管理强认证系统所使用的数字密钥,并同时提供相关密码学操作的计算机硬件设备。

硬件安全模块一般通过扩展卡或外部设备的形式直接连接到电脑或网络服务器。

设计

HSM提供篡改留证(tamper evidence/proof)、篡改抵抗(tamper evidence)两种方式的防篡改功能,前者设计使得篡改行为会留下痕迹,后者设计使得篡改行为会令HSM销毁密钥一类的受保护信息。[1]每种HSM都会包括一个或多个安全协处理器,用于阻止篡改或总线探测。

许多HSM系统提供安全备份外部密钥的机制。密钥可以以数据包形式备份并存储在计算机磁盘或其他介质上,或安全的便携式设备(如智能卡或其他安全令牌)存储于外部。[2]

由于HSM通常是公钥基础设施(PKI)或网路银行一类关键基础设施的一部分,一般会同时使用多个HSM以实现高可用性。一些HSM具备双电源、无需停机更换配件(如冷却风扇)等设计,以确保在数据中心等环境中的高可用性要求。

少数HSM可以让用户在其内部处理器上运行专门开发的模块。在一些场景下,这种设计相当实用,例如用户可以在这种安全、受控的环境下运行一些特殊的算法或者业务逻辑,哪怕攻击者获取了计算机的完全控制权限,存储在HSM(连接到计算机)中的程序也无法被提取或篡改。

一般HSM允许用户使用C、.NET、Java等编程语言开发这种专用程序。值得注意的是,用户自定义的程序与HSM本身的程序之间存在隔离,这使程序的存在不会影响到HSM本身的安全。

安全性

考虑到硬件安全模块(HSM)在应用程序与基础设施的安全中扮演的关键角色,此类密码学模块通常都会经过Common Criteria、FIPS 140等受到国际承认的认证。

这将为用户提供产品设计与实现上的保障,同时确保相应的密码学算法能按预期方式正确工作。FIPS 140安全认证最高认证等级为Level 4(整体),目前仅有极少数HSM成功通过这一等级的认证,大部分设备处于Level 3等级。

使用

硬件安全模块可在任何涉及到密钥的场景下使用。通常来说,这些密钥具有较高的价值,一旦泄露会导致严重的后果。

硬件安全模块的功能通常包括:

  • 板载密码学安全密钥生成
  • 板载密码学安全密钥存储,至少是顶级和最敏感的密钥,通常称为主密钥
  • 密钥管理
  • 加密且敏感资料的使用
  • 卸载(代办)应用程序服务器的对称与非对称加密计算。

HSM也用于数据库透明加密的密钥管理。

对于密钥在内的敏感信息,HSM同时提供逻辑层面与物理层面的保护,以防止未经授权的访问或者可能的入侵。[3]

尽管HSM主要用于处理公钥密码学使用的密钥对(可能以数字证书的形式存在,如X.509格式证书),一些情况下也处理对称密码学使用的对称密钥或者任意类型的数据。

一些HSM系统也用作硬件密码学加速器。尽管此类HSM在对称密码学相关的运算性能上不如那些为对称密码学加速特化设计的硬件,但它们在进行公钥密码学操作时能大大减轻连接到的主机的CPU运算负荷。它们一般每秒能完成1~10,000次1024位RSA签名操作。由于自2010年起,NIST推荐选取2048位及以上的RSA密钥长度,[4] 在更长密钥下保证速度就变得越来越重要了。对此,有些HSM已经支持同等安全程度仅需更短密钥的椭圆曲线密码学(ECC) 。

PKI应用场景 (证书颁发机构硬件安全模块)

在PKI场景下,证书颁发机构(CA)及注册机构(RA)可能使用HSM生成、储存、使用密钥对。此时,设备必须具备以下的基本特性:

  • 高等级的逻辑及物理安全保护
  • 需要多用户同时参与的授权方案 (参见Blakley-Shamir方案)
  • 日志记录及审计
  • 密钥安全备份

另一方面,由于线上或线下的PKI操作一般都需要注册机构人工审核(DV验证除外),处理速度瓶颈在于人工流程,因此该场景下设备性能相对次要。

卡交易应用场景 (银行硬件安全模块)

用于卡交易系统的HSM一般会比用于CA的HSM更加轻量,同时通常也不会提供标准API。此类设备主要可被分为以下两类:

ATM、POS终端中的HSM用于:

  • 当用户使用卡时,加密输入的PIN码

  • 加载密钥到受保护的内存区域
    授权与自定义模块用于:

  • 使用在线数据验证加密的PIN数据块

  • 与ATM控制器共同使用,以便通过检查CVV2码或调用EMV卡内组件,验证借记卡/信用卡的交易合法性

  • 支持智能卡(例如EMV卡)的安全操作API

  • 重复加密PIN数据块以便发送至其它授权设备

  • 支持POS ATM网络管理协议

  • 支持基于de facto标准的设备间密钥/数据交换API

  • 生成并打印包含PIN的密码卡

  • 生成磁条卡数据 (PVV, CVV)

  • 生成卡密钥集并支持智能卡的自定义处理过程

PCI安全标准委员会是负责制定并维护卡交易系统HSM标准的主要机构。

SSL链接建立

需要使用HTTPS(SSL/TLS)的性能敏感应用,通过使用带SSL加速功能的HSM, 可以获得一定的性能提升。SSL的RSA操作需要进行大整数乘法等操作,不同于通用CPU,HSM通过针对这些操作的特化设计,能以更高的效率完成这些操作。一般HSM每秒可完成1~10,000次的1024位RSA操作。[5] 随着RSA密钥长度不断增加,因此而导致的速度下降已经成为一个重要问题。对此,有些HSM[6] 已经支持同等安全程度仅需更短密钥的椭圆曲线密码学(ECC) 。特定型号的HSM的操作速度已经可以达到20,000次每秒。[7]

DNSSEC

越来越多的域名注册商开始使用HSM来存储签名DNS区域文件使用的密钥。OpenDNSSEC是一个可在HSM环境下管理DNS区域文件签名的开源工具。

DNS根区的DNSSEC部署于2007年1月27日正式开始,该任务由ICANN与VeriSign在美国商务部的支持下共同完成。[8] 详情可参见Root DNSSEC’s website (页面存档备份,存于互联网档案馆)。

参考

  • 硬件安全
  • 电子金融转账
  • FIPS 140
  • 公开密钥基础建设
  • PKCS11
  • 安全加密处理器
  • 安全令牌
  • 透明数据加密
  • 安全开关
  • https://zh.wikipedia.org/wiki/%E7%A1%AC%E4%BB%B6%E5%AE%89%E5%85%A8%E6%A8%A1%E5%9D%97

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

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

相关文章

《设计模式的艺术》笔记 - 职责链模式

介绍 职责链模式避免将请求发送者与接收者耦合在一起,让多个对象都有机会接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。 实现 myclass.h // // Created by …

【算法Hot100系列】跳跃游戏

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

windows系统中,通过LOAD到入csv格式的文件到neo4j中,如何写文件路径

在Neo4j中,使用LOAD CSV语句导入CSV文件时,需要确保你的文件路径是正确的。如果你使用的是Neo4j Desktop或者Neo4j Server,通常需要将CSV文件放在特定的导入目录下。 例如,如果你使用的是Neo4j Desktop,通常会有一个默…

Linux搭建dns主从服务器

一、实验要求 配置Dns主从服务器,能够实现正常的正反向解析 二、知识点 1、DNS简介 DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。…

js的节流和防抖

在JavaScript中,节流(Throttling)和防抖(Debouncing)是两种常用的优化高频率触发的事件或函数调用的技术。 防抖(Debouncing): 防抖的基本思想是:一定时间内&#xff0…

【DP】LCR 100.三角形最小路径和

题目 法1&#xff1a;DP class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n triangle.size();if (n 1) {return triangle.get(0).get(0);}int[] tmp new int[n];tmp[0] triangle.get(0).get(0);int ans Integer.MAX_VALUE;for…

磁的基本知识

磁的基本知识。 一、磁铁及其基本性质。 1、磁铁的概念。 具有吸引铁、钴、镍等金属能力的物质叫做磁体&#xff0c;俗称磁铁、吸铁石。被吸引的铁、钴、镍等物质叫做铁磁性材料。磁铁吸引铁磁性材料的性质叫做磁性。 2、磁铁的分类。 磁铁可分为天然磁铁和人造磁铁两种。天然…

准备注销CSDN了,再也不用了

动不动就是“外包干了2个月&#xff0c;技术明显…”推荐在首页&#xff0c;看到就烦&#xff0c;彻彻底底的垃圾堆&#xff0c;一个相同的标题滑不到底&#xff0c;点进去就是面试题、推销&#xff0c;牛头不对马嘴&#xff0c;真垃圾&#xff08;画个圈圈&#xff09;&#x…

C语言再学习 -- C语言搭建TCP服务器/客户端

TCP/UDP讲过~ 参看&#xff1a;UNIX再学习 – TCP/UDP 客户机/服务器 参看&#xff1a;UNIX再学习 – 网络IPC&#xff1a;套接字 这里记录一下可用的TCP服务器和客户端代码。 参看&#xff1a;用C语言搭建TCP服务器/客户端 一、TCP服务器 #include <stdio.h> #includ…

postman导入https证书

进入setting配置中Certificates配置项 点击“Add Certificate”,然后配置相关信息 以上配置完毕&#xff0c;如果测试出现“SSL Error:Self signed certificate” 则将“SSL certificate verification”取消勾选

uni-app使用HBuilderX打包Web项目

非常简单&#xff0c;就是容易忘记 一、找到manifest.json配置Web配置 二、源码视图配置 "h5" : {"template" : "","domain" : "xxx.xx.xx.xxx","publicPath" : "./","devServer" : {&quo…

C# tcp客户端字符串(图片名称)+ 图片数据打包,发送到服务端;服务端接收到数据后解析数据包

在C#中&#xff0c;要将字符串和图片数据打包发送到服务端&#xff0c;并在服务端解析这些数据&#xff0c;可以按照以下步骤进行&#xff1a; 客户端打包数据 1、创建一个自定义的数据结构来保存字符串和图片数据。 2、将字符串转换为字节数组。 3、将图片数据转换为字节数组。…

01 MyBatisPlus快速入门

1. MyBatis-Plus快速入门 版本 3.5.31并非另起炉灶 , 而是MyBatis的增强 , 使用之前依然要导入MyBatis的依赖 , 且之前MyBatis的所有功能依然可以使用.局限性是仅限于单表操作, 对于多表仍需要手写 项目结构&#xff1a; 先导入依赖&#xff0c;比之前多了一个mybatis-plus…

学习python仅收藏此一篇就够了(闭包,装饰器)

闭包 在函数嵌套的前提下&#xff0c;内部函数使用了外部函数的变量&#xff0c;并且外部函数返回了内部函数&#xff0c;我们把这个使用外部函数变量的内部函数称为闭包。 简单闭包 内部函数使用外部变量 def outer(name):def inner(name1):print(f"<{name}>&l…

x-cmd pkg | aliyun - 阿里云 CLI

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 aliyun 是基于阿里云 OpenAPI 的管理工具&#xff0c;用于与阿里云服务交互&#xff0c;管理阿里云资源。 首次用户 使用 x env use aliyun 即可自动下载并使用 在终端运行 eval "$(curl https://get.x-cmd.com…

Jetson之路

119换源之觞&#xff1a;版本一定要对耶耶耶&#xff01;所有问题解决&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;Ubuntu20.04 错误提醒&#xff1a;无法修正错误_aptitude : 依赖: libapt-pkg5.0 (> 1…

(初研) Sentence-embedding fine-tune notebook

由于工作需要&#xff0c;需要对embedding模型进行微调&#xff0c;我调用了几种方案&#xff0c;都比较繁琐。先记录一个相对简单的方案。以下内容并不一定正确&#xff0c;请刷到的大佬给予指正&#xff0c;不胜感激&#xff01;&#xff01;&#xff01; 一.对BGE模型&…

qt学习:实战 读取txt文件+定时器点名

目录 目标 步骤 头文件 配置ui界面 在.h里定义槽函数和字符串链表和定时器指针 在构造函数里读取txt文件并初始化定时器 开始按钮点击函数 开始定时器 停止按钮点击函数 关闭定时器 定时器槽函数 目标 两个按钮&#xff0c;一个开始点名&#xff0c;一个停止点名一个…

字符串倒序输出

近期面试有这样一个问题&#xff0c;给定一个字符串&#xff0c;将其倒序输出&#xff0c;这种问题乍一看很好处理&#xff0c;但是实际在写的时候不知道怎么写了&#xff0c;有思路&#xff0c;但是没写出来。记录一下。 字符串反转实现的方式有多种&#xff0c;本质思想是将两…

HTML动态房屋装饰特效

下面是代码&#xff1a; <!DOCTYPE html> <html lang"en" ><head><meta charset"UTF-8"><title>HTML5房屋装饰工具DEMO演示</title><link rel"stylesheet" href"css/style.css"></he…