クリプトノート v2.0
Le document présenté ici est le livre blanc CryptoNote v2.0 de Nicolas van Saberhagen (2013), qui décrit les fondements cryptographiques sur lesquels Monero est construit. Il ne s'agit pas d'un livre blanc spécifique à Monero — Monero a été lancé en 2014 en tant que fork de l'implémentation de référence CryptoNote (Bytecoin) et a depuis considérablement évolué au-delà du protocole original.
Introduction
« Bitcoin » [1] est une mise en œuvre réussie du concept de monnaie électronique p2p. Les deux les professionnels et le grand public en sont venus à apprécier la combinaison pratique de transactions publiques et proof-of-work comme modèle de confiance. Aujourd'hui, la base d'utilisateurs de la monnaie électronique croît à un rythme soutenu ; les clients sont attirés par les frais peu élevés et l’anonymat assuré par la monnaie électronique et les commerçants valorisent son émission prévue et décentralisée. Bitcoin a a prouvé que l’argent électronique peut être aussi simple que le papier-monnaie et aussi pratique que le papier-monnaie. cartes de crédit. Malheureusement, Bitcoin souffre de plusieurs déficiences. Par exemple, le système distribué la nature est inflexible, empêchant la mise en œuvre de nouvelles fonctionnalités jusqu'à ce que presque tous les utilisateurs du réseau mettent à jour leurs clients. Certaines failles critiques qui ne peuvent pas être corrigées rapidement découragent les Bitcoin propagation généralisée. Dans des modèles aussi inflexibles, il est plus efficace de déployer un nouveau projet plutôt que de réparer perpétuellement le projet original. Dans cet article, nous étudions et proposons des solutions aux principales déficiences de Bitcoin. Nous croyons qu'un système prenant en compte les solutions que nous proposons conduira à une saine concurrence entre les différents systèmes de monnaie électronique. Nous proposons également notre propre monnaie électronique, « CryptoNote », un nom qui souligne la prochaine avancée dans le domaine de la monnaie électronique.
導入
「Bitcoin」 [1] は、p2p 電子キャッシュの概念の実装に成功しました。両方 専門家も一般の人々も、これらの便利な組み合わせを高く評価するようになりました。 パブリック トランザクションと信頼モデルとしての proof-of-work。現在、電子マネーのユーザーベースは 着実なペースで成長しています。顧客は低料金と匿名性の提供に魅力を感じています 電子現金によるものであり、加盟店は予測された分散型排出量を重視しています。 Bitcoin は 電子マネーは紙幣と同じくらい簡単で、紙幣と同じくらい便利であることが効果的に証明されました。 クレジットカード。 残念ながら、Bitcoin にはいくつかの欠陥があります。たとえば、システムの分散型 性質は柔軟性が高く、ほぼすべてのネットワーク ユーザーがクライアントを更新するまで新しい機能を実装できません。修正できないいくつかの重大な欠陥は、Bitcoin の攻撃を迅速に阻止します。 広範な伝播。このような柔軟性のないモデルでは、新しいプロジェクトを展開する方が効率的です。 元のプロジェクトを永続的に修正するのではなく、 この文書では、Bitcoin の主な欠陥に対する解決策を研究し、提案します。私たちは信じています 私たちが提案するソリューションを考慮したシステムが健全な競争につながることを保証します さまざまな電子マネー システム間で。独自の電子マネー「CryptoNote」も提案しています。 電子マネーの次の進歩を強調する名前です。
Bitcoin Inconvénients et solutions possibles
2 Bitcoin inconvénients et quelques solutions possibles 2.1 Traçabilité des transactions La confidentialité et l’anonymat sont les aspects les plus importants de l’argent électronique. Paiements peer-to-peer cherchent à être cachés à la vue des tiers, une différence nette par rapport aux systèmes traditionnels. bancaire. En particulier, T. Okamoto et K. Ohta ont décrit six critères de la monnaie électronique idéale, qui incluait « la vie privée : la relation entre l'utilisateur et ses achats doit être introuvable par n’importe qui » [30]. De leur description, nous avons dérivé deux propriétés dont une personne totalement anonyme le modèle de monnaie électronique doit satisfaire afin de se conformer aux exigences décrites par Okamoto et Ohta : Intraçabilité : pour chaque transaction entrante, tous les expéditeurs possibles sont équiprobables. Inassociation : pour deux transactions sortantes, il est impossible de prouver qu'elles ont été envoyées à la même personne. Malheureusement, Bitcoin ne satisfait pas à l'exigence d'intracabilité. Puisque toutes les transactions qui ont lieu entre les participants du réseau sont publiques, toute transaction peut être 1 CryptoNote version 2.0 Nicolas van Saberhagen 17 octobre 2013 1 Introduction « Bitcoin » [1] est une mise en œuvre réussie du concept de monnaie électronique p2p. Les deux les professionnels et le grand public en sont venus à apprécier la combinaison pratique de transactions publiques et proof-of-work comme modèle de confiance. Aujourd'hui, la base d'utilisateurs de la monnaie électronique croît à un rythme soutenu ; les clients sont attirés par les frais peu élevés et l’anonymat assuré par la monnaie électronique et les commerçants valorisent son émission prévue et décentralisée. Bitcoin a a prouvé que l’argent électronique peut être aussi simple que le papier-monnaie et aussi pratique que le papier-monnaie. cartes de crédit. Malheureusement, Bitcoin souffre de plusieurs déficiences. Par exemple, le système distribué la nature est inflexible, empêchant la mise en œuvre de nouvelles fonctionnalités jusqu'à ce que presque tous les utilisateurs du réseau mettent à jour leurs clients. Certaines failles critiques qui ne peuvent pas être corrigées rapidement découragent les Bitcoin propagation généralisée. Dans des modèles aussi inflexibles, il est plus efficace de déployer un nouveau projet plutôt que de réparer perpétuellement le projet original. Dans cet article, nous étudions et proposons des solutions aux principales déficiences de Bitcoin. Nous croyons qu'un système prenant en compte les solutions que nous proposons conduira à une saine concurrence entre les différents systèmes de monnaie électronique. Nous proposons également notre propre monnaie électronique, « CryptoNote », un nom qui souligne la prochaine avancée dans le domaine de la monnaie électronique. 2 Bitcoin inconvénients et quelques solutions possibles 2.1 Traçabilité des transactions La confidentialité et l’anonymat sont les aspects les plus importants de l’argent électronique. Paiements peer-to-peer cherchent à être cachés à la vue des tiers, une différence nette par rapport aux systèmes traditionnels. bancaire. En particulier, T. Okamoto et K. Ohta ont décrit six critères de la monnaie électronique idéale, qui incluait « la vie privée : la relation entre l'utilisateur et ses achats doit être introuvable par n’importe qui » [30]. De leur description, nous avons dérivé deux propriétés dont une personne totalement anonyme le modèle de monnaie électronique doit satisfaire afin de se conformer aux exigences décrites par Okamoto et Ohta : Intraçabilité : pour chaque transaction entrante, tous les expéditeurs possibles sont équiprobables. Inassociation : pour deux transactions sortantes, il est impossible de prouver qu'elles ont été envoyées à la même personne. Malheureusement, Bitcoin ne satisfait pas à l'exigence d'intracabilité. Puisque toutes les transactions qui ont lieu entre les participants du réseau sont publiques, toute transaction peut être 1 3 Bitcoin échoue définitivement à l'« intraçabilité ». Quand je vous envoie du BTC, le portefeuille à partir duquel il est envoyé est irrévocablement estampillé sur le blockchain. Il n'y a aucun doute sur qui a envoyé ces fonds, car seul celui qui connaît les clés privées peut les envoyer.sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient contesté [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L’incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu’il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre d'historique unique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Enfin, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir des exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient réSelon le [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L’incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu’il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre unique d'historique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Enfin, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir des exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 4 Vraisemblablement, si chaque utilisateur contribue à son propre anonymat en générant toujours une nouvelle adresse pour CHAQUE paiement reçu (ce qui est absurde mais techniquement la façon "correcte" de le faire), et si chaque utilisateur contribuait à l’anonymat des autres en insistant sur le fait qu’il n’envoie jamais de fonds à la même adresse BTC deux fois, alors Bitcoin ne transmettrait toujours que de manière circonstancielle le test de dissociation. Pourquoi? Les données sur les consommateurs peuvent être utilisées à tout moment pour déterminer une quantité étonnante de choses sur les gens. Voir, par exemple http://www.applieddatalabs.com/content/target-knows-it-shows Maintenant, imaginez que nous soyons dans 20 ans et imaginez encore plus que Target ne savait pas seulement sur vos habitudes d'achat chez Target, mais ils exploitaient le blockchain pendant TOUS VOS ACHATS PERSONNELS AVEC VOTRE PORTEFEUILLE COINBASE POUR LE PASSÉ DOUZE ANS. Ils diront "Hé mon pote, tu voudras peut-être acheter des médicaments contre la toux ce soir, tu ne le feras pas". je me sentirai bien demain." Cela peut ne pas être le cas si le tri multipartite est exploité correctement. Voir par exemple ceciarticle de blog : http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Je ne suis pas totalement convaincu des calculs à ce sujet, mais... un article à la fois, n'est-ce pas ? Citation nécessaire. Alors que le protocole Zerocoin (standalone) peut s'avérer insuffisant, le Zerocash le protocole semble avoir implémenté des transactions de 1 Ko. Ce projet est soutenu par les militaires américains et israéliens, bien sûr, alors qui connaît sa robustesse. De l'autre D’un autre côté, personne ne veut plus pouvoir dépenser des fonds sans surveillance que l’armée. http://zerocash-project.org/ Je ne suis pas convaincu... voir, par exemple, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Citant un développeur de Cryptonote, Maurice Planck (vraisemblablement un pseudonyme) de la cryptonote forums : "Zérocoin, Zérocash. C’est la technologie la plus avancée, je dois l’admettre. Oui, la citation ci-dessus est issu de l’analyse de la version précédente du protocole. A ma connaissance, ce n'est pas le cas 288, mais 384 octets, mais c'est quand même une bonne nouvelle. Ils ont utilisé une toute nouvelle technique appelée SNARK, qui présente certains inconvénients : par exemple, grande base de données initiale de paramètres publics nécessaires à la création d'une signature (plus de 1 Go) et temps important nécessaire pour créer une transaction (plus d'une minute). Enfin, ils utilisent un jeune crypto, que j'ai mentionné comme étant une idée discutable : https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. jeu. 3 avril 2014 19:56 Une fonction exécutée dans le CPU et qui ne convient pas aux GPU, FPGA ou ASIC calcul. Le « puzzle » utilisé dans proof-of-work est appelé fonction de tarification, fonction de coût ou fonction de puzzle.
sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient contesté [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L'incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu'il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre d'historique unique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Finalement, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir d'exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 sans ambiguïté jusqu'à une origine et un destinataire final uniques. Même si deux participants échangent fonds de manière indirecte, une méthode de recherche de chemin correctement conçue révélera l’origine et destinataire final. On soupçonne également que Bitcoin ne satisfait pas à la deuxième propriété. Certains chercheurs a déclaré ([33, 35, 29, 31]) qu'une analyse minutieuse blockchain peut révéler un lien entre les utilisateurs du réseau Bitcoin et leurs transactions. Bien qu'un certain nombre de méthodes soient réSelon [25], on soupçonne que de nombreuses informations personnelles cachées peuvent être extraites du base de données publique. L'incapacité de Bitcoin à satisfaire les deux propriétés décrites ci-dessus nous amène à conclure qu'il est il ne s'agit pas d'un système de monnaie électronique anonyme mais pseudo-anonyme. Les utilisateurs ont été rapides à développer solutions pour contourner cette lacune. Deux solutions directes étaient les « services de blanchiment » [2] et le développement de méthodes distribuées [3, 4]. Les deux solutions sont basées sur l'idée du mélange plusieurs transactions publiques et leur envoi via une adresse intermédiaire ; qui à son tour présente l’inconvénient de nécessiter un tiers de confiance. Récemment, un schéma plus créatif a été proposé par I. Miers et al. [28] : « Zérocoin ». Zérocoin utilise des accumulateurs cryptographiques unidirectionnels et des preuves sans connaissance qui permettent aux utilisateurs de « convertissez » les bitcoins en zerocoins et dépensez-les en utilisant une preuve de propriété anonyme au lieu de signatures numériques explicites basées sur une clé publique. Cependant, de telles preuves de connaissances ont une constante mais taille peu pratique - environ 30 Ko (sur la base des limites Bitcoin actuelles), ce qui fait la proposition peu pratique. Les auteurs admettent qu'il est peu probable que le protocole soit un jour accepté par la majorité des Bitcoin utilisateurs [5]. 2.2 La fonction proof-of-work Le créateur de Bitcoin, Satoshi Nakamoto, a décrit l'algorithme de prise de décision majoritaire comme « un processeur, un vote » et a utilisé une fonction de tarification liée au processeur (double SHA-256) pour son proof-of-work. schéma. Étant donné que les utilisateurs votent pour l'ordre d'historique unique des transactions [1], le caractère raisonnable et la cohérence de ce processus sont des conditions critiques pour l’ensemble du système. La sécurité de ce modèle souffre de deux inconvénients. Premièrement, cela nécessite 51 % du réseau la puissance minière doit être sous le contrôle d’utilisateurs honnêtes. Deuxièmement, la progression du système (corrections de bugs, correctifs de sécurité, etc...) nécessitent que l'écrasante majorité des utilisateurs soutiennent et acceptent le changements (cela se produit lorsque les utilisateurs mettent à jour leur logiciel de portefeuille) [6]. Enfin, ce même vote Le mécanisme est également utilisé pour les sondages collectifs sur la mise en œuvre de certaines fonctionnalités [7]. Cela nous permet de conjecturer les propriétés qui doivent être satisfaites par le proof-of-work fonction de tarification. Une telle fonction ne doit pas permettre à un participant au réseau d'avoir un avantage sur un autre participant ; cela nécessite une parité entre le matériel commun et le haut coût des appareils personnalisés. À partir des exemples récents [8], nous pouvons voir que la fonction SHA-256 utilisée dans l'architecture Bitcoin ne possède pas cette propriété car l'exploitation minière devient plus efficace sur GPU et périphériques ASIC par rapport aux processeurs haut de gamme. Par conséquent, Bitcoin crée des conditions favorables à un écart important entre le pouvoir de vote des participants car cela viole le principe « un CPU, une voix » puisque les propriétaires de GPU et d'ASIC possèdent un pouvoir de vote beaucoup plus important par rapport aux propriétaires de processeurs. C'est un exemple classique de Principe de Pareto selon lequel 20 % des participants d’un système contrôlent plus de 80 % des voix. On pourrait affirmer qu’une telle inégalité n’est pas pertinente pour la sécurité du réseau puisqu’elle n’est pas pertinente. le petit nombre de participants contrôlant la majorité des votes mais l'honnêteté de ceux-ci participants qui comptent. Cependant, un tel argument est quelque peu erroné puisqu’il s’agit plutôt du possibilité d’apparition de matériel spécialisé bon marché plutôt que l’honnêteté des participants qui constitue une menace. Pour le démontrer, prenons l’exemple suivant. Supposons qu'un malveillant L’individu acquiert un pouvoir minier significatif en créant sa propre ferme minière grâce à des prix bon marché. 2 Commentaires à la page 2
Bitcoin 欠点と考えられる解決策
2 Bitcoin の欠点と考えられる解決策 2.1 取引のトレーサビリティ プライバシーと匿名性は、電子マネーの最も重要な側面です。ピアツーピア支払い 第三者の目から隠蔽されるよう努めますが、これは従来の方法と比較した場合の明らかな違いです。 銀行業。特に、T.okamoto と K.Ohta は、理想的な電子マネーの 6 つの基準を説明しました。 これには「プライバシー: ユーザーとその購入との関係は追跡不可能でなければなりません」が含まれます。 誰でも」[30]。それらの説明から、完全に匿名である 2 つのプロパティを導き出しました。 岡本氏が概説した要件に準拠するには、電子現金モデルが満たさなければなりません そして太田: 追跡不可能性: 受信トランザクションごとに、考えられるすべての送信者が等しい確率で存在します。 リンク不可能性: 2 つの送信トランザクションについて、それらが送信されたことを証明することは不可能です。 同じ人です。 残念ながら、Bitcoin は追跡不可能な要件を満たしていません。ネットワークの参加者間で行われるトランザクションはすべて公開されるため、あらゆるトランザクションが公開される可能性があります。 1 クリプトノート v 2.0 ニコラス・ファン・セイバーハーゲン 2013 年 10 月 17 日 1 はじめに 「Bitcoin」 [1] は、p2p 電子キャッシュの概念の実装に成功しました。両方 専門家も一般の人々も、これらの便利な組み合わせを高く評価するようになりました。 パブリック トランザクションと信頼モデルとしての proof-of-work。現在、電子マネーのユーザーベースは 着実なペースで成長しています。顧客は低料金と匿名性の提供に魅力を感じています 電子現金によるものであり、加盟店は予測された分散型排出量を重視しています。 Bitcoin は 電子マネーは紙幣と同じくらい簡単で、紙幣と同じくらい便利であることが効果的に証明されました。 クレジットカード。 残念ながら、Bitcoin にはいくつかの欠陥があります。たとえば、システムの分散型 性質は柔軟性が高く、ほぼすべてのネットワーク ユーザーがクライアントを更新するまで新しい機能を実装できません。修正できないいくつかの重大な欠陥により、Bitcoin の攻撃が阻止されます 広範な伝播。このような柔軟性のないモデルでは、新しいプロジェクトを展開する方が効率的です。 元のプロジェクトを永続的に修正するのではなく、 この文書では、Bitcoin の主な欠陥に対する解決策を研究し、提案します。私たちは信じています 私たちが提案するソリューションを考慮したシステムが健全な競争につながることを保証します さまざまな電子マネー システム間で。独自の電子マネー「CryptoNote」も提案しています。 電子マネーの次の進歩を強調する名前です。 2 Bitcoin の欠点と考えられる解決策 2.1 取引のトレーサビリティ プライバシーと匿名性は、電子マネーの最も重要な側面です。ピアツーピア支払い 第三者の目から隠蔽されるよう努めますが、これは従来の方法と比較した場合の明らかな違いです。 銀行業。特に、T.okamoto と K.Ohta は、理想的な電子マネーの 6 つの基準を説明しました。 これには「プライバシー: ユーザーとその購入との関係は追跡不可能でなければなりません」が含まれます。 誰でも」[30]。それらの説明から、完全に匿名である 2 つのプロパティを導き出しました。 岡本氏が概説した要件に準拠するには、電子現金モデルが満たさなければなりません そして太田: 追跡不可能性: 受信トランザクションごとに、考えられるすべての送信者が等しい確率で存在します。 リンク不可能性: 2 つの送信トランザクションについて、それらが送信されたことを証明することは不可能です。 同じ人です。 残念ながら、Bitcoin は追跡不可能な要件を満たしていません。ネットワークの参加者間で行われるトランザクションはすべて公開されるため、あらゆるトランザクションが公開される可能性があります。 1 3 Bitcoin は間違いなく「追跡不能」に失敗します。 BTCを送信する場合、送信元のウォレット blockchain には取り消し不能のスタンプが押されています。誰がその資金を送ったかについては疑問の余地はありませんが、 なぜなら、秘密鍵を知っている人だけが秘密鍵を送信できるからです。一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 [25] では、多くの隠された個人情報が抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが不便 - 約 30kb (今日の Bitcoin 制限に基づく) という提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6].最後にこれと同じ投票が行われます このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 d[25] と疑われており、隠された個人情報が大量に抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが約 30kb (今日の Bitcoin 制限に基づく) という不便なサイズであるため、この提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6]。最後にこれと同じ投票が行われます。 このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 4 おそらく、すべてのユーザーが常に新しいアドレスを生成することで自分自身の匿名性を保っているとしたら、 受け取ったすべての支払いに対して(これはばかげていますが、技術的には「正しい」方法です)、 そして、すべてのユーザーが決して資金を送金しないと主張して、他のユーザーの匿名性を助けたとしたら 同じBTCアドレスに2回送信した場合、Bitcoinは依然として状況的にのみ渡されます 非リンク性テスト。 なぜ?消費者データを使用すると、人々に関する驚くべき量の情報を常に把握できます。 たとえば、http://www.applieddatalabs.com/content/target-knows-it-shows を参照してください。 さて、これが 20 年後の未来であると想像してください。さらに、ターゲットが単に知っていたわけではないと想像してください。 Target でのあなたの購入習慣についてですが、彼らはすべての商品について blockchain をマイニングしていました 過去の Coinbase ウォレットでの個人購入 12年。 彼らはこう言うだろう、「ねえ、今夜は咳止め薬を買いたいかもしれないけど、そんなことはないよ」 明日は気分がいいよ。」 マルチパーティの並べ替えが正しく利用されている場合は、これは当てはまらない可能性があります。たとえば、これを参照してくださいブログ投稿: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ 私はその計算に完全に納得しているわけではありませんが、一度に 1 つの論文ですよね? 引用が必要です。 Zerocoin プロトコル (スタンドアロン) では不十分かもしれませんが、Zerocash このプロトコルは 1kb サイズのトランザクションを実装しているようです。そのプロジェクトを支援しているのは、 もちろん、アメリカ軍とイスラエル軍もそうなので、その堅牢性については誰にも分かりません。一方では 軍隊ほど、監視なしに資金を支出できることを望んでいる人はいないでしょう。 http://zerocash-project.org/ 納得できません...たとえば、http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf を参照してください。 暗号ノート開発者モーリス・プランク氏(おそらく仮名)の暗号ノートからの引用 フォーラム: 「ゼロコイン、ゼロキャッシュ。 これは最先端のテクノロジーであると認めざるを得ません。 はい、引用です 上記は、プロトコルの以前のバージョンの分析からのものです。私の知る限り、そうではありません 288 バイトですが 384 バイトですが、いずれにせよ、これは良いニュースです。 彼らは SNARK と呼ばれるまったく新しい技術を使用しましたが、これにはいくつかの欠点がありました。 署名の作成に必要な公開パラメーターの大規模な初期データベース (1 GB 以上) トランザクションの作成にかなりの時間がかかります (1 分以上)。最後に、彼らは 若い暗号通貨、これは議論の余地があるアイデアであると述べました: https://forum.cryptonote.org/viewtopic.php?f= " - モーリス・P. 2014年4月3日(木)午後7時56分 CPU で実行され、GPU、FPGA、または ASIC には適さない機能 計算。 proof-of-work で使用される「パズル」は、価格設定関数、コスト関数、または パズル機能。
一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 [25] では、多くの隠された個人情報が抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが不便 - 約 30kb (今日の Bitcoin 制限に基づく) という提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6].最後に同じ投票が行われます このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 d[25] と疑われており、隠された個人情報が大量に抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが不便 - 約 30kb (今日の Bitcoin 制限に基づく) という提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6].最後に同じ投票が行われます このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 2ページ目のコメント
La technologie CryptoNote
Maintenant que nous avons couvert les limites de la technologie Bitcoin, nous allons nous concentrer sur présentant les fonctionnalités de CryptoNote.
クリプトノートテクノロジー
Bitcoin テクノロジーの制限について説明したので、次は次の点に集中します。 CryptoNoteの機能を紹介します。
Transactions intraçables
Dans cette section, nous proposons un schéma de transactions totalement anonymes satisfaisant à la fois l'intracabilité
et les conditions de non-liaison. Une caractéristique importante de notre solution est son autonomie : l'expéditeur
n'est pas tenu de coopérer avec d'autres utilisateurs ou un tiers de confiance pour effectuer ses transactions ;
chaque participant produit donc indépendamment un trafic de couverture.
4.1
Revue de la littérature
Notre schéma repose sur la primitive cryptographique appelée signature de groupe. Présenté pour la première fois par
D. Chaum et E. van Heyst [19], il permet à un utilisateur de signer son message au nom du groupe.
Après avoir signé le message, l'utilisateur ne fournit (à des fins de vérification) pas son propre public.
1C'est ce qu'on appelle la « limite souple » — la restriction client de référence pour la création de nouveaux blocs. Dur maximum de
la taille de bloc possible était de 1 Mo
4
si nécessaire, cela provoque les principaux inconvénients. Malheureusement, il est difficile de prédire quand
les constantes devront peut-être être modifiées et leur remplacement peut avoir des conséquences terribles.
Un bon exemple de changement de limite codé en dur conduisant à des conséquences désastreuses est le blocage
limite de taille fixée à 250 Ko1. Cette limite était suffisante pour contenir environ 10 000 transactions standards. Dans
début 2013, cette limite était presque atteinte et un accord a été trouvé pour augmenter le
limite. Le changement a été implémenté dans la version 0.8 du portefeuille et s'est terminé par une division de chaîne de 24 blocs.
et une attaque réussie de double dépense [9]. Bien que le bug ne soit pas dans le protocole Bitcoin, mais
au contraire, dans le moteur de base de données, il aurait pu être facilement détecté par un simple test de résistance s'il y avait eu
aucune limite de taille de bloc introduite artificiellement.
Les constantes agissent également comme une forme de point de centralisation.
Malgré la nature peer-to-peer de
Bitcoin, une écrasante majorité de nœuds utilisent le client de référence officiel [10] développé par
un petit groupe de personnes. Ce groupe prend la décision de mettre en œuvre des modifications au protocole
et la plupart des gens acceptent ces changements indépendamment de leur « exactitude ». Certaines décisions ont provoqué
discussions animées et même appels au boycott [11], ce qui indique que la communauté et le
les développeurs peuvent être en désaccord sur certains points importants. Il semble donc logique d'avoir un protocole
avec des variables configurables par l'utilisateur et auto-ajustables comme moyen possible d'éviter ces problèmes.
2.5
Scripts volumineux
Le système de script de Bitcoin est une fonctionnalité lourde et complexe. Cela permet potentiellement de créer
transactions sophistiquées [12], mais certaines de ses fonctionnalités sont désactivées en raison de problèmes de sécurité et
certains n'ont même jamais été utilisés [13]. Le script (y compris les parties des expéditeurs et des destinataires)
pour la transaction la plus populaire en Bitcoin ressemble à ceci :
clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisi d'utiliser le schéma rapide EdDSA, qui est développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisie d'utiliser le schéma rapide EdDSA, développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 8 Une signature en anneau fonctionne comme ceci : Alex veut divulguer un message à WikiLeaks au sujet de son employeur. Chaque collaborateur de son entreprise dispose d'une paire de clés privée/publique (Ri, Ui). Elle compose sa signature avec l'entrée définie comme son message, m, sa clé privée, Ri et celle de TOUT LE MONDE clés publiques, (Ui;i=1...n). N'importe qui (sans connaître de clés privées) peut facilement vérifier que quelque couple (Rj, Uj) a dû être utilisé pour construire la signature... quelqu'un qui travaille pour l’employeur d’Alex… mais il s’agit essentiellement d’une estimation aléatoire pour déterminer de laquelle il s’agit. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Notez qu'une signature en anneau pouvant être liée décrite ici est un peu à l'opposé de "non liée". décrit ci-dessus. Ici, nous interceptons deux messages et nous pouvons déterminer si le même parti les a envoyés, même si nous ne devrions toujours pas être en mesure de déterminer qui est ce parti. Le La définition de « non-liable » utilisée pour construire Cryptonote signifie que nous ne pouvons pas déterminer si c'est le même parti qui les reçoit. Par conséquent, ce que nous avons réellement ici, ce sont QUATRE choses qui se passent. Un système peut être lié ou non associable, selon qu'il est possible ou non de déterminer si l'expéditeur du message deux messages sont identiques (que cela nécessite ou non la révocation de l'anonymat). Et un système peut être dissociable ou non, selon qu'il est possible ou non de déterminer si le destinataire de deux messages est le même (indépendamment du fait que cela nécessite la révocation de l'anonymat). S’il vous plaît, ne me blâmez pas pour cette terrible terminologie. Les théoriciens des graphes devraient probablement être content. Certains d'entre vous seront peut-être plus à l'aise avec « liaison entre le récepteur » et avec « liaison avec l'expéditeur ». http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Quand j'ai lu ceci, cela m'a semblé une fonctionnalité idiote. Puis j'ai lu que cela pouvait être une fonctionnalité pour vote électronique, et cela semblait logique. Plutôt cool, de ce point de vue. Mais je suis pas totalement sûr de mettre en œuvre délibérément des signatures en anneau traçables. http://search.ieice.org/bin/summary.php?id=e95-a_1_151
clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisi d'utiliser le schéma rapide EdDSA, qui est développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisie d'utiliser le schéma rapide EdDSA, développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 9 Mon Dieu, l’auteur de ce livre blanc aurait certainement pu mieux formuler cela ! Disons qu'un l'entreprise détenue par ses salariés souhaite procéder à un vote sur l'acquisition ou non de certains nouveaux actifs, et Alex et Brenda sont tous deux employés. La Société offre à chaque employé un message comme "Je vote oui sur la proposition A!" qui a le "problème" de métainformation [PROP A] et leur demande de le signer avec une signature en anneau traçable s'ils soutiennent la proposition. En utilisant une signature en anneau traditionnelle, un employé malhonnête peut signer le message plusieurs fois, probablement avec différents nonce, afin de voter autant de fois qu'ils le souhaitent. De l'autre D'un autre côté, dans un système de signature en anneau traçable, Alex ira voter et sa clé privée aura été utilisé sur la question [PROP A]. Si Alex essaie de signer un message comme "Moi, Brenda, j'approuve proposition A!" pour "cadrer" Brenda et doubler le vote, ce nouveau message aura aussi de l'enjeu [PROPRIÉTÉ A]. Puisque la clé privée d'Alex a déjà déclenché le problème [PROP A], l'identité d'Alex sera immédiatement révélé comme une fraude. Ce qui, avouons-le, est plutôt cool ! La cryptographie a imposé l’égalité des votes. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Cet article est intéressant, car il crée essentiellement une signature en anneau ad hoc mais sans aucun des le consentement de l’autre participant. La structure de la signature peut être différente ; je n'ai pas creusé profond, et je n’ai pas vu si c’est sécurisé. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Les signatures des groupes ad hoc sont : les signatures en anneau, qui sont des signatures de groupe sans groupe gestionnaires, pas de centralisation, mais permet à un membre d'un groupe ad hoc de prétendre de manière prouvée que il n'a (pas) émis la signature anonyme au nom du groupe. http://link.springer.com/chapter/10.1007/11908739_9 Ce n’est pas tout à fait exact, d’après ma compréhension. Et ma compréhension changera probablement à mesure que J'approfondis ce projet. Mais d'après ma compréhension, la hiérarchie ressemble à ceci. Signatures de groupe : les gestionnaires de groupe contrôlent la traçabilité et la possibilité d'ajouter ou de supprimer des membres d'être signataires. Ring sigs : Formation de groupe arbitraire sans chef de groupe. Pas de révocation de l'anonymat. Pas question de se répudier d'une signature particulière. Avec anneau traçable et connectable signatures, l'anonymat est quelque peu évolutif. Signatures de groupe ad hoc : comme les signatures en anneau, mais les membres peuvent prouver qu'ils n'ont pas créé une signature particulière. Ceci est important lorsque n’importe qui dans un groupe peut produire une signature. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 L'algorithme de Fujisaki et Suzuki est modifié plus tard par l'auteur pour fournir un caractère unique. Alors nous analyserons l'algorithme de Fujisaki et Suzuki en même temps que le nouvel algorithme plutôt que de le parcourir ici.
clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisi d'utiliser le schéma rapide EdDSA, qui est développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 clé, mais les clés de tous les utilisateurs de son groupe. Un vérificateur est convaincu que le véritable signataire est un membre du groupe, mais ne peut identifier exclusivement le signataire. Le protocole initial nécessitait un tiers de confiance (appelé le gestionnaire de groupe), et il était le seul à pouvoir retrouver le signataire. La version suivante appelée signature en anneau, introduite par Rivest et coll. en [34], était un système autonome sans gestionnaire de groupe et sans anonymat révocation. Diverses modifications de ce schéma sont apparues plus tard : signature en anneau connectable [26, 27, 17] a permis de déterminer si deux signatures ont été produites par le même membre du groupe, traçables la signature en anneau [24, 23] limitait l'anonymat excessif en offrant la possibilité de retrouver le signataire de deux messages concernant la même métainformation (ou « tag » en termes de [24]). Une construction cryptographique similaire est également connue sous le nom de signature de groupe ad hoc [16, 38]. Il met l'accent sur la formation arbitraire de groupes, alors que les schémas de signature de groupe/anneau impliquent plutôt une ensemble fixe de membres. Pour l’essentiel, notre solution s’appuie sur l’ouvrage « Traceable ring signature » de E. Fujisaki et K. Suzuki [24]. Afin de distinguer l'algorithme original de notre modification, nous allons appelons cette dernière une signature en anneau à usage unique, soulignant la capacité de l'utilisateur à produire une seule signature valide. signature sous sa clé privée. Nous avons affaibli la propriété de traçabilité et conservé la possibilité de liaison uniquement pour fournir un caractère unique : la clé publique peut apparaître dans de nombreux ensembles de vérification étrangers et le la clé privée peut être utilisée pour générer une signature anonyme unique. En cas de double dépense tentative, ces deux signatures seront liées entre elles, mais il n'est pas nécessaire de révéler le signataire à nos fins. 4.2 Définitions 4.2.1 Paramètres de courbe elliptique Comme algorithme de signature de base, nous avons choisie d'utiliser le schéma rapide EdDSA, développé et mis en œuvre par D.J. Bernstein et coll. [18]. Comme l'ECDSA de Bitcoin, il est basé sur la courbe elliptique problème de logarithme discret, notre schéma pourrait donc également être appliqué à Bitcoin à l'avenir. Les paramètres courants sont : q : un nombre premier ; q = 2255 −19 ; d : un élément de Fq ; d = −121665/121666 ; E : une équation de courbe elliptique ; −x2 + y2 = 1 + dx2y2 ; G : un point de base ; G = (x, −4/5); l : un ordre premier du point de base ; l = 2252 + 27742317777372353535851937790883648493 ; Hs : une fonction cryptographique hash \(\{0, 1\}^* \to \mathbb{F}_q\) ; Hp : une fonction déterministe hash \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologie La confidentialité renforcée nécessite une nouvelle terminologie qui ne doit pas être confondue avec les entités Bitcoin. la clé ec privée est une clé privée à courbe elliptique standard : un nombre \(a \in [1, l - 1]\) ; la clé ec publique est une clé publique à courbe elliptique standard : un point A = aG ; une paire de clés à usage unique est une paire de clés électroniques privées et publiques ; 5 10 La liaison au sens de « signatures en anneau pouvant être liées » signifie que nous pouvons savoir si deux transactions sortantes proviennent de la même source sans révéler qui est la source. Les auteurs affaiblis possibilité de lien afin de (a) préserver la confidentialité, mais toujours (b) repérer toute transaction utilisant une clé privée une seconde fois comme invalide. D'accord, c'est donc une question d'ordre des événements. Considérez le scénario suivant. Mon exploitation minière l'ordinateur aura le blockchain actuel, il aura son propre bloc de transactions qu'il appelle légitime, il travaillera sur ce bloc dans un puzzle proof-of-work, et il aura un liste des transactions en attente à ajouter au bloc suivant. Il enverra également tout nouveau transactions dans ce pool de transactions en attente. Si je ne résous pas le bloc suivant, mais quelqu'un d'autre le fait, je reçois une copie mise à jour du blockchain. Le bloc sur lequel je travaillais et ma liste de transactions en attente peut contenir toutes deux des transactions qui sont maintenant incorporées dans le blockchain. Démêlez mon bloc en attente, combinez-le avec ma liste de transactions en attente et appelez-le mon pool de transactions en attente. Supprimez ceux qui se trouvent maintenant officiellement dans le blockchain. Maintenant, que dois-je faire ? Dois-je d'abord passer par « supprimer toutes les doubles dépenses » ? De l'autre D'autre part, dois-je parcourir la liste et m'assurer que chaque clé privée n'a pas encore été utilisé, et s'il a déjà été utilisé dans ma liste, alors j'ai reçu le premier exemplaire en premier, et donc toute autre copie est illégitime. Ainsi, je supprime simplement toutes les instances après la première de la même clé privée. La géométrie algébrique n’a jamais été mon point fort. http://en.wikipedia.org/wiki/EdDSA Une telle vitesse, vraiment wow. C'est la géométrie algébrique pour la victoire. Non pas que je sache quoi que ce soit à ce sujet. Problématique ou non, les journaux discrets deviennent très rapides. Et les ordinateurs quantiques les mangent pour le petit déjeuner. http://link.springer.com/article/10.1007/s13389-012-0027-1 Cela devient un nombre vraiment important, mais il n'y a aucune explication ni citation sur la manière dont il est obtenu. a été choisi. Choisir simplement un seul grand nombre premier connu serait bien, mais s'il y a des nombres premiers connus des faits sur ce grand nombre premier, qui pourraient influencer notre choix. Différentes variantes de cryptonote pourrait choisir différentes valeurs de eh bien, mais il n'y a aucune discussion dans cet article sur la façon dont cela Ce choix affectera nos choix d’autres paramètres globaux répertoriés à la page 5. Cet article nécessite une section sur le choix des valeurs des paramètres.
la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Modèle traditionnel de clés/transactions Bitcoin. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Mod traditionnel de clés/transactions Bitcoinél. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 11 C'est donc comme Bitcoin, mais avec des boîtes postales infinies et anonymes, échangeables uniquement par le destinataire. générer une clé privée aussi anonyme qu'une signature en anneau peut l'être. Bitcoin fonctionne de cette façon. Si Alex a 0,112 Bitcoin dans son portefeuille qu'elle vient de recevoir de Frank, elle a en réalité un message "Je, [FRANK], envoie 0,112 Bitcoin à [alex] + H0 + N0" où 1) Frank a signé le message avec sa clé privée [FRANK], 2) Frank a signé le message avec la clé publique d'Alex clé, [alex], 3) Frank a inclus une certaine forme de l'histoire du bitcoin, H0, et 4) Frank comprend un bit de données aléatoire appelé nonce, N0. Si Alex veut alors envoyer 0,011 Bitcoin à Charlene, elle prendra le message de Frank, et elle définira cela sur H1 et signera deux messages : un pour sa transaction et un pour le changement. H1= "Je, [FRANK], envoie 0,112 Bitcoin à [alex] + H0 + N" "Je, [ALEX], envoie 0,011 Bitcoin à [charlene] + H1 + N1" "Je, [ALEX], envoie 0,101 Bitcoin comme changement à [alex] + H1 + N2." où Alex signe les deux messages avec sa clé privée [ALEX], le premier message avec celle de Charlene clé publique [charlene], le deuxième message avec la clé publique d'Alex [alex], et incluant la historiques et certains nonces N1 et N2 générés aléatoirement de manière appropriée. Cryptonote fonctionne de cette façon : Si Alex a 0,112 Cryptonote dans son portefeuille qu'elle vient de recevoir de Frank, elle a en réalité un message "Je, [quelqu'un dans un groupe ad hoc], envoie 0,112 Cryptonote à [une adresse unique] + H0 +N0." Alex a découvert qu'il s'agissait de son argent en vérifiant sa clé privée [ALEX] [une adresse unique] pour chaque message qui passe, et si elle souhaite le dépenser, elle le fait en de la manière suivante. Elle choisit un destinataire de l'argent, peut-être que Charlene a commencé à voter pour les frappes de drones, alors Alex veut plutôt envoyer de l'argent à Brenda. Alors Alex recherche la clé publique de Brenda, [brenda], et utilise sa propre clé privée, [ALEX], pour générer une adresse unique [ALEX+brenda]. Elle puis choisit une collection arbitraire C parmi le réseau d'utilisateurs de cryptonotes et elle construit une signature circulaire de ce groupe ad hoc. Nous définissons notre historique comme message précédent, ajoutons nonces, et procéder comme d'habitude ? H1 = "Je, [quelqu'un dans un groupe ad hoc], envoie 0,112 Cryptonote à [une adresse unique] + H0 +N0." "Moi, [quelqu'un dans la collection C], j'envoie 0,011 Cryptonote à [adresse unique-faite-à partir d'ALEX+brenda] + H1 + N1" "Moi, [quelqu'un dans la collection C], j'envoie 0,101 Cryptonote en guise de modification à [one-time-address-madefrom-ALEX+alex] + H1 + N2" Désormais, Alex et Brenda analysent tous les deux tous les messages entrants à la recherche d'adresses uniques qui étaient créé à l’aide de leur clé. \(S'\)ils en trouvent, alors ce message est leur propre marque. cryptonote! Et même dans ce cas, la transaction atteindra toujours le blockchain. Si les pièces entrant dans cette adresse sont connus pour être envoyés par des criminels, des contributeurs politiques ou des comités et des comptes avec des budgets stricts (c'est-à-dire détournement de fonds), ou si le nouveau propriétaire de ces pièces commet une erreur et envoie ces pièces à une adresse commune avec les pièces qu'il est connu pour posséder, le gabarit d'anonymat est en hausse en Bitcoin.
la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Modèle traditionnel de clés/transactions Bitcoin. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 la clé d'utilisateur privée est une paire (a, b) de deux clés ec privées différentes ; la clé de suivi est une paire (a, B) de clés ec privées et publiques (où B = bG et a ̸ = b) ; la clé publique d'utilisateur est une paire (A, B) de deux clés ec publiques dérivées de (a, b) ; l'adresse standard est une représentation d'une clé d'utilisateur publique donnée dans une chaîne conviviale avec correction d'erreurs ; l'adresse tronquée est une représentation de la seconde moitié (point B) d'une clé d'utilisateur publique donnée en chaîne conviviale avec correction d’erreur. La structure de la transaction reste similaire à celle de Bitcoin : chaque utilisateur peut choisir plusieurs encaissements indépendants (sorties d'opérations), signez-les avec le code correspondant clés privées et les envoyer à différentes destinations. Contrairement au modèle de Bitcoin, où un utilisateur possède une clé privée et publique unique, dans le cas modèle proposé, un expéditeur génère une clé publique unique basée sur l'adresse du destinataire et quelques données aléatoires. En ce sens, une transaction entrante pour le même destinataire est envoyée à un clé publique unique (pas directement à une adresse unique) et seul le destinataire peut récupérer la partie privée correspondante pour racheter ses fonds (en utilisant sa clé privée unique). Le destinataire peut dépenser les fonds en utilisant une signature en anneau, en gardant anonymes sa propriété et ses dépenses réelles. Les détails du protocole sont expliqués dans les sous-sections suivantes. 4.3 Paiements non liés Les adresses classiques Bitcoin, une fois publiées, deviennent un identifiant sans ambiguïté pour les paiements, en les reliant entre eux et en les liant aux pseudonymes du destinataire. Si quelqu'un veut reçoit une transaction « déliée », il doit transmettre son adresse à l'expéditeur par un canal privé. \(S'\)il souhaite recevoir différentes transactions dont il ne peut être prouvé qu'elles appartiennent au même propriétaire il doit générer toutes les différentes adresses et ne jamais les publier sous son propre pseudonyme. Publique Privé Alice Carole Adresse de Bob 1 Adresse de Bob 2 La clé de Bob 1 La clé de Bob 2 Bob Fig. 2. Mod traditionnel de clés/transactions Bitcoinél. Nous proposons une solution permettant à un utilisateur de publier une adresse unique et de recevoir des paiements non liés. La destination de chaque sortie CryptoNote (par défaut) est une clé publique, dérivé de l’adresse du destinataire et des données aléatoires de l’expéditeur. Le principal avantage contre Bitcoin est que chaque clé de destination est unique par défaut (sauf si l'expéditeur utilise les mêmes données pour chaque clé). de ses transactions vers le même destinataire). Il n’existe donc pas de problème de « réutilisation des adresses » par conception et aucun observateur ne peut déterminer si des transactions ont été envoyées à une adresse ou un lien spécifique deux adresses ensemble. 6 12 Par conséquent, plutôt que d’envoyer des pièces depuis une adresse (qui est en réalité une clé publique) vers une adresse (une autre clé publique) en utilisant leurs clés privées, les utilisateurs envoient des pièces depuis une boîte postale unique (qui génère en utilisant la clé publique de vos amis) vers une boîte postale unique (de la même manière) en utilisant votre propres clés privées. Dans un sens, nous disons : « D'accord, tout le monde ne met pas la main sur l'argent pendant qu'il est en cours. transféré! Il suffit simplement de savoir que nos clés peuvent ouvrir cette boîte et que nous savons combien d'argent il y a dans la boîte. Ne mettez jamais vos empreintes digitales sur la boîte postale ou Pour l'utiliser réellement, échangez simplement la boîte remplie d'argent liquide elle-même. De cette façon, nous ne savons pas qui a envoyé quoi, mais le contenu de ces discours publics est toujours sans friction, fongible, divisible et possèdent toujours toutes les autres belles qualités d’argent que nous désirons, comme le bitcoin. » Un ensemble infini de boîtes postales. Vous publiez une adresse, j'ai une clé privée. J'utilise ma clé privée et votre adresse, et quelques données aléatoires, pour générer une clé publique. L'algorithme est conçu de telle sorte que, puisque votre L'adresse a été utilisée pour générer la clé publique, seule VOTRE clé privée fonctionne pour déverrouiller le message. Une observatrice, Eve, vous voit publier votre adresse, et voit la clé publique que j'annonce. Cependant, elle ne sait pas si j'ai annoncé ma clé publique en fonction de votre adresse, de la sienne ou de celle de Brenda ou celui de Charlene, ou celui de qui que ce soit. Elle vérifie sa clé privée avec la clé publique que j'ai annoncée et voit que ça ne marche pas ; ce n'est pas son argent. Elle ne connaît la clé privée de personne d’autre, et seul le destinataire du message possède la clé privée permettant de déverrouiller le message. Donc personne écouter peut déterminer qui a reçu l’argent et encore moins prendre l’argent.
Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 13 Je me demande à quel point ce serait pénible de mettre en œuvre un choix de cryptographie schéma. Elliptique ou autre. Ainsi, si un système est brisé à l'avenir, la devise change sans souci. Probablement un gros emmerdeur. D'accord, c'est exactement ce que je viens d'expliquer dans mon commentaire précédent. Le type Diffie-Hellman les échanges sont soignés. Disons qu'Alex et Brenda ont chacun un numéro secret, A et B, et un numéro ils ne se soucient pas de garder le secret, a et b. Ils souhaitent générer un secret partagé sans Eva le découvre. Diffie et Hellman ont trouvé un moyen pour qu'Alex et Brenda partagent les numéros publics a et b, mais pas les numéros privés A et B, et générer un secret partagé, K. En utilisant ce secret partagé, K, sans qu'aucune Eva ne l'écoute pour pouvoir générer le même K, Alex et Brenda peuvent désormais utiliser K comme clé de cryptage secrète et renvoyer des messages secrets et en avant. Voici comment cela PEUT fonctionner, même si cela devrait fonctionner avec des nombres beaucoup plus grands que 100. Nous utiliserons 100 car travailler sur les entiers modulo 100 équivaut à "jeter tout mais les deux derniers chiffres d'un nombre. Alex et Brenda choisissent chacun A, a, B et b. Ils gardent A et B secrets. Alex dit à Brenda sa valeur d'un modulo 100 (juste les deux derniers chiffres) et Brenda le dit à Alex. sa valeur de b modulo 100. Maintenant Eva connaît (a,b) modulo 100. Mais Alex sait (a,b,A) donc elle peut calculer x=abA modulo 100.Alex coupe tous les chiffres sauf le dernier parce qu'on travaille sous les entiers modulo 100 à nouveau. De même, Brenda connaît (a,b,B) donc elle peut calculer y=abB modulo 100. Alex peut désormais publier x et Brenda peut publier y. Mais maintenant, Alex peut calculer yA = abBA modulo 100, et Brenda peut calculer xB. = abBA modulo 100. Ils connaissent tous les deux le même numéro ! Mais tout ce qu'Eva a entendu, c'est (une,b,unebUNE,unebB). Elle n’a pas de moyen simple de calculer abA*B. C’est la manière la plus simple et la moins sûre d’envisager l’échange Diffie-Hellman. Des versions plus sécurisées existent. Mais la plupart des versions fonctionnent car la factorisation entière et discrète les logarithmes sont difficiles, et ces deux problèmes sont facilement résolus par les ordinateurs quantiques. Je vérifierai s’il existe des versions résistantes au quantique. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Il manque tout un tas d'étapes dans la "séquence txn standard" répertoriée ici, comme les SIGNATURES. Ici, ils sont simplement tenus pour acquis. Ce qui est vraiment dommage, car l'ordre dans lequel nous les trucs de signature, les informations incluses dans le message signé, et ainsi de suite... tout cela est extrêmement important pour le protocole. Se tromper sur une ou deux étapes, même légèrement dans le désordre, tout en mettant en œuvre « le séquence de transactions standard" pourrait remettre en question la sécurité de l'ensemble du système. De plus, les preuves présentées plus loin dans cet article risquent de ne pas être suffisamment rigoureuses si le Le cadre dans lequel ils travaillent est aussi vaguement défini que dans cette section.
Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 Publique Privé Alice Carole Clé à usage unique Clé à usage unique Clé à usage unique Bob La clé de Bob L'adresse de Bob Fig. 3. Modèle de clés/transactions CryptoNote. Tout d'abord, l'expéditeur effectue un échange Diffie-Hellman pour obtenir un secret partagé à partir de ses données et la moitié de l’adresse du destinataire. Il calcule ensuite une clé de destination unique, en utilisant la clé partagée secret et la seconde moitié de l'adresse. Deux clés EC différentes sont requises du destinataire pour ces deux étapes, une adresse CryptoNote standard est donc presque deux fois plus grande qu'un portefeuille Bitcoin adresse. Le récepteur effectue également un échange Diffie-Hellman pour récupérer le signal correspondant. clé secrète. Une séquence de transaction standard se déroule comme suit : 1. Alice souhaite envoyer un paiement à Bob, qui a publié son adresse standard. Elle décompresse l'adresse et obtient la clé publique de Bob (A, B). 2. Alice génère un \(r \in [1, l - 1]\) aléatoire et calcule une clé publique unique \(P = H_s(rA)G +\) B. 3. Alice utilise P comme clé de destination pour la sortie et regroupe également la valeur R = rG (dans le cadre d'une partie de la bourse Diffie-Hellman) quelque part dans la transaction. Notez qu'elle peut créer autres sorties avec des clés publiques uniques : les clés de différents destinataires (Ai, Bi) impliquent des Pi différents même avec le même r. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination R = rG P = Hs(rA)G + B Le récepteur clé publique Données aléatoires de l'expéditeur r (A, B) Figure 4. Structure de transaction standard. 4. Alice envoie la transaction. 5. Bob vérifie chaque transaction qui passe avec sa clé privée (a, b) et calcule P ′ = Hs(aR)G + B. Si la transaction d’Alice avec Bob comme destinataire en faisait partie, alors aR = arG = rA et P′ = P. 7 14 Notez que le(s) auteur(s ?) font un travail épouvantable en gardant leur terminologie claire tout au long le texte, mais surtout dans ce morceau suivant. La prochaine incarnation de cet article sera nécessairement beaucoup plus rigoureux. Dans le texte, ils font référence à P comme étant leur clé publique unique. Dans le diagramme, ils font référence à R comme leur « clé publique Tx » et P comme leur « clé de destination ». Si je devais réécrire ceci, je le ferais exposez très spécifiquement une certaine terminologie avant de discuter de ces sections. Cette aune est massive. Voir page 5. Qui les choisit ? Le diagramme illustre que la clé publique de transaction R = rG, qui est aléatoire et choisie par l'expéditeur, ne fait pas partie de la sortie Tx. C'est parce que cela pourrait être le même pour plusieurs transactions à plusieurs personnes et n’est pas utilisé * PLUS TARD * pour dépenser. Un nouveau R est généré chaque fois que vous souhaitez diffuser une nouvelle transaction CryptoNote. De plus, R n’est utilisé que pour vérifier si vous êtes le destinataire de la transaction. Ce ne sont pas des données indésirables, mais elles le sont pour tout le monde. sans les clés privées associées à (A,B). La clé de destination, en revanche, P = Hs(rA)G + B fait partie de la sortie Tx. Tout le monde qui fouille dans les données de chaque transaction en cours doit vérifier son propre P* généré par rapport à ce P pour voir s'ils possèdent cette transaction de passage. Toute personne disposant d'un résultat de transaction non dépensé (UTXO) aura un tas de ces P qui traînent avec des montants. Afin de dépenserd, ils signez un nouveau message incluant P. Alice doit signer cette transaction avec une ou plusieurs clés privées à usage unique associées à la ou aux clés de destination des sorties de transaction non dépensées. Chaque clé de destination appartenant à Alice est équipée avec une clé privée unique appartenant également (vraisemblablement) à Alice. Chaque fois qu'Alice veut m'envoyer le contenu d'une clé de destination, ou Bob, ou Brenda, ou Charlie ou Charlene, elle utilise sa clé privée pour signer la transaction. Dès réception de la transaction, je recevrai un nouveau Clé publique Tx, une nouvelle clé publique de destination, et je pourrai récupérer une nouvelle clé privée unique x. Combiner ma clé privée unique, x, avec la destination publique de la nouvelle transaction la ou les clés sont la façon dont nous envoyons une nouvelle transaction
- Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps une description générale de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8
-
Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps un générateural description de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8 15 À quoi ressemble ici un résultat de transaction non dépensé ? Le diagramme suggère que le résultat de la transaction se compose uniquement de deux points de données : le montant et la clé de destination. Mais ce n'est pas suffisant car lorsque j'essaierai de dépenser cette "sortie", j'aurai toujours besoin de connaître R=rG. N'oubliez pas que r est choisi par l'expéditeur et R est a) utilisé pour reconnaître les cryptonotes entrantes comme votre propre et b) utilisé pour générer la clé privée unique utilisée pour « réclamer » votre cryptonote. La partie que je ne comprends pas à ce sujet ? En prenant le théorique "d'accord, nous avons ces signatures et transactions, et nous les transmettons" dans le monde de la programmation "D'accord, quelles informations spécifiquement constituent un individu UTXO ?" La meilleure façon de répondre à cette question est de fouiller dans le corps du code totalement non commenté. Bravo, équipe bytecoin. Rappel : la possibilité de lien signifie « la même personne a-t-elle envoyé ? » et l'indisponibilité signifie "a fait la même chose personne reçoit?". Ainsi, un système peut être lié ou non, impossible à relier ou non. Ennuyeux, je sais. Ainsi, lorsque Nic van Saberhagen dit ici : « ... les paiements entrants [sont] associés à des paiements ponctuels. des clés publiques qui ne peuvent être liées pour un spectateur", voyons ce qu'il veut dire. Tout d’abord, considérons une situation dans laquelle Alice envoie à Bob deux transactions distinctes à partir du même adresse à la même adresse. Dans l'univers Bitcoin, Alice a déjà commis l'erreur d'envoi à partir de la même adresse et la transaction a donc échoué à notre désir de limiter possibilité de liaison. De plus, comme elle a envoyé l’argent à la même adresse, elle a déçu notre désir. pour la non-liaison. Cette transaction Bitcoin était à la fois (totalement) liée et non dissociable. D’un autre côté, dans l’univers des cryptonotes, disons qu’Alice envoie à Bob une cryptonote, en utilisant l’adresse publique de Bob. Elle choisit comme ensemble de clés publiques obscurcissantes toutes les clés publiques connues. clés dans la région métropolitaine de Washington DC. Alex génère une clé publique unique en utilisant la sienne informations et informations publiques de Bob. Elle envoie l'argent, et tout observateur seulement pouvoir glaner "Quelqu'un de la région métropolitaine de Washington DC a envoyé 2,3 cryptonotes à l'adresse publique unique XYZ123." Nous avons ici un contrôle probabiliste sur la possibilité de lien, nous appellerons donc cela « presque non lien ». Nous ne voyons également que les clés publiques uniques auxquelles l’argent est envoyé. Même si on soupçonnait le récepteur était Bob, nous n'avons pas ses clés privées et nous ne pouvons donc pas tester si une transaction passe appartient à Bob et encore moins génère sa clé privée unique pour échanger sa cryptonote. Donc ça est, en fait, totalement « indiscutable ». C’est donc l’astuce la plus intéressante de toutes. Qui veut vraiment faire confiance à un autre MtGox ? Nous pouvons être à l'aise de stocker une certaine quantité de BTC sur Coinbase, mais le nec plus ultra en matière de sécurité Bitcoin est un portefeuille physique. Ce qui est gênant. Dans ce cas, vous pouvez donner en toute confiance la moitié de votre clé privée sans compromettre votre propre capacité à dépenser de l’argent. En faisant cela, tout ce que vous faites, c'est dire à quelqu'un comment briser l'indisponibilité. L'autre les propriétés du CN agissant comme une monnaie sont préservées, comme une preuve contre les doubles dépenses et que sais-je encore.
-
Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps une description générale de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8
- Bob peut récupérer la clé privée unique correspondante : x = Hs(aR) + b, de sorte que P = xG. Il peut dépenser cette sortie à tout moment en signant une transaction avec x. Transaction Clé publique d'émission Sortie d'émission Montant Clé de destination P ′ = Hs(aR)G + bG clé publique unique x = Hs(aR) + b clé privée à usage unique Le récepteur clé privée (une, b) R. P' ?=P Fig. 5. Vérification des transactions entrantes. En conséquence, Bob reçoit des paiements entrants, associés à des clés publiques uniques qui sont inattaquable pour un spectateur. Quelques remarques complémentaires : • Lorsque Bob « reconnaît » ses transactions (voir étape 5), il n'utilise pratiquement que la moitié de ses informations privées : (a, B). Cette paire, également connue sous le nom de clé de suivi, peut être transmise à un tiers (Carol). Bob peut lui déléguer le traitement des nouvelles transactions. Bob n'a pas besoin de faire explicitement confiance à Carol, car elle ne peut pas récupérer la clé secrète à usage unique p sans la clé privée complète de Bob (a, b). Cette approche est utile lorsque Bob manque de bande passante ou la puissance de calcul (smartphones, portefeuilles matériels, etc.). • Si Alice souhaite prouver qu'elle a envoyé une transaction à l'adresse de Bob, elle peut soit divulguer r ou utiliser tout type de protocole de connaissance nulle pour prouver qu'elle connaît r (par exemple en signant la transaction avec r). • Si Bob souhaite avoir une adresse compatible avec l'audit où toutes les transactions entrantes sont connectable, il peut soit publier sa clé de suivi, soit utiliser une adresse tronquée. Cette adresse ne représentent qu'une seule clé ec publique B, et la partie restante requise par le protocole est en dérive comme suit : a = Hs(B) et A = Hs(B)G. Dans les deux cas, chaque personne est capable de « reconnaître » toutes les transactions entrantes de Bob, mais, bien sûr, personne ne peut dépenser les fonds qu'ils contiennent sans la clé secrète b. 4.4 Signatures de bague uniques Un protocole basé sur des signatures en anneau uniques permet aux utilisateurs d'obtenir une dissociation inconditionnelle. Malheureusement, les types ordinaires de signatures cryptographiques permettent de retracer les transactions jusqu'à leur émetteurs et récepteurs respectifs. Notre solution à cette lacune réside dans l’utilisation d’une signature différente type que ceux actuellement utilisés dans les systèmes de monnaie électronique. Nous fournirons dans un premier temps un générateural description de notre algorithme sans référence explicite à monnaie électronique. Une signature en anneau unique contient quatre algorithmes : (GEN, SIG, VER, LNK) : GEN : prend des paramètres publics et génère une paire ec (P, x) et une clé publique I. SIG : prend un message m, un ensemble \(S'\) de clés publiques {Pi}i̸=s, une paire (Ps, xs) et génère une signature \(\sigma\) et un ensemble \(S = \)S'\( \cup \{P_s\}\). 8 16 Oui, nous avons maintenant a) une adresse de paiement et b) un identifiant de paiement. Un critique pourrait se demander « est-ce vraiment nécessaire de faire cela ? Après tout, si un commerçant reçoit le 112.00678952 CN exactement, et c'était ma commande, et j'ai une capture d'écran ou un reçu ou autre, n'est-ce pas un degré de précision insensé suffisant ? » La réponse est « peut-être que la plupart du temps, au quotidien, transactions en face à face. Cependant, la situation la plus courante (surtout dans le monde numérique) est la suivante : un commerçant vend un ensemble d'objets, chacun avec un prix fixe. Disons que l'objet A vaut 0,001 CN, l'objet B vaut 0,01 CN et l'objet C vaut 0,1 CN. Maintenant, si le commerçant reçoit une commande de 1,618 CN, il y a beaucoup de (nombreuses !) façons d’organiser une commande pour un client. Et donc sans une sorte d'identifiant de paiement, identifier la commande dite « unique » d'un client avec le coût dit « unique » de sa l'ordre devient impossible. Encore plus drôle : si tout dans ma boutique en ligne coûte exactement 1,0 CN, et je reçois 1000 clients par jour ? Et vous voulez prouver que vous avez acheté exactement 3 objets il y a deux semaines ? Sans identifiant de paiement ? Bonne chance, mon pote. Pour faire court : lorsque Bob publie une adresse de paiement, il peut finir par publier également une adresse de paiement. ainsi que l'identifiant de paiement (voir, par exemple, les dépôts Poloniex XMR). Ceci est différent de ce qui est décrit dans le texte ici où Alice est celle qui génère l'identifiant de paiement. Il doit également y avoir un moyen pour Bob de générer un identifiant de paiement. (une,B) Rappelons que la clé de suivi (a,B) peut être publiée ; perdre le secret de la valeur d’un testament ne pas violer votre capacité à dépenser ni permettre aux gens de vous voler (je pense... cela aurait à prouver), cela permettra simplement aux gens de voir toutes les transactions entrantes. Une adresse tronquée, comme décrit dans ce paragraphe, prend simplement la partie « privée » de la clé et le génère à partir de la partie "publique". Révéler la valeur de « a » supprimera la non-liabilité mais préservera le reste des transactions. L'auteur veut dire "non dissociable" car non dissociable fait référence au récepteur et pouvant être lié fait référence à l'expéditeur. Il est également clair que l’auteur n’avait pas réalisé qu’il y avait deux aspects différents dans la possibilité de lien. Puisque, après tout, la transaction est un objet orienté sur un graphe, deux questions se poseront : "Est-ce que ces deux transactions vont à la même personne ?" et "ces deux transactions arrivent-elles de la même personne ? » Il s'agit d'une politique de « non-retour » en vertu de laquelle la propriété de non-liaison de CryptoNote est conditionnel. C'est-à-dire que Bob peut choisir que ses transactions entrantes ne soient pas dissociables en utilisant cette politique. C’est une affirmation qu’ils prouvent sous le modèle Random Oracle. Nous y reviendrons ; le hasard Oracle a des avantages et des inconvénients.
VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci = Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci = Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 C'est peut-être stupide, mais il faut être prudent lors de l'union de S et P_s. Si vous ajoutez simplement le dernière clé publique jusqu'à la fin, la dissociation est interrompue car quiconque vérifie les transactions en cours peut simplement vérifier la dernière clé publique répertoriée dans chaque transaction et boum. C'est la clé publique associé à l'expéditeur. Ainsi, après l'union, un générateur de nombres pseudo-aléatoires doit être utilisé pour permuter les clés publiques choisies. "...jusqu'à ce que le propriétaire produise une deuxième signature en utilisant la même paire de clés." Je souhaite au(x) auteur(s?) je développerais cela. Je crois que cela signifie "assurez-vous que chaque fois que vous choisissez un ensemble de clés publiques pour masquer vous-même, vous choisissez un jeu complètement nouveau, sans deux clés identiques. » Ce qui ressemble à un condition assez forte à placer en cas de dissociation. Peut-être que « vous choisissez un nouvel ensemble aléatoire parmi toutes les clés possibles" avec l'hypothèse que, même si des intersections non triviales seront inévitablement cela arrive, cela n’arrivera pas souvent. Quoi qu’il en soit, je dois approfondir cette déclaration. Cela génère la signature de l'anneau. Les preuves sans connaissance sont géniales : je vous mets au défi de me prouver que vous connaissez un secret sans révéler le secret. Par exemple, disons que nous sommes à l'entrée d'une grotte en forme de beignet, et au fond de la grotte (hors de vue depuis l'entrée) se trouve un oporte sans issue vers laquelle vous prétendez que vous avez la clé. Si vous allez dans une direction, cela vous laisse toujours passer, mais si vous allez dans la dans l'autre sens, vous avez besoin d'une clé. Mais tu ne veux même pas me MONTRER la clé, encore moins montre-moi que ça ouvre la porte. Mais tu veux me prouver que tu sais ouvrir le porte. Dans le cadre interactif, je lance une pièce de monnaie. Pile à gauche, pile à droite et vous descendez le grotte en forme de beignet, quelle que soit la direction dans laquelle la pièce vous dirige. Au fond, hors de ma vue, tu ouvrez la porte pour revenir de l'autre côté. Nous répétons l'expérience du tirage au sort jusqu'à ce que je sois convaincu que vous avez la clé. Mais c’est clairement la preuve INTERACTIVE de connaissance zéro. Il existe des versions non interactives dans lesquelles vous et moi n'avons jamais à communiquer ; de cette façon, aucune écoute indiscrète ne peut interférer. http://en.wikipedia.org/wiki/Zero-knowledge_proof Cette définition est inversée par rapport à la définition précédente.
VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci = Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER : prend un message m, un ensemble S, une signature \(\sigma\) et renvoie « vrai » ou « faux ». LNK : prend un ensemble I = {Ii}, une signature \(\sigma\) et produit « linked » ou « indep ». L'idée derrière le protocole est assez simple : un utilisateur produit une signature qui peut être vérifié par un ensemble de clés publiques plutôt que par une clé publique unique. L'identité du signataire est impossible à distinguer des autres utilisateurs dont les clés publiques sont dans l'ensemble jusqu'à ce que le propriétaire produise une deuxième signature utilisant la même paire de clés. Clés privées x0 \(\cdots\) xi \(\cdots\) xn Clés publiques P0 \(\cdots\) Pi \(\cdots\) Pn Bague Signature signe vérifier Fig. 6. Anonymat de la signature en anneau. GEN : Le signataire choisit une clé secrète aléatoire \(x \in [1, l - 1]\) et calcule la clé correspondante clé publique P = xG. De plus, il calcule une autre clé publique I = xHp(P) que nous allons appelons « l’image clé ». SIG : le signataire génère une signature en anneau unique avec une connaissance nulle non interactive preuve en utilisant les techniques de [21]. Il sélectionne un sous-ensemble aléatoire \(S'\) de n parmi ceux des autres utilisateurs. clés publiques Pi, sa propre paire de clés (x, P) et l'image clé I. Soit \(0 \leq s \leq n\) l'index secret du signataire dans S (pour que sa clé publique soit Ps). Il choisit un {qi | je = 0 . . . n} et {wi | je = 0 . . . n, i ̸= s} de (1 . . . l) et applique la transformations suivantes : Li = ( qiG, si je = s qiG + wiPi, si je ̸= s Ri = ( qiHp(Pi), si je = s qiHp(Pi) + wiI, si je ̸= s La prochaine étape consiste à relever le défi non interactif : c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Finalement le signataire calcule la réponse : ci = Wi, si je ̸= s c- nP je = 0 ci mod l, si je = s ri = ( qi, si je ̸= s qs −csx mod l, si je = s La signature résultante est \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Tout ce domaine est indépendant des cryptonotes, décrivant simplement l'algorithme de signature en anneau sans référence aux monnaies. Je soupçonne qu'une partie de la notation est cohérente avec le reste de l'article, cependant. Par exemple, x est la clé secrète « aléatoire » choisie dans GEN, qui donne la clé publique P et l'image de clé publique I. Cette valeur de x est la valeur que Bob calcule dans la partie 6 page 8. Voilà donc commence à dissiper une partie de la confusion de la description précédente. C'est plutôt cool ; l'argent n'est pas transféré de "l'adresse publique d'Alice vers l'adresse publique de Bob adresse." Il est transféré d'une adresse unique à une adresse unique. Donc, dans un sens, voici comment les choses fonctionnent. Si Alex a des cryptonotes parce que quelqu'un les lui a envoyées, cela signifie qu'elle dispose des clés privées nécessaires pour les envoyer à Bob. Elle utilise un échange Diffie-Hellman utilisant les informations publiques de Bob pour générer une nouvelle adresse unique et les cryptonotes sont transférées à cette adresse. Maintenant, puisqu'un échange DH (vraisemblablement sécurisé) a été utilisé pour générer la nouvelle adresse unique auquel Alex a envoyé son CN, Bob est le seul à disposer des clés privées nécessaires pour répéter le ci-dessus. Alors maintenant, Bob est Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation La sommation doit être indexée sur j et non sur i. Chaque c_i est un déchet aléatoire (puisque w_i est aléatoire) sauf pour le cul de c_iassocié à la clé réelle impliquée dans cette signature. La valeur de c est un hash des informations précédentes. Je pense que cela peut contenir une faute de frappe pire que la réutilisation de l'index 'i', car c_s semble être implicitement, et non explicitement, défini. En effet, si l'on prend cette équation avec foi, alors on détermine que c_s = (1/2)c - (1/2) sum_i neq s c_i. Autrement dit, un hash moins tout un tas de nombres aléatoires. En revanche, si cette sommation est destinée à être lue "c_s = (c - sum_j neq s c_j) mod l", puis nous prenons le hash de nos informations précédentes, générons un tas de nombres aléatoires, soustrayez tous ces nombres aléatoires du hash, et cela nous donne c_s. Cela semble être ce qui "devrait" se produire compte tenu de mon intuition, et correspond à l'étape de vérification de la page 10. Mais l’intuition n’est pas mathématique. Je vais approfondir cela. Comme avant ; tous ces éléments seront des déchets aléatoires, à l'exception de celui associé au véritable clé publique du signataire x. Sauf que cette fois, c'est plus ce que j'attendrais de la structure : r_i est aléatoire pour i!=s et r_s est déterminé uniquement par le secret x et les valeurs s-indexées de q_i et c_i.
VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R′ je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés à usage unique (pi, Pi) et la stocke dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R' je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés unique (pi, Pi) et stil le met dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 19 À ce stade, je suis terriblement confus. Alex reçoit un message M avec signature (I,c_1, ..., c_n, r_1, ..., r_n) et liste des publics touches S. et elle exécute VER. Cela calculera L_i' et R_i' Cela vérifie que c_s = c - sum_i neq s c_i sur la page précédente. Au début, j’étais TRÈS (ha) confus. N’importe qui peut calculer L_i’ et R_i’. En effet, chaque r_i et c_i ont été publiés dans la signature sigma avec la valeur de I. L'ensemble S = P_i de toutes les clés publiques a également été publié. Donc, quiconque a vu Sigma et l'ensemble des les clés S = P_i obtiendront les mêmes valeurs pour L_i' et R_i' et vérifieront donc la signature. Mais ensuite je me suis souvenu que cette section décrivait simplement un algorithme de signature, pas un « contrôle » si signé, vérifiez s'il M'EST ENVOYÉ, et si c'est le cas, allez dépenser l'argent." C'est SIMPLEMENT le partie emblématique du jeu. J’ai hâte de lire l’Annexe A lorsque j’y serai enfin. J'aimerais voir une comparaison opération par opération à grande échelle de Cryptonote à Bitcoin. Aussi, électricité/durabilité. Quels éléments des algorithmes constituent ici une « entrée » ? L'entrée de transaction, je crois, est un montant et un ensemble de UTXO dont la somme est supérieure à celle du montant. Montant. Ce n’est pas clair. « Cible de la cachette ? J'y réfléchis depuis quelques minutes maintenant et je n'ai toujours pas le idée la plus floue de ce que cela pourrait signifier. Une attaque à double dépense ne peut être exécutée qu’en manipulant la clé utilisée perçue par un nœud. ensemble d'images \(I\). "Degré d'ambiguïté" = n mais le nombre total de clés publiques incluses dans la transaction est n+1. C'est-à-dire que le degré d'ambiguïté serait "combien d'AUTRES personnes voulez-vous dans la foule ?" La réponse sera probablement, par défaut, « autant que possible ».
VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R' je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés à usage unique (pi, Pi) et la stocke dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 VER : Le vérificateur vérifie la signature en appliquant les transformations inverses : ( L' je = riG + ciPi R' je = riHp(Pi) + ciI Enfin, le vérificateur vérifie si nP je = 0 ci ?= Hs(m, L′ 0, . . . , L' n, R′ 0, . . . , R' n) modèle l Si cette égalité est correcte, le vérificateur exécute l'algorithme LNK. Sinon, le vérificateur rejette la signature. LNK : le vérificateur vérifie si I a été utilisé dans des signatures antérieures (ces valeurs sont stockées dans le définir I). Des utilisations multiples impliquent que deux signatures ont été produites sous la même clé secrète. Le sens du protocole : en appliquant des L-transformations le signataire prouve qu'il sait tel x qu'au moins un Pi = xG. Pour rendre cette preuve non répétable, nous introduisons l'image clé comme je = xHp(P). Le signataire utilise les mêmes coefficients (ri, ci) pour prouver presque la même affirmation : il connaît x tel qu'au moins un \(H_p(P_i) = I \cdot x^{-1}\). Si l'application \(x \to I\) est une injection : 1. Personne ne peut récupérer la clé publique à partir de l’image de clé et identifier le signataire ; 2. Le signataire ne peut pas faire deux signatures avec des I différents et le même x. Une analyse de sécurité complète est fournie à l’Annexe A. 4.5 Transaction CryptoNote standard En combinant les deux méthodes (clés publiques non liées et signature en anneau introuvable), Bob obtient nouveau niveau de confidentialité par rapport au programme Bitcoin original. Cela lui impose de stocker uniquement une clé privée (a, b) et publier (A, B) pour commencer à recevoir et à envoyer des transactions anonymes. Lors de la validation de chaque transaction, Bob effectue en outre uniquement deux multiplications de courbes elliptiques et une addition par sortie pour vérifier si une transaction lui appartient. Pour chacun de ses sortie Bob récupère une paire de clés unique (pi, Pi) et stil le met dans son portefeuille. Toutes les entrées peuvent être il est prouvé de manière circonstancielle qu'ils ont le même propriétaire seulement s'ils apparaissent dans une seule transaction. Dans En fait, cette relation est beaucoup plus difficile à établir en raison de la signature en anneau unique. Avec une signature en anneau, Bob peut efficacement cacher chaque entrée parmi celles de quelqu'un d'autre ; tout est possible les dépensiers seront équiprobables, même le propriétaire précédent (Alice) n'a pas plus d'informations que tout observateur. Lors de la signature de sa transaction, Bob précise n sorties étrangères du même montant que son sortie, en les mélangeant tous sans la participation d’autres utilisateurs. Bob lui-même (ainsi que quelqu'un d'autre) ne sait pas si l'un de ces paiements a été dépensé : un résultat peut être utilisé dans des milliers de signatures comme facteur d'ambiguïté et jamais comme cible de dissimulation. Le doublé Le contrôle des dépenses a lieu dans la phase LNK lors de la vérification par rapport à l'ensemble d'images clés utilisé. Bob peut choisir lui-même le degré d'ambiguïté : n = 1 signifie que la probabilité qu'il ait dépensé, la sortie est de 50 % de probabilité, n = 99 donne 1 %. La taille de la signature résultante augmente linéairement comme O(n+1), donc l'anonymat amélioré coûte à Bob des frais de transaction supplémentaires. Il peut aussi définissez n = 0 et faites en sorte que sa signature en anneau soit composée d'un seul élément, mais cela sera instantanément révélez-le comme un dépensier. 10 20 C'est intéressant ; plus tôt, nous avons fourni un moyen pour un récepteur, Bob, de transmettre tous les messages ENTRANTS transactions non dissociables soit en choisissant la moitié de ses clés privées de manière déterministe, soit en publier la moitié de ses clés privées comme publiques. Il s’agit d’une politique de non-retour. Ici, nous voyons une façon pour un expéditeur, Alex, de choisir une seule transaction sortante comme pouvant être liée, mais en fait ceci révèle Alex comme l'expéditeur de l'ensemble du réseau. Il ne s’agit PAS d’une politique sans retour en arrière. Il s'agit d'une transaction par transaction. Existe-t-il une troisième politique ? Un destinataire, Bob, peut-il générer un identifiant de paiement unique pour Alex qui ne change jamais, peut-être en utilisant un échange Diffie-Hellman ? Si quelqu'un inclut ce paiement Une pièce d'identité fournie quelque part dans sa transaction à l'adresse de Bob, elle doit provenir d'Alex. De cette façon, Alex n'a pas besoin de se révéler à l'ensemble du réseau en choisissant de lier un transaction, mais elle peut toujours s'identifier auprès de la personne à qui elle envoie son argent. N'est-ce pas ce que fait Poloniex ?
Transaction Entrée d'émission Sortie0 . . . Sortiei . . . Sortie Image clé Signature Signature de la bague Clé de destination Sortie1 Clé de destination Sortie Opérations à l'étranger Résultat de l'expéditeur Clé de destination Paire de clés à usage unique Une fois clé privée je = xHp(P) P, x Fig. 7. Génération de signature en anneau dans une transaction standard. 5 Preuve de travail égalitaire Dans cette section, nous proposons et mettons à la terre le nouvel algorithme proof-of-work. Notre objectif premier est de réduire l’écart entre les mineurs CPU (majoritaires) et GPU/FPGA/ASIC (minoritaires). C'est Il est approprié que certains utilisateurs puissent avoir un certain avantage sur d'autres, mais leurs investissements devrait croître au moins linéairement avec la puissance. Plus généralement, produire des appareils spécialisés doit être le moins rentable possible. 5.1 Œuvres connexes Le protocole Bitcoin proof-of-work d'origine utilise la fonction de tarification gourmande en CPU SHA-256. Il se compose principalement d'opérateurs logiques de base et repose uniquement sur la vitesse de calcul de processeur, est donc parfaitement adapté à la mise en œuvre multicœur/convoyeur. Cependant, les ordinateurs modernes ne sont pas limités uniquement par le nombre d'opérations par seconde, mais aussi par taille de mémoire. Bien que certains processeurs puissent être nettement plus rapides que d'autres [8], les tailles de mémoire sont moins susceptibles de varier entre les machines. Les fonctions de prix liées à la mémoire ont été introduites pour la première fois par Abadi et al et ont été définies comme « fonctions dont le temps de calcul est dominé par le temps passé à accéder à la mémoire » [15]. L’idée principale est de construire un algorithme allouant un gros bloc de données (« scratchpad ») dans une mémoire accessible relativement lentement (par exemple, la RAM) et « l’accès à un séquence imprévisible d'emplacements »à l'intérieur. Un bloc doit être suffisamment grand pour permettre la conservation les données plus avantageuses que de les recalculer pour chaque accès. L'algorithme devrait également empêcher le parallélisme interne, donc N threads simultanés devraient nécessiter N fois plus de mémoire à la fois. Dwork et al [22] ont étudié et formalisé cette approche les amenant à suggérer une autre variante de la fonction de tarification : « Mbound ». Une autre œuvre appartient à F. Coelho [20], qui 11 Transaction Entrée d'émission Sortie0 . . . Sortiei . . . Sortie Image clé Signature Signature de la bague Clé de destination Sortie1 Clé de destination Sortie Opérations à l'étranger Résultat de l'expéditeur Clé de destination Paire de clés à usage unique Une fois clé privée je = xHp(P) P, x Fig. 7. Génération de signature en anneau dans une transaction standard. 5 Preuve de travail égalitaire Dans cette section, nous proposons et mettons à la terre le nouvel algorithme proof-of-work. Notre objectif premier est de réduire l’écart entre les mineurs CPU (majoritaires) et GPU/FPGA/ASIC (minoritaires). C'est Il est approprié que certains utilisateurs puissent avoir un certain avantage sur d'autres, mais leurs investissements devrait croître au moins linéairement avec la puissance. Plus généralement, produire des appareils spécialisés doit être le moins rentable possible. 5.1 Œuvres connexes Le protocole Bitcoin proof-of-work d'origine utilise la fonction de tarification gourmande en CPU SHA-256. Il se compose principalement d'opérateurs logiques de base et repose uniquement sur la vitesse de calcul de processeur, est donc parfaitement adapté à la mise en œuvre multicœur/convoyeur. Cependant, les ordinateurs modernes ne sont pas limités uniquement par le nombre d'opérations par seconde, mais aussi par taille de mémoire. Bien que certains processeurs puissent être nettement plus rapides que d'autres [8], les tailles de mémoire sont moins susceptibles de varier entre les machines. Les fonctions de prix liées à la mémoire ont été introduites pour la première fois par Abadi et al et ont été définies comme « fonctions dont le temps de calcul est dominé par le temps passé à accéder à la mémoire » [15]. L’idée principale est de construire un algorithme allouant un gros bloc de données (« scratchpad ») dans une mémoire accessible relativement lentement (par exemple, la RAM) et « l’accès à un séquence imprévisible d'emplacements »à l'intérieur. Un bloc doit être suffisamment grand pour permettre la conservation les données plus avantageuses que de les recalculer pour chaque accès. L'algorithme devrait également empêcher le parallélisme interne, donc N threads simultanés devraient nécessiter N fois plus de mémoire à la fois. Dwork et al [22] ont étudié et formalisé cette approche les amenant à suggérer une autre variante de la fonction de tarification : « Mbound ». Une autre œuvre appartient à F. Coelho [20], qui 11 21 Ce sont apparemment nos UTXO : montants et clés de destination. Si Alex est celui qui construit cette transaction standard et l'envoie à Bob, alors Alex possède également les clés privées à chacun d'eux. J'aime beaucoup ce diagramme, car il répond à certaines questions précédentes. Une entrée Txn consiste d'un ensemble de sorties Txn et d'un kevotre image. Il est ensuite signé d'une signature en anneau, comprenant tous des clés privées qu'Alex possède pour toutes les transactions étrangères incluses dans la transaction. Le La sortie Txn se compose d’un montant et d’une clé de destination. Le destinataire de la transaction peut, à volonté, génèrent leur clé privée unique comme décrit précédemment dans le document afin de dépenser l'argent. Ce sera ravi de découvrir à quel point cela correspond au code réel... Non, Nic van Saberhagen décrit vaguement certaines propriétés d'un algorithme de preuve de travail, sans réellement décrire cet algorithme. L'algorithme CryptoNight lui-même EXIGERA une analyse approfondie. Quand j'ai lu ceci, j'ai bégayé. Les investissements devraient-ils croître au moins de façon linéaire avec le pouvoir, ou les investissements augmentent au plus linéairement avec le pouvoir ? Et puis j'ai réalisé ; En tant que mineur ou investisseur, je pense généralement à « quelle puissance puis-je obtenir ? pour un investissement ?" et non « combien d'investissement est nécessaire pour une quantité d'énergie fixée ? » Bien sûr, on note l'investissement par I et le pouvoir par P. Si I(P) est l'investissement en fonction du pouvoir et P(I) est la puissance en fonction de l’investissement, ils seront inverses l’un de l’autre (partout où des inverses peuvent exister). Et si I(P) est plus rapide que linéaire, alors P(I) est plus lent que linéaire. Par conséquent, le taux de rendement pour les investisseurs sera réduit. C'est-à-dire que ce que dit ici l'auteur est : « bien sûr, plus vous investissez, plus vous obtiendrez plus ». pouvoir. Mais nous devrions essayer d’en faire un taux de rendement réduit. » Les investissements en CPU finiront par plafonner de manière sublinéaire ; la question est de savoir si les auteurs ont conçu un algorithme POW qui obligera les ASIC à le faire également. Une hypothétique « monnaie du futur » devrait-elle toujours exploiter les ressources les plus lentes/les plus limitées ? L'article d'Abadi et al (dont les auteurs sont des ingénieurs de Google et de Microsoft) est le suivant : essentiellement, en utilisant le fait que ces dernières années la taille de la mémoire a été beaucoup plus petite différence entre les machines que la vitesse du processeur, et avec un rapport investissement/puissance plus que linéaire. Dans quelques années, il faudra peut-être réévaluer cela ! Tout est une course aux armements... Construire une fonction hash est difficile ; construire une fonction hash satisfaisant ces contraintes semble plus difficile. Cet article ne semble contenir aucune explication sur la réalité hashing algorithme CryptoNight. Je pense que c'est une implémentation de SHA-3 gourmande en mémoire, basée sur sur les messages du forum mais je n'en ai aucune idée... et c'est le point. Il faut l'expliquer.
a proposé la solution la plus efficace : « Hokkaido ». A notre connaissance le dernier travail basé sur l'idée de recherches pseudo-aléatoires dans un grand tableau est l'algorithme dit « scrypt » de C. Percival [32]. Contrairement aux fonctions précédentes, il se concentre sur dérivation de clé, et non les systèmes proof-of-work. Malgré ce fait, scrypt peut servir notre objectif : cela fonctionne bien comme fonction de tarification dans le problème de conversion partiel hash tel que SHA-256 dans Bitcoin. À présent, scrypt a déjà été appliqué dans Litecoin [14] et dans quelques autres forks Bitcoin. Cependant, sa mise en œuvre n'est pas vraiment liée à la mémoire : le rapport « temps d'accès mémoire / global » time » n’est pas assez grand car chaque instance n’utilise que 128 Ko. Cela permet aux mineurs GPU être environ 10 fois plus efficace et continue de laisser la possibilité de créer relativement des appareils miniers bon marché mais très efficaces. De plus, la construction du scrypt elle-même permet un compromis linéaire entre la taille de la mémoire et Vitesse du processeur due au fait que chaque bloc du bloc-notes est dérivé uniquement du précédent. Par exemple, vous pouvez stocker un bloc sur deux et recalculer les autres de manière paresseuse, c'est-à-dire uniquement quand cela devient nécessaire. Les indices pseudo-aléatoires sont supposés être uniformément distribués, donc la valeur attendue des recalculs des blocs supplémentaires est 1 \(2 \cdot N\), où N est le nombre d'itérations. Le temps de calcul global augmente de moins de moitié car il y a aussi opérations indépendantes du temps (temps constant) telles que la préparation du bloc-notes et le hashing sur chaque itération. Économiser 2/3 des coûts de mémoire 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N recalculs supplémentaires ; 9/10 résultats en 1 \(10 \cdot N\) + . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Il est facile de montrer que stocker seulement 1 s de tous les blocs augmente le temps moins que d'un facteur s−1 2 . Cela implique à son tour qu'une machine dotée d'un processeur 200 fois plus rapide que les puces modernes, elles ne peuvent stocker que 320 octets du bloc-notes. 5.2 L'algorithme proposé Nous proposons un nouvel algorithme lié à la mémoire pour la fonction de tarification proof-of-work. Cela repose sur accès aléatoire à une mémoire lente et met l'accent sur la dépendance à la latence. Contrairement à crypter chaque le nouveau bloc (d’une longueur de 64 octets) dépend de tous les blocs précédents. En conséquence, une hypothétique « économiseur de mémoire » devrait augmenter sa vitesse de calcul de manière exponentielle. Notre algorithme nécessite environ 2 Mo par instance pour les raisons suivantes : 1. Il s'intègre dans le cache L3 (par cœur) des processeurs modernes, qui devraient devenir courants dans quelques années ; 2. Un mégaoctet de mémoire interne est une taille presque inacceptable pour un pipeline ASIC moderne ; 3. Les GPU peuvent exécuter des centaines d’instances simultanées, mais ils sont limités par d’autres moyens : La mémoire GDDR5 est plus lente que le cache CPU L3 et remarquable par sa bande passante, non vitesse d'accès aléatoire. 4. Une expansion significative du bloc-notes nécessiterait une augmentation du nombre d'itérations, ce qui en le tour implique une augmentation globale du temps. Les appels « lourds » dans un réseau p2p sans confiance peuvent conduire à de graves vulnérabilités, car les nœuds sont obligés de vérifier le proof-of-work de chaque nouveau bloc. Si un nœud passe beaucoup de temps sur chaque évaluation hash, il peut facilement être DDoSed par un flot de faux objets avec des données de travail arbitraires (valeurs nonce). 12 a proposé la solution la plus efficace : « Hokkaido ». A notre connaissance le dernier travail basé sur l'idée de recherches pseudo-aléatoires dans un grand tableau est l'algorithme dit « scrypt » de C. Percival [32]. Contrairement aux fonctions précédentes, il se concentre sur dérivation de clé, et non les systèmes proof-of-work. Malgré ce fait, scrypt peut servir notre objectif : cela fonctionne bien comme fonction de tarification dans le problème de conversion partiel hash tel que SHA-256 dans Bitcoin. À présent, scrypt a déjà été appliqué dans Litecoin [14] et dans quelques autres forks Bitcoin. Cependant, sa mise en œuvre n'est pas vraiment liée à la mémoire : le rapport « temps d'accès mémoire / global » time » n’est pas assez grand car chaque instance n’utilise que 128 Ko. Cela permet aux mineurs GPU être environ 10 fois plus efficace et continue de laisser la possibilité de créer relativement des appareils miniers bon marché mais très efficaces. De plus, la construction du scrypt elle-même permet un compromis linéaire entre la taille de la mémoire et Vitesse du processeur due au fait que chaque bloc du bloc-notes est dérivé uniquement du précédent. Par exemple, vous pouvez stocker un bloc sur deux et recalculer les autres de manière paresseuse, c'est-à-dire uniquement quand cela devient nécessaire. Les indices pseudo-aléatoires sont supposés être uniformément distribués, donc la valeur attendue des recalculs des blocs supplémentaires est 1 \(2 \cdot N\), oùN est le nombre d'itérations. Le temps de calcul global augmente de moins de moitié car il y a aussi opérations indépendantes du temps (temps constant) telles que la préparation du bloc-notes et le hashing sur chaque itération. Économiser 2/3 des coûts de mémoire 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N recalculs supplémentaires ; 9/10 résultats en 1 \(10 \cdot N\) + . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Il est facile de montrer que stocker seulement 1 s de tous les blocs augmente le temps moins que d'un facteur s−1 2 . Cela implique à son tour qu'une machine dotée d'un processeur 200 fois plus rapide que les puces modernes, elles ne peuvent stocker que 320 octets du bloc-notes. 5.2 L'algorithme proposé Nous proposons un nouvel algorithme lié à la mémoire pour la fonction de tarification proof-of-work. Cela repose sur accès aléatoire à une mémoire lente et met l'accent sur la dépendance à la latence. Contrairement à crypter chaque le nouveau bloc (d’une longueur de 64 octets) dépend de tous les blocs précédents. En conséquence, une hypothétique « économiseur de mémoire » devrait augmenter sa vitesse de calcul de manière exponentielle. Notre algorithme nécessite environ 2 Mo par instance pour les raisons suivantes : 1. Il s'intègre dans le cache L3 (par cœur) des processeurs modernes, qui devraient devenir courants dans quelques années ; 2. Un mégaoctet de mémoire interne est une taille presque inacceptable pour un pipeline ASIC moderne ; 3. Les GPU peuvent exécuter des centaines d’instances simultanées, mais ils sont limités par d’autres moyens : La mémoire GDDR5 est plus lente que le cache CPU L3 et remarquable par sa bande passante, non vitesse d'accès aléatoire. 4. Une expansion significative du bloc-notes nécessiterait une augmentation du nombre d'itérations, ce qui en le tour implique une augmentation globale du temps. Les appels « lourds » dans un réseau p2p sans confiance peuvent conduire à vulnérabilités graves, car les nœuds sont obligés de vérifier le proof-of-work de chaque nouveau bloc. Si un nœud passe beaucoup de temps sur chaque évaluation hash, il peut facilement être DDoSed par un flot de faux objets avec des données de travail arbitraires (valeurs nonce). 12 22 Peu importe, c’est une pièce secrète ? Où est l'algorithme ? Tout ce que je vois, c'est une publicité. C’est là que Cryptonote, si son algorithme PoW en vaut la peine, brillera vraiment. Ce n'est pas vraiment SHA-256, ce n'est pas vraiment un scrypt. C’est nouveau, lié à la mémoire et non récursif.
6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l'équilibrage des coûts et le profit des frais et fixe ses propres « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l’équilibrage dese coûte et profite des honoraires et fixe les siens « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 23 Unités atomiques. J'aime ça. Est-ce l'équivalent des Satoshis ? Si tel est le cas, cela signifie qu’il y aura 185 milliards de cryptonotes. Je sais que cela doit éventuellement être modifié en quelques pages, ou peut-être y a-t-il une faute de frappe ? Si la récompense de base est « toutes les pièces restantes », alors un seul bloc suffit pour obtenir toutes les pièces. Instaminer. D'un autre côté, si l'on suppose que cela est proportionnel d'une manière ou d'une autre à la différence de temps entre maintenant et une date de fin de production de pièces de monnaie ? Ce serait avoir du sens. De plus, dans mon monde, deux signes plus grands que comme celui-ci signifient « bien plus grand que ». L'auteur est-il peut-être vouloir dire autre chose ? Si l'ajustement à la difficulté se produit à chaque bloc, alors un attaquant pourrait disposer d'une très grande ferme de ressources. les machines exploitent et s'éteignent à des intervalles de temps soigneusement choisis. Cela pourrait provoquer une explosion chaotique (ou un crash à zéro) en difficulté, si les formules d’ajustement de la difficulté ne sont pas correctement amorties. Sans doute que la méthode de Bitcoin est inadaptée aux recalculs rapides, mais la notion d'inertie dans ces systèmes devraient être prouvés et non tenus pour acquis. De plus, les oscillations Les difficultés de réseau ne constituent pas nécessairement un problème, à moins qu’elles n’entraînent des oscillations de paramètres ostensibles. l'approvisionnement en pièces de monnaie - et le fait d'avoir une difficulté évoluant très rapidement pourrait provoquer une « sur-correction ». Le temps passé, surtout sur un laps de temps court comme quelques minutes, sera proportionnel au « total nombre de blocs créés sur le réseau." La constante de proportionnalité va elle-même croître au fil du temps, probablement de façon exponentielle si le CN décolle. Il serait peut-être préférable d'ajuster simplement la difficulté pour conserver le "total des blocs créés sur le terrain". réseau depuis que le dernier bloc a été ajouté à la chaîne principale" dans une certaine valeur constante, ou avec variation limitée ou quelque chose comme ça. Si un algorithme adaptatif informatique facile à mettre en œuvre peut être déterminé, cela semblerait résoudre le problème. Mais ensuite, si nous utilisions cette méthode, quelqu'un possédant une grande ferme minière pourrait fermer sa ferme. pendant quelques heures, puis rallumez-le. Pendant les premiers blocs, cette ferme fera banque. Donc effectivement, cette méthode soulèverait un point intéressant : le minage devient (en moyenne) un perdre la partie sans retour sur investissement, d’autant plus que de plus en plus de personnes se connectent au réseau. Si la difficulté minière réseau très étroitement suivi hashrate, je doute d'une manière ou d'une autre que les gens exploiteraient autant qu'eux fais actuellement. Ou, d’un autre côté, au lieu de maintenir leurs fermes minières en activité 24 heures sur 24 et 7 jours sur 7, ils peuvent les transformer en allumé pendant 6 heures, éteint pendant 2, allumé pendant 6 heures, éteint pendant 2, ou quelque chose comme ça. Passez simplement à une autre pièce pendant quelques heures, attendez que les difficultés disparaissent, puis remontez à bord pour gagner ces quelques extras. des blocs de rentabilité à mesure que le réseau s’adapte. Et tu sais quoi ? C'est en fait probablement l'un des meilleurs scénarios miniers auxquels j'ai pensé... Cela pourrait être circulaire, mais si le temps de création du bloc est en moyenne d'environ une minute, pouvons-nous simplement utiliser le nombre de blocs comme indicateur du « temps passé ? »
6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l'équilibrage des coûts et le profit des frais et fixe ses propres « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l’équilibrage dese coûte et profite des honoraires et fixe les siens « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 24 D'accord, nous avons donc un blockchain, et chaque bloc a des horodatages EN PLUS du simple fait d'être commandé. Cela a clairement été inséré simplement pour résoudre des difficultés d'ajustement, car les horodatages sont très peu fiable, comme mentionné. Sommes-nous autorisés à avoir des horodatages contradictoires dans la chaîne ? Si le bloc A précède le bloc B dans la chaîne et que tout est cohérent en termes de finances, mais le bloc A semble avoir été créé après le bloc B ? Parce que, peut-être, quelqu'un possédait une grande partie du réseau ? Est-ce que ça va ? Probablement parce que les finances ne sont pas en mauvais état. D'accord, donc je déteste cet arbitraire "seulement 80 % des blocages sont légitimes pour le blockchain principal" approche. C'était destiné à empêcher les menteurs de modifier leurs horodatages ? Mais maintenant, il ajoute une incitation pour tout le monde à mentir sur son horodatage et à simplement choisir la médiane. Veuillez définir. Cela signifie "pour ce bloc, n'inclure que les transactions qui incluent des frais supérieurs que p%, de préférence avec des frais supérieurs à 2p%" ou quelque chose comme ça ? Qu’entendent-ils par faux ? Si la transaction est conforme à l'historique du blockchain, et la transaction comprend des frais qui satisfont les mineurs, n'est-ce pas suffisant ? Eh bien, non, pas nécessairement. \(S'\)il n'existe aucune taille de bloc maximale, rien ne peut retenir un utilisateur malveillant du simple téléchargement d'un bloc massif de transactions sur lui-même en une seule fois juste pour ralentir le réseau. Une règle fondamentale concernant la taille maximale des blocs empêche les gens de mettre d'énormes quantités de déchets données sur le blockchain d'un seul coup juste pour ralentir les choses. Mais une telle règle doit certainement être adaptatif : pendant la période de Noël, par exemple, nous pourrions nous attendre à une augmentation du trafic, et la taille du bloc devient très grande, et immédiatement après, pour que la taille du bloc diminue par la suite encore une fois. Nous avons donc besoin soit a) d’une sorte de plafond adaptatif, soit b) d’un plafond suffisamment grand pour que 99 % des des pics de Noël raisonnables ne brisent pas le plafond. Bien sûr, ce deuxième est impossible à estimation – qui sait si une monnaie fera son chemin ? Mieux vaut le rendre adaptatif et ne pas s'inquiéter à ce sujet. Mais nous sommes alors confrontés à un problème de théorie du contrôle : comment rendre cela adaptatif sans vulnérabilité aux attaques ou oscillations sauvages et folles ? Notez qu'une méthode adaptative n'empêche pas les utilisateurs malveillants d'accumuler de petites sommes de données indésirables au fil du temps sur le blockchain pour provoquer un gonflement à long terme. C'est un problème différent dans l’ensemble et avec lequel les pièces cryptonotes ont de sérieux problèmes.
6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate croît ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l'équilibrage des coûts et le profit des frais et fixe ses propres « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 6 Autres avantages 6.1 Émission douce La limite supérieure du montant total des pièces numériques CryptoNote est : MSupply = 264 −1 unités atomiques. Il s'agit d'une restriction naturelle basée uniquement sur les limites de mise en œuvre, et non sur l'intuition. comme « Les pièces N devraient suffire à tout le monde ». Pour garantir la fluidité du processus d'émission, nous utilisons la formule suivante pour le bloc récompenses : BaseReward = (MSupply −A) ≫18, où A est le nombre de pièces précédemment générées. 6.2 Paramètres réglables 6.2.1 Difficulté CryptoNote contient un algorithme de ciblage qui modifie la difficulté de chaque bloc. Ceci diminue le temps de réaction du système lorsque le réseau hashrate augmente ou diminue intensément, en préservant un taux de bloc constant. La méthode originale Bitcoin calcule la relation entre le réel et cibler l'intervalle de temps entre les derniers blocs de 2016 et l'utilise comme multiplicateur pour le courant difficulté. Cela ne convient évidemment pas aux recalculs rapides (en raison de la grande inertie) et entraîne des oscillations. L'idée générale derrière notre algorithme est de résumer tout le travail effectué par les nœuds et divisez-le par le temps qu'ils ont passé. La mesure du travail est constituée des valeurs de difficulté correspondantes dans chaque bloc. Mais en raison d'horodatages inexacts et peu fiables, nous ne pouvons pas déterminer l'heure exacte. intervalle de temps entre les blocs. Un utilisateur peut décaler son horodatage dans le futur et la prochaine fois les intervalles peuvent être incroyablement petits, voire négatifs. Vraisemblablement, il y aura peu d'incidents de ce type, nous pouvons donc simplement trier les horodatages et supprimer les valeurs aberrantes (c'est-à-dire 20 %). La gamme de les valeurs de repos sont le temps qui a été passé pour 80% des blocs correspondants. 6.2.2 Limites de taille Les utilisateurs paient pour stocker le blockchain et ont le droit de voter pour sa taille. Chaque mineur traite du compromis entre l’équilibrage dese coûte et profite des honoraires et fixe les siens « soft-limit » pour créer des blocs. La règle de base concernant la taille maximale des blocs est également nécessaire pour empêchant le blockchain d'être inondé de fausses transactions, cependant cette valeur devrait ne pas être codé en dur. Soit MN la valeur médiane des N dernières tailles de blocs. Ensuite, la « limite stricte » pour la taille de blocs accepteurs est de \(2 \cdot M_N\). Il évite les ballonnements au blockchain tout en permettant à la limite de grandir lentement avec le temps si nécessaire. La taille des transactions n’a pas besoin d’être limitée explicitement. Il est délimité par la taille d’un bloc ; et si quelqu'un veut créer une énorme transaction avec des centaines d'entrées/sorties (ou avec le degré élevé d'ambiguïté des signatures en anneau), il peut le faire en payant des frais suffisants. 6.2.3 Pénalité de taille excédentaire Un mineur a toujours la possibilité de remplir un bloc de ses propres transactions sans frais jusqu'à son maximum. taille 2 \(\cdot\) Mo. Même si seule la majorité des mineurs peuvent modifier la valeur médiane, il existe toujours un 13 25 En redimensionnant le temps de sorte qu'une unité de temps corresponde à N blocs, la taille moyenne des blocs pourrait encore, en théorie, croître de manière exponentielle proportionnellement à 2 t . En revanche, un plafond plus général sur le bloc suivant serait M_nf(M_n) pour une fonction f. Quelles propriétés de f seraient choisissons-nous afin de garantir une certaine « croissance raisonnable » de la taille des blocs ? La progression de la taille des blocs (après le temps de redimensionnement) ressemblerait à ceci : M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Et le but ici est de choisir f tel que cette suite ne croisse pas plus vite que, disons, linéairement, ou peut-être même comme Log(t). Bien sûr, si f(M_n) = a pour une constante a, cette séquence est en fait M_n aM_n aˆ2M_n aˆ3M_n ... Et, bien sûr, la seule façon de limiter cela à une croissance au plus linéaire est de choisir a=1. C’est évidemment irréalisable. Cela ne permet pas du tout la croissance. Si, par contre, f(M_n) est une fonction non constante, alors la situation est bien plus compliqué et peut permettre une solution élégante. Je vais y réfléchir pendant un moment. Ces frais devront être suffisamment élevés pour réduire la pénalité de taille excédentaire de la section suivante. Pourquoi un utilisateur général est-il supposé être un homme, hein ? Hein ?
possibilité de gonfler le blockchain et de produire une charge supplémentaire sur les nœuds. Décourager participants malveillants de créer de gros blocs, nous introduisons une fonction de pénalité : NouvelleRécompense = Récompense de Base \(\cdot\) Taille Noir MN −1 2 Cette règle s'applique uniquement lorsque BlkSize est supérieure à la taille minimale du bloc libre qui devrait être proche du maximum (10 Ko, \(M_N \cdot 110\%\)). Les mineurs sont autorisés à créer des blocs de « taille habituelle » et même dépassez-le avec profit lorsque les frais globaux dépassent la pénalité. Mais il est peu probable que les frais augmentent quadratiquement différent de la valeur de la pénalité, il y aura donc un équilibre. 6.3 Scripts de transactions CryptoNote possède un sous-système de script très minimaliste. Un expéditeur spécifie une expression Φ = f (x1, x2, . . . , xn), où n est le nombre de clés publiques de destination {Pi}n je = 1. Seulement cinq binaires les opérateurs sont pris en charge : min, max, sum, mul et cmp. Lorsque le destinataire dépense ce paiement, il produit \(0 \leq k \leq n\) signatures et les transmet à l'entrée de la transaction. Le processus de vérification évalue simplement Φ avec xi = 1 pour vérifier une signature valide pour la clé publique Pi, et xi = 0. Un vérificateur accepte la preuve si > 0. Malgré sa simplicité, cette approche couvre tous les cas possibles : • Signature multi-/seuil. Pour la multi-signature « M-out-of-N » de style Bitcoin (c.-à-d. le récepteur doit fournir au moins \(0 \leq M \leq N\) signatures valides) Φ = x1+x2+. . .+xN \(\geq M\) (pour plus de clarté, nous utilisons une notation algébrique commune). La signature seuil pondérée (certaines clés peuvent être plus importantes que d’autres) pourrait être exprimée sous la forme Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Et scénario où le passe-partout correspond à Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Il est facile de montrer que tout cas complexe peut être exprimés avec ces opérateurs, c'est-à-dire qu'ils constituent la base. • Protection par mot de passe. La possession d'un mot de passe secret équivaut à la connaissance de une clé privée, dérivée de manière déterministe du mot de passe : k = KDF(s). Donc un récepteur peut prouver qu'il connaît le mot de passe en fournissant une autre signature sous la clé k. L'expéditeur ajoute simplement la clé publique correspondante à sa propre sortie. Notez que ceci La méthode est beaucoup plus sécurisée que le « puzzle de transaction » utilisé dans Bitcoin [13], où le le mot de passe est explicitement transmis dans les entrées. • Cas dégénérés. Φ = 1 signifie que n’importe qui peut dépenser de l’argent ; Φ = 0 marque le la production n’est pas dépensable pour toujours. Dans le cas où le script de sortie combiné aux clés publiques est trop volumineux pour un expéditeur, il peut utiliser un type de sortie spécial, qui indique que le destinataire mettra ces données dans son entrée alors que l'expéditeur n'en fournit qu'un hash. Cette approche est similaire au « pay-to-hash » de Bitcoin. fonctionnalité, mais au lieu d'ajouter de nouvelles commandes de script, nous traitons ce cas au niveau de la structure des données niveau. 7 Conclusion Nous avons étudié les défauts majeurs de Bitcoin et proposé quelques solutions possibles. Ces fonctionnalités avantageuses et notre développement continu font du nouveau système de paiement électronique CryptoNote un sérieux rival de Bitcoin, surclassant toutes ses fourchettes. 14 possibilité de gonfler le blockchain et de produire une charge supplémentaire sur les nœuds. Décourager participants malveillants de créer de gros blocs, nous introduisons une fonction de pénalité : NouvelleRécompense = Récompense de Base \(\cdot\) Taille Noir MN −1 2 Cette règle s'applique uniquement lorsque BlkSize est supérieure à la taille minimale du bloc libre qui devrait être proche du maximum (10 Ko, \(M_N \cdot 110\%\)). Les mineurs sont autorisés à créer des blocs de « taille habituelle » et même dépassez-le avec profit lorsque les frais globaux dépassent la pénalité. Mais il est peu probable que les frais augmentent quadratiquement différent de la valeur de la pénalité, il y aura donc un équilibre. 6.3 Scripts de transactions CryptoNote possède un sous-système de script très minimaliste. Un expéditeur spécifie une expression Φ = f (x1, x2, . . . , xn), où n est le nombre de clés publiques de destination {Pi}n je = 1. Seulement cinq binaires les opérateurs sont pris en charge : min, max, sum, mul et cmp. Lorsque le destinataire dépense ce paiement, il produit \(0 \leq k \leq n\) signatures et les transmet à l'entrée de la transaction. Le processus de vérification évalue simplement Φ avec xi = 1 pour vérifier une signature valide pour la clé publique Pi, et xi = 0. Un vérificateur accepte la preuve si > 0. Malgré sa simplicité, cette approche couvre tous les cas possibles : • Signature multi-/seuil. Pour la multi-signature « M-out-of-N » de style Bitcoin (c.-à-d. le récepteur doit fournir au moins \(0 \leq M \leq N\) signatures valides) Φ = x1+x2+. . .+xN \(\geq M\) (pour plus de clarté, nous utilisons une notation algébrique commune). La signature seuil pondérée (certaines clés peuvent être plus importantes que d’autres) pourrait être exprimée sous la forme Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Et le scénarioio où le passe-partout correspond à Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Il est facile de montrer que tout cas complexe peut être exprimés avec ces opérateurs, c'est-à-dire qu'ils constituent la base. • Protection par mot de passe. La possession d'un mot de passe secret équivaut à la connaissance de une clé privée, dérivée de manière déterministe du mot de passe : k = KDF(s). Donc un récepteur peut prouver qu'il connaît le mot de passe en fournissant une autre signature sous la clé k. L'expéditeur ajoute simplement la clé publique correspondante à sa propre sortie. Notez que ceci La méthode est beaucoup plus sécurisée que le « puzzle de transaction » utilisé dans Bitcoin [13], où le le mot de passe est explicitement transmis dans les entrées. • Cas dégénérés. Φ = 1 signifie que n’importe qui peut dépenser de l’argent ; Φ = 0 marque le la production n’est pas dépensable pour toujours. Dans le cas où le script de sortie combiné aux clés publiques est trop volumineux pour un expéditeur, il peut utiliser un type de sortie spécial, qui indique que le destinataire mettra ces données dans son entrée alors que l'expéditeur n'en fournit qu'un hash. Cette approche est similaire au « pay-to-hash » de Bitcoin. fonctionnalité, mais au lieu d'ajouter de nouvelles commandes de script, nous traitons ce cas au niveau de la structure des données niveau. 7 Conclusion Nous avons étudié les défauts majeurs de Bitcoin et proposé quelques solutions possibles. Ces fonctionnalités avantageuses et notre développement continu font du nouveau système de paiement électronique CryptoNote un sérieux rival de Bitcoin, surclassant toutes ses fourchettes. 14 26 Cela peut être inutile si nous pouvons trouver un moyen de limiter la taille des blocs au fil du temps... Cela ne peut pas non plus être correct. Ils ont juste réglé "NewReward" sur une parabole orientée vers le haut où la taille du bloc est la variable indépendante. Ainsi une nouvelle récompense explose à l’infini. Si, d'autre part main, la nouvelle récompense est Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)), puis la nouvelle récompense serait une parabole orientée vers le bas avec un pic à la taille du bloc = Mn et avec des intersections à Taille du bloc = 0 et Taille du bloc = 2Mn. Et c’est apparemment ce qu’ils tentent de décrire. Toutefois, cela ne
追跡できない取引
このセクションでは、追跡不可能性と追跡不可能性の両方を満たす完全匿名トランザクションのスキームを提案します。
そしてリンク解除条件。私たちのソリューションの重要な特徴は、送信側の自律性です。
取引を行うために他のユーザーまたは信頼できる第三者と協力する必要はありません。
したがって、各参加者は独立してカバー トラフィックを生成します。
4.1
文献レビュー
私たちのスキームは、グループ署名と呼ばれる暗号化プリミティブに依存しています。最初に提示されたのは
D. Chaum と E. van Heyst [19] を使用すると、ユーザーがグループを代表して自分のメッセージに署名できるようになります。
メッセージに署名した後、ユーザーは自分自身の単一の公開情報ではなく (検証目的で) 提供します。
1これはいわゆる「ソフトリミット」、つまり新しいブロックを作成するための参照クライアント制限です。ハード最大値
可能なブロックサイズは 1 MB でした
4
必要に応じてそれらを使用すると、主な欠点が生じます。残念ながら、いつ起こるかを予測するのは困難です。
定数の変更が必要になる場合があり、定数を置き換えるとひどい結果につながる可能性があります。
悲惨な結果をもたらすハードコードされた制限変更の好例は、次のブロックです。
サイズ制限は 250kb1 に設定されています。この制限は、約 10000 件の標準トランザクションを保持するには十分です。で
2013 年の初めには、この制限にほぼ達していたので、上限を増やすことで合意に達しました。
限界。この変更はウォレットバージョン0.8で実装され、24ブロックのチェーン分割で終了しました。
そして二重支出攻撃[9]が成功しました。バグは Bitcoin プロトコルにはありませんでしたが、
むしろデータベース エンジンに問題があった場合、単純なストレス テストで簡単に検出できたはずです。
人為的に導入されたブロック サイズ制限はありません。
定数は、一元化ポイントの形式としても機能します。
ピアツーピアの性質にもかかわらず、
Bitcoin、圧倒的多数のノードは、によって開発された公式リファレンス クライアント [10] を使用しています。
少人数のグループ。このグループは、プロトコルへの変更を実装する決定を下します。
そしてほとんどの人は、その「正しさ」に関係なく、こうした変化を受け入れます。いくつかの決定が引き起こした
白熱した議論が行われ、ボイコット [11] さえ呼び掛けられています。これは、コミュニティと
開発者はいくつかの重要な点で意見が異なる場合があります。したがって、プロトコルを持つことは論理的であると思われます
これらの問題を回避する可能な方法として、ユーザーが構成可能で自己調整可能な変数を使用します。
2.5
かさばるスクリプト
Bitcoin のスクリプト システムは、重くて複雑な機能です。それは潜在的に人が作成することを可能にします
洗練されたトランザクション [12] ですが、セキュリティ上の懸念から一部の機能が無効になっています。
[13] は一度も使用されていないものもあります。スクリプト (送信側と受信側の両方の部分を含む)
Bitcoin で最も人気のあるトランザクションは次のようになります。
キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開鍵は多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本署名アルゴリズムとして、高速スキーム EdDSA を使用することを選択しました。 DJによって実装されました。バーンスタインら。 [18]。 Bitcoin の ECDSA と同様、楕円曲線に基づいています 離散対数問題なので、私たちのスキームは将来 Bitcoin にも適用される可能性があります。 共通パラメータは次のとおりです。 q:素数。 q = 2255 -19; d:Fqの要素。 d = −121665/121666; E:楕円曲線方程式。 −x2 + y2 = 1 + dx2y2; G:基点。 G = (x, −4/5); l: 基点の素数順序。 l = 2252 + 27742317777372353535851937790883648493; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 hash 関数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 用語 プライバシーを強化するには、Bitcoin エンティティと混同しないようにするための新しい用語が必要です。 private ec-key は標準の楕円曲線秘密鍵です: 数値 \(a \in [1, l - 1]\)。 public ec-key は標準の楕円曲線公開鍵です: 点 A = aG; ワンタイム キー ペアは、秘密 EC キーと公開 EC キーのペアです。 5 キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本的な署名アルゴリズムとして、e 開発された高速スキーム EdDSA を使用します。 DJによって実装されました。バーンスタインら。 [18]。 Bitcoin の ECDSA と同様、楕円曲線に基づいています 離散対数問題なので、私たちのスキームは将来 Bitcoin にも適用される可能性があります。 共通パラメータは次のとおりです。 q:素数。 q = 2255 -19; d:Fqの要素。 d = −121665/121666; E:楕円曲線方程式。 −x2 + y2 = 1 + dx2y2; G:基点。 G = (x, −4/5); l: 基点の素数順序。 l = 2252 + 27742317777372353535851937790883648493; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 hash 関数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 用語 プライバシーを強化するには、Bitcoin エンティティと混同しないようにするための新しい用語が必要です。 private ec-key は標準の楕円曲線秘密鍵です: 数値 \(a \in [1, l - 1]\)。 public ec-key は標準の楕円曲線公開鍵です: 点 A = aG; ワンタイム キー ペアは、秘密 EC キーと公開 EC キーのペアです。 5 8 指輪の署名は次のように機能します。アレックスは、雇用主に関するメッセージをウィキリークスにリークしたいと考えています。彼女の会社のすべての従業員は、秘密鍵と公開鍵のペア (Ri、Ui) を持っています。彼女は作曲します 彼女のメッセージとして設定された入力を含む彼女の署名、m、秘密鍵、Ri、および全員の 公開鍵、(Ui;i=1...n)。誰でも (秘密鍵を知らなくても) 簡単に検証できます。 何らかのペア (Rj, Uj) が署名の構築に使用されたに違いありません...働いている人 アレックスの雇用主の場合...しかし、それがどれであるかを理解するのは基本的にランダムな推測です。 http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 ここで説明するリンク可能なリング署名は、「リンク不可能」の反対のようなものであることに注意してください。 上で説明した。ここでは 2 つのメッセージを傍受し、同じメッセージかどうかを判断できます。 当事者がそれらを送信しましたが、その当事者が誰であるかをまだ特定できないはずです。 の Cryptonote の構築に使用される「リンク不可能」の定義は、次のいずれかを判断できないことを意味します。 同じ当事者がそれらを受信しています。 したがって、ここで実際に起こっているのは 4 つのことです。 システムはリンク可能であることも、 送信者であるかどうかを判断できるかどうかに応じて、リンク不可 2 つのメッセージは同じです (匿名性を取り消す必要があるかどうかに関係なく)。 そして システムは、次のことが可能かどうかに応じて、リンク不能または非リンク可能になります。 2 つのメッセージの受信者が同じかどうかを判断します (かどうかに関係なく) これには匿名性を取り消す必要があります)。 このひどい用語のせいで私を責めないでください。 グラフ理論家はおそらくそうあるべきです 満足です。 「送信者リンク可能」よりも「受信者リンク可能」の方が使いやすい人もいるかもしれません。 http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 これを読んだとき、これはばかげた機能のように思えました。それから、それが次の機能である可能性があることを読みました 電子投票、それは理にかなっているように思えました。そういう観点から見ると、ちょっとクールですね。でも私は 追跡可能なリング署名を意図的に実装するかどうかは完全にはわかりません。 http://search.ieice.org/bin/summary.php?id=e95-a_1_151
キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本署名アルゴリズムとして、高速スキーム EdDSA を使用することを選択しました。 DJによって実装されました。バーンスタインら。 [18]。 Bitcoin の ECDSA と同様、楕円曲線に基づいています 離散対数問題なので、私たちのスキームは将来 Bitcoin にも適用される可能性があります。 共通パラメータは次のとおりです。 q:素数。 q = 2255 -19; d:Fqの要素。 d = −121665/121666; E:楕円曲線方程式。 −x2 + y2 = 1 + dx2y2; G:基点。 G = (x, −4/5); l: 基点の素数順序。 l = 2252 + 27742317777372353535851937790883648493; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 hash 関数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 用語 プライバシーを強化するには、Bitcoin エンティティと混同しないようにするための新しい用語が必要です。 private ec-key は標準の楕円曲線秘密鍵です: 数値 \(a \in [1, l - 1]\)。 public ec-key は標準の楕円曲線公開鍵です: 点 A = aG; ワンタイム キー ペアは、秘密 EC キーと公開 EC キーのペアです。 5 キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本的な署名アルゴリズムとして、e 開発された高速スキーム EdDSA を使用します。 DJによって実装されました。バーンスタインら。 [18]。 Bitcoin の ECDSA と同様、楕円曲線に基づいています 離散対数問題なので、私たちのスキームは将来 Bitcoin にも適用される可能性があります。 共通パラメータは次のとおりです。 q:素数。 q = 2255 -19; d:Fqの要素。 d = −121665/121666; E:楕円曲線方程式。 −x2 + y2 = 1 + dx2y2; G:基点。 G = (x, −4/5); l: 基点の素数順序。 l = 2252 + 27742317777372353535851937790883648493; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 hash 関数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 用語 プライバシーを強化するには、Bitcoin エンティティと混同しないようにするための新しい用語が必要です。 private ec-key は標準の楕円曲線秘密鍵です: 数値 \(a \in [1, l - 1]\)。 public ec-key は標準の楕円曲線公開鍵です: 点 A = aG; ワンタイム キー ペアは、秘密 EC キーと公開 EC キーのペアです。 5 9 ああ、このホワイトペーパーの著者なら、これをもっと適切に表現できたはずです。たとえば、 従業員所有の会社は、特定の新規企業を買収するかどうかについて投票を行いたいと考えています アレックスとブレンダは両方とも従業員です。会社は従業員一人ひとりに 「提案 A に賛成票を投じます!」のようなメッセージメタ情報「問題」を持つ [PROP A] そして、その提案を支持する場合は、追跡可能な指輪の署名で署名するように求めます。 従来のリング署名を使用すると、不正な従業員がメッセージに何度も署名する可能性があります。 おそらく、好きなだけ投票するために、さまざまな nonce を使用しているのでしょう。一方では 追跡可能なリング署名スキームで、アレックスは投票に行き、彼女の秘密鍵は 問題 [PROP A] で使用されました。アレックスが「私、ブレンダは賛成します」のようなメッセージに署名しようとすると、 提案A!」ブレンダを「フレーム化」して二重投票する場合、この新しいメッセージにも問題が発生します [プロップA]。 Alex の秘密鍵はすでに [PROP A] 問題を解決しているため、Alex の身元は すぐに詐欺だと判明します。 正直言って、これはかなりクールです!暗号化により投票の平等が強制されました。 http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 この論文は興味深いもので、基本的にはアドホックなリング署名を作成しますが、 他の参加者の同意。署名の構造は異なる場合があります。掘ってないよ 深くて安全かどうかはわかりません。 https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai アドホック グループ署名は次のとおりです。 リング署名。グループのないグループ署名です。 マネージャ、一元化はありませんが、アドホック グループのメンバーが次のことを証明できるように主張できます。 グループを代表して匿名の署名を発行したことはありません(発行していません)。 http://link.springer.com/chapter/10.1007/11908739_9 私の理解では、これは完全に正しくありません。そして私の理解はおそらく次のように変わるでしょう このプロジェクトにさらに深く関わっていきます。しかし、私の理解では、階層は次のようになります。 グループ署名: グループ マネージャーはトレーサビリティとメンバーの追加または削除の機能を制御します。 署名者であることから。 Ring sigs: グループマネージャーのいない任意のグループ形成。匿名性の取り消しはありません。 特定の署名を拒否する方法はありません。追跡可能でリンク可能なリング付き 署名、匿名性はある程度拡張可能です。 アドホック グループ署名: リング署名と似ていますが、メンバーは自分が作成したものではないことを証明できます。 特定の署名。これは、グループ内の誰もが署名を作成できる場合に重要です。 http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 藤崎と鈴木のアルゴリズムは、一度限りのものを提供するために作者によって後で調整されます。それで 藤崎氏と鈴木氏のアルゴリズムを新しいアルゴリズムと並行して分析します。 ここでそれを検討するよりも。
キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本署名アルゴリズムとして、高速スキーム EdDSA を使用することを選択しました。 DJによって実装されました。バーンスタインら。 [18]。 Bitcoin の ECDSA と同様、楕円曲線に基づいています 離散対数問題なので、私たちのスキームは将来 Bitcoin にも適用される可能性があります。 共通パラメータは次のとおりです。 q:素数。 q = 2255 -19; d:Fqの要素。 d = −121665/121666; E:楕円曲線方程式。 −x2 + y2 = 1 + dx2y2; G:基点。 G = (x, −4/5); l: 基点の素数順序。 l = 2252 + 27742317777372353535851937790883648493; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 hash 関数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 用語 プライバシーを強化するには、Bitcoin エンティティと混同しないようにするための新しい用語が必要です。 private ec-key は標準の楕円曲線秘密鍵です: 数値 \(a \in [1, l - 1]\)。 public ec-key は標準の楕円曲線公開鍵です: 点 A = aG; ワンタイム キー ペアは、秘密 EC キーと公開 EC キーのペアです。 5 キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本的な署名アルゴリズムとして、e 開発された高速スキーム EdDSA を使用します。 DJによって実装されました。バーンスタインら。 [18]。 Bitcoin の ECDSA と同様、楕円曲線に基づいています 離散対数問題なので、私たちのスキームは将来 Bitcoin にも適用される可能性があります。 共通パラメータは次のとおりです。 q:素数。 q = 2255 -19; d:Fqの要素。 d = −121665/121666; E:楕円曲線方程式。 −x2 + y2 = 1 + dx2y2; G:基点。 G = (x, −4/5); l: 基点の素数順序。 l = 2252 + 27742317777372353535851937790883648493; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 hash 関数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 用語 プライバシーを強化するには、Bitcoin エンティティと混同しないようにするための新しい用語が必要です。 private ec-key は標準の楕円曲線秘密鍵です: 数値 \(a \in [1, l - 1]\)。 public ec-key は標準の楕円曲線公開鍵です: 点 A = aG; ワンタイム キー ペアは、秘密 EC キーと公開 EC キーのペアです。 5 10 「リンク可能なリング署名」という意味でのリンク可能性とは、ソースが誰であるかを明らかにすることなく、2 つの発信トランザクションが同じソースからのものであるかどうかを判断できることを意味します。作者は弱体化した (a) プライバシーを維持しながら、(b) 秘密キーを使用してトランザクションを特定するためのリンク性 2回目は無効です。 さて、これは順序立てての質問です。 次のシナリオを考えてみましょう。 私の採掘 コンピュータには現在の blockchain があり、それが呼び出す独自のトランザクション ブロックがあります。 正当な場合、proof-of-work パズルのそのブロックで動作し、 次のブロックに追加される保留中のトランザクションのリスト。新作も発信していきます トランザクションを保留中のトランザクションのプールに追加します。 次のブロックを解かなければ、 他の人がそうすれば、blockchain の更新されたコピーを入手できます。私が取り組んでいたブロックと 私の保留中のトランザクションのリストには、どちらにも現在組み込まれているトランザクションが含まれている可能性があります blockchain に入力します。 保留中のブロックを解明し、それを保留中のトランザクションのリストと組み合わせて、それを呼び出します 私の保留中のトランザクションのプール。現在正式に blockchain に含まれているものはすべて削除してください。 さて、どうすればいいでしょうか?まず「二重支出をすべて削除する」必要がありますか?一方では リストを検索して、各秘密鍵がまだ作成されていないことを確認する必要がありますか? 使用済みであり、リスト内ですでに使用されている場合は、最初のコピーを先に受け取ったため、 それ以上のコピーは違法です。したがって、最初のインスタンスの後のすべてのインスタンスを単純に削除します。 同じ秘密鍵の。 代数幾何学は私の得意分野ではありませんでした。 http://en.wikipedia.org/wiki/EdDSA このスピード、すごいですね。これは勝利のための代数幾何学です。何もわかるわけじゃないけど それについて。 問題があるかどうかにかかわらず、離散ログは非常に高速になっています。そして量子コンピューターはそれらを食べる 朝食に。 http://link.springer.com/article/10.1007/s13389-012-0027-1 これは非常に重要な数字になりますが、それがどのように行われるかについての説明や引用はありません。 が選ばれました。既知の大きな素数を 1 つ選択するだけなら問題ありませんが、既知の素数が存在する場合は、 この大きな素数に関する事実は、私たちの選択に影響を与える可能性があります。暗号通貨のさまざまな亜種 異なる値を選択することもできます まあ、しかし、それがどのようにして起こるかについては、この文書では議論されていません。 選択は、5 ページにリストされている他のグローバル パラメーターの選択に影響します。 この文書には、パラメーター値の選択に関するセクションが必要です。
ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様であり、すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション モデル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様のままです。すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション modエル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 11 つまり、これは Bitcoin に似ていますが、無限の匿名私書箱があり、受取人のみが引き換えることができます。 リング署名と同じくらい匿名性の高い秘密キーを生成します。 Bitcoin はこのように機能します。 アレックスがフランクから受け取ったばかりの財布に 0.112 Bitcoin が入っている場合、彼女は本当に署名を持っています。 メッセージ「私、[FRANK]、0.112 Bitcoin を [alex] + H0 + N0 に送信します」 ここで、1) フランクは メッセージに秘密鍵 [FRANK] を使用、2) フランクはアレックスの公開鍵でメッセージに署名しました key、[alex]、3) Frank にはビットコインの歴史の何らかの形式が含まれています、H0、および 4) Frank nonce、N0 と呼ばれるランダムなデータ ビットが含まれています。 アレックスが 0.011 Bitcoin をシャーリーンに送信したい場合、彼女はフランクのメッセージを受け取ります。 これを H1 に設定し、2 つのメッセージに署名します。1 つはトランザクション用、もう 1 つは変更用です。 H1= "私、[FRANK]、0.112 Bitcoin を [alex] に送信 + H0 + N" "私、[ALEX]、0.011 Bitcoin を [alex] に送信 [charlene] + H1 + N1" 「私、[ALEX]、[alex] + H1 + N2 への変更として 0.101 Bitcoin を送信します。」 ここで、Alex は両方のメッセージに彼女の秘密鍵 [ALEX] で署名し、最初のメッセージは Charlene の秘密鍵で署名します。 公開鍵 [charlene]、Alex の公開鍵 [alex] を含む 2 番目のメッセージ、および 履歴と、ランダムに生成されたいくつかの nonce N1 および N2 が適切に保存されます。 Cryptonote は次のように機能します。 アレックスがフランクから受け取ったばかりの 0.112 暗号通貨を財布の中に持っている場合、彼女は本当に署名された暗号を持っています。 メッセージ「私、[アドホック グループの誰か] は、[ワンタイム アドレス] + H0 に 0.112 暗号ノートを送信します +N0。」アレックスは、自分の秘密鍵 [ALEX] を照合して、これが自分のお金であることを発見しました。 通過するすべてのメッセージに対する [ワンタイム アドレス]。彼女がそれを使いたい場合は、 次の方法で。 彼女はお金の受取人を選択します。おそらくシャーリーンはドローン攻撃に投票し始めたので、 アレックスは代わりにブレンダに送金したいと考えています。そこで、アレックスはブレンダの公開鍵 [brenda] を調べます。 そして、彼女自身の秘密鍵 [ALEX] を使用して、ワンタイム アドレス [ALEX+brenda] を生成します。彼女 次に、暗号通貨ユーザーのネットワークから任意のコレクション C を選択し、次のように構築します。 このアドホック グループからのリング署名。 履歴を前のメッセージとして設定し、追加します nonces、通常どおり続行しますか? H1 = 「私、[アドホック グループの誰か]、0.112 暗号通貨を [ワンタイム アドレス] + H0 に送信します +N0。」 「私、[コレクション C の誰か] は、[ALEX+brenda から作成した 1 回限りのアドレス] + H1 + N1 に 0.011 暗号通貨を送信します」 「私、[コレクション C の誰か] は、[ALEX+alex から作成したワンタイム アドレス] + H1 + N2 への変更として 0.101 暗号通貨を送信します。」 現在、Alex と Brenda は両方とも、すべての受信メッセージをスキャンして、ワンタイム アドレスがないかどうかを確認します。 キーを使用して作成されます。 何かを見つけた場合、そのメッセージは彼ら自身の真新しいものになります。 暗号ノート! それでも、トランザクションは依然として blockchain に達します。そのアドレスにコインが入った場合 犯罪者、政治献金者、または委員会やアカウントから送信されたことが知られている 予算が厳しい場合(横領など)、またはこれらのコインの新しい所有者が間違いを犯した場合 そして、これらのコインを、彼が所有していることが知られているコイン、つまり匿名ジグと共通のアドレスに送信します。 ビットコインが上がっています。
ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様であり、すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション モデル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様であり、すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション modエル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 12 したがって、ユーザーがアドレス(実際には公開鍵)からアドレスにコインを送信するのではなく、 (別の公開鍵) 秘密鍵を使用して、ユーザーはワンタイム私書箱からコインを送信します (友人の公開キーを使用して生成) を使用して (同様に) ワンタイム私書箱に送信します。 自分の秘密鍵。 ある意味、私たちは「わかった、みんなお金が動いている間は手を離してください」と言っているのです。 転勤しました!私たちの鍵があの箱を開けることができるということを知るだけで十分です。 私たちは箱の中にどれだけのお金が入っているかを知っています。 私書箱や郵便ポストには決して指紋を付けないでください。 実際に使ってみると、現金が入った箱そのものを取引するだけです。そうすれば誰が送ったか分からなくなります しかし、これらの公開演説の内容は依然として摩擦がなく、代替可能で、分割可能であり、 ビットコインのような、私たちが望むお金の他のすべての優れた性質をまだ持っています。」 私書箱の無限のセット。 あなたはアドレスを公開しています、私は秘密鍵を持っています。私は私の秘密鍵とあなたのアドレスを使用します、そして 公開鍵を生成するためのランダムなデータ。アルゴリズムは次のように設計されています。 アドレスは公開キーの生成に使用されました。あなたの秘密キーのみがロックを解除するために機能します。 メッセージ。 オブザーバーのイブは、あなたがアドレスを公開しているのを見て、私が発表した公開鍵を見ます。ただし、 彼女は、私があなたのアドレスに基づいて私の公開鍵を発表したのか、彼女のアドレスに基づいて発表したのか、それともブレンダのアドレスに基づいて発表したのか知りません。 シャーリーンのものでも、誰のものでも。彼女は私が発表した公開鍵と自分の秘密鍵を照合します そしてそれがうまくいかないことがわかります。それは彼女のお金ではありません。彼女は他人の秘密鍵を知りません。 メッセージの受信者だけがメッセージのロックを解除できる秘密キーを持っています。だから誰もいない 盗聴するだけで、誰がお金を受け取ったのかを特定することができ、ましてやお金を受け取ることはできません。
公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 13 暗号化の 選択 を実装するのは、どれほど面倒なことだろうか スキーム。楕円形でもそれ以外でも。したがって、将来何らかの計画が破られた場合、通貨は切り替わります 心配することなく。おそらく大きなお尻の痛みでしょう。 さて、これはまさに前のコメントで説明したことです。ディフィー・ヘルマンタイプ 交換はニートです。アレックスとブレンダはそれぞれ秘密の番号 A と B、そして数字を持っているとします。 彼らは秘密を守ることを気にしません、aとb。彼らは、共有シークレットを生成することを望んでいます。 それを発見したエヴァ。ディフィーとヘルマンは、アレックスとブレンダが情報を共有する方法を考え出しました。 公開番号 a と b を使用しますが、非公開番号 A と B は使用せず、共有秘密を生成します。 K. この共有秘密 K を使用すると、Eva がリッスンすることなく、同じものを生成できます。 K、アレックス、ブレンダは、K を秘密暗号化キーとして使用し、秘密メッセージを送り返すことができるようになりました。 そして先へ。 100 よりもはるかに大きな数値でも動作するはずですが、可能な動作は次のとおりです。 100 を使用するのは、100 を法とする整数を処理することは「すべてを破棄する」ことと同じであるためです。 ただし、数字の下 2 桁です。」 アレックスとブレンダはそれぞれ A、a、B、b を選択します。彼らはAとBを秘密にします。 アレックスはブレンダにモジュロ 100 の値 (下 2 桁だけ) を伝え、ブレンダはアレックスに伝えます。 彼女の b モジュロ 100 の値。今、エヴァは (a,b) モジュロ 100 を知っています。しかし、アレックスは (a,b,A) を知っているので、彼女は x=abA モジュロ 100 を計算できます。アレックスは仕事中なので最後の一桁を除いて全部切ります 再び 100 を法とする整数の下で計算します。同様に、ブレンダは (a,b,B) を知っているので計算できます。 y=abB modulo 100。Alex は x を公開し、Brenda は y を公開できるようになりました。 しかし、現在、Alex は yA = abBA modulo 100 を計算でき、Brenda は xB を計算できます。 = abBA モジュロ 100。 二人とも同じ番号を知っています! しかし、エヴァが聞いたのは次のことだけだ (a、b、abA、abB)。彼女には abA*B を計算する簡単な方法がありません。 さて、これは Diffie-Hellman 交換に関する最も簡単で最も安全性の低い考え方です。 より安全なバージョンが存在します。ただし、ほとんどのバージョンは整数因数分解と離散化により動作します。 対数は難しいですが、それらの問題は両方とも量子コンピューターによって簡単に解決されます。 量子に耐性のあるバージョンが存在するかどうか調べてみます。 http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange ここにリストされている「標準 txn シーケンス」には、SIGNATURES などの一連のステップが欠落しています。 ここではそれらは当然のこととして受け入れられています。これは本当に悪いことです。 署名内容、署名メッセージに含まれる情報など...これらすべてが非常に重要です プロトコルにとって重要です。 「 「標準トランザクション シーケンス」は、システム全体のセキュリティに疑問を投げかける可能性があります。 さらに、この論文の後半で示される証明は、次のような場合には十分に厳密ではない可能性があります。 それらが動作するフレームワークは、このセクションと同様に大まかに定義されています。
公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 14 著者は、用語を一貫して正確に保つというひどい仕事をしていることに注意してください。 本文もそうですが、特に次の部分で。この文書の次回の発行は必ず次のとおりです。 はるかに厳格です。 本文中では、P をワンタイム公開鍵と呼んでいます。図では、R を次のように呼んでいます。 「送信公開キー」と「宛先キー」としての P。これをもう一度書くとしたら、 これらのセクションについて説明する前に、いくつかの用語を非常に具体的に説明します。 このエルは巨大です。 5 ページを参照してください。 エルを選ぶのは誰ですか? 図は、トランザクション公開キー R = rG (ランダムに選択される) を示しています。 送信者によるものであり、Tx 出力の一部ではありません。複数で同じになる可能性があるためです 複数の人へのトランザクションであり、「後で」使用されることはありません。新しい R が生成される 新しい CryptoNote トランザクションをブロードキャストするたびに。なお、Rはのみ使用されます あなたが取引の受取人であるかどうかを確認します。ジャンクデータではありませんが、誰にとってもジャンクです (A,B) に関連付けられた秘密キーなし。 一方、Destination キー、P = Hs(rA)G + B は Tx 出力の一部です。みんな 通過するすべてのトランザクションのデータをざっと調べて、独自に生成された P* を照合する必要があります。 この P を使用して、この通過トランザクションを所有しているかどうかを確認します。未使用のトランザクション出力がある人 (UTXO) には、大量の P が金額とともに転がっているでしょう。過ごすためにd、彼らは P を含む新しいメッセージに署名します。 アリスは、未使用のトランザクション出力の宛先キーに関連付けられたワンタイム秘密キーを使用して、このトランザクションに署名する必要があります。アリスが所有する各宛先キーが装備されています ワンタイム秘密鍵も (おそらく) アリスが所有しているものです。アリスが望むたびに 宛先キーの内容を私、またはボブ、ブレンダ、チャーリー、またはシャーリーンに送ってください、彼女は 彼女の秘密鍵を使用してトランザクションに署名します。取引を受領次第、新しいものを受け取ります 送信公開キー、新しい宛先公開キー、そして新しいワンタイム秘密キー x を回復できるようになります。ワンタイム秘密キー x と新しいトランザクションの公開宛先を組み合わせる key(s) は新しいトランザクションの送信方法です
- ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まず、明示的な言及はせずに、アルゴリズムの一般的な説明を行います。 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\sigma\) を出力します。 集合 \(S = \)S'\( \cup \{P_s\}\)。 8
-
ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まずジェネレーターを提供します明示的な言及のないアルゴリズムの説明 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\sigma\) を出力します。 集合 \(S = \)S'\( \cup \{P_s\}\)。 8 15 未使用のトランザクション出力はどのようになりますか?この図は、トランザクション出力が金額と宛先キーの 2 つのデータ ポイントのみで構成されていることを示しています。しかし、これはそうではありません この「アウトプット」を使おうとするとき、やはり R=rG を知る必要があるので、これで十分です。 r は送信者によって選択され、R は a) 受信した暗号通貨をあなたのものとして認識するために使用されることを覚えておいてください。 b) 暗号ノートを「要求」するために使用されるワンタイム秘密キーの生成に使用されます。 これについて私が理解できない部分は何ですか? 理論的には「よし、これはある」 署名とトランザクションをプログラミングの世界にやり取りします。 「それでは、個人 UTXO を具体的に構成する情報は何ですか?」 この質問に答える最善の方法は、完全にコメントされていないコードの本体を詳しく調べることです。 頑張れ、バイトコインチーム。 思い出してください: リンク可能性とは、「同じ人が送信したか?」ということを意味します。リンク解除可能性は、「同じことをした」ことを意味します 人は受け取りますか?」したがって、システムはリンク可能または非リンク可能、またはリンク可能または非リンク可能です。 迷惑です、私は知っています。 したがって、ニック・ヴァン・セイバーハーゲンがここで「...受信した支払いは1回限りの支払いに関連付けられています」と言うと、 観客にとってリンクできない公開鍵」という言葉が何を意味するのか見てみましょう。 まず、アリスが同じトランザクションから 2 つの別々のトランザクションをボブに送信する状況を考えてみましょう。 同じアドレスに送信します。 Bitcoin の世界では、アリスはすでに間違いを犯しています 同じアドレスから送信したため、取引は制限付きでの私たちの希望に応えられませんでした。 リンク可能性。しかも彼女は同じ住所に送金したので、我々の望みは裏切られたことになる。 リンク解除不可のため。このビットコイントランザクションは、(完全に) リンク可能であり、リンク解除不可能でもありました。 一方、暗号ノートの世界では、アリスがボブに暗号ノートを送ったとします。 ボブの公開アドレスを使用します。彼女は、難読化する公開鍵のセットとして、既知の公開鍵をすべて選択します。 ワシントン DC メトロエリアのキー。 Alex は自分の独自の公開鍵を使用してワンタイム公開鍵を生成します 情報とボブの公開情報。彼女はお金を送金します、そして、観察者は誰でもそうします 収集できるのは「ワシントン DC 都市圏の誰かが 2.3 枚の暗号通貨を送信した」 1 回限りのパブリック アドレス XYZ123。」 ここではリンク可能性を確率的に制御できるため、これを「ほぼリンク不可能」と呼びます。 また、送金先の 1 回限りの公開鍵のみが表示されます。たとえ受信者を疑っても はボブでした。私たちは彼の秘密鍵を持っていないので、トランザクションが成功したかどうかをテストできません 暗号通貨を引き換えるためのワンタイム秘密鍵を生成することは言うまでもなく、ボブのものです。それでこれ 実際、完全に「リンク不可能」です。 したがって、これはすべての中で最も巧妙なトリックです。他のMtGoxを本当に信頼したい人がいるでしょうか?私たちはそうかもしれない Coinbase にある程度の BTC を保管するのは快適ですが、ビットコインの究極のセキュリティは 物理的な財布。それは不便です。 この場合、あなたの秘密鍵の半分を信頼性を損なうことなく渡すことができます。 自分自身のお金の使い方の能力。 これを行うとき、あなたがしていることは、リンク解除を解除する方法を誰かに伝えることだけです。もう一つは 二重支出に対する証拠など、通貨のように機能する CN の特性は維持されます。 何でも。
-
ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まず、明示的な言及はせずに、アルゴリズムの一般的な説明を行います。 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\sigma\) を出力します。 集合 \(S = \)S'\( \cup \{P_s\}\)。 8
- ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まずジェネレーターを提供します明示的な言及のないアルゴリズムの説明 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\sigma\) を出力します。 集合 \(S = \)S'\( \cup \{P_s\}\)。 8 16 はい、これで、a) 支払いアドレスと b) 支払い ID が得られました。 批評家は、「本当にこれを行う必要があるのでしょうか? 結局のところ、販売者が 112.00678952 を受信した場合、 CN、まさにそれが私の注文で、スクリーンショットか領収書か何かを持っています。 非常識な精度で十分ですか?」答えは「おそらく、日常生活ではほとんどの場合、 対面取引です。」 ただし、より一般的な状況 (特にデジタルの世界) は次のとおりです。 それぞれに固定価格が設定されたオブジェクトのセット。オブジェクト A が 0.001 CN、オブジェクト B が 0.01 CN であるとします。 オブジェクト C は 0.1 CN です。さて、販売者が 1.618 CN の注文を受け取った場合、多くの 顧客に合わせて注文を手配する方法(たくさんあります!)。したがって、何らかの支払い ID がなければ、 顧客のいわゆる「ユニークな」注文を、その顧客のいわゆる「ユニークな」コストで識別する 注文不可となります。さらに面白いのは、オンライン ストアのすべての価格がちょうど 1.0 である場合です。 CN、1 日に 1000 人の顧客が来るのですか?そして、正確に 3 つのオブジェクトを購入したことを証明したいとします。 2週間前?支払い ID をお持ちでない場合は、頑張れ、相棒。 簡単に言うと、ボブが支払い住所を公開すると、最終的には 支払い ID も同様です (たとえば、Poloniex XMR デポジットを参照)。これは説明されているものとは異なります ここのテキストでは、Alice が支払い ID を生成します。 ボブが支払い ID を生成する何らかの方法も必要です。 (a、B) 追跡キー (a、B) は公開できることを思い出してください。 「a」の値の秘密が失われると、 自分の支出能力を侵害したり、他人があなたから盗むことを許可したりしないでください(そうすればよいと思います...) 証明される必要があります)、これにより、ユーザーは受信したすべてのトランザクションを確認できるようになります。 この段落で説明されているように、切り捨てられたアドレスは、単にキーの「プライベート」部分を取得します。 そしてそれを「パブリック」部分から生成します。 「a」の値を明らかにすると、リンク不可能性が解消されます ただし、残りのトランザクションは保存されます。 リンク不可能とは受信者を指し、リンク可能なものはリンク可能であるため、著者は「リンク不可能ではない」ことを意味します。 送信者を指します。 また、作成者が、リンク可能性には 2 つの異なる側面があることに気づいていなかったことも明らかです。 結局のところ、トランザクションはグラフ上の有向オブジェクトであるため、次の 2 つの質問があります。 「これら 2 つの取引は同じ人物に行われますか?」そして、「これら 2 つのトランザクションは来ますか?」 同じ人からですか?」 これは、CryptoNote の非リンク性プロパティが適用される「後戻り禁止」ポリシーです。 条件付き。つまり、ボブは受信トランザクションをリンク解除不可にしないように選択できます。 このポリシーを使用して。 これは彼らがランダムオラクルモデルに基づいて証明した主張です。それについてはこれから説明します。ランダム オラクルには長所と短所があります。
VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\cdots\) 西 \(\cdots\) xn 公開鍵 P0 \(\cdots\) 円周率 \(\cdots\) Pn リング 署名 サイン 検証する 図 6. リング署名の匿名性。 GEN: 署名者はランダムな秘密鍵 \(x \in [1, l - 1]\) を選択し、対応する鍵を計算します。 公開鍵 P = xG。さらに、別の公開鍵 I = xHp(P) を計算します。 これを「キー画像」と呼びます。 SIG: 署名者は、非対話型のゼロ知識を使用してワンタイム リング署名を生成します。 [21] のテクニックを使用して証明します。彼は、他のユーザーのデータから n のランダムなサブセット \(S'\) を選択します。 公開鍵 Pi、彼自身の鍵ペア (x、P)、および鍵イメージ I。\(0 \leq s \leq n\) を署名者の秘密インデックスとします。 S にあります (つまり、彼の公開鍵は Ps になります)。 彼はランダムに {qi | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci = ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\cdots\) 西 \(\cdots\) xn 公開鍵 P0 \(\cdots\) 円周率 \(\cdots\) Pn リング 署名 サイン 検証する 図 6. リング署名の匿名性。 GEN: 署名者はランダムな秘密鍵 \(x \in [1, l - 1]\) を選択し、対応する鍵を計算します。 公開鍵 P = xG。さらに、別の公開鍵 I = xHp(P) を計算します。 これを「キー画像」と呼びます。 SIG: 署名者は、非対話型のゼロ知識を使用してワンタイム リング署名を生成します。 [21] のテクニックを使用して証明します。彼は、他のユーザーのデータから n のランダムなサブセット \(S'\) を選択します。 公開鍵 Pi、彼自身の鍵ペア (x、P)、および鍵イメージ I。\(0 \leq s \leq n\) を署名者の秘密インデックスとします。 S にあります (つまり、彼の公開鍵は Ps になります)。 彼はランダムに {qi | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci = ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 17 おそらくこれは愚かなことですが、S と P_ を結合するときは注意が必要です。単に追加する場合は、 最後の公開鍵を最後まで保持すると、通過するトランザクションを誰かがチェックするため、リンク不可能になります。 各トランザクションとブームにリストされている最後の公開キーを確認するだけです。それが公開鍵です 送信者に関連付けられています。したがって、結合後、擬似乱数生成器は次のようにする必要があります。 選択した公開鍵を並べ替えるのに使用されます。 「...所有者が同じ鍵ペアを使用して 2 番目の署名を作成するまで。」著者(たち?)にお願いします これについて詳しく説明します。 これは、「難読化する公開鍵のセットを選択するたびに、 つまり、同じキーが 2 つもないまったく新しいセットを選択することになります。」 リンク解除の際に課されるかなり強力な条件。おそらく、「次から新しいランダムなセットを選択します」 すべての可能なキー」を前提として、自明ではない交差は避けられないものの、 起こりますが、頻繁には起こりません。 いずれにせよ、この発言をさらに深く掘り下げる必要があります。 これはリング署名を生成しています。 ゼロ知識証明は素晴らしいです。あなたが秘密を知っていることを証明してください。 秘密を明かさずに。たとえば、ドーナツ型の洞窟の入り口にいるとします。 そして洞窟の奥(入り口からは見えないところ)には、あなたが向かう一方通行のドア あなたが鍵を持っていると主張します。一方向に行けば必ず通してもらえますが、一方の方向に行けば、 他の方向にはキーが必要です。でもあなたは私に鍵さえ見せたくありません、ましてや それがドアを開けることを見せてください。でもあなたは私に、その扉を開ける方法を知っていることを証明したいのですね。 ドア。 インタラクティブな設定では、コインを投げます。 表が左、裏が右、そしてあなたは下に進みます コインがどの方向に進んでも、ドーナツの形をした洞窟に行くことができます。視界の向こうの奥にはあなたが ドアを開けて反対側に戻ります。コイン投げの実験を繰り返す あなたが鍵を持っていることに満足するまで。 しかし、それは明らかに INTERACTIVE のゼロ知識の証明です。あなたと私がコミュニケーションする必要がない非対話型バージョンもあります。こうすることで、盗聴者が妨害することはできなくなります。 http://en.wikipedia.org/wiki/Zero-knowledge_proof これは前の定義とは逆になります。
VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\cdots\) 西 \(\cdots\) xn 公開鍵 P0 \(\cdots\) 円周率 \(\cdots\) Pn リング 署名 サイン 検証する 図 6. リング署名の匿名性。 GEN: 署名者はランダムな秘密鍵 \(x \in [1, l - 1]\) を選択し、対応する鍵を計算します。 公開鍵 P = xG。さらに、別の公開鍵 I = xHp(P) を計算します。 これを「キー画像」と呼びます。 SIG: 署名者は、非対話型のゼロ知識を使用してワンタイム リング署名を生成します。 [21] のテクニックを使用して証明します。彼は、他のユーザーのデータから n のランダムなサブセット \(S'\) を選択します。 公開鍵 Pi、彼自身の鍵ペア (x、P)、および鍵イメージ I。\(0 \leq s \leq n\) を署名者の秘密インデックスとします。 S にあります (つまり、彼の公開鍵は Ps になります)。 彼はランダムに {qi | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci = ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\cdots\) 西 \(\cdots\) xn 公開鍵 P0 \(\cdots\) 円周率 \(\cdots\) Pn リング 署名 サイン 検証する 図 6. リング署名の匿名性。 GEN: 署名者はランダムな秘密鍵 \(x \in [1, l - 1]\) を選択し、対応する鍵を計算します。 公開鍵 P = xG。さらに、別の公開鍵 I = xHp(P) を計算します。 これを「キー画像」と呼びます。 SIG: 署名者は、非対話型のゼロ知識を使用してワンタイム リング署名を生成します。 [21] のテクニックを使用して証明します。彼は、他のユーザーのデータから n のランダムなサブセット \(S'\) を選択します。 公開鍵 Pi、彼自身の鍵ペア (x、P)、および鍵イメージ I。\(0 \leq s \leq n\) を署名者の秘密インデックスとします。 S にあります (つまり、彼の公開鍵は Ps になります)。 彼はランダムに {qi | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci = ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 18 この領域全体は暗号通貨にとらわれず、単にリング署名アルゴリズムを説明するだけです。 通貨への言及。一部の表記は論文の残りの部分と一致していると思いますが、 でも。たとえば、x は GEN で選択された「ランダムな」秘密鍵であり、公開鍵 P が得られます。 この x の値は、パート 6 の 8 ページでボブが計算した値です。つまり、これは次のようになります。 前の説明からの混乱の一部が解消され始めています。 これはちょっとクールですね。お金は「アリスの公開アドレスからボブの公開アドレスに送金されていない」 ワンタイムアドレスからワンタイムアドレスに転送されます。 つまり、ある意味、これが物事の仕組みです。もしアレックスが誰かのせいで暗号通貨を持っているとしたら それらを彼女に送信したということは、彼女がボブにそれらを送信するために必要な秘密鍵を持っていることを意味します。彼女は使っています ボブの公開情報を使用して新しいワンタイムアドレスを生成するディフィー・ヘルマン交換 そして暗号通貨はそのアドレスに転送されます。 さて、(おそらく安全な) DH 交換が新しいワンタイム アドレスの生成に使用されたため、 アレックスが自分の CN を送信した宛先に、ボブは、このメッセージを繰り返すために必要な秘密鍵を持っている唯一の人物です。 上。さて、ボブはアレックスです。 http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation 合計は i ではなく j にインデックス付けされる必要があります。各 c_i はランダムなジャンクです (w_i はランダムなので) c_iのお尻を除いてこの署名に含まれる実際のキーで割り当てられます。 cの値は 前の情報の hash。 ただし、これにはインデックス「i」を再利用するよりも悪いタイプミスが含まれている可能性があると思います。 明示的ではなく暗黙的に定義されます。 実際、この方程式を信仰に基づいて当てはめると、c_s = (1/2)c - (1/2) となります。 sum_i neq s c_i.つまり、hash から大量の乱数を引いたものになります。 一方、この合計を読み取ることを目的としている場合は、「c_s = (c - sum_j neq s c_j) mod」となります。 l" の場合、以前の情報の hash を取得し、大量の乱数を生成します。 hash からこれらの乱数をすべて減算すると、c_s が得られます。これはそうです 私の直感からすると何が起こっている「はず」であり、10 ページの検証ステップと一致します。 しかし、直感は数学ではありません。これについてさらに詳しく掘り下げていきます。 以前と同じ。実際の製品に関連するものを除いて、これらはすべてランダムなジャンクになります。 署名者の公開鍵 x。今回を除いて、これは私が構造から期待するものです。 r_i は i!=s に対してランダムであり、r_s は秘密 x と s インデックス付きの値によってのみ決定されます。 q_iとc_i。
VER: 検証者は逆変換を適用して署名をチェックします。 ( L' i = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 ボブはワンタイム キーペア (pi, Pi) を回復し、それをウォレットに保存します。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 VER: 検証者は逆変換を適用して署名をチェックします。 ( L' i = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 Bob はワンタイム キーペア (pi, Pi) を回復し、st彼の財布の中にそれが入っています。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 19 この時点で、私はひどく混乱しています。 Alex は、署名 (I,c_1, ..., c_n, r_1, ..., r_n) と公開リスト付きのメッセージ M を受信します。 S キーを押すと、VER が実行されます。これにより、L_i’ と R_i’ が計算されます これは、前のページの c_s = c - sum_i が s c_i であることを検証します。 最初はとても(笑)混乱しました。 L_i’ と R_i’ は誰でも計算できます。実際、各 r_i と c_i が署名で公開されました シグマと I の値。セット S = すべての公開鍵の P_i も公開されています。シグマとそのセットを見た人は誰でも キー S = P_i は L_i’ と R_i’ に同じ値を取得するため、署名をチェックします。 しかし、このセクションは単に署名アルゴリズムについて説明しているだけであり、「チェック」ではないことを思い出しました。 署名されている場合は、私に送られてきたかどうかを確認し、送られてきた場合は、お金を使いましょう。」これは単純に、 ゲームの特徴的な部分。 最終的に付録 A に到達したら、ぜひ読んでみたいと思っています。 Cryptonote と Bitcoin のオペレーションごとの本格的な比較を見てみたいと思います。 また、電力/持続可能性。 ここで「入力」を構成するアルゴリズムは何ですか? トランザクション入力は、金額と、合計が金額よりも大きい UTXO のセットであると思います。 金額。 これは不明です。 「潜伏対象?」これについて数分間考えましたが、まだ考えていません それが何を意味するのか、最も曖昧な考え。 二重支出攻撃は、ノードが認識した使用済みキーを操作することによってのみ実行できます。 画像は \(I\) に設定されています。 「あいまいさの度合い」 = n ですが、トランザクションに含まれる公開鍵の総数は n+1。つまり、曖昧度は「他に何人欲しいですか?」 群衆は?」 おそらくデフォルトでは、答えは「できるだけ多く」となるでしょう。
VER: 検証者は逆変換を適用して署名をチェックします。 ( L' i = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 ボブはワンタイム キーペア (pi, Pi) を回復し、それをウォレットに保存します。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 VER: 検証者は逆変換を適用して署名をチェックします。 ( L' i = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 Bob はワンタイム キーペア (pi, Pi) を回復し、st彼の財布の中にそれが入っています。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 20 これは興味深いですね。先ほど、受信者であるボブがすべての受信を受信できるようにする方法を提供しました。 秘密鍵の半分を決定論的に選択するか、 彼の秘密鍵の半分を公開鍵として公開します。これは後戻りできない一種の政策です。ここでわかります。 送信者アレックスが単一の送信トランザクションをリンク可能として選択する方法ですが、実際にはこれ アレックスがネットワーク全体への送信者であることを明らかにします。これは後戻りできない政策ではありません。 これはトランザクションごとです。 3番目のポリシーはありますか?受取人であるボブは、アレックスに固有の支払い ID を生成できますか? おそらくディフィー・ヘルマン交換を使用して変更されることはありませんか? 誰かがその支払いを含めた場合 ID はボブのアドレスへの取引のどこかにバンドルされており、アレックスから送られたものに違いありません。 このようにして、アレックスは特定のリンクを選択することでネットワーク全体に自分自身を明らかにする必要がなくなります。 取引が終了しても、彼女は送金先の相手に自分自身を特定することができます。 これがポロニエックスのやっていることではないでしょうか?
トランザクション 送信入力 出力0 。 。 。 出力 。 。 。 出力 キー画像 署名 リングサイン 宛先キー 出力1 宛先キー 出力 外国取引 送信者の出力 宛先キー ワンタイムキーペア ワンタイム 秘密鍵 I = xHp(P) P、\(\times\) 図 7. 標準トランザクションにおけるリング署名の生成。 5 平等主義的証明 このセクションでは、新しい proof-of-work アルゴリズムを提案し、基礎にします。 私たちの主な目標 CPU (多数派) マイナーと GPU/FPGA/ASIC (少数派) マイナーの間のギャップを埋めることです。それは 一部のユーザーが他のユーザーよりも一定の利点を持つことは適切ですが、その投資は 電力に応じて少なくとも直線的に増加するはずです。より一般的には、特殊用途のデバイスの製造 利益はできるだけ少なくする必要があります。 5.1 関連作品 元の Bitcoin proof-of-work プロトコルは、CPU を大量に使用する価格設定関数 SHA-256 を使用します。 主に基本的な論理演算子で構成され、演算速度のみに依存します。 したがって、マルチコア/コンベアの実装に最適です。 ただし、現代のコンピューターは 1 秒あたりの操作数だけによって制限されるわけではありません。 メモリサイズによっても異なります。一部のプロセッサは他のプロセッサよりも大幅に高速になる可能性があります[8]、 メモリ サイズはマシン間で異なる可能性が低くなります。 メモリバウンド価格関数は、Abadi らによって最初に導入され、次のように定義されました。 「メモリへのアクセスに費やされる時間によって計算時間が支配される関数」 [15]。 主なアイデアは、大きなデータ ブロック (「スクラッチパッド」) を割り当てるアルゴリズムを構築することです。 比較的ゆっくりとアクセスできるメモリ (RAM など) 内で、「 その中には予測不可能な場所の連続があります。ブロックは保存するのに十分な大きさでなければなりません データは、アクセスごとに再計算するよりも有利です。アルゴリズムはまた、 内部並列処理を防ぐため、N 個の同時スレッドには N 倍のメモリが必要になります すぐに。 Dwork ら [22] は、このアプローチを調査して形式化し、別のアプローチを提案しました。 価格設定関数のバリエーション:「Mbound」。 もう 1 つの作品は F. Coelho [20] のものです。 11 トランザクション 送信入力 出力0 。 。 。 出力 。 。 。 出力 キー画像 署名 リングサイン 宛先キー 出力1 宛先キー 出力 外国取引 送信者の出力 宛先キー ワンタイムキーペア ワンタイム 秘密鍵 I = xHp(P) P、\(\times\) 図 7. 標準トランザクションにおけるリング署名の生成。 5 平等主義的証明 このセクションでは、新しい proof-of-work アルゴリズムを提案し、基礎にします。 私たちの主な目標 CPU (多数派) マイナーと GPU/FPGA/ASIC (少数派) マイナーの間のギャップを埋めることです。それは 一部のユーザーが他のユーザーよりも一定の利点を持つことは適切ですが、その投資は 電力に応じて少なくとも直線的に増加するはずです。より一般的には、特殊用途のデバイスの製造 利益はできるだけ少なくする必要があります。 5.1 関連作品 元の Bitcoin proof-of-work プロトコルは、CPU を大量に使用する価格設定関数 SHA-256 を使用します。 主に基本的な論理演算子で構成され、演算速度のみに依存します。 したがって、マルチコア/コンベアの実装に最適です。 ただし、現代のコンピューターは 1 秒あたりの操作数だけによって制限されるわけではありません。 メモリサイズによっても異なります。一部のプロセッサは他のプロセッサよりも大幅に高速になる可能性があります[8]、 メモリ サイズはマシン間で異なる可能性が低くなります。 メモリバウンド価格関数は、Abadi らによって最初に導入され、次のように定義されました。 「メモリへのアクセスに費やされる時間によって計算時間が支配される関数」 [15]。 主なアイデアは、大きなデータ ブロック (「スクラッチパッド」) を割り当てるアルゴリズムを構築することです。 比較的ゆっくりとアクセスできるメモリ (RAM など) 内で、「 その中には予測不可能な場所の連続があります。ブロックは保存するのに十分な大きさでなければなりません データは、アクセスごとに再計算するよりも有利です。アルゴリズムはまた、 内部並列処理を防ぐため、N 個の同時スレッドには N 倍のメモリが必要になります すぐに。 Dwork ら [22] は、このアプローチを調査して形式化し、別のアプローチを提案しました。 価格設定関数のバリエーション:「Mbound」。 もう 1 つの作品は F. Coelho [20] のものです。 11 21 これらは、表向き、UTXO の金額と宛先キーです。 Alex がこの標準トランザクションを構築し、Bob に送信している場合、Alex は秘密鍵も持っています。 これらのそれぞれに。 この図は以前の質問のいくつかに答えているので、とても気に入っています。 Txn入力の構成 一連の Txn 出力と keyのイメージ。その後、すべての内容を含むリング署名で署名されます。 アレックスが契約に含まれるすべての外国取引に対して所有する秘密鍵。の Txn 出力は金額と宛先キーで構成されます。トランザクションの受信者は、 必要に応じて、この文書で前述したようにワンタイム秘密キーを生成して、 お金。 これが実際のコードとどの程度一致するかを知るのは楽しいことでしょう... いいえ、Nic van Saberhagen は、プルーフ・オブ・ワーク・アルゴリズムのいくつかの特性について大まかに説明しています。 実際にそのアルゴリズムを説明することはありません。 CryptoNight アルゴリズム自体には詳細な分析が必要です。 これを読んだとき、私はどもってしまいました。投資は電力に応じて少なくとも直線的に増加する必要があります。 投資は電力に応じて最大でも直線的に成長しますか? そして私は気づきました。採掘者または投資家としての私は、通常、「どれだけの電力を得ることができるか」を考えます。 投資のためですか?」 「一定量の電力を得るためにどれくらいの投資が必要か?」ではありません。 もちろん、投資を I、電力を P で表します。I(P) が電力の関数としての投資である場合、 P(I) は投資の関数としての電力であり、それらは互いに逆数になります (どこにいても 逆も存在する可能性があります)。そして、I(P) が線形より速い場合、P(I) は線形より遅いです。したがって、 投資家にとっての収益率は低下します。 つまり、著者がここで言いたいのは、「確かに、投資すればするほど、より多くの利益が得られるでしょう」 力。しかし、私たちはそれを収益率の低下につながるように努めるべきです。」 CPU への投資は、最終的には線形に近い形で頭打ちになってしまいます。問題は著者かどうかです。 は、ASIC にもこれを強制する POW アルゴリズムを設計しました。 仮想の「将来通貨」は常に最も遅い/最も限られたリソースで採掘されるべきでしょうか? Abadi らの論文 (Google と Microsoft のエンジニアが著者となっている) は次のとおりです。 基本的に、過去数年間 メモリ サイズが大幅に小さくなったという事実を利用します。 プロセッサ速度よりもマシン間の差異が少なく、電力に対する投資の比率が線形以上になります。 数年後には再評価が必要になるかも知れません!すべては軍拡競争だ… hash 関数の構築は困難です。これらの制約を満たす hash 関数を構築するのはさらに難しいようです。この論文には実際の説明はないようです hashアルゴリズム CryptoNight。これはメモリを必要とする SHA-3 の実装だと思います。 フォーラムの投稿に書いてありますが、わかりません...そしてそれが重要です。それは説明されなければなりません。
最も効果的な解決策として「北海道」を提案しました。 私たちの知る限り、大きな配列での擬似ランダム検索のアイデアに基づいた最後の作品は次のとおりです。 C. Percival [32] によって「scrypt」として知られるアルゴリズム。これまでの機能とは異なり、重点を置いています proof-of-work システムではなく、キー導出。この事実にもかかわらず、scrypt は私たちの目的を果たすことができます。 これは、 Bitcoin。 これまでに、scrypt はすでに Litecoin [14] およびその他の Bitcoin フォークに適用されています。ただし、その実装は実際にはメモリに依存しません。つまり、「メモリ アクセス時間 / 全体」の比率 各インスタンスは 128 KB しか使用しないため、「time」は十分な大きさではありません。これにより GPU マイナーが許可されます 効果は約 10 倍であり、相対的に 安価だが高効率のマイニングデバイス。 さらに、暗号化構造自体により、メモリ サイズとメモリ サイズの間の線形トレードオフが可能になります。 スクラッチパッド内のすべてのブロックが前のブロックからのみ派生するという事実による CPU 速度。 たとえば、2 つおきのブロックを保存し、他のブロックを遅延的な方法で再計算することができます。 必要になったとき。擬似ランダムインデックスは一様に分布していると仮定されます。 したがって、追加ブロックの再計算の期待値は 1 です。 \(2 \cdot N\)、N は数値です 反復の。全体の計算時間の増加は半分未満です。 スクラッチパッドの準備や hash などの、時間に依存しない (一定時間) 操作 すべての反復。メモリコストの 2/3 を節約 1 3・N+1 3 \(\cdot\) \(2 \cdot N\) = N 回の追加の再計算。 9/10 の結果は次のとおりです 1 10・N+。 。 。 +1 10・9・N=4.5N。 1 つだけ保存していることを示すのは簡単です すべてのブロックの 時間の増加は s−1 倍未満です 2.これは、CPU を搭載したマシンが 最新のチップよりも 200 倍高速で、スクラッチパッドを 320 バイトしか保存できません。 5.2 提案されたアルゴリズム proof-of-work 価格設定関数用の新しいメモリ制限アルゴリズムを提案します。依存しているのは 遅いメモリへのランダム アクセスであり、レイテンシの依存性が強調されます。毎に暗号化するのとは対照的に、 新しいブロック (長さ 64 バイト) は、以前のすべてのブロックに依存します。その結果、仮説としては 「メモリセーバー」を使用すると、計算速度が飛躍的に向上するはずです。 私たちのアルゴリズムでは、次の理由により、インスタンスごとに約 2 Mb が必要です。 1. 主流になるはずの最新プロセッサの L3 キャッシュ (コアごと) に適合します 数年以内に。 2. メガバイトの内部メモリは、最新の ASIC パイプラインではほとんど許容できないサイズです。 3. GPU は数百の同時インスタンスを実行できますが、他の方法で制限されます。 GDDR5 メモリは CPU L3 キャッシュよりも遅く、その帯域幅では注目に値しますが、 ランダムアクセス速度。 4. スクラッチパッドを大幅に拡張するには、反復回数を増やす必要があります。 ターンは全体的な時間の増加を意味します。トラストレス P2P ネットワークでの「重い」通話は、次のような問題を引き起こす可能性があります。 ノードはすべての新しいブロックの proof-of-work をチェックする義務があるため、深刻な脆弱性が存在します。 ノードが各 hash 評価にかなりの時間を費やすと、簡単に 任意の作業データ (nonce 値) を含む偽のオブジェクトの大量による DDoSed。 12 最も効果的な解決策として「北海道」を提案しました。 私たちの知る限り、大きな配列での擬似ランダム検索のアイデアに基づいた最後の作品は次のとおりです。 C. Percival [32] によって「scrypt」として知られるアルゴリズム。これまでの機能とは異なり、重点を置いています proof-of-work システムではなく、キー導出。この事実にもかかわらず、scrypt は私たちの目的を果たすことができます。 これは、 Bitcoin。 これまでに、scrypt はすでに Litecoin [14] およびその他の Bitcoin フォークに適用されています。ただし、その実装は実際にはメモリに依存しません。つまり、「メモリ アクセス時間 / 全体」の比率 各インスタンスは 128 KB しか使用しないため、「time」は十分な大きさではありません。これにより GPU マイナーが許可されます 効果は約 10 倍であり、相対的に 安価だが高効率のマイニングデバイス。 さらに、暗号化構造自体により、メモリ サイズとメモリ サイズの間の線形トレードオフが可能になります。 スクラッチパッド内のすべてのブロックが前のブロックからのみ派生するという事実による CPU 速度。 たとえば、2 つおきのブロックを保存し、他のブロックを遅延的な方法で再計算することができます。 必要になったとき。擬似ランダムインデックスは一様に分布していると仮定されます。 したがって、追加ブロックの再計算の期待値は 1 です。 2・N、ここでNは数字です 反復の。全体の計算時間の増加は半分未満です。 スクラッチパッドの準備や hash などの、時間に依存しない (一定時間) 操作 すべての反復。メモリコストの 2/3 を節約 1 3・N+1 3 \(\cdot\) \(2 \cdot N\) = N 回の追加の再計算。 9/10 の結果は次のとおりです 1 10・N+。 。 。 +1 10・9・N=4.5N。 1 つだけ保存していることを示すのは簡単です すべてのブロックの 時間の増加は s−1 倍未満です 2.これは、CPU を搭載したマシンが 最新のチップよりも 200 倍高速で、スクラッチパッドを 320 バイトしか保存できません。 5.2 提案されたアルゴリズム proof-of-work 価格設定関数用の新しいメモリ制限アルゴリズムを提案します。依存しているのは 遅いメモリへのランダム アクセスであり、レイテンシの依存性が強調されます。毎に暗号化するのとは対照的に、 新しいブロック (長さ 64 バイト) は、以前のすべてのブロックに依存します。その結果、仮説としては 「メモリセーバー」を使用すると、計算速度が飛躍的に向上するはずです。 私たちのアルゴリズムでは、次の理由により、インスタンスごとに約 2 Mb が必要です。 1. 主流になるはずの最新プロセッサの L3 キャッシュ (コアごと) に適合します 数年以内に。 2. メガバイトの内部メモリは、最新の ASIC パイプラインではほとんど許容できないサイズです。 3. GPU は数百の同時インスタンスを実行できますが、他の方法で制限されます。 GDDR5 メモリは CPU L3 キャッシュよりも遅く、その帯域幅では注目に値しますが、 ランダムアクセス速度。 4. スクラッチパッドを大幅に拡張するには、反復回数を増やす必要があります。 ターンは全体的な時間の増加を意味します。トラストレス P2P ネットワークでの「重い」通話は、次のような問題を引き起こす可能性があります。 ノードはすべての新しいブロックの proof-of-work をチェックする義務があるため、深刻な脆弱性が存在します。 ノードが各 hash 評価にかなりの時間を費やした場合、簡単に 任意の作業データ (nonce 値) を含む偽のオブジェクトの大量による DDoSed。 12 22 気にしないでください、それは暗号コインですか? アルゴリズムはどこにあるのでしょうか?私が見るのは広告だけです。 Cryptonote の PoW アルゴリズムが価値があるのであれば、これが真に輝くところです。そうではありません 実際には SHA-256 ですが、実際には暗号ではありません。これは新しく、メモリに依存し、再帰的ではありません。
6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 コストと手数料による利益のバランスを考慮し、独自の設定を行います。 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 バランシング間のトレードオフを扱います。費用と手数料からの利益を自分で設定し、 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化は回避されますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 23 原子単位。私はそれが好きです。これはサトシに相当するのでしょうか? もしそうなら、それは1,850億の暗号通貨が存在することを意味します。 これは最終的には数ページで調整する必要があることはわかっていますが、それともタイプミスがあるのでしょうか? 基本報酬が「残りのすべてのコイン」である場合、すべてのコインを取得するには 1 つのブロックだけで十分です。 インスタミン。 一方、これが何らかの形で比例すると仮定すると、 現在とコインの生産終了日との時間差はあるのでしょうか? そうすれば 意味が分かる。 また、私の世界では、このような「より大きい」記号が 2 つあると、「より大きい」という意味になります。著者がやったのか おそらく何か別の意味でしょうか? ブロックごとに難易度の調整が行われる場合、攻撃者は非常に大規模なファームを所有する可能性があります。 マシンは慎重に選択された時間間隔で断続的にマイニングを行います。難易度調整式が適切に抑制されていない場合、これにより難易度が混沌とした爆発 (またはゼロへのクラッシュ) を引き起こす可能性があります。 Bitcoin の方法が迅速な再計算には適していないことは間違いありませんが、慣性の考え方は これらのシステムでは、当然のこととみなされるのではなく、証明される必要があります。さらに、振動 ネットワークの問題は、表向きの変動を引き起こさない限り、必ずしも問題ではありません コインの供給量が非常に急速に変化するため、「過剰修正」が発生する可能性があります。 費やされる時間、特に数分間のような短い期間では、「合計」に比例します。 ネットワーク上に作成されたブロックの数。」比例定数自体が大きくなる 時間の経過とともに、CN が発生するとおそらく指数関数的に増加します。 「上に作成されるブロックの総数」を維持するために、単純に難易度を調整する方が良いかもしれません。 最後のブロックがメインチェーンに追加されてからのネットワーク」を何らかの定数値内で、または 限界変動とかそういうもの。計算上の適応アルゴリズムの場合、 実装が簡単であることが判断できれば、これで問題は解決すると思われます。 しかし、その方法を使用すると、大規模なマイニング農場を所有する誰かがその農場を閉鎖する可能性があります。 数時間放置してから、再度電源を入れます。最初の数ブロックでは、その農場は 銀行。 したがって、実際、この方法は興味深い点をもたらします。つまり、マイニングは(平均して) 特にネットワークに接続する人が増えると、ROI が得られずに負けてしまいます。採掘の難易度が高い場合 非常に厳重に追跡されたネットワークhashレート、人々が彼らと同じくらい採掘するのではないかと私はどういうわけか疑っています 現在はそうしています。 あるいは、その一方で、マイニング ファームを 24 時間 365 日稼働させ続ける代わりに、 6 時間オン、2 時間オフ、6 時間オン、2 時間オフなど。別のコインに切り替えるだけです 数時間待って、難易度が下がるのを待ってから、追加のいくつかを獲得するために再び飛び乗ります ネットワークが適応するにつれて収益性が低下します。そして、あなたは何を知っていますか?これは実はおそらく これは私が考えた中で最も優れた採掘シナリオの 1 つです... これは循環する可能性がありますが、ブロックの作成時間が平均約 1 分である場合、 「費やした時間」の代用としてブロック数を使用します。
6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 コストと手数料による利益のバランスを考慮し、独自の設定を行います。 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 バランシング間のトレードオフを扱います。費用と手数料からの利益を自分で設定し、 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 24 さて、blockchain があり、各ブロックには単純にタイムスタンプが追加されています。 注文した。これは明らかに、単に難易度を調整するために挿入されたものです。 前述したように、非常に信頼性が低いです。チェーン内に矛盾するタイムスタンプを含めることはできますか? チェーン内でブロック A がブロック B より前にあり、財務面ですべてが一貫している場合、 しかし、ブロック A はブロック B の後に作成されたように見えますか?おそらく誰かが所有していたので、 ネットワークの大部分?それでいいですか? おそらく財政が破綻していないからでしょう。 そうですね、私はこの恣意的な「メイン blockchain にとって正当なブロックは 80% だけです」というのが大嫌いです。 アプローチする。嘘つきがタイムスタンプを改ざんするのを防ぐことが目的だったのでしょうか?しかし今では、こう付け加えます 誰もが自分のタイムスタンプについて嘘をつき、中央値だけを選ぶ動機になります。 定義してください。 意味「このブロックには、それ以上の手数料を含むトランザクションのみを含める」 p% よりも、優先的に 2p% を超える手数料」とか、そのようなものですか? 偽物とはどういう意味ですか? 取引が過去の履歴と一致している場合 blockchain、トランザクションにはマイナーが満足できる手数料が含まれていますが、それだけでは十分ではありませんか?さて、 いいえ、必ずしもそうではありません。最大ブロック サイズが存在しない場合、悪意のあるユーザーを留めておくものは何もありません。 単に速度を低下させるために、大量のトランザクションのブロックを自分自身に一度にアップロードするだけではありません。 ネットワーク。 最大ブロックサイズに関する基本ルールにより、人々が大量のジャンクを置くことを防止します 速度を低下させるためだけに、blockchain 上のデータを一度にすべて削除します。しかし、そのようなルールは間違いなくそうしなければなりません 適応的であること - たとえば、クリスマス シーズン中はトラフィックが急増することが予想されます。 ブロック サイズが非常に大きくなり、その直後にブロック サイズがその後減少する またまた。したがって、a) 何らかの適応キャップ、または b) 99% の 妥当なクリスマスのピークは上限を突破しません。もちろん、2番目のものは不可能です 推定 - 通貨が普及するかどうかは誰にもわかりません。適応的にして心配しないほうがいいです それについて。しかし、制御理論の問題があります。それは、これをどのように適応させるかということです。 攻撃に対する脆弱性、または乱暴でクレイジーな振動? 適応型の方法では、悪意のあるユーザーが少額を蓄積するのを阻止できないことに注意してください。 blockchain 上にジャンク データが時間の経過とともに増加し、長期的な肥大化を引き起こします。これは別の問題です これは、暗号通貨コインが深刻な問題を抱えていることを意味します。
6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 コストと手数料による利益のバランスを考慮し、独自の設定を行います。 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 バランシング間のトレードオフを扱います。費用と手数料からの利益を自分で設定し、 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 25 時間の 1 単位が N ブロックになるように時間を再スケーリングしても、理論的には、平均ブロック サイズは 2 ^ t に比例して指数関数的に増加する可能性があります。一方、より一般的なキャップ 次のブロックでは、関数 f に対して M_nf(M_n) になります。 f の性質は次のとおりです ブロックサイズの「適度な増加」を保証するために選択するのでしょうか?の進行状況 ブロック サイズ (再スケーリング時間後) は次のようになります。 M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... そして、ここでの目標は、このシーケンスが、たとえば次のような速度で増加しないように f を選択することです。 あるいは Log(t) としても使用できます。もちろん、ある定数 a に対して f(M_n) = a の場合、このシーケンスは次のようになります。 実は M_n aM_n a^2M_n a^3M_n ... そしてもちろん、これを最大線形成長に制限できる唯一の方法は、a=1 を選択することです。 もちろん、これは実現不可能です。それはまったく成長を許しません。 一方、f(M_n) が非定数関数の場合、状況はさらに複雑になります。 複雑であり、洗練された解決策が可能になる可能性があります。これについてはしばらく考えてみます。 この料金は、次のセクションで超過サイズのペナルティを割り引くのに十分な大きさにする必要があります。 なんで一般ユーザーが男性だと思われてるの?え?
blockchain が肥大化し、ノードに追加の負荷が発生する可能性があります。落胆させるため 悪意のある参加者が大きなブロックを作成できないように、ペナルティ関数を導入します。 新しい報酬 = 基本報酬 \(\cdot\) ブロックサイズ ミネソタ州 −1 2 このルールは、BlkSize が最小空きブロック サイズより大きい場合にのみ適用されます。 最大(10kb、\(M_N \cdot 110\%\))に近いこと。マイナーは「通常のサイズ」のブロックを作成することが許可されており、 全体の手数料が違約金を上回った場合、利益を伴ってそれを超えます。しかし手数料は上がらない可能性が高い ペナルティ値とは二次的に異なるため、均衡が生じます。 6.3 トランザクションスクリプト CryptoNote には、非常に最小限のスクリプト サブシステムがあります。送信者は式 Φ = を指定します。 f (x1, x2, ..., xn)、n は宛先公開鍵の数 {Pi}n i=1。バイナリは 5 つだけ min、max、sum、mul、cmp の演算子がサポートされています。受取人がこの支払いを使用すると、 \(0 \leq k \leq n\) の署名を生成し、それらをトランザクション入力に渡します。検証プロセス 公開鍵 Pi の有効な署名をチェックするために xi = 1 で Φ を評価するだけであり、xi = 0 です。 検証者はΦ > 0 の場合に証明を受け入れます。 その単純さにもかかわらず、このアプローチは考えられるすべてのケースをカバーします。 • マルチ/しきい値署名。 Bitcoin スタイルの「M-out-of-N」マルチ署名の場合 (つまり、 受信者は少なくとも \(0 \leq M \leq N\) の有効な署名を提供する必要があります (Φ = x1+x2+)。 。 .+xN \(\geq M\) (明確にするために、一般的な代数表記を使用しています)。重み付けされたしきい値署名 (一部のキーは他のキーよりも重要になる可能性があります) は、Φ = \(w_1 \cdot x_1\) + として表すことができます。 w2・x2+. 。 。 + \(w_N \cdot x_N\) ≧ wM。マスターキーが Φ = に対応するシナリオ max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\)。あらゆる洗練されたケースが可能であることを示すのは簡単です。 これらの演算子で表現されます。つまり、基底を形成します。 • パスワード保護。秘密のパスワードを所有していることは、次のことを知っていることと同等です。 パスワードから決定論的に導出される秘密キー: k = KDF(s)。したがって、受信機は、 キー k で別の署名を提供することで、パスワードを知っていることを証明できます。 送信者は、対応する公開キーを自分の出力に追加するだけです。これに注意してください この方法は、Bitcoin [13] で使用される「トランザクション パズル」よりもはるかに安全です。 パスワードは入力で明示的に渡されます。 • 劣化したケース。 Φ = 1 は誰でもお金を使うことができることを意味します。 Φ = 0 は、 永久に消費できないものとして出力されます。 公開鍵と組み合わせた出力スクリプトが送信者にとって大きすぎる場合、送信者は 受信者がこのデータを入力に入れることを示す特別な出力タイプを使用できます。 一方、送信者はその hash だけを提供します。このアプローチは、Bitcoin の「hash に支払う」と似ています。 機能ですが、新しいスクリプト コマンドを追加する代わりに、データ構造でこのケースを処理します。 レベル。 7 結論 私たちは Bitcoin の主な欠陥を調査し、考えられる解決策をいくつか提案しました。これらの有利な機能と継続的な開発により、新しい電子マネー システム CryptoNote が誕生します。 Bitcoin の深刻なライバルであり、そのすべてのフォークを上回っています。 14 blockchain が肥大化し、ノードに追加の負荷が発生する可能性があります。落胆させるため 悪意のある参加者が大きなブロックを作成できないように、ペナルティ関数を導入します。 新しい報酬 = 基本報酬 \(\cdot\) ブロックサイズ ミネソタ州 −1 2 このルールは、BlkSize が最小空きブロック サイズより大きい場合にのみ適用されます。 最大(10kb、\(M_N \cdot 110\%\))に近いこと。マイナーは「通常のサイズ」のブロックを作成することが許可されており、 全体の手数料が違約金を上回った場合、利益を伴ってそれを超えます。しかし手数料は上がらない可能性が高い ペナルティ値とは二次的に異なるため、均衡が生じます。 6.3 トランザクションスクリプト CryptoNote には、非常に最小限のスクリプト サブシステムがあります。送信者は式 Φ = を指定します。 f (x1, x2, ..., xn)、n は宛先公開鍵の数 {Pi}n i=1。バイナリは 5 つだけ min、max、sum、mul、cmp の演算子がサポートされています。受取人がこの支払いを使用すると、 \(0 \leq k \leq n\) の署名を生成し、それらをトランザクション入力に渡します。検証プロセス 公開鍵 Pi の有効な署名をチェックするために xi = 1 で Φ を評価するだけであり、xi = 0 です。 検証者はΦ > 0 の場合に証明を受け入れます。 その単純さにもかかわらず、このアプローチは考えられるすべてのケースをカバーします。 • マルチ/しきい値署名。 Bitcoin スタイルの「M-out-of-N」マルチ署名の場合 (つまり、 受信者は少なくとも \(0 \leq M \leq N\) の有効な署名を提供する必要があります (Φ = x1+x2+)。 。 .+xN \(\geq M\) (明確にするために、一般的な代数表記を使用しています)。重み付けされたしきい値署名 (一部のキーは他のキーよりも重要になる可能性があります) は、Φ = \(w_1 \cdot x_1\) + として表すことができます。 w2・x2+. 。 。 + \(w_N \cdot x_N\) ≧ wM。そしてシナリオio ここで、マスターキーは Φ = に対応します。 max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\)。あらゆる洗練されたケースが可能であることを示すのは簡単です。 これらの演算子で表現されます。つまり、基底を形成します。 • パスワード保護。秘密のパスワードを所有していることは、次のことを知っていることと同等です。 パスワードから決定論的に導出される秘密キー: k = KDF(s)。したがって、受信機は、 キー k で別の署名を提供することで、パスワードを知っていることを証明できます。 送信者は、対応する公開キーを自分の出力に追加するだけです。これに注意してください この方法は、Bitcoin [13] で使用される「トランザクション パズル」よりもはるかに安全です。 パスワードは入力で明示的に渡されます。 • 劣化したケース。 Φ = 1 は誰でもお金を使うことができることを意味します。 Φ = 0 は、 永久に消費できないものとして出力されます。 公開鍵と組み合わせた出力スクリプトが送信者にとって大きすぎる場合、送信者は 受信者がこのデータを入力に入れることを示す特別な出力タイプを使用できます。 一方、送信者はその hash だけを提供します。このアプローチは、Bitcoin の「hash に支払う」と似ています。 機能ですが、新しいスクリプト コマンドを追加する代わりに、データ構造でこのケースを処理します。 レベル。 7 結論 私たちは Bitcoin の主な欠陥を調査し、考えられる解決策をいくつか提案しました。これらの有利な機能と継続的な開発により、新しい電子マネー システム CryptoNote が誕生します。 Bitcoin の深刻なライバルであり、そのすべてのフォークを上回っています。 14 26 時間の経過とともにブロックサイズを制限する方法を見つけ出すことができれば、これは不要になるかもしれません... これも正解とは言えません。 「NewReward」を上向きの放物線に設定するだけです。 ブロック サイズは独立変数です。したがって、新しい報酬は無限に膨れ上がります。一方、もし、 新しい報酬は Max(0,Base Reward(1-(BlkSize/Mn - 1)^2)) で、新しい報酬は は、ブロックサイズ = Mn にピークがあり、次のように切片がある下向きの放物線になります。 ブロックサイズ = 0 およびブロックサイズ = 2Mn。そしてそれが彼らが表現しようとしているもののようです。 ただし、これはそうではありません
Analyse

5
Cela n’a pas vraiment d’importance lorsqu’un milliard de personnes dans le monde vivent avec moins d’un dollar par an.
jour et n'avons aucun espoir de participer un jour à une quelconque sorte de réseau minier... mais un avenir économique
un monde piloté par un système monétaire p2p avec un processeur, une voix serait, vraisemblablement, plus
plus juste qu’un système piloté par des banques à réserves fractionnaires.
Mais le protocole de Cryptonote exige tout de même 51% d'utilisateurs honnêtes... voir par exemple le Cryptonote
forums où l'un des développeurs, Pliskov, affirme qu'une attaque traditionnelle de remplacement des données sur leblockchain 51 % peut toujours fonctionner. https://forum.cryptonote.org/viewtopic.php?f=2&t=198
Notez que vous n’avez pas vraiment besoin de 51 % d’utilisateurs honnêtes. Vous avez juste vraiment besoin de "pas un seul malhonnête
faction détenant plus de 51 % de la puissance hashing du réseau."
Appelons ce soi-disant problème du Bitcoin « rigidité adaptative ». La solution de Cryptonote pour l'adaptation
la rigidité est la flexibilité adaptative dans les valeurs des paramètres du protocole. Si vous avez besoin de blocs de plus grande taille,
pas de problème, le réseau s'est ajusté en douceur tout le temps.
C'est à dire,
la façon dont Bitcoin ajuste la difficulté au fil du temps peut être reproduite dans l'ensemble de notre protocole
paramètres de sorte qu’il n’est pas nécessaire d’obtenir un consensus du réseau pour mettre à jour le protocole.
En apparence, cela semble être une bonne idée, mais sans une réflexion approfondie, un système d'auto-ajustement
le système peut devenir assez imprévisible et chaotique. Nous y reviendrons plus en détail plus tard, à mesure que
des opportunités se présentent. Les « bons » systèmes se situent quelque part entre la rigidité adaptative et le système adaptatif.
flexible, et peut-être même la rigidité elle-même est adaptative.
Si nous avions vraiment « un processeur, une voix », alors collaborer et développer des pools pour atteindre 51 %
serait plus difficile. Nous nous attendrions à ce que tous les processeurs du monde exploitent le minage, depuis les téléphones
au processeur intégré de votre Tesla pendant la charge.
http://en.wikipedia.org/wiki/Pareto_principle
Je prétends que l’équilibre de Pareto est quelque peu inévitable. Soit 20% du système sera
possédera 80 % des processeurs, ou 20 % du système détiendra 80 % des ASIC. J'émets cette hypothèse parce que la répartition sous-jacente de la richesse dans la société présente déjà la distribution de Pareto,
et à mesure que de nouveaux mineurs rejoignent, ils sont tirés de cette distribution sous-jacente.
Cependant, je soutiens que les protocoles avec un processeur, un vote entraîneront un retour sur investissement sur le matériel.
Bloquer
la récompense par nœud sera plus étroitement proportionnelle au nombre de nœuds dans le réseau car
la répartition des performances entre les nœuds sera beaucoup plus serrée. Bitcoin, d'autre part
d’autre part, voit une récompense de bloc (par nœud) plus proportionnelle à la capacité de calcul de celui-ci.
nœud. Autrement dit, seuls les « grands » sont encore dans le jeu minier. D'un autre côté,
même si le principe de Pareto sera toujours en jeu, dans un monde à un processeur, une voix, tout le monde
participe à la sécurité du réseau et gagne un peu de revenus miniers.
Dans un monde ASIC, il n’est pas judicieux d’installer chaque XBox et téléphone portable sur le mien.
Dans un monde à un processeur, à une voix, c’est très judicieux en termes de récompense minière. En conséquence délicieuse,
obtenir 51 % des suffrages est plus difficile quand il y a de plus en plus de voix, ce qui donne un joli résultat.
avantage pour la sécurité du réseau.matériel décrit précédemment. Supposons que le taux global de hash diminue de manière significative, même pour
un instant, il peut désormais utiliser son pouvoir minier pour bifurquer la chaîne et doubler ses dépenses. Comme nous le verrons
plus loin dans cet article, il n’est pas improbable que l’événement décrit précédemment se produise.
2.3
Émission irrégulière
Bitcoin a un taux d'émission prédéterminé : chaque bloc résolu produit une quantité fixe de pièces.
Environ tous les quatre ans, cette récompense est réduite de moitié. L'intention initiale était de créer un
émission douce limitée avec décroissance exponentielle, mais en fait nous avons une émission linéaire par morceaux
fonction dont les points d'arrêt peuvent causer des problèmes à l'infrastructure Bitcoin.
Lorsque le point d'arrêt survient, les mineurs commencent à recevoir seulement la moitié de la valeur de leur précédent
récompense. La différence absolue entre 12,5 et 6,25 BTC (projetée pour l'année 2020) pourrait
semblent tolérables. Cependant, en examinant la baisse de 50 à 25 BTC survenue en novembre
28 2012, semblait inapproprié pour un nombre important de membres de la communauté minière. Chiffre
1 montre une baisse spectaculaire du hashtarif du réseau à la fin du mois de novembre, exactement au moment où le
la réduction de moitié a eu lieu. Cet événement aurait pu être le moment idéal pour l'individu malveillant
décrit dans la section fonction proof-of-work pour mener une attaque à double dépense [36].
Figure 1. Tableau des taux Bitcoin hash
(source : http://bitcoin.sipa.be)
2.4
Constantes codées en dur
Bitcoin comporte de nombreuses limites codées en dur, dont certaines sont des éléments naturels de la conception originale (par ex.
fréquence de blocage, montant maximum de la masse monétaire, nombre de confirmations) alors que d'autres
semblent être des contraintes artificielles. Ce ne sont pas tant les limites que l'incapacité de changer rapidement
3
matériel décrit précédemment. Supposons que le taux global de hash diminue de manière significative, même pour
un instant, il peut désormais utiliser son pouvoir minier pour bifurquer la chaîne et doubler ses dépenses. Comme nous le verrons
plus loin dans cet article, il n’est pas improbable que l’événement décrit précédemment se produise.
2.3
Émission irrégulière
Bitcoin a un taux d'émission prédéterminé : chaque bloc résolu produit une quantité fixe de pièces.
Environ tous les quatre ans, cette récompense est réduite de moitié. L'intention initiale était de créer un
émission douce limitée avec décroissance exponentielle, mais en fait nous avons une émission linéaire par morceaux
fonction dont les points d'arrêt peuvent causer des problèmes à l'infrastructure Bitcoin.
Lorsque le point d'arrêt survient, les mineurs commencent à recevoir seulement la moitié de la valeur de leur précédent
récompense. La différence absolue entre 12,5 et 6,25 BTC (projetée pour l'année 2020) pourrait
semblent tolérables. Cependant, en examinant la baisse de 50 à 25 BTC survenue en novembre
28 2012, semblait inapproprié pour un nombre important de membres de la communauté minière. Chiffre
1 montre une baisse spectaculaire du hashtarif du réseau à la fin du mois de novembre, exactement au moment où le
la réduction de moitié a eu lieu. Cet événement aurait pu être le moment idéal pour l'individu malveillant
décrit dans la section fonction proof-of-work pour mener une attaque à double dépense [36].
Figure 1. Tableau des taux Bitcoin hash
(source : http://bitcoin.sipa.be)
2.4
Constantes codées en dur
Bitcoin comporte de nombreuses limites codées en dur, dont certaines sont des éléments naturels de la conception originale (par ex.
fréquence de blocage, montant maximum de la masse monétaire, nombre de confirmations) alors que d'autres
semblent être des contraintes artificielles. Ce ne sont pas tant les limites que l'incapacité de changer rapidement
3
6
Appelons cela comme ça, une attaque de zombies.
Discutons de ce que peut être l'émission continue
lié à un processeur, un vote dans un scénario d'attaque de zombies.
Dans un monde à un processeur, une voix, chaque téléphone portable et chaque voiture, lorsqu'ils sont inutilisés, seraient exploités. Collecter des tas de matériel bon marché pour créer une ferme minière serait très très simple, car il suffit de
à peu près tout contient un processeur. En revanche, à ce stade, le nombre de processeurs
nécessaire pour lancer une attaque à 51% serait assez étonnant, je pense.
De plus,
précisément parce qu'il serait facile de collecter du matériel bon marché, nous pouvons raisonnablement nous attendre à un
beaucoup de gens commencent à accumuler n'importe quoi avec un processeur. La course aux armements dans un monde « un processeur, une voix »
est forcément plus égalitaire que dans un monde ASIC.
D'où une discontinuité dans le réseau
la sécurité due aux taux d'émission devrait être MOINS un problème dans un monde à un processeur, une voix.
Cependant, deux faits demeurent : 1) la discontinuité du taux d'émission peut conduire à un effet de bégaiement dans
l'économie et la sécurité des réseaux, ce qui est mauvais, et 2) même si une attaque de 51 %
effectué par quelqu'un collectant du matériel bon marché peut toujours se produire dans un processeur unique-votez le monde,
il semble que cela devrait être plus difficile.
Vraisemblablement, la protection contre cela est que tous les acteurs malhonnêtes tenteront cela.
simultanément, et nous revenons à la notion de sécurité précédente de Bitcoin : "nous n'exigeons aucun
faction pour contrôler plus de 51% du réseau.
L'auteur affirme ici que l'un des problèmes du Bitcoin est la discontinuité dans l'émission des pièces.
Ce taux pourrait entraîner une baisse soudaine de la participation au réseau, et donc de la sécurité du réseau. Ainsi,
un taux d’émission de pièces continu, différenciable et régulier est préférable.
L’auteur n’a pas forcément tort. Toute sorte de diminution soudaine de la participation au réseau peut
conduire à un tel problème, et si nous pouvons en supprimer une source, nous devrions le faire. Cela dit, c'est
Il est possible que de longues périodes d'émission de pièces de monnaie « relativement constantes » ponctuées de changements soudains
est la voie idéale à suivre d’un point de vue économique. Je ne suis pas économiste. Alors, peut-être que nous
devons décider si nous allons échanger la sécurité des réseaux contre quelque chose d’économique – qu’est-ce qu’il y a ici ?
http://arxiv.org/abs/1402.2009si nécessaire, cela provoque les principaux inconvénients. Malheureusement, il est difficile de prédire quand
les constantes devront peut-être être modifiées et leur remplacement peut avoir des conséquences terribles.
Un bon exemple de changement de limite codé en dur conduisant à des conséquences désastreuses est le blocage
limite de taille fixée à 250 Ko1. Cette limite était suffisante pour contenir environ 10 000 transactions standards. Dans
début 2013, cette limite était presque atteinte et un accord a été trouvé pour augmenter le
limite. Le changement a été implémenté dans la version 0.8 du portefeuille et s'est terminé par une division de chaîne de 24 blocs.
et une attaque réussie de double dépense [9]. Bien que le bug ne soit pas dans le protocole Bitcoin, mais
au contraire, dans le moteur de base de données, il aurait pu être facilement détecté par un simple test de résistance s'il y avait eu
aucune limite de taille de bloc introduite artificiellement.
Les constantes agissent également comme une forme de point de centralisation.
Malgré la nature peer-to-peer de
Bitcoin, une écrasante majorité de nœuds utilisent le client de référence officiel [10] développé par
un petit groupe de personnes. Ce groupe prend la décision de mettre en œuvre des modifications au protocole
et la plupart des gens acceptent ces changements indépendamment de leur « exactitude ». Certaines décisions ont provoqué
discussions animées et même appels au boycott [11], ce qui indique que la communauté et le
les développeurs peuvent être en désaccord sur certains points importants. Il semble donc logique d'avoir un protocole
avec des variables configurables par l'utilisateur et auto-ajustables comme moyen possible d'éviter ces problèmes.
2.5
Scripts volumineux
Le système de script de Bitcoin est une fonctionnalité lourde et complexe. Cela permet potentiellement de créer
transactions sophistiquées [12], mais certaines de ses fonctionnalités sont désactivées en raison de problèmes de sécurité et
certains n'ont même jamais été utilisés [13]. Le script (y compris les parties des expéditeurs et des destinataires)
pour la transaction la plus populaire en Bitcoin ressemble à ceci :
分析

5
世界中の10億人が1ドル未満で暮らしているとしても、それはそれほど重要ではない
一日中、どんな種類のマイニングネットワークにも参加する希望はありません...しかし経済的
1 CPU 1 票の P2P 通貨システムによって駆動される世界は、おそらく、さらに大きくなるでしょう。
部分準備銀行業務によって推進されるシステムよりも公平です。
しかし、Cryptonote のプロトコルでは依然として 51% の正直なユーザーが必要です...たとえば、Cryptonote を参照してください。
フォーラムでは、開発者の 1 人である Pliskov が、従来のblockchain 51% のデータを置き換える攻撃はまだ機能する可能性があると述べています。 https://forum.cryptonote.org/viewtopic.php?f=2&t=198
51% の正直なユーザーは実際には必要ないことに注意してください。本当に必要なのは「不正は一切ない」
ネットワークのhash力の51%以上を握る派閥です。」
このいわゆるビットコインの問題を「適応的硬直性」と呼びましょう。 Cryptonote の適応型ソリューション
剛性とは、プロトコル パラメーター値の適応的な柔軟性です。より大きなブロックサイズが必要な場合は、
問題ありません。ネットワークは常に緩やかに調整されています。
つまり、
Bitcoin が時間の経過とともに難易度を調整する方法は、すべてのプロトコルで再現できます。
パラメータを変更することで、プロトコルを更新するためにネットワークの合意を得る必要がなくなります。
表面的には、これは良いアイデアのように見えますが、注意深く事前に検討しないと、自動的に調整されてしまいます。
システムは非常に予測不能で混沌としたものになる可能性があります。これについては後ほどさらに詳しく見ていきますので、
チャンスが生まれます。 「優れた」システムは、適応的に剛性が高いシステムと適応的に剛性が高いシステムの間のどこかにあります。
柔軟性があり、おそらく剛性自体も適応可能です。
本当に「1 CPU 1 票」であれば、共同でプールを開発して 51% を達成することになります。
もっと難しいでしょう。私たちは、世界中のすべての CPU が携帯電話からマイニングされることを期待しています。
充電中に Tesla のオンボード CPU に接続します。
http://en.wikipedia.org/wiki/Pareto_principle
私は、パレート均衡はある程度避けられないと主張します。システムの 20% が
CPU の 80% を所有するか、システムの 20% が ASIC の 80% を所有します。私がこのような仮説を立てるのは、社会における富の根本的な分布がすでにパレート分布を示しているからです。
そして、新しいマイナーが参加すると、その基礎となるディストリビューションから抽出されます。
ただし、1 CPU 1 票のプロトコルではハードウェアの ROI が見られると私は主張します。
ブロック
ノードあたりの報酬は、ネットワーク内のノード数により密接に比例します。
ノード間のパフォーマンスの分散はより厳密になります。一方、Bitcoin
一方、ブロック報酬 (ノードごと) はその計算能力に比例すると考えられます。
ノード。つまり、まだ「大手」だけがマイニング ゲームに参加しているのです。一方、
たとえパレートの法則がまだ機能しているとしても、1 CPU 1 票の世界では、全員
ネットワークセキュリティに参加し、少しのマイニング収入を獲得します。
ASIC の世界では、すべての XBox や携帯電話をマイニング用に装備するのは賢明ではありません。
onecpu-one-vote の世界では、マイニング報酬の観点からは非常に賢明です。嬉しい結果として、
投票数が増えると、投票の 51% を獲得するのが難しくなり、素晴らしい結果が得られます。
ネットワーク セキュリティにメリットがあります。前述したハードウェア。世界全体のhash率が、たとえ
一瞬にして、彼は自分のマイニングパワーを利用してチェーンをフォークし、二重に使うことができるようになります。これから見るように
この記事の後半で説明しますが、前述のイベントが発生する可能性は低くありません。
2.3
不規則発光
Bitcoin には所定の排出率があり、解決された各ブロックは固定量のコインを生成します。
この報酬は約 4 年ごとに半分になります。当初の目的は、
指数関数的な減衰を伴う限られた滑らかな放射ですが、実際には区分的に線形な放射があります。
ブレークポイントが Bitcoin インフラストラクチャに問題を引き起こす可能性のある関数。
ブレークポイントが発生すると、マイナーは以前の値の半分だけを受け取り始めます。
報酬。 12.5 BTC と 6.25 BTC (2020 年の予測) の絶対差は、
耐えられるようです。しかし、11月に起こった50から25BTCの下落を調べると、
2012 年 2 月 28 日、鉱山コミュニティの相当数のメンバーにとって不適切であると感じました。図
1 は、11 月末にネットワークの hash レートが劇的に減少したことを示しています。
半減が起こった。この出来事は悪意のある人物にとって完璧な瞬間だったかもしれない
proof-of-work 機能セクションで説明されているように、二重支出攻撃 [36] を実行します。
図 1. Bitcoin hash レート チャート
(出典: http://bitcoin.sipa.be)
2.4
ハードコードされた定数
Bitcoin には多くのハードコーディングされた制限があり、その一部は元の設計の自然な要素です (例:
ブロック頻度、通貨供給量の最大値、確認の数)、その他
人為的な制約のようです。それは限界というよりも、すぐに変化することができないことです。
3
前述したハードウェア。グローバルなhashレートが、たとえ
一瞬にして、彼は自分のマイニングパワーを利用してチェーンをフォークし、二重に使うことができるようになります。これから見るように
この記事の後半で説明しますが、前述のイベントが発生する可能性は低くありません。
2.3
不規則発光
Bitcoin には所定の排出率があり、解決された各ブロックは固定量のコインを生成します。
この報酬は約 4 年ごとに半分になります。当初の目的は、
指数関数的な減衰を伴う限られた滑らかな放射ですが、実際には区分的に線形な放射があります。
ブレークポイントが Bitcoin インフラストラクチャに問題を引き起こす可能性のある関数。
ブレークポイントが発生すると、マイナーは以前の値の半分だけを受け取り始めます。
報酬。 12.5 BTC と 6.25 BTC (2020 年の予測) の絶対差は、
耐えられるようです。しかし、11月に起こった50から25BTCの下落を調べると、
2012 年 2 月 28 日、鉱山コミュニティの相当数のメンバーにとって不適切であると感じました。図
1 は、11 月末にネットワークの hash レートが劇的に減少したことを示しています。
半減が起こった。この出来事は悪意のある人物にとって完璧な瞬間だったかもしれない
proof-of-work 関数セクションで説明されているように、二重支出攻撃 [36] を実行します。
図 1. Bitcoin hash レート チャート
(出典: http://bitcoin.sipa.be)
2.4
ハードコードされた定数
Bitcoin には多くのハードコーディングされた制限があり、その一部は元の設計の自然な要素です (例:
ブロック頻度、通貨供給量の最大値、確認の数)、その他
人為的な制約のようです。それは限界というよりも、すぐに変化することができないことです。
3
6
これを何というか、ゾンビ攻撃と呼びましょう。
継続的な放出がどのように行われるかを議論しましょう
ゾンビ攻撃シナリオにおける 1 CPU 1 票に関連します。
1 CPU 1 票の世界では、すべての携帯電話と自動車は、アイドル状態のときは常にマイニングを行っていることになります。大量の安価なハードウェアを集めてマイニング ファームを作成するのは非常に簡単です。
ほぼすべてのものにCPUが搭載されています。一方、その時点でのCPUの数は、
51% 攻撃を開始するのに必要なコストは非常に驚くべきものであると私は思います。
さらに、
まさに「安価なハードウェアを集めるのが簡単だから」、
多くの人が CPU を使って何でもため込み始めます。 1 CPU 1 票の世界における軍備競争
ASIC の世界よりも必然的に平等主義的です。
したがって、ネットワークの不連続性が発生します
1 CPU 1 票の世界では、排出率によるセキュリティはそれほど問題ではないはずです。
ただし、次の 2 つの事実が残ります: 1) 放出速度の不連続性は、音の途切れ効果を引き起こす可能性があります。
経済とネットワーク セキュリティの両方に悪影響を及ぼします。2) たとえ 51% の攻撃があったとしても
安価なハードウェアを収集する誰かによって実行される場合でも、1 CPU 1 で発生する可能性があります。-投票の世界、
もっと難しいはずのようです。
おそらく、これに対する安全策は、「すべての」不正行為者がこれを試みることです。
同時に、Bitcoin の以前のセキュリティ概念に戻ります。「不正行為は要求しません」
ネットワークの51%以上を支配する派閥。」
著者はここで、ビットコインの問題の一つはコイン発行の不連続性であると主張している。
速度が低下すると、ネットワークへの参加が突然低下し、ネットワークのセキュリティが低下する可能性があります。したがって、
継続的で微分可能でスムーズなコイン排出率が望ましいです。
著者は必ずしも間違っていません。ネットワークへの参加が突然減少すると、
このような問題が発生する可能性があり、その原因を 1 つ取り除くことができるのであれば、そうすべきです。そうは言っても、それは
長期にわたって「比較的一定した」コイン発行が突然の変化によって中断される可能性
経済学の観点からは理想的な方法です。私は経済学者ではありません。それで、おそらく私たちは、
ネットワーク セキュリティを経済的なものと引き換えにするかどうかを決定する必要があります。ここには何があるでしょうか?
http://arxiv.org/abs/1402.2009必要に応じてそれらを使用すると、主な欠点が生じます。残念ながら、いつ起こるかを予測するのは困難です。
定数の変更が必要になる場合があり、定数を置き換えるとひどい結果につながる可能性があります。
悲惨な結果をもたらすハードコードされた制限変更の好例は、次のブロックです。
サイズ制限は 250kb1 に設定されています。この制限は、約 10000 件の標準トランザクションを保持するには十分です。で
2013 年の初めには、この制限にほぼ達していたので、上限を増やすことで合意に達しました。
限界。この変更はウォレットバージョン0.8で実装され、24ブロックのチェーン分割で終了しました。
そして二重支出攻撃[9]が成功しました。このバグは Bitcoin プロトコルにはありませんでしたが、
むしろデータベース エンジンに問題があった場合、単純なストレス テストで簡単に検出できたはずです。
人為的に導入されたブロック サイズ制限はありません。
定数は、一元化ポイントの形式としても機能します。
ピアツーピアの性質にもかかわらず、
Bitcoin、圧倒的多数のノードは、によって開発された公式リファレンス クライアント [10] を使用しています。
少人数のグループ。このグループは、プロトコルへの変更を実装する決定を下します。
そしてほとんどの人は、その「正しさ」に関係なく、こうした変化を受け入れます。いくつかの決定が引き起こした
白熱した議論が行われ、ボイコット [11] さえ呼び掛けられています。これは、コミュニティと
開発者はいくつかの重要な点で意見が異なる場合があります。したがって、プロトコルを持つことは論理的であると思われます
これらの問題を回避する可能な方法として、ユーザーが構成可能で自己調整可能な変数を使用します。
2.5
かさばるスクリプト
Bitcoin のスクリプト システムは、重くて複雑な機能です。それは潜在的に人が作成することを可能にします
洗練されたトランザクション [12] ですが、セキュリティ上の懸念から一部の機能が無効になっています。
[13] は一度も使用されていないものもあります。スクリプト (送信側と受信側の両方の部分を含む)
Bitcoin で最も人気のあるトランザクションは次のようになります。