¿Se puede cambiar maliciosamente un archivo de manera que mantenga su hash SHA-1 original?

¿Se puede cambiar maliciosamente un archivo de manera que mantenga su hash SHA-1 original?

De acuerdo aesteartículo y muchos otros, SHA-1 no es seguro.

En mi caso no me preocupan las contraseñas ni los certificados digitales. Me preocupa la integridad del archivo.

¿Es razonablemente posible que un archivo (por ejemplo, una imagen ISO o un archivo ejecutable) se modifique maliciosamente de tal manera que:

  • Mantiene el hash SHA-1 del archivo original y
  • Mantiene el contenido y el funcionamiento general del archivo (pero, por supuesto, ahora incluye contenido malicioso que no estaba allí originalmente)

A mi modo de ver, alterar un archivo de una manera que produzca una colisión SHA-1 haría que el archivo fuera totalmente inútil. La ISO estaría totalmente corrupta o el archivo ejecutable estaría tan completamente codificado que ya ni siquiera sería un archivo ejecutable.

Pero, a mi modo de ver, bien podría estar equivocado. Hasta ahora no he encontrado nada en las búsquedas de Google con respecto a la idoneidad continua de SHA-1 para la verificación de archivos. ¿Alguna idea?

Respuesta1

Nadie ha logrado todavía esto para SHA-1. Es posible en teoría, pero todavía no es práctico. Los informes sobre la inseguridad en SHA-1 simplemente significan que el nivel de seguridad no es tan alto como nos gustaría que fuera y eso significa que no tenemos tantos años antes de tener que preocuparnos por esto como pensábamos.

Es más difícil producir un archivo con el mismo hash SHA-1 que un archivo determinado que crear dos archivos usted mismo con el mismo hash SHA-1. Y hasta donde sabemos, nadie en ningún lugar del mundo ha logrado aún esta tarea más sencilla. Pero eso no significa que no pueda suceder mañana.

Respuesta2

Es teóricamente posible, pero aún no se ha hecho.

Lo que busca se llama "colisión de hash": dos archivos con el mismo hash. Los códigos hash criptográficos como SHA-1 generalmente están diseñados para dificultar esto. Debido a que SHA-1 es un código de 160 bits, se necesitarán en promedio 2^159 intentos de fuerza bruta para encontrar un duplicado. Si se encuentra un algoritmo que funciona mejor que el de un hash criptográfico, el hash se considera "roto".

MD-5 es un ejemplo de un hash muy roto. Se suponía que tenía una potencia de 128 bits y requería un promedio de 2^127 intentos. Tal como están las cosas, al abusar de las vulnerabilidades conocidas, el número real de intentos necesarios puede ser tan bajo como 2^47. Esto es MUCHO más pequeño que 2^127. De hecho, se ha realizado en menos de un día en un clúster informático moderno.

Doy ese ejemplo porque es lo más parecido a cómo desea utilizar SHA-1. Sin embargo, ese no es el enfoque más común que utiliza el criptoanálisis para asegurarse de que los hashes no estén rotos. Por lo general, permiten una colisión entre dos archivos, según lo elegido por el atacante, en lugar de que usted elija un archivo y el atacante busque coincidir con él. Este tipo de ataque tiene la ventaja de ser más fácil de comparar. Si encuentro que es "difícil" descifrar su archivo, ¿eso significa que otro archivo es igualmente fuerte? Este ataque en el que el atacante puede elegir ambos archivos garantiza que detectemos lo peor de lo peor.

Este tipo de ataque permite un truco interesante conocido como "ataque de cumpleaños." En pocas palabras, llegar a utilizar el ataque de cumpleaños reduce a la mitad la potencia del algoritmo, por lo que SHA-1 requiere 2^80 intentos (en promedio) y MD5 requiere 2^64 intentos (en promedio). Estos son la mitad de 160 y 128 respectivamente.

SHA-1 ha conocido ataques que disminuyen su fuerza de 2^80 a 2^69. Esto no te importará mucho. 2^69 intentos es unlargotiempo.

Sin embargo, a partir de la historia, hemos descubierto que los algoritmos hash no se rompen espontáneamente, sino que se rompen con el tiempo. Nadie descifra un algoritmo como el MD-5, que lo lleva de 2^64 a 2^47 de la noche a la mañana. Sucede con el tiempo, a medida que muchas personas publican artículos sobre las matemáticas que utilizan en su contra. Por lo general, se puede observar cómo la complejidad de los ataques disminuye lentamente desde el inicio del algoritmo (donde el mejor ataque suele ser el ataque de cumpleaños).

El hecho de que estemos viendo algunos cambios en las colisiones sugiere que SHA-1 está viendo la luz al final del túnel. Todavía es fuerte, pero podría existir el deseo de pasar al SHA-3 más nuevo, que actualmente es mucho más seguro.

Realmente deberías tomar esas decisiones desde la perspectiva del modelo de amenaza. Cuánto daño puede causar un atacante si sufre una de estas colisiones. ¿Son sus atacantes script kiddies con acceso a algunas computadoras portátiles, o gobiernos con grupos completos de supercomputación a su disposición? ¿Qué ventana de tiempo tiene un atacante para romper el hash antes de que no sirva (muchos usos de la criptografía implican un "cambio de guardia", como la rotación de contraseñas)? Todo esto afectará la seriedad con la que debes considerar las colisiones.

Respuesta3

Las fallas en SHA-1 discutidas en ese artículo son muy específicas: permiten a los atacantes crear dos cosas que tienen el mismo valor (esto se llama "ataque de colisión"). Sin embargo, un ataque de colisión requiere que el atacante controleambosarchivos involucrados. Si el atacante no controla el archivo original, un ataque de colisión no le permitirá encontrar otro archivo con el mismo valor hash.

La razón por la que esto es importante para TLS/SSL (y las firmas en general) es que con ellos, un atacante a menudopodercontrolar ambos archivos. Un certificado TLS lo crea principalmente la persona que lo solicita (los bits que no controlan suelen ser predecibles), por lo que las colisiones les permiten crear un certificado legítimo y uno ilegítimo, firmar el legítimo y transferir la firma.

Para los archivos, no siempre se aplica la misma situación. Si lo que le preocupa es que la persona que crea el archivo sea el atacante (por ejemplo, obtendrán una cosa verificada de forma independiente como buena y luego le enviarán la carga maligna con el mismo hash), se aplica el ataque SHA-1 y debería buscar hacia su eliminación gradual (aunque todavía no es crítico, como mencionó David Schwartz). Si el archivo original es confiable, entonces un atacante no puede aplicar los ataques SHA-1 actualmente conocidos, aunque aún debería pensar en eliminarlos gradualmente si puede (si tiene la opción, use un hash sin ataques conocidos como SHA- 2).


En respuesta a "la colisión no será útil": si bien un ataque no requiere que un atacante pueda obtener unaútilcolisión, generalmente no es tan difícil convertir una "colisión" en una "colisión útil". Muchos formatos de archivo tienen bastante espacio en el que puedes tener lo que quieras sin afectar la funcionalidad del archivo; Por lo general, un atacante puede modificar eso para provocar una colisión (si las colisiones son prácticamente detectables), manteniendo la parte funcional como quiera que sea. La brecha entre el "ataque académico" y el "ataque práctico" puede ser grande; la brecha entre "cualquier colisión" y "colisión útil" es generalmente mucho menor.


El problema más grave, que no está relacionado con la elección del algoritmo, es cómo se obtiene el hash. Todo lo que hace un hash es cambiar el problema de "obtener el archivo real" a "obtener el valor hash real"; un valor hash enviado desde el mismo servidor y a través del mismo tipo de conexión que el archivo no tiene ningún valor contra modificaciones maliciosas (cualquier atacante que pueda alterar el archivo puede alterar el hash). Los hashes sólo son útiles para esto si puedes confiar en el hash más de lo que puedes confiar en el archivo; Si bien a veces ese es el caso (torrents, mirrors), a menudo se usan cuando no es el caso. Por lo tanto, debe tener mucho cuidado al utilizar hashes para verificar la integridad.

Respuesta4

ElgeneralEl punto del artículo al que se hace referencia en la pregunta es: SHA1 está en desuso y debe eliminarse gradualmente mientras aún tenga tiempo para hacerlo sin problemas. En algunas áreas, el tiempo se está acabando desde que Google y Microsoft imponen plazos.

Regla de oro paraobsoletotecnología:

  • Si haces un nuevo diseño o agregas funciones, no lo uses (SHA1).
  • Si mantiene algo viejo, haga un plan para reemplazarlo (SHA1).

Cita resumida de la publicación del blog de 2012 de Bruce Schneier: "El punto es que nosotros en la comunidad necesitamos comenzar la migración desde SHA-1 a SHA-2/SHA-3 ahora".

información relacionada