A primitiva MAC permite verificar se ninguém adulterou 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: saber a chave é a única maneira de criar uma tag MAC verificável.
- Symmetric: o cálculo e a verificação da tag exigem a mesma chave.
O MAC pode ser determinístico ou aleatório, dependendo do algoritmo. O Tink não implementa algoritmos MAC não determinísticos no momento. Use MAC apenas para autenticação de mensagens, não para outros fins, como a geração de bytes pseudoaleatórios (para isso, consulte PRF).
Se você precisar de uma primitiva assimétrica, consulte Assinatura digital.
Escolher um tipo de chave
Recomendamos o uso de HMAC_SHA256 para a maioria dos casos, mas há outras opções também.
Em geral, o seguinte é verdadeiro:
- O HMAC_SHA512 pode ser mais rápido ou não, dependendo do tamanho da mensagem e das especificações do hardware usado.
- 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 que oferecem suporte à aceleração de hardware AES-NI.
Garantias mínimas de segurança
- Força de autenticação de pelo menos 80 bits
- Proteção contra falsificação existencial em ataques de texto simples escolhido
- Segurança de pelo menos 128 bits contra ataques de recuperação de chaves e também em cenários de vários usuários (quando um invasor não está mirando em uma chave específica, mas em qualquer chave de um conjunto de até 232 chaves).