AWS CloudHSM 中的 AES 密钥包装 - AWS CloudHSM

AWS CloudHSM 中的 AES 密钥包装

本主题介绍了 AWS CloudHSM 中的 AES 密钥包装的选项。AES 密钥包装使用 AES 密钥(包装密钥)来包装任何类型的其他密钥(目标密钥)。您可以使用密钥包装来保护存储的密钥或通过不安全的网络传输密钥。

支持的算法

AWS CloudHSM 提供了适用于 AES 密钥包装的三个选项,每个选项都取决于目标密钥在被包装前的填充方式。在调用密钥包装时,将根据您使用的算法自动完成填充。下表列出了支持的算法和相关的详细信息,以帮助您为应用程序选择适当的包装机制。

AES 密钥包装算法 规范 支持的目标密钥类型 填充方案 AWS CloudHSM 客户端可用性
零填充的 AES 密钥包装 RFC 5649SP 800 - 38F 全部 如有必要,可在密钥位后添加零来阻止对齐 SDK 3.1 及更高版本
无填充的 AES 密钥包装 RFC 3394SP 800 - 38F 块对齐的密钥,例如 AES 和 3DES SDK 3.1 及更高版本
带 PKCS #5 填充的 AES 密钥包装 全部

根据 PKCS #5 填充方案添加至少 8 个字节来阻止对齐

全部

要了解如何在应用程序中使用上表中的 AES 密钥包装算法,请参阅 在 AWS CloudHSM 中使用 AES 密钥包装

了解 AES 密钥包装中的初始化向量

在包装之前,CloudHSM 会将初始化向量 (IV) 附加到目标密钥来确保数据完整。每种密钥包装算法对允许的 IV 类型都施加了特定的限制。要在 AWS CloudHSM 中设置 IV,您有两种选择:

  • 隐式:将 IV 设置为 NULL,CloudHSM 使用该算法的默认值进行包装和解开包装操作(推荐)

  • 显式:通过将默认的 IV 值传递给密钥包装函数来设置 IV

重要

您必须了解应用程序中使用的 IV。要对密钥解开包装,您必须提供用于包装密钥的同一 IV。如果您使用隐式 IV 来包装,请使用隐式 IV 来解开包装。对于隐式 IV,CloudHSM 将使用默认值来解开包装。

下表介绍了包装算法指定的 IV 所允许的值。

AES 密钥包装算法 隐式 IV 显式 IV
零填充的 AES 密钥包装 必需

默认值:(按规格在内部计算的 IV)

不允许
无填充的 AES 密钥包装 允许(推荐)

默认值:0xA6A6A6A6A6A6A6A6

已允许

仅接受此值:0xA6A6A6A6A6A6A6A6

带 PKCS #5 填充的 AES 密钥包装 允许(推荐)

默认值:0xA6A6A6A6A6A6A6A6

已允许

仅接受此值:0xA6A6A6A6A6A6A6A6

在 AWS CloudHSM 中使用 AES 密钥包装

对密钥进行包装和解开包装,如下所示:

AES 密钥包装算法 PKCS #11 机制 Java 方法 CloudHSM CLI 子命令 密钥管理实用程序(KMU)参数
零填充的 AES 密钥包装
  • CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD(供应商定义的机制)

AESWrap/ECB/ZeroPadding aes-zero-pad m = 6
无填充的 AES 密钥包装
  • CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD(供应商定义的机制)

AESWrap/ECB/NoPadding aes-no-pad m = 5
带 PKCS #5 填充的 AES 密钥包装
  • CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD(供应商定义的机制)

AESWrap/ECB/PKCS5Padding aes-pkcs5-pad m = 4