HSM (硬件安全模块)
定义
HSM 是一种防篡改的硬件设备,在内部生成、保存并使用密钥,私钥不会以明文形式离开设备。
HSM(Hardware Security Module,硬件安全模块)是专门执行密码运算的设备,形态可以是机架式设备、PCIe 卡、USB 令牌或云服务。签名、解密等操作都在受保护的边界内完成:密钥在模块内部生成,通常被标记为不可导出,应用只是通过 PKCS #11 等接口把数据送进去、拿结果出来。国际上 HSM 一般通过 FIPS 140-2/140-3 或 Common Criteria 认证;国内常称"密码机"或"服务器密码机",通常需要具备商用密码产品认证,涉及密评(商用密码应用安全性评估)的系统一般要求使用经过认证的密码产品。
为什么重要
HSM 是 PKI 中最贵重密钥的安身之处。CA/浏览器论坛要求 CA 在经过认证的硬件中生成并保护 CA 私钥;代码签名规则也要求用户的签名私钥必须放在硬件里,所以代码签名证书通常以 USB Key 或云签名服务的形式交付。大型网站、支付系统和银行也会把 TLS 私钥放在 HSM 里,有时与 SSL 卸载设备结合使用。
例子
# 在 PKCS #11 令牌上生成不可导出的 P-256 密钥(以 SoftHSM 测试为例)
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --login \
--keypairgen --key-type EC:prime256v1 --label tls-key
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --list-objects
常见误区
- 有了 HSM,服务器被攻破也没事。 HSM 防的是私钥被拷走,攻击者控制服务器期间仍然可以让 HSM 替他签名。
- 只有 CA 才需要 HSM。 代码签名私钥同样必须硬件保护,金融等受监管行业也常要求用 HSM 保存 TLS 或签名密钥。
- TPM 就是 HSM。 TPM 是绑定在单台机器上的小芯片,HSM 面向高吞吐、多应用的密钥管理。