A menudo veo una suma de comprobación junto a un archivo disponible para descargar. El propósito de esta práctica me elude. Obviamente es para detectar archivos corruptos, pero ¿cuál podría ser la causa de esta corrupción y es probable?
Seguramente el archivo no será dañado por errores de transmisión, ya que son detectados por el protocolo de red. Y seguramente cualquier atacante que pueda alterar el archivo con fines maliciosos también podría alterar la suma de verificación dada. ¿Estamos buscando errores en el disco duro? ¿Es más probable que eso suceda al escribir que al leer? ¿Me estoy perdiendo algo importante?
networking
files
checksum
Karolis Juodelė
fuente
fuente
Respuestas:
Detectar corrupción no es del todo correcto. Determinar la integridad del software sería un uso más correcto. Normalmente, un software no se distribuye desde un único servidor. El mismo software puede distribuirse desde muchos servidores. Entonces, cuando descarga un software en particular, el servidor más cercano a su destino se elige como fuente de descarga para aumentar la velocidad de descarga. Sin embargo, no siempre se puede confiar en estos servidores 'no oficiales' (de terceros). Pueden / pueden incluir troyanos / virus / adware / puertas traseras en el programa, lo que no es bueno .
Por lo tanto, para garantizar que el software descargado sea exactamente el mismo que el software 'oficial' lanzado por la organización en cuestión, se utiliza la suma de comprobación. Los algoritmos utilizados para generar sumas de verificación son tales que incluso un ligero cambio en el programa da como resultado una suma de verificación completamente diferente.
Ejemplo tomado de Practical Unix e Internet Security
MD5 (Hay $ 1500 en el cuadro azul) = 05f8cfc03f4e58cbee731aa4a14b3f03
MD5 (Hay $ 1100 en el cuadro azul) = d6dee11aae89661a45eb9d21e30d34cb
Los mensajes, que difieren en un solo carácter (y, dentro de ese carácter, en un solo bit binario), tienen resúmenes de mensajes completamente diferentes.
Si el archivo descargado tiene la misma suma de comprobación que la suma de comprobación proporcionada en el sitio web "oficial", se puede suponer que el software no se ha modificado.
Nota al margen: en teoría, dos archivos diferentes PUEDEN tener el mismo valor hash. Para que el algoritmo Hash / suma de verificación se considere seguro, debería ser muy costoso desde el punto de vista informático encontrar otro archivo que produzca la misma suma de verificación.
fuente
No siempre.
Podría tener un enlace de contenido junto con una suma de verificación servida en HTTPS. El enlace podría ser un enlace no encriptado: HTTP o FTP simple, u otra cosa.
En el lado negativo, la conexión no encriptada puede ser fácilmente intermedia, por el lado positivo, puede ser más rápida o más conveniente para el webmaster (menos recursos informáticos necesarios y oportunidades para que la red guarde en caché esas cosas).
Si la suma de verificación se sirve en una conexión de confianza ininterrumpida y la carga útil coincide con la suma de verificación, obtendrá lo mejor de ambos mundos (siempre que la suma de verificación sea criptográficamente segura).
Dicho esto, me ha recordado que existen distribuciones que afirman ser "seguras" y, sin embargo, su sitio web está solo en HTTP, al igual que los enlaces a sus imágenes.
Ejemplos:
Es algo gracioso porque no puedes ser más inseguro que eso. Incluso si no son maliciosos, cualquier ISP podría reemplazar fácilmente tanto el sitio web como la imagen con falsificaciones, y lograr que alguien instale un sistema operativo manipulado mientras hace que parezca que están obteniendo una distribución Linux "segura" es lo último pwnage
fuente
En cuanto a por qué la comprobación de errores de TCP / IP no atrapa todo: desde /programming//a/17083365/2551539
Hay diferentes errores que pueden ocurrir (que TCP detectará) [señalado por Jacob Krall] :
Edite con alguna información adicional:
La página 9 de este estudio: http://paperhub.s3.amazonaws.com/8ff1e4414c070e900da8ab3885593085.pdf sugiere que hay errores que TCP no puede detectar. Entiendo que sucede cuando un datagrama erróneo (llamado "gemelo malo" en el estudio) tiene la misma suma de verificación que el datagrama deseado (llamado "gemelo bueno" en el estudio).
fuente
Los errores de transmisión pueden suceder. Los protocolos de capa de enlace generalmente contienen sumas de verificación o códigos de corrección de errores para evitarlos, pero no son perfectos: existe una pequeña posibilidad de que un error no se corrija. Los paquetes TCP también contienen una suma de verificación, que reduce la probabilidad de errores en 2 ^ 16. Eso hace una probabilidad muy pequeña, pero no nula, de un error de transmisión. Es el tipo de cosas que la mayoría de las personas nunca encontrarán sin saberlo en su vida, pero no está en el rango de probabilidad de sumas de verificación criptográficas que nunca en un billón de años.
Es poco probable que se detecte un error de hardware en el cliente, como la corrupción del disco, al verificarlo inmediatamente después de la descarga, ya que la suma de comprobación se calculará a partir de la copia en caché. Por otro lado, es útil verificar si los medios de arranque no están dañados si no han podido arrancar: realmente está probando los medios y tiene la presuposición de que el hardware puede ser malo.
La verdadera razón para calcular sumas de verificación es, de hecho, detectar errores a nivel de software. Estos suceden. Los posibles errores incluyen:
En la práctica, al verificar el tamaño del archivo descargado se detectan los errores más comunes, que son archivos truncados o convertidos de forma no válida. Las sumas de verificación tienen la ventaja de que detectan estrictamente más problemas.
fuente
En teoría, la red entregaría cada segmento correctamente y se ensamblarían correctamente en el disco y nada saldría mal.
En realidad, las computadoras son máquinas y software, ambos diseñados y construidos por humanos falibles. En el caso de que una descarga de alguna manera no se realice correctamente por una razón u otra, como que la descarga se realice a través de algún dispositivo intermediario, ya sea inocuo o nefasto, que manipula los datos, es bueno tener una manera de verificar que el archivo casi seguro descargado como una réplica precisa del archivo en el lado del proveedor.
Una suma de verificación de alta calidad es un método confiable para validar la integridad de los datos.
fuente
Ninguna suma de verificación puede ser 100% confiable porque muchos archivos se asignan a la misma suma de verificación.
Cuando agregamos otra suma de verificación al tren, multiplicamos la probabilidad de detectar un error.
Hay tanto tráfico en Internet que los errores son bastante comunes.
fuente
Checksum también ayudará a evitar descargas corruptas debido a la siguiente situación:
El servidor tiene un error interno mientras sirve la descarga, por lo tanto, la descarga finaliza.
Cuando eso sucede, hay algunos resultados posibles:
He visto estos comportamientos entre las herramientas de cliente populares y los marcos de servidores, por lo que cuando no use la suma de verificación, en el caso de "buen servidor + cliente malo" o "servidor malo + cualquier cliente", su descarga corrupta pasará desapercibida .
fuente