Ataques de aniversário e de colisão
Aplique o paradoxo do aniversário a colisões de resumos e à extensão do comprimento de resumos.
Ataques de aniversário e de colisão é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 3 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.
O Paradoxo do Aniversário
Em um grupo de 23 pessoas, a probabilidade de duas compartilharem a mesma data de aniversário ultrapassa 50%. Com 70 pessoas, ultrapassa 99,9%. Matematicamente: em um conjunto de tamanho N, a probabilidade de colisão ultrapassa 50% após aproximadamente √N amostras. Esse é o limite do aniversário.
Limite do Aniversário para Funções de Hash
Para uma função de hash de n bits: uma colisão (H(m1) = H(m2), m1 ≠ m2) pode ser encontrada com aproximadamente 2^{n/2} tentativas aleatórias. Para SHA-256 (256 bits), uma colisão exige aproximadamente 2^{128} operações, o que é computacionalmente inviável. Para MD5 (128 bits), são aproximadamente 2^{64}, uma quantidade no limite da viabilidade.
Algoritmo de Ataque de Colisão
Descoberta genérica de colisões: gere 2^{n/2} mensagens aleatórias, calcule os hashes, ordene-os pelo valor do hash e encontre duplicatas. Memória O(2^{n/2}). O algoritmo Rho (detecção de ciclos de Floyd) reduz a memória para O(1), mantendo o mesmo custo de tempo. A busca paralela de colisões de van Oorschot-Wiener reduz o tempo usando equipamento.
Colisões do MD5
Colisões práticas do MD5 foram encontradas por Wang et al. (2004) usando criptoanálise diferencial, não o ataque de aniversário. Duas mensagens diferentes de 1024 bits com o mesmo hash MD5 em segundos. Colisões de prefixo escolhido do Hertzbleed permitem colisões de certificados. O MD5 está completamente comprometido quanto à resistência a colisões.
Colisões de Prefixo Escolhido
Mais poderosas: dados dois prefixos arbitrários P1 e P2, encontre sufixos S1 e S2 tais que H(P1||S1) = H(P2||S2). Stevens et al. (2017) encontraram colisões de prefixo escolhido no MD5. Isso foi usado para criar um certificado malicioso de CA com uma assinatura MD5 válida. O MD5 foi retirado do uso em certificados.
Colisões do SHA-1
SHAttered, do Google (2017): a primeira colisão prática do SHA-1. Dois arquivos PDF diferentes com o mesmo hash SHA-1. Foram necessárias 2^{63.1} compressões do SHA-1, equivalentes a 6.500 anos de CPU e 110 anos de GPU. Custo de aproximadamente US$ 110.000. Os navegadores deixaram de aceitar certificados SHA-1 em 2017.
Ataques de extensão de comprimento
Para funções de resumo Merkle-Damgård (MD5, SHA-1, SHA-2): se conhecer H(m), poderá calcular H(m||padding||m') sem conhecer m. Isso quebra construções de MAC como H(secret||message). Correção: utilize HMAC (que usa preenchimento interno e externo) ou SHA-3 (construção esponja, imune à extensão de comprimento).
Resistência a colisões versus resistência a pré-imagens
Resistência a colisões: encontrar quaisquer duas mensagens distintas com o mesmo resumo (esforço 2^{n/2}). Resistência à segunda pré-imagem: dado m, encontrar m' ≠ m com o mesmo resumo (esforço 2^n). Resistência à pré-imagem: encontrar qualquer mensagem para um resumo fornecido (esforço 2^n). A colisão é sempre a propriedade mais fraca.
Ataques de colisão contra MAC
Se o MAC utilizar uma função de resumo vulnerável a colisões: um atacante que consiga encontrar colisões em H poderá forjar MACs. HMAC-MD5 é considerado seguro apesar das colisões do MD5, porque a construção do HMAC exige ataques de pré-imagem, não apenas colisões. Mas migre do HMAC-MD5 em sistemas novos.
Multicolisões
Joux (2004): para resumos Merkle-Damgård, encontrar colisões de 2^k vias (2^k mensagens com o mesmo resumo) exige apenas k vezes o trabalho de encontrar uma única colisão, em vez de multiplicar esse custo a cada colisão. Isso agrava as vulnerabilidades em resumos concatenados (H1(m)||H2(m) não é tão forte quanto se poderia imaginar).
Como evitar colisões
Utilize SHA-256 ou SHA-3 para resumos resistentes a colisões. Evite MD5 e SHA-1 para qualquer finalidade de segurança. Para MACs: HMAC-SHA-256 ou HMAC-SHA-3. Para resumir senhas: Argon2 (não SHA-2 diretamente). Utilize sempre SHA-3 quando for necessária resistência à extensão de comprimento.
Verificação rápida
Aproximadamente quantas avaliações de resumo são necessárias para encontrar uma colisão em uma função de resumo de n bits?
Recapitulação
O ataque do aniversário encontra colisões de resumo com 2^{n/2} de trabalho. O MD5 tem colisões de prefixo escolhido práticas; o SHA-1 foi quebrado em 2017. Ataques de extensão de comprimento quebram MACs ingênuos H(key||msg). Utilize SHA-256 ou SHA-3; utilize HMAC para autenticação de mensagens. Próximo: ataques de encontro no meio.
Perguntas Frequentes
A aula “Ataques de aniversário e de colisão” é grátis?
Sim — o texto completo de “Ataques de aniversário e de colisão” é 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 “Ataques de aniversário e de colisão”?
Aplique o paradoxo do aniversário a colisões de resumos e à extensão do comprimento de resumos. 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 3 de 4.
Quanto tempo leva a aula “Ataques de aniversário e de colisão”?
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
- Fundamentos da criptoanálise diferencial
- Criptoanálise linear e tabelas de aproximação
- Ataques de aniversário e de colisão
- Encontro no meio e compromissos entre tempo e memória