Um nafnleynd í reikningsbundnum blockchains

Við höfum haft áhuga á efni nafnleyndar í dulritunargjaldmiðlum í langan tíma og reynum að fylgjast með þróun tækni á þessu sviði. Í greinum okkar höfum við þegar fjallað ítarlega um meginreglur aðgerðarinnar trúnaðarviðskipti í Monero, og einnig framkvæmt samanburðarrýni tækni sem er til á þessu sviði. Hins vegar eru allir nafnlausir dulritunargjaldmiðlar í dag byggðir á gagnalíkaninu sem Bitcoin - Unspent Transaction Output (hér eftir nefnt UTXO) leggur til. Fyrir reikningstengdar blokkakeðjur eins og Ethereum, núverandi lausnir til að innleiða nafnleynd og trúnað (til dæmis, Mobius eða Aztec) reyndi að endurtaka UTXO líkanið í snjöllum samningum.

Í febrúar 2019, hópur vísindamanna frá Stanford University og Visa Research sleppt forprentun "Zether: Í átt að friðhelgi einkalífsins í heimi snjallsamninga." Höfundarnir voru fyrstir til að leggja til nálgun til að tryggja nafnleynd í reikningsbundnum blokkkeðjum og kynntu tvær útgáfur af snjöllum samningi: fyrir trúnaðarmál (fela stöður og millifærsluupphæðir) og nafnlausar (fela viðtakanda og sendanda) viðskipti. Okkur finnst fyrirhuguð tækni áhugaverð og viljum deila hönnun hennar, auk þess að tala um hvers vegna vandamálið við nafnleynd í reikningsbundnum blokkkeðjum er talið mjög erfitt og hvort höfundum hafi tekist að leysa það að fullu.

Um uppbyggingu þessara gagnalíkana

Í UTXO líkaninu samanstendur viðskipti af „inntak“ og „úttak“. Bein hliðstæða „úttaks“ eru reikningarnir í veskinu þínu: hver „útgangur“ hefur einhvern nafngildi. Þegar þú borgar einhverjum (myndar viðskipti) eyðirðu einu eða fleiri „úttak“, í því tilviki verða þau „inntak“ viðskiptanna og blockchain merkir þá sem eytt. Í þessu tilviki fær viðtakandi greiðslu þinnar (eða þú sjálfur, ef þú þarft breytingar) nýstofnaða „úttak“. Þetta er hægt að tákna með skýringarmynd þannig:

Um nafnleynd í reikningsbundnum blockchains

Reikningartengdar blockchains eru byggðar upp eins og bankareikningurinn þinn. Þeir fjalla aðeins um upphæðina á reikningnum þínum og millifærsluupphæðina. Þegar þú millifærir einhverja upphæð af reikningnum þínum brennir þú engum „útgangi“, netið þarf ekki að muna hvaða mynt hefur verið eytt og hverjar ekki. Í einfaldasta tilvikinu kemur sannprófun viðskipta niður á því að athuga undirskrift sendanda og upphæðina á stöðu hans:

Um nafnleynd í reikningsbundnum blockchains

Greining á tækni

Næst munum við tala um hvernig Zether felur færsluupphæð, viðtakanda og sendanda. Þegar við lýsum meginreglum um starfsemi þess munum við taka eftir mismuninum á trúnaðar- og nafnlausu útgáfunum. Þar sem það er miklu auðveldara að tryggja trúnað í reikningsbundnum blokkkeðjum, munu sumar takmarkanirnar sem settar eru með nafnleynd ekki eiga við um trúnaðarútgáfu tækninnar.

Fela stöður og millifæra upphæðir

Dulkóðunarkerfi er notað til að dulkóða stöður og flytja upphæðir í Zether El Gamal. Það virkar sem hér segir. Þegar Alice vill senda Bob b mynt eftir heimilisfangi (opinber lykill þess) Y, hún velur handahófskennda tölu r og dulkóðar upphæðina:

Um nafnleynd í reikningsbundnum blockchains
þar sem C - dulkóðuð upphæð, D - aukavirði sem er nauðsynlegt til að ráða þessa upphæð, G - fastur punktur á sporöskjulaga ferlinum, þegar hann er margfaldaður með leynilyklinum fæst opinberi lykillinn.

Þegar Bob fær þessi gildi, bætir hann þeim einfaldlega við dulkóðaða stöðu sína á sama hátt, og þess vegna er þetta kerfi þægilegt.

Á sama hátt dregur Alice sömu gildi frá jafnvægi sínu, aðeins sem Y notar opinbera lykilinn þinn.

Felur viðtakanda og sendanda

Uppstokkun „úttak“ í UTXO nær aftur til árdaga dulritunargjaldmiðla og hjálpar til við að fela sendandann. Til að gera þetta safnar sendandinn sjálfur, þegar hann gerir millifærslu, handahófskenndum „úttakum“ í blockchain og blandar þeim saman við sína eigin. Næst undirritar hann „úttakið“ með hringaundirskrift — dulritunarkerfi sem gerir honum kleift að sannfæra sannprófandann um að mynt sendandans sé til staðar meðal „úttakanna“ sem um ræðir. Blönduðu myntunum sjálfum er auðvitað ekki eytt.

Hins vegar munum við ekki geta búið til fölsuð úttak til að fela viðtakandann. Þess vegna, í UTXO, hefur hver „útgangur“ sitt einstaka heimilisfang og það er dulmálstengt heimilisfangi viðtakanda þessara mynta. Í augnablikinu er engin leið til að bera kennsl á sambandið milli einstaka úttaksvistfangsins og heimilisfangs viðtakanda án þess að vita leynilykla þess.

Í reikningsbundnu líkani getum við ekki notað einskiptisföng (annars verður það nú þegar „útgöngulíkan“). Þess vegna þarf að blanda viðtakanda og sendanda á milli annarra reikninga í blockchain. Í þessu tilviki eru dulkóðuð 0 mynt skuldfærð af blönduðu reikningunum (eða 0 bætt við ef viðtakandinn er blandaður), án þess að raunverulega stöðu þeirra breytist.

Þar sem bæði sendandi og viðtakandi eru alltaf með fast heimilisfang verður nauðsynlegt að nota sömu hópa við blöndun þegar flutt er á sömu heimilisföngin. Það er auðveldara að skoða þetta með dæmi.

Segjum að Alice ákveði að leggja sitt af mörkum til góðgerðarmála Bobs, en kýs að flutningurinn sé nafnlaus fyrir utanaðkomandi áheyrnarfulltrúa. Síðan, til að dulbúa sig í sendandasviðinu, fer hún líka inn í reikninga Adam og Adele. Og til að fela Bob skaltu bæta við reikningum Ben og Bill í viðtakendareitinn. Með næsta framlag ákvað Alice að skrifa Alex og Amöndu við hlið sér og Bruce og Benjen við hlið Bob. Í þessu tilviki, þegar blockchain er greind, er í þessum tveimur viðskiptum aðeins eitt par af þátttakendum sem skerast - Alice og Bob, sem afnafnleysir þessi viðskipti.

Um nafnleynd í reikningsbundnum blockchains

Viðskiptahlaup

Eins og við höfum þegar nefnt, til að fela stöðu þína í reikningsbundnum kerfum, dulkóðar notandinn stöðu sína og millifærsluupphæðina. Jafnframt verður hann að sanna að staðan á reikningi hans sé áfram óneikvædd. Vandamálið er að þegar viðskipti eru stofnuð, byggir notandinn sönnun um núverandi reikningsstöðu hans. Hvað gerist ef Bob sendir færslu til Alice og hún er samþykkt á undan þeirri sem Alice sendi? Þá munu viðskipti Alice teljast ógild, þar sem sönnunin um jafnvægi var byggð áður en viðskipti Bobs voru samþykkt.

Um nafnleynd í reikningsbundnum blockchains

Fyrsta ákvörðunin sem kemur í slíkri stöðu er að frysta reikninginn þar til viðskiptin eru framkvæmd. En þessi nálgun hentar ekki, því auk þess að vera flókið að leysa slíkt vandamál í dreifðu kerfi, í nafnlausu kerfi verður ekki ljóst hvers reikningur á að loka.

Til að leysa þetta vandamál aðskilur tæknin inn- og útfærslur: eyðsla hefur tafarlaus áhrif á efnahagsreikninginn, en kvittanir hafa tafið áhrif. Til að gera þetta er hugtakið „tímabil“ kynnt - hópur blokka af fastri stærð. Núverandi "tímabil" er ákvarðað með því að deila blokkarhæðinni með hópstærðinni. Við vinnslu færslu uppfærir netið samstundis stöðu sendanda og geymir fjármuni viðtakanda í geymslutanki. Uppsafnað fé er aðeins gert aðgengilegt fyrir viðtakanda greiðslu þegar nýtt „tímabil“ hefst.

Fyrir vikið getur notandinn sent færslur óháð því hversu oft fjármunir berast (eftir því sem inneign leyfir, auðvitað). Tímarstærðin er ákvörðuð út frá því hversu hratt blokkir dreifast um netið og hversu fljótt viðskipti fara inn í blokk.

Þessi lausn virkar vel fyrir trúnaðarflutninga, en með nafnlausum viðskiptum, eins og við munum sjá síðar, skapar hún alvarleg vandamál.

Vörn gegn endurspilunarárásum

Í reikningsbundnum blokkkeðjum er hver viðskipti undirrituð af einkalykli sendanda, sem sannfærir sannprófandann um að viðskiptin hafi ekki verið breytt og hafi verið búin til af eiganda þessa lykils. En hvað ef árásarmaður sem var að hlusta á útsendingarrásina hlerar þessi skilaboð og sendir nákvæmlega sama seinni? Sannprófandinn mun staðfesta undirskrift viðskiptanna og sannfærast um höfundarrétt hennar og netið mun afskrifa sömu upphæð af stöðu sendanda aftur.

Þessi árás er kölluð endurspilunarárás. Í UTXO líkaninu skipta slíkar árásir ekki máli, þar sem árásarmaðurinn mun reyna að nota eytt úttak, sem í sjálfu sér er ekki gilt og er hafnað af netinu.

Til að koma í veg fyrir að þetta gerist er reitur með handahófskenndum gögnum innbyggður í færsluna, sem er kallað nonce eða einfaldlega „salt“. Þegar endursendi viðskipti með salti, skoðar sannprófandinn að sjá hvort nonce hafi verið notað áður og, ef ekki, telur viðskiptin gilda. Til þess að geyma ekki alla sögu notenda í blockchain, venjulega í fyrstu viðskiptum er það stillt jafnt og núll og síðan aukið um einn. Símkerfið getur aðeins athugað hvort ekkert af nýju viðskiptunum sé frábrugðið þeim fyrri í einu.

Í nafnlausa flutningskerfinu kemur upp vandamálið við að staðfesta viðskiptabann. Við getum ekki beinlínis bundið ómerkið við heimilisfang sendandans, þar sem augljóslega er flutningurinn ónefndur. Við getum heldur ekki bætt einum við reikninga allra þátttökureikninga, þar sem það gæti stangast á við aðrar millifærslur í vinnslu.

Höfundar Zether leggja til að hægt sé að búa til nonce dulmálslega, allt eftir „tímabilinu“. Til dæmis:

Um nafnleynd í reikningsbundnum blockchains
Hér x er leynilykill sendanda, og Gepoch — viðbótarrafall fyrir tímabilið, fengin með því að hassa streng af forminu 'Zether + '. Nú virðist vandamálið vera leyst - við birtum ekki fyrirvara sendanda og truflunum ekki óviðkomandi þátttakendum. En þessi nálgun setur alvarlegar takmarkanir: einn reikningur getur ekki sent meira en eina færslu á „tímabil“. Þetta vandamál er því miður óleyst og gerir nafnlausa útgáfu Zether, að okkar mati, varla hentug til notkunar.

Flækjustig núll þekkingarsönnunar

Í UTXO verður sendandinn að sanna fyrir netkerfinu að hann sé ekki að eyða neikvæðri upphæð, annars verður hægt að búa til nýja mynt upp úr þurru (af hverju þetta er mögulegt, skrifuðum við í einu af fyrri greinar). Og skrifaðu líka undir „inntak“ með hringaundirskrift til að sanna að meðal myntanna sem blandast saman eru fjármunir sem tilheyra honum.

Í nafnlausu útgáfunni af reikningsbundinni blockchain eru orðatiltækin fyrir sönnun miklu flóknari. Sendandi sannar að:

  1. Upphæðin sem send er er jákvæð;
  2. Jafnvægið er áfram óneikvætt;
  3. Sendandinn dulkóðaði flutningsupphæðirnar rétt (þar á meðal núll);
  4. Staðan á stöðunni breytist aðeins fyrir sendanda og viðtakanda;
  5. Sendandi á einkalykilinn að reikningi sínum og hann er í raun á lista yfir sendendur (meðal þeirra sem taka þátt);
  6. Nonce sem notað er í viðskiptunum er rétt samsett.

Fyrir svo flókna sönnun nota höfundar blöndu Skothelt (einn höfundanna tók að vísu þátt í gerð þess) og Sigma siðareglur, sem kallast Sigma-kúlur. Formleg sönnun fyrir slíkri fullyrðingu er frekar erfitt verkefni og það takmarkar mjög fjölda þeirra sem eru tilbúnir til að innleiða tæknina.

Niðurstaðan?

Að okkar mati er hægt að nota þann hluta Zether sem færir næði til reikningsbundinna blockchains núna. En í augnablikinu setur nafnlaus útgáfa tækninnar alvarlegar takmarkanir á notkun hennar og flókið innleiðingu hennar. Hins vegar má ekki draga úr því að höfundar gáfu það út fyrir aðeins nokkrum mánuðum og kannski finnur einhver annar lausn á þeim vandamálum sem eru til staðar í dag. Enda er þetta hvernig vísindi eru unnin.

Heimild: www.habr.com

Bæta við athugasemd