GNU/Linux >> Tutoriels Linux >  >> Linux

Une introduction au hachage et aux sommes de contrôle sous Linux

Il est probable que vous ayez vu des références à des hachages ou des sommes de contrôle lorsque vous avez téléchargé des logiciels sur Internet. Souvent, le logiciel sera affiché, puis près du lien se trouve une somme de contrôle. La somme de contrôle peut être étiquetée MD5, SHA ou avec un autre nom similaire. Voici un exemple utilisant l'un de mes vieux jeux préférés des années 1990 nommé Nethack :

Beaucoup de gens ne savent pas exactement ce que ces informations signifient ou comment les utiliser. Dans cet article, j'aborde le but du hachage, ainsi que la façon de l'utiliser.

[ Les lecteurs ont également apprécié : Premiers pas avec GPG (GnuPG) ]

Objectifs de la cryptographie

Dans cette première section, je veux que vous désappreniez quelque chose. Plus précisément, je veux que vous cassiez l'association dans votre tête entre le mot chiffrement et le mot confidentiel . Beaucoup d'entre nous conçoivent ces deux mots comme étant synonymes alors que ce n'est en fait pas le cas. La cryptographie, qui inclut le chiffrement, peut assurer la confidentialité, mais cela peut aussi répondre à d'autres objectifs.

La cryptographie a en fait trois objectifs :

  • Confidentialité :pour empêcher que le contenu du fichier ne soit lu par des utilisateurs non autorisés
  • Authenticité :pour prouver l'origine d'un fichier
  • Intégrité :pour prouver qu'un fichier n'a pas été modifié de manière inattendue

C'est ce troisième concept, l'intégrité , qui nous intéresse ici. Dans ce contexte, l'intégrité signifie prouver que les données n'ont pas changé de manière inattendue. Prouver l'intégrité est utile dans de nombreux scénarios :

  • Téléchargements Internet tels que des distributions Linux, des logiciels ou des fichiers de données
  • Transferts de fichiers réseau via NFS, SSH ou d'autres protocoles
  • Vérification des installations logicielles
  • Comparaison d'une valeur stockée, telle qu'un mot de passe, avec une valeur saisie par un utilisateur
  • Sauvegardes qui comparent deux fichiers pour voir s'ils ont été modifiés

Qu'est-ce que le hachage ?

La cryptographie utilise le hachage pour confirmer qu'un fichier est inchangé. L'explication simple est que la même méthode de hachage est utilisée sur un fichier à chaque fin d'un téléchargement Internet. Le fichier est haché sur le serveur Web par l'administrateur Web et le résultat du hachage est publié. Un utilisateur télécharge le fichier et applique la même méthode de hachage. Les résultats de hachage, ou sommes de contrôle , sont comparés. Si la somme de contrôle du fichier téléchargé est la même que celle du fichier d'origine, alors les deux fichiers sont identiques et il n'y a pas eu de changements inattendus dus à la corruption du fichier, aux attaques de type "man-in-the-middle", etc.

Le hachage est un processus à sens unique. Le résultat haché ne peut pas être inversé pour exposer les données d'origine. La somme de contrôle est une chaîne de sortie d'une taille définie. Techniquement, cela signifie que le hachage n'est pas un chiffrement car le chiffrement est destiné à être inversé (déchiffré).

Quel type de chiffrement par hachage pourriez-vous utiliser avec Linux ?

Récapitulatif des messages et algorithme de hachage sécurisé

Sous Linux, vous êtes susceptible d'interagir avec l'une des deux méthodes de hachage :

  • MD5
  • SHA256

Ces outils de cryptographie sont intégrés à la plupart des distributions Linux, ainsi qu'à macOS. Windows n'inclut généralement pas ces utilitaires, vous devez donc les télécharger séparément auprès de fournisseurs tiers si vous souhaitez utiliser cette technique de sécurité. Je pense que c'est formidable que des outils de sécurité comme ceux-ci fassent partie de Linux et macOS.

Message Digest versus Secure Hash Algorithm

Quelle est la différence entre les algorithmes de résumé de message et de hachage sécurisé ? La différence réside dans les mathématiques impliquées, mais les deux atteignent des objectifs similaires. Les administrateurs système peuvent préférer l'un à l'autre, mais dans la plupart des cas, ils fonctionnent de la même manière. Ils ne sont cependant pas interchangeables. Un hachage généré avec MD5 à une extrémité de la connexion ne sera pas utile si SHA256 est utilisé à l'autre extrémité. La même méthode de hachage doit être utilisée des deux côtés.

SHA256 génère un hachage plus gros et peut prendre plus de temps et de puissance de calcul. Il est considéré comme une approche plus sûre. MD5 est probablement suffisant pour la plupart des contrôles d'intégrité de base, tels que les téléchargements de fichiers.

Où trouve-t-on le hachage sous Linux ?

Linux utilise des hachages dans de nombreux endroits et situations. Les sommes de contrôle peuvent être générées manuellement par l'utilisateur. Vous verrez exactement comment faire cela plus loin dans l'article. De plus, les capacités de hachage sont incluses avec /etc/shadow , rsync , et d'autres utilitaires.

Par exemple, les mots de passe stockés dans le /etc/shadow fichier sont en fait des hachages. Lorsque vous vous connectez à un système Linux, le processus d'authentification compare la valeur de hachage stockée à une version hachée du mot de passe que vous avez saisi. Si les deux sommes de contrôle sont identiques, le mot de passe d'origine et ce que vous avez saisi sont identiques. En d'autres termes, vous avez saisi le bon mot de passe. Ceci est déterminé, cependant, sans jamais réellement déchiffrer le mot de passe stocké sur votre système. Vérifiez les deux premiers caractères du deuxième champ pour votre compte utilisateur dans /etc/shadow . Si les deux caractères sont $1 , votre mot de passe est crypté avec MD5. Si les caractères sont $5 , votre mot de passe est crypté avec SHA256. Si la valeur est de 6 $ , SHA512 est utilisé. SHA512 est utilisé sur ma machine virtuelle Fedora 33, comme indiqué ci-dessous :

Comment générer manuellement des sommes de contrôle

L'utilisation des utilitaires de hachage est très simple. Je vais vous guider à travers un scénario très simple à réaliser sur un ordinateur de laboratoire ou sur n'importe quel système Linux dont vous disposez. Le but de ce scénario est de déterminer si un fichier a changé.

Tout d'abord, ouvrez votre éditeur de texte préféré et créez un fichier nommé original.txt avec une ligne de texte indiquant :Informations d'origine.

[damon@localhost ~]$ vim original.txt
[damon@localhost ~]$ cat original.txt
Original information.
[damon@localhost ~]$

Ensuite, exécutez le fichier via un algorithme de hachage. Je vais utiliser MD5 pour l'instant. La commande est md5sum . Voici un exemple :

[damon@localhost ~]$ md5sum original.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

Notez la valeur de la somme de contrôle résultante. Cette valeur est suffisamment grande pour qu'il soit difficile de travailler avec. Stockons cette valeur pour une utilisation future en la redirigeant dans un fichier :

[damon@localhost ~]$ md5sum original.txt > hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

À ce stade, vous disposez d'un fichier d'origine. Copiez ce fichier dans le /tmp répertoire avec le nom duplicate.txt . Copiez le fichier à l'aide de la commande suivante (assurez-vous de copier et non de déplacer) :

[damon@localhost ~]$ cp original.txt /tmp/duplicate.txt
[damon@localhost ~]$

Exécutez la commande suivante pour créer une somme de contrôle du fichier copié :

[damon@localhost ~]$ md5sum /tmp/duplicate.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Ensuite, ajoutez le résultat du hachage à notre hashes.txt fichier puis comparer les deux. Faites très attention à utiliser le >> ajouter l'opérateur de redirection ici, car > écrasera la valeur de hachage du original.txt fichier.

Exécutez la commande suivante :

[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Les deux résultats de hachage sont identiques, donc le fichier n'a pas changé pendant le processus de copie.

Ensuite, simulez un changement. Tapez la commande suivante pour modifier le /tmp/duplicate.txt contenu du fichier, puis réexécutez le md5sum commande avec le >> opérateur d'ajout :

[damon@localhost ~]$ hostname >> /tmp/duplicate.txt
[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$

Vous savez que le duplicate.txt le fichier n'est plus identique au original.txt fichier, mais prouvons que :

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt
[damon@localhost ~]$

Les deux valeurs de somme de contrôle ne sont pas identiques, et donc les deux fichiers à partir desquels les sommes de contrôle ont été générées ne sont pas identiques.

Dans l'exemple ci-dessus, vous avez comparé manuellement les valeurs de hachage en les affichant avec cat . Vous pouvez utiliser le --check option pour avoir md5sum faites nous la comparaison. J'ai inclus les deux méthodes ci-dessous :

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt

[damon@localhost ~]$ md5sum --check hashes.txt
original.txt: OK
/tmp/duplicate.txt: FAILED
/tmp/duplicate.txt: OK
md5sum: WARNING: 1 computed checksum did NOT match
[damon@localhost ~]$

Vous pouvez répéter les étapes ci-dessus en remplaçant sha256sum pour le md5sum commande pour voir comment le processus fonctionne à l'aide de l'algorithme SHA. Le sha256sum la commande inclut également un --check checksum option qui compare les hachages résultants et affiche un message indiquant si les fichiers diffèrent.

Remarque :si vous transférez des fichiers entre Linux, macOS et Windows, vous pouvez toujours utiliser le hachage pour vérifier l'intégrité des fichiers. Pour générer une valeur de hachage sur macOS, exécutez le md5 commande. Pour ce faire sous Windows, vous devez télécharger un programme tiers. Personnellement, j'utilise md5checker . Assurez-vous de bien comprendre les licences de ces utilitaires. Vous pourrez peut-être utiliser l'applet de commande PowerShell get-filehash , selon la version de PowerShell que vous avez installée.

[ Cours gratuit :Présentation technique de Red Hat Satellite. ] 

Récapitulez

Le hachage confirme que les données n'ont pas été modifiées de manière inattendue lors d'un transfert de fichier, d'un téléchargement ou d'un autre événement. Ce concept est connu sous le nom d'intégrité de fichier. Le hachage ne vous dit pas ce qui a changé, juste que quelque chose a changé. Une fois que le hachage vous indique que deux fichiers sont différents, vous pouvez utiliser des commandes telles que diff pour découvrir quelles différences existent.


Linux
  1. Comment rediriger la sortie vers un fichier et Stdout sous Linux

  2. Qu'est-ce que NFS et comment l'installer sous Linux

  3. Comment extraire les fichiers .gz et .tar.gz sous Linux

  4. Rechercher un fichier avec les commandes Rechercher et Localiser sous Linux

  5. Méthodes de compression et d'archivage sous Linux

Une introduction aux canaux et aux canaux nommés sous Linux

Introduction au système de fichiers Linux

Comment monter et démonter des systèmes de fichiers sous Linux

Commande Ls sous Linux (liste des fichiers et des répertoires)

Fichier hôte Linux :comment le modifier et l'utiliser ?

Comment créer et utiliser un fichier d'échange sous Linux