Para MD5, nadie con reputación y competencia lo está usando en un contexto donde la resistencia a la colisión es importante. Para SHA-1, se está eliminando gradualmente; La ruptura de SHA-1 no era práctica cuando se lanzó, y solo ahora es importante pensar en eliminarla donde se necesita resistencia a la colisión. De hecho, está siendo eliminado; por ejemplo, los certificados TLS a largo plazo con SHA-1 ya no funcionan en Chrome, para incitar a las personas a cambiar a SHA-2. Sin embargo, todavía no está prácticamente roto, por lo que es aceptable por ahora.
La razón por la que no se eliminó para todo de inmediato es porque la seguridad implica concesiones. No abandona un estándar importante y hace que todo sea incompatible con una base de instalación gigante por algo que podría llevar a ataques prácticos en el transcurso de una década. La compatibilidad importa.
Además, para muchos usos, MD5 y SHA-1 no están agrietados en absoluto. Ambos tienen debilidades contra la resistencia a la colisión, lo que significa que un atacante puede crear dos mensajes que se relacionan con la misma cosa. Tampoco se rompe contra la resistencia de preimagen (dado un hash, encuentra algo que hace ese hash), o contra la resistencia de segunda preimage (dado un mensaje, encuentra un mensaje diferente con el mismo hash), o (sus funciones de compresión) como pseudoaleatorio funciones Eso significa que las construcciones como HMAC-MD5 todavía pueden ser seguras, porque no se basa en la propiedad de MD5 que está rota. Menos que lo ideal, seguro, pero consulte "la compatibilidad es importante si aún es seguro" más arriba.
La verificación de la integridad del archivo a través de hashes es casi siempre inútil de todos modos; a menos que los hashes se envíen a través de un canal más seguro que el archivo, puede manipular los hashes tan fácilmente como con el archivo. Sin embargo, si los hashes se se envían de forma más segura que el archivo, MD5 y SHA-1 aún son capaces de proteger la integridad del archivo. Debido a que el atacante no tiene ninguna influencia sobre los archivos legítimos (y tiene que haber cero para estar realmente seguro), crear un nuevo archivo con el mismo hash requiere rompiendo la segunda resistencia de preimagen, que nadie ha hecho para MD5 o SHA-1.
Note la diferencia entre la verificación de integridad y los certificados. Los certificados son emitidos por una CA desde un CSR creado por el usuario; el atacante puede tener una gran influencia sobre el contenido del certificado real, por lo que un ataque de colisión permite a un atacante crear un certificado legítimo y falso que colisiona, obtener el legítimo emitido y usar la firma del falso. Por el contrario, en la integridad del archivo, el atacante normalmente no tiene control sobre el archivo legítimo, por lo que debe colisionar con un archivo dado , que es mucho más difícil (y que, por lo que sabemos, no puede hacerse con MD5).