Une fonction de hachage cryptographique (CHF) est un algorithme qui peut être exécuté sur des données telles qu'un fichier individuel ou un mot de passe pour produire une valeur appelée somme de contrôle.
L'utilisation principale d'un CHF est de vérifier l'authenticité d'une donnée. Deux fichiers peuvent être supposés identiques uniquement si les sommes de contrôle générées à partir de chaque fichier, en utilisant la même fonction de hachage cryptographique, sont identiques.
Certaines fonctions de hachage cryptographique couramment utilisées incluent MD5 et SHA-1, bien que de nombreuses autres existent également. Celles-ci sont souvent appelées "fonctions de hachage", mais ce n'est pas techniquement correct. Une fonction de hachage est un terme générique qui englobe les CHF ainsi que d'autres types d'algorithmes tels que les contrôles de redondance cyclique.
Fonctions de hachage cryptographique: un cas d'utilisation
Disons que vous téléchargez la dernière version du navigateur Firefox. Pour une raison quelconque, vous deviez le télécharger à partir d'un site autre que celui de Mozilla. Parce qu'il n'est pas hébergé sur un site auquel vous avez appris à faire confiance, vous aimeriez vous assurer que le fichier d'installation que vous venez de télécharger est exactement le même que celui proposé par Mozilla.
À l'aide d'un calculateur de somme de contrôle, vous calculez une somme de contrôle à l'aide d'une fonction de hachage cryptographique particulière, telle que SHA-2, puis la comparez à celle publiée sur le site de Mozilla. S'ils sont égaux, vous pouvez être raisonnablement sûr que le téléchargement que vous avez est celui que Mozilla voulait que vous ayez.
Les fonctions de hachage cryptographique peuvent-elles être inversées ?
Les fonctions de hachage cryptographiques sont conçues pour empêcher la possibilité d'inverser les sommes de contrôle qu'elles créent vers les textes d'origine. Cependant, même s'ils sont pratiquement impossibles à inverser, ils ne sont pas garantis à 100 % pour protéger les données.
Les pirates peuvent utiliser une table arc-en-ciel pour comprendre le texte brut d'une somme de contrôle. Les tables arc-en-ciel sont des dictionnaires qui répertorient des milliers, des millions ou même des milliards de sommes de contrôle à côté de leur valeur en texte brut correspondante.
Bien qu'il ne s'agisse pas techniquement d'inverser l'algorithme de hachage cryptographique, cela pourrait tout aussi bien l'être, étant donné que c'est si simple à faire. En réalité, comme aucune table arc-en-ciel ne peut répertorier toutes les sommes de contrôle possibles, elles ne sont généralement utiles que pour des phrases simples comme des mots de passe faibles.
Voici une version simplifiée d'un tableau arc-en-ciel pour montrer comment on fonctionnerait en utilisant la fonction de hachage cryptographique SHA-1:
Exemple de tableau arc-en-ciel | |
---|---|
Texte clair | SHA-1 Somme de contrôle |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
password1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Un pirate doit savoir quel algorithme de hachage cryptographique a été utilisé pour générer les sommes de contrôle pour déterminer les valeurs.
Pour plus de protection, certains sites Web qui stockent les mots de passe des utilisateurs exécutent des fonctions supplémentaires sur l'algorithme de hachage cryptographique après la génération de la valeur mais avant son stockage. Ce processus produit une nouvelle valeur que seul le serveur Web comprend et qui ne correspond pas à la somme de contrôle d'origine.
Par exemple, après la saisie d'un mot de passe et la génération de la somme de contrôle, il peut être séparé en plusieurs parties et réorganisé avant d'être stocké dans la base de données de mots de passe, ou certains caractères peuvent être échangés avec d'autres. Lors de la prochaine tentative d'authentification de l'utilisateur, le serveur inverse cette fonction supplémentaire et la somme de contrôle d'origine est à nouveau générée pour vérifier que le mot de passe d'un utilisateur est valide.
Suivre ces étapes limite l'utilité d'un hack où toutes les sommes de contrôle sont volées. L'idée est d'exécuter une fonction qui est inconnue, donc si le pirate connaît l'algorithme de hachage cryptographique mais pas celui personnalisé, alors connaître les sommes de contrôle du mot de passe n'est d'aucune utilité.
Mots de passe et fonctions de hachage cryptographique
Une base de données enregistre les mots de passe des utilisateurs d'une manière similaire à une table arc-en-ciel. Lorsque votre mot de passe est entré, la somme de contrôle est générée et comparée à celle enregistrée avec votre nom d'utilisateur. L'accès vous est alors accordé si les deux sont identiques.
Étant donné qu'un CHF produit une somme de contrôle non réversible, est-il sûr pour vous de rendre votre mot de passe aussi simple que 12345, au lieu de 12@34 $5, simplement parce que les sommes de contrôle elles-mêmes ne peuvent pas être comprises ? Non, et voici pourquoi.
Ces deux mots de passe sont tous deux impossibles à déchiffrer simplement en regardant simplement les sommes de contrôle:
MD5 pour 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 pour 12@34$5: a4d3cc004f487b18b2ccd4853053818b
À première vue, vous pouvez penser qu'il n'y a pas de problème à utiliser l'un ou l'autre de ces mots de passe. Cela est vrai si un attaquant a essayé de trouver votre mot de passe en devinant la somme de contrôle MD5, ce que personne ne fait, mais pas vrai si une attaque par force brute ou par dictionnaire est effectuée, ce qui est une tactique courante.
Une attaque par force brute se produit lorsque plusieurs tentatives aléatoires sont effectuées pour deviner un mot de passe. Dans ce cas, il serait facile de deviner 12345, mais assez difficile de trouver l'autre au hasard. Une attaque par dictionnaire est similaire en ce sens que l'attaquant peut essayer chaque mot, nombre ou phrase d'une liste de mots de passe courants (et moins courants), et 12345 est l'un de ces mots de passe courants. mots de passe.
Même si les fonctions de hachage cryptographique produisent des sommes de contrôle difficiles, voire impossibles à deviner, vous devez toujours utiliser un mot de passe complexe pour tous vos comptes d'utilisateurs en ligne et locaux.
Plus d'informations sur les fonctions de hachage cryptographique
Il peut sembler que les fonctions de hachage cryptographique sont liées au chiffrement, mais les deux fonctionnent de manière différente.
Le chiffrement est un processus à double sens où quelque chose est chiffré pour devenir illisible, puis déchiffré plus tard pour être réutilisé normalement. Vous pouvez chiffrer les fichiers que vous avez stockés afin que quiconque y accède ne puisse pas les utiliser, ou vous pouvez utiliser le chiffrement du transfert de fichiers pour chiffrer les fichiers qui se déplacent sur un réseau, comme ceux que vous téléchargez ou téléchargez en ligne.
Les fonctions de hachage cryptographiques fonctionnent différemment, en ce sens que les sommes de contrôle ne sont pas censées être inversées avec un mot de passe spécial de hachage. Le seul but des CHF est de comparer deux éléments de données, par exemple lors du téléchargement de fichiers, du stockage de mots de passe et de l'extraction de données d'une base de données.
Il est possible qu'une fonction de hachage cryptographique produise la même somme de contrôle pour différents éléments de données. Lorsque cela se produit, cela s'appelle une collision, ce qui est un énorme problème étant donné que l'intérêt de la fonction est de créer des sommes de contrôle uniques pour chaque entrée de données.
Des collisions peuvent se produire parce que chaque CHF produit une valeur d'une longueur fixe quelles que soient les données d'entrée. Par exemple, la fonction de hachage cryptographique MD5 génère 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 et e10adc3949ba59abbe56e057f20f883e pour trois blocs de données totalement différents.
La première somme de contrôle provient de 12345. Le second a été généré à partir de plus de 700 lettres et chiffres, et le troisième à partir de 123456. Les trois entrées sont de longueurs différentes, mais les résultats ne font toujours que 32 caractères, car la somme de contrôle MD5 a été utilisée.
Il n'y a pas de limite au nombre de sommes de contrôle pouvant être créées car chaque petite modification de l'entrée est censée produire une somme de contrôle complètement différente. Parce qu'il y a une limite au nombre de sommes de contrôle qu'un CHF peut produire, il y a toujours la possibilité que vous rencontriez une collision.
C'est pourquoi d'autres fonctions de hachage cryptographique ont été créées. Alors que MD5 génère une valeur de 32 caractères, SHA-1 génère 40 caractères et SHA-2 (512) en génère 128. Plus le nombre de caractères de la somme de contrôle est élevé, moins il est probable qu'une collision se produise.