Puedo motivar la diferencia para ti con escenarios de ataque.
En un primer ataque de preimagen , le pedimos a un adversario, dado solo , que encuentre m o algo de m ′ tal que H ( m ′ ) = H ( m ) . Supongamos que un sitio web almacena { u s e r n a m e , H ( p a s s w o r d ) } en sus bases de datos en lugar de { u s rH(m)mm′H(m′)H(m){username,H(password)} . El sitio web aún puede verificar la autenticidad del usuario al aceptar su contraseña y comparar H ( i n p u t ) = ? H ( p un s s w o r d ) (con una probabilidad de 1 / 2 n por alguna gran n{username,password}H(input)=?H(password)1/2nn de falsos positivos). Ahora suponga que esta base de datos se filtra o se comprime de otra manera. UNAEl primer ataque de preimagen es la situación en la que un adversario solo tiene acceso a un resumen de mensaje y está tratando de generar un mensaje que tenga hash a este valor.
En un segundo ataque de preimagen , le permitimos al adversario más información. Específicamente, no solo le damos sino que también le damos m . Considere la función hash H ( m ) = m dH(m)m donde p y q son números primos grandes yd es una constante pública. Obviamente, para unprimer ataque de preimagen,este se convierte en el problema de RSA y se cree que es difícil. Sin embargo, en el caso delsegundo ataque de preimagen,encontrar una colisión se vuelve fácil. Si uno establece m ′ = m p q + m , H ( m p q + m ) = ( m p q + m ) dH(m)=mdmodpqpqdm′=mpq+m . Y así, el adversario ha encontrado una colisión con poco o ningún cálculo.H(mpq+m)=(mpq+m)dmodpq=mdmodpq
Nos gustaría que las funciones hash unidireccionales sean resistentes a los segundos ataques de preimagen debido a los esquemas de firma digital, en cuyo caso se considera información pública y se transmite (a través de un nivel de indirección) con cada copia del documento Aquí un atacante tiene acceso tanto a d o c u m e n t como a H ( d o c u m e n t )H(document)documentH(document). Si el atacante puede llegar a una variación en el documento original (o un mensaje completamente nuevo) tal que H ( d ′ ) = H ( d o c u m e n t ) podría publicar su documento como si fuera El firmante original.d′H(d′)=H(document)
Un ataque de colisión le da al adversario aún más oportunidades. En este esquema, le pedimos al adversario (¿puedo llamarlo Bob?) Que encuentre dos mensajes y m 2 de modo que H ( m 1 ) = H ( m 2 ) . Debido al principio del casillero y la paradoja del cumpleaños, incluso las funciones hash 'perfectas' son cuadráticamente más débiles a los ataques de colisión que los ataques de preimagen. En otras palabras, dada una función de resumen de mensaje impredecible e irreversible f ( { 0 , 1 } ∗ ) = { 0m1m2H(m1)=H(m2) que toma O ( 2 n ) tiempo para la fuerza bruta, siempre se puede encontrar una colisión en el tiempo esperado O ( s q r t ( 2 n ) ) = O ( 2 n / 2 ) .f({0,1}∗)={0,1}nO(2n)O(sqrt(2n))=O(2n/2)
Bob puede usar un ataque de colisión a su favor de muchas maneras. Este es uno de los más simples: Bob encuentra una colisión entre dos binarios y b ′ ( H ( b ) = H ( b ′ ) ) de modo que b es un parche de seguridad válido de Microsoft Windows y b ′ es malware. (Bob trabaja para Windows). Bob envía su parche de seguridad a la cadena de comando, donde, detrás de una bóveda, firman el código y envían el binario a los usuarios de Windows de todo el mundo para corregir una falla. Bob ahora puede contactar e infectar todas las computadoras con Windows en todo el mundo con b ' y la firma que Microsoft calculó para bbb′H(b)=H(b′)b′b′b. Más allá de este tipo de escenarios de ataque, si se cree que una función hash es resistente a colisiones, es más probable que esa función hash sea resistente a la imagen previa.