Une fonction de hachage transforme une donnée de taille quelconque en une empreinte de taille fixe, impossible à inverser en pratique. SHA-256 et Keccak-256 sont conçues pour être rapides sur des processeurs ordinaires, en manipulant des bits. Or les systèmes de preuves à connaissance nulle raisonnent sur des nombres appartenant à un corps fini, une sorte d'arithmétique modulaire. Traduire chaque opération binaire en contraintes arithmétiques rend ces fonctions très lourdes à prouver.
Poseidon est construite directement sur cette arithmétique. Elle applique plusieurs tours d'additions, de multiplications et d'élévations à une petite puissance, selon une structure dite d'éponge. Résultat : hacher une donnée dans un circuit coûte beaucoup moins de contraintes, ce qui accélère la génération des preuves et réduit leur coût. On la retrouve dans de nombreux projets zk, par exemple pour construire des arbres de Merkle à l'intérieur de circuits, dans des protocoles de confidentialité ou dans certains rollups. Des variantes et paramétrages différents existent selon le corps utilisé.
Un exemple concret
Imaginons une application qui veut prouver qu'un utilisateur figure dans une liste de membres sans révéler lequel. La liste est stockée sous forme d'arbre de Merkle, et la preuve doit recalculer plusieurs hachages successifs dans un circuit. Avec Poseidon, cette preuve peut être générée rapidement sur un ordinateur personnel ; avec SHA-256, le même circuit serait nettement plus volumineux et plus lent.
Les risques à connaître
Poseidon est plus récente que les fonctions de hachage historiques et a fait l'objet de moins d'années de cryptanalyse. Sa sécurité dépend aussi du choix correct des paramètres ; une implémentation mal paramétrée ou incompatible entre deux systèmes peut produire des failles ou des résultats différents.
Questions fréquentes sur Poseidon
Pourquoi ne pas utiliser SHA-256 dans les preuves zk ?
C'est possible, mais très coûteux, car SHA-256 repose sur des opérations binaires qui se traduisent par un grand nombre de contraintes arithmétiques. Poseidon a été conçue pour éviter ce surcoût.
Poseidon est-elle utilisée par Bitcoin ou Ethereum ?
Non, Bitcoin utilise SHA-256 et Ethereum utilise Keccak-256 au niveau du protocole. Poseidon est employée par des applications et des rollups qui reposent sur des preuves à connaissance nulle.