Eu posso motivar a diferença para você em cenários de ataque.
H( M )mm′H(m′)H(m){username,H(password)}{username,password}H(input)=?H(password)1/2nnO primeiro ataque de pré-imagem é a situação em que um adversário só tem acesso a um resumo da mensagem e está tentando gerar uma mensagem com hashes nesse valor.
H(m)mp q d m ′ = m p q + m H ( m p q + m ) = ( m p q + m ) dH(m)=mdmodpqpqdm′=mpq+mH(mpq+m)=(mpq+m)dmodpq=mdmodpq. E assim o adversário encontrou uma colisão com pouco ou nenhum cálculo.
Gostaríamos que, de uma maneira, as funções hash fossem resistentes a ataques de segunda pré-imagem por causa de esquemas de assinatura digital, caso em que é considerado informação pública e é repassado (por meio de um nível de indireção) a cada cópia do documento. Aqui, um invasor tem acesso ao e ao . Se o atacante puder apresentar uma variação no documento original (ou em uma mensagem totalmente nova) modo que ele poderá publicar seu documento como se fosse o assinante original.H(document)documentH(document)d′H(d′)=H(document)
Um ataque de colisão permite ao adversário ainda mais oportunidades. Nesse esquema, pedimos ao adversário (posso chamá-lo de Bob?) Para encontrar duas mensagens e tais que . Devido ao princípio do pigeonhole e ao paradoxo do aniversário, até funções de hash 'perfeitas' são quadraticamente mais fracas a ataques de colisão do que ataques de pré-imagem. Em outras palavras, dada uma função imprevisível e irreversível de digitação de mensagens que leva tempo para força bruta, uma colisão pode sempre seja encontrado no tempo esperado .m1m2H(m1)=H(m2)f({0,1}∗)={0,1}nO(2n)O(sqrt(2n))=O(2n/2)
Bob pode usar um ataque de colisão para sua vantagem de várias maneiras. Aqui está uma das mais simples: Bob encontra uma colisão entre dois binários e ( ), de forma que b é um patch de segurança válido do Microsoft Windows é um malware. (Bob trabalha para Windows). Bob envia seu patch de segurança para a cadeia de comando, onde atrás de um cofre eles assinam o código e enviam o binário para usuários do Windows em todo o mundo para corrigir uma falha. Agora, Bob pode entrar em contato e infectar todos os computadores Windows em todo o mundo com e a assinatura que a Microsoft calculou parab ′ H ( b ) = H ( b ′ ) b ′ b ′ bbb′H(b)=H(b′)b′b′b. Além desses tipos de cenários de ataque, se se acredita que uma função de hash é resistente a colisões, é mais provável que a função de hash seja resistente a pré-imagens.