Código de autenticação de mensagem (MAC)
O que é Código de autenticação de mensagem (MAC)?
Código de autenticação de mensagem (MAC)Tag curta de chave simétrica que autentica uma mensagem e deteta adulteração, calculada e verificada com o mesmo segredo partilhado.
Um Message Authentication Code (MAC) é uma tag de tamanho fixo calculada sobre uma mensagem usando uma chave secreta simétrica, de modo que a verificação exige a mesma chave. Ele fornece integridade e autenticidade, mas não o não-repúdio, porque ambas as partes detêm a chave. Construções comuns incluem o HMAC (baseado em hash, RFC 2104), o CMAC (CBC-MAC, NIST SP 800-38B), o GMAC (usado no GCM), o Poly1305 (combinado com o ChaCha20 no ChaCha20-Poly1305, RFC 8439) e o KMAC (construído sobre Keccak/SHA-3, NIST SP 800-185).
A razão de o HMAC existir, em vez de um ingênuo MAC = H(key ‖ message), é que hashes de Merkle–Damgård como MD5, SHA-1 e SHA-256 são vulneráveis a ataques de extensão de comprimento: um atacante que conheça uma tag válida pode anexar dados e calcular uma tag válida para a mensagem mais longa sem a chave. A estrutura aninhada H(key ⊕ opad ‖ H(key ⊕ ipad ‖ msg)) do HMAC derrota isso e possui uma prova formal de segurança.
Os MACs devem ser verificados em tempo constante — comparar as tags byte a byte com retorno antecipado vaza seu comprimento por meio de temporização, o que possibilitou a falsificação de 2009 contra o Keyczar. Eles sustentam a autenticação de registros TLS, o IPsec AH, o JWT HS256, a assinatura de pedidos de API e todos os modos AEAD. Um MAC sobre o texto cifrado (encrypt-then-MAC) é preferível ao MAC-then-encrypt, que contribuiu para ataques de padding-oracle como o Lucky Thirteen.
flowchart LR
subgraph Remetente
M1[Mensagem] --> T1["MAC(key, message)"]
K1[Chave secreta partilhada] --> T1
T1 --> S[Enviar mensagem + tag]
end
subgraph Destinatário
S --> R["Recalcular MAC(key, message)"]
K2[Chave secreta partilhada] --> R
R --> C{"Comparação em tempo constante<br/>com a tag recebida"}
C -->|Igual| OK[Aceitar: autêntica e íntegra]
C -->|Diferente| NO[Rejeitar: falsificada ou alterada]
end● Exemplos
- 01
O HMAC-SHA-256 autentica pedidos no AWS Signature Version 4.
- 02
O Poly1305 autentica o texto cifrado no AEAD ChaCha20-Poly1305 usado pelo TLS 1.3.
● Perguntas frequentes
O que é Código de autenticação de mensagem (MAC)?
Tag curta de chave simétrica que autentica uma mensagem e deteta adulteração, calculada e verificada com o mesmo segredo partilhado. Pertence à categoria Criptografia da cibersegurança.
O que significa Código de autenticação de mensagem (MAC)?
Tag curta de chave simétrica que autentica uma mensagem e deteta adulteração, calculada e verificada com o mesmo segredo partilhado.
Como se defender contra Código de autenticação de mensagem (MAC)?
As defesas contra Código de autenticação de mensagem (MAC) costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Código de autenticação de mensagem (MAC)?
Nomes alternativos comuns: MAC, Soma criptográfica.