Este guia descreve como a criptografia e a descriptografia funcionam usando a API Google Workspace Client-side Encryption.
Você precisa adicionar à lista de permissões todos os serviços de provedor de identidade (IdP) usados por usuários que compartilham arquivos criptografados. Geralmente, os detalhes do IdP necessários 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 receber os detalhes do IdP.
Criptografar dados
Quando um usuário do Google Workspace solicita salvar ou armazenar dados criptografados do lado do cliente (CSE), o Google Workspace envia uma
wrap solicitação para o URL do endpoint da lista de controle de acesso de chaves (KACLS, na sigla em inglês) para criptografia. Além de verificações de segurança opcionais, como verificações de perímetro e baseadas em declarações JWT, seu KACLS precisa realizar as seguintes etapas:
Validar o usuário solicitante.
- Validar o token de autenticação e o token de autorização.
- Verificar se os tokens de autorização e autenticação são do mesmo usuário fazendo uma correspondência sem distinção entre 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 distinção entre 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 precisa ser comparada com a declaração de e-mail no token de autorização, usando um método sem distinção entre 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_typeprecisa estar presente. Isso forma uma parte crucial do recurso de acesso de convidado, fornecendo informações valiosas para que o KACLS aplique medidas de segurança adicionais a usuários externos.- Alguns exemplos de como um KACLS pode usar essas informações incluem:
- Para impor requisitos de registro adicionais.
- Para restringir o emissor do token de autenticação a um IdP de 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_typeestiver definido comogoogle-visitoroucustomer-idppoderão ser rejeitadas. As solicitações com umemail_typedegoogleou com umemail_typenão definido precisam continuar sendo aceitas.
- Quando o token de autenticação contém a declaração opcional
delegated_to, ele também precisa conter a declaraçãoresource_name, e essas duas declarações precisam ser comparadas com as declaraçõesdelegated_toeresource_nameno token de autorização. As declaraçõesdelegated_toprecisam ser comparadas usando uma abordagem sem distinção entre maiúsculas e minúsculas, e oresource_namenos tokens precisa corresponder aoresource_nameda operação. - Verifique se a declaração
roleno token de autorização éwriterouupgrader. - Verifique se a declaração
kacls_urlno token de autorização corresponde ao URL do KACLS atual. Essa verificação permite a detecção de possíveis servidores man-in-the-middle configurados por pessoas de dentro da empresa ou administradores de domínio desonestos. - Realize uma verificação de perímetro usando declarações de autenticação e autorização.
Criptografar as partes a seguir usando um algoritmo de criptografia autenticado:
- Chave de criptografia de dados (DEK)
- Os valores
resource_nameeperimeter_iddo token de autorização - Quaisquer outros dados sensíveis
Registre a operação, incluindo o usuário que a originou, o
resource_namee o motivo transmitido na solicitação.Retorne um objeto binário opaco para ser armazenado pelo Google Workspace junto com o objeto criptografado e enviado como está em qualquer operação subsequente de desembrulho de chaves. Ou, disponibilize uma resposta de erro estruturada.
- O objeto binário precisa conter apenas a cópia da DEK criptografada. Dados específicos da implementação podem ser armazenados nele.
Descriptografar dados
Quando um usuário do Google Workspace solicita abrir dados criptografados do lado do cliente
(CSE), o Google Workspace envia uma
unwrap solicitação para o URL do endpoint do KACLS
para descriptografia. Além de verificações de segurança opcionais, como verificações de perímetro e baseadas em declarações JWT, seu KACLS precisa realizar as seguintes etapas:
Validar o usuário solicitante.
- Validar o token de autenticação e o token de autorização.
- Verificar se os tokens de autorização e autenticação são do mesmo usuário fazendo uma correspondência sem distinção entre 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 distinção entre 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 precisa ser comparada com a declaração de e-mail no token de autorização, usando um método sem distinção entre 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_typeprecisa estar presente. Isso forma uma parte crucial do recurso de acesso de convidado, fornecendo informações valiosas para que o KACLS aplique medidas de segurança adicionais a usuários externos.- Alguns exemplos de como um KACLS pode usar essas informações incluem:
- Para impor requisitos de registro adicionais.
- Para restringir o emissor do token de autenticação a um IdP de 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_typeestiver definido comogoogle-visitoroucustomer-idppoderão ser rejeitadas. As solicitações com umemail_typedegoogleou com umemail_typenão definido precisam continuar sendo aceitas.
- Quando o token de autenticação contém a declaração opcional
delegated_to, ele também precisa conter a declaraçãoresource_name, e essas duas declarações precisam ser comparadas com as declaraçõesdelegated_toeresource_nameno token de autorização. As declaraçõesdelegated_toprecisam ser comparadas usando uma abordagem sem distinção entre maiúsculas e minúsculas, e oresource_namenos tokens precisa corresponder aoresource_nameda operação. - Verifique se a declaração
roleno token de autorização éreaderouwriter. - Verifique se a declaração
kacls_urlno token de autorização corresponde ao URL do KACLS atual. Isso permite a detecção de possíveis servidores man-in-the-middle configurados por pessoas de dentro da empresa ou administradores de domínio desonestos.
Descriptografar as partes a seguir usando um algoritmo de criptografia autenticado:
- Chave de criptografia de dados (DEK)
- Os valores
resource_nameeperimeter_iddo token de autorização - Quaisquer outros dados sensíveis
Verifique se o
resource_nameno token de autorização e o blob descriptografado correspondem.Realize uma verificação de perímetro usando declarações de autenticação e autorização.
Registre a operação, incluindo o usuário que a originou, o
resource_namee o motivo transmitido na solicitação.Retorne a DEK desembrulhada ou uma resposta de erro estruturada.