Qu'est-ce que le Zero-knowledge(ZK) proof?steemCreated with Sketch.

in #cryptofr6 years ago (edited)

Qu'est-ce que le Zero-knowledge(ZK) proof?

par Hugo @teamazor

Le Zero-knowledge proof (preuve à divulgation nulle de connaissance) est un système d'exploitation des donnés qui permet à deux partis d'échanger des informations personnelles sans que personnes d'autres qu'eux n'y aient accès.

La confidentialité des données des clients et des citoyens est devenue un enjeu pour les entreprises comme pour les gouvernements. Que ce soit sur les réseaux sociaux ou bien dans des domaines encore plus privés comme la santé, les affaires de justice, le vote aux éléctions etc, Zero-knowledge proof appliqué à la blockchain semble être le système le plus adapté.

La notion de connaissance zéro a été proposée pour la première fois en 1985 par les chercheurs du MIT, Shafi Goldwasser, Silvio Micali et Charles Rackoff dans leur article "La complexité des connaissances des systèmes de preuve interactifs":

Un protocole de connaissance zéro (ZK) est une méthode par laquelle une partie (le prouveur) peut prouver à une autre partie (le vérificateur) que quelque chose est vrai, sans révéler aucune information en dehors du fait que cette affirmation spécifique est vraie.

L'exemple des deux balles.

Deux personnes A et B font un test. A se trouve dans une pièce les yeux bandés tandis que B arrive avec deux balles l'une blanche et l'autre noire. B donne à A les deux balles et lui demande de les cacher dans son dos. A ne connaît pas la couleur des balles mais il va devoir grace à l'aide de B deviner qu'elle balle est blanche et laquelle est noire. Pour cela A va montrer une des deux balles à B et B devra lui dire de quelle couleur est la balle. Ils vont reproduire plusieurs fois l'expérience jusqu'à ce qu'A soit convaincu que B dit vrai sur la couleur des balles. À la fin A ne sera toujours pas la couleur des balles mais il sera sûr d'une chose c'est que B arrive bien à faire la distinction entre les deux balles et que ça n'est pas le fruit du hasard. A pourra confirmer que telle balle est noire et que telle balle est blanche sans même avoir besoin de les voir.
0 Yuz2ekVt0GQZsQ-u.jpg

Propriétés

Trois propriétés doivent être satisfaites :

  • consistance (completeness) : si le fournisseur de preuve et le vérificateur suivent le protocole alors le vérificateur doit toujours accepter la preuve.
  • robustesse (soundness) : si la proposition est fausse, aucun fournisseur de preuve malicieux ne peut convaincre un vérificateur « honnête » que la proposition est vraie et ceci avec une forte probabilité
  • aucun apport d'information (zero knowledge) : le vérificateur n'apprend de la part du fournisseur de preuve rien de plus que la véracité de la proposition, il n'obtient aucune information qu'il ne connaissait déjà sans l'apport du fournisseur de preuve. Si le vérificateur ne suit pas la procédure, cette définition reste valable aussi longtemps que le fournisseur de preuve suit la procédure.

Les deux premières propriétés sont les mêmes qui servent à définir un système de preuve interactive, qui est un concept plus général. C'est la troisième propriété qui fait le zero knowledge.

Sécurité

La sécurité des preuves peut être classée en plusieurs catégories, suivant la sécurité attendue par les différentes notions de sécurité précédemment définies, c'est-à-dire la robustesse et le non-apport de connaissance. On parle alors de :

  • preuve « calculatoire » : impossibilité pour un observateur de distinguer en un temps indéterminé une preuve authentique d'une preuve forgée ou aléatoire
  • preuve « statistique », ou parfaite : la distribution des preuves authentiques est la même que celle des preuves aléatoires ou forgées. Cela peut se voir de la même manière que pour les preuves calculatoires, en donnant une puissance de calcul infinie (ou non bornée) au distingueur.

La première ne rejette pas l'existence d'une méthode (mais celle-ci, si elle existe, n'aura pas une complexité indéterminée) alors que la preuve parfaite assure qu'aucune méthode n'existe (d'après la théorie de l'information).

De manière similaire, si la robustesse est statistique, le terme « preuve » sera utilisé, autrement si elle est calculatoire, le terme « argument » sera utilisé pour désigner la preuve.

Construction générale

Une méthode pour construire des preuves sans divulgation de connaissances utilise ce qu'on appelle des protocoles Σ1 (ainsi nommés en raison de la communication en trois échanges qui fait penser à la lettre grecque Sigma). Un protocole Σ est un protocole interactif entre un prouveur et un vérifieur mettant en jeu trois échanges :

  • L’engagement, qui est un premier message envoyé par le prouveur au vérifieur ;
  • Le défi, qui est une réponse envoyée par le vérifieur ;
  • La réponse, qui est le dernier message envoyé par le prouveur.

La sécurité d'un protocole Σ est très proche de celle d'une preuve sans divulgation de connaissance : la consistance, la robustesse spéciale et l'apport nul d'information avec un vérifieur honnête. La construction générale consiste alors à imposer l'honnêteté au vérifieur en l'obligeant à générer son défi indépendamment de l’engagement par le biais d’un schéma de mise en gage cryptographique1.

De multiples preuves sans divulgation de connaissances reposent sur cette construction, par exemple le protocole de Schnorr, ou le schéma d'identification de Guillou-Quisquater. Une des raisons pouvant être qu'il est plus aisé de travailler sur les protocoles Σ, qui possèdent en plus des bonnes propriétés de régularité : il existe des constructions pour effectuer la conjonction et la disjonction de protocoles Σ. Propriétés que l'on n'a pas sur les preuves sans divulgation de connaissances génériques.

Zerocash, Monero, Sumocoin, et bientot Starkware applique ce système d'exploitation des donnés pour l'échange de leurs tokens et voilà en pratique ce que cela peut donner :

Zerocash

La fonctionnalité de Zerocash est réalisée en utilisant seulement deux nouveaux types de transactions: les "mint transactions" et les "pour transactions". Comme les transactions Bitcoin, les transactions Zerocash sont diffusées et ajoutées à un registre décentralisé.

Mint transactions.

Une mint transaction permet à un utilisateur de convertir un nombre de bitcoins non-anonymes (à partir d'une adresse Bitcoin) dans le même nombre de zerocoins appartenant à une adresse Zerocash. La mint transactions elle-même consiste en une transaction cryptographique qui engage une nouvelle pièce et spécifie la valeur de la pièce, l'adresse du propriétaire et le numéro de série (unique). La transaction est basé sur la fonction de hachage SHA-256 et masque à la fois la valeur de la pièce et l'adresse du propriétaire.

construction-summary.png

Les nœuds individuels de Zerocash maintiennent un arbre de Merkle (structure de données contenant un résumé d'information d'un volume de données, généralement grand (comme un fichier) sur toutes les transactions de pièces vus jusqu'ici. Tout utilisateur peut alors démontrer être à l'origine d'une transaction, via ses valeurs dégagées ainsi qu'un court témoignage de l'appartenance à l'arbre. Malheureusement, la simple publication de cette information en tant que «preuve de propriété» n'est pas privée; au lieu de cela, pour assurer la confidentialité, nous nous appuyons sur un deuxième type de transaction, qui permet à un utilisateur de prouver, en connaissance de cause, qu'il connaît une telle information.

Pour transactions.

Une pour transaction permet à un utilisateur de faire un paiement privé, en consommant un certain nombre de pièces de monnaie (appartenant à cet utilisateur) afin de produire de nouvelles pièces. En gros, une pour transaction, pour (jusqu'à) deux pièces de monnaie d'entrée et (jusqu'à) deux pièces de sortie, consiste à prouver, en connaissance de cause, que:

  • l'utilisateur possède les deux pièces d'entrée;
  • chacune des pièces d'entrée apparaît dans une transaction de monnaie précédente ou en tant que pièce de sortie d'une transaction précédente; et
  • la valeur totale des pièces d'entrée est égale à la valeur totale des pièces de sortie.

La transaction de versement consomme les pièces d'entrée en révélant leurs numéros de série, mais ne révèle aucune autre information telle que les valeurs des pièces d'entrée ou de sortie, ou les adresses de leurs propriétaires. En option, la transaction versée peut également générer des bitcoins (non anonymes). Cette dernière fonctionnalité peut être utilisée pour transférer des zerocoins dans des bitcoins (non anonymes) ou pour payer des frais de transaction.

Le Japon bannit les monnaies privées

Récemment le Japon a décidé de bannir les monnaies privées des exchanges après le braquage de 523 millions de NEM sur CoinCheck. Selon la police les hackeurs se seraient servis de monnaies comme monero pour faire disparaitre toutes les traces de leurs transactions.
Si les privacy tokens ont permis aux hackeurs d'emporter leur butin sans résistance ceux-ci ne sont pas à l'origine des défaillances de sécurité sur l'exchange CoinCheck.
Selon moi ce type de mesure ne peut être que temporaire et dû à la difficulté pour des législateurs de comprendre l'impact que ce mode d'échange aura dans le futur.

Le débat est lancé et les enjeux commerciaux et de liberté individuelle amèneront de nouveau les gouvernants à légiférer.



Si tu es nouveau dans la crypto (ou pas), viens faire un tour sur notre communauté Telegram!
Tu y retrouveras tout ce dont tu as besoin pour bien débuter avec la crypto : des articles pour débutants, des articles pour la culture générale, des reviews d'ICO, du trading, les dernières informations et une communauté chaude et chaleureuse!

🙏 | Si tu aimes cet article, n'hésite pas à upvoter / commenter / resteemer

🙌 | Si tu aimes notre travail et que tu veux nous soutenir en nous faisant un don en ETH, c'est par ici : 0x27D31fa37FA5dC2B19134302517e27342b649F2a