Código de autenticação de mensagem (MAC)

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).

Exemplo de caso de uso:

Consulte Quero proteger os dados contra adulteração.