tcp – ¿Por qué es una buena práctica comparar sumas de comprobación al descargar un archivo?

Pregunta:

Los sitios web que proporcionan archivos ISO para descargar a menudo proporcionarán las sumas de verificación md5 de esos archivos, que podemos usar para confirmar que el archivo se descargó correctamente y que no se ha dañado.

¿Por qué es esto necesario? Seguramente las propiedades de corrección de errores de TCP son suficientes. Si un paquete no se recibe correctamente, se retransmitirá. ¿No garantiza la propia naturaleza de una conexión TCP / IP la integridad de los datos?

Respuesta:

Como han señalado otros, existen muchas posibilidades de corrupción de datos donde cualquier suma de verificación en la capa de transporte no puede ayudar, como la corrupción que ya ocurre antes de que se calcule la suma de verificación en el lado de envío, un MITM que intercepta y modifica el flujo (datos también como sumas de comprobación), la corrupción se produce después de validar la suma de comprobación en el extremo receptor, etc.

Si ignoramos todas estas otras posibilidades y nos centramos en los aspectos específicos de la suma de comprobación TCP en sí y lo que realmente hace en términos de validación de la integridad de los datos, resulta que las propiedades de esta suma de comprobación no son del todo completas en términos de detección de errores. La forma en que se eligió este algoritmo de suma de control refleja más bien el requisito de velocidad en combinación con el período de tiempo (finales de la década de 1970).

Así es como se calcula la suma de comprobación de TCP :

Suma de comprobación: 16 bits

El campo de suma de comprobación es el complemento a uno de 16 bits de la suma del complemento a uno de todas las palabras de 16 bits en el encabezado y el texto. Si un segmento contiene un número impar de octetos de encabezado y texto para sumar la suma de verificación, el último octeto se rellena a la derecha con ceros para formar una palabra de 16 bits con fines de suma de verificación. El pad no se transmite como parte del segmento. Mientras se calcula la suma de verificación, el campo de suma de verificación en sí se reemplaza con ceros.

Esto significa que cualquier daño que se equilibre al sumar los datos de esta manera pasará desapercibido. Hay una serie de categorías de corrupción de datos que esto permitirá, pero solo como un ejemplo trivial: cambiar el orden de las palabras de 16 bits siempre pasará desapercibido.

En la práctica, detecta muchos errores típicos pero no * garantiza * la integridad. También ayuda la forma en que la capa L2 también realiza comprobaciones de integridad (por ejemplo, CRC32 de tramas Ethernet), aunque solo para la transmisión en el enlace local, y muchos casos de datos corruptos ni siquiera se pasan a la pila TCP.

Validar los datos usando un hash fuerte, o preferiblemente una firma criptográfica, está en un nivel completamente diferente en términos de garantizar la integridad de los datos. Los dos apenas se pueden comparar.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım