Présentation
«La gĂ©nĂ©ration de nombres alĂ©atoires est trop importante pour ĂȘtre laissĂ©e au hasard»
Robert Cavyu, 1970
Cet article est consacrĂ© Ă l'application pratique de solutions utilisant la gĂ©nĂ©ration collective de nombres alĂ©atoires dans un environnement non fiable. En bref - comment et pourquoi le hasard est utilisĂ© dans les blockchains, et un peu comment distinguer le «bon» du alĂ©atoire du «mauvais». La gĂ©nĂ©ration d'un nombre vraiment alĂ©atoire est un problĂšme extrĂȘmement difficile, mĂȘme sur un ordinateur sĂ©parĂ©, et a longtemps Ă©tĂ© Ă©tudiĂ© par les cryptographes. Eh bien, dans les rĂ©seaux dĂ©centralisĂ©s, la gĂ©nĂ©ration de nombres alĂ©atoires est encore plus complexe et importante.
C'est dans les rĂ©seaux oĂč les participants ne se font pas confiance que la capacitĂ© de gĂ©nĂ©rer un nombre alĂ©atoire indĂ©niable peut rĂ©soudre efficacement de nombreux problĂšmes importants et amĂ©liorer considĂ©rablement les schĂ©mas existants. De plus, les jeux de hasard et les loteries ne sont pas du tout l'objectif numĂ©ro un, comme un lecteur inexpĂ©rimentĂ© peut sembler au premier abord.
Génération de nombres aléatoires
Les ordinateurs ne savent pas comment produire eux-mĂȘmes des nombres alĂ©atoires, pour cela ils ont besoin d'une aide extĂ©rieure. Un ordinateur peut obtenir une valeur alĂ©atoire en utilisant, par exemple, les mouvements de la souris, la quantitĂ© de mĂ©moire utilisĂ©e, les courants parasites sur les contacts du processeur et de nombreuses autres sources appelĂ©es sources d'entropie. Ces valeurs elles-mĂȘmes ne sont pas entiĂšrement alĂ©atoires, car elles se situent dans une certaine plage ou ont une nature prĂ©visible de changements. Pour transformer ces nombres en un nombre vraiment alĂ©atoire dans une plage donnĂ©e, des transformations cryptographiques leur sont appliquĂ©es afin d'obtenir des valeurs pseudo-alĂ©atoires uniformĂ©ment rĂ©parties Ă partir des valeurs inĂ©galement rĂ©parties de la source d'entropie. Les valeurs obtenues sont appelĂ©es pseudo-alĂ©atoires, car elles ne sont pas vraiment alĂ©atoires, mais sont dĂ©rivĂ©es de maniĂšre dĂ©terministe de l'entropie. Tout bon algorithme cryptographique, chiffrant les donnĂ©es, produit des textes chiffrĂ©s qui ne devraient pas ĂȘtre statistiquement indiscernables d'une sĂ©quence alĂ©atoire, donc pour la production d'alĂ©atoire, vous pouvez prendre une source d'entropie qui ne fournit qu'une bonne rĂ©pĂ©tabilitĂ© et l'imprĂ©visibilitĂ© des valeurs mĂȘme dans de petites plages, le reste du travail de dispersion et de mĂ©lange des bits dans la valeur rĂ©sultante sera reprise par l'algorithme de chiffrement.
Pour terminer le court programme Ă©ducatif, j'ajouterai que la gĂ©nĂ©ration de nombres alĂ©atoires, mĂȘme sur un seul appareil, est l'un des piliers de la sĂ©curitĂ© de nos donnĂ©es, les numĂ©ros pseudo-alĂ©atoires gĂ©nĂ©rĂ©s sont utilisĂ©s pour Ă©tablir des connexions sĂ©curisĂ©es dans diffĂ©rents rĂ©seaux, pour gĂ©nĂ©rer des clĂ©s cryptographiques, pour Ă©quilibrer la charge, pour contrĂŽler l'intĂ©gritĂ©, et pour bien d'autres utilisations. La sĂ©curitĂ© de nombreux protocoles dĂ©pend de la capacitĂ© Ă gĂ©nĂ©rer des donnĂ©es alĂ©atoires fiables et imprĂ©visibles de l'extĂ©rieur, Ă les enregistrer et Ă ne pas les ouvrir avant la prochaine Ă©tape du protocole, sinon la sĂ©curitĂ© sera compromise. Une attaque sur un gĂ©nĂ©rateur de valeur pseudo-alĂ©atoire est extrĂȘmement dangereuse et menace tous les logiciels qui utilisent la gĂ©nĂ©ration alĂ©atoire Ă la fois.
Vous devez savoir tout cela si vous avez suivi un cours de base de cryptographie, alors continuons avec les réseaux décentralisés.
Blockchain Random
Tout d'abord, je vais parler des blockchains avec support pour les contrats intelligents, ce sont elles qui peuvent pleinement profiter des opportunitĂ©s offertes par une qualitĂ© alĂ©atoire indĂ©niable. De plus, par souci de concision, j'appellerai cette technologie « balises alĂ©atoires publiquement vĂ©rifiables » ou PVRB. Ătant donnĂ© que les chaĂźnes de blocs sont des rĂ©seaux dans lesquels tout participant peut vĂ©rifier des informations, l'Ă©lĂ©ment clĂ© du nom est «publiquement vĂ©rifiable», c'est-Ă -dire quiconque Ă l'aide de calculs peut obtenir la preuve que le nombre rĂ©sultant, placĂ© sur la blockchain, a les propriĂ©tĂ©s suivantes:
- Le résultat doit avoir une distribution uniformément prouvée, c'est-à -dire basée sur une cryptographie suffisamment solide.
- Il n'est possible de contrĂŽler aucun des bits du rĂ©sultat. Par consĂ©quent, le rĂ©sultat ne peut pas ĂȘtre prĂ©vu Ă l'avance.
- Vous ne pouvez pas saboter le protocole de génération en ne participant pas au protocole ou en surchargeant le réseau avec des messages d'attaque
- Tout ce qui prĂ©cĂšde devrait ĂȘtre rĂ©sistant Ă la collusion du nombre autorisĂ© de participants malhonnĂȘtes dans le protocole (par exemple, 1/3 des participants).
Toute possibilité pour un petit groupe de participants conspirant de produire un hasard pair / impair contrÎlé est un trou de sécurité. Toute opportunité pour le groupe de cesser d'émettre une maison au hasard est un trou de sécurité. En général, les problÚmes sont nombreux et cette tùche n'est pas aisée ...
Il semble que l'application la plus importante pour PVRB soit divers jeux, loteries et généralement tout type de jeu sur la blockchain. En effet, c'est une direction importante, mais la maison aléatoire dans les blockchains a des applications et plus importantes. Considérez-les.
Algorithmes de consensus
PVRB est crucial pour le consensus de réseautage. Les transactions dans les chaßnes de blocs sont protégées par une signature électronique, par conséquent, «l'attaque d'une transaction» est toujours l'inclusion / exclusion d'une transaction dans un bloc (ou dans plusieurs blocs). Et la tùche principale de l'algorithme de consensus est de s'entendre sur l'ordre de ces transactions et sur l'ordre des blocs qui incluent ces transactions. En outre, une propriété nécessaire pour de vraies chaßnes de blocs est la finalité - la capacité du réseau à accepter que la chaßne vers le bloc finalisé est définitive et ne sera jamais exclue en raison de l'apparition d'une nouvelle fourche. Habituellement, pour convenir qu'un bloc est valide et, surtout, définitif, vous devez collecter les signatures de la plupart des producteurs de blocs (ci-aprÚs BP - producteurs de blocs), ce qui nécessite au moins de fournir une chaßne de blocs à tous les BP et de distribuer des signatures entre tous les BP. . à mesure que le nombre de BP augmente, le nombre de messages requis sur le réseau augmente de façon exponentielle; par conséquent, les algorithmes de consensus qui nécessitent une finalité, tels que ceux utilisés dans le consensus pBFT d'Hyperledger, ne fonctionnent pas à la bonne vitesse, à partir de plusieurs dizaines de BP, nécessitant un grand nombre de connexions.
Si le rĂ©seau a un PVRB indĂ©niable et honnĂȘte, alors, mĂȘme dans l'approximation la plus simple, il est possible de sĂ©lectionner l'un des producteurs de blocs sur la base de celui-ci et de le nommer «leader» pour un tour du protocole. Si nous avons N
producteurs de blocs, dont M: M > 1/2 N
sont honnĂȘtes, ne censurons pas les transactions et ne construisons pas de chaĂźnes de fourches afin de mener une attaque de "double dĂ©pense", alors l'utilisation d'un PVRB incontestable uniformĂ©ment distribuĂ© vous permettra de choisir un leader honnĂȘte avec probabilitĂ© M / N (M / N > 1/2)
. Si chaque leader se voit attribuer son propre intervalle de temps pendant lequel il peut produire un bloc et valider la chaĂźne, et ces intervalles sont Ă©gaux dans le temps, alors la chaĂźne de blocs honnĂȘtes de BP sera plus longue que la chaĂźne formĂ©e par le BP malveillant, et l'algorithme de consensus s'appuyant sur la longueur de la chaĂźne, jetez simplement le «mauvais». Ce principe d'allocation de tranches de temps Ă©gales Ă chaque BP a Ă©tĂ© appliquĂ© pour la premiĂšre fois dans Graphene (le prĂ©dĂ©cesseur d'EOS), et permet de fermer la plupart des blocs avec une seule signature, ce qui rĂ©duit considĂ©rablement la charge du rĂ©seau et permet Ă ce consensus de fonctionner extrĂȘmement rapidement et rĂ©guliĂšrement. Cependant, les rĂ©seaux EOS doivent dĂ©sormais utiliser des blocs spĂ©ciaux (Last Irreversible Block), qui sont confirmĂ©s par 2/3 des signatures BP. Ces blocs sont utilisĂ©s pour assurer la finalitĂ© (l'impossibilitĂ© d'une chaĂźne de fourches commençant plus tĂŽt que le dernier dernier bloc irrĂ©versible).
De plus, dans les implĂ©mentations rĂ©elles, le schĂ©ma de protocole est plus compliquĂ© - le vote pour les blocs proposĂ©s est effectuĂ© en plusieurs Ă©tapes afin de maintenir le rĂ©seau en cas de saut de bloc et de problĂšmes de rĂ©seau, mais mĂȘme dans cet esprit, les algorithmes de consensus PVRB nĂ©cessitent beaucoup moins de messages entre les BP, ce qui vous permet de les rendre plus rapides que le PBFT traditionnel, ou ses diffĂ©rentes modifications.
Le représentant le plus frappant de tels algorithmes: Ouroboros de l'équipe Cardano, qui, comme annoncé, a une résistance mathématiquement prouvable à la collusion entre BP.
Ă Ouroboros, PVRB est utilisĂ© pour dĂ©finir le soi-disant «calendrier BP» - un calendrier selon lequel chaque BP se voit attribuer son propre crĂ©neau horaire pour la publication d'un bloc. Le gros avantage de l'utilisation du PVRB est la totale «égalitĂ© des droits» de BP (selon la taille de leurs soldes). L'honnĂȘtetĂ© PVRB garantit que les BP malveillants ne peuvent pas contrĂŽler le calendrier des crĂ©neaux horaires, et ne peuvent donc pas manipuler la chaĂźne en prĂ©parant et en analysant les fourches de la chaĂźne Ă l'avance, et pour sĂ©lectionner une fourche, vous pouvez simplement vous fier Ă la longueur de la chaĂźne sans utiliser de mĂ©thodes dĂ©licates pour calculer l'utilitĂ© du BP et «Poids» de ses blocs.
En gĂ©nĂ©ral, dans tous les cas oĂč un participant au hasard doit ĂȘtre sĂ©lectionnĂ© dans un rĂ©seau dĂ©centralisĂ©, PVRB est presque toujours le meilleur choix, plutĂŽt qu'une option dĂ©terministe basĂ©e, par exemple, sur un hachage de bloc. Sans PVRB, la capacitĂ© d'influencer le choix du participant conduit Ă l'apparition d'attaques dans lesquelles l'attaquant peut, en choisissant parmi plusieurs options pour l'avenir, choisir le prochain participant corrompu ou plusieurs Ă la fois, afin de fournir une part plus importante dans la dĂ©cision. L'utilisation de PVRB discrĂ©dite ces types d'attaques.
Mise à l'échelle et équilibrage de charge
Le PVRB peut Ă©galement ĂȘtre trĂšs utile dans les tĂąches visant Ă rĂ©duire la charge de travail et Ă augmenter les paiements. Pour commencer, il est logique de lire lâ article de Rivest «Les billets de loterie Ă©lectroniques en tant que micropaiements». L'essence gĂ©nĂ©rale est qu'au lieu d'effectuer 100 paiements de 1c du payeur au destinataire, vous pouvez jouer Ă une loterie honnĂȘte avec un prix de 1 $ = 100c, oĂč le payeur transfĂšre l'un de ses 100 «billets de loterie» Ă la banque pour chaque paiement en 1c. L'un de ces tickets gagne la banque 1 $, et c'est ce ticket que le destinataire peut fixer sur la blockchain. Plus important encore, les 99 billets restants sont transfĂ©rĂ©s entre le destinataire et le payeur sans aucune participation externe, via un canal privĂ© et Ă la vitesse souhaitĂ©e. Une bonne description du protocole basĂ© sur ce schĂ©ma dans le rĂ©seau Emercoin peut ĂȘtre trouvĂ©e ici .
Ce schĂ©ma prĂ©sente plusieurs problĂšmes, par exemple, le destinataire peut cesser de servir le payeur immĂ©diatement aprĂšs avoir reçu un billet gagnant, mais pour de nombreuses applications spĂ©ciales, telles que la facturation Ă la minute ou les abonnements Ă©lectroniques aux services, ils peuvent ĂȘtre nĂ©gligĂ©s. L'exigence principale, bien sĂ»r, est l'honnĂȘtetĂ© de la loterie, et le PVRB est absolument nĂ©cessaire pour sa tenue.
Le choix d'un participant alĂ©atoire est Ă©galement extrĂȘmement important pour les protocoles de partage, dont le but est de mettre Ă l'Ă©chelle horizontalement la chaĂźne de blocs, permettant aux diffĂ©rents partenaires mĂ©tier de traiter uniquement leur portĂ©e de transactions. Il s'agit d'une tĂąche extrĂȘmement difficile, notamment en matiĂšre de sĂ©curitĂ© lors de la fusion de fragments. Le choix honnĂȘte d'un BP alĂ©atoire afin de l'attribuer aux responsables d'un fragment particulier, comme dans les algorithmes de consensus, est Ă©galement une tĂąche PVRB. Dans les systĂšmes centralisĂ©s, les fragments sont attribuĂ©s par l'Ă©quilibreur, il calcule simplement le hachage Ă partir de la demande et l'envoie Ă l'exĂ©cuteur nĂ©cessaire. Sur les blockchains, la capacitĂ© d'influencer cette mission peut conduire Ă une attaque de consensus. Par exemple, le contenu des transactions peut ĂȘtre contrĂŽlĂ© par l'attaquant, il peut contrĂŽler quelles transactions entrent dans le fragment qu'il contrĂŽle et manipuler la chaĂźne de blocs qu'il contient. Une discussion sur le problĂšme de l'utilisation de nombres alĂ©atoires pour les problĂšmes de partage dans Ethereum peut ĂȘtre trouvĂ©e ici.
Sharding est l'une des tùches les plus ambitieuses et les plus sérieuses dans le domaine de la blockchain, sa solution vous permettra de construire des réseaux décentralisés de performances et de volume fantastiques. PVRB n'est qu'un des blocs importants pour le résoudre.
Jeux, protocoles économiques, arbitrage
Le rĂŽle des nombres alĂ©atoires dans l'industrie du jeu est difficile Ă surestimer. L'utilisation explicite dans les casinos en ligne, et implicite dans le calcul des effets de l'action d'un joueur, sont tous des problĂšmes extrĂȘmement difficiles pour les rĂ©seaux dĂ©centralisĂ©s, oĂč il n'y a aucun moyen de s'appuyer sur une source centrale de hasard. Mais, un choix alĂ©atoire peut rĂ©soudre de nombreux problĂšmes Ă©conomiques et aider Ă construire des protocoles plus simples et plus efficaces. Supposons que dans notre protocole, il existe des diffĂ©rends concernant le paiement de certains services peu coĂ»teux, et ces diffĂ©rends sont assez rares. Dans ce cas, s'il existe un PVRB indĂ©niable, les clients et les vendeurs peuvent s'entendre sur une rĂ©solution alĂ©atoire des litiges, mais avec une probabilitĂ© donnĂ©e. Par exemple, avec une probabilitĂ© de 60%, le client gagne et avec une probabilitĂ© de 40%, le vendeur gagne. Une telle approche absurde, du premier point de vue, permet de rĂ©soudre automatiquement les diffĂ©rends avec une part prĂ©cisĂ©ment prĂ©visible de victoires / dĂ©faites, ce qui convient aux deux parties sans implication de tiers et perte de temps inutile. De plus, le rapport de probabilitĂ© peut ĂȘtre dynamique et dĂ©pendre de certaines variables globales. Par exemple, si une entreprise se porte bien, il y a un faible nombre de litiges et une rentabilitĂ© Ă©levĂ©e, l'entreprise peut automatiquement dĂ©placer la probabilitĂ© de rĂ©solution d'un litige vers une approche orientĂ©e client, par exemple 70/30 ou 80/20, et vice versa, si les litiges prennent beaucoup d'argent et sont frauduleux ou inadĂ©quats, vous pouvez dĂ©placer la probabilitĂ© dans l'autre sens.
Un grand nombre de protocoles dĂ©centralisĂ©s intĂ©ressants, tels que les registres Ă jeton, les marchĂ©s de prĂ©diction, les courbes de liaison et bien d'autres sont des jeux Ă©conomiques qui rĂ©compensent les bons comportements et les mauvais mauvais. Ils rencontrent souvent des problĂšmes de sĂ©curitĂ© dont la protection se contredit. Ce qui est protĂ©gĂ© contre une attaque par des «baleines» avec des milliards de jetons («gros enjeu») est vulnĂ©rable aux attaques de milliers de comptes avec de petits soldes («enjeu sybil»), et les mesures prises contre une attaque, telles que les commissions non linĂ©aires créées pour pour rendre un gros steak dĂ©savantageux, ils sont gĂ©nĂ©ralement discrĂ©ditĂ©s par une autre attaque. Puisqu'il s'agit d'un jeu Ă©conomique, les pondĂ©rations statistiques correspondantes peuvent ĂȘtre calculĂ©es Ă l'avance et remplacer simplement les commissions par des commissions alĂ©atoires avec la distribution appropriĂ©e. De telles commissions probabilistes sont mises en Ćuvre extrĂȘmement simplement si la blockchain a une source fiable d'alĂ©atoire et ne nĂ©cessite aucun calcul complexe, ce qui rend la vie difficile aux baleines et Ă la sybille.
Il est nĂ©cessaire de continuer Ă se rappeler que le contrĂŽle d'un seul bit dans cette randomisation vous permet de tricher, de rĂ©duire et de doubler les probabilitĂ©s, donc le PVRB honnĂȘte est le composant le plus important de ces protocoles.
OĂč trouver le bon alĂ©atoire?
En thĂ©orie, des choix alĂ©atoires honnĂȘtes dans les rĂ©seaux dĂ©centralisĂ©s offrent la sĂ©curitĂ© prouvĂ©e de presque tous les protocoles contre la collusion. La justification est assez simple - si le rĂ©seau est d'accord sur un bit 0 ou 1, et parmi les participants moins de la moitiĂ© sont malhonnĂȘtes, alors, avec un nombre suffisant d'itĂ©rations, le rĂ©seau est assurĂ© de parvenir Ă un consensus sur ce bit avec une probabilitĂ© fixe. Tout simplement parce qu'un hasard honnĂȘte choisira 51 participants sur 100 dans 51% des cas. Mais c'est en thĂ©orie, car dans les rĂ©seaux rĂ©els, pour assurer un tel niveau de sĂ©curitĂ© que dans les articles, il nĂ©cessite beaucoup de messages entre hĂŽtes, une cryptographie multi-passes complexe, et toute complication du protocole ajoute immĂ©diatement de nouveaux vecteurs d'attaque.
C'est pourquoi nous ne voyons pas encore dans les blockchains un PVRB Ă©prouvĂ© qui aurait Ă©tĂ© utilisĂ© suffisamment de temps pour ĂȘtre testĂ© par de vraies applications, de multiples audits, des charges et bien sĂ»r, de vraies attaques, sans lesquelles il est difficile d'appeler le produit vraiment sĂ»r.
NĂ©anmoins, il existe plusieurs approches prometteuses Ă la fois, elles diffĂšrent dans de nombreux dĂ©tails et certaines d'entre elles rĂ©soudront certainement le problĂšme. Avec des ressources informatiques modernes, la thĂ©orie cryptographique est capable de se transformer assez habilement en applications pratiques. Ă l'avenir, nous serons heureux de parler de la mise en Ćuvre du PVRB: il y en a plusieurs maintenant, chacun a son propre ensemble de propriĂ©tĂ©s et de fonctionnalitĂ©s importantes dans la mise en Ćuvre, et chacun a une bonne idĂ©e. Il n'y a pas beaucoup d'Ă©quipes impliquĂ©es dans le hasard, et l'expĂ©rience de chacune d'entre elles est extrĂȘmement importante pour tout le monde. Nous espĂ©rons que nos informations permettront aux autres Ă©quipes d'avancer plus rapidement, en tenant compte de l'expĂ©rience de leurs prĂ©dĂ©cesseurs.