Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 750

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

Revisado porCybersecurity entrepreneur & security researcher

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

  1. 01

    O HMAC-SHA-256 autentica pedidos no AWS Signature Version 4.

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

Termos relacionados