Aller au contenu principal

FONCTION DE HACHAGE

CRYPTOGRAPHIE Traduction en anglais : HASH FUNCTION

Fonction mathématique qui prend une entrée de taille variable (appelée message) et produit une sortie de taille fixe (appelée hash, hachage, condensat ou empreinte). Les fonctions de hachage sont des primitives largement utilisées en cryptographie. Elles présentent des propriétés spécifiques qui les rendent appropriées pour une utilisation dans des contextes sécurisés :

  • Résistance aux préimages : il doit être très difficile de trouver un message donnant un hachage spécifique, c’est-à-dire de trouver une préimage \(m\) pour un hash \(h\) tel que \(h = H(m)\), où \(H\) est la fonction de hachage ;
  • Résistance aux secondes préimages : étant donné un message \(m_1\), il doit être très difficile de trouver un autre message \(m_2\) (différent de \(m_1\)) tel que \(H(m_1) = H(m_2)\) ;
  • Résistance aux collisions : il doit être très difficile de trouver deux messages distincts \(m_1\) et \(m_2\) tels que \(H(m_1) = H(m_2)\) ;
  • Résistance à la falsification : de petites modifications dans l’entrée doivent provoquer des changements significatifs et imprévisibles dans la sortie.

Dans le contexte de Bitcoin, les fonctions de hachage sont utilisées à plusieurs fins, notamment pour le mécanisme de preuve de travail (Proof-of-Work), les identifiants de transaction, la génération d’adresses, le calcul de sommes de contrôle et la création de structures de données telles que les arbres de Merkle. Sur la partie protocolaire, Bitcoin utilise exclusivement la fonction SHA256d, également nommée HASH256, qui consiste en un double hachage SHA256. On utilise aussi HASH256 dans le calcul de certaines sommes de contrôle, notamment pour les clés étendues (xpub, xprv…). Sur la partie portefeuille, on utilise également :

  • SHA256 simple pour les sommes de contrôle des phrases mnémoniques ;
  • SHA512 au sein des algorithmes HMAC et PBKDF2 utilisés dans le processus de dérivation des portefeuilles déterministes et hiérarchiques ;
  • HASH160, qui décrit une utilisation successive d’un SHA256 et d’un RIPEMD160. HASH160 est utilisé dans le processus de génération des adresses de réception (sauf P2PK, P2WSH et P2TR) et dans le calcul des empreintes de clés parents pour les clés étendues.

Termes associés :