Recherche de site Web

Comment vérifier l’intégrité d’une image iso d’une distribution Linux


Lorsque nous décidons d’installer un système d’exploitation basé sur le noyau Linux, la première chose que nous faisons est de télécharger son image d’installation, ou ISO, à partir du site officiel de distribution. Cependant, avant de procéder à l’installation proprement dite, il est crucial de vérifier l’intégrité de l’image, de s’assurer qu’elle est bien ce qu’elle prétend être et que personne ne l’a compromise. Dans ce tutoriel, nous allons voir les étapes de base que nous pouvons suivre pour accomplir cette tâche.

Dans ce tutoriel, vous allez apprendre :

  • Quelle est la différence fondamentale entre le cryptage et la signature gpg ?
  • Comment télécharger et importer une clé publique gpg à partir d’un serveur de clés
  • Comment vérifier une signature gpg
  • Comment vérifier la somme de contrôle d’une ISO

COMMENT VÉRIFIER L’INTÉGRITÉ D’UNE IMAGE ISO

Configuration logicielle requise et conventions utilisées

Les étapes de vérification de l’intégrité d’une image ISO téléchargée sont essentiellement au nombre de deux :

  1. Vérification de la signature du fichier contenant la somme de contrôle de l’ISO
  2. La vérification de la somme de contrôle fournie dans le fichier est la même que celle de l’ISO réelle

Ici, nous allons voir comment effectuer les deux étapes.

Étape 1

Vérification de la signature gpg du fichier de somme de contrôle

Pour être sûr qu’un ISO que nous avons téléchargé n’a pas été modifié, il y a une chose simple à faire : vérifier que sa somme de contrôle correspond à celle indiquée dans le fichier qui est généralement disponible dans la même page à partir de laquelle l’ISO a été téléchargé. Il n’y a qu’un seul problème : comment être sûr que ce fichier lui-même n’a pas été modifié ? Il faut vérifier sa signature gpg ! Au fait, qu’est-ce qu’une signature gpg et quelle est la différence entre signer et chiffrer avec gpg ?

Chiffrement et signature

Le cryptage Gpg est basé sur l’utilisation de paires de clés. Chaque utilisateur génère une clé privée et une clé publique : la première, comme son nom l’indique, est strictement personnelle et doit être conservée aussi sûre que possible ; Ces derniers, en revanche, peuvent être distribués et librement accessibles au public. Il y a essentiellement deux choses que nous pouvons faire avec gpg : le cryptage et la signature.

Disons que nous avons deux personnes : Alice et Bob. S’ils veulent bénéficier de l’utilisation de gpg, la première chose qu’ils doivent faire est d’échanger leurs clés publiques.

Si Alice veut envoyer un message privé à Bob et veut s’assurer que seul Bob est capable de lire le message, elle doit le chiffrer avec la clé publique de Bob. Une fois le message chiffré, seule la clé privée de Bob pourra le déchiffrer.

C’est le cryptage gpg ; L’autre chose que nous pouvons faire avec GPG est de créer une signature numérique. Supposons qu’Alice veuille diffuser un message public cette fois-ci : tout le monde devrait pouvoir le lire, mais une méthode est nécessaire pour vérifier que le message est authentique et qu’il a bien été écrit par Alice. Dans ce cas, Alice doit utiliser sa clé privée pour générer une signature numérique ; Pour vérifier la signature d’Alice, Bob (ou toute autre personne) utilise la clé publique d’Alice.

Un exemple concret : le téléchargement et la vérification de l’ISO d’Ubuntu 20.04

Lorsque nous téléchargeons un ISO à partir d’un site officiel, nous devons également télécharger, pour le vérifier, nous devons également télécharger le fichier de somme de contrôle correspondant et sa signature. Prenons un exemple concret. Supposons que nous voulions télécharger et vérifier l’ISO de la dernière version d’Ubuntu (20.04). Nous naviguons jusqu’à la page de sortie et faisons défiler vers le bas de la page ; Nous y trouverons la liste des fichiers qui peuvent être téléchargés :

Page des sorties d’Ubuntu 20.04

Supposons que nous voulions vérifier et installer la version « Desktop » de la distribution, nous devrions récupérer les fichiers suivants :

  • ubuntu-20.04-desktop-amd64.iso
  • SHA256SUMS
  • SHA256SUMS.gpg

Le premier fichier est l’image de distribution elle-même ; Le deuxième fichier, SHA256SUMS, contient la somme de contrôle de toutes les images disponibles, et a dit qu’il est nécessaire de vérifier que les images n’ont pas été modifiées. Le troisième fichier, SHA256SUM.gpg, contient la signature numérique du précédent : nous l’utilisons pour vérifier qu’il est authentique.

Une fois que nous avons téléchargé tous les fichiers, la première chose que nous devons faire est de vérifier la signature gpg du fichier de somme de contrôle. Pour ce faire, nous devons utiliser la commande suivante :

gpg --verify SHA256SUMS.gpg SHA256SUMS

Lorsque plus d’un argument est fourni à la commande gpg --verify, le premier est supposé être le fichier qui contient la signature et les autres contenir les données signées, qui dans ce cas est la somme de contrôle de l’image Ubuntu. Si la distribution à partir de laquelle nous travaillons actuellement n’est pas Ubuntu, et que c’est la première fois que nous vérifions une image Ubuntu, la commande doit renvoyer le résultat suivant :

gpg: Signature made Thu 23 Apr 2020 03:46:21 PM CEST
gpg:                using RSA key D94AA3F0EFE21092
gpg: Can't check signature: No public key

Le message est clair : gpg ne peut pas vérifier la signature car nous n’avons pas la clé publique associée à la clé privée qui a été utilisée pour signer les données. Où pouvons-nous obtenir la clé ? Le moyen le plus simple est de le télécharger à partir d’un serveur de clés : dans ce cas, nous utiliserons keyserver.ubuntu.com. Pour télécharger la clé et l’importer dans notre trousseau de clés, nous pouvons exécuter :

gpg --keyserver keyserver.ubuntu.com --recv-keys D94AA3F0EFE21092

Prenons un moment pour expliquer la commande ci-dessus. Avec l’option –keyserver, nous avons spécifié le serveur de clés que nous voulons utiliser ; L’option –recv-keys, à la place, prend un key-id comme argument et est nécessaire pour référencer la clé qui doit être importée à partir du serveur de clés. Dans ce cas, l’identifiant de la clé que nous voulons rechercher et importer est D94AA3F0EFE21092. La commande doit produire ce résultat :

gpg: key D94AA3F0EFE21092: public key "Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Nous pouvons vérifier que la clé est maintenant dans notre trousseau de clés en lançant la commande suivante :

gpg --list-keys

On devrait facilement trouver l’entrée relative à la clé importée :

pub   rsa4096 2012-05-11 [SC]
      843938DF228D22F7B3742BC0D94AA3F0EFE21092
uid           [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>

Maintenant que nous avons importé la clé publique, nous pouvons réessayer de vérifier la signature SHA256SUM :

gpg --verify SHA256SUMS.gpg SHA256SUMS

Cette fois-ci, comme prévu, la commande a réussi, et nous avons été informés d’une bonne signature :

gpg: Signature made Thu 23 Apr 2020 03:46:21 PM CEST
gpg:                using RSA key D94AA3F0EFE21092
gpg: Good signature from "Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092

En lisant le résultat ci-dessus, une question se poserait presque certainement : que signifie le message « Il n’y a aucune indication que la signature appartient au propriétaire » ? Le message s’affiche, car même si nous avons importé la clé dans notre trousseau, nous ne l’avons pas déclarée comme approuvée et il n’y a aucune preuve réelle qu’elle appartient au propriétaire spécifié. Pour se débarrasser du message, nous devons déclarer que nous faisons confiance à la clé ; Comment pouvons-nous être sûrs qu’il faut vraiment lui faire confiance ? Il y a deux façons :

  1. Vérifiez personnellement que la clé appartient à l’utilisateur ou à l’entité spécifié ;
  2. Vérifiez qu’il a été signé par une clé de confiance que nous avons déjà, directement ou par le biais d’une série de clés intermédiaires.

De plus, il existe plusieurs niveaux de confiance que nous pouvons attribuer à une clé ; si ce sujet vous intéresse (vous devriez certainement l’être !), et que vous voulez en savoir plus à ce sujet, le GNU Privacy Handbook est une bonne source d’information.

Étape 1

Vérification de la somme de contrôle de l’image

Maintenant que nous avons vérifié que la signature SHA256SUM est correcte, nous pouvons réellement procéder et vérifier que la somme de contrôle de l’image téléchargée correspond à celle réellement stockée dans le fichier, qui a le contenu suivant :

e5b72e9cfe20988991c9cd87bde43c0b691e3b67b01f76d23f8150615883ce11 *ubuntu-20.04-desktop-amd64.iso
caf3fd69c77c439f162e2ba6040e9c320c4ff0d69aad1340a514319a9264df9f *ubuntu-20.04-live-server-amd64.iso

Comme vous pouvez le voir sur chaque ligne du fichier, nous avons une somme de contrôle associée à une image. En supposant que le fichier SHA256SUM se trouve dans le même répertoire où l’image Ubuntu 20.04 a été téléchargée, pour vérifier l’intégrité ISO, tout ce que nous avons à faire est d’exécuter la commande suivante :

sha256sum -c SHA256SUM

sha256sum est le programme utilisé pour calculer et vérifier la synthèse des messages SHA256. Dans ce cas, nous l’avons lancé en utilisant l’option -c, qui est l’abréviation de --check. Lorsque cette option est utilisée, elle indique au programme de lire les sommes de contrôle stockées dans le fichier passé en argument (dans ce cas, SHA256SUM) et de vérifier la présence de l’entrée associée. Le résultat de la commande ci-dessus, dans ce cas, est le suivant :

ubuntu-20.04-desktop-amd64.iso: OK
sha256sum: ubuntu-20.04-live-server-amd64.iso: No such file or directory
ubuntu-20.04-live-server-amd64.iso: FAILED open or read
sha256sum: WARNING: 1 listed file could not be read

À partir de la sortie, nous pouvons voir que l’ISO ubuntu-20.04-desktop-amd64.iso a été vérifié et que sa somme de contrôle correspond à celle indiquée dans le fichier. Nous sommes également informés qu’il était impossible de lire et de vérifier la somme de contrôle de l’image ubuntu-20.04-live-server-amd64.iso : c’est logique, puisque nous ne l’avons jamais téléchargée.

Conclusions

Dans ce tutoriel, nous avons appris à vérifier qu’une image ISO téléchargée : nous avons appris à vérifier que sa somme de contrôle correspond à celle fournie dans le fichier de somme de contrôle, et à vérifier que la signature gpg de ce dernier est bonne. Pour vérifier une signature gpg, nous avons besoin de la clé publique correspondant à la clé privée qui l’a générée : dans le tutoriel, nous avons également vu comment télécharger une clé publique à partir d’un serveur de clés, en spécifiant son ID.

Articles connexes: