Les sites Web qui fournissent des fichiers ISO à télécharger donnent souvent les sommes de contrôle md5 de ces fichiers, que nous pouvons utiliser pour confirmer que le fichier a été téléchargé correctement et qu'il n'a pas été corrompu.
Pourquoi est-ce nécessaire? Certes, les propriétés de correction d'erreur de TCP sont suffisantes. Si un paquet n'est pas reçu correctement, il sera retransmis. La nature même d'une connexion TCP / IP ne garantit-elle pas l'intégrité des données?
Réponses:
Comme cela a été noté par d'autres, il existe de nombreuses possibilités de corruption de données où toute somme de contrôle au niveau de la couche de transport ne peut pas aider, comme une corruption qui se produit déjà avant que la somme de contrôle soit calculée du côté de l'envoi, un MITM interceptant et modifiant le flux (données également en tant que sommes de contrôle), la corruption se produit après avoir validé la somme de contrôle à l'extrémité de réception, etc.
Si nous ignorons toutes ces autres possibilités et nous concentrons sur les spécificités de la somme de contrôle TCP elle-même et sur ce qu'elle fait réellement en termes de validation de l'intégrité des données, il s'avère que les propriétés de cette somme de contrôle ne sont pas du tout complètes en termes de détection d'erreurs. La façon dont cet algorithme de somme de contrôle a été choisi reflète plutôt l'exigence de vitesse en combinaison avec la période de temps (fin des années 1970).
Voici comment la somme de contrôle TCP est calculée:
Cela signifie que toute corruption qui s'équilibre lors de la sommation des données de cette manière ne sera pas détectée. Il y a un certain nombre de catégories de corruption dans les données que cela permettra mais juste comme un exemple trivial: changer l'ordre des mots de 16 bits restera toujours non détecté.
En pratique, il détecte de nombreuses erreurs typiques mais ne garantit pas du tout l' intégrité. Cela est également aidé par la façon dont la couche L2 effectue également des vérifications d'intégrité (par exemple, CRC32 des trames Ethernet), mais uniquement pour la transmission sur la liaison locale, et de nombreux cas de données corrompues ne sont même jamais transmis à la pile TCP.
La validation des données à l'aide d'un hachage fort, ou de préférence d'une signature cryptographique, est à un tout autre niveau en termes de garantie de l'intégrité des données. Les deux sont à peine comparables.
la source
Il y a probablement un million de raisons pour lesquelles on devrait vérifier la somme md5, mais quelques-unes me viennent à l'esprit:
Et cela ne prend que quelques secondes de toute façon.
la source
TCP / IP garantit l'intégrité des données *. Mais cela ne garantit pas que 100% d'un fichier a été téléchargé. Il peut y avoir de nombreuses raisons pour lesquelles cela pourrait se produire. Par exemple: Il est possible que vous puissiez monter un ISO qui manque un ou deux octets quelque part au milieu. Vous n'aurez aucun problème avec cela jusqu'à ce que vous ayez besoin d'un ou deux fichiers particuliers qui sont corrompus. La comparaison des sommes de contrôle garantit que vous avez réellement téléchargé l'intégralité du fichier.
* voir commentaire
la source
La somme de contrôle TCP n'est que de 16 bits. Cela signifie qu'en l'absence d'autres sommes de contrôle, un paquet corrompu sur 65536 sera accepté comme non corrompu. Si, par exemple, vous téléchargiez une image DVD de 8 Go via un lien bruyant avec un taux de corruption de 1%, vous vous attendriez à 81 paquets indétectablement corrompus.
MD5 est une somme de contrôle beaucoup plus grande, à 128 bits. La probabilité que ces 81 paquets produisent quelque chose avec la même somme de contrôle que l'original est d'environ 1 sur 1 000 000 000 000 000 000 000 000 000 000 000.
la source
Il y a plusieurs raisons de vérifier la somme de contrôle d'un fichier téléchargé via HTTP:
1 sources en commentaire car lol rep
la source
Daniel, selon l'outil que vous utilisez pour le téléchargement ISO par exemple. Si c'est Say Firefox .. Il peut montrer le téléchargement du fichier. Cependant, vous ne pouvez pas avoir l'intégralité de l'ISO intact. Si vous le gravez puis essayez de l'utiliser, des informations peuvent être manquantes. Cela se produit de temps en temps sur différents serveurs Web hébergeant des fichiers.
Il est recommandé de comparer au moins la taille du fichier (nombre total d'octets ou de bits) pour vous assurer qu'elles correspondent. Windows affichera un nombre d'octets de fichiers différent, puis dira Linux. Le contrôle de somme MD5 affichera les mêmes valeurs quel que soit le système d'exploitation utilisé. J'espère que ça aide un peu. À votre santé...
la source
Je remarque beaucoup de réponses intéressantes mais il y a une dernière chose à considérer: le problème des deux généraux
Le problème des deux généraux et le problème des généraux byzantins examinent spécifiquement les implications d'un transfert fiable d'informations via des canaux peu fiables.
Les sommes de contrôle ne sont qu'une autre couche de "fiabilité croissante", et une avec un très faible risque d'échec. C'est la raison pour laquelle il est si populaire.
la source