La fonction de hachage cryptographique (CHF) existe depuis les années 1980 et est très utile dans les domaines de la cryptographie, de la vérification de l'intégrité des données, de l'indexation des bases de données et de nombreux autres domaines.
Lors du calcul d'une fonction de hachage cryptographique, des données de longueur arbitraire sont entrées, et la fonction correspondante les transforme en une valeur de sortie de longueur fixe. Cette transformation implique l'application de diverses opérations à différents segments des données d'entrée, communément appelées hachage. La sortie qui en résulte est connue sous le nom de valeur de hachage, et l'opération elle-même est appelée fonction de hachage.
L'algorithme MD5, fréquemment utilisé dans les téléchargeurs P2P, est un exemple illustratif. Il se caractérise par une longueur de 128 bits. Les utilisateurs peuvent comparer la valeur de hachage d'un fichier téléchargé avec celle fournie par la source ; une correspondance indique l'intégrité probable du fichier.
L'authentification par mot de passe sur les sites Web est une autre application courante. Pour protéger les mots de passe des utilisateurs, la plupart des plateformes stockent des mots de passe hachés plutôt que des entrées en texte brut. Lorsqu'un utilisateur se connecte, le système calcule la fonction de hachage du mot de passe saisi et le compare à la valeur stockée associée au nom d'utilisateur. La nature irréversible de la fonction de hachage cryptographique empêche le déchiffrement des mots de passe, même si les pirates informatiques obtiennent les valeurs de hachage des bases de données.
Une recherche sur « SHA256 Generator » révèle que différents sites Web utilisant le même algorithme génèrent régulièrement des valeurs de hachage identiques pour des textes d'entrée similaires.
De plus, le fait de modifier les majuscules du texte saisi produit des valeurs de hachage en sortie totalement distinctes, connues sous le nom d'effet Avalanche. Les caractéristiques suivantes évaluent la sécurité d'une fonction de hachage cryptographique :
Dans l'exemple ci-dessus, la reconstruction du mot de passe d'un utilisateur à partir de valeurs de hachage volées pose de grandes difficultés. Les opérations complexes et la compression des informations associées aux fonctions de hachage cryptographiques entravent la rétro-ingénierie, soulignant ainsi leur nature unidirectionnelle.
Deuxième résistance avant l'image : il est difficile d'identifier une autre valeur d'entrée produisant la même valeur de hachage à partir d'une entrée initiale. **Cette fonctionnalité est qualifiée de faible résistance aux collisions.
Résistance aux collisions : il est difficile de découvrir deux valeurs distinctes produisant des valeurs de hachage identiques. C'est ce que l'on appelle une collision de hachage cryptographique. Cette propriété indique une forte résistance aux collisions.
En prenant l'exemple du MD5 mentionné, est-il possible que différents fichiers génèrent la même valeur de hachage ? La réponse est oui, mais la probabilité est extrêmement faible. Ce phénomène est connu sous le nom de collision de hachage cryptographique, qui peut se produire accidentellement ou à la suite d'une attaque délibérée. La probabilité de collision standard pour l'algorithme MD5 est d'environ 1/2¹ ², ce qui rend les accidents très improbables. Cependant, le MD5 est considéré comme vulnérable aux attaques par collision délibérées, car il est relativement facile de produire la même valeur de hachage pour deux textes en clair différents. Par conséquent, même si l'algorithme MD5 peut toujours être utilisé pour des tâches qui ne concernent pas la sécurité, il n'est plus adapté aux tâches d'authentification de sécurité (telles que l'authentification par clé ou les signatures numériques).
Ethereum utilise la fonction de hachage cryptographique KECCAK-256, que de nombreuses personnes identifient par erreur comme étant SHA-3 (y compris dans la thèse de doctorat du fondateur de Celestia) parce que cette fonction a été initialement écrite sous la forme « sha3 » dans Solidity. À cause de la confusion, il a ensuite été renommé Keccak256.
MetaMask utilise différentes fonctions de hachage cryptographique dans ses opérations :
Bitcoin utilise la fonction de hachage cryptographique SHA-256. Nous allons expliquer ici le processus par lequel les mineurs de bitcoins utilisent les fonctions de hachage cryptographiques pendant les activités de minage.
Dans le minage de bitcoins, les mineurs fusionnent les données des transactions avec un en-tête de bloc, comprenant les détails des transactions ainsi que des métadonnées telles que des horodatages et des nombres aléatoires. Les mineurs s'efforcent de produire un hachage SHA-256 spécifique en ajustant de manière itérative les nombres aléatoires (appelés « nonce ») figurant dans l'en-tête du bloc afin de répondre à des critères spécifiques, en commençant généralement par un certain nombre de zéros non significatifs. Compte tenu de la nature de la fonction de hachage SHA-256, la seule méthode pour découvrir un hachage conforme consiste à expérimenter en permanence différents nombres aléatoires.
Une fois qu'ils ont trouvé un hash répondant aux exigences, les mineurs peuvent ajouter le bloc à la blockchain du réseau Bitcoin et recevoir une quantité désignée de Bitcoins en récompense. Ce processus, connu sous le nom de « minage », implique l'exécution continue de fonctions de hachage afin d'identifier une valeur de hachage répondant aux critères spécifiés.
Au-delà du minage, les fonctions de hachage cryptographiques jouent un rôle essentiel pour établir des liens entre les blocs et suivre les modifications des transactions au sein des systèmes blockchain. Les pointeurs de hachage servent de structures de données qui facilitent l'indexation, la récupération et la vérification des modifications des données. Chaque transaction au sein de la blockchain est hachée avant d'être organisée en blocs. Ensuite, un pointeur de hachage connecte chaque bloc à son antécédent en stockant un hachage des données du bloc précédent. La nature interconnectée des blocs garantit l'immuabilité au sein de la blockchain ; toute modification d'une transaction donne lieu à une valeur de hachage distincte, modifiant ainsi le hachage de tous les blocs suivants. Par exemple, considérez une blockchain composée de deux blocs :
Bloc 1 : contient le hachage des transactions T1, T2 et T3.
Bloc 2 : contient le hachage des transactions T4, T5 et T6, ainsi que le hachage du bloc 1.
Si une personne tente de modifier la transaction T1 dans le bloc 1, elle devra recalibrer la valeur de hachage du bloc 1 et mettre à jour la nouvelle valeur du bloc 2. Cependant, en raison de la nature unidirectionnelle et de la résistance pré-image des fonctions de hachage cryptographiques, il s'avère difficile d'inverser la transaction T1 dans le bloc 1 en fonction de la valeur de hachage du bloc 2.
De plus, étant donné que le bloc 2 intègre la valeur de hachage du bloc 1, toute modification du bloc 1 modifierait par conséquent la valeur de hachage du bloc 2. Cela nécessite de modifier simultanément tous les blocs suivants pour toute modification apportée à la blockchain, une tâche formidable. Par conséquent, les fonctions de hachage cryptographique garantissent efficacement la cohérence et l'intégrité des données de la blockchain.
Dans le domaine de la blockchain, la fonction de hachage cryptographique joue plusieurs rôles essentiels :
Block Linking : l'en-tête de chaque bloc contient la valeur de hachage du bloc précédent, ce qui permet de créer une chaîne de blocs connectée garantissant une intégrité inviolable.
Validation des transactions : Les données des transactions sont hachées, la valeur de hachage qui en résulte étant incluse dans le bloc, afin de valider l'authenticité et l'intégrité des transactions.
Mécanisme de consensus : Dans le cadre du mécanisme de consensus Proof of Work (PoW), les mineurs doivent identifier une valeur de nonce répondant aux exigences de difficulté en exécutant des fonctions de hachage.
Le 2 septembre 2022, Vitalik a publié une question sur Twitter (X), demandant quelle fonction de hachage cryptographique resterait sécurisée si un ordinateur quantique utilisant l'algorithme de Shor était inventé.
Source : Tweet de Vitalik
Il a indiqué qu'un ordinateur quantique capable d'utiliser l'algorithme de Shor pourrait percer le RSA (un cryptosystème à clé publique de longue date) ou tout autre système basé sur la factorisation, les courbes elliptiques et les groupes d'ordre inconnu. Cependant, les valeurs de hachage (comme le SHA-256) se portent bien dans le contexte de l'informatique quantique, même si leur sécurité serait quelque peu réduite. Il est recommandé d'utiliser des valeurs de hachage plus longues.
Les fonctions de hachage cryptographiques, telles que le SHA-256, sont-elles robustes ? Le « 256 » en SHA-256 représente 2 augmenté à la puissance 256, un chiffre si grand qu'il est difficile de le saisir concrètement.
Source : 3Blue1Brown
3Blue1Brown a néanmoins présenté une analogie frappante pour mieux comprendre la sécurité des fonctions de hachage cryptographiques : imaginez un scénario dans lequel 4 milliards de personnes sur Terre possèdent chacune un ordinateur doté de capacités informatiques exceptionnelles, soit 1 000 fois la puissance informatique de Google dans le monde entier. Simultanément, imaginez un cosmos composé de 4 milliards de planètes et de 4 milliards de galaxies, comme la Voie lactée ! Même dans ces conditions extrêmes, il faudrait plus de 500 milliards d'années pour qu'il y ait 1 chance sur 4 milliards de deviner avec précision « l'entrée spécifique requise pour générer la valeur de hachage de sortie SHA-256 ».
La fonction de hachage cryptographique (CHF) existe depuis les années 1980 et est très utile dans les domaines de la cryptographie, de la vérification de l'intégrité des données, de l'indexation des bases de données et de nombreux autres domaines.
Lors du calcul d'une fonction de hachage cryptographique, des données de longueur arbitraire sont entrées, et la fonction correspondante les transforme en une valeur de sortie de longueur fixe. Cette transformation implique l'application de diverses opérations à différents segments des données d'entrée, communément appelées hachage. La sortie qui en résulte est connue sous le nom de valeur de hachage, et l'opération elle-même est appelée fonction de hachage.
L'algorithme MD5, fréquemment utilisé dans les téléchargeurs P2P, est un exemple illustratif. Il se caractérise par une longueur de 128 bits. Les utilisateurs peuvent comparer la valeur de hachage d'un fichier téléchargé avec celle fournie par la source ; une correspondance indique l'intégrité probable du fichier.
L'authentification par mot de passe sur les sites Web est une autre application courante. Pour protéger les mots de passe des utilisateurs, la plupart des plateformes stockent des mots de passe hachés plutôt que des entrées en texte brut. Lorsqu'un utilisateur se connecte, le système calcule la fonction de hachage du mot de passe saisi et le compare à la valeur stockée associée au nom d'utilisateur. La nature irréversible de la fonction de hachage cryptographique empêche le déchiffrement des mots de passe, même si les pirates informatiques obtiennent les valeurs de hachage des bases de données.
Une recherche sur « SHA256 Generator » révèle que différents sites Web utilisant le même algorithme génèrent régulièrement des valeurs de hachage identiques pour des textes d'entrée similaires.
De plus, le fait de modifier les majuscules du texte saisi produit des valeurs de hachage en sortie totalement distinctes, connues sous le nom d'effet Avalanche. Les caractéristiques suivantes évaluent la sécurité d'une fonction de hachage cryptographique :
Dans l'exemple ci-dessus, la reconstruction du mot de passe d'un utilisateur à partir de valeurs de hachage volées pose de grandes difficultés. Les opérations complexes et la compression des informations associées aux fonctions de hachage cryptographiques entravent la rétro-ingénierie, soulignant ainsi leur nature unidirectionnelle.
Deuxième résistance avant l'image : il est difficile d'identifier une autre valeur d'entrée produisant la même valeur de hachage à partir d'une entrée initiale. **Cette fonctionnalité est qualifiée de faible résistance aux collisions.
Résistance aux collisions : il est difficile de découvrir deux valeurs distinctes produisant des valeurs de hachage identiques. C'est ce que l'on appelle une collision de hachage cryptographique. Cette propriété indique une forte résistance aux collisions.
En prenant l'exemple du MD5 mentionné, est-il possible que différents fichiers génèrent la même valeur de hachage ? La réponse est oui, mais la probabilité est extrêmement faible. Ce phénomène est connu sous le nom de collision de hachage cryptographique, qui peut se produire accidentellement ou à la suite d'une attaque délibérée. La probabilité de collision standard pour l'algorithme MD5 est d'environ 1/2¹ ², ce qui rend les accidents très improbables. Cependant, le MD5 est considéré comme vulnérable aux attaques par collision délibérées, car il est relativement facile de produire la même valeur de hachage pour deux textes en clair différents. Par conséquent, même si l'algorithme MD5 peut toujours être utilisé pour des tâches qui ne concernent pas la sécurité, il n'est plus adapté aux tâches d'authentification de sécurité (telles que l'authentification par clé ou les signatures numériques).
Ethereum utilise la fonction de hachage cryptographique KECCAK-256, que de nombreuses personnes identifient par erreur comme étant SHA-3 (y compris dans la thèse de doctorat du fondateur de Celestia) parce que cette fonction a été initialement écrite sous la forme « sha3 » dans Solidity. À cause de la confusion, il a ensuite été renommé Keccak256.
MetaMask utilise différentes fonctions de hachage cryptographique dans ses opérations :
Bitcoin utilise la fonction de hachage cryptographique SHA-256. Nous allons expliquer ici le processus par lequel les mineurs de bitcoins utilisent les fonctions de hachage cryptographiques pendant les activités de minage.
Dans le minage de bitcoins, les mineurs fusionnent les données des transactions avec un en-tête de bloc, comprenant les détails des transactions ainsi que des métadonnées telles que des horodatages et des nombres aléatoires. Les mineurs s'efforcent de produire un hachage SHA-256 spécifique en ajustant de manière itérative les nombres aléatoires (appelés « nonce ») figurant dans l'en-tête du bloc afin de répondre à des critères spécifiques, en commençant généralement par un certain nombre de zéros non significatifs. Compte tenu de la nature de la fonction de hachage SHA-256, la seule méthode pour découvrir un hachage conforme consiste à expérimenter en permanence différents nombres aléatoires.
Une fois qu'ils ont trouvé un hash répondant aux exigences, les mineurs peuvent ajouter le bloc à la blockchain du réseau Bitcoin et recevoir une quantité désignée de Bitcoins en récompense. Ce processus, connu sous le nom de « minage », implique l'exécution continue de fonctions de hachage afin d'identifier une valeur de hachage répondant aux critères spécifiés.
Au-delà du minage, les fonctions de hachage cryptographiques jouent un rôle essentiel pour établir des liens entre les blocs et suivre les modifications des transactions au sein des systèmes blockchain. Les pointeurs de hachage servent de structures de données qui facilitent l'indexation, la récupération et la vérification des modifications des données. Chaque transaction au sein de la blockchain est hachée avant d'être organisée en blocs. Ensuite, un pointeur de hachage connecte chaque bloc à son antécédent en stockant un hachage des données du bloc précédent. La nature interconnectée des blocs garantit l'immuabilité au sein de la blockchain ; toute modification d'une transaction donne lieu à une valeur de hachage distincte, modifiant ainsi le hachage de tous les blocs suivants. Par exemple, considérez une blockchain composée de deux blocs :
Bloc 1 : contient le hachage des transactions T1, T2 et T3.
Bloc 2 : contient le hachage des transactions T4, T5 et T6, ainsi que le hachage du bloc 1.
Si une personne tente de modifier la transaction T1 dans le bloc 1, elle devra recalibrer la valeur de hachage du bloc 1 et mettre à jour la nouvelle valeur du bloc 2. Cependant, en raison de la nature unidirectionnelle et de la résistance pré-image des fonctions de hachage cryptographiques, il s'avère difficile d'inverser la transaction T1 dans le bloc 1 en fonction de la valeur de hachage du bloc 2.
De plus, étant donné que le bloc 2 intègre la valeur de hachage du bloc 1, toute modification du bloc 1 modifierait par conséquent la valeur de hachage du bloc 2. Cela nécessite de modifier simultanément tous les blocs suivants pour toute modification apportée à la blockchain, une tâche formidable. Par conséquent, les fonctions de hachage cryptographique garantissent efficacement la cohérence et l'intégrité des données de la blockchain.
Dans le domaine de la blockchain, la fonction de hachage cryptographique joue plusieurs rôles essentiels :
Block Linking : l'en-tête de chaque bloc contient la valeur de hachage du bloc précédent, ce qui permet de créer une chaîne de blocs connectée garantissant une intégrité inviolable.
Validation des transactions : Les données des transactions sont hachées, la valeur de hachage qui en résulte étant incluse dans le bloc, afin de valider l'authenticité et l'intégrité des transactions.
Mécanisme de consensus : Dans le cadre du mécanisme de consensus Proof of Work (PoW), les mineurs doivent identifier une valeur de nonce répondant aux exigences de difficulté en exécutant des fonctions de hachage.
Le 2 septembre 2022, Vitalik a publié une question sur Twitter (X), demandant quelle fonction de hachage cryptographique resterait sécurisée si un ordinateur quantique utilisant l'algorithme de Shor était inventé.
Source : Tweet de Vitalik
Il a indiqué qu'un ordinateur quantique capable d'utiliser l'algorithme de Shor pourrait percer le RSA (un cryptosystème à clé publique de longue date) ou tout autre système basé sur la factorisation, les courbes elliptiques et les groupes d'ordre inconnu. Cependant, les valeurs de hachage (comme le SHA-256) se portent bien dans le contexte de l'informatique quantique, même si leur sécurité serait quelque peu réduite. Il est recommandé d'utiliser des valeurs de hachage plus longues.
Les fonctions de hachage cryptographiques, telles que le SHA-256, sont-elles robustes ? Le « 256 » en SHA-256 représente 2 augmenté à la puissance 256, un chiffre si grand qu'il est difficile de le saisir concrètement.
Source : 3Blue1Brown
3Blue1Brown a néanmoins présenté une analogie frappante pour mieux comprendre la sécurité des fonctions de hachage cryptographiques : imaginez un scénario dans lequel 4 milliards de personnes sur Terre possèdent chacune un ordinateur doté de capacités informatiques exceptionnelles, soit 1 000 fois la puissance informatique de Google dans le monde entier. Simultanément, imaginez un cosmos composé de 4 milliards de planètes et de 4 milliards de galaxies, comme la Voie lactée ! Même dans ces conditions extrêmes, il faudrait plus de 500 milliards d'années pour qu'il y ait 1 chance sur 4 milliards de deviner avec précision « l'entrée spécifique requise pour générer la valeur de hachage de sortie SHA-256 ».