验证导入的密钥

本主题介绍如何验证导入到 Cloud KMS 或 Cloud HSM 中的非对称密钥。

如需详细了解导入的工作原理(包括局限和限制),请参阅密钥导入

验证导入的密钥的限制

在 Cloud KMS 外部加密的数据

要测试导入的密钥,最好的方法是将导入密钥之前加密的数据进行解密,或使用导入的密钥加密数据并在导入之前使用该密钥进行解密。

在 Cloud KMS 或 Cloud HSM 中,只有当您导入非对称密钥时才可以这样做。这是因为当使用 Cloud KMS 或 Cloud HSM 对称密钥加密数据时,有关加密密钥版本的额外元数据会与加密数据一起进行保存和加密。在 Cloud KMS 外部加密的数据中不存在此元数据。

对证明进行验证

您可以验证关于 Cloud HSM 密钥的证明。这些证明声明该密钥是 HSM 密钥、HSM 模块由 Google 拥有,以及密钥的其他详细信息。这些证明不适用于软件密钥。

准备工作

  • 将非对称密钥导入 Cloud KMS 或 Cloud HSM。如果您想验证密钥的证明,必须使用 Cloud HSM。
  • 如有可能,请使用导入的密钥所在的本地系统完成本主题中的任务,以便本地系统已安装并配置 Cloud SDK。
  • 使用本地密钥加密文件,或将使用该密钥加密的文件复制到本地系统中。

验证密钥材料是否相同

将非对称密钥导入到 Cloud KMS 或 Cloud HSM 后,密钥材料与本地密钥完全相同。如需确认这一点,您可以使用导入的密钥将导入之前使用该密钥加密的数据进行解密。

如需使用 Cloud KMS 或 Cloud HSM 密钥对文件进行解密,请执行以下操作:

gcloud kms decrypt \
  --location=location  \
  --keyring=key-ring-name \
  --key=key-name \
  --ciphertext-file=filepath-and-file-to-decrypt \
  --plaintext-file=decrypted-filepath-and-file.dec

如果 --plaintext-file 标志所指向的文件包含正确的解密数据,则外部密钥和导入的密钥的密钥材料是相同的。

如需了解详情,请参阅加密和解密数据

验证对 Cloud HSM 密钥的证明

将密钥导入到 Cloud HSM 密钥后,您可以查看证明,确认该密钥位于 Google 拥有的 HSM 中。验证 Cloud HSM 对称密钥非对称密钥的过程有所不同。

证明不适用于 Cloud KMS 中的软件密钥。

Cloud HSM 对称密钥

您可以使用扩展的密钥校验和值 (EKCV) 密钥特性来验证导入的 Cloud HSM 密钥的密钥材料。此值系按照 RFC 5869 规范的第 2 节计算得出。该值的派生方式如下:使用基于 SHA-256 的 HMAC-based Extract-and-Expand Key Derivation Function (HKDF) 函数并以 32 个零字节作为盐值,然后使用固定字符串密钥校验值作为信息对其进行扩展。可以通过对密钥进行证明来检索此值。

Cloud HSM 非对称密钥

针对非对称密钥发出导入请求时,请在请求中包含封装的私钥。私钥包含供 Cloud KMS 派生公钥的足够信息。导入密钥后,您可以检索公钥并验证它与您本地存储的公钥是否匹配。如需详细了解如何检查公钥特性,请参阅验证公钥

您可以使用 EKCV 验证法来验证非对称密钥。在这种情况下,其值是 DER 编码的公钥的 SHA-256 摘要。您可以通过查看密钥的证明来检索此值。如需详细了解如何检查 EKCV 密钥特性 (attribute),请参阅验证密钥属性 (property)

如需详细了解如何证明导入的密钥,请参阅对密钥进行证明

后续步骤