Chiffrement, hachage, salage : quelle est la différence ?
Le cryptage, le hachage et le salage sont toutes des techniques liées, mais chacun de ces processus possède des propriétés qui les prêtent à des fins différentes.
En bref, le cryptage consiste à coder les données afin qu'elles ne soient accessibles qu'à ceux qui possèdent la clé . Cela le protège des parties non autorisées.
Le hachage cryptographique implique des calculs irréversibles . Ces fonctions possèdent des propriétés spéciales qui les rendent utiles pour les signatures numériques et d'autres formes d'authentification.
Le salage consiste à ajouter des données aléatoires avant qu'elles ne soient soumises à une fonction de hachage cryptographique. . Il est principalement utilisé pour protéger les mots de passe pendant le stockage, mais il peut également être utilisé avec d’autres types de données.
Qu’est-ce que le cryptage ?
Pour faire simple, le cryptage est le processus d'utilisation d'un code pour empêcher d'autres parties d'accéder à des informations . Lorsque les données ont été cryptées, seuls ceux qui possèdent la clé peuvent y accéder. Tant qu’un système suffisamment complexe est utilisé et qu’il est utilisé correctement, les attaquants ne peuvent pas accéder aux données.
Les données sont cryptées avec des algorithmes de cryptage, également appelés chiffrements. L’une des distinctions les plus importantes entre le chiffrement et le hachage (à laquelle nous reviendrons plus tard) est que le chiffrement est conçu pour aller dans les deux sens. Cela signifie qu’une fois qu’un élément a été chiffré avec une clé, il peut également être déchiffré.
Cela rend le cryptage utile dans diverses situations, par exemple pour stocker ou transférer des informations en toute sécurité. Une fois les données correctement cryptées, elles sont considérées comme sécurisées et ne sont accessibles qu'à ceux qui possèdent la clé. . Le type le plus connu est le chiffrement à clé symétrique, qui consiste à utiliser la même clé dans les processus de chiffrement et de déchiffrement.
Le chiffrement à clé publique est un peu plus compliqué car une clé publiquement disponible est utilisée pour chiffrer les données, tandis que la clé privée correspondante est utilisée pour les déchiffrer. Cette fonctionnalité permet à des personnes qui ne se sont jamais rencontrées de communiquer en toute sécurité. Le chiffrement à clé publique constitue également un élément important des signatures numériques, utilisées pour valider l’authenticité et l’intégrité des données et des messages.
Voir également: Types de cryptage courants expliqués
Algorithmes de chiffrement courants
- Chiffre de César – Il s'agit d'un code simple qui implique que chaque lettre soit décalée d'un nombre fixe de places. Si un chiffre César a un décalage de trois, chaque « a » deviendra un « d », chaque « b » deviendra un « e », chaque « c » deviendra un « f » et ainsi de suite. Il porte le nom de Jules César, qui fut la première personne à utiliser ce système.
- AES – L’Advanced Encryption Standard est un algorithme complexe à clé symétrique qui sécurise une partie importante de nos communications modernes. Cela implique un certain nombre d’étapes sophistiquées et est souvent utilisé pour chiffrer des données dans TLS, dans des applications de messagerie, au repos et dans de nombreuses autres situations. Nous approfondissons Cryptage AES ici.
- 3DES – Triple DES est basé sur l’algorithme DES. Lorsque la puissance croissante des ordinateurs a rendu le DES peu sûr, 3DES a été développé comme un algorithme renforcé. Dans 3DES, les données sont exécutées via l'algorithme DES trois fois au lieu d'une seule, ce qui rend leur déchiffrage plus difficile. 3DES peut être utilisé pour bon nombre des mêmes choses qu’AES, mais seules certaines implémentations sont considérées comme sûres.
- RSA – Le chiffre Rivest-Shamir-Adleman a été la première forme de cryptographie à clé publique largement utilisée. Il permet aux entités de communiquer en toute sécurité même si elles ne se sont pas rencontrées ou n’ont pas eu l’occasion d’échanger des clés. Il peut être utilisé dans un certain nombre de protocoles de sécurité différents, tels que PGP et TLS. Nous avons un guide détaillé pour Cryptage RSA ici.
- ECDSA – L'algorithme de signature numérique à courbe elliptique est une variante de DSA qui utilise la cryptographie à courbe elliptique. En tant qu'algorithme à clé publique, il peut être appliqué dans des situations similaires à RSA, bien qu'il soit moins couramment implémenté en raison de certains problèmes de sécurité.
Le chiffrement en action
Pour vous donner une idée du fonctionnement pratique du cryptage, nous utiliserons le chiffre de César comme exemple. Si nous voulions chiffrer un message de'Mangeons' avec un décalage de trois, le 'L'deviendrait un'Ô', le 'et'deviendrait un'h' et ainsi de suite. Cela nous donne un message crypté de :
Ohw'v hdw
Pour décrypter le message, le destinataire devrait savoir que l'algorithme de cryptage impliquait un décalage de trois, puis reculer chaque lettre de trois places. Si nous le voulions, nous pourrions varier le code en décalant chaque lettre d'un numéro différent. Nous pourrions même utiliser un algorithme beaucoup plus sophistiqué.
Un exemple est AES. Si nous utilisons un Calculateur en ligne AES 128 bits pour chiffrer 'Mangeons' avec une clé de '1234», cela nous donne :
FeiUVFnIpb9d0cbXP/Ybrw==
Ce texte chiffré ne peut être déchiffré qu’avec la clé de «1234». Si nous devions utiliser une clé plus complexe et la garder privée, nous pourrions alors considérer les données comme protégées des attaquants.
Qu’est-ce que le hachage ?
Les fonctions de hachage cryptographique constituent un type particulier de calcul unidirectionnel . Ils prennent une chaîne de données de n'importe quelle taille et donnent toujours une sortie d'une longueur prédéterminée. Cette sortie est appelée le hacher , valeur de hachage ou résumé du message . Puisque ces fonctions n’utilisent pas de clés, le résultat pour une entrée donnée est toujours le même.
Peu importe si votre contribution représente l'intégralité deGuerre et Paixou simplement deux lettres, le résultat d'une fonction de hachage sera toujours de la même longueur . Les fonctions de hachage ont plusieurs propriétés différentes qui les rendent utiles :
- Ce sont des fonctions à sens unique – Cela signifie qu’il n’existe aucun moyen pratique de déterminer quelle était l’entrée d’origine à partir d’une valeur de hachage donnée.
- Il est peu probable que deux entrées aient la même valeur de hachage – Bien qu’il soit possible que deux entrées différentes produisent la même valeur de hachage, les chances que cela se produise sont si faibles que nous ne nous en inquiétons pas vraiment. Pour des raisons pratiques, les valeurs de hachage peuvent être considérées comme uniques.
- La même entrée donne toujours le même résultat – Chaque fois que vous mettez les mêmes informations dans une fonction de hachage donnée, elle fournira toujours le même résultat.
- Le moindre changement donne un résultat complètement différent – Si même un seul caractère est modifié, la valeur de hachage sera très différente.
A quoi servent les hachages ?
Les fonctions de hachage peuvent avoir des propriétés intéressantes, mais que pouvons-nous réellement en faire ? Être capable de cracher une sortie unique de taille fixe pour une entrée de n'importe quelle longueur peut sembler n'être rien de plus qu'une astuce obscure, mais les fonctions de hachage ont en réalité un certain nombre d'utilisations.
Ils constituent un élément essentiel de signatures numériques , qui constituent un aspect important de la vérification de l’authenticité et de l’intégrité sur Internet. Codes d'authentification des messages de hachage (HMAC) utilisent également des fonctions de hachage pour obtenir des résultats similaires.
Les fonctions de hachage cryptographique peuvent également être utilisées comme fonctions de hachage normales. Dans ces scénarios, ils peuvent agir comme des sommes de contrôle pour vérifier l’intégrité des données, comme des algorithmes d’empreintes digitales qui éliminent les données en double ou pour créer des tables de hachage pour indexer les données.
Fonctions de hachage cryptographique courantes
- MD5 –Il s'agit d'une fonction de hachage publiée pour la première fois en 1991 par Ron Rivest. Il est désormais considéré comme non sécurisé et ne doit pas être utilisé à des fins cryptographiques. Malgré cela, il peut toujours être utilisé pour vérifier l’intégrité des données.
- SHA-1 – L'algorithme de hachage sécurisé 1 est utilisé depuis 1995, mais n'est plus considéré comme sécurisé depuis 2005, lorsqu'un certain nombre d'attaques par collision réussies ont eu lieu. Il est désormais recommandé d'implémenter SHA-2 ou SHA-3 à la place.
- SHA-2 – Il s’agit d’une famille de fonctions de hachage qui succèdent à SHA-1. Ces fonctions contiennent de nombreuses améliorations qui les rendent sécurisées dans une grande variété d'applications. Malgré cela, SHA-256 et SHA-512 sont vulnérables aux attaques par extension de longueur. Il existe donc certaines situations dans lesquelles il est préférable d'implémenter SHA-3.
- SHA-3 – SHA-3 est le plus récent membre de la famille des algorithmes de hachage sécurisé, mais il est construit de manière très différente de ses prédécesseurs. À ce stade, il n’a pas encore remplacé SHA-2, mais offre simplement aux cryptographes une autre option pouvant améliorer la sécurité dans certaines situations.
- RIPEMD – RIPEMD est une autre famille de fonctions développées par la communauté universitaire. Il est basé sur de nombreuses idées de MD4 (le prédécesseur de MD5) et n’est limité par aucun brevet. RIPEMD-160 est toujours considéré comme relativement sûr, mais son adoption n’est pas très répandue.
- Tourbillon – Whirlpool est une fonction de hachage de la famille des chiffres par blocs carrés. Il est basé sur une modification d’AES et n’est soumis à aucun brevet. Il est considéré comme sûr, mais légèrement plus lent que certaines de ses alternatives, ce qui a conduit à une adoption limitée.
Fonctions de hachage en action
Maintenant que vous comprenez ce que sont les fonctions de hachage, il est temps de les mettre en pratique. Si on met le même texte de «Mangeons» dans un Calculateur en ligne SHA-256 , cela nous donne :
5c79ab8b36c4c0f8566cee2c8e47135f2536d4f715a22c99fa099a04edbbb6f2
Si nous modifions ne serait-ce qu'un caractère par une seule position, cela change radicalement tout le hachage. Une faute de frappe du genre 'Met mange» donne un résultat complètement différent :
4be9316a71efc7c152f4856261efb3836d09f611726783bd1fef085bc81b1342
Contrairement au cryptage, nous ne pouvons pas faire passer cette valeur de hachage via la fonction à l'envers pour obtenir à nouveau notre entrée. Bien que ces fonctions de hachage ne puissent pas être utilisées de la même manière que le cryptage, leurs propriétés en font un élément précieux des signatures numériques et de nombreuses autres applications.
Fonctions de hachage et mots de passe
Les fonctions de hachage ont une autre utilisation courante dont nous n’avons pas encore parlé. Ils constituent également un élément clé de garder nos mots de passe en sécurité pendant le stockage .
Vous possédez probablement des dizaines de comptes en ligne dotés de mots de passe. Pour chacun de ces comptes, votre mot de passe doit être stocké quelque part. Comment votre connexion pourrait-elle être vérifiée si le site Web ne disposait pas de sa propre copie de votre mot de passe ?
Des entreprises comme Facebook ou Google stockent des milliards de mots de passe d'utilisateurs. Si ces sociétés conservaient les mots de passe sous forme de texte brut, tout attaquant susceptible de s'introduire dans la base de données de mots de passe pourrait accéder à tous les comptes qu'il trouve.
Cela constituerait un grave désastre en matière de sécurité, tant pour l’entreprise que pour ses utilisateurs. Si chaque mot de passe était exposé aux attaquants, alors tous leurs comptes et données utilisateur seraient en danger.
La meilleure façon d'éviter que cela se produise est pour ne pas stocker les mots de passe eux-mêmes, mais plutôt les valeurs de hachage des mots de passe . Comme nous l’avons vu dans la section précédente, les fonctions de hachage cryptographique fonctionnent dans un sens, produisant une sortie de taille fixe qu’il n’est pas possible d’inverser.
Si une organisation stocke le hachage d'un mot de passe au lieu du mot de passe lui-même, elle peut vérifier que les deux hachages correspondent lorsqu'un utilisateur se connecte. Les utilisateurs saisissent leurs mots de passe, qui sont ensuite hachés. Ce hachage est ensuite comparé au hachage du mot de passe stocké dans la base de données. Si les deux hachages correspondent, alors le mot de passe correct a été saisi et l'utilisateur a accès.
Cette configuration signifie que le mot de passe n'a jamais besoin d'être stocké . Si un attaquant pénètre dans la base de données, il ne trouvera que les hachages des mots de passe, plutôt que les mots de passe.
Même si le hachage des mots de passe pour le stockage n’empêche pas les attaquants d’utiliser les hachages pour comprendre les mots de passe, cela rend leur travail beaucoup plus difficile et plus long. Cela nous amène à notre dernier sujet, le salage.
Qu'est-ce que le salage ?
Le salage est essentiellement l'ajout de données aléatoires avant qu'elles ne soient soumises à une fonction de hachage , et ils sont le plus souvent utilisés avec des mots de passe.
La meilleure façon d’expliquer l’utilisation des sels est d’expliquer pourquoi nous en avons besoin en premier lieu. Vous auriez peut-être pensé que stocker les hachages de mots de passe aurait résolu tous nos problèmes, mais malheureusement, les choses sont un peu plus complexes que cela.
Mots de passe faibles
Beaucoup de gens ont de très mauvais mots de passe, peut-être que vous aussi. Le problème est que les humains ont tendance à penser selon des schémas prévisibles et à choisir des mots de passe faciles à retenir. Ces mots de passe sont vulnérables aux attaques par dictionnaire, qui parcourent chaque seconde des milliers ou des millions de combinaisons de mots de passe les plus courantes, dans le but de trouver le mot de passe correct pour un compte.
Si les hachages de mots de passe sont stockés à la place, les choses sont un peu différentes. Lorsqu'un attaquant tombe sur une base de données de hachages de mots de passe, il peut utiliser soit tables de hachage ou tables arc-en-ciel pour rechercher les hachages correspondants qu'ils peuvent utiliser pour découvrir les mots de passe.
Une table de hachage est une liste précalculée de hachages pour les mots de passe courants stockés dans une base de données. Ils nécessitent plus de travail à l'avance, mais une fois le tableau complété, il est beaucoup plus rapide de rechercher les hachages dans le tableau que de calculer le hachage pour chaque mot de passe possible. Un autre avantage est que ces tableaux peuvent être utilisés à plusieurs reprises.
Les tables arc-en-ciel sont similaires aux tables de hachage, sauf qu'elles occupent moins d'espace au prix de plus de puissance de calcul.
Ces deux méthodes d'attaque deviennent bien plus pratiques si des mots de passe faibles sont utilisés. . Si un utilisateur a un mot de passe commun, il est probable que le hachage du mot de passe se trouve dans la table de hachage ou la table arc-en-ciel. Si tel est le cas, ce n’est qu’une question de temps avant qu’un attaquant ait accès au mot de passe d’un utilisateur.
Les utilisateurs peuvent contribuer à déjouer ces attaques en choisissant des mots de passe plus longs et plus complexes, beaucoup moins susceptibles d'être stockés dans les tables. Dans la pratique, cela ne se produit pas autant qu’il le devrait, car les utilisateurs ont tendance à choisir des mots de passe faciles à retenir. En règle générale, les éléments faciles à retenir sont souvent faciles à trouver pour les attaquants.
Les sels offrent une autre façon de contourner ce problème. En ajoutant une chaîne aléatoire de données à un mot de passe avant qu’il ne soit haché, cela le rend essentiellement plus complexe, ce qui entrave les chances de réussite de ces attaques.
Comment fonctionne le salage en pratique
A titre d’exemple, disons que vous disposez d’un compte de messagerie et que votre mot de passe est «1234». Lorsque nous utilisons un Calculateur en ligne SHA-256 , nous obtenons ce qui suit comme valeur de hachage :
03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4
Ce hachage est ce qui serait stocké dans la base de données de votre compte. Lorsque vous entrez votre mot de passe «1234», il est haché puis la valeur est comparée à la valeur stockée. Puisque les deux valeurs sont identiques, l’accès vous sera accordé.
Si un attaquant pénètre dans la base de données, il aura accès à cette valeur, ainsi qu'à tous les autres hachages de mot de passe qui s'y trouvaient. L'attaquant prendrait alors cette valeur de hachage et la rechercherait dans sa table de hachage précalculée ou sa table arc-en-ciel. Depuis« 1234' est l'un des mots de passe les plus courants, ils trouveraient très rapidement le hachage correspondant.
La table de hachage leur dirait que :
03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4
Correspond à:
1234
L’attaquant saura alors que votre mot de passe est «1234». Ils peuvent ensuite utiliser ce mot de passe pour se connecter à votre compte.
Comme vous pouvez le constater, cela n’a pas représenté beaucoup de travail pour l’attaquant. Pour rendre les choses plus difficiles, nous ajoutons un sel de données aléatoires au mot de passe avant qu'il ne soit haché. Le salage contribue à réduire considérablement les chances que les tables de hachage et les tables arc-en-ciel renvoient un résultat positif.
Prenons un sel de 16 caractères de données aléatoires :
H82BV63KG9SBD93B
Nous l’ajoutons à notre simple mot de passe de «1234' ainsi:
1234H82BV63KG9SBD93B
Ce n'est que maintenant que nous l'avons salé que nous le soumettons à la même fonction de hachage ce que nous avons fait auparavant, ce qui renvoie :
91147f7666dc80ab5902bde8b426aecdb1cbebf8603a58d79182b750c10f1303
Bien sûr, cette valeur de hachage n’est ni plus longue ni plus complexe que la précédente, mais ce n’est pas le sujet. Bien qu'ils soient tous deux de la même longueur, '1234H82BV63KG9SBD93B' est un mot de passe beaucoup moins courant, il est donc beaucoup moins probable que son hachage soit stocké dans la table de hachage.
Moins un mot de passe est susceptible d'être stocké dans une table de hachage, moins une attaque a de chances de réussir. C’est ainsi que l’ajout de sels contribue à rendre les hachages de mots de passe plus sécurisés.
Pirater des bases de données entières
Lorsqu’un attaquant a accès à toute une base de données de hachages de mots de passe, il n’a pas besoin de tester chaque hachage par rapport à chaque entrée. Au lieu de cela, ils peuvent rechercher dans l’ensemble de la base de données des correspondances qui coïncident avec leur table de hachage. Si la base de données est suffisamment grande, un attaquant peut compromettre un grand nombre de comptes , même s'ils n'ont qu'un taux de réussite de cinq pour cent.
Si les mots de passe reçoivent des sels uniques avant d'être hachés, cela rend le processus beaucoup plus complexe. Si les sels sont suffisamment longs, les chances de succès deviennent beaucoup plus faibles, ce qui nécessiterait les tables de hachage et les tables arc-en-ciel doivent être d'une taille prohibitive afin de pouvoir trouver les hachages correspondants .
Un autre avantage des sels survient lorsque plusieurs utilisateurs de la même base de données ont le même mot de passe ou si un seul utilisateur a le même mot de passe pour plusieurs comptes. Si les hachages de mot de passe ne sont pas salés au préalable, les attaquants peuvent alors comparer les hachages et déterminer que tous les comptes ayant la même valeur de hachage partagent également le même mot de passe.
Cela permet aux pirates de cibler plus facilement les valeurs de hachage les plus courantes qui leur rapporteront les plus grandes récompenses. Si les mots de passe sont préalablement salés, les valeurs de hachage seront différentes même lorsque les mêmes mots de passe sont utilisés.
Faiblesses potentielles du sel
Le salage perd de son efficacité s'il est mal effectué. Les deux problèmes les plus courants surviennent lorsque les sels sont trop courts ou s'ils ne sont pas uniques pour chaque mot de passe . Les sels plus courts sont toujours vulnérables aux attaques de la table arc-en-ciel, car ils ne rendent pas le hachage résultant suffisamment rare.
Si les sels sont réutilisés pour chaque mot de passe haché et que le sel est découvert, il est beaucoup plus simple de déterminer chaque mot de passe dans la base de données. Utiliser le même sel signifie également que toute personne possédant le même mot de passe aura le même hachage.
Algorithmes de salage courants
Il n'est pas recommandé d'utiliser les fonctions de hachage normales pour stocker les mots de passe. Au lieu de cela, un certain nombre de fonctions ont été conçues avec des fonctionnalités spécifiques qui contribuent à renforcer la sécurité. Ceux-ci incluent Argon2, scrypt, bcrypt et PBKDF2.
Argon2
Argon2 a été le gagnant du concours 2015 Concours de hachage de mot de passe . C’est encore relativement nouveau en ce qui concerne les algorithmes, mais il est rapidement devenu l’une des fonctions les plus fiables pour le hachage de mots de passe.
Malgré sa jeunesse, il a jusqu'à présent tenu bon dans un certain nombre de documents de recherche qui ont sondé ses faiblesses. Argon2 est plus flexible que les autres algorithmes de hachage de mot de passe et peut être implémenté de différentes manières.
scénario
Prononcé «crypte», il s’agit du deuxième plus jeune algorithme de hachage de mot de passe couramment utilisé. Conçu en 2009, scrypt utilise une quantité de mémoire importante mais réglable dans ses calculs. Sa nature ajustable signifie qu'il peut toujours être résistant aux attaques même si la puissance de calcul augmente au fil du temps.
bcrypt
bcrypt a été développé en 1999 et est basé sur le chiffre Blowfish. C'était l'un des algorithmes les plus couramment utilisés pour le hachage de mots de passe pendant de nombreuses années, mais il est désormais plus vulnérable aux réseaux de portes programmables sur site (FPGA). C'est pourquoi Argon2 est souvent préféré dans les implémentations plus récentes.
PKFD2
Cette fonction de dérivation de clé a été développée pour remplacer le PBKDF1, qui avait une longueur de clé plus courte et moins sécurisée. Directives NIST de 2017 recommande toujours PKFD2 pour le hachage des mots de passe, mais Argon2 résout certains de ses problèmes de sécurité et peut constituer une meilleure option dans de nombreuses situations.
Chiffrement, hachage et salage : un récapitulatif
Maintenant que nous avons passé en revue les détails du cryptage, du hachage et du salage, il est temps de revenir rapidement sur les principales différences afin de les comprendre. Bien que chacun de ces processus soit lié, ils servent chacun un objectif différent.
Le cryptage est le processus de codage des informations pour les protéger . Lorsque les données sont cryptées, elles ne peuvent être déchiffrées et accessibles que par ceux qui disposent de la bonne clé. Les algorithmes de chiffrement sont réversibles, ce qui nous permet de protéger nos données des attaquants, tout en pouvant y accéder lorsque nous en avons besoin. Il est largement utilisé pour assurer notre sécurité en ligne, jouant un rôle crucial dans bon nombre de nos protocoles de sécurité qui assurent la sécurité de nos données lorsqu'elles sont stockées et en transit.
En revanche, le hachage est un processus à sens unique . Lorsque nous hachons quelque chose, nous ne voulons pas pouvoir lui redonner sa forme originale. Les fonctions de hachage cryptographique possèdent un certain nombre de propriétés uniques qui nous permettent de prouver l’authenticité et l’intégrité des données , par exemple via des signatures numériques et des codes d'authentification de message.
Des types spécifiques de fonctions de hachage cryptographique sont également utilisés pour stocker nos mots de passe. Le stockage du hachage d'un mot de passe au lieu du mot de passe lui-même offre une couche de sécurité supplémentaire. Cela signifie que si un attaquant parvient à accéder à une base de données, il ne peut pas accéder immédiatement aux mots de passe.
Même si le hachage de mot de passe rend la vie plus difficile aux pirates informatiques, il peut toujours être contourné. C'est là qu'intervient le salage. Le salage ajoute des données supplémentaires aux mots de passe avant qu'ils ne soient hachés , ce qui rend les attaques plus longues et plus gourmandes en ressources. Si les sels et les mots de passe sont utilisés correctement, ils rendent les tables de hachage et les tables arc-en-ciel peu pratiques comme moyens d'attaque.
Ensemble, le cryptage, le hachage et le salage sont tous des aspects importants pour assurer notre sécurité en ligne. Si ces processus n’étaient pas en place, les attaquants s’empareraient de vos comptes et de vos données, vous laissant sans sécurité sur Internet.
Technologie-1 par tec_estromberg sous CC0