En el caso más simple e inseguro, tanto el archivo como la suma de comprobación se sirven a través de un protocolo de texto plano como HTTP o FTP. En este caso, no, no hay nada que impida la modificación de Man-in-the-Middle del archivo y la suma de comprobación.
Sin embargo, su primera pregunta fue: "¿Por qué algunos procesos se basan en las sumas de comprobación publicadas?" La respuesta es que, si se autentican correctamente, las sumas de comprobación proporcionan protección de integridad. Es decir, si puedo garantizar la integridad y autenticidad de la suma de comprobación, puedo verificar la integridad del archivo descargado.
Esto puede parecer redundante, ya que si tengo algún método para verificar la autenticidad y la integridad de una suma de comprobación, ¿por qué el mismo método no protege el archivo en sí? La respuesta es que la suma de comprobación no está destinada principalmente a tratar la manipulación maliciosa , sino que está destinada a detectar daños en los datos. Si tiene una conexión de red, una unidad de disco o un módulo de RAM que introduce errores a una velocidad de 1 bit en cada 10 MB, entonces es muy probable que tenga un error en una descarga de 50 MB. Pero las probabilidades son bastante bajas de que la suma de comprobación de 20 bytes tenga un error de bit.
Todo esto está muy bien, pero ¿cómo podemos protegernos contra la manipulación maliciosa? Aquí hay algunas soluciones:
Proporcione la suma de comprobación en un canal autenticado y protegido por integridad. La solución más común aquí es HTTPS, en la que TLS proporciona autenticación, integridad y cifrado. El proveedor de datos puede (y debe) doblar y proporcionar el archivo a través de este canal también.
Proporcione una firma criptográfica del archivo. En lugar de simplemente brindar protección de integridad, este método también proporciona autenticidad, pero requiere un poco más de trabajo por parte del descargador, quien debe: obtener u obtener de forma segura la clave pública del proveedor para verificar la firma. El mismo principio subyacente se usa para proporcionar protección de integridad dentro de TLS, pero una firma separada para el archivo se basa en un canal de distribución de claves diferente que puede o no ser más difícil de corromper para el atacante.
Estos métodos pueden y deben combinarse, ya que habrá algunos usuarios que desconfían de las protecciones de TLS y otros que no pueden molestarse en verificar una firma criptográfica, pero por varias razones solo pueden admitir la suma de comprobación básica.
Por supuesto, todo esto plantea la cuestión de si el archivo se puede corromper de tal manera que la suma de comprobación sea válida. Esto se denomina ataque de preimagen , y se ha demostrado que MD5 es teóricamente vulnerable. Siempre debe usar la función hash más segura disponible: SHA-2 y SHA-3 son buenas opciones; MD5 y SHA-1 son más riesgosos.