Le hachage, ou hashing en anglais, est une méthode de chif­fre­ment qui trans­forme les en­re­gis­tre­ments et les ca­rac­tères de toute longueur en hachages fixes et compacts. Le hachage offre plus de sécurité que le chif­fre­ment, car les valeurs de hachage ne peuvent pas être re­con­ver­ties en valeurs d’origine sans clé. Le hachage est par­ti­cu­liè­re­ment important en ce qui concerne la gestion et la sécurité des bases de données, les données uti­li­sa­teur, la gestion des mots de passe ainsi que l’au­then­ti­fi­ca­tion des accès.

Qu’est-ce que le hachage ?

Le hachage est un outil de chif­fre­ment important pour trans­for­mer les données. Une fonction spéciale de hachage est utilisée, gé­né­ra­le­ment sous la forme d’un al­go­rithme. La tâche centrale du hachage peut être devinée à partir de la dé­fi­ni­tion française du mot « hacher » : les en­re­gis­tre­ments tels que les mots de passe, les données de l’en­tre­prise et de l’uti­li­sa­teur ou autres données sont dé­com­po­sés et trans­for­més en une nouvelle forme abrégée appelée valeur de hachage. Dans chaque méthode de hachage, les valeurs de hachage sont toujours de la même longueur et re­pré­sen­tent les en­re­gis­tre­ments d’origine. Comme les tables de hachage, les valeurs de hachage dans les bases de données peuvent être stockées sous forme compacte de manière sécurisée et économe en res­sources.

L’avantage du hachage : les valeurs de hachage ne peuvent pas être re­con­ver­ties au format d’origine sans clé. Même si elles tombent entre de mauvaises mains, les cy­ber­cri­mi­nels ne peuvent rien en faire. Il existe souvent une confusion entre le hachage et le chif­fre­ment. Cependant, comme les valeurs de hachage ne sont pas chiffrées, mais trans­for­mées en une chaîne en­tiè­re­ment nouvelle, elles ne peuvent pas être dé­chif­frées. Pour y parvenir, la personne aurait besoin de la clé ap­pro­priée, de l’al­go­rithme utilisé et des données d’origine associées aux valeurs de hachage.

Comment fonc­tionne le hachage ?

Le processus de hachage est composé de trois éléments :

  • Fonction de hachage : la fonction de hachage est gé­né­ra­le­ment un al­go­rithme de chif­fre­ment qui décompose, résout et trans­forme com­plè­te­ment des données de longueurs dif­fé­rentes en chaînes de longueurs égales. Ces valeurs de hachage sont beaucoup plus courtes et plus compactes que les valeurs d’origine.
  • Valeur de hachage : les valeurs de hachage sont le résultat de la fonction de hachage. Con­trai­re­ment aux valeurs d’origine, la méthode de hachage a toujours une longueur fixe de ca­rac­tères hexa­dé­ci­maux. La longueur fixe des valeurs de hachage dépend de la procédure cor­res­pon­dante.
  • Tables de hachage : les données hachées sont placées dans des bases de données sous forme de tables de hachage. Elles né­ces­si­tent beaucoup moins d’espace de données que le stockage des données d’origine. Pour ce faire, les en­re­gis­tre­ments de données sont hachés avec des valeurs d’index spé­ci­fiques qui indiquent l’em­pla­ce­ment de l’en­re­gis­tre­ment de données. Cela réduit con­si­dé­ra­ble­ment le temps de trai­te­ment et la puissance de calcul requis lors de la recherche d’in­for­ma­tions.

Le hachage repose sur cinq ca­rac­té­ris­tiques qui en ga­ran­tis­sent la sécurité et la fiabilité :

  • Le dé­ter­mi­nisme : la fonction de hachage doit toujours générer une valeur de hachage fixe de longueur courte pour de nom­breuses entrées de longueurs dif­fé­rentes.
  • L’il­li­si­bi­lité : le hachage trans­forme les valeurs d’origine en valeurs de hachage qui ne peuvent pas être lues. Il ne doit pas y avoir de moyen de décoder la valeur de hachage au sens classique et de générer le texte ou la chaîne d’origine à partir de celle-ci.
  • La sécurité en cas de collision : la même valeur de hachage ne peut pas être affectée à des entrées dif­fé­rentes. Si deux valeurs d’origine reçoivent la même valeur de hachage, il s’agit d’une collision. Les valeurs de hachage uniques réduisent les points d’attaque et aug­men­tent la sécurité. Toutefois, selon l’ap­pli­ca­tion, une collision peut également être souhaitée.
  • La con­ti­nuité ou non-con­ti­nuité : en général, les valeurs de hachage offrent une plus grande sécurité lorsqu’elles ne sont pas continues, c’est-à-dire lorsque dif­fé­rents en­re­gis­tre­ments d’origine reçoivent autant de valeurs de hachage que possible. Des hachages continus sont souhaités lorsque le hachage est utilisé pour gérer des en­re­gis­tre­ments et des entrées si­mi­laires.
  • La vitesse : le hachage offre non seulement plus de sécurité, mais également un accès plus rapide aux bases de données.

Domaines d’ap­pli­ca­tion du hachage

Les avantages et le mode de fonc­tion­ne­ment du hachage sont par­ti­cu­liè­re­ment évidents à la lumière de divers cas d’uti­li­sa­tion et domaines d’ap­pli­ca­tion. Les ap­pli­ca­tions typiques sont les suivantes :

  • Création de tables de hachage
  • Chif­fre­ment des données im­por­tantes
  • Recherche de doublons
  • Somme de contrôle et signature numérique
  • Recherche de données si­mi­laires
  • Système d’au­then­ti­fi­ca­tion
  • Mise en cache

Gestion des bases de données

Le hachage a l’avantage de pouvoir stocker de grandes quantités de données de façon plus compacte et plus efficace sous forme de tables de hachage. Pour ce faire, les chaînes sont combinées en tant que valeurs de hachage sous une position d’adresse dans la base de données en tant que table de hachage. Cela permet d’éco­no­mi­ser de la mémoire, d’augmenter la sécurité des bases de données et d’accélérer la recherche d’entrées spé­ci­fiques dans la table de hachage. Les hachages et les tables de hachages ra­tio­na­li­sent l’or­ga­ni­sa­tion et la gestion des in­fras­truc­tures d’index ainsi que de données.

Il­lus­tra­tion : les bases de données des clients con­tien­nent gé­né­ra­le­ment des in­for­ma­tions im­por­tantes telles que les noms, les coor­don­nées ou les adresses des clients. Si vous souhaitez re­cher­cher des in­for­ma­tions spé­ci­fiques dans une base de données, une recherche régulière prendra beaucoup de temps. La base de données entière doit être analysée pour iden­ti­fier les valeurs re­cher­chées. Cependant, le hachage peut créer des blocs de données avec une position d’adresse spé­ci­fique dans la base de données. Par con­sé­quent, l’or­di­na­teur passe im­mé­dia­te­ment à l’em­pla­ce­ment où une valeur de hachage associée dans une table de hachage peut être adressée.

Sig­na­tures nu­mé­riques et sommes de contrôle

Le hachage joue également un rôle important en tant que méthode d’au­then­ti­fi­ca­tion. Par exemple, il est utilisé pour générer des sig­na­tures nu­mé­riques, appelées em­preintes digitales nu­mé­riques. Cela permet de confirmer l’intégrité de la com­mu­ni­ca­tion entre l’ex­pé­di­teur et le des­ti­na­taire. Il est également possible d’associer des mots de passe à une valeur de hachage lors de la création d’un nouveau compte uti­li­sa­teur. Lors de la création de nouveaux comptes uti­li­sa­teur, une fonction de hachage génère une valeur de hachage pour le mot de passe sé­lec­tionné. Chaque fois que vous vous connectez, le mot de passe que vous entrez est comparé avec la valeur de hachage stockée. La ré­cu­pé­ra­tion du mot de passe génère également une nouvelle valeur de hachage pour le nouveau mot de passe.

Il­lus­tra­tion : les sig­na­tures nu­mé­riques peuvent être utilisées pour vérifier si les messages, les té­lé­char­ge­ments ou les sites Web sont sécurisés. Pour ce faire, les ex­pé­di­teurs génèrent des valeurs de hachage à partir de messages ou four­nis­sent une valeur de hachage lors du té­lé­char­ge­ment d’un programme. Les des­ti­na­taires génèrent à leur tour une valeur de hachage en utilisant la même fonction de hachage. Cette valeur cor­res­pond à la valeur de hachage fournie, gé­né­ra­le­ment chiffrée. Le meilleur exemple est le chif­fre­ment SSL/TLS sur le Web. Le serveur Web envoie un cer­ti­fi­cat de serveur au na­vi­ga­teur. Le hachage génère une clé de session à partir de laquelle le serveur peut recevoir, dé­chif­frer et ensuite accuser réception. Après l’au­then­ti­fi­ca­tion, le trafic HTTPS est autorisé. Le SFTP fonc­tionne de la même manière.

Mots de passe et autres données sensibles

Le hachage offre une sécurité con­si­dé­ra­ble­ment plus élevée pour le stockage des données sensibles, telles que les mots de passe ou les données de connexion et d’uti­li­sa­teurs. Celles-ci ne sont pas stockés dans la base de données sous leur forme originale ou sous forme « sim­ple­ment » chiffrée. Au lieu de cela, les ensembles de données sont dé­com­po­sés en valeurs de hachage qui sont inu­ti­li­sables, même en cas de vol de données, sans moyens ou clés ap­pro­priés. En effet, lorsque vous entrez un mot de passe, la valeur de hachage calculée pour le mot de passe est comparée à la valeur de hachage stockée. La mise en cache utilise parfois le hachage pour rendre il­li­sibles les données stockées tem­po­rai­re­ment, telles que les sites Web visités ou les données de connexion et de paiement pour les personnes non au­to­ri­sées.

Il­lus­tra­tion : le hachage peut également être utilisé pour sécuriser le stockage d’une vaste gamme de contenus tels que des fichiers texte ou audio et vidéo. De cette façon, les struc­tures binaires des fichiers sont trans­fé­rées dans des hachages compacts, qui peuvent être utilisés pour ré­fé­ren­cer le bloc de données associé. Étant donné que les valeurs de hachage sont liées à la position de la base de données, les données que vous re­cher­chez peuvent non seulement être trouvées plus ra­pi­de­ment, mais elles ne peuvent pas être lues sans la clé ap­pro­priée et ne peuvent pas être trans­fé­rés dans leur forme d’origine.

Quels sont les avantages du hachage ?

Aperçu des avantages du hachage :

  • Les données sensibles peuvent être stockées et gérées de manière sûre et compacte.
  • Les en­re­gis­tre­ments de données trans­fé­rés en valeurs de hachage ne peuvent pas être fa­ci­le­ment « dé­chif­frés » ou trans­fé­rés dans leur forme d’origine.
  • L’accès aux bases de données est plus rapide, car les valeurs de hachage sont associées à des positions dans la base de données.
  • Les données hachées volées de­vien­nent inutiles sans tech­no­lo­gies ou in­for­ma­tions ap­pro­priées sur la fonction de hachage.
  • L’échange sécurisé de données, de messages ou de logiciels peut être au­then­ti­fié ou signé de manière fiable par hachage.

Hachage et chaîne de blocs

Les fonctions de hachage cons­ti­tuent une partie centrale de la chaîne de blocs. Pour l’au­then­ti­fi­ca­tion de tran­sac­tions avec des cryp­to­mon­naies comme le Bitcoin, des hachages sont générés pendant le minage. Par exemple, le Bitcoin fonc­tionne avec l’al­go­rithme de hachage SHA-256, qui convertit les chaînes de n’importe quelle longueur en une chaîne fixe, c’est-à-dire des hachages de 64 ca­rac­tères. Ceux-ci au­then­ti­fient lé­gi­ti­me­ment et do­cu­men­tent les tran­sac­tions cryptos of­fi­cielles, les déposent dans la chaîne de blocs et assurent ainsi un niveau de sécurité élevé.

Dans la chaîne de blocs, le hachage remplit trois fonctions prin­ci­pales :

  • Minage : les per­for­mances d’ex­plo­ra­tion d’un réseau de cryp­to­mon­naie sont également appelées taux de hachage. Cela indique le nombre de mineurs actifs. Les mineurs créent des hachages en résolvant des problèmes ma­thé­ma­tiques. Si un hachage est valide, un bloc de tran­sac­tion est validé. Plus le taux de hachage est élevé, plus il est possible de créer des pièces ou des jetons. Par con­sé­quent, le minage de cryp­to­mon­naie est basé sur des al­go­rithmes de hachage liés aux tran­sac­tions.
  • Chaîne de blocs : les tran­sac­tions en­re­gis­trées et validées sont do­cu­men­tées sé­quen­tiel­le­ment sous forme de blocs. Elles sont ajoutées à la chaîne de blocs pendant le minage. Chaque bloc est lié au bloc précédent et contient la valeur de hachage de ce dernier. Cela empêche l’ajout d’un bloc invalide ou nuisible.
  • Gé­né­ra­tion de clés : le hachage est également utilisé pour trans­fé­rer de la cryp­to­mon­naie. L’au­then­ti­fi­ca­tion est effectuée à l’aide de clés publiques et privées par hachage.

À quel point le hachage est-il sûr ?

En principe, les experts en pro­tec­tion de données re­com­man­dent d’utiliser le hachage pour stocker les bases de données et les données sensibles de la manière la plus sécurisée possible. Le hachage est pré­fé­rable au chif­fre­ment tra­di­tion­nel, car les valeurs de hachage n’indiquent pas les en­re­gis­tre­ments d’origine et ne peuvent pas être « dé­chif­frées », même en cas d’attaques par force brute. Un nombre très élevé de ten­ta­tives est né­ces­saire avant de trouver une cor­res­pon­dance.

Cependant, il existe certaines personnes mal­veil­lantes qui font cor­res­pondre des listes de hachages volées avec des Rainbow Tables, également appelées tables arc-en-ciel. Il s’agit de listes avec des valeurs de hachage volées et des données d’accès qui leur sont at­tri­buées. Si une valeur de hachage de la base de données cor­res­pond à une valeur de hachage des tables arc-en-ciel et au mot de passe associé, une vul­né­ra­bi­lité de sécurité existe. Pour cette raison, des chan­ge­ments de mot de passe réguliers, des mises à jour fré­quentes et des al­go­rithmes de hachage nouveaux ou ac­tua­li­sés sont également re­com­man­dés pour le hachage. Par exemple, l’IETF (Internet En­gi­nee­ring Taskforce) a re­com­mandé les al­go­rithmes de hachage suivants en 2021 :

  • Argon2
  • Bcrpt
  • Scrypt
  • PBKDF2

Une autre façon de rendre le hachage encore plus sé­cu­ri­taire est d’utiliser une procédure de chif­fre­ment comme Salting et Pepper. Lors du « Salting », chaque mot de passe transmis dans des valeurs de hachage reçoit une chaîne sup­plé­men­taire générée de façon aléatoire. Le « Salting » d’une longueur re­com­man­dée de 16 ca­rac­tères rend les attaques par force brute presque im­pos­sibles et offre ainsi une sécurité encore plus fiable. Si un code à 32 ca­rac­tères nommé « Pepper » est ajouté pour tous les mots de passe, les hachages volés avec « Salting » sont presque im­pos­sibles à dé­chif­frer.

Aller au menu principal