加密和解密数据

本指南介绍了如何使用 Google Workspace Client-side Encryption API 进行加密和解密。

您必须将用户使用的所有身份提供方 (IdP) 服务列入许可名单 共享加密文件通常情况下,您可以在账号中找到所需的 IdP 详细信息, 公开的 .well-known 文件;否则,请与组织的 Google Workspace 管理员可查看其 IdP 详细信息。

加密数据

当 Google Workspace 用户请求保存或存储客户端加密数据时 (CSE) 数据,Google Workspace 会发送 wrap 向 KACLS 端点网址发送请求以进行加密。除了可选的 安全检查(例如基于边界和 JWT 声明的检查),您的 KACLS 必须 请执行以下步骤:

  1. 验证发出请求的用户。

    • 验证身份验证令牌, 和授权令牌
    • 通过以下方式检查授权令牌和身份验证令牌是否属于同一用户: 匹配电子邮件声明时不区分大小写。
    • 当身份验证令牌包含可选的 google_email 声明时, 必须将其与授权令牌中的电子邮件声明进行比较 使用不区分大小写的方法。请勿在 用于此比较的身份验证令牌。
    • 在身份验证令牌缺少可选 google_email 声明,身份验证令牌中的电子邮件声明 与授权令牌中的电子邮件声明进行比较, 方法即可。
    • 在 Google 为未 与 Google 账号相关联,则必须提供 email_type 版权主张。 这是“访客访问”功能的重要组成部分,可提供有价值的 KACLS 对外部数据实施额外的安全措施 用户。
      • 下面列举了一些示例来说明 KACLS 如何使用这些信息:
      • 为了施加额外的日志记录要求,
      • 将身份验证令牌颁发者限制为专用访客 IdP。
      • 要求对身份验证令牌的额外声明。
      • 如果客户尚未配置访客访问权限,那么所有请求 其中 email_type 设置为 google-visitorcustomer-idp 可以 已被拒绝。email_typegoogle 或未设置的请求 您应继续接受 email_type
    • 检查授权令牌中的 role 声明是否为“writer”或 “upgrader”。
    • 检查授权令牌中的 kacls_url 声明是否与 当前 KACLS 网址。通过这项检查, 由内部人员或恶意域配置的中间人服务器 管理员。
    • 使用身份验证和授权执行边界检查 声明。
  2. 使用经过身份验证的加密算法加密以下部分:

    • 数据加密密钥 (DEK)
    • 授权令牌中的 resource_nameperimeter_id
    • 任何其他敏感数据
  3. 记录操作,包括发起该操作的用户、resource_name 和 请求中传递的原因。

  4. 返回一个不透明的二进制对象,该对象将由 Google Workspace 与一起存储 并在后续的所有密钥解封过程中按原样发送 操作。或者,提供结构化错误回复

    • 该二进制对象应包含已加密 DEK 的唯一副本, 实现特定数据可以存储在其中。

解密数据

当 Google Workspace 用户请求打开客户端加密 (CSE) 数据时, Google Workspace 发送 unwrap 请求 您的 KACLS 端点网址以进行解密。除了可选的安全措施 例如边界和 JWT 声明检查,您的 KACLS 必须执行 执行下列步骤:

  1. 验证发出请求的用户。

    • 验证身份验证令牌, 和授权令牌
    • 通过以下方式检查授权令牌和身份验证令牌是否属于同一用户: 匹配电子邮件声明时不区分大小写。
    • 当身份验证令牌包含可选的 google_email 声明时, 必须将其与授权令牌中的电子邮件声明进行比较 使用不区分大小写的方法。请勿在 用于此比较的身份验证令牌。
    • 在身份验证令牌缺少可选 google_email 声明,身份验证令牌中的电子邮件声明 与授权令牌中的电子邮件声明进行比较, 方法即可。
    • 在 Google 为未 与 Google 账号相关联,则必须提供 email_type 版权主张。 这是“访客访问”功能的重要组成部分,可提供有价值的 KACLS 对外部数据实施额外的安全措施 用户。
      • 下面列举了一些示例来说明 KACLS 如何使用这些信息:
      • 为了施加额外的日志记录要求,
      • 将身份验证令牌颁发者限制为专用访客 IdP。
      • 要求对身份验证令牌的额外声明。
      • 如果客户尚未配置访客访问权限,那么所有请求 其中 email_type 设置为 google-visitorcustomer-idp 可以 已被拒绝。email_typegoogle 或未设置的请求 您应继续接受 email_type
    • 检查授权令牌中的 role 声明是否为“读取者”或 “writer”。
    • 检查授权令牌中的 kacls_url 声明是否与 当前 KACLS 网址。这样才能检测到潜在的中间人 由内部人员或恶意网域管理员配置的服务器。
  2. 使用经过身份验证的加密算法解密以下部分:

    • 数据加密密钥 (DEK)
    • 授权令牌中的 resource_nameperimeter_id
    • 任何其他敏感数据
  3. 检查授权令牌和解密后的 blob 中的 resource_name 匹配。

  4. 使用身份验证和授权声明执行边界检查。

  5. 记录操作,包括发起该操作的用户、resource_name 和 请求中传递的原因。

  6. 返回解封装的 DEK 或结构化错误回复