Algorithmes de hachage

Les algorithmes de hachage sont des fonctions mathématiques qui convertissent des données d'entrée de toute taille en une sortie de taille fixe (hash), utilisée pour l'intégrité des données, le stockage des mots de passe et le consensus blockchain.

Les algorithmes de hachage sont des primitives cryptographiques fondamentales qui prennent une entrée arbitraire et produisent une sortie de longueur fixe appelée hachage ou condensat. Ils sont conçus pour être déterministes (la même entrée produit toujours la même sortie), rapides à calculer et impossibles à inverser (fonction à sens unique).

Les fonctions de hachage cryptographiques doivent satisfaire des propriétés supplémentaires : résistance aux collisions (difficile de trouver deux entrées avec le même hachage), résistance à la préimage (difficile de trouver l'entrée à partir du hachage) et effet d'avalanche (de petits changements d'entrée provoquent de grands changements de sortie).

Les algorithmes clés incluent : SHA-256 (Bitcoin, largement utilisé), Keccak-256 (Ethereum), SHA-3 (norme NIST), Blake2/Blake3 (rapide, sécurisé) et Poseidon (compatible ZK). Différents algorithmes offrent des compromis en termes de sécurité, de vitesse et d'adéquation à des utilisations spécifiques comme les preuves à divulgation nulle de connaissance.

Les utilisations blockchain incluent : le minage de preuve de travail, les arbres de Merkle pour l'intégrité des données, la génération d'adresses, les identifiants de transaction et les schémas d'engagement. Comprendre le hachage est essentiel pour la sécurité et le développement de la blockchain.

        graph LR
  Center["Algorithmes de hachage"]:::main
  Pre_cryptography["cryptography"]:::pre --> Center
  click Pre_cryptography "/terms/cryptography"
  Pre_mathematics["mathematics"]:::pre --> Center
  click Pre_mathematics "/terms/mathematics"
  Rel_proof_of_work["proof-of-work"]:::related -.-> Center
  click Rel_proof_of_work "/terms/proof-of-work"
  Rel_digital_signatures["digital-signatures"]:::related -.-> Center
  click Rel_digital_signatures "/terms/digital-signatures"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explique-moi comme si j'avais 5 ans

Generated ELI5 content

🤓 Expert Deep Dive

Generated expert content

❓ Questions fréquentes

Pourquoi ne peut-on pas inverser un hachage pour obtenir l'entrée d'origine ?

Les fonctions de hachage compressent des quantités arbitraires d'entrée en une sortie de taille fixe, donc de nombreuses entrées possibles correspondent à chaque hachage (l'information est perdue). Elles sont également conçues avec une complexité mathématique qui rend l'inversion impossible par le calcul. C'est ce qu'on appelle la résistance à la préimage.

Quel algorithme de hachage Bitcoin utilise-t-il ?

Bitcoin utilise SHA-256 (SHA-256d, en fait double SHA-256) pour le minage de preuve de travail et le hachage des transactions, et RIPEMD-160 combiné avec SHA-256 pour la génération d'adresses. Ces choix équilibrent la sécurité, la performance et la résistance aux attaques connues.

Qu'est-ce qui rend une fonction de hachage « compatible ZK » ?

Les fonctions de hachage compatibles ZK comme Poseidon et Pedersen sont conçues pour être efficaces lorsqu'elles sont utilisées à l'intérieur de circuits de preuve à divulgation nulle. Les hachages traditionnels comme SHA-256 sont coûteux dans les preuves ZK car ils utilisent des opérations bit à bit qui sont coûteuses à prouver. Les hachages compatibles ZK utilisent des opérations arithmétiques natives des systèmes de preuve.

🔗 Termes associés

📚 Sources