问:什么是 AWS CloudHSM?

AWS CloudHSM 服务通过在 AWS 云中使用专用的硬件安全模块 (HSM) 实例,帮助您满足企业、合同和监管合规性要求,以确保数据安全。AWS 和 AWS Marketplace 合作伙伴为保护 AWS 平台中的敏感数据提供了多种解决方案,但对于某些需符合管理加密密钥方面的合同或监管要求的应用程序和数据,可能有必要提供额外的保护。CloudHSM 可补充现有的数据保护解决方案,让您能在按安全密钥管理的政府标准设计和验证的 HSM 中保护您的加密密钥。CloudHSM 可通过只能由您访问密钥的方式让您安全地生成、存储和管理用于数据加密的加密密钥。

问:什么是硬件安全模块 (HSM)?

硬件安全模块 (HSM) 可在防篡改的硬件设备中提供安全密钥存储和加密操作。HSM 设计可以安全地存储和使用加密密钥材料,而不会使其暴露于硬件的加密边界之外。

问:CloudHSM 可以用来做什么?

您可以使用 CloudHSM 服务支持多种使用案例和应用程序,如数据库加密、数字版权管理 (DRM)、公钥基础设施 (PKI)、身份验证和授权、文档签名和事务处理。

问:CloudHSM 如何工作?

使用 AWS CloudHSM 服务时,您需要创建 CloudHSM 集群。群集可以包含多个 HSM 实例,这些实例分布在一个区域的多个可用区中。群集中的 HSM 实例会自动同步并进行负载均衡。您可获得对群集中每个 HSM 实例的专用单租户访问权限。每个 HSM 实例在 Virtual Private Cloud (VPC) 中都显示为网络资源。向集群中添加 HSM 或将其从中删除只需调用 AWS CloudHSM API (或在命令行上使用 AWS CLI) 即可完成。创建和初始化 CloudHSM 集群后,您可以在 EC2 实例上配置一个客户端,以允许您的应用程序通过经过身份验证的安全网络连接使用该集群。

Amazon 管理员可监控 HSM 的运行状况,但无权配置、管理和使用它们。应用程序将标准的加密 API 和应用程序实例上安装的 HSM 客户端软件配合使用,以向 HSM 发送加密请求。客户端软件可维护通向集群中所有 HSM 的安全通道,并在此通道上发送请求,而 HSM 执行相关操作并通过该安全通道返回结果。然后,客户端通过加密 API 将结果返回到应用程序。

问:目前,我没有 VPC。我还可以使用 AWS CloudHSM 吗?

不可以。要保护并隔离您的 CloudHSM,避免其他 Amazon 客户使用,必须在 VPC 内部配置 CloudHSM。创建 VPC 很容易。有关更多信息,请参阅 VPC 入门指南

问:我的应用程序是否需要驻留在 CloudHSM 集群所在的 VPC 中?

不需要,但您运行应用程序和 HSM 客户端的服务器或实例必须能够通过网络 (IP) 访问集群中的所有 HSM。您可以采用多种方式建立应用程序到 HSM 的网络连接,其中包括使用相同的 VPC、使用 VPC 对等、使用 VPN 连接或使用 Direct Connect。有关更多信息,请参阅 VPC 对等指南VPC 用户指南

问:CloudHSM 是否能够与内部部署 HSM 配合使用?

可以。虽然 CloudHSM 无法与本地 HSM 直接交互操作,但它可根据使用案例、密钥类型和本地 HSM 的类型移动或同步它们之间的密钥。请打开 AWS 控制台中的 AWS 技术支持案例,帮助您执行这一操作。

问:我的应用程序该如何使用 CloudHSM?

我们将 CloudHSM 与很多第三方软件解决方案 (如 Oracle Database 11g 和 12c、 及适用于 SSL 卸载的 Apache 和 Nginx 等 Web 服务器) 进行了集成和测试。请参阅 CloudHSM 用户指南,了解更多信息。

如果您要开发自己的自定义应用程序,您的应用程序可以使用 CloudHSM 支持的标准 API,包括 PKCS#11、 和 Java JCA/JCE (Java Cryptography Architecture/Java Cryptography Extensions)。即将支持 Microsoft CAPI/CNG。请参阅 CloudHSM 用户指南,获取代码示例和入门帮助。

问:能否使用 CloudHSM 存储其他 AWS 服务使用的密钥或加密数据?

能。您可以在与 CloudHSM 集成的应用程序中执行所有加密操作。在这种情况下,S3 或 EBS 等 AWS 产品将只能看到您的数据已加密。

问:其他 AWS 产品是否可以使用 CloudHSM 存储和管理密钥?

AWS 产品现在无法直接与 CloudHSM 集成。如果您想使用很多 AWS 产品 (如 EBS、S3 或 RDS) 提供的服务器端密码术,您应该考虑使用 AWS Key Management Service。我们在未来计划将 CloudHSM 与其他 AWS 服务集成。如果您对此感兴趣,请告知我们

问:CloudHSM 能否用于执行个人标识号 (PIN) 数据块转换或其他在借记卡支付交易中使用的加密操作?

目前,CloudHSM 提供通用 HSM。有朝一日,我们可以提供支付功能。如果您对此感兴趣,请告知我们

问:与 AWS CloudHSM 相比,AWS Key Management Service (KMS) 如何?

AWS Key Management Service (KMS) 是一种多租户托管服务,让您能够使用和管理加密密钥。两种服务都可为加密密钥提供高级别安全保障。AWS CloudHSM 直接在 Amazon Virtual Private Cloud (VPC) 中提供可由您单独控制的专用 FIPS 140-2 级别 3 HSM。

问:何时应该使用 AWS CloudHSM 而不是 AWS KMS?

如果您有以下需要,则应该考虑使用 AWS CloudHSM:

  • 密钥存储在由您单独控制且经过验证的专用第三方硬件安全模块中。
  • FIPS 140-2 合规性。
  • 使用 PKCS#11、Java JCE 或 Microsoft CNG 接口与应用程序集成。
  • 高性能 VPC 内部加密加速 (批量加密)。

问:我现在使用的基于 Safenet 的 HSM 是否会被淘汰?

不会。虽然我们认为新 CloudHSM 服务的功能集和成本提供了更具吸引力的选择,但我们仍会为现有客户保留 AWS CloudHSM Classic。我们将在不久后提供资源,帮助客户从 CloudHSM Classic 迁移到新服务。

问:如何开始使用 CloudHSM?

您可以在 CloudHSM 控制台中预配置 CloudHSM 集群,也可以通过 AWS 开发工具包或 API 进行几次 API 调用来完成预配置。要了解更多信息,请参阅 CloudHSM 用户指南获得入门信息,参阅 CloudHSM 文档了解关于 CloudHSM API 的信息,或访问“Amazon Web Services 工具”页面了解有关开发工具包的更多信息。

问:如何终止 CloudHSM 服务?

您可以使用 CloudHSM API 或开发工具包删除 HSM,以停止使用该服务。有关更多说明,请参阅 CloudHSM 用户指南

问:使用 AWS CloudHSM 服务时如何收费和计费?

您需要为 HSM 预配置到 CloudHSM 集群的小时数 (或不到 1 小时) 按小时支付费用。无 HSM 的集群不会产生费用,加密备份的自动存储也不会产生费用。Amazon 有权对每月超出 5000GB 的 AWS CloudHSM 网络数据传入和传出进行收费。有关更多信息,请访问 CloudHSM 定价页面

问:CloudHSM 服务是否提供免费套餐?

不,CloudHSM 不提供免费套餐。

问:注册 CloudHSM 有前提条件吗?

有。要开始使用 CloudHSM,需要满足几个前提条件,其中包括在您需要 CloudHSM 服务的区域提供虚拟私有云 (VPC)。有关更多信息,请参阅 CloudHSM 用户指南

问:我是否需要在自己的 HSM 上管理固件?

不需要。AWS 在硬件上管理固件。固件由第三方维护,并且每个固件都必须由 NIST 进行 FIPS 140-2 级别 3 合规性评估。只有由 FIPS 密钥加密签署的固件 (AWS 对其无访问权限) 才能安装。

问:我的 CloudHSM 集群中应该拥有多少个 HSM?

无论哪种生产工作负载,AWS 都强烈建议您使用位于两个不同可用区中的至少两个 HSM。对于任务关键型工作负载,我们建议您使用位于至少两个不同可用区中的至少三个 HSM。CloudHSM 客户端将自动处理所有 HSM 故障,并以透明方式实现两个或两个以上的 HSM 到应用程序的负载均衡。

问:密钥的持久性由谁负责?

AWS 每天会对 CloudHSM 集群自动执行加密的备份,并在集群生命周期事件 (如添加或删除 HSM) 发生时进行额外备份。在备份间隔的 24 小时时段内,您需全权负责创建或导入集群中的密钥材料的持久性。我们强烈建议您将创建的所有密钥同步至位于两个不同可用区中的至少两个 HSM 中,以确保密钥的持久性。请参阅 CloudHSM 用户指南,了解有关密钥同步验证的更多详细信息。

问:如何设置高可用性 (HA) 配置?

当您的 CloudHSM 集群中拥有至少两个 HSM 时,系统会自动提供高可用性。无需其他配置。如果集群中的一个 HSM 出现故障,系统会自动将其替换,并更新所有客户端以反映新配置,而无需中断任何处理过程。其他 HSM 可通过 AWS API 或开发工具包添加到集群中,从而在不中断应用程序的情况下提高可用性。

问:一个 CloudHSM 群集可以包含多少个 HSM 实例?

单个 CloudHSM 群集最多可包含 32 个 HSM。根据账户服务限制,客户最多可以创建 28 个实例。剩余容量是预留出来供内部使用的,例如用在替换出现故障的 HSM 实例时。

问:是否可以备份 CloudHSM 中的内容?

AWS 每天对 CloudHSM 集群进行备份。只要密钥的生成方式并非“不可导出”,也可将其导出 (“打包”) 集群并存储在本地。目前还没有其他备份选项,但我们希望能尽快提供更完善的本地备份功能。

问:有适用于 CloudHSM 的 SLA 吗?

目前,没有适用于 CloudHSM 的 SLA。

问:我是否与其他 AWS 客户共享我的 CloudHSM?

不是。作为服务的一部分,您获得对 HSM 的单租户访问权限。您可以将底层硬件与其他客户共享,但 HSM 仅限您自己访问。

问:在没有加密密钥访问权限的情况下,AWS 如何管理 HSM?

CloudHSM 在设计之初就考虑到了责任分离和基于角色的访问控制。AWS 拥有对 HSM 的有限凭证,让我们能够监控和维护 HSM 的运行状况和可用性,获取加密的备份,提取审核日志并将其发布到您的 CloudWatch Logs 中。AWS 无法查看、访问或使用您的密钥,也无法通过您的密钥触发您的 HSM 执行任何加密操作。

请参阅 CloudHSM 用户指南,了解有关责任分离及各类用户拥有的 HSM 功能的更多信息。

问:能否监控我的 HSM?

能。CloudHSM 会为 CloudHSM 集群和各个 HSM 实例发布了多个 CloudWatch 指标。您可以使用 AWS CloudWatch 控制台、API 或开发工具包获取这些指标或针对其发布警报。

问:CloudHSM 的“熵源” (随机源) 是什么?

每个 HSM 都拥有一个经 FIPS 验证的 确定性随机数生成器 (DRBG),该生成器在由符合 SP800-90B 的 HSM 硬件模块中的真随机数生成器 (TRNG) 的基础上形成。这是一种高质量熵源,每秒可为每个 HSM 生成 20Mb 熵。

问:如果有人擅自改动 HSM 硬件会怎样?

CloudHSM 具有物理和逻辑篡改检测和响应机制,可触发硬件的密钥删除 (清零)。该硬件可以在物理屏障被突破后有效检测篡改行为。HSM 实例还可免受暴力登录攻击。在尝试使用加密员 (CO) 凭证访问 HSM 失败一定次数后,HSM 实例会锁定 CO。同样地,在尝试使用加密用户 (CU) 凭证访问 HSM 失败一定次数后,用户即会被锁定,必须由 CO 解锁。

问:发生故障时会怎样?

Amazon 会监控和维护 HSM 和网络的可用性和错误状况。如果 HSM 发生故障或网络连接中断,系统即会自动替换该 HSM。您可以使用 CloudHSM API、软件开发工具包或 CLI 工具检查单个 HSM 的运行状况,还可以使用 AWS 服务运行状况控制面板随时检查服务的整体运行状况。

问:如果单个 HSM 实例出现故障,我的密钥会丢失吗?

会。如果您正在使用的 CloudHSM 集群发生故障,而且您未使用两个或两个以上的 HSM,则自最近的每日备份以来创建的密钥可能会丢失。Amazon 强烈建议您在所有生产 CloudHSM 集群中使用位于不同可用区中的两个或两个以上的 HSM,以避免加密密钥丢失。

问:如果我的 HSM 凭证丢失,Amazon 是否可以恢复我的密钥?

不可以。Amazon 不能访问您的密钥或证书,因此在您丢失证书时无法恢复您的密钥。

问:我如何确定自己可以信任 CloudHSM 呢?

CloudHSM 基于经联邦信息处理标准 (FIPS) 140-2 3 级验证的硬件构成。您可以通过以下网址找到 CloudHSM 所用硬件的 FIPS 140-2 安全配置文件:http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp2850.pdf

问:CloudHSM 服务是否支持 FIPS 140-2 3 级?

是,CloudHSM 提供经 FIPS 140-2 3 级验证的 HSM。您可以按照 CloudHSM 用户指南验证 HSM 的真实性部分的步骤,确认上一个问题中描述的 NIST 安全策略中指定的相同型号硬件上是否拥有真实的 HSM。

问:如何在 FIPS 140-2 模式下运行 CloudHSM?

CloudHSM 始终处于 FIPS 140-2 模式中。这一点可以使用 CloudHSM 用户指南中提及的 CLI 工具并运行 getHsmInfo 命令进行验证,这一操作将指明 FIPS 模式状态。

问:如何将 HSM 分区证书安全地分配到我的实例?

请参考下方的 AWS 安全博客文章,其中详细介绍了使用 IAM 角色将非 AWS 证书分配到 EC2 实例的方法

问:我是否可以获取从我的帐户上发起的所有 CloudHSM API 调用的历史记录?

可以。AWS CloudTrail 会记录账户发起的 AWS API 调用。由 CloudTrail 生成的 AWS API 调用历史记录可让您执行安全分析、资源变更追踪以及合规性审核。有关 CloudTrail 的更多信息,请参阅 CloudTrail 主页,可通过 CloudTrail 的 AWS 管理控制台将其打开。

问:哪些事件未记录在 CloudTrail 中?

CloudTrail 不包含任何 HSM 设备或访问日志。系统直接通过 CloudWatch Logs 将这些日志提供给您的 AWS 账户。有关更多详细信息,请参阅 CloudHSM 用户指南

问:哪些 AWS 合规性计划包含 CloudHSM?

请参阅 AWS 合规性站点,了解有关包含 CloudHSM 的合规性计划的更多信息。与其他 AWS 产品不同,关于 CloudHSM 的合规性要求通常直接由硬件的 FIPS 140-2 级别 3 验证本身满足,而不是作为独立审核计划的一部分满足。

问:为什么 FIPS 140-2 级别 3 至关重要?

FIPS 140-2 级别 3 是某些使用案例 (包括文档签名、付款,或作为 SSL 证书的公有证书颁发机构运营) 的要求。

问:我该如何请求范围中包含 CloudHSM 的合规性报告?

您可以通过业务发展代表请求合规性报告。如果没有业务发展代表,可在此处发出请求。

问:CloudHSM 每秒可执行多少个加密操作?

各个 HSM 的性能不同,具体取决于特定的工作负载。下表显示了几个常见加密算法的单个 HSM 的近似性能。您可以在每个 CloudHSM 群集中创建最多 28 个 HSM 实例,因此,每个群集下所列的表都可以实现 28 倍的性能。性能可因具体的配置和数据大小而异,因此我们建议您使用 CloudHSM 对应用程序进行负载测试,以确定准确的规模需求。

RSA 2048 位签名/验证

1100/秒

EC P256

315 点乘/秒

AES256

300Mb/s 全双工批量加密

2048 位 RSA 密钥生成

大约 0.5/s

随机数生成器 (CSPRNG)

20Mb/s

问:CloudHSM 实例上可以存储多少个密钥?

CloudHSM 集群最多可以存储 3500 个任意类型、任意大小的密钥。

问:CloudHSM 是否支持 Amazon RDS Oracle TDE?

不支持。不支持 Amazon RDS Oracle TDE;但是,EC2 中运行的 Oracle 数据库 (11g 和 12c) 支持 Oracle TDE。有关其他详细信息,请参阅 CloudHSM 用户指南

问:CloudHSM 客户端是什么?

CloudHSM 是 AWS 提供的一款软件包,让您和您的应用程序能够与 CloudHSM 集群交互。

问:CloudHSM 客户端是否向 AWS 授予了对我的 CloudHSM 群集的访问权限?

否。该客户端和您的 HSM 之间的所有通信都进行了端到端加密。AWS 无法查看或拦截这些通信,也无法查看您的群集访问凭证。

问:什么是 CloudHSM 命令行界面 (CLI) 工具?

CloudHSM 客户端配有一套 CLI 工具,让您能够从命令行管理和使用 HSM。目前支持 Linux 和 Microsoft Windows。我们还计划支持 Apple macOS。这些工具在 CloudHSM 客户端所在的相同软件包中提供。

问:我该如何下载并开始使用 CloudHSM 命令行界面工具?

有关说明,请参阅 CloudHSM 用户指南

问:CloudHSM CLI 工具是否为 AWS 提供访问 HSM 内容的权限?

否。CloudHSM 工具可使用 CloudHSM 客户端通过经手动验证的安全通道,与您的 CloudHSM 集群直接通信。AWS 无法观察客户端、工具和 HSM 之间的任何通信,因为通信是端到端加密的。

问:我可以在哪些操作系统上使用 CloudHSM 客户端和 CLI 工具?

目前支持多个 Linux 版本(现代版本的 Amazon Linux、Redhat、Centos 和 Ubuntu)和 Microsoft Windows。我们还计划支持 Apple macOS。如果您要在其他操作系统上使用 CloudHSM 客户端和 CLI 工具,请告知我们。

问:在使用 CloudHSM 命令行界面工具时有哪些网络连接要求?

您运行 CloudHSM 客户端和/或使用 CLI 工具所在的主机必须能够通过网络访问 CloudHSM 群集中的所有 HSM。

问:我可以使用 CloudHSM API 和软件开发工具包做什么?

您可以创建、修改、删除和获取 CloudHSM 集群与 HSM 的状态。您可以使用 AWS CloudHSM API 执行的操作限于 AWS 通过其受限的访问权限可执行的操作。API 无法访问 HSM 的内容,也无法修改任何用户、策略或其他设置。要了解更多信息,请参阅 CloudHSM 文档了解有关 API 的信息,或访问 Amazon Web Services 工具页面了解有关软件开发工具包的更多信息。

 

问:我应该如何规划向 CloudHSM 的迁移?

首先确保您需要用到的算法和模型在 CloudHSM 上受支持。如果需要,可以请您的客户经理向我们提交功能请求。然后是确定您的密钥轮换策略。有关常用案例的建议,请参见下一个问答。现在您已准备就绪,可以开始使用新的 CloudHSM 了。请注意,CloudHSM Classic 中的分区与新 CloudHSM 中的加密用户 (CU) 相同。

问:如何轮换我的密钥?

您的轮换策略取决于应用程序的类型。常见示例如下: 

  • 用于签名的私有密钥:通常情况下,HSM 上的私有密钥对应着一个中间证书,中间证书又由离线企业根签署。您可以通过发布新的中间证书轮换密钥。先创建一个新的私有密钥,并使用 CloudHSM 上的 OpenSSL 生成相应的 CSR。然后,使用同一离线企业根签署 CSR。您可能必须要向无法自动验证整个证书链的合作伙伴注册此新证书。接下来,您需要使用与新证书相对应的新私有密钥签署所有新请求(例如,对文档、代码或其他证书的请求)。您可以继续使用对应的公有密钥验证原始私有密钥的签名,无需撤销。这个过程类似于退出或存档签名密钥的过程。
  • Oracle 透明数据加密:您可以先从硬件密钥存储库(您的原始 HSM)切换到软件密钥存储库,然后返回硬件密钥存储(新 CloudHSM),从而传输您的 wallet。
  • 用于信封加密的对称密钥:信封加密指的是一种密钥体系结构,在这种结构中,HSM 上的一个密钥对应用程序主机上的多个数据密钥进行加密/解密。您可能已经拥有一个密钥轮换流程,这样的话,您可以使用旧的包装密钥对数据密钥进行解密,然后使用新的包装密钥对其进行重新加密。迁移过程中的唯一区别是,CloudHSM 将创建并使用新的包装密钥,而不是原始 HSM。如果您还没有密钥轮换工具和流程,则需要创建一个。

问:如果我无法轮换密钥,该怎么做?

在某些情况下,您可以将密钥从现有 HSM 移至新的 CloudHSM。每个应用程序和使用案例都是不同的。请打开支持案例,详细了解您的应用程序、您使用的密钥类型以及它们是否可导出。我们将帮助您确定合适的迁移路径。

问:如何在 HSM 实例上执行日常维护?

AWS 对 CloudHSM 的日常维护过程旨在避免同一地区的多个可用区中出现同时停机的情况。

AWS 监控和维护 HSM 实例。我们需要将 HSM 实例从服务中删除,才能进行更新、替换或测试。如果是替换操作,预计可在二十分钟内完成,并且不应影响 CloudHSM 集群在正常情况下的性能。如果应用程序正在主动使用集群中的特定 HSM,则替换该应用程序时可能出现短暂的中断,同时 CloudHSM 客户端会在集群中另一 HSM 上重试这一操作。

在一个 24 小时时段内,AWS 不会对同一地区多个可用区中的 HSM 执行例行维护。

在不可预见的情况下,AWS 可能会执行紧急维护,而不提前发出通知。AWS 将尽量避免此情况,以及在一个 24 小时时段内,对同一地区多个可用区中的 HSM 执行紧急维护的情况。

AWS 强烈建议您使用在不同可用区中含有两个或更多 HSM 的 CloudHSM 集群,以避免出现任何潜在中断。

问:我在使用 CloudHSM 时遇到问题。我应该怎么办?

请联系 AWS Support


有关 AWS CloudHSM Classic 的问题,请参阅 AWS CloudHSM Classic 常见问题