Est-il possible d'obtenir un téléchargement corrompu avec http?

11

Pendant longtemps, j'ai supposé qu'il n'est pas vraiment possible de télécharger un fichier corrompu via http tant qu'il n'est pas corrompu sur le serveur et que la mise en œuvre du protocole http est correcte, ce qui est très probablement le cas pour les logiciels grand public modernes.

J'ai donc toujours gloussé quand j'ai vu un site de téléchargement proposer un hachage md5 d'un fichier qu'ils fournissent en téléchargement. Je n'ai jamais vu de cas auparavant, où je télécharge un fichier, la taille est correcte mais le contenu ne l'est pas.

Eh bien, aujourd'hui, j'ai eu un premier cas de cela. J'ai téléchargé un iso d'Ubuntu, j'ai essayé de l'installer, il a échoué et après une longue recherche (je n'arrivais pas à croire que la raison pouvait être un téléchargement corrompu), j'ai vérifié le MD5 et que savez-vous, c'était faux (la taille était correct). J'ai donc re-téléchargé et obtenu encore un autre md5 erroné. Ce n'est que lors de mon troisième téléchargement que le md5 était correct.

Ma question est donc, est-il possible en principe d'obtenir un téléchargement corrompu via http, en supposant que la mise en œuvre est correcte, le transfert s'est terminé avec succès et que le fichier est correct sur le serveur. Si cela est possible, comment cela peut-il se produire?

Andrew Savinykh
la source

Réponses:

9

Oui, c'est possible, en particulier sur les connexions Internet de mauvaise qualité - généralement sans fil, mais certaines connexions filaires (comme celle que j'ai) ont également des taux d'erreur élevés à des vitesses élevées.

Le protocole HTTP ne contient aucune disposition garantissant l'intégrité des données. Sur la couche de transport, TCP n'ont détection d'erreur en utilisant une somme de contrôle, mais ce n'est pas très fiable .


Il existe une autre raison de fournir des hachages ou des signatures numériques. Souvent, les fichiers réels sont distribués sur de nombreux serveurs miroirs, qui ne peuvent être garantis 100% sécurisés. S'il n'y a pas de hachage ou de signature à vérifier, une personne ayant accès à un miroir (pas nécessairement légitime) pourrait remplacer les fichiers et rester non détectée, sans avoir à pénétrer dans un serveur complètement différent où le site Web est hébergé.


Vous pouvez obtenir une vérification automatique des fichiers si vous téléchargez Ubuntu sur BitTorrent au lieu de HTTP. (Chaque pièce est vérifiée au moment du téléchargement, vous n'avez donc pas à télécharger à nouveau le tout.)

user1686
la source
1
Bonne réponse. Cependant, je voudrais explorer un peu plus le sujet, si cela ne vous dérange pas. La partie "haute vitesse" s'est avérée très pertinente. Je n'ai jamais eu de problème à la maison, mais ce téléchargement ISO Ubuntu que j'ai fait était au travail et la vitesse était d'environ 5 Mo / s. Il m'est difficile d'accepter que TCP n'est pas fiable, car presque tout est basé sur TCP. Y a-t-il autre chose que cet article wikipedia sur la non-fiabilité TCP? Savez-vous exactement comment la vitesse élevée affecte le problème? Merci d'avance.
Andrew Savinykh
1
@zespri: TCP est censé être fiable, mais la somme de contrôle ne peut pas détecter 100% de toutes les erreurs. La haute vitesse n'est qu'un facteur avec certains types de connexion, ou sur des liens peu fiables ... Ce qui peut malheureusement se produire n'importe où entre vous et le serveur, pas nécessairement de votre côté. (Je testerais le téléchargement à partir de miroirs situés dans différents pays.) Il y a bien sûr aussi la possibilité que votre fichier soit déjà corrompu sur le système de fichiers du serveur ...
user1686
1
s'il y a une faible probabilité de corruption, l'augmentation du nombre de sauts entre vous et le serveur augmenterait les risques de corruption ???
Trevor Boyd Smith,
1
@Trevor: dépend de la qualité du lien. Dix sauts sur Ethernet sont beaucoup plus fiables qu'un seul saut sur WiFi. (Les routeurs / commutateurs eux-mêmes ne corrompent presque jamais les données; c'est généralement la connexion qui le fait.)
user1686
Cela ne signifie-t-il pas que HTTP lui-même est cassé et devrait être corrigé?
still_dreaming_1
1

Comme l'a dit Grawity, c'est possible, mais en plus, ce que j'ai remarqué:

Même avec des connexions Internet stables, il est possible qu'un téléchargement se termine tôt sans aucune raison valable - cela peut simplement arriver.

Et surtout, si vous avez une mauvaise mémoire, il est possible que le téléchargement soit mis en cache avant d'être écrit sur le disque, et comme la mémoire est mauvaise, il écrit le fichier de manière incorrecte. Si vous avez constamment de mauvais téléchargements, c'est une possibilité élevée.

William Hilsum
la source
Oh, je déteste les serveurs Web qui coupent au hasard les téléchargements à ~ 50% sans aucun support pour la reprise ...
user1686
1
Wil: Oui, les coupures sont souvent, et à cause de cela, je les ai spécifiquement exclues de ma question, disant que je suppose que les tailles sont exactement correctes. Merci pour votre commentaire.
Andrew Savinykh
Oui, c'est une déclaration clé pour cette question "les tailles sont exactement bonnes"
Trevor Boyd Smith