A primitiva de criptografia autenticada determinista com dados associados (AEAD determinista) oferece criptografia com uma propriedade determinista: a criptografia dos mesmos dados sempre gera o mesmo texto criptografado. Esse tipo de criptografia é útil para encapsulamento de chaves ou para alguns esquemas de pesquisa em dados criptografados. Consulte a RFC 5297, seção 1.3 (link em inglês) para mais informações. Devido à propriedade determinística, as implementações dessa primitiva podem levar à perda de sigilo, porque um invasor só precisa descobrir o texto criptografado de uma determinada mensagem para identificar outras instâncias dela.
O AEAD determinista tem as seguintes propriedades:
- Secrecy: nada sobre o texto simples é conhecido, exceto o tamanho e a igualdade de textos simples repetidos.
- Autenticidade: é impossível mudar o texto simples criptografado que foi criptografado sem que isso seja detectado.
- Simétrica: a criptografia do texto simples e a descriptografia do texto criptografado são feitas com a mesma chave.
- Determinística: enquanto a chave primária não for alterada, a criptografia de um texto simples duas vezes com os mesmos parâmetros vai resultar no mesmo texto criptografado.
Dados associados
O AEAD determinístico pode ser usado para vincular o texto criptografado a dados associados
específicos. Suponha que você tenha um banco de dados com os campos user-id
e encrypted-medical-history. Nesse cenário, user-id pode ser usado como
dados associados ao criptografar encrypted-medical-history. Isso impede que um
invasor mova o histórico médico de um usuário para outro.
Os dados associados são opcionais. Se especificado, a descriptografia só será bem-sucedida se os mesmos dados associados forem transmitidos para as chamadas de criptografia e descriptografia.
Escolher um tipo de chave
Recomendamos o tipo de chave AES256_SIV para todos os casos de uso.
Garantias de segurança
- Força de autenticação de pelo menos 80 bits.
- O texto simples e os dados associados podem ter comprimentos arbitrários (no intervalo de 0 a 232 bytes).
- Nível de segurança de 128 bits contra ataques de recuperação de chaves e também em ataques multiusuário com até 232 chaves. Isso significa que, se um invasor conseguir 232 textos criptografados da mesma mensagem criptografada com 232 chaves, ele precisará fazer 2128 cálculos para conseguir uma única chave.
- A capacidade de criptografar com segurança 238 mensagens, desde que cada uma tenha menos de 1 MB de comprimento.
Exemplo de caso de uso:
Quero criptografar dados de forma determinística e vincular o texto criptografado ao contexto dele.