硬件安全模块 - 通过 AWS CloudHSM 实现加密密钥的专有管理

解析如何使用 AWS CloudHSM 进行加密密钥的专有管理。介绍与 KMS 的选型对比、FIPS 140-2 Level 3 合规、TLS 卸载、Oracle TDE 集成等高级用例。

加密密钥管理需求与 CloudHSM 的定位

加密密钥管理是信息安全的根基。AWS KMS (Key Management Service) 能满足大多数用例的加密密钥管理需求,但部分监管要求或安全策略要求在专有硬件上管理加密密钥,确保包括 AWS 在内的第三方无法访问。AWS CloudHSM 是一项在云上提供 FIPS 140-2 Level 3 认证的专有 HSM (Hardware Security Module) 的服务。HSM 部署在用户的 VPC 内,密钥的生成、存储和使用全部在 HSM 内部完成。AWS 负责 HSM 的硬件管理(配置、补丁、备份),但无法访问 HSM 内部的加密密钥。密钥管理权限完全由用户持有。KMS 后端也使用 HSM,但属于多租户共享 HSM,密钥管理由 AWS 与用户共同执行。当合规要求密钥专有管理时,就需要使用 CloudHSM。

集群配置与标准 API

CloudHSM 以集群为单位进行管理。集群由一个或多个 HSM 组成,建议在 2 个以上可用区部署 HSM 以实现高可用性。集群内的 HSM 之间会自动同步加密密钥,即使一台 HSM 发生故障也能继续访问密钥。CloudHSM 支持行业标准加密 API。PKCS#11 用于 C/C++ 应用程序和 OpenSSL 的集成。JCE (Java Cryptography Extension) 用于 Java 应用程序的集成。CNG/KSP (Cryptography API: Next Generation / Key Storage Provider) 用于 Windows 应用程序的集成。由于支持这些标准 API,现有应用程序代码的修改量极小。在 EC2 实例上安装 HSM 客户端软件,通过 VPC 内的私有网络与 HSM 通信。

与 KMS 的选型对比

CloudHSM 与 KMS 的选择需要在安全需求和成本之间取得平衡。应选择 KMS 的场景包括:AWS 服务(S3、EBSRDSLambda 等)的加密、通用应用程序加密、希望控制成本的情况。KMS 每 1 万次 API 调用仅 0.03 USD,且与 AWS 服务有丰富的原生集成。应选择 CloudHSM 的场景包括:需要 FIPS 140-2 Level 3 认证(KMS 为 Level 2)、监管要求密钥专有管理、希望在 HSM 内保存 TLS/SSL 卸载的私钥、需要 PKCS#11 或 JCE 等标准加密 API、需要用 HSM 管理 Oracle TDE 或 Microsoft SQL Server 的加密密钥。使用 KMS 的自定义密钥存储功能,可将 CloudHSM 集群作为 KMS 的后端,兼顾 KMS 的易用性和 CloudHSM 的安全性。 如需全面学习 HSM 加密最佳实践,请参阅技术书籍 (Amazon)

TLS 卸载与数据库加密

CloudHSM 的典型用例是 TLS/SSL 卸载。将 Web 服务器(Nginx、Apache)的 TLS 私钥保存在 CloudHSM 内,TLS 握手时的私钥操作在 HSM 内执行。由于私钥不会展开到服务器的内存或磁盘,即使服务器被入侵也能消除私钥泄露风险。通过将 CloudHSM 配置为 OpenSSL 引擎,仅需修改 Nginx 或 Apache 的配置即可实现 TLS 卸载。在数据库加密方面,可以用 CloudHSM 管理 Oracle TDE (Transparent Data Encryption) 的加密主密钥。只需在 Oracle Database 配置中指定 CloudHSM 客户端作为 PKCS#11 库,数据库的加密密钥即受 HSM 保护。同样支持与 Microsoft SQL Server 的 EKM (Extensible Key Management) 集成。费用为每台 HSM 1.60 USD/小时,2 台配置时月费约 2,336 USD。

CloudHSM 费用

CloudHSM 每实例约 1.60 美元/小时(月费约 1,152 美元)。高可用配置部署在 2 个可用区时月费约 2,304 美元。与 KMS(每密钥月费 1 美元)相比成本显著更高,因此仅在有 FIPS 140-2 Level 3 要求或专有 HSM 要求时使用。通过 KMS 自定义密钥存储将 CloudHSM 作为后端使用,可以用 KMS 的 API 操作 CloudHSM 的密钥。

总结 - CloudHSM 使用指南

AWS CloudHSM 是面向需要加密密钥专有管理的企业级服务。FIPS 140-2 Level 3 认证、标准加密 API(PKCS#11、JCE、CNG)、TLS 卸载、数据库加密集成是其主要优势。大多数用例使用 KMS 即可满足需求,但当监管要求密钥专有管理或需要在 HSM 内保存 TLS 私钥时,请考虑使用 CloudHSM。由于月费约 2,336 USD 起,建议在仔细评估需求后再决定是否引入。