RAW 对称加密

本主题介绍了如何执行以下原始对称密钥操作:

  • 在本地或使用 Cloud KMS 加密文本或二进制明文内容。
  • 在本地或使用 Cloud KMS 解密密文。

如果您希望改用常规(非原始)对称密钥操作,请参阅使用对称密钥加密和解密数据

借助原始对称加密,您可以在本地(本地或使用 Cloud KMS)加密和解密数据,并在不同库和服务提供商之间移动加密数据,而无需先解密数据。此功能取决于在操作时能否访问密钥。如果您想在 Google Cloud之外使用密文,则必须使用导入的密钥,因为在 Cloud KMS 中生成的密钥无法导出。这些加密算法会生成标准密文,任何标准解密服务都可以解密这些密文。我们支持以下原始对称加密算法:

  • AES-128-GCM
  • AES-256-GCM
  • AES-128-CBC
  • AES-256-CBC
  • AES-128-CTR
  • AES-256-CTR

请注意以下有关这些原始加密算法的事项:

  • AES-GCM 基于其他经过身份验证的数据 (AAD) 提供身份验证并生成身份验证标记,是建议使用的加密算法。如果未提供 AAD,则无法解密使用 AES-GCM 算法加密的数据。

  • AES-CBC 要求明文的大小是块大小(16 字节)的倍数。如果明文不是分块大小的倍数,请在加密前填充明文;否则,操作将失败,并显示指示问题的错误。

  • AES-CBCAES-CTR 不是经过身份验证的加密方案,这意味着它们可能存在更大的误用风险。它们旨在支持旧版和互操作性需求,应谨慎使用。为防止随意滥用,使用这些加密算法需要以下 IAM 权限:

    • cloudkms.cryptoKeyVersions.manageRawAesCbcKeysAES-CBC
    • cloudkms.cryptoKeyVersions.manageRawAesCtrKeysAES-CTR

所需的角色

如需获得使用原始加密所需的权限,请让您的管理员为您授予密钥的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

未经过身份验证的原始加密算法的其他角色

  • 如需使用 AES-CBC 密钥:Cloud KMS Expert Raw AES-CBC Key Manager (roles/cloudkms.expertRawAesCbc)
  • 如需使用 AES-CTR 密钥:Cloud KMS Expert Raw AES-CTR Key Manager (roles/cloudkms.expertRawAesCtr)

准备工作

  • 向预期正文授予上述原始对称加密权限。
  • 按照创建密钥环中所述创建密钥环。
  • 按照创建密钥导入密钥中的说明创建并导入原始对称加密密钥。

加密

gcloud

如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI

gcloud kms raw-encrypt \
    --location LOCATION \
    --keyring KEY_RING \
    --key KEY_NAME \
    --version KEY_VERSION \
    --plaintext-file INPUT_FILE_PATH \
    --ciphertext-file OUTPUT_FILE_PATH

替换以下内容:

  • LOCATION:密钥环的 Cloud KMS 位置。