Définition

Le hachage est une opération qui consiste à transformer une donnée d’une taille quelconque (un fichier, un message, un mot de passe) en une chaîne de caractères de longueur fixe, appelée hache ou empreinte digitale. Cette chaîne est unique pour une donnée donnée et est généralement beaucoup plus courte que la donnée d’origine.

Utilisations

Il y a plusieurs utilisations:

  • VĂ©rification d’intĂ©gritĂ©: Assurer qu’un fichier n’a pas Ă©tĂ© modifiĂ© en comparant son hache avant et après un transfert.
  • Stockage sĂ©curisĂ© de mots de passe: Stocker les hachĂ©s des mots de passe plutĂ´t que les mots de passe en clair, rendant une attaque par force brute beaucoup plus difficile.
  • Indexation rapide: CrĂ©er des tables de hachage pour une recherche efficace dans de grandes bases de donnĂ©es.
  • Signatures numĂ©riques: VĂ©rifier l’authenticitĂ© d’un message.

Propriétés d’une bonne fonction de hachage

Une bonne fonction de hachage doit satisfaire plusieurs propriétés :

  • DĂ©terminisme: La mĂŞme entrĂ©e doit toujours produire la mĂŞme sortie.
  • RapiditĂ©: Le calcul du hachage doit ĂŞtre rapide, mĂŞme pour de grandes entrĂ©es.
  • RĂ©sistance aux collisions: Il doit ĂŞtre extrĂŞmement difficile de trouver deux entrĂ©es diffĂ©rentes qui produisent la mĂŞme sortie (collision).
  • Avalanche: Un petit changement dans l’entrĂ©e doit entraĂ®ner un changement important dans la sortie.

Types de fonctions de hachages

Les plus connues sont:

  • MD5 (Message Digest 5): Bien que rapide, il est considĂ©rĂ© comme obsolète en raison de faiblesses en termes de rĂ©sistance aux collisions.
  • SHA-1 (Secure Hash Algorithm 1): Semblable Ă  MD5, mais plus sĂ©curisĂ©. Cependant, des collisions ont Ă©galement Ă©tĂ© trouvĂ©es, le rendant moins sĂ»r pour de nouvelles applications.
  • SHA-256, SHA-512: Des versions plus rĂ©centes et plus sĂ©curisĂ©es de SHA-1, largement utilisĂ©es.
  • SHA-3: Un nouveau standard conçu pour remplacer SHA-2, offrant une sĂ©curitĂ© encore plus Ă©levĂ©e.
  • Blake2: Une famille d’algorithmes de hachage performants et sĂ©curisĂ©s, souvent utilisĂ©s dans les blockchains.

Applications Pratiques

Exemples:

  • Systèmes de fichiers: Pour vĂ©rifier l’intĂ©gritĂ© des fichiers.
  • Systèmes de contrĂ´le de version: Pour dĂ©tecter les modifications entre les versions d’un fichier.
  • Protocoles de communication: Pour assurer l’intĂ©gritĂ© des donnĂ©es transmises.
  • Cryptomonnaies: Pour sĂ©curiser les transactions et crĂ©er des blocs dans les blockchains.

Attaques et Contres-mesures

Il y a plusieurs attaques:

  • Attaque par force brute: Essayer toutes les entrĂ©es possibles jusqu’à trouver une collision. Pratiquement impossible pour des fonctions de hachage bien conçues.
  • Attaque par anniversaire: Exploite les probabilitĂ©s pour trouver des collisions plus rapidement que par force brute. Les fonctions de hachage modernes sont conçues pour rĂ©sister Ă  cette attaque.
  • Attaque par extension de longueur: Exploite des faiblesses dans la conception de certaines fonctions de hachage.

Approfondir: wikipedia.org