验证导入的密钥

本主题介绍如何验证导入到 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 密钥的证明

将密钥导入到 HSM 后,您可以查看证明,确认 HSM 归 Google 所有。验证 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)

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

后续步骤