Oer anonimiteit yn account-basearre blockchains

Wy binne ynteressearre yn it ûnderwerp fan anonimiteit yn Krypto-muntienheden foar in lange tiid en besykje de ûntwikkeling fan technologyen yn dit gebiet te folgjen. Yn ús artikels hawwe wy al yn detail de prinsipes fan operaasje besprutsen fertroulike transaksjes yn Monero, en ek útfierd ferlykjende resinsje besteande technologyen op dit mêd. Alle anonime cryptocurrencies hjoed binne lykwols boud op it gegevensmodel foarsteld troch Bitcoin - Unspent Transaction Output (hjirnei UTXO). Foar account-basearre blockchains lykas Ethereum, besteande oplossingen foar ymplemintaasje fan anonimiteit en fertroulikens (bygelyks, mobius of Azteken) besocht it UTXO-model te replikearjen yn tûke kontrakten.

Yn febrewaris 2019, in groep ûndersikers fan Stanford University en Visa Research frijlitten foardruk "Zether: nei privacy yn 'e wrâld fan tûke kontrakten." De auteurs wiene de earste dy't in oanpak foarstelle foar it garandearjen fan anonimiteit yn account-basearre blockchains en presintearre twa ferzjes fan in tûk kontrakt: foar fertroulike (ferbergje saldo en oerdracht bedraggen) en anonime (ferbergje de ûntfanger en stjoerder) transaksjes. Wy fine de foarstelde technology ynteressant en wolle har ûntwerp diele, en ek prate oer wêrom't it probleem fan anonimiteit yn account-basearre blockchains as heul lestich beskôge wurdt en oft de auteurs it folslein oplosse kinne.

Oer de struktuer fan dizze gegevens modellen

Yn it UTXO-model bestiet in transaksje út "ynputen" en "útgongen". In direkte analoog fan "útgongen" binne de rekkens yn jo beurs: elke "útfier" hat wat denominaasje. As jo ​​​​ien betelje (in transaksje foarmje) besteegje jo ien of mear "útgongen", yn dat gefal wurde se "ynputen" fan 'e transaksje, en de blockchain markearret se as bestege. Yn dit gefal krijt de ûntfanger fan jo betelling (of jo sels, as jo feroaring nedich binne) de nij oanmakke "útgongen". Dit kin skematysk werjûn wurde as dit:

Oer anonimiteit yn account-basearre blockchains

Account-basearre blockchains binne strukturearre folle as jo bankrekken. Se behannelje allinich it bedrach op jo akkount en it oerdrachtbedrach. As jo ​​​​wat bedrach fan jo akkount oermeitsje, ferbaarne jo gjin "útgongen", it netwurk hoecht net te ûnthâlden hokker munten binne bestege en hokker net. Yn it ienfâldichste gefal komt transaksjeferifikaasje del op it kontrolearjen fan de hantekening fan de stjoerder en it bedrach op syn saldo:

Oer anonimiteit yn account-basearre blockchains

Analyse fan technology

Dêrnei sille wy prate oer hoe't Zether it transaksjebedrach, ûntfanger en stjoerder ferberget. As wy de prinsipes fan har wurking beskriuwe, sille wy de ferskillen yn 'e fertroulike en anonime ferzjes notearje. Om't it folle makliker is om fertroulikens te garandearjen yn account-basearre blokken, sille guon fan 'e beheiningen oplein troch anonymisaasje net relevant wêze foar de fertroulike ferzje fan' e technology.

Hiding saldo en oerdracht bedraggen

In fersiferingsskema wurdt brûkt om saldo's te fersiferjen en bedraggen yn Zether oer te bringen El Gamal. It wurket as folget. As Alice wol stjoere Bob b munten op adres (syn iepenbiere kaai) Y, sy kiest in willekeurich getal r en fersiferet it bedrach:

Oer anonimiteit yn account-basearre blockchains
wêr C - fersifere bedrach, D - helpwearde nedich om dit bedrach te ûntsiferjen, G - in fêst punt op 'e elliptyske kromme, as fermannichfâldige mei de geheime kaai, wurdt de iepenbiere kaai krigen.

As Bob dizze wearden ûntfangt, foeget er se gewoan op deselde wize ta oan syn fersifere lykwicht, en dêrom is dit skema handich.

Op deselde manier lûkt Alice deselde wearden fan har lykwicht ôf, allinich as Y brûkt jo iepenbiere kaai.

Ferbergje de ûntfanger en stjoerder

Shuffling "útgongen" yn UTXO datearret út 'e iere dagen fan cryptocurrencies en helpt de stjoerder te ferbergjen. Om dit te dwaan, sammelt de stjoerder sels by it meitsjen fan in oerdracht willekeurige "útgongen" yn 'e blockchain en minget se mei syn eigen. Dêrnei tekenet hy de "útgongen" mei in ringhântekening - in kryptografysk meganisme wêrmei't hy de ferifiearder kin oertsjûgje dat de munten fan 'e stjoerder oanwêzich binne ûnder de belutsen "útgongen". De mingde munten sels wurde fansels net útjûn.

Wy sille lykwols gjin falske útgongen kinne generearje om de ûntfanger te ferbergjen. Dêrom hat yn UTXO elke "útfier" in eigen unike adres, en it is kryptografysk keppele oan it adres fan 'e ûntfanger fan dizze munten. Op it stuit is d'r gjin manier om de relaasje te identifisearjen tusken it unike útfieradres en it ûntfangeradres sûnder de geheime kaaien te kennen.

Yn it account-basearre model kinne wy ​​gjin ienmalige adressen brûke (oars sil it al in "útgong"-model wêze). Dêrom moatte de ûntfanger en stjoerder wurde mingd ûnder oare akkounts yn 'e blockchain. Yn dit gefal, in fersifere 0 munten wurde debitearre út de mingde akkounts (of 0 wurde tafoege as de ûntfanger wurdt mingd), sûnder eins feroarjen harren echte lykwicht.

Om't sawol de stjoerder as de ûntfanger altyd in permanint adres hawwe, wurdt it nedich om deselde groepen te brûken foar it mingjen by it oerdragen nei deselde adressen. It is makliker om dit te besjen mei in foarbyld.

Litte wy sizze dat Alice beslút om in bydrage te leverjen oan Bob's woldiedigens, mar leaver dat de oerdracht anonym bliuwt foar in waarnimmer fan bûten. Dan komt se, om har yn it stjoerfjild te ferklaaien, ek de rekken fan Adam en Adele yn. En om Bob te ferbergjen, foegje de akkounts fan Ben en Bill ta yn it ûntfangerfjild. Troch de folgjende bydrage te meitsjen, besleat Alice Alex en Amanda neist har te skriuwen, en Bruce en Benjen neist Bob. Yn dit gefal, by it analysearjen fan 'e blockchain, yn dizze twa transaksjes is d'r mar ien krusend pear dielnimmers - Alice en Bob, dy't dizze transaksjes de-anonymisearret.

Oer anonimiteit yn account-basearre blockchains

Transaksje races

Lykas wy al hawwe neamd, om jo saldo te ferbergjen yn akkount-basearre systemen, fersiferet de brûker syn saldo en it oerdrachtbedrach. Tagelyk moat hy bewize dat it saldo op syn rekken net-negatyf bliuwt. It probleem is dat by it meitsjen fan in transaksje de brûker in bewiis bout oangeande syn hjoeddeistige akkountstatus. Wat bart der as Bob stjoert in transaksje nei Alice, en it wurdt akseptearre foar de iene stjoerd troch Alice? Dan wurdt de transaksje fan Alice as ûnjildich beskôge, om't it lykwichtsbewiis waard boud foardat de transaksje fan Bob waard akseptearre.

Oer anonimiteit yn account-basearre blockchains

It earste beslút dat komt yn sa'n situaasje is om it akkount te befriezen oant de transaksje wurdt útfierd. Mar dizze oanpak is net geskikt, om't neist de kompleksiteit fan it oplossen fan sa'n probleem yn in ferspraat systeem, yn in anonime skema sil it net dúdlik wêze waans akkount te blokkearjen.

Om dit probleem op te lossen, skiedt de technology ynkommende en útgeande transaksjes: útjeften hawwe in direkte effekt op 'e balâns, wylst ûntfangsten in fertrage effekt hawwe. Om dit te dwaan, wurdt it konsept fan "epoch" ynfierd - in groep blokken fan in fêste grutte. De hjoeddeistige "epoch" wurdt bepaald troch de blokhichte te dielen troch de groepgrutte. By it ferwurkjen fan in transaksje fernijt it netwurk fuortendaliks it lykwicht fan 'e stjoerder en bewarret de fûnsen fan' e ûntfanger yn in opslachtank. De opboude fûnsen wurde allinich beskikber steld foar de beteler as in nij "tiidrek" begjint.

As resultaat kin de brûker transaksjes stjoere, nettsjinsteande hoe faak fûnsen wurde ûntfongen (sa fier as syn saldo it talit, fansels). De epochgrutte wurdt bepaald op basis fan hoe fluch blokken troch it netwurk propagearje en hoe fluch in transaksje in blok yngiet.

Dizze oplossing wurket goed foar fertroulike oerstappen, mar mei anonime transaksjes, lykas wy letter sille sjen, makket it serieuze problemen.

Beskerming tsjin replay oanfallen

Yn account-basearre blokken wurdt elke transaksje tekene troch de privee kaai fan 'e stjoerder, dy't de ferifiearder oertsjûget dat de transaksje net feroare is en waard makke troch de eigner fan dizze kaai. Mar wat as in oanfaller dy't harke nei it oerdrachtkanaal dit berjocht ûnderskept en krekt deselde twadde stjoert? De ferifiearder sil de hantekening fan 'e transaksje ferifiearje en sil oertsjûge wurde fan har auteurskip, en it netwurk sil itselde bedrach fan' e balâns fan 'e stjoerder wer ôfskriuwe.

Dizze oanfal wurdt in replay oanfal neamd. Yn it UTXO-model binne sokke oanfallen net relevant, om't de oanfaller besykje de bestege útgongen te brûken, dy't op himsels net jildich is en wurdt ôfwiisd troch it netwurk.

Om foar te kommen dat dit bart, wurdt in fjild mei willekeurige gegevens yn 'e transaksje boud, dy't in nonce of gewoan "sâlt" neamd wurdt. By it opnij yntsjinjen fan in transaksje mei in sâlt, sjocht de ferifiearder om te sjen oft de nonce earder is brûkt en, as net, beskôget de transaksje jildich. Om net de hiele skiednis fan brûker nonces op te slaan yn 'e blockchain, meastal yn' e earste transaksje wurdt it gelyk oan nul ynsteld, en dan ferhege mei ien. It netwurk kin allinich kontrolearje dat de nonce fan 'e nije transaksje ferskilt fan' e foarige ien foar ien.

Yn it anonime oerdrachtskema ûntstiet it probleem fan it validearjen fan transaksje-nonces. Wy kinne de nonce net eksplisyt bine oan it adres fan de stjoerder, om't, fansels, dit de oerdracht de-anonymisearret. Wy kinne ek net ien tafoegje oan 'e nonces fan alle dielnimmende akkounts, om't dit kin konflikt mei oare oerdrachten wurde ferwurke.

De skriuwers fan Zether stelle foar om de nonce kryptografysk te generearjen, ôfhinklik fan 'e "epoch". Bygelyks:

Oer anonimiteit yn account-basearre blockchains
it is x is de stjoerder syn geheime kaai, en Gepoch - in ekstra generator foar it tiidrek, krigen troch hashing fan in tekenrige fan 'e foarm 'Zether +'. No liket it probleem oplost te wêzen - wy litte de nonce fan 'e stjoerder net sjen en bemuoie ús net mei de nonces fan net belutsen dielnimmers. Mar dizze oanpak stelt in serieuze beheining: ien akkount kin net mear as ien transaksje per "epoch" stjoere. Dit probleem, spitigernôch, bliuwt net oplost, en op it stuit makket de anonime ferzje fan Zether, nei ús miening, amper geskikt foar gebrûk.

De kompleksiteit fan Zero Knowledge Proofs

Yn UTXO moat de stjoerder oan it netwurk bewize dat hy gjin negatyf bedrach útjout, oars wurdt it mooglik om nije munten út 'e loft te generearjen (wêrom dit mooglik is, skreaunen wy yn ien fan' e foarige artikels). En tekenje ek de "ynputs" mei in ringhântekening om te bewizen dat der ûnder de munten dy't wurde mingd fûnsen binne dy't by him hearre.

Yn 'e anonime ferzje fan' e account-basearre blockchain binne de útdrukkingen foar bewiis folle komplekser. De stjoerder bewiist dat:

  1. It ferstjoerde bedrach is posityf;
  2. It lykwicht bliuwt net-negatyf;
  3. De stjoerder fersifere de oerdrachtbedragen korrekt (ynklusyf nul);
  4. It saldo op it saldo feroaret allinnich foar de stjoerder en de ûntfanger;
  5. De stjoerder is eigner fan de privee kaai foar syn akkount en hy stiet eins op de list fan stjoerders (ûnder de belutsenen);
  6. De nonce brûkt yn 'e transaksje is korrekt gearstald.

Foar sa'n komplekse bewiis brûke de auteurs in mingsel Bulletproof (ien fan 'e auteurs, trouwens, naam diel oan' e skepping) en Sigma protokol, dy't Sigma-kûgels wurde neamd. Formele bewiis fan sa'n ferklearring is in nochal drege taak, en it beheint it oantal minsken dat ree is om de technology te ymplementearjen.

Wat op it ein?

Yn ús miening kin it diel fan Zether dat privacy bringt nei account-basearre blockchains op it stuit brûkt wurde. Mar op it stuit stelt de anonime ferzje fan 'e technology serieuze beheiningen op it gebrûk, en har kompleksiteit op har ymplemintaasje. It moat lykwols net fermindere wurde dat de auteurs it mar in pear moanne lyn útbrochten, en miskien sil in oar in oplossing fine foar de problemen dy't hjoeddedei bestean. Dit is ommers hoe't wittenskip dien wurdt.

Boarne: www.habr.com

Add a comment