Ceci est une traduction automatique. L’original en anglais est ici: Update 09 December, 2021
Nous détestons décevoir, mais malheureusement, la cuspide s’est avérée légèrement moins cuspide que prévu, donc tout testnet est encore à quelques jours. Nous vous informerons dès qu’il sera prêt - cela pourrait vraiment être n’importe quel jour maintenant, mais nous ne tenterons pas le destin en prédisant.
La semaine dernière, David Rusu a fait une démonstration des transactions confidentielles en anneau (Ring CT) à l’équipe. C’était fascinant, mais assez lourd en mathématiques, donc cette semaine, nous avons une version simplifiée avec le strict minimum d’algèbre dans le but de donner un peu d’arrière-plan et d’expliquer la direction que nous prenons avec les transactions DBC privées .
Progrès général
David Rusu, @danda et @Anselme se sont tous retrouvés coincés dans divers aspects de la mise en œuvre de la signature en anneau, y compris les preuves de paiement.
@ChrisO a lutté vaillamment avec GitHub Actions pour essayer d’obtenir la version testnet digne, mais cela n’a pas joué au ballon ces derniers jours.
@bochaco a travaillé aux côtés de @chrisO dans le but de resserrer les tests CLI défaillants restants, et nous avons écrasé de plus en plus de cas marginaux autour des divisions de section
Toute l’équipe s’est penchée sur l’adhésion DKG - quel est le moyen le plus efficace de s’assurer que les aînés peuvent suivre les adultes dans leurs sections, et comment pouvons-nous nous protéger contre les attaques de vente de clés, où un adversaire achète avec succès le contrôle d’une section ?
Signatures de sonnerie et coffre-fort
Nous voulons passer un DBC. Pour ce faire, nous devons prouver que nous sommes le propriétaire. Mais pour augmenter la confidentialité de nos transactions DBC, nous ne voulons pas que la Monnaie sache précisément qui nous sommes - ce qu’elle ferait si nous utilisions une clé standard. De plus, la Monnaie doit également savoir que ce DBC n’a pas déjà été dépensé.
Pour atteindre ces objectifs, nous cherchons à utiliser des signatures en anneau, en nous appuyant sur le travail de Ring CT réalisé par Monero, et en ajoutant une variante sûre de multi signature et preuve de paiement.
Qu’est-ce qu’une signature circulaire ?
Les signatures en anneau sont une méthode de sécurité probabiliste plutôt qu’une méthode cryptographiquement difficile, mais comme l’a démontré Monero, elle reste très efficace pour anonymiser les transactions.
Une signature en anneau est un moyen de cacher une clé publique (telle que notre clé propriétaire DBC) parmi de nombreuses autres clés leurres. Un anneau n’est qu’un mot pour un groupe, donc sur Safe, notre clé est dans l’anneau avec un tas de leurres choisis au hasard parmi un pool de clés que la Monnaie connaît.
Une signature faite par n’importe quelle clé de l’anneau est valide, mais la Monnaie ne peut pas dire quelle clé de l’anneau a réellement signé une transaction, seule l’une d’entre elles l’a fait. Plus le pool de clés leurres est grand, plus il sera difficile pour un observateur du système de deviner la clé réelle qui a signé une transaction.
Nous utilisons la signature en anneau pour signer un message, comme une demande de réémission d’un DBC afin que nous puissions le dépenser. À partir de cette signature, la Monnaie peut dire que le message est valide, mais pas qui nous sommes. Il peut également vérifier que notre clé n’a pas été utilisée auparavant pour éviter les doubles dépenses.
La signature en anneau elle-même contient (entre autres) une valeur aveuglante (nombre aléatoire) pour chacun des leurres et une pour notre clé, plus une « image clé » pour notre clé. Une image clé est une représentation de notre clé qui cache sa véritable identité.
Quelques points à noter :
-
Les clés leurres ont toutes été vues par la Monnaie auparavant. Il peut s’agir de clés de propriété d’autres DBC non dépensés ou d’autres clés publiques valides.
-
Chaque signal de sonnerie ne peut être utilisé qu’une seule fois.
-
L’image clé est stockée dans le livre des dépenses, de sorte que la menthe peut dire qu’elle a déjà été dépensée.
-
La création de notre image clé nécessite notre clé secrète.
Quelle est donc notre clé secrète ? Pour expliquer cela, nous devons entrer dans la cryptographie à courbe elliptique (ECC).
Cryptographie à courbe elliptique
ECC est un type de cryptographie asymétrique utilisé par de nombreuses crypto-monnaies, y compris le bitcoin. Comme tous les cryptosystèmes asymétriques, il dépend de calculs faciles dans un sens et très difficiles dans l’autre, c’est-à-dire des fonctions à sens unique.
Dans ECC, le calcul est de savoir comment aller d’un point d’une courbe à un autre. Voici comment ça fonctionne
Disons que nous avons une courbe de la forme : y2= x3 + ax + b.
Nous utilisons la courbe BLS12-381 (en particulier blstrs) qui a ce genre de forme:
La courbe est énorme, couvrant un corps fini Fq où q
est un très grand nombre premier, ce qui signifie qu’il y a un nombre énorme (mais fini) de points possibles sur la courbe. Toutes les opérations arithmétiques sur les points de la courbe sont modulo q
. En arithmétique modulaire, une fois qu’une valeur est supérieure à q
, elle reboucle jusqu’au début, comme avec une horloge : 3 + 10 modulo 12
= 1.
Lorsque nous multiplions un point sur la courbe ( A
) avec un autre point sur la courbe s
, nous arriverons, apparemment au hasard, à un autre point ( B
) qui est égalementsur la courbe. Faire cette multiplication est très rapide et facile, mais l’inverser - déterminer par quoi s
nous avons multiplié le point A
pour arriver au point B
- prendra généralement des milliers d’années, car vous devez essentiellement parcourir toutes les options possibles jusqu’à ce que vous trouviez le bon. Il n’y a pas de modèle évident à l’endroit où les points successifs apparaissent sur la courbe, et aucun moyen facile de rétroconcevoir le processus.
Il y a des points spéciaux sur cette courbe appelés générateurs. Un générateur ( G
) a la propriété que si vous continuez à l’ajouter à lui-même ( G, G+G, G+G+G ..
), il finira par définir tous les points possibles sur la courbe. Nous créons une paire de clés en choisissant un G
et en le multipliant par s
, un autre point sur la courbe connu de nous seuls.
-
sG
est notre clé publique,s
est notre clé secrète.
OK, nous avons donc notre clé publique sG
(qui dans notre exemple est notre clé propriétaire DBC) et notre clé secrète. Nous devons maintenant créer une image clé I. La formule pour ce faire est la suivante :
I = sHp(sG)
Notre image clé est notre clé secrète s
multipliée par un hachage de notre clé publique sG
. Notre image clé « je » est un autre point sur la courbe.
Notez que puisque notre clé secrète s
est requise pour créer I
, nous seuls pouvons le créer. ‹ I › est stocké dans le livre de dépenses.
Nous pouvons donc maintenant prouver que notre identité est valide avec « je » même si notre clé publique est hachée et multipliée par notre clé secrète, et que notre clé publique est masquée et mélangée à toutes les autres clés leurres masquées. La Monnaie sait seulement que l’une de ces clés est la bonne et si notre image clé est réutilisée, elle sera retrouvée dans le registre des dépenses et bloquée.
Prochaines étapes
David Rusu intègre Ring CT dans le code DBC. La prochaine étape consistera à le faire fonctionner avec BLS, puis à examiner la preuve de paiement. @danda et @Anselme ont jeté les bases ici. L’idée est d’avoir des factures contenant des clés publiques de paiement et Pedersen Commitments. Le paiement DBC sera réémis pour avoir exactement le même engagement Pedersen que celui de la facture. De cette façon, nous pouvons prouver que nous avons émis le bon montant et au bon bénéficiaire. Nous pouvons afficher publiquement la facture et le paiement DBC à la vue de tous, en fournissant la preuve que nous avons payé cette facture. C’est vraiment un travail en cours.
Liens utiles
- Site Web du réseau sécurisé
- Safe Network Primer
- Principes de base du réseau
- Feuille de route
- Glossaire
N’hésitez pas à répondre ci-dessous avec des liens vers les traductions de cette mise à jour de développement et les modérateurs les ajouteront ici.
En tant que projet open source, nous sommes toujours à la recherche de commentaires, de commentaires et de contributions de la communauté. Ne soyez donc pas timide, rejoignez-nous et créons ensemble le réseau sécurisé!