Amélioration du protocole de calcul multipartite zk-SNARK

Sean Bowe, Ariel Gabizon and Ian Miers | Oct 31, 2017

zk-SNARK – les preuves à divulgation nulle de connaissance au cœur de Zcash nécessitent une cérémonie de génération de paramètres pour chaque déclaration pour laquelle vous souhaitez créer des preuves. Bien que la confidentialité soit protégée par les zk-SNARK de façon inconditionnelle, si cette cérémonie est compromise, il devient possible de contrefaire Zcash. Il est donc important pour nous de nous assurer que ces paramètres sont créés de manière sécurisée.

L’année dernière, Zcash a effectué une cérémonie de génération de paramètres en utilisant un protocole de calcul multipartite (MPC). Dans le cadre de ces protocoles, une seule partie non compromise permet d’obtenir des paramètres sécurisés. En d’autres termes, pour compromettre la cérémonie, chaque participant doit être compromis.

Cependant, le protocole que nous avons utilisé pour la cérémonie ne pouvait pas évoluer au-delà d’une poignée de participants. À mesure que nous continuons à mettre à niveau Zcash, nous devrons effectuer davantage de ces configurations, l’amélioration de l’évolutivité et des performances de ce protocole est donc importante pour nous. En outre, les projets en dehors de Zcash qui souhaitent utiliser des zk-SNARK peuvent avoir besoin d’effectuer leurs propres configurations, nous aimerions donc également réduire les coûts et simplifier les choses pour eux.

Ariel Gabizon, Ian Miers et moi-même venons de publier un document portant sur un nouveau protocole de calcul multipartite capable d’évoluer pour prendre en charge un nombre pratiquement illimité de participants. Le document porte également sur la construction de la courbe elliptique renforcée, BLS12-381, un sujet que nous avons déjà abordé dans notre blog.

Protocole de calcul multipartite avec échange possible des participants

Dans le cadre du protocole de calcul multipartite d’origine, tous les participants devaient s’engager à l’avance par rapport à leur part de « déchet toxique » afin de se protéger contre les attaques adaptatives. Ainsi, tous les participants devaient être disponibles pendant toute la durée du protocole, et personne ne pouvait quitter la cérémonie sans entraîner l’abandon du protocole complet. Les participants devaient assurer la garde de leur matériel tout au long du processus, la cérémonie ne pouvait donc comprendre qu’une poignée de personnes.

Notre nouveau protocole est ce que nous appelons un protocole de calcul multipartite avec échange possible des participants. Comme auparavant, un seul participant doit être honnête (non compromis) pour que la cérémonie soit sécurisée. Mais les participants rejoignent désormais le protocole, apportent leur contribution et quittent immédiatement la cérémonie. Cela permet à la cérémonie d’évoluer afin d’accueillir un grand nombre de participants et de se dérouler sur une plus longue période. Ce nouveau protocole réduit également la surface d’exposition aux attaques pour les participants et élimine le besoin d’une synchronisation coûteuse.

Deux phases

Le protocole de calcul multipartite d'origine comprenait trois phases de calculs. Les participants devaient agir, puis patienter jusqu'à ce que ce soit leur tour lors de la prochaine phase. Entre la première et la deuxième phase, nous devions effectuer des transformations de Fourier rapide qui sont très onéreuses. Ainsi, cela nuisait à la performance du calcul multipartite d'origine.

Avec le nouveau protocole, nous sommes parvenus à réaliser les calculs multipartites en seulement deux phases. En outre, la première phase s'adapte au circuit zk-SNARK spécifique utilisé, ainsi, une cérémonie collective globale peut être effectuée afin d'évaluer cette phase pour l'ensemble des projets qui souhaitent utiliser des zk-SNARK. La seconde phase ne comprend aucune transformation de Fourier rapide, ce qui signifie que les calculs multipartites pour Zcash et d'autres projets peuvent atteindre un nombre illimité de participants, sans pour autant entraîner des calculs trop coûteux.

Nous avons commencé la mise en place de cette première phrase de la cérémonie de calcul multipartite. Elle est rédigée en Rust et utilise la nouvelle courbe elliptique BLS12-381.

Synthèse

Ce nouveau protocole améliore considérablement la sécurité des cérémonies de génération de paramètres zk-SNARK :

  • Le protocole permet à la cérémonie d'impliquer un grand nombre de participants. Chaque participant possède la même propriété, et seul l'un d'entre eux doit être honnête pour garantir la sécurité du paramètre.
  • Il permet d'offrir aux participants davantage de souplesse en matière de matériel et de système opérationnel utilisés pour participer à la cérémonie. Ainsi, cela réduit le nombre de dépendances et de lignes de codes que nous devons faire vérifier.
  • Il réduit considérablement la durée de la cérémonie pour chaque participant, en limitant la surface superficielle des attaques et en autorisant les contributions d'un ensemble plus large de participants.
  • Il utilise une construction de courbe elliptique plus robuste qui améliore la sécurité.

Nous serons ravis de vous partager prochainement davantage de détails sur les cérémonies de génération de paramètres zk-SNARK.

zkSNARKs, cryptography, Parameter Generation | Afficher tous les mots-clés

Notice: Network Upgrade Overwinter will activate at block 347500, to be mined 2018-06-25 12:00 UTC-04:00 assuming 150 seconds/block