AES 密钥封装进去 AWS CloudHSM - AWS CloudHSM

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AES 密钥封装进去 AWS CloudHSM

本主题介绍了 AES 密钥封装的选项 AWS CloudHSM。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 类型都施加了特定的限制。要设置 IV AWS CloudHSM,有两个选项:

  • 隐式:将 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

使用 AES 密钥包装 AWS CloudHSM

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

  • PCKS #11 库中,为 C_WrapKeyC_UnWrapKey 函数选择适当的机制,如下表所示。

  • JCE 提供程序中,选择适当的算法、模式和填充组合,实施密码方法 Cipher.WRAP_MODECipher.UNWRAP_MODE,如下表所示。

  • 在 C loudHSM CLI 中,从密钥解包支持的算法和算法列表钥匙包装中选择适当的算法,如下表所示。

  • key_mgmt_util (KMU) 中,将命令 wrapKeyunWrapKey 与适当的 m 值结合使用,如下表所示。

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