J'ai peut-être été négligent à l'égard de la vérification des logiciels que je télécharge sur Internet, mais moi (ou toute personne que j'ai rencontrée) n'ai jamais essayé de vérifier la somme de contrôle du contenu que je télécharge. Et à cause de cela, je n'ai aucune idée de la façon de vérifier l'intégrité de l'élément téléchargé.
Alors, comment puis-je vérifier la somme de contrôle d'un fichier téléchargé?
Habituellement, cela commencerait du côté des propriétaires en affichant la somme de contrôle du fichier que vous souhaitez télécharger. Ce qui ressemblerait à ceci:
md5: ba411cafee2f0f702572369da0b765e2
sha256: 2e17b6c1df874c4ef3a295889ba8dd7170bc5620606be9b7c14192c1b3c567aa
Maintenant, selon le système d'exploitation que vous utilisez, une fois que vous avez téléchargé le fichier requis, vous pouvez en calculer un hachage. Accédez d'abord au répertoire du fichier que vous avez téléchargé, puis:
CertUtil -hashfile filename MD5
/CertUtil -hashfile filename SHA256
md5sum filename
/sha256sum filename
md5 filename
/shasum -a 256 filename
Le problème qui vient avec la vérification d'un hachage à partir d'un site Web est qu'il ne détermine pas que le fichier est sûr à télécharger, juste que ce que vous avez téléchargé est le fichier correct, octet par octet. Si le site Web a été compromis, le hachage d'un autre fichier pourrait vous être montré, ce qui pourrait être malveillant.
Vous mentionnez des sommes de contrôle, PGP et SHA dans le titre de votre question, mais ce sont toutes des choses différentes.
Une somme de contrôle vérifie simplement avec un haut degré de certitude qu'il n'y a pas eu corruption faisant en sorte qu'un fichier copié diffère de l'original (pour différentes définitions de "élevé"). En général, une somme de contrôle ne garantit pas que intentionnel aucune modification n'a été apportée, et dans de nombreux cas, il est trivial de modifier le fichier tout en conservant la même somme de contrôle. Des exemples de sommes de contrôle sont les CRC, Adler-32, XOR (octet (s) de parité)).
Les hachages cryptographiques fournissent des propriétés supplémentaires par rapport aux sommes de contrôle simples (tous les hachages cryptographiques peuvent être utilisés comme sommes de contrôle, mais toutes les sommes de contrôle ne sont pas des hachages cryptographiques).
Les hachages cryptographiques (qui ne sont ni cassés ni faibles) offrent une résistance aux collisions et à la pré-image. La résistance aux collisions signifie qu'il n'est pas possible de créer deux fichiers qui ont le même hachage, et la résistance à la pré-image signifie qu'il n'est pas possible de créer un fichier avec le même hachage qu'un fichier cible spécifique.
MD5 et SHA1 sont tous deux rompus en ce qui concerne les collisions, mais sont à l'abri des attaques de pré-image (en raison du paradoxe d'anniversaire les collisions sont beaucoup plus faciles à générer). Le SHA256 est couramment utilisé aujourd'hui et est sûr contre les deux.
Si vous prévoyez d'utiliser un hachage pour vérifier un fichier, vous doit obtenir le hachage à partir d'une source distincte de confiance. La récupération du hachage à partir du même site à partir duquel vous téléchargez les fichiers ne garantit rien. Si un attaquant est en mesure de modifier des fichiers sur ce site ou d'intercepter et de modifier votre connexion, il peut simplement remplacer les fichiers par des versions malveillantes et modifier les hachages pour qu'ils correspondent.
L'utilisation d'un hachage non résistant aux collisions peut être problématique si votre adversaire peut modifier le fichier légitime (par exemple, en apportant une correction de bogue apparemment innocente). Ils peuvent être en mesure de créer un changement innocent dans l'original qui lui donne le même hachage qu'un fichier malveillant, qu'ils pourraient ensuite vous envoyer.
Le meilleur exemple où il est logique de vérifier un hachage est lors de la récupération du hachage à partir du site Web de confiance du logiciel (en utilisant bien sûr HTTPS), et en l'utilisant pour vérifier les fichiers téléchargés à partir d'un miroir non approuvé.
Sous Linux, vous pouvez utiliser le md5sum
, sha1sum
, sha256sum
, etc utilitaires. réponse de Connor J donne des exemples pour Windows.
Contrairement aux sommes de contrôle ou aux hachages, une signature implique un secret. Ceci est important, car bien que le hachage d'un fichier puisse être calculé par n'importe qui, une signature ne peut être calculée que par quelqu'un qui a le secret.
Les signatures utilisent une cryptographie asymétrique, il existe donc une clé publique et une clé privée. Une signature créée avec la clé privée peut être vérifiée par la clé publique, mais la clé publique ne peut pas être utilisée pour créer des signatures. De cette façon, si je signe quelque chose avec ma clé, vous pouvez être sûr que c'était moi.
Bien sûr, le problème est maintenant de savoir comment vous assurer que vous utilisez la bonne clé publique pour vérifier la signature. La distribution des clés est un problème difficile, et dans certains cas, vous êtes de retour où vous en étiez avec les hachages, vous devez toujours l'obtenir auprès d'une source de confiance distincte. Mais comme l'explique la réponse this , vous n'aurez peut-être même pas à vous en préoccuper. Si vous installez un logiciel via un gestionnaire de packages ou utilisez des exécutables signés, la vérification de la signature est probablement automatiquement gérée pour vous à l'aide de clés publiques préinstallées (c'est-à-dire que la distribution des clés est gérée par une confiance implicite dans le support d'installation et la personne qui a fait l'installation).
J'utilise un script de raccourci pour vérifier automatiquement SHA 256 sommes sous Linux .
Si tu utilises sha256sum filename
vous devez comparer les sommes vous-même, ce qui est difficile, peu fiable et lent.
Solution: Au lieu de cela, vous pouvez créer une fonction simple dans votre .bashrc
ou .zshrc
configurations et exécutez-le de la manière suivante:
sha256 <expected-sha-256-sum> <name-of-the-file>
Il comparera la somme attendue SHA 256 avec celle réelle dans une seule commande.
La fonction est:
sha256() {
echo "$1 $2" | sha256sum --check
}
Veuillez trouver plus de détails ici .
sha256sum -c thefile.sha
// thefile: OK
Succès! Sauf si vous avez exécuté cette commande dans un répertoire qui ne contient pas la cible du shasum, auquel cas vous obtiendrez:
sha256sum: thefile: No such file or directory
thefile: FAILED open or read
sha256sum: WARNING: 1 listed file could not be read
Tout ce que vous devez savoir peut être trouvé en utilisant la page de manuel md5sum:
man md5sum
Pas parce que md5sum
est particulièrement utile, mais parce que si vous transférez la recherche /BUGS
vous aurez droit à un bel aperçu de vos options :)
N'utilisez pas l'algorithme MD5 à des fins liées à la sécurité. Utilisez plutôt un algorithme SHA-2, implémenté dans les programmes sha224sum (1), sha256sum (1), sha384sum (1), sha512sum (1) ou l'algorithme BLAKE2, implémenté dans b2sum (1)
Ils ont tous les mêmes options, à l'exception de b2sum
qui a un supplément --length
option.
Ce qui suit [~ # ~] produit [~ # ~] une signature sha:
sha256sum yourFilename > yourFilename.sha
où yourFilename.sha
contient:
9f22b735f8f416bb8195cef9436ddec04db709132dae87137026b9725cf5678a yourFilename
Pour cocher exécutez simplement avec --check
option:
sha256sum -c yourFilename.sha
// yourFilename: OK
Si cela vous semble un peu insatisfaisant et magique, vous pouvez suivre un itinéraire manuel avec:
sha256sum yourFilename > homebrewSHA
Et comparez-le au fichier sha que vous avez téléchargé sur Internet:
diff suspiciousInternetSHA homebrewSHA
Si le diff imprime quelque chose, ce ne sont PAS les droïdes que vous recherchez. Sinon, tu es bon!