¿Existe alguna estructura hash que pueda usarse para descargar de forma segura un archivo y validar su contenido?
Parece que todos los hashes como MD5 están hechos para verificar la consistencia y son vulnerables a los ataques de extensión hash, por lo que es posible crear otro archivo con el mismo MD5 simplemente agregándolo al final.
Estoy escribiendo un servicio automatizado que descarga datos a través de canales inseguros y quiero asegurarme de que MITM no pueda alterar el archivo.
ACTUALIZACIÓN : el hash se transfiere al usuario a través de un canal seguro. Ahora mismo estoy usando la combinación de hash + filesize, para evitar ataques de extensión de hash. ¿Es posible usar solo la función hash simple?
ACTUALIZACIÓN 2 : entendí mal lo que es un ataque de extensión de longitud . Citando @CodeInChaos:
No te da una colisión, simplemente te permite calcular el hash de un archivo más largo dado el hash de un archivo más corto cuyo contenido no sabes
Por lo tanto, no es posible simplemente agregar un archivo al hash existente para obtener el mismo hash. Hacer esto significará buscar colisiones en un archivo más largo, por lo que la pregunta se reduce a lo clásico "qué tan fuerte es la función hash". Por otro lado, sigue siendo interesante por qué SHA3 no es vulnerable a la extensión de hash, pero ese es otro tema.