Quand le checksum d'un fichier téléchargé n'est pas bon

Tags: #<Tag:0x00007f3b8cfb8f78> #<Tag:0x00007f3b8cfb8e88> #<Tag:0x00007f3b8cfb8d70>

Salut tout le monde, j’ai une petite question qui me trotte dans la tête… Je vois partout qu’il faut vérifier le checksum et/ou la signature de tel ou tel fichier téléchargé (notamment des iso, mais pas que…)

(Personnellement, je n’ai jamais fait ça. Un peu par flemme, mais beaucoup parce que je me dis que ça doit être tellement rare qu’un téléchargement soit vérolé, que je me dis « à quoi bon ». Quant à la probabilité que je télécharge un truc qui ait été « remplacé » par une version non/mal signée, je me dis que là on est dans des cas extrêmes de piratage, et que ça ne doit pas être si fréquent que ça. J’ai probablement tort, vous pouvez critiquer ce comportement laxiste, aucun souci avec ça, ce n’est pas vraiment ce qui importe ici. Si possible j’aimerais que la discussion ne soit pas polluée par ça (car il y a tellement de subjectif qu’on risque de déraper). Ce qui suit est, à mon avis, plus objectif, et sera plus intéressant pour les lecteurs. Si vraiment vous êtes tentés de réagir à ce paragraphe placé entre parenthèses, dites-vous que je l’ai juste mis là pour contextualiser ma demande, mais il n’est pas très important, mon post pourrait se limiter au petit paragraphe d’intro et à la question qui vient maintenant.)

La question que je me pose, c’est le nombre de fois auquel chacun d’entre vous a pu être confronté avec un mauvais checksum après un téléchargement, ou une mauvaise signature. Avez-vous des anecdotes à ce sujet ? Des retours d’expérience à partager ? Est-ce que ces soucis sont plus fréquents sur certains logiciels, ou sur certains sites, ou bien est-ce totalement aléatoire d’avoir un tel souci ? Si, par mégarde, vous vous êtes rendu compte un peu tard du problème, qu’est-ce que ça a pu vous causer comme dégâts ? Merci d’avance pour vos contributions :pray:

Je ne le fais pas systématiquement. Je prends toujours soin de prendre les fichiers sur les site originaux. j’évite les site comme clubic, o1net ou autres qui fournissent les fichiers sans que tu ne passes directement par le site original.
Je n’ai eu qu’une seule fois un problème qui était lié en fait à un defaut lors du téléchargement.

Pareil, je me suis toujours méfié de ces sites.

Je le fais à chaque fois que ça apparaît, mais à part le site de Debian pour ses iso, je ne crois pas voir souvent cette possibilité. Mais je ne télécharge pas souvent des programmes ou d’autres iso.
Les seules sources externes sur mon système sont protonvpn et la suite texlive.

Je me pose souvent la question suivante, que je vous pose donc:
Si un «homme du milieu» peut remplacer un fichier sur par un fichier vérolé, il me semble évident qu’il peut aussi remplacer la checksum.
Qu’en pensez vous?

C’est pour ça qu’il y a un fichier de signature, c’est le fichier .sign, lui il ne peut pas être falsifié sans disxposer des certificats et clef privé de debian:
image

je le fais à chaque fois pour un iso

j’ai un petit script pour ça :

gpg --verify SHA512SUMS.sign SHA512SUMS
gpg --verify SHA256SUMS.sign SHA256SUMS
sha512sum -c SHA512SUMS --ignore-missing
sha256sum -c SHA256SUMS --ignore-missing

https://brunosanchiz.fr/spip.php?article219#GPG

 VÉRIFICATION
Commencer par télécharger les 4 fichiers sha512 et sha256 dans le dossier où est l’iso, exemple avec debian

SHA256SUMS
SHA256SUMS.sign
SHA512SUMS
SHA512SUMS.sign
ou directement :
url="https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current-live/amd64/iso-hybrid/" ; for i in {"SHA256SUMS","SHA256SUMS.sign","SHA512SUMS","SHA512SUMS.sign"};do wget "$url""$i" ; done

V='-deb12.8.0'
gpg --verify SHA512SUMS"$V".sign SHA512SUMS
gpg --verify SHA256SUMS"$V".sign SHA256SUMS
sha512sum -c SHA512SUMS"$V" --ignore-missing
sha256sum -c SHA256SUMS"$V" --ignore-missing

les lignes gpg doivent contenir un

gpg: Bonne signature de « Debian CD signing key <debian-cd@lists.debian.org> » [inconnu]
gpg: Attention : cette clef n'est pas certifiée avec une signature de confiance.
gpg:             Rien n'indique que la signature appartient à son propriétaire.

Si on obtient

gpg: keybox '/home/user/.gnupg/pubring.kbx' created
gpg: Signature made Sat 29 Apr 2023 08:48:26 PM UTC
gpg:                using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Can't check signature: No public key

alors il faut lancer
gpg --keyserver keyring.debian.org --recv DF9B9C49EAA9298432589D76DA87E80D6294BE9B
qui répond

gpg: /home/user/.gnupg/trustdb.gpg: trustdb created
gpg: key DA87E80D6294BE9B: public key "Debian CD signing key <debian-cd@lists.debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

et on recommence.

Et combien de fois ça a foiré, STP ?

Même question STP, combien de fois est-ce que ça a échoué ?

jamais quand le téléchargement était normal
une ou deux fois quand mon disque était plein

mais avec le test au moins tu sais que l’iso est le bon

et tu peux automatiser le téléchargement de tous les iso ::

wget -c https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/SHA256SUMS -O /tmp/SHA256SUMS
V="$(tail -n 1 /tmp/SHA256SUMS |sed 's#.*debian-live-\(13\.[0-9]*\.[0-9]*\)-amd64.*#\1#')"
#V="13.2.0"
if [ $# -eq 1 ]; then
	V="$1"
fi
for i in SHA256SUMS SHA512SUMS ; do
	wget -c https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/$i.sign  -O $i-"$V".sign ;
	wget -c https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/$i  -O $i-"$V" ;
done
gpg --verify SHA512SUMS-"$V".sign SHA512SUMS-"$V"
gpg --verify SHA256SUMS-"$V".sign SHA256SUMS-"$V"
for i in cinnamon gnome kde lxde lxqt mate standard xfce;do wget -c https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-"$V"-amd64-$i.iso  ; done
sha512sum -c SHA512SUMS-"$V" --ignore-missing
sha256sum -c SHA256SUMS-"$V" --ignore-missing

Je fais très rarement la vérification quand je télécharge une iso ou autre, et généralement c’est ok (enfin toujours, de mémoire);
J’ai souvent entendu (lu) que de faire le téléchargement en torrent « garantissait » un bon checksum à l’arrivée …Pourquoi ?