web-dev-qa-db-fra.com

Comment puis-je vérifier l'intégrité des fichiers téléchargés?

Je sais que nous utilisons des fonctions de hachage pour vérifier l'intégrité des fichiers, etc., mais ma question est de savoir comment vérifier l'intégrité des fichiers téléchargés à partir d'un serveur?

15
ame

L'intégrité n'est définie que relativement à une source faisant autorité qui indique la séquence "correcte" d'octets. Les fonctions de hachage ne créent pas l'intégrité, elles le transport la. Fondamentalement, si vous avez:

  1. un fichier;
  2. une valeur de hachage, supposée correcte;

vous pouvez ensuite recalculer la fonction de hachage sur le fichier et voir si vous obtenez la même valeur de hachage.

Vous devez encore commencer quelque part. Certains distributeurs de logiciels fournissent, avec le logiciel, un fichier "checksum" (ou "md5sum" ou "sha1sum"), qui contient les valeurs de hachage. En supposant que vous avez obtenu le bon fichier de contrôle , cela vous permet de vérifier si vous avez téléchargé le bon fichier, jusqu'au dernier bit; et cela fonctionne quelle que soit la façon dont vous avez téléchargé le fichier éventuellement volumineux (même s'il est venu sur un réseau peer-to-peer ombragé ou autre; vous ne pouvez pas tricher avec les fonctions de hachage).

Maintenant, cela ne résout pas le problème d'intégrité; cela le réduit simplement au problème de s'assurer que vous avez la bonne valeur de hachage. Les valeurs de hachage sont petites (32 octets pour SHA-256), ce qui ouvre de nombreuses possibilités. Dans le contexte du téléchargement de fichiers à partir de systèmes P2P, vous pouvez obtenir la valeur de hachage à partir d'un site Web HTTPS (HTTPS utilise SSL qui garantit l'authentification du serveur - vous avez la garantie de parler au serveur que vous souhaitez - et de transporter l'intégrité - ce que vous recevez est garanti d'être ce que le serveur a envoyé). Dans le cadre de l'échange de clés publiques PGP avec des personnes, les valeurs de hachage (souvent appelées "empreintes digitales" ou "empreintes") sont suffisamment courtes pour être transférées manuellement (imprimées sur une carte de visite, épelées par téléphone ...).

Signatures numériques développez le concept, mais elles commencent aussi par les fonctions de hachage. Tous les algorithmes de signature numérique ne signent pas le message lui-même, mais le hachage du message (ce qui est également bon tant que la fonction de hachage est sécurisée, c'est-à-dire résistante aux collisions et aux pré-images).

16
Tom Leek

Pour de nombreux logiciels, les fournisseurs de fichiers fournissent également le hachage du fichier qui vous permet de vérifier son intégrité.

Par exemple, voici un exemple des sommes de contrôle fournies par le projet Fedora pour l'ISO Fedora 19 x86_64.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# The image checksum(s) are generated with sha256sum.
6e7e263e607cfcadc90ea2ef5668aa3945d9eca596485a7a1f8a9f2478cc7084 *Fedora-19-x86_64-DVD.iso
ef9eb28b6343e57de292f2b2147b8e74a2a04050655e0dc959febd69b0d5d030 *Fedora-19-x86_64-netinst.iso
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBCAAGBQJRzjLNAAoJEAdHfmX7SxjmzQEP/jzXXe4rxRzA9NLrgWtRUp1b
nK+gpMgGXC5+zSWnKTQBUWMx0rx7uys/UQH934hz1rdMOqLkCe1XlVWp+0ya55nC
13OhOeeJhbdECzFvcSAkDh9Aj2Z9AnDeHbDvJXpEjvGiSLLsYWsjifIkMYDoNTRV
QlLWwOTlCCUZtEGEI1x0TWYlr0HUtkL5QAzQ4CSO7xGYE6YH/xwHje/8n7B25NHU
r2sSdlz3KORQyStqYK78cWlR70PT+3o00SO7ReHNVIZwCL8PjsOEm41Q4tjw3BF7
KLp+fcQTOgzLRY1VVk0n0POeJHbVB2TULjIW4F/vCiA3N6Uq595ebNxgSOBg8tRs
t7fkbktVB6+WeBCcGvJI7MWzYq0ukwRBAH+ZBLhpnEIsHOoFF6LRoiE0UncdhGb+
OmZqn8wZKzMf401E/vj7dEy+X3lAST+5mBm0EJQaFz2cbQCzuxfhnSc27w9Zq3ii
3Tgo1ubInXD/fu1WFH/Tu2aOmbNQwDr4YQDYOeuzokA3d/2bETIhEmYxmfGptfMw
fGG/u4QQMdXyPPKvdIkOTAp5d0tWnTucpkbHs1goygsCMz6XWvIZJt4bAbSRwXoa
qYXh8IpJAM0CrU0353RMDCNpDlpSXGeEy5riaFpFCe7SKZBzp2dJ1LsMJl1NJXxn
QavVCbllLFFjaTuYKrDZ
=oBpz
-----END PGP SIGNATURE-----

Instructions sont également fournis si l'on ne sait pas comment utiliser les sommes de contrôle fournies.

Généralement, si les fichiers sont fournis via le même support que les sommes de contrôle, il y a très peu d'avantages réels car un attaquant qui parvient à compromettre le téléchargement aura également la capacité de remplacer la somme de contrôle fournie. Cependant, cela est très utile dans le cas des fichiers téléchargés via une connexion non sécurisée comme des torrents ou un CDN. Dans une telle situation, le fournisseur de logiciels peut fournir la petite somme de contrôle sur son serveur tout en servant les fichiers via un support à bande passante plus élevée tel que des torrents ou un CDN.

9
user10211