密钥封装

密钥封装是使用一个密钥加密另一个密钥的过程,加密后便可以安全存储或通过不受信任的渠道进行传输。密钥封装可能基于对称加密或非对称加密(根据具体情况而定)。

在 Cloud Key Management Service 中,密钥封装用于安全导入用户提供的加密密钥。导入密钥需要一个导入作业,并且每个导入作业都有一个导入方法,用于指定要使用的密钥封装协议。

Cloud KMS 要求已导入密钥材料采用特定格式。 在封装密钥材料以进行导入之前,您可能需要将其转换为 Cloud KMS 要求的格式。格式化密钥以进行导入包含所需格式的详细信息,并说明如何根据需要将密钥转换为所需的格式。

正确设置密钥材料的格式后,Google Cloud CLI 可以自动封装密钥材料,然后再将其安全传输到 Cloud KMS。如需了解详情,请参阅导入密钥。 您也可以使用适当的加密协议手动封装您的密钥。在 Linux 上使用 OpenSSL 封装密钥提供了一个示例来说明如何执行此操作。

导入方法

Cloud KMS 提供了以下导入方法:

导入方法 导入作业密钥类型 密钥封装算法
RSA_OAEP_3072_SHA1_AES_256 3072 位 RSA 带有 SHA-1 和 AES-KWP 的 RSAES-OAEP
RSA_OAEP_4096_SHA1_AES_256 4096 位 RSA 带有 SHA-1 和 AES-KWP 的 RSAES-OAEP
RSA_OAEP_3072_SHA256_AES_256(推荐) 3072 位 RSA 采用 SHA-256 和 AES-KWP 的 RSAES-OAEP
RSA_OAEP_4096_SHA256_AES_256 4096 位 RSA 采用 SHA-256 和 AES-KWP 的 RSAES-OAEP
RSA_OAEP_3072_SHA256 3072 位 RSA 使用 SHA-256 算法的 RSAES-OAEP
RSA_OAEP_4096_SHA256 4096 位 RSA 使用 SHA-256 算法的 RSAES-OAEP

密钥封装算法

Cloud KMS 提供的导入方法对应于以下密钥封装算法:

采用 SHA-1/SHA-256 和 AES-KWP 的 RSAES-OAEP

此密钥封装算法是一种混合加密方案,它由非对称密钥封装操作和对称密钥封装操作组成:

  1. 导入作业中的公钥用于加密一次性 AES-256 密钥。使用 RSAES-OAEP 和 MGF-1 以及导入方法指定的摘要算法执行加密。一次性 AES-256 密钥是在执行封装时生成的。
  2. 可使用第 1 步中的一次性 AES-256 密钥并通过使用填充算法封装 AES 密钥来加密目标密钥材料。

用于导入的封装密钥材料是一个单字节数组,由第 1 步的结果和第 2 步的结果组成。换句话说,第 1 步和第 2 步的结果合并在一起便构成了封装密钥材料。

此算法与 PKCS #11 密钥封装算法 CKM_RSA_AES_KEY_WRAP 相同。如果要从 HSM 导入密钥,并且您的 HSM 支持此算法,您便可以直接使用该算法。此外,也可以分别使用 PKCS #11 机制 CKM_RSA_PKCS_OAEPCKM_AES_KEY_WRAP_PAD 执行上述的第 1 步和第 2 步。

如果来源 HSM 或其他密钥提供商(若未使用 HSM)不支持 RSA AES 密钥封装机制,则您必须使用导入作业的公钥手动封装密钥材料。如需了解如何使用 OpenSSL 执行此操作的示例,请参阅在 Linux 上使用 OpenSSL 封装密钥

采用 SHA-256 的 RSAES-OAEP

这是一种非对称密钥封装操作,它通过 RSAES-OAEP 使用导入作业中的公钥,采用 MGF-1 和 SHA-256 摘要算法,直接加密目标密钥材料。它基于 PKCS #11 RSA OAEP 机制 CKM_RSA_PKCS_OAEP。由于此导入方法的大小限制,因此不适合导入 RSA 私钥。