Qu'est-ce que Fonction de hachage ?

Fonction qui calcule, à partir de données de longueur quelconque, une valeur de longueur fixe (valeur de hachage). Celles utilisées en cryptographie, comme SHA-256, sont conçues pour qu'il soit pratiquement impossible de retrouver les données d'origine à partir d'une valeur de hachage ou de trouver deux données ayant la même valeur de hachage ; elles servent à détecter les falsifications, aux signatures numériques et au stockage des mots de passe.

Nom japonais: ハッシュ関数

« Fonction de hachage » apparaît dans 8 questions d'entraînement réparties sur 3 thèmes, dont Bases de la sécurité de l'information, Structures de données et algorithmes, Matériel des ordinateurs quantiques.

Domaine: Bases de la sécurité de l'information

Propriétés exigées des fonctions de hachage cryptographiques

Les fonctions de hachage utilisées en cryptographie doivent avoir 3 propriétés. La résistance aux préimages (fonction à sens unique) signifie qu'il est difficile de trouver une entrée qui produit une valeur de hachage donnée. La résistance aux secondes préimages signifie que, étant donné une entrée, il est difficile de trouver une autre entrée ayant la même valeur de hachage. La résistance aux collisions signifie qu'il est difficile de trouver deux entrées différentes quelconques ayant la même valeur de hachage. Elles ont aussi la propriété que modifier un seul bit de l'entrée change environ la moitié des bits de la sortie (effet avalanche).

Longueur de sortie et sécurité

Pour une fonction de hachage idéale à sortie de n bits, trouver une préimage par force brute demande environ 2^n calculs, mais, en vertu du paradoxe des anniversaires, une collision devient probable après environ 2^(n/2) calculs. On considère donc que SHA-256 offre une sécurité d'environ 128 bits contre les collisions. Pour MD5 et SHA-1, on a trouvé des méthodes qui créent des collisions avec bien moins de calculs que la force brute ; il ne faut donc pas les utiliser là où la sécurité est requise, comme dans les signatures numériques.

Principaux usages

Une valeur de hachage peut servir d'« empreinte » des données. Comparer la valeur de hachage d'un fichier téléchargé avec la valeur publiée officiellement montre s'il est corrompu ou a été remplacé (à condition que la valeur officielle elle-même ait été obtenue par un canal de confiance). Dans les signatures numériques, c'est la valeur de hachage d'un long document que l'on signe, et non le document lui-même. Pour le stockage des mots de passe, on ajoute un sel et l'on utilise des procédés délibérément coûteux comme bcrypt ou Argon2. HMAC, qui combine un hachage et une clé, sert de code d'authentification de message pour détecter les falsifications.

S'entraîner : questions sur Fonction de hachage

Quelle affirmation décrit correctement une propriété des fonctions de hachage utilisées en cryptographie (fonctions de hachage cryptographiques) ?

  1. AOn peut retrouver les données d'origine à partir de la valeur de hachage à l'aide d'une clé privée
  2. BLa valeur de hachage s'allonge proportionnellement à la longueur de l'entrée
  3. CUne même entrée donne toujours la même valeur de hachage, et modifier ne serait-ce qu'un bit de l'entrée change la valeur de hachage de façon radicale et imprévisible
Afficher la réponse et l'explication

Réponse : C. Une même entrée donne toujours la même valeur de hachage, et modifier ne serait-ce qu'un bit de l'entrée change la valeur de hachage de façon radicale et imprévisible

Une fonction de hachage calcule, à partir de données de longueur quelconque, une valeur de longueur fixe (valeur de hachage, ou condensat). SHA-256, par exemple, produit une valeur de 256 bits quelle que soit la longueur de l'entrée. Une même entrée donne toujours la même valeur, et la moindre modification de l'entrée change la sortie de façon radicale et imprévisible. Les fonctions de hachage utilisées en cryptographie doivent en outre rendre pratiquement impossible de retrouver l'entrée d'origine à partir d'une valeur de hachage (fonction à sens unique, ou résistance aux préimages) et difficile de trouver deux entrées différentes ayant la même valeur de hachage (résistance aux collisions). Une fonction de hachage est un calcul sans clé, et non un chiffrement ; on ne peut donc pas la « déchiffrer » pour revenir aux données d'origine. Elle sert à détecter les falsifications, aux signatures numériques, au stockage des mots de passe, etc.

Pour une fonction de hachage idéale à sortie de 256 bits, quelle combinaison donne l'ordre de grandeur du nombre de calculs nécessaires à une attaque par force brute dans deux cas : trouver une entrée qui produit une valeur de hachage donnée (attaque par préimage), et trouver deux entrées différentes quelconques qui produisent la même valeur de hachage (attaque par collision) ?

  1. AAttaque par préimage : environ 2^256 ; attaque par collision : environ 2^128
  2. BAttaque par préimage : environ 2^128 ; attaque par collision : environ 2^256
  3. CEnviron 2^256 aussi bien pour l'attaque par préimage que pour l'attaque par collision
Afficher la réponse et l'explication

Réponse : A. Attaque par préimage : environ 2^256 ; attaque par collision : environ 2^128

Une fonction de hachage idéale à sortie de n bits a 2^n valeurs de hachage possibles, et chaque entrée essayée correspond à une valeur donnée avec une probabilité de 1/2^n. Une attaque par préimage demande donc environ 2^n calculs, soit environ 2^256 pour n = 256. Dans une attaque par collision, en revanche, n'importe quelles deux entrées peuvent coïncider : essayer k entrées donne environ k^2/2 paires à comparer. Lorsque k^2/2 approche 2^n, c'est-à-dire lorsque k est de l'ordre de 2^(n/2), une collision devient probable ; pour n = 256, cela fait environ 2^128. C'est la même idée que le paradoxe des anniversaires, selon lequel dans un groupe de 23 personnes, la probabilité que deux d'entre elles aient le même anniversaire dépasse 50 % ; on parle donc d'attaque des anniversaires. Par conséquent, la résistance d'une fonction de hachage aux collisions est estimée à la moitié de sa longueur de sortie, et obtenir une sécurité équivalente à 128 bits exige une sortie de 256 bits.

Questions fréquentes

Quelle est la différence entre une fonction de hachage et un chiffrement ?

Le chiffrement est une transformation qui utilise une clé et peut être inversée (déchiffrée), alors qu'une fonction de hachage n'utilise pas de clé et effectue un calcul à sens unique qui ne peut pas être inversé. Les valeurs de hachage servent donc non pas à garder des secrets, mais à vérifier si des données sont identiques.

Combien de bits compte une valeur de hachage SHA-256 ?

256 bits (64 caractères en hexadécimal, c'est-à-dire en base 16), quelle que soit la longueur de l'entrée. Une entrée d'un seul caractère comme un gros fichier donnent une valeur de même longueur.

« Fonction de hachage » dans les explications

Questions mentionnant « Fonction de hachage » (8)

  1. Quelle affirmation décrit correctement une propriété des fonctions de hachage utilisées en cryptographie (fonctions de hachage cryptographiques) ?
  2. Pour une fonction de hachage idéale à sortie de 256 bits, quelle combinaison donne l'ordre de grandeur du nombre de calculs nécessaires à une attaque par force brute dans deux cas : trouver une entrée qui produit une valeur de hachage donnée (attaque par préimage), et trouver deux entrées différentes quelconques qui produisent la même valeur de hachage (attaque par collision) ?
  3. Pour stocker des mots de passe, il est recommandé de ne pas utiliser directement une fonction de hachage rapide comme SHA-256, mais un procédé délibérément conçu pour être long à calculer, comme bcrypt ou Argon2. Pourquoi ?
  4. On range dans cet ordre les clés 10, 17, 24 et 3 dans une table de hachage de taille 7 (positions 0 à 6) avec la fonction de hachage h(k) = k mod 7. Les collisions sont résolues par sondage linéaire, qui avance d'une position à la fois (en revenant de 6 à 0) pour trouver un emplacement libre. À quelle position la clé 3 est-elle rangée ?
  5. Quelle description de la cryptographie post-quantique (PQC) est correcte ?
  6. Lorsqu'un service web stocke les mots de passe de ses utilisateurs, il ajoute au mot de passe une valeur aléatoire différente pour chaque utilisateur (un sel) avant de calculer et de stocker la valeur de hachage. Quel est le but principal du sel ?
  7. Quelle affirmation compare correctement un code d'authentification de message (MAC) et une signature numérique ?
  8. Quelle description d'une collision dans une table de hachage est correcte ?

Termes associés

Signature numérique Sel (salt) Table de hachage (hash table) GPU Cryptographie post-quantique (PQC) Algorithme de Shor Code d'authentification de message Attaque zero-day (attaque du jour zéro) Authentification multifacteur (MFA) Cross-site scripting (XSS)

Retour au glossaire