MAC
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:
- Integridade: confirmar que a mensagem não foi alterada.
- 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
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.