Qu'est-ce que SHA-3 ?
SHA-3 (Secure Hash Algorithm 3) est le plus récent membre de la famille Secure Hash Algorithm, publié par le NIST en 2015. Contrairement à SHA-2, qui est basé sur la construction Merkle-Damgård, SHA-3 utilise une conception fondamentalement différente appelée construction en éponge. Cette différence rend SHA-3 résistant à certaines classes d'attaques qui menacent SHA-2.
L'algorithme initialement nommé Keccak (prononcé "ketchak") a remporté le concours de fonctions de hachage du NIST en 2012 après un processus d'évaluation publique de cinq ans. Le NIST a normalisé quatre longueurs de hachage : SHA3-224, SHA3-256, SHA3-384 et SHA3-512, ainsi que deux fonctions à sortie extensible (XOF) : SHAKE128 et SHAKE256.
Comment Fonctionne SHA-3
SHA-3 utilise la construction en éponge, qui se compose de deux phases : absorption et essorage. Dans la phase d'absorption, les données d'entrée sont introduites dans l'état interne par blocs. Dans la phase d'essorage, la sortie de hachage est extraite.
L'état interne de SHA-3 est un tableau 3D de 5×5 voies, chacune contenant 64 bits, pour une taille d'état totale de 1600 bits. La fonction de permutation, appelée Keccak-f, est appliquée itérativement pendant les deux phases pour mélanger l'état.
Cette conception donne à SHA-3 plusieurs avantages :
- Il n'est pas vulnérable aux attaques par extension de longueur qui affectent SHA-2
- La construction en éponge fournit une preuve de sécurité
- Il offre de bonnes performances dans les implémentations matérielles
- Les variantes XOF produisent une sortie de longueur arbitraire
SHA-3 vs SHA-2
| Caractéristique | SHA-2 | SHA-3 |
|---|---|---|
| Construction | Merkle-Damgård | Éponge (Keccak) |
| Publié | 2001 | 2015 |
| Tailles de sortie | 224, 256, 384, 512 | 224, 256, 384, 512 + XOF |
| Extension de longueur | Vulnérable | Résistant |
| Vitesse logicielle | Plus rapide | Plus lent |
| Vitesse matérielle | Modérée | Excellente |
| Résistance aux canaux auxiliaires | Bonne | Meilleure |
Quand Utiliser SHA-3
SHA-3 n'est pas destiné à remplacer SHA-2 immédiatement. SHA-2 reste sûr, et aucune attaque pratique ne réduit sa sécurité en dessous des niveaux acceptables. SHA-3 existe comme solution de secours au cas où SHA-2 serait éventuellement cassé.
Utilisez SHA-3 lorsque :
- Vous avez besoin de résistance aux attaques par extension de longueur
- Votre application s'exécute sur du matériel avec accélération SHA-3
- Vous souhaitez diversifier les dépendances cryptographiques loin de SHA-2
- Vous avez besoin d'une fonction de hachage avec une conception fondamentalement différente (défense en profondeur)
- Vous avez besoin d'une sortie de longueur variable de SHAKE128 ou SHAKE256
Exemples de Code
// PHP
echo hash('sha3-256', 'hello');
echo hash('sha3-512', 'hello');
import hashlib
print(hashlib.sha3_256(b'hello').hexdigest())
print(hashlib.sha3_512(b'hello').hexdigest())
# SHAKE (extendable output)
print(hashlib.shake_128(b'hello').hexdigest(16)) # 16 bytes output
print(hashlib.shake_256(b'hello').hexdigest(32)) # 32 bytes output
// Node.js
const crypto = require('crypto');
console.log(crypto.createHash('sha3-256').update('hello').digest('hex'));
console.log(crypto.createHash('sha3-512').update('hello').digest('hex'));
SHAKE128 et SHAKE256
SHAKE (Secure Hash Algorithm KEccak) est une fonction à sortie extensible (XOF). Contrairement aux fonctions de hachage à longueur fixe, les XOF produisent une sortie de n'importe quelle longueur souhaitée. SHAKE128 offre une sécurité de 128 bits avec une longueur de sortie arbitraire, tandis que SHAKE256 offre une sécurité de 256 bits.
Les XOF sont utiles pour :
- Générer des clés cryptographiques de longueur arbitraire à partir d'une graine
- Créer des valeurs de masquage dans les schémas de chiffrement
- Construire des chiffrements de flux et des générateurs de nombres aléatoires
Outil en Ligne
Le Générateur de Haché SHA-3 sur Help2Code calcule instantanément les hachés SHA3-224, SHA3-256, SHA3-384 et SHA3-512. Comparez la sortie avec les hachés SHA-2 en utilisant le Générateur de Hachés Multiples.
Conclusion
SHA-3 est une fonction de hachage moderne et bien conçue avec une marge de sécurité conservative. Bien que SHA-2 reste le standard pour la plupart des applications, SHA-3 est un excellent choix lorsque vous avez besoin d'une fonction de hachage de secours pour la défense en profondeur, ou lorsque vous avez besoin des capacités uniques des fonctions à sortie extensible SHAKE.