C’est quoi le hachage ? 41

hachage

C’est quoi le hachage ? (hash)

ou

c’est quoi les fonctions de hachage ?

Au programme : C’est quoi et à quoi ça sert le hachage ? Comment ça marche le hachage ? Quelques fonctions de hachage très connues et surtout très utilisées.

hachage

« Matrix Tech Shows Digitally Abstract And Data” by Stuart Miles

 

Introduction

On retrouve les fonctions de hachage dans de nombreuses applications et vous les utilisez tous les jours sans forcément le savoir. Je vais introduire ces notions de hachage par un exemple concret d’utilisation. Et nous verrons ensuite quelques exemples d’applications où le hachage est utilisé. 

Allons-y :

Peut-être vous êtes-vous posé la question :  mais comment sont stockés mes mots de passe ?
Et, est-ce que quelqu’un peut lire mon mot de passe ?

Dans la plupart des cas, les mots de passe sont enregistrés mais personne ne peut les lire. Et en lisant, la phrase qui précède vous vous dites « Mais si les mots de passe sont illisibles, alors comment fait l’ordinateur pour savoir si j’ai saisi le bon mot de passe ? ». Eh bien, c’est ce que je propose que nous regardions ensemble.

Le mauvais exemple :

J’ai bien commencé le paragraphe du dessus par « Dans la plupart des cas … » car ce n’est pas toujours le cas. Oui, parfois, les mots de passe sont enregistrés en clair et sont facilement lisibles par toute personne qui accède au fichier contenant les mots de passe : heureusement c’est de moins en moins le cas ! ( D’ailleurs sur certains sites ou dans certaines entreprises, si vous oubliez votre mot de passe, on peut vous le donner : ce n’est pas très chouette car ça prouve qu’on peut le lire ! )

Et si on représente ça par un schéma, voila ce que cela donne : 

hachage

Les mots de passe des utilisateurs circulent et sont stockés en clair, il est facile d’accéder au fichier pour lire les mots de passe : c’est très mauvais pour la sécurité.

Je ne ferai aucun commentaire sur le mot de passe que j’ai mis dans ce schéma, mais « cind123 » comme mot de passe : c’est pire que mauvais, jetez un œil à « Comment bien choisir ses mots de passe »

 

Utilisation d’une fonction de hachage

Et si nous utilisions une fonction de hachage ?
Cette fonction va prendre le texte du mot de passe et le « mouliner » pour obtenir une signature (cette signature est aussi appelée « empreinte »).

L’ordinateur ne va pas envoyer le mot de passe au serveur, mais une signature du mot de passe. Le serveur ne va enregistrer le mot de passe mais enregistrera cette signature. Lorsque l’utilisateur se connectera, le serveur ne va pas vérifier si le mot de passe est identique, mais il va vérifier que la signature du mot de passe saisi est bien la même que la signature du mot de passe enregistré. Voyons ce que cela donne avec le même schéma qu’au dessus mais avec utilisation d’une fonction de hachage : 

hachage

Attention, dans le schéma ci-dessus, j’ai volontairement limité la longueur de la signature, en réalité la signature est plus longue. (Il y manque aussi la notion de sel, mais là c’est une autre histoire)

 

Définition des fonctions de hachage.

Voici la définition d’une fonction de hachage telle que je pourrais la résumer : Une fonction de hachage est une fonction qui va calculer une empreinte (ou signature) unique à partir des données fournies. 

Une fonction de hachage doit respecter les règles et propriétés suivantes :

Propriétés des fonctions de hachage :

  1. La longueur de la signature doit être toujours la même (quelque soit la longueur des données en entrée. Nous verrons plus loin quelles sont les longueurs des empreintes suivants les fonctions de hachage.)
  2. Il n’est pas possible de trouver les données originales à partir des empreintes : Les fonctions de hachage ne fonctionnent que dans un seul sens.
  3. Il ne doit pas être possible de prédire une signature. (Il n’est pas possible d’essayer d’imaginer ce que pourrait être la signature en examinant les données)
  4. Et enfin, évidemment pour des données différentes : les signatures doivent être différentes. 

Signature, empreinte ?

Depuis le début, je parle à la fois de signature ou d’empreinte. Vous trouverez même parfois le terme de « condensé » (voire même hashcode). Tous ces termes ont le même sens, vous pouvez utiliser l’un ou l’autre sans problème.

Quelques exemples

Voici quelques exemples de données et leurs signatures. Vous pouvez constater le respect des propriétés énoncées au-dessus :
(les signatures ont été générées avec la fonction MD5, nous verrons MD5 plus loin)

Données en entrée Signature
123 202cb962ac59075b964b07152d234b70
124 c8ffe9a587b126f152ed3d89a146b445
1234 81dc9bdb52d04dc20036dbd8313ed055
123456789012345678901234567890 a46857f0ecc21f0a06ea434b94d9cf1d
abcde ab56b4d92b40713acc5af89985d4b786
abcdef e80b5017098950fc58aad83c8c14978e

A quoi ça sert le hachage ?

Ce qui est intéressant dans le hachage, ce n’est pas les données elles-mêmes mais leurs signatures. Puisque chaque donnée à sa propre signature, on peut se dire que si les signatures sont identiques alors les données sont identiques.
Et à l’inverse, si les signatures sont différentes alors les données sont forcément différentes.

Donc le hachage est utilisé pour comparer les données (en comparant les signatures).

Quelques utilisations concrètes des fonctions de hachage.

La liste ci-dessous est loin d’être exhaustive, car il existe bien d’autres utilisations des fonctions de hachage, mais ceux-ci sont faciles à comprendre :

  • Comparaison des mots de passe. Nous l’avons vu sur le schéma du dessus. Attention : Ce schéma n’est pas complet, car idéalement, lors l’enregistrement des mots de passes doit utiliser en plus une chaîne complémentaire appelée « sel » : mais ce n’est pas l’objet de cet article.
  • Vérification des données téléchargées.
    Par exemple, dans certains cas, lorsque vous téléchargez un fichier sur Internet la signature du fichier original est disponible (soit dans un fichier à part, soit directement affichée sur le site). Pour être sûr que le fichier a été correctement téléchargé, il vous suffit de vérifier que la signature du fichier téléchargé est bien identique à celle fournie . (Je pense que je vais faire vite un petit article pour montrer comment faire et je mettrai le lien ici).
  • La signature électronique (ou signature numérique) des documents. Les documents envoyés sont passés dans une fonction de hachage, et l’empreinte est envoyée chiffrée (avec le mécanisme de clés asymétriques) en même temps que les documents. Il suffit au destinataire de déchiffrer l’empreinte reçue et vérifier que celle-ci correspond bien au calcul de l’empreinte des données reçues. 
  • Pour l’utilisation de tables de hachage, utilisées en développement des logiciels. 
  • Pour le stockage des données : si la signature d’un fichier est présente, alors on peut dire que le fichier est présent : il n’est pas nécessaire de l’enregistrer à nouveau. Cela peut être intéressant car si le fichier est très gros, il faudra beaucoup moins de temps pour calculer sa signature que de l’enregistrer à nouveau.

 

 

C’est quoi les collisions ?

Oui, à la lecture des définitions du dessus, une question ou remarque doit vous forcément vous venir à l’esprit : Que se passe-t-il lorsque des données produisent la même empreinte ?

C’est ce qu’on appelle une collision. Dans la plupart des cas, ce n’est pas bien grave car il ne s’agit que de contrôles : on contrôle que l’empreinte des données reçues est la même que l’empreinte des données envoyées.

Cela peut être un peu plus gênant, pour les mots de passe car deux mots de passe différents produisant la même empreinte permettront de s’identifier ! (c’est une des raisons pour laquelle on ajoute du « sel » au mot de passe, mais ce n’est pas la seule raison).

C’est carrément très gênant pour les tables de hachage ou pour les stockages de données. C’est pourquoi, il est conseillé d’utiliser des fonctions de hachage avec de faibles taux de collisions. 

 

Quelques fonctions de hachage célèbres

Quelques fonctions célèbres et quelques sites qui permettent de calculer avec ces fonctions.

MD5

Vous en avez forcément entendu parlé. Cette fonction de hachage est toujours très utilisée bien qu’au niveau de la sécurité, il est recommandé de passer à des versions plus robustes car des suites de collisions ont été trouvées.

Cette fonction renvoie une empreinte de 128 bits.

SHA1

Était la fonction remplaçante de MD5 car elle produisait des empreintes 160 bits et avec impossibilité de trouver des collisions … jusqu’en 2004-2005, date à laquelle des attaques ont prouvé des possibilités de générer des collisions. Depuis, cette date il n’est plus conseillé d’utiliser la fonction SHA1. Mais, elle est encore très utilisée.

Les certificats numériques utilisant SHA1 ne sont plus plus valides au 31 décembre 2016.

SHA2 …

SHA256 et SHA512 sont 2 des grands standards utilisés actuellement, car il n’y a pas à ce jour d’attaques ayant trouvé des failles de sécurité sur ces fonctions de hachage. Elles produisent comme vous pouvez vous en douter des signatures de respectivement 256 et 512 bits.

 

Et enfin, comme promis voici quelques sites permettant de générer des signatures numériques avec des données ou des fichiers, et en utilisant différentes fonctions de hachage :

Pour crypter du texte :

http://www.cryptage-md5.com/

Pour crypter du texte ou des fichiers (en anglais) :

http://onlinemd5.com/

 

Comme d’habitude, j’ai essayé de faire simple, mais c’est un sujet un peu complexe, alors si quelque chose n’était pas clair, n’hésitez pas à laisser un commentaire.
Et plus généralement, tous les commentaires sont toujours les bienvenus.

N’hésitez pas à vous inscrire à la lettre d’information pour être informé de la parution de nouveaux articles. (vous trouverez la zone d’inscription à la lettre d’information sur la droite de l’écran).

 

Partager cet article ...

41 thoughts on “C’est quoi le hachage ?

  1. Répondre Caroline Mai 11,2016 6 h 22 min

    Bonjour,
    le hachage c’est pareil que le cryptage, non ?

    • Répondre Administrateur du site Mai 12,2016 7 h 26 min

      Bonjour Caroline,
      non, cryptage et hachage, c’est différent.
      Le but du cryptage (chiffrement) est de coder les données pour les rendre illisibles. Mais c’est aussi de permettre à quelqu’un possédant la clé et la méthode de déchiffrement de pouvoir lire les données.
      Dans le hachage, il ne faut pas pouvoir lire les données. L’objectif est d’obtenir une empreinte de ces données qui identifient les données (un peu comme une carte d’identité infalsifiable).
      A bientôt

  2. Répondre Caroline Mai 12,2016 18 h 39 min

    Merci pour cette précision.

  3. Répondre Pierre-Albert Mai 12,2016 19 h 15 min

    Bonjour, Excellentes informations mais quelques défauts de saisie :

    – Ajouter un s à ET dans la phrase « contrôles : on contrôle que l’empreinte des données reçues eSt la même que l’empreinte des données envoyées. »

    – Il manque 2 mots : « L’ordinateur ne VA pas envoyer le mot de passe au serveur, mais une signature du mot de passe. Le serveur ne va PAS enregistrer le mot de passe »

  4. Répondre nounas Mai 14,2016 12 h 57 min

    simple et clair, merci

  5. Répondre blaise Mai 19,2016 13 h 36 min

    bonne idée pour cette information

  6. Répondre Bernard CANDAU Juin 6,2016 9 h 14 min

    Je crois avoir trouvé un loup dans le paragraphe « A quoi sert le hachage »: …le hachage est utilisé pour comparer les données et non les signatures
    Merci pour votre énorme travail

  7. Répondre Emma Juin 15,2016 10 h 49 min

    merci pour ce site super génial ça m’aide beaucoup. j’aimerais devenir informaticienne mais en fait j’y connais rien alors merci

  8. Répondre Laurent06 Sep 4,2016 17 h 28 min

    Bonjour,
    J’ai un peut compris le système mêm si ça reste un peu ambigu.
    Merci de me dire si ce système utilisé est bien similaire à la pose d’un mouchard téléphone côté traçabilité. Je vous renvoi vers ce topic pour me comprendre (excusez moi mais je ne saurais le résumer, je suis limité en informatique). Merci

    • Répondre Administrateur du site Sep 7,2016 8 h 54 min

      Bonjour Laurent,
      non ce n’est pas la même chose. Le hachage sert à déterminer une empreinte unique de quelque chose.
      A bientôt

  9. Répondre Romain Sep 28,2016 20 h 28 min

    Ma question est : si on arrive a recuperer la signature du mot de passe de cindy ainsi que son identifiant on arrivera a se connecter avec ses identifiants. Du coup je ne vois pas l’intérêt de hacher son mot de passe

    Merci d’avance

    • Répondre Administrateur du site Sep 29,2016 4 h 27 min

      Bonjour Romain,
      eh bien non.
      Car si dans la zone du mot de passe on saisit la signature du mot de passe, celui-ci va être haché comme tout ce qui est saisi dans cette zone et le résultat du hachage ne sera pas le même donc le mot de passe ne sera pas bon.
      A bientôt

  10. Répondre maxime Oct 9,2016 15 h 41 min

    bonjour, je fais suite à la question de romain. Si il existe une fonction permettant de hacher un mot de passe en signature, inversement, avec une signature, n existe il pas une fonction permettant de récupérer le mot de passe?
    cordialement,

    • Répondre Administrateur du site Oct 10,2016 6 h 31 min

      Bonjour Maxime,
      non il n’est pas possible de récupérer le mot de passe de passe en partant de la signature (ou alors il faut essayer un plein de mots de passe en espérant trouver le mot de passe qui corresponde à la signature fournie).
      C’est justement le principe du hachage : ce n’est pas réversible. Relis l’article, tu verras c’est expliqué.
      A bientôt

  11. Répondre Alex Nov 25,2016 3 h 30 min

    Bonjour,
    Merci beaucoup pour cette article et aussi pour le site, il m’ets tres utile!

    Concernant le hashage il y quelque chose que je ne comprends pas tres bien.
    Pour reprendre votre exemple, si avec la fonction MD5 la saisie « 123 » a pour signature « 202cb962ac59075b964b07152d234b70 » cela veut-il dire qu’avec MD5 cette saisie aura toujours cette signature?? Si ce n’est pas le cas comment mon MDP pourrait-il toujours avoir la meme signature ?

    Et aussi comment est « calcule » cette empreinte ?

  12. Répondre MacDenjoy Fév 1,2017 6 h 05 min

    Merci pour cette info pedagogique
    question : comment récuperer un mot de passe dont on se souvient du hashage et non le mot de passe lui-même?

  13. Répondre Chris Fév 11,2017 11 h 22 min

    Perso,j’ai toujours trouvé trouvé le hashage un peu inutile pour les mots de passe,car il est vrai que celà est peut-être nécessaire pour protéger l’utilisateur contre des attaques man in the middle ou l’usurpant peut réussir à récupérer un mot de passe haché,mais qui ne lui servira à rien,car s’il veut l’utiliser pour se loger,celui-ci sera à son tour haché et donc avoir une signature différente de celle se trouvant dans le serveur d’autant plus que le hashage se fait bien avant l’émission.Mais,une fois le mot de passe haché dans la base des données,bien que haché,d’autres informations relatives à l’utilisateur sont en claire dans la base,et donc visible et au niveau de l’hébergeur de la base.Si admettons c’est un social network,ses messages sont stockés en claire,etc..donc ceux qui gèrent la base des données et qui ont un accès plénipotentiaire à la base savent presque tout voir,et dans tout ça où se trouve la sécurité?Je penses perso que c’est beaucoup plus intéressant quand il s’agit de vérifier la non altération des données,etc..mais pour les mot de passe il n’y pas de garantie vu qu’il n’y a pas que le mot de passe qui peut être stocké comme Info sur le user.

  14. Répondre Philippe Butel Nov 12,2017 9 h 22 min

    Bonjour,
    Je fais suite à la remarque de Romain (28/09/2016). et je suis d’accord avec la réponse. Sauf qu’un vilain hacker pourra donc récupérer le login et le mot de passe haché et ensuite se connecter sans passer par le moteur de hash, directement en sortie?
    Merci pour ces articles très intéressant

  15. Répondre G.C Déc 7,2017 15 h 55 min

    Bonjour
    si le mot de passe est hacher alors qu est ce qui ce passe quand on demande une réinitialisation de mots de passe sur un site quelconque?

    sinom merci pour cette article de qualité

  16. Répondre loupi Jan 8,2018 14 h 15 min

    Merci beaucoup pour toutes ces explications,elles sont trop claires.

  17. Répondre Yannis Jan 9,2018 12 h 37 min

    Bonjour, un site a recopié une parti de votre article mot pour mot, voici le lien: https://www.supinfo.com/articles/single/3481-c-est-quoi-hachage

    • Répondre admin Jan 10,2018 6 h 31 min

      Merci Yannis,
      ce n’est pas la 1ere fois que je retrouve mes articles copiés (sans accord de ma part) et c’est toujours énervant.
      C’est une violation des règles de Copyright et je viens de prévenir le site qu’il fallait qu’ils les retirent.
      Merci

  18. Répondre Batiste Fév 8,2018 12 h 16 min

    Je viens de découvrir votre site après avoir lu deux ou trois autres articles sur le hachage. On voit tout de suite la différence. Comment expliquer un truc de la manière la plus basique pour se faire comprendre par la grande masse. À lire d’autres contenus, on dirait que les auteurs écrivent pour être lus par d’autres spécialistes. J’ajoute votre site à mes favoris. Et continuez votre formidable travail !

  19. Répondre Fanny Fév 21,2018 22 h 58 min

    Bonsoir,
    Tout d’abord merci et bravo pour ces articles ultra-pédagogiques, j’adore.
    Concernant le hashage, j’ai le même blocage que Philippe que je cite : « Sauf qu’un vilain hacker pourra donc récupérer le login et le mot de passe haché et ensuite se connecter sans passer par le moteur de hash, directement en sortie?
    D’avance merci beaucoup

    • Répondre admin Fév 24,2018 8 h 06 min

      Bonjour Fanny,
      non ce n’est pas possible puisque l’on saisit le mot de passe. Il est en ensuite hashé et c’est cette partie qui est contrôlée. Ce n’est pas la même chose que si l’on saisit le hash (qui lui même serait hashé et qui donnerait un autre résultat.
      J’espère avoir été un peu plus clair.
      A bientôt

      • Répondre Fanny Fév 28,2018 22 h 51 min

        Bonsoir,
        Merci beaucoup pour votre réponse.
        J’ai enfin compris ! En fait, j’imaginais le cas suivant : le pirate s’empare sur le réseau de l’identifiant et du mot de passe hashé, puis il les envoie au serveur mais sans passer par l’interface utilisateur (saisie mot de passe).
        Désolée. C’est parfaitement clair maintenant.
        Merci beaucoup.

  20. Répondre djidji Fév 24,2018 18 h 59 min

    bonsoir
    pourriez vous m’expliquer les propriétés d’une fonction de hachage?
    a savoir:la compression,résistance aux collisions,résistance a la pré-image,facilité de calcule.
    merci d’avance

  21. Répondre Olivier Mai 7,2018 13 h 23 min

    Un article de référence pour comprendre le hashage, cela est la base pour le minage de crypto-monnaies, je m’en suis inspiré pour un article sur le sujet.

    Mon site

    Olivier

  22. Répondre RIMI Août 8,2018 6 h 52 min

    Bonjour,

    J’aimerais savoir comment sera le raisonnement pour des données mobiles « SMS »
    Comment créer l’empreinte »?

    Merci

  23. Répondre Phi Août 10,2018 14 h 48 min

    Einstein aurait dit que, si on ne sait pas
    expliquer qqc de compliqué à un enfant de 6 ans,
    on n’a pas compris ce qu’on explique.
    Avec vos articles, j’ai toujours au moins 6 ans.
    Cordialement

Laisser un commentaire

  

  

  

banner