MAC

Summary

O MAC é um mecanismo criptográfico que utiliza uma chave secreta para garantir a autenticidade e a integridade de uma mensagem, permitindo verificar que não foi alterada nem falsificada.

MAC (Message Authentication Code) é um código de autenticação de mensagem utilizado para verificar duas coisas:

  1. Integridade: confirmar que a mensagem não foi alterada.
  2. Autenticidade: confirmar que a mensagem foi produzida por alguém que conhece uma determinada chave secreta.

1. Como funciona um MAC?

Imagina que um terminal de pagamento envia ao banco a seguinte informação:

  Valor: 50 €
  Moeda: EUR
  Número da transação: 12345

O cartão e o banco conhecem uma chave secreta 𝐾.
O cartão aplica um algoritmo MAC aos dados, utilizando essa chave:
𝑀𝐴𝐶=𝑀𝐴𝐶𝐾(𝑀𝑒𝑛𝑠𝑎𝑔𝑒𝑚)

O resultado do algoritmo pode ser algo parecido com 𝑀𝐴𝐶 =𝐴7𝐹39𝐶21...

O cartão envia a mensagem e o MAC ao banco.
O banco utiliza a sua cópia da chave secreta para calcular novamente o MAC.

  • Se os códigos coincidirem, a mensagem passou a verificação de autenticidade e integridade.
  • Se forem diferentes, a mensagem pode ter sido alterada ou o código pode ser inválido.

2. E se alguém alterar a mensagem?

Imagina que um atacante interceta a transação e altera o valor:

Original Alterado
50 € 500 €
EUR EUR
12345 12345
  Valor: 50 €    -->   Valor: 500€
  Moeda: EUR
  Número de transação: 12345

O MAC original foi calculado com o valor de 50 €.

Quando o banco recebe os 500 €, calcula um novo MAC. Como os dados são diferentes, o resultado também será diferente.

Assim, a verificação falha.

3. MAC é o mesmo que hash?

Não. Existe uma diferença fundamental:

Característica Hash MAC
Utiliza chave secreta? Não Sim
Verifica integridade? Sim, se houver uma referência confiável Sim
Verifica autenticidade? Não, por si só Sim
Exemplos SHA-256, SHA-3 HMAC-SHA256, CMAC-AES

Por exemplo:

  • SHA-256 calcula um hash sem precisar de uma chave secreta.
  • HMAC-SHA256 calcula um código de autenticação utilizando uma chave secreta.

Relação com o EMV

No padrão EMV, o MAC é utilizado para gerar o ARQC (Authorization Request Cryptogram), permitindo ao banco verificar criptograficamente a autenticidade dos dados da transação.