0Pricing
Cryptology Academy · Aula

Conceitos de MAC e ataques de extensão de comprimento

Explique por que acrescentar um prefixo secreto é inseguro contra extensões de comprimento.

Conceitos de MAC e ataques de extensão de comprimento é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.

Boas-vindas

Os códigos de autenticação de mensagens (MAC) fornecem integridade e autenticidade com uma chave secreta compartilhada. Nesta lição, compreenderemos os MACs, suas propriedades e uma vulnerabilidade crítica em hashes ingênuos com chave.

O que é um MAC?

Um MAC é um código curto de autenticação calculado a partir de uma mensagem e de uma chave secreta. O receptor, usando a mesma chave, recalcula o MAC e o verifica. Isso impede falsificações sem a chave.

MAC versus hash versus assinatura

Hash: sem chave, público, fornece apenas integridade. MAC: segredo compartilhado, simétrico, fornece integridade + autenticidade. Assinatura digital: chave privada, assimétrica, acrescenta não repúdio. Somente as assinaturas fornecem não repúdio.

Impossibilidade de falsificação

Um MAC seguro deve ser existencialmente impossível de falsificar sob ataque de mensagem escolhida (EUF-CMA): um invasor que possa consultar o MAC para qualquer mensagem não poderá falsificar um MAC válido para uma nova mensagem que não tenha sido consultada anteriormente.

Hash ingênuo com chave: MAC de prefixo

Tentativa ingênua: MAC(K, M) = H(K || M). Parece seguro, mas é vulnerável a ataques de extensão de comprimento para funções hash Merkle-Damgård (SHA-256, SHA-512, MD5).

Ataque de extensão de comprimento

O estado de SHA-256 após o cálculo do hash de M é simplesmente H(M). Dado H(K || M), um invasor pode calcular H(K || M || padding || extra) para qualquer 'extra' sem conhecer K. Assim, ele estende a mensagem para anexar novos dados.

Impacto prático do ataque

Flickr (2009): a API usava H(K || params). Os invasores anexavam &api_sig=forgery a solicitações autenticadas. Resultado: chamadas de API não autorizadas pareciam válidas. Foi puramente uma exploração de extensão de comprimento.

O MAC de sufixo também falha

MAC(K, M) = H(M || K): vulnerável a ataques off-line. O invasor calcula H(message) sem K e, em seguida, usa um ataque do aniversário para encontrar M' com o mesmo hash. A chave é anexada depois da colisão.

Por que o HMAC resolve isso

O HMAC envolve o hash duas vezes com preenchimentos de chave diferentes: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) O hash interno produz H(ipad_key || M). O hash externo o envolve com opad_key. A extensão de comprimento falha porque o invasor não pode definir o estado inicial do hash externo.

SHA-3 e extensão de comprimento

SHA-3 usa a construção esponja, que é inerentemente imune a ataques de extensão de comprimento. H_SHA3(K || M) é uma construção simples de MAC válida. SHA-2 não é — use sempre HMAC com SHA-2.

Ataques de tempo na verificação do MAC

A comparação do MAC com saída antecipada (==) vaza informações de tempo. O primeiro byte «correto» leva um pouco mais de tempo que o primeiro byte «incorreto». Após 256 consultas: byte 1 encontrado. Mais 256: byte 2. O MAC completo é recuperado em 16×256 consultas.

Verificação rápida

Por que MAC(K, M) = SHA256(K || M) é inseguro?

Recapitulação

Os ataques de extensão de comprimento mostram por que os hashes ingênuos com chave falham. Em seguida, estudaremos a construção do HMAC e sua demonstração de segurança.

Perguntas Frequentes

A aula “Conceitos de MAC e ataques de extensão de comprimento” é grátis?

Sim — o texto completo de “Conceitos de MAC e ataques de extensão de comprimento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.

O que vou aprender em “Conceitos de MAC e ataques de extensão de comprimento”?

Explique por que acrescentar um prefixo secreto é inseguro contra extensões de comprimento. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cryptology Academy?

Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Conceitos de MAC e ataques de extensão de comprimento”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cryptology Academy?

Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Conceitos de MAC e ataques de extensão de comprimento
  2. Construção do HMAC e prova de segurança
  3. HMAC em APIs: assinatura de solicitações
  4. CMAC e Poly1305: MACs baseados em cifras de bloco
← Voltar para Cryptology Academy