O primitivo MAC permite verificar se ninguém adultera seus dados. Um remetente que compartilha uma chave simétrica com um destinatário pode calcular uma tag de autenticação para uma determinada mensagem, o que permite que o destinatário verifique se uma mensagem é do remetente esperado e não foi modificada.
O MAC tem as seguintes propriedades:
- Autenticidade: conhecer a chave é a única maneira de criar uma tag MAC verificável.
- Simétrico: a computação e a verificação da tag exigem a mesma chave.
O MAC pode ser determinístico ou aleatório, dependendo do algoritmo. No momento, a Tink não implementa algoritmos MAC não determinísticos. Use o MAC somente para autenticação de mensagens, não para outros fins, como geração de bytes pseudoaleatórios (para isso, consulte PRF).
Se você precisar de um primitivo assimétrico, consulte Assinatura digital.
Escolher um tipo de chave
Recomendamos o uso do HMAC_SHA256 para a maioria dos usos, mas também há outras opções.
De modo geral, o seguinte se aplica:
- O HMAC_SHA512 pode ou não ser mais rápido, dependendo do tamanho da mensagem e das especificidades do hardware que você usa.
- O HMAC_SHA512 é o modo mais conservador que pode ser usado para um número praticamente ilimitado de mensagens.
O AES256_CMAC é mais rápido em sistemas compatíveis com a aceleração de hardware AES-NI.
Garantias mínimas de segurança
- Força de autenticação de pelo menos 80 bits
- Seguro contra falsificação existencial sob o ataque de texto simples escolhido
- Segurança pelo menos de 128 bits contra ataques de recuperação de chave e também em cenários com vários usuários, quando um invasor não tem como alvo uma chave específica, mas qualquer chave de um conjunto de até 232 chaves.