Voici un tutoriel pour vérifier sous Ubuntu, Linux Mint et Debian, l’intégrité d’un fichier téléchargé avec des empreintes MD5, SHA1 ou SHA256 et s’assurer qu’il est conforme à l’original et non corrompu.
Table des matières
Introduction
Pourquoi vérifier l’intégrité d’un fichier téléchargé
Lorsque l’on télécharge un fichier d’ISO d’installation d’un OS ou un logiciel, ce dernier pourrait être corrompu par rapport à son original pour plusieurs raisons :
- erreur de lecture/écriture lors du téléchargement
- code malveillant introduit par des hackers sur le fichier mis à disposition
- etc.
Aussi, pour vérifier qu’un fichier correspond bien à celui attendu, les éditeurs et développeurs peuvent mettre à disposition sur leur site (parfois dans un fichier) des empreintes des hachages des fichiers originaux.
Qu’est-ce qu’une empreinte de hachage
Les empreintes de hachage sont des empreintes numériques uniques obtenues par un calcul complexe avec des fonctions de hachage. Elles sont couramment utilisées en informatique et cryptographie par exemple pour chiffrer un mot de passe sauvegarder dans une base de donnée.
Il existe plusieurs algorithmes pour trouver ces empreintes de hachage :
- SHA-2 dont l’usage est recommandé aujourd’hui car plus sûr. Il permettra entre autre de calculer des empreintes SHA-256 (sur 256 bits) ou SHA-512 (512 bits).
- MD5 (128 bits) dépassé car pas assez fiable.
- SHA-1 (160 bits) aussi dépassé.
Vérifier la provenance d’un fichier de clé d’intégrité
Si la ou les empreintes de hachage sont dans un fichier, ce dernier s’accompagne parfois d’un fichier de signature gpg
qui permet de vérifier son authenticité (sa provenance).
Ajouter la clé publique d’un éditeur
Pour contrôler son authenticité, commencez par importer la clé publique de l’éditeur dans votre trousseau de clé avec une commande du type :
gpg --keyserver adresse_du_serveur --recv-keys clé
adresse_du_serveur
à remplacer par celle de l’éditeur
clé
à remplacer par la clé de l’éditeur
Vous pouvez aussi ajouter d’autre option comme --keyid-format long
pour utiliser un format de clé long.
Pour lister les clés déjà importer faites :
gpg --list-keys
Pour supprimer une clé, faites :gpg --delete-key key-ID
key-ID
à remplacer par l’ID de la clé en question
Exemples 1 : ajout des clés publiques Ubuntu
Pour ajouter les clés publiques de Ubuntu, faites :
gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x46181433FBB75451 0xD94AA3F0EFE21092
--keyid-format long
est une option
(source : Site officiel Ubuntu)
Exemples 2 : ajout des clés publiques Linux Mint
Pour ajouter les clés publiques de Linux Mint, faites :
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key "27DE B156 44C6 B3CF 3BD7 D291 300F 846B A25B AE09"
(source : Site officiel Linux Mint)
Exemples 3 : ajout des clés publiques Debian
Pour ajouter les clés publiques de Debian, faites :
gpg --keyserver keyring.debian.org --recv-keys "1046 0DAD 7616 5AD8 1FBC 0CE9 9880 21A9 64E6 EA7D" "DF9B 9C49 EAA9 2984 3258 9D76 DA87 E80D 6294 BE9B" "F41D 3034 2F35 4669 5F65 C669 4246 8F40 09EA 8AC3"
(source : Site officiel Debian)
Vérifier la signature d’un fichier de clés de hachage
Une fois la clé publique dans votre trousseau, placez le fichier de signature (.gpg
, .sign
, …) dans le même dossier que votre fichier de clés de hachage.
Ouvrez un terminal (Ctrl + Alt + T) et positionnez-vous dans ce dossier :
cd /chemin/vers/dossier/
/chemin/vers/dossier/
: est à remplacer par votre chemin. Par exemple : ~/Téléchargements/
si votre dossier Téléchargements
est à la racine de votre dossier Home
.
Pour ouvrir directement un terminal dans un dossier voulu, faites un clic droit de la souris dans ce dossier et choisissez Ouvrir dans un terminal.
Et faites :
gpg --verify fichier.gpg fichier_cle_hachage
fichier.gpg
à modifier par le nom du fichier correspondant
fichier_cle_hachage
aussi à modifier par le nom correspondant
En résultat, vous aurez le nom du fichier et Réussi ou Échec.
Exemple :
gpg --verify SHA256SUMS.gpg SHA256SUMS
Dans l’exemple, l’option --key-id-format long
est facultative.
Vérifier l’intégrité d’un fichier en ligne de commande sous Ubuntu, Linux Mint ou Debian
Avec cette méthode, il n’y a rien à installer. Personnellement, c’est la méthode que je préfère…
Créer un fichier d’empreinte de hachage
Un fichier d’empreintes de hachage n’est pas systématiquement fourni. Parfois, les empreintes sont justes indiquées sur le site. Alors, il faut calculer l’empreinte du fichier et la comparer manuellement avec celle fournies. Mais pour éviter cette comparaison plus hasardeuse, il est possible de créer soit-même ce fichier d’empreintes. C’est un simple fichier en texte brut.
Pour créer ce fichier :
- Ouvrez votre éditeur de texte.
- Alors copiez/collez en premier l’empreinte d’origine.
- Puis faites une un espace.
- Et indiquer en deuxième le nom complet du fichier correspondant.
Aussi, si vous avez plusieurs fichiers à tester utilisant le même type d’empreinte, vous pouvez tous les ajouter dans un fichier même à raison d’une empreinte par ligne.
Enfin, sauvegardez le fichier en le nommant par exemple :
- SHA256SUMS pour des empreintes SHA256
- SHA1SUMS pour des empreintes SHA1
- MD5SUMS pour des empreintes MD5
mais tout autre nom est aussi valide !
Comparer et vérifier automatiquement l’intégrité d’un fichier
Avant de commencer, mettez le fichier de hachage dans le même dossier que le fichier à contrôler. Aussi, pensez à vous assurer que le fichier contrôlé porte bien le même nom que celui contenu du fichier. Pour cela, ouvrez le fichier d’empreintes avec votre éditeur de texte préféré.
Puis pour des empreintes de hashage SHA-256, faites :
sha256sum --ignore-missing -c nom_du_fichier_de_hachage_SHA256
--ignore-missing
(facultatif) : permet de n’affichez le résultat que des fichiers existants.
-c
: permet de faire une comparaison
nom_du_fichier_de_hachage_SHA256
: à remplacer par le nom de votre fichier
Pour des empreintes SHA-1, faites :
sha1sum -ignore-missing -c nom_du_fichier_de_hachage_SHA1
ou encore, pour des empreintes MD5 :
md5sum -ignore-missing -c nom_du_fichier_de_hachage_MD5
L’opération de vérification peut peut prendre plus ou moins de temps en fonction de plusieurs éléments :
- La grosseur du fichier : Plus un fichier sera gros, plus ça prendra de temps…
- L’Algorithme utilisé : Pour un même fichier, des empreintes MD5 (plus simple) seront plus rapide à calculer que des empreintes SHA256 ou SHA512 (plus longues) pour un même fichier…
- ou encore la vitesse d’accès du disque ou du support. Un disque SSD est plus rapide d’accès que disque « normal »…
Calculer une empreinte d’un fichier
Si vous n’aviez pas de fichiers, il faudrait calculer l’empreinte du fichier, puis la comparait manuellement avec l’empreinte d’origine.
Pour calculer une empreinte SHA256 d’un fichier, faites :
sha256sum /chemin/vers/nom_du_fichier
/chemin/vers/nom_du_fichier
: est à adapter…
Pour une empreinte SHA1 :
sha1sum /chemin/vers/nom_du_fichier
Et pour une empreinte MD5 :
md5sum /chemin/vers/nom_du_fichier
Vérifier l’intégrité d’un fichier par l’interface graphique sous Ubuntu, Linux Mint ou Debian
Un outil, Gtkhash, permet de vérifier l’intégrité d’un fichier sous Ubuntu, Linux Mint ou Debian par l’interface graphique. Pas installé par défaut, il est présent sur les dépôts officiels de ces distributions. Pour l’installer, cliquez sur ce lien apt : apt://gtkhash ou dans un terminal, faites :
sudo apt install gtkhask
Exécutez-le avec son lanceur depuis le menu :
Dans l’interface vous pourrez :
- Sélectionner un fichier (1)
- Calculez les différentes empreintes d’un fichier (2)
- Voir le résultat du calcul (3)
- Comparer ces résultats avec l’empreinte d’origine que vous aurez collé dans le champ (4). La pastille verte indique une comparaison réussie.
Il existe aussi des extensions pour l’intégrer dans plusieurs gestionnaires de fichier. Ainsi, dans la fenêtre de propriétés d’un fichier, un onglet Empreintes permettra de les calculer et les comparer. Pour :
- Nautilus (environnement Gnome, Ubuntu) : nautilus-gtkhash
- Nemo (environnement Cinnamon, Linux Mint Ed. Cinnamon) : nemo-gtkhash
- Thunar (environnement XFCE, Xubuntu, Linux Mint Ed. XFCE) : thunar-gtkhash
- Caja (environnement MATE, Ubuntu MATE, Linux Mint Ed. MATE) : caja-gtkhash
Pour aller plus loin
- la page GitHub de GTKhash
- la page concernant les fonctions de hashage sur Wikipédia