所有 HSM 实例的已知问题 - AWS CloudHSM

所有 HSM 实例的已知问题

以下问题会影响所有 AWS CloudHSM 用户,而无论他们使用的是 key_mgmt_util 命令行工具、PKCS #11 开发工具包、JCE 开发工具包还是 OpenSSL 开发工具包。

问题:AES 密钥包装使用 PKCS #5 填充,而不是提供与标准兼容的使用零填充的密钥包装

此外,不支持不使用填充和使用零填充的密钥包装。

  • 影响: 如果您在 AWS CloudHSM 中使用此算法进行包装和解开包装,则不会产生任何影响。不过,使用 AWS CloudHSM 包装的密钥无法在需要符合无填充规范的其他 HSM 或软件中解开包装。这是因为,在执行与标准兼容的解开包装操作期,您的密钥数据后面可能会添加 8 字节的填充数据。外部包装的密钥无法正确在 AWS CloudHSM 实例中解开包装。

  • 变通办法:要在外部对某个密钥解开包装,而该密钥是在 AWS CloudHSM 实例上使用 AES 密钥包装和 PKCS #5 填充进行包装的,则您必须先去除额外的填充,然后才能尝试使用该密钥。您可以通过以下方式执行此操作:在文件编辑器中修剪额外的字节,或者只将密钥字节复制到您代码中的新缓冲区。

  • 解决状态:对于 3.1.0 客户端和软件版本,AWS CloudHSM 为 AES 密钥包装提供符合标准的选项。有关更多信息,请参阅 AES 密钥包装

问题:客户端进程守护程序要求其配置文件中至少有一个有效的 IP 地址才能成功连接到集群

  • 影响:如果您删除了集群中的所有 HSM,然后添加了获得新 IP 地址的另一个 HSM,客户端守护程序将继续在您的 HSM 的原始 IP 地址搜索它们。

  • 变通办法:如果您运行了间歇性工作负载,我们建议您在 CreateHsm 函数中使用 IpAddress 参数以将弹性网络接口(ENI)设置为其原始值。请注意,ENI 是特定于可用区 (AZ) 的。替代方法是删除 /opt/cloudhsm/daemon/1/cluster.info 文件,然后将客户端配置重置为新 HSM 的 IP 地址。您可以使用 client -a <IP address> 命令。有关更多信息,请参阅安装和配置 AWS CloudHSM 客户端 (Linux)安装和配置 AWS CloudHSM 客户端 (Windows)

问题:对于可由 AWS CloudHSM 使用 Client SDK 3 进行哈希处理和签名的数据,存在 16 KB 的大小上限

  • 解决状态:大小小于 16KB 的数据继续发送至 HSM 进行哈希处理。我们添加了在软件中对于大小介于 16KB 和 64KB 之间的数据本地进行哈希处理的功能。如果数据缓冲区大于 64KB,则 Client SDK 5 将显式失败。您必须将客户端和 SDK 更新到 5.0.0 或更高版本才能从修复获益。

问题:无法将导入的密钥指定为不可导出

  • 解决状态:此问题已修复。您无需执行任何操作,即可从修复获益。

问题:key_mgmt_util 中 wrapKey 和 unWrapKey 命令的默认机制已删除

  • 解决办法:使用 wrapKey 或 unWrapKey 命令时,必须使用 -m 选项来指定该机制。有关更多信息,请参阅 wrapKeyunWrapKey 文章中的示例。

问题:如果您在集群中有一个 HSM,HSM 失效转移将无法正常工作

  • 影响: 如果集群中的单个 HSM 实例失去连接,客户端将不会与其重新连接,即使 HSM 实例稍后恢复。

  • 解决方法:我们建议任意生产集群中至少有两个 HSM 实例。如果您使用此配置,将不会受此问题影响。对于单个 HSM 集群,退回客户端守护程序以恢复连接。

  • 解决状态: 此问题已经在 AWS CloudHSM 客户端 1.1.2 发布版中解决。您必须升级到此客户端,才能从修复中获益。

问题:如果在短时间内超过集群中 HSM 的密钥容量,客户端会输入未处理的错误状态

  • 影响: 当客户端遇到未处理的错误状态时会冻结,必须重新启动。

  • Workaround: (解决方法) 测试您的吞吐量,以确保您未以客户端无法处理的速率创建会话密钥。您可以通过将 HSM 添加到集群降低您的速率,或减慢会话密钥创建过程。

  • 解决状态: 此问题已经在 AWS CloudHSM 客户端 1.1.2 发布版中解决。您必须升级到此客户端,才能从修复中获益。

问题:大小大于 800 字节的 HMAC 密钥的摘要操作不受支持

  • 影响: 大于 800 字节的 HMAC 密钥可以在 HSM 上生成或导入。但是,如果通过 JCE 或 key_mgmt_util 在摘要操作中使用这个较大的密钥,操作将失败。请注意,如果您使用的是 PKCS11,HMAC 密钥的大小限制为 64 个字节。

  • 解决方法: 如果要使用 HSM 上摘要操作的 HMAC 密钥,请确保大小小于 800 字节。

  • 解决状态:此时为无。

问题:与客户端软件开发工具包 3 一起分发的 client_info 工具会删除由可选输出参数指定的路径的内容

  • 影响:指定输出路径下的所有现有文件和子目录可能会永远丢失。

  • 变通办法:使用该 client_info 工具时请勿使用可选参数 -output path

  • 解决状态:此问题已在客户端软件开发工具包 3.3.2 发布版中解决。您必须升级到此客户端,才能从修复中获益。

问题:在容器化环境中使用 --cluster-id 参数运行 SDK 5 配置工具时收到错误

在配置工具中使用 --cluster-id 参数时,您会收到以下错误:

No credentials in the property bag

此错误由 Instance Metadata Service 版本 2 (IMDSv2, Instance Metadata Service Version 2) 的更新引起。有关更多信息,请参阅 IMDSv2 文档。

  • 影响:此问题将影响在容器化环境中在 SDK 版本 5.5.0 及更高版本上运行配置工具以及利用 EC2 实例元数据提供凭证的用户。

  • 解决办法:将 PUT 响应跳跃限制设置为至少两个。有关执行此操作的指导,请参阅配置实例元数据选项

问题:您收到错误“Failed to create cert/key from provided pfx file. Error: NotPkcs8”

  • 解决方法:您可以使用 openssl 命令将自定义 SSL 私有密钥转换为 PKCS8 格式:openssl pkcs8 -topk8 -inform PEM -outform PEM -in ssl_private_key -out ssl_private_key_pkcs8

  • 解决状态:此问题已在 Client SDK 5.12.0 发布版中解决。您必须升级到此客户端版本或更高版本才能从修复中获益。

问题:从 SDK 5.16 开始,ECDSA 签名失败并出现“机制无效”错误

  • 影响:使用弱于密钥强度的哈希函数时,ECDSA 签名操作会失败。之所以出现这种故障,是因为 FIPS 186-5 要求哈希函数的强度至少与密钥强度一样强。

    您可能会在客户端日志中看到与以下类似的错误:

    [cloudhsm_provider::hsm1::session::ecdsa::sign::common][][] Digest security strength (80) is weaker than the key security strength (128)
  • 解决办法:如果您无法更新哈希函数,则可以迁移到不强制执行哈希强度要求的非 FIPS 集群。但是,我们建议您更新哈希函数进而保持 FIPS 合规性。

    作为另一种解决办法,我们添加了一个配置选项来绕过此要求。请注意,不建议使用此选项,因为使用具有较弱哈希函数的 ECDSA 不符合安全性最佳实践。要使用此选项,请运行以下命令(将 configure-cli 替换为正在使用的 SDK 的配置工具:AWS CloudHSM Client SDK 5 配置语法):

    sudo /opt/cloudhsm/bin/configure-cli --enable-ecdsa-with-weak-hash-function
  • 解决方案:使用至少与 ECDSA 密钥一样强的哈希函数。有关哈希函数和 ECDSA 密钥强度的信息,请参阅 NIST SP 800-57 第 1 部分 Rev 5 中的表 2 和表 3。

问题:在交互模式下,使用预先哈希处理的数据签名操作无法正确清除会话令牌

  • 影响:在 SDK 版本 5.16.1 中以交互模式使用 CloudHSM CLI 时,使用预先哈希处理的数据的签名操作无法正确清除会话令牌。

  • 解决办法:使用预先哈希处理的数据执行签名操作时,使用单命令模式而不是交互模式。这样可以确保每次操作后都能正确清理令牌。

  • 解决状态:此问题已在 CloudHSM SDK 5.16.2 中解决。升级到版本 5.16.2 或更高版本从修复中获益。