Verso de la connaissance zéro: une porte dérobée dans zk-SNARK qui ne peut pas être détectée

En utilisant le protocole de preuve de divulgation zéro de la famille SNARK, vous ne connaissez jamais les règles du jeu. Ces règles sont établies par les participants à la procédure de génération des paramètres de système de confiance, mais après son achèvement, il n'est pas possible de vérifier ces règles. Vous pouvez croire à l'exactitude de la génération, mais si vous n'y avez pas participé, vous n'avez pas de garanties à cent pour cent.



Récemment, divers protocoles de connaissance zéro ont été mentionnés dans la communauté blockchain (pour avoir une idée générale à leur sujet, je recommande cet article ): principalement dans le contexte de la confidentialité, moins souvent dans le contexte de l'évolutivité et autres.

La famille de protocoles zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) est l'une des plus étudiées, et plus important encore, implémentée. Un tel protocole est notamment utilisé dans la crypto-monnaie Zcash. La popularité de SNARK est justifiée: le protocole nous permet de prouver des faits sans divulgation, les preuves sont relativement petites, et tout cela avec les garanties de sécurité que nous offre la cryptographie moderne sur les courbes elliptiques.

Cependant, cela n'a pas été sans inconvénients, comme d'habitude: le principal inconvénient de cette famille de protocoles zk est la nécessité de générer des paramètres système initiaux (fiables) - ce processus est également appelé cérémonie. Après tout, les paramètres secrets à détruire sont utilisés pour la génération - ils sont appelés toxiques. Le principal problème est que si les paramètres toxiques sont préservés, la personne qui les possède pourra prouver de faux faits (dans le cas de Zcash, générer de la crypto-monnaie à partir de l'air).

Génération initiale des paramètres


De plus, les mathématiques sous-jacentes aux protocoles SNARK ne seront que superficiellement affectées. Si vous êtes intéressé à le trier, je suggère une série d'articles de Vitalik Buterin sur ce sujet.

Examinons le processus de génération de paramètres de confiance. Nous avons donc un énoncé du problème, dont nous voulons prouver la solution sans divulgation. Par exemple, nous voulons tester la connaissance de la racine d'une équation quadratique:

x26x+5=0


Selon le protocole, nous devons apporter cette équation sous forme de QAP (Quadratic Arithmetic Programs). De plus, pour générer et vérifier des preuves, il est nécessaire d'obtenir les paramètres initiaux. Laissons de côté les crochets comment les paramètres fiables sont obtenus à partir de QAP, quels sont ces paramètres et comment, avec leur aide, les preuves peuvent être vérifiées afin de ne pas plonger dans les mathématiques lourdes. On note seulement que les paramètres sont présentés sous forme de points sur une courbe elliptique:


Ils sont obtenus à partir de l'énoncé du problème sous forme de PAQ en utilisant l'opération irréversible de multiplication sur une courbe elliptique à l'aide de paramètres toxiques.

Maintenant que les paramètres initiaux sont créés, nous pouvons commencer à travailler avec les preuves. Dans notre cas, nous pouvons générer et vérifier la preuve que la racine de l'équation est connue (par exemple, x=1 ) De plus, la preuve ne révélera pas la valeur du secret (la racine de l'équation) et consistera en plusieurs points de la courbe elliptique.

Cependant, grâce aux mathématiques sous-jacentes au protocole, si les paramètres toxiques sont préservés par quelqu'un après la cérémonie, cette personne pourra prouver de faux faits. Revenant à notre exemple, nous pouvons prouver que 2 est la racine de l'équation, bien que ce ne soit évidemment pas le cas.

La cérémonie


Les projets sérieux utilisant les protocoles SNARK sont bien conscients du problème des paramètres toxiques et prennent au sérieux la justesse de la procédure de génération des paramètres initiaux. L'exemple le plus célèbre est la cérémonie Zcash .

La première cérémonie a eu lieu en octobre 2016, 6 développeurs célèbres de la communauté des crypto-monnaies y ont participé. Le protocole de cérémonie offre des garanties de sécurité suffisantes. À savoir, si au moins un participant à la cérémonie est honnête - détruit correctement sa partie des paramètres toxiques - et n'est pas piraté, la cérémonie sera en sécurité.

La deuxième cérémonie, plus avancée, de génération de paramètres de confiance a eu lieu en 2017-2018. Il comprenait déjà deux étapes, dans la première partie (Pouvoirs de Tau) 87 personnes ont participé et dans la partie finale (Sapling MPC) plus de 90 personnes. Comme dans le cas de la cérémonie d'origine, avec l'honnêteté d'au moins un participant, la cérémonie peut être considérée comme sûre. Une caractéristique importante de la deuxième cérémonie était que n'importe qui pouvait participer. Ainsi, tout le monde a eu la chance d'obtenir à 100% des garanties d'exactitude du protocole.

En conclusion, il convient de noter que la criticité de la cérémonie et les menaces qui en découlent doivent être considérées séparément pour chaque système spécifique. Et en même temps, pour tous les systèmes utilisant les protocoles SNARK, une procédure fiable pour générer des paramètres initiaux avec des garanties pour la destruction des paramètres toxiques est requise.

Source: https://habr.com/ru/post/fr434720/


All Articles