Criptografar e descriptografar dados

Este guia descreve como a criptografia e a descriptografia funcionam usando a API de criptografia do lado do cliente do Google Workspace.

É necessário permitir todos os serviços de provedor de identidade (IdP) usados pelos usuários que compartilham arquivos criptografados. Geralmente, os detalhes necessários do IdP são encontrados no arquivo .well-known disponível publicamente. Caso contrário, entre em contato com o administrador do Google Workspace da organização para saber os detalhes do IdP.

Criptografar dados

Quando um usuário do Google Workspace solicita salvar ou armazenar dados criptografados no lado do cliente (CSE), o Google Workspace envia uma solicitação wrap para o URL do endpoint do seu serviço de lista de controle de acesso à chave (KACLS) para criptografia. Além das verificações de segurança opcionais, como as baseadas em perímetro e declarações JWT, suas KACLS precisam realizar as seguintes etapas:

  1. Valide o usuário solicitante.

    • Valide o token de autenticação e o token de autorização.
    • Verifique se os tokens de autorização e autenticação são do mesmo usuário fazendo uma correspondência sem diferenciação de maiúsculas e minúsculas nas declarações de e-mail.
    • Quando o token de autenticação contém a declaração opcional google_email, ela precisa ser comparada com a declaração de e-mail no token de autorização usando uma abordagem sem diferenciação de maiúsculas e minúsculas. Não use a declaração de e-mail no token de autenticação para essa comparação.
    • Em cenários em que o token de autenticação não tem a declaração opcional google_email, a declaração de e-mail no token de autenticação deve ser comparada com a declaração de e-mail no token de autorização usando um método sem diferenciação de maiúsculas e minúsculas.
    • Em cenários em que o Google emite um token de autorização para um e-mail não associado a uma Conta do Google, a declaração email_type precisa estar presente. Isso forma uma parte crucial do recurso de acesso de visitante, fornecendo informações valiosas para que as KACLs apliquem medidas de segurança adicionais a usuários externos.
      • Alguns exemplos de como um KACLS pode usar essas informações:
      • Para impor requisitos de geração de registros adicionais.
      • Para restringir o emissor de token de autenticação a um IdP convidado dedicado.
      • Para exigir declarações adicionais no token de autenticação.
      • Se um cliente não tiver configurado o acesso de convidado, todas as solicitações em que email_type estiver definido como google-visitor ou customer-idp poderão ser rejeitadas. As solicitações com um email_type de google ou com um email_type não definido ainda serão aceitas.
    • Quando o token de autenticação contém a declaração opcional delegated_to, ele também precisa conter a declaração resource_name, e essas duas declarações precisam ser comparadas com as declarações delegated_to e resource_name no token de autorização. As declarações delegated_to precisam ser comparadas usando uma abordagem independente de maiúsculas e minúsculas, e o resource_name nos tokens precisa corresponder ao resource_name da operação.
    • Verifique se a declaração role no token de autorização é writer ou upgrader.
    • Verifique se a declaração kacls_url no token de autorização corresponde ao URL atual do KACLS. Essa verificação permite detectar possíveis servidores man-in-the-middle configurados por pessoas de dentro da empresa ou administradores de domínio desonestos.
    • Faça uma verificação de perímetro usando declarações de autenticação e autorização.
  2. Criptografe as seguintes partes usando um algoritmo de criptografia autenticada:

    • Chave de criptografia de dados (DEK)
    • Os valores resource_name e perimeter_id do token de autorização
    • Outros dados sensíveis
  3. Registre a operação, incluindo o usuário que a originou, o resource_name e o motivo transmitido na solicitação.

  4. Retorna um objeto binário opaco para ser armazenado pelo Google Workspace junto com o objeto criptografado e enviado como está em qualquer operação de desencapsulamento de chave subsequente. Ou veicule uma resposta de erro estruturada.

    • O objeto binário precisa conter a única cópia da DEK criptografada, e dados específicos da implementação podem ser armazenados nele.

Descriptografar dados

Quando um usuário do Google Workspace pede para abrir dados criptografados do lado do cliente (CSE), o Google Workspace envia uma solicitação unwrap para o URL do endpoint KACLS para descriptografia. Além das verificações de segurança opcionais, como as baseadas em perímetro e declaração de JWT, suas KACLS precisam realizar as seguintes etapas:

  1. Valide o usuário solicitante.

    • Valide o token de autenticação e o token de autorização.
    • Verifique se os tokens de autorização e autenticação são do mesmo usuário fazendo uma correspondência sem diferenciação de maiúsculas e minúsculas nas declarações de e-mail.
    • Quando o token de autenticação contém a declaração opcional google_email, ela precisa ser comparada com a declaração de e-mail no token de autorização usando uma abordagem sem diferenciação de maiúsculas e minúsculas. Não use a declaração de e-mail no token de autenticação para essa comparação.
    • Em cenários em que o token de autenticação não tem a declaração opcional google_email, a declaração de e-mail no token de autenticação deve ser comparada com a declaração de e-mail no token de autorização usando um método sem diferenciação de maiúsculas e minúsculas.
    • Em cenários em que o Google emite um token de autorização para um e-mail não associado a uma Conta do Google, a declaração email_type precisa estar presente. Isso forma uma parte crucial do recurso de acesso de visitante, fornecendo informações valiosas para que as KACLs apliquem medidas de segurança adicionais a usuários externos.
      • Alguns exemplos de como um KACLS pode usar essas informações:
      • Para impor requisitos de geração de registros adicionais.
      • Para restringir o emissor de token de autenticação a um IdP convidado dedicado.
      • Para exigir declarações adicionais no token de autenticação.
      • Se um cliente não tiver configurado o acesso de convidado, todas as solicitações em que email_type estiver definido como google-visitor ou customer-idp poderão ser rejeitadas. As solicitações com um email_type de google ou com um email_type não definido ainda serão aceitas.
    • Quando o token de autenticação contém a declaração opcional delegated_to, ele também precisa conter a declaração resource_name, e essas duas declarações precisam ser comparadas com as declarações delegated_to e resource_name no token de autorização. As declarações delegated_to precisam ser comparadas usando uma abordagem independente de maiúsculas e minúsculas, e o resource_name nos tokens precisa corresponder ao resource_name da operação.
    • Verifique se a declaração role no token de autorização é reader ou writer.
    • Verifique se a declaração kacls_url no token de autorização corresponde ao URL atual do KACLS. Isso permite a detecção de possíveis servidores man-in-the-middle configurados por pessoas de dentro ou administradores de domínio desonestos.
  2. Descriptografe as seguintes partes usando um algoritmo de criptografia autenticada:

    • Chave de criptografia de dados (DEK)
    • Os valores resource_name e perimeter_id do token de autorização
    • Outros dados sensíveis
  3. Verifique se o resource_name no token de autorização e no blob descriptografado correspondem.

  4. Faça uma verificação de perímetro usando declarações de autenticação e autorização.

  5. Registre a operação, incluindo o usuário que a originou, o resource_name e o motivo transmitido na solicitação.

  6. Retorne a DEK desencapsulada ou uma resposta de erro estruturada.