Basics in Cryptography: What is a password hash?

Qu’est-ce qu’un mot de passe ?

Les mots de passe sont devenus un élément essentiel du monde de la technologie et de la vie quotidienne. Qu’il s’agisse de votre compte de courrier électronique ou des livres d’histoires pour enfants sur les trésors enfouis, la demande d’un mot de passe est devenue si banale que nous ne réfléchissons guère à ce qu’est un mot de passe, et encore moins à un hachage de mot de passe.

Le NIST définit techniquement les mots de passe comme “une chaîne de caractères (lettres, chiffres et autres symboles) utilisée pour authentifier une identité, vérifier une autorisation d’accès ou dériver des clés cryptographiques”. Nous savons tous parfaitement comment saisir un mot de passe pour accéder à nos sites web et comptes préférés, mais la pratique consistant à conserver ces informations d’identification en toute sécurité peut s’avérer un peu plus délicate.

En tant qu’utilisateurs, il est essentiel de ne jamais réutiliser les mots de passe, de toujours choisir des mots de passe forts et de veiller à les modifier de temps à autre. L’utilisation d’un gestionnaire de mots de passe est un moyen de créer et d’utiliser des mots de passe uniques et sûrs pour tous vos comptes. En intégrant un gestionnaire de mots de passe dans vos pratiques d’hygiène en matière de protection de la vie privée, vous êtes déjà plus en sécurité que le grand nombre d’internautes qui n’ont pas encore pris cette mesure essentielle.

Malheureusement, vous ne pouvez pas vous protéger à 100 %, car vos identifiants de connexion sont gérés par les services auxquels vous vous inscrivez. C’est là que les fuites de données entrent en jeu. Nous sommes devenus trop familiers avec les articles de presse disant quelque chose comme “la violation comprend des noms d’utilisateur, des dates de naissance, des adresses électroniques, des numéros de téléphone et des hachages de mots de passe”. Si la plupart de ces termes sont faciles à comprendre, le dernier peut être une source de confusion. Pour y voir plus clair, examinons comment les entreprises et les services en ligne traitent les données que vous fournissez lors de la création d’un nouveau compte.

Le problème du stockage sécurisé des mots de passe.

Imaginez que vous soyez un forum en ligne en pleine expansion et que de plus en plus de personnes se précipitent pour s’inscrire à votre service, vous devez trouver un moyen sûr de conserver les informations de connexion de vos utilisateurs en toute sécurité. Après tout, si quelqu’un vole leurs informations de connexion, vous aurez des utilisateurs mécontents.

Pour mieux comprendre, voyons ce qui se passe exactement lorsque vous essayez de vous connecter à votre site web préféré. Tout d’abord, vous vous rendez sur la page de connexion de votre navigateur et vous êtes invité à saisir un nom d’utilisateur/une adresse électronique et un mot de passe. Vous saisissez ces informations et cliquez sur “Connexion”. La suite est un peu plus compliquée.

Lorsque vous choisissez votre mot de passe, il n’est (espérons-le) pas stocké en clair par le service en question. Si les services stockaient vos mots de passe en clair, ils risqueraient d’exposer vos identifiants de connexion en cas de compromission du service. Au lieu de cela, le mot de passe que vous avez choisi doit être haché et le hachage doit être stocké dans une base de données sécurisée gérée par le service. Lorsque vous vous connectez à votre nouveau compte, l’adresse électronique que vous indiquez et le hachage de votre mot de passe sont comparés aux informations stockées dans la base de données. S’il y a concordance, vous avez accès au compte. Cependant, quelqu’un qui pirate le service n’obtiendra que des hachages avec lesquels il ne pourra rien faire et ne pourra pas se connecter à votre compte.

Chez Tuta, nous utilisons Argon2 pour dériver la clé qui déverrouille vos données cryptées (clé de mot de passe). Lorsque nous sommes passés de bycrypt à argon2, nous avons également augmenté la longueur des clés générées à 256 bits, ce qui les rend également sécurisées au niveau post-quantique. La clé du mot de passe n’est pas utilisée pour vous authentifier auprès du serveur Tuta, mais nous la hachons en utilisant SHA256 pour devenir le vérificateur du mot de passe, qui est transmis au serveur et haché à nouveau avant d’être stocké dans la base de données. Pour plus de détails sur la façon dont le mot de passe est sécurisé dans Tuta, cliquez ici.

A visualization of how we handle passwords and encryption keys.

Qu’est-ce qui rend le stockage d’un hachage plus sûr que le stockage d’un mot de passe en clair ? La réponse est simple : une protection supplémentaire en cas d’infraction.

Qu’est-ce que le hachage de mot de passe ?

Le hachage de mot de passe consiste à prendre un mot de passe créé par l’utilisateur et à le soumettre à un algorithme de hachage pour brouiller les bits et créer une représentation unique du mot de passe choisi. Si vous ne connaissez pas le mot de passe, il ne sera idéalement pas possible de reproduire exactement le même hachage.

Il existe de nombreux types d’algorithmes de hachage, mais ils remplissent tous une fonction similaire. Ils prennent un mot de passe en clair qui est considéré comme une chaîne de données de longueur arbitraire (pensez aux différentes longueurs de vos mots de passe). Cette chaîne est ensuite convertie en bits de données qui sont brouillés de manière déterministe (ce qui signifie que le même mot de passe donnera toujours le même hachage) selon la fonction de hachage utilisée. Ce hachage est ensuite stocké dans une base de données sécurisée.

Il est important de rappeler que le hachage n’est pas la même chose que le cryptage. Il n’existe pas de clé permettant de décrypter un hachage. Le hachage est une voie à sens unique qui permet uniquement de passer d’un texte en clair à un hachage. Pour les amateurs de cuisine, prenons l’exemple de la pomme de terre. La pomme de terre épluchée est notre texte en clair, une fois que nous l’avons hachée et transformée en une délicieuse assiette de pommes de terre rissolées, c’est notre hachage. Tout comme on ne peut pas retransformer les pommes de terre en pommes de terre originales, on ne peut pas retransformer un hachage en mot de passe original.

Hashing functions are a one-way street

Une fonction de hachage est une voie à sens unique. Contrairement au cryptage, aucune clé n’est générée pour ramener un hachage au texte clair d’origine.

Lorsque quelqu’un parle de craquer des mots de passe, il ne s’agit pas de “décrypter” quoi que ce soit, mais plutôt de créer sa propre liste de hachages sur la base de mots de passe couramment utilisés, puis de comparer ses résultats connus aux informations divulguées dans le cadre de violations de données. Il s’agit alors d’une question de recoupement qui ne nécessite pas de connaissances approfondies en cryptanalyse, mais seulement une logique de base.

Qu’est-ce qu’un hachage de mot de passe salé ?

Nous avons parlé précédemment du salage des hachages. Le salage est un processus par lequel des données aléatoires sont ajoutées à une entrée avant qu’elle ne soit traitée par un algorithme de hachage. Comme le sel est unique pour chaque mot de passe, il protège contre les attaques visant à utiliser des hachages précalculés car, même si les valeurs de sel étaient incluses dans une violation de données, l’attaquant devrait précalculer les valeurs pour chaque sel individuel, ce qui rendrait l’attaque beaucoup plus coûteuse. En outre, si les mots de passe ne sont pas salés, si vous et moi utilisons le même mot de passe, les hachages apparaîtront identiques dans la base de données en raison de la nature déterministe des algorithmes de hachage des mots de passe. En les salant, nous obtenons des résultats finaux différents, ce qui empêche les pirates de repérer rapidement les comptes dont les mots de passe sont identiques.

An example of the difference between hashed passwords with and without salting.

Le salage n’améliore pas seulement le goût des aliments, il renforce également le hachage des mots de passe !

Les sels cryptographiques peuvent être dérivés d’éléments tels que le nom d’utilisateur ou d’autres identifiants uniques propres à chaque compte. L’élément d’unicité est essentiel ici, car il rend l’utilisation d’attaques par table précalculée beaucoup plus gourmande en ressources qu’il ne serait raisonnable.

Problèmes et types d’attaques

Le hachage n’est évidemment pas parfait, mais il existe un certain nombre d’attaques connues qui sont prises en considération lorsque ces fonctions sont créées par les cryptographes.

Attaques par anniversaire

Tous les algorithmes de hachage de mots de passe sont vulnérables à une attaque connue sous le nom d’attaque par anniversaire. Ces attaques tirent parti d’un problème mathématique de probabilité connu sous le nom de “problème de l’anniversaire”. Une description plus précise des mathématiques qui sous-tendent ce problème est disponible ici. Heureusement, ces attaques ne sont pas considérées comme plus rapides qu’une attaque par force brute.

Attaques par collision

Une attaque par collision se produit lorsque deux mots de passe différents (chaînes en clair) sont exécutés par un algorithme de hachage et retournent un hachage correspondant. Cette situation est problématique car elle signifie qu’un mot de passe incorrect, combiné au nom d’utilisateur correct, peut permettre une connexion réussie.

Si l’on découvre qu’une attaque par collision est plus rapide et plus efficace qu’une attaque par anniversaire, la fonction de hachage du mot de passe peut être considérée comme cassée et doit être remplacée par un algorithme plus résistant.

Attaques par force brute

Les attaques par force constituent une vulnérabilité potentielle pour chaque système cryptographique. Avec un temps et une puissance de calcul infinis, un hachage peut être découvert. C’est pourquoi elles sont considérées comme un test décisif pour la gravité des autres vulnérabilités. S’il s’avère qu’une attaque est plus rapide qu’une attaque par force brute, l’algorithme en question doit être soit corrigé, soit abandonné.

Fonctions de hachage populaires

Un certain nombre d’algorithmes de hachage de mots de passe ont été développés et chacun d’entre eux présente des forces et des faiblesses qui lui sont propres. Malheureusement, un certain nombre des algorithmes de hachage les plus populaires se sont révélés vulnérables, mais ils sont encore régulièrement utilisés (comme l’explique cette vidéo YouTube) et on les retrouve souvent dans les ensembles de données relatives aux violations.

  1. MD5 : Considérée comme un algorithme obsolète depuis longtemps, cette fonction de hachage est encore régulièrement présente lorsque de nouveaux ensembles de données concernant des violations sont rendus publics. MD5 a été développé par Ronald Rivest, professeur au MIT, en 1991 pour remplacer MD4. Il produit un hachage de 128 bits, mais s’est rapidement révélé sensible aux attaques par collision. En 2013, des chercheurs ont pu prouver que l’algorithme n’était plus sûr et qu’il devait être remplacé. Malheureusement, les hachages MD5 continuent de faire surface dans les violations de données, ce qui signifie que vos données peuvent être exposées sans que vous en soyez responsable.
  2. SHA : La famille de fonctions de hachage Secure Hash Algorithms a été recommandée pour remplacer MD5. SHA-1 a été introduit en 1995 après avoir été développé par la NSA et génère des hachages de 160 bits. En 2005, l’algorithme a été considéré comme peu sûr contre les acteurs de menaces avancées, ce qui représentait une menace particulière dans les cas où il était utilisé pour créer des signatures numériques afin de vérifier l’authenticité. SHA-2 a été publié avant cela en 2001 et a officiellement remplacé son prédécesseur en 2011 lorsque le NIST a introduit de nouvelles exigences minimales de sécurité. Malheureusement, leur déploiement a été ralenti par un manque de rétrocompatibilité. Plus récemment, SHA-3 a été publié en 2015 avec une structure entièrement différente des itérations précédentes qui étaient similaires à MD5. SHA-2 et -3 prennent tous deux en charge les mêmes longueurs de hachage de 256 à 512 bits en fonction des paramètres choisis.
  3. bcrypt : Introduit en 1999, bcrypt est un algorithme de hachage de mots de passe qui a introduit le salage par défaut et qui est adaptatif. Cela signifie qu’au fil du temps, il peut continuer à résister aux attaques par force brute. Bcrypt s’appuie sur le chiffrement Blowfish, développé par Bruce Schneier.
  4. Argon2 : Argon2 a remporté le concours Password Hashing Competition 2015. Il est non seulement résistant aux canaux latéraux, mais aussi à la mémoire, ce qui le rend plus résistant aux attaques par force brute que bcrypt.

Chez Tuta, nous sommes à la pointe de la sécurité et de la protection de la vie privée. Notre passage à Argon2 a fait de nous le premier fournisseur de courrier électronique à utiliser la forme la plus puissante de dérivation de clé actuellement disponible. En plaçant la cryptographie et la sécurité au premier plan, nous construisons une vie privée en laquelle vous pouvez avoir confiance. Grâce à notre architecture “zéro connaissance”, nous n’avons pas accès aux clés nécessaires au décryptage ou à la visualisation des données. Votre vie privée est au creux de votre main.

Reprenez le contrôle de vos données dès aujourd’hui en adoptant Tuta et en activant la protection de la vie privée.