Les fonctions de hachage (somme de contrôle)
Principe Applications Fiabilité ?PRINCIPE
Une fonction de hachage est un assemblage d' opérations élémentaires (somme, multiplications, opérateurs booléens - ET, OU, XOR...) qui permet d'associer à un message ( input ) une chaîne unique de caractères hexadécimaux , son empreinte (ou somme de contrôle ou hash ). Par exemple, la fonction MD5 utilise 4 groupes de 16 itérations chacun pour produire le hash d'un input .
APPLICATIONS PRATIQUES
Schéma d'une itération de MD5 (Photo : Creative Commons - Surachit sur Wikimedia Commons)
Haut de pageFIABILITE ET COLLISIONS
L'enjeu, pour toute fonction de hachage, est de produire pour chaque message d'origine, une empreinte différente. On appelle collision deux inputs qui produisent un même hash . Bien qu'il ne soit pas envisageable de casser des fonctions de hachage par force brute (dans le cas de SHA1 cela nécessiterait 2 puissance 64 tests par exemple, soit plusieurs semaines de calcul sur un ordinateur domestique), plusieurs algorithmes ont déjà été cassés par cryptanalyse. Des collisions ont en effet été découvertes dans MD5, ce qui signifie que cette fonction n'est plus sûre et ne doit plus être utilisée. Il est désormais recommandé d'utiliser des fonctions générant des hash de 256 bits ou plus (Whirlpool, SHA256, SHA512 et d'autres.)
Prenons l'exemple suivant, via la fonction Secure Hash Algorithm 1 (SHA1) . Le hash du message "Ce site traite de la cryptographie" donne : e41e744e1bf7f83a62cc49077d3599693495c346. En changeant "cryptographie" en "cruptographie" on obtient : 191f25da150fc14cafc98cc99b99eb14130bac96. On constate que ces fonctions permettent bien de garantir l'originalité d'un message (en changeant une seule lettre, on obtient une empreinte totalement différente). Une autre utilisation très fréquente des fonctions est l'authentification d'un utilisateur sur un service en ligne. L'un des grands principes des fonctions de hachage est qu'on ne peut pas retrouver le message original à partir de son empreinte. Partant de ce constat, il est possible de créer un unique hash à partir du couple identifiant / mot de passe d'un utilisateur. Ainsi, le mot de passe est inconnu de l'administrateur (c'est d'ailleurs la raison pour laquelle un site correctement conçu ne peut vous renvoyer votre mot de passe lors d'un oubli, il vous proposera plutôt d'en générer un nouveau) et un compte ou une session est associé au hash d'un couple login / mot de passe. Il existe plusieurs fonctions de hachage remarquables et très utilisées. On pourra citer la famille des Message Digest, Secure Hash Algorithm (SHA), Whirlpool, RIPEMD ...
La plus utilisée des applications des fonctions de hachage est la vérification de l'intégrité de l'authenticité d'un message transmis. On procède comme suit : - l'expéditeur effectue la somme de contrôle du message qu'il s'apprête à transmettre à l'aide d'une fonction bien précise - après réception du message, le destinataire effectue la même somme à l'aide de la même fonction. Si l'empreinte est strictement identique à celle fournie par l'expéditeur, le message est intègre et n'a pas été modifié (ou corrompu) durant la transmission. Si l'empreinte est différente, c'est que le message a été modifié (même d'un seul bit).
Rechercher sur le site :
Accueil La cryptographie sur les réseaux Cryptographie symétrique Principe Les applications pratiques Une clé inviolable ? Cryptographie asymétrique Principe Les applications pratiques Une clé inviolable ? Les fonctions de hachage Principe Les applications pratiques Fiabilité des fonctions ? Bibliographie / Liens Bibliographie - sources Liens externes A propos de ce site A propos de l'auteur