L'article Améliorer la confidentialité de la blockchain : Le rôle des preuves à divulgation nulle de connaissance dans les transactions sécurisées est apparu en premier sur Coinpedia Fintech News

Introduction

Nous vivons dans un monde d'information, où les données sont le nouveau pétrole. Ainsi, avec les données, tout et n'importe quoi est possible. Cette réalité axée sur les données apporte des responsabilités significatives, notamment en veillant à ce que les informations privées et sensibles restent protégées. La technologie blockchain est un outil puissant qui privilégie la transparence sur la confidentialité. Bien que la transparence soit essentielle pour la confiance dans un système décentralisé, elle peut exposer des détails sensibles, ce qui peut ne pas toujours être souhaitable, surtout dans des applications impliquant des transactions confidentielles ou des informations personnelles.

Pour surmonter ces limites, les développeurs ont introduit une gamme de technologies améliorant la confidentialité telles que les preuves à divulgation nulle de connaissance (ZKP), les zk-SNARKs, les pièces de confidentialité comme Monero et Zcash, et des techniques de chiffrement avancées comme le chiffrement homomorphe (HE).

Ces technologies maintiennent un équilibre entre transparence et confidentialité des utilisateurs.

Dans cet article, nous allons explorer comment ces outils améliorant la confidentialité fonctionnent, et leurs applications dans le développement de la blockchain.

Alors, commençons !

Vous devez penser que la blockchain est l'option la plus sûre et la plus transparente dans le domaine technologique, n'est-ce pas ? Mais elle a encore quelques défauts. Par exemple, considérons Bitcoin, c'est une monnaie transparente (blockchain publique). Où vos adresses sont pseudonymes. Mais il y a un piège ! Les mineurs peuvent encore avoir le pouvoir d'accéder aux données sur la blockchain avant qu'elles ne soient officiellement sur la chaîne. Effrayant, n'est-ce pas ?!

Ainsi, pour éviter toutes ces instances, nous optons pour des options améliorant la confidentialité et l'une d'elles est les ZPks. Jetons un coup d'œil à cela !

Preuves à divulgation nulle de connaissance et zk-SNARKs

Qu'est-ce que les preuves à divulgation nulle de connaissance ?

Une preuve à divulgation nulle de connaissance est un protocole cryptographique où il y a un prouveur et un vérificateur. Ici, le prouveur doit convaincre le vérificateur qu'une certaine déclaration est vraie sans révéler d'autres faits ou informations au-delà du simple fait que la déclaration est vraie.

Comprenons cela plus intuitivement en prenant un exemple de la vie réelle :

Donc, disons que vous avez un ami Carl qui est daltonien et que vous avez deux balles (une rouge et une verte) et vous devez lui faire distinguer les deux sans vraiment révéler quelle balle est laquelle.

Alors ici, vous êtes le prouveur et Carl est le vérificateur. Maintenant, vous demandez à Carl de mettre les deux balles à l'arrière et il peut en choisir une au hasard où il peut vous poser une question simple : ai-je échangé les balles ? Cette procédure peut ensuite être effectuée de manière itérative et avec une probabilité de 50 %, Carl devrait être convaincu (‘complétude’) que les balles sont effectivement de couleurs différentes.

Ainsi, comme le nom l'indique, vous avez prouvé la validité de votre déclaration et votre ami n'apprend jamais quelle balle est verte et laquelle est rouge ; en effet, il ne gagne aucune connaissance sur la façon de distinguer les balles. Ainsi, cette connaissance peut ensuite être transférée à un tiers également.

Exemple de code :

# Simulation ZKP simplefrom hashlib import sha256# Supposons que le prouveur connaisse le mot de passe ‘secret’mot_de_passe_secret = “blockchain_rocks”hash_of_secret = sha256(mot_de_passe_secret.encode()).hexdigest()# Le prouveur veut prouver sa connaissance sans révéler ‘mot_de_passe_secret’def prouver_connaissance(mot_de_passe_devine):    return sha256(mot_de_passe_devine.encode()).hexdigest() == hash_of_secret# Le vérificateur confirme la connaissance du prouveur en faisant correspondre les hachagesprint(prouver_connaissance(“blockchain_rocks”)) # Retourne True sans révéler ‘mot_de_passe_secret’

zk-SNARKs : Arguments succincts non interactifs de connaissance à divulgation nulle

Les zk-SNARKs signifient Arguments succincts non interactifs de connaissance à divulgation nulle. C'est une construction de preuve où le prouveur doit prouver la vérité ou sa possession sans interagir avec le vérificateur. C'est juste une version plus spécifique des ZKP. Le zk-SNARK est plus utile lorsqu'il ne peut y avoir aucune possibilité de communication entre deux parties, par exemple, des transactions en ligne sans communication en temps réel.

Ce concept est un peu difficile à comprendre, en résumé, nous pouvons dire que vous dites à une autre personne que vous connaissez son secret sans dire ce qu'est réellement le secret mais en le prouvant.

Saviez-vous ? que les zk-SNARKs sont implémentés dans Zcash, une pièce de confidentialité connue pour ses transactions protégées ?

Exercice : Construire un zk-SNARK avec libsnark

Utilisez libsnark pour configurer et vérifier un simple zk-SNARK, ou consultez la documentation de la bibliothèque pour des projets d'exemple sur la construction de preuves zk-SNARK.

Maintenant, la question est : comment fonctionne ce ZKP non interactif ?

  • Configuration : les zk-SNARKs nécessitent une configuration unique pour des clés cryptographiques, utilisées pour construire des preuves.

  • Génération de preuves : le prouveur utilise des informations privées pour générer une preuve succincte qui peut être vérifiée publiquement.

  • Vérification : les vérificateurs peuvent confirmer que le prouveur possède certaines connaissances sans connaître les détails.

Pièces de confidentialité

Les pièces de confidentialité sont des cryptomonnaies spécifiquement conçues pour prioriser la confidentialité et cacher l'identité d'un utilisateur.

Monero

Monero (XMR) est une cryptomonnaie avec une confidentialité améliorée. Il utilise une blockchain spéciale qui cache les détails des transactions, rendant presque impossible pour les tiers de voir qui envoie ou reçoit Monero, combien est envoyé, ou tout solde de compte. Cela maintient l'anonymat et garantit que toutes les unités de Monero sont fongibles.

Fongible (interchangeable) : signifiant qu'un Monero est toujours égal à un autre, sans historique traçable.

Comment Monero garantit-il des transactions privées ?

Monero met en œuvre des techniques uniques comme suit pour garantir des transactions privées. Jetons un coup d'œil à ces techniques :

Signatures en anneau : combine la signature de transaction d'un utilisateur avec d'autres pour obscurcir la véritable origine.

Exemple de code :

import random# Liste des clés publiques pour les participantsparticipants = [“Alice”, “Bob”, “Charlie”, “Dave”]# Choisir un participant aléatoire comme « expéditeur »sender = random.choice(participants)# Mélanger la signature de l'expéditeur avec d'autresmixed_signatures = random.sample(participants, len(participants))print(“Groupe de signature en anneau :”, mixed_signatures)print(“Expéditeur (caché) :”, sender)

Adresses furtives : crée des adresses uniques à usage unique pour chaque transaction, garantissant que seul l'expéditeur et le destinataire connaissent la destination.

Transactions confidentielles en anneau (RingCT) : dissimule le montant de la transaction pour empêcher les tiers de lier les transactions.

  • Lire aussi :

  •   Blockchain Scaling Simplifié : Un Guide des Solutions Efficaces de Niveau 1 et Niveau 2

  •   ,

Zcash

Zcash (ZEC) est une pièce de confidentialité qui est construite sur le code de Bitcoin. Elle partage de nombreuses similitudes avec Bitcoin, comme des transactions régulières et transparentes, mais offre également une option pour des transactions protégées.

Transaction protégée : Les transactions protégées dans Zcash sont des transactions privées qui utilisent une méthode cryptographique appelée zk-SNARKs (Arguments succincts non interactifs de connaissance à divulgation nulle) pour garder complètement confidentiels les détails des transactions.

Ainsi, Zcash prend en charge à la fois des transactions transparentes et protégées avec des adresses T (adresses transparentes qui fonctionnent comme des bitcoins standard) et des adresses Z (adresses protégées qui cachent les détails des transactions).

Les transactions protégées de Zcash sont un excellent choix pour des scénarios nécessitant de la confidentialité, comme les transactions B2B dans la gestion de la chaîne d'approvisionnement, où la confidentialité des données est cruciale.

Configuration

# Installer le client Zcashsudo apt-get update && sudo apt-get install zcash# Créer une adresse protégéezcash-cli z_getnewaddress# Envoyer à l'adresse protégéezcash-cli z_sendmany

Chiffrement homomorphe et son rôle dans la blockchain

Le chiffrement homomorphe (HE) est un type de chiffrement qui vous permet d'effectuer des calculs sur des données tout en étant encore chiffrées. Cela signifie que vous n'avez pas besoin de déchiffrer les données pour travailler avec. Lorsque vous déchiffrez finalement les résultats, c'est comme si vous aviez effectué les calculs sur les données d'origine, non chiffrées.

Cette technique est particulièrement utile pour la confidentialité, car elle permet de stocker et de traiter des données sensibles sur des serveurs externes (comme dans le cloud) sans les exposer.

Il existe deux types principaux de techniques de chiffrement homomorphe :

  • Chiffrement homomorphe partiel (PHE) : le PHE partiel permet uniquement des opérations spécifiques sur les données par exemple l'addition et la multiplication.

  • Chiffrement homomorphe complet (FHE) : le FHE prend en charge des opérations arbitraires sur des données chiffrées. Mais il est gourmand en ressources.

Exemple de code :

from seal import EncryptionParameters, SEALContext, IntegerEncoder# Définir les paramètres de chiffrementparms = EncryptionParameters(scheme_type.BFV)parms.set_poly_modulus_degree(1024)parms.set_coeff_modulus(coeff_modulus_128(1024))# Exemple d'addition chiffréeencrypted_sum = add_encrypted_values(enc1, enc2)print(“Somme chiffrée :”, encrypted_sum)

Conclusion

Les technologies améliorant la confidentialité comme les preuves à divulgation nulle de connaissance (ZKP), zk-SNARKs, les pièces de confidentialité et le chiffrement homomorphe redéfinissent ce qui est possible dans la blockchain en créant un équilibre essentiel entre confidentialité et transparence. Pour les développeurs, cette évolution apporte des opportunités passionnantes. En intégrant ces fonctionnalités de confidentialité dans les applications décentralisées, les développeurs peuvent répondre aux besoins d'industries telles que la finance, la santé et l'IoT, où la confidentialité est nécessaire.

Continuez à apprendre et bon codage !!