Autenticador de mensagem
Em criptografia, um autenticador de mensagem (em inglês message authentication code - MAC) é um pequeno pedaço de informação usado para autenticar a mensagem.
Um algoritmo MAC, algumas vezes chamado função de dispersão chaveada (criptografia), em inglês keyed hash function, recebe como entrada uma chave secreta e uma mensagem de tamanho arbitrário para ser autenticado, e dá como saída uma MAC (algumas vezes chamada de tag ou etiqueta). O valor do MAC protege tanto a integridade dos dados da mensagem, assim como a sua autenticidade, permitindo aos verificadores (que também possuem a chave secreta) detectar quaisquer mudanças no conteúdo na mensagem.
Segurança
[editar | editar código-fonte]Enquanto funções MAC são similares às funções de dispersão em criptografia, elas possuem requisitos diferentes de segurança. Ser considerada segura, uma função MAC deve resistir à forjação existencial sobre ataque de puro texto escolhido. Isto significa que mesmo se um atacante tem acesso a um oráculo que possui a chave secreta e um gerador MACs para mensagens de sua escolha, ele não pode adivinhar o MAC das outras mensagens sem realizar quantidades inviáveis de cálculos de computação.
MACs diferem de assinaturas digitais, pois os valores da MAC são ambos gerados e verificados usando a mesma chave. Isso implica que o remetente e o receptor da mensagem devem combinar a mesma chave antes das comunicações iniciadas, como é o caso com encriptação simétrica. Pela mesma razão, MACs não proporcionam a propriedade de não repudiação oferecida pela assinatura, especificamente como no caso da chave secreta partilhada nas redes: qualquer usuário que pode verificar um MAC é também capaz de gerar MACs para outras mensagens. Em contraste, uma assinatura digital é gerada usando a chave privada de um par de chaves, o que é encriptação assimétrica. Desde que esta chave privada é somente acessada pelos seus titulares (donos), assinaturas digitais provam que o documento foi assinado por nenhum outro que não o titular. Assim, assinaturas digitais oferecem não repúdio.
Código de integridade de mensagem
[editar | editar código-fonte]O termo código de integridade de mensagem, em inglês message integrity code (MIC), é frequentemente substituído pelo termo MAC, especialmente em comunicações,[1] onde o acrônimo para MAC tradicionalmente representa Media Access Control (Media de controle de acesso). Entretanto, alguns autores[2] usam MIC como um diferente termo de um MAC; em seu uso do termo o funcionamento MIC não usa chaves secretas.
Essa carência de segurança significa que qualquer MIC destinado a aferir integridade à mensagem deve ser encriptado ou não será protegida contra falsificação. Algoritmos MIC são criados de tal forma que uma dada mensagem não produzirá sempre o mesmo MIC assumindo que o mesmo algoritmo é usado para gerar ambos. Reciprocamente, algoritmos MAC são designados para produzir MACs correspondentes somente se a mesma mensagem, chave secreta e vetor de inicialização são dados como entrada no mesmo algoritmo. MICs não usam chaves secretas e, quando tomados por conta própria, são, portanto, um indicador menos confiáveis do que a integridade da mensagem MACs. Porque MACs usam chaves secretas, eles não necessariamente precisam ser encriptados para fornecer o mesmo nível de garantias.
Implementação
[editar | editar código-fonte]Algoritmos MAC podem ser construídos de outros primitivos criptográficos, como funções criptográficas de dispersão (hash functions), como no caso da HMAC ou de algoritmos de cifra de bloco (OMAC, CBC-MAC e PMAC). No entanto muitos dos algoritmos mais rápidos MAC como UMAC e VMAC são construídos baseados em hash universal (universal hashing).[3]
Padrões
[editar | editar código-fonte]Existem vários padrões que definem algoritmos MAC. Estes incluem:
- FIPS PUB 113 Computer Data Authentication,[4] reformada em 2002,[5] define um algoritmo baseado na DES.
- ISO/IEC 9797-1 Mecanismo usando a cifra de bloco.[6]
- ISO/IEC 9797-2 Mecanismo usando uma dedicada função de dispersão.[7]
ISO/IEC 9797-1 e -2 definem modelos genéricos a algoritmos que podem ser usados com qualquer cifra de bloco ou função de dispersão, e uma variedade de parâmetros diferentes. Estes modelos e parâmetros seguem mais algoritmos específicos para serem definidos por nomear os parâmetros. Por exemplo, o algoritmo FIPS PUC 113 é funcionalmente equivalente ao algoritmo MAC ISO/IEC 9797-1 com método de preenchimento e um algoritmo de cifra de bloco da DES.
Exemplo
[editar | editar código-fonte]Neste exemplo, o remetente da mensagem usa um algoritmo MAC para produzir uma etiqueta de dados MAC. A mensagem e a etiqueta MAC são então enviadas para o receptor. Ele por sua vez executa a parte da mensagem da transmissão através do mesmo algoritmo MAC e mesma chave, produzindo a segunda etiqueta de dados MAC. Se elas são idênticas, o receptor pode seguramente assumir que a integridade da mensagem não foi comprometida, e a mensagem não foi alterada ou adulterada durante a transmissão.
- ↑ «IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications» (PDF). IEEE-SA. (2007 revision). 12 de junho de 2007. doi:10.1109/IEEESTD.2007.373646
- ↑ Fred B Schneider, Hashes and Message Digests, Cornell University
- ↑ «VMAC: Message Authentication Code using Universal Hashing». CFRG Working Group. CFRG Working Group. Consultado em 16 de março de 2010
- ↑ FIPS PUB 113 Computer Data Authentication
- ↑ Federal Information Processing Standards Publications, Withdrawn FIPS Listed by Number
- ↑ ISO/IEC 9797-1 Information technology — Security techniques — Message Authentication Codes (MACs) — Part 1: Mechanisms using a block cipher
- ↑ ISO/IEC 9797-2 Information technology — Security techniques — Message Authentication Codes (MACs) — Part 2: Mechanisms using a dedicated hash-function
Ligações externas
[editar | editar código-fonte]- RSA FAQ's entry on MACs (em inglês)
- Ron Rivest lecture on MACs (em inglês)