硬件安全模块

硬件安全模块（，缩写HSM）是一种用于保障和管理强认证系统所使用的数字密钥，并同时提供相关密码学操作的计算机硬件设备。硬件安全模块一般通过扩展卡或外部设备的形式直接连接到电脑或网络服务器。

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

许多HSM系统提供安全备份-{}-外部密钥的机制。密钥可以以封包形式备份并存储在计算机磁盘或其他介质上，或安全的便携式设备（如智能卡或其他安全令牌）存储于外部。

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

少数HSM可以让用户在其内部处理器上运行专门开发的模块。在一些场景下，这种设计相当实用，例如用户可以在这种安全、受控的环境下运行一些特殊的算法或者业务逻辑，哪怕攻击者取得了计算机的完全控制权限，存储在HSM（连接到计算机）中的程序也无法被提取或篡改。一般HSM允许用户使用C、.NET、Java等编程语言开发这种专用程序。值得注意的是，用户自定义的程序与HSM本身的程序之间存在隔离，这使程序的存在不会影响到HSM本身的安全。

安全性 
考虑到硬件安全模块（HSM）在应用程序与基础设施的安全中扮演的关键角色，此类密码学模块通常都会经过Common Criteria、等受到国际承认的认证。这将为用户提供产品设计与实现上的保障，同时确保相应的密码学算法能按预期方式正确工作。FIPS 140安全认证最高认证等级为Level 4（整体），目前仅有极少数HSM成功通过这一等级的认证，大部分设备处于Level 3等级。

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

硬件安全模块的功能通常包括：
 板载密码学安全密钥生成
 板载密码学安全密钥存储，至少是顶级和最敏感的密钥，通常称为主密钥
 密钥管理
 加密且敏感资料的使用
 卸载（代办）应用程序服务器的对称与非对称加密计算。
HSM也用于数据库透明加密的密钥管理。

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

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

一些HSM系统也用作硬件密码学加速器。尽管此类HSM在对称密码学相关的运算性能上不如那些为对称密码学加速特化设计的硬件，但它们在进行公钥密码学操作时能大大减轻连接到的主机的CPU运算负荷。它们一般每秒能完成1~10,000次1024位RSA签名操作。由于自2010年起，NIST推荐选取2048位及以上的RSA密钥长度， 在更长密钥下保证速度就变得越来越重要了。对此，有些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操作。 随着RSA密钥长度不断增加，因此而导致的速度下降已经成为一个重要问题。对此，有些HSM 已经支持同等安全程度仅需更短密钥的椭圆曲线密码学（ECC） 。特定型号的HSM的操作速度已经可以达到20,000次每秒。

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

DNS根区的DNSSEC部署于2007年1月27日正式开始，该任务由ICANN与VeriSign在美国商务部的支持下共同完成。 详情可参见Root DNSSEC's website 。

参见 
 硬體安全
 電子金融轉帳
 
 公開金鑰基礎建設
 PKCS11
 安全加密处理器
 安全令牌

参考资料

外部链接 
 Current NIST FIPS-140 certificates
 A Review of Hardware Security Modules 

密码硬件
银行技术