Pri anonimeco en konto-bazitaj blokĉenoj

Ni interesiĝas pri la temo de anonimeco en kriptaj moneroj dum longa tempo kaj provas sekvi la evoluon de teknologioj en ĉi tiu areo. En niaj artikoloj ni jam detale diskutis la principojn de funkciado konfidencaj transakcioj en Monero, kaj ankaŭ efektivigita kompara recenzo teknologioj ekzistantaj en ĉi tiu kampo. Tamen, ĉiuj anonimaj kriptaj moneroj hodiaŭ estas konstruitaj sur la datummodelo proponita de Bitcoin - Unspent Transaction Output (ĉi-poste UTXO). Por konto-bazitaj blokĉenoj kiel Ethereum, ekzistantaj solvoj por efektivigi anonimecon kaj konfidencon (ekzemple, mobiusAzteka) provis reprodukti la UTXO-modelon en inteligentaj kontraktoj.

En februaro 2019, grupo de esploristoj de Universitato Stanford kaj Visa Research liberigita antaŭpreso "Zether: Al privateco en la mondo de inteligentaj kontraktoj." La aŭtoroj estis la unuaj se temas pri proponi aliron por certigi anonimecon en konto-bazitaj blokĉenoj kaj prezentis du versiojn de inteligenta kontrakto: por konfidencaj (kaŝantaj ekvilibroj kaj transigaj kvantoj) kaj anonimaj (kaŝantaj la ricevanton kaj sendinto) transakcioj. Ni trovas la proponitan teknologion interesa kaj ŝatus dividi ĝian dezajnon, kaj ankaŭ paroli pri kial la problemo de anonimeco en konto-bazitaj blokĉenoj estas konsiderata tre malfacila kaj ĉu la aŭtoroj sukcesis solvi ĝin plene.

Pri la strukturo de ĉi tiuj datummodeloj

En la UTXO-modelo, transakcio konsistas el "enigaĵoj" kaj "produktaĵoj". Rekta analogo de "produktaĵoj" estas la biletoj en via monujo: ĉiu "produktaĵo" havas iun nomadon. Kiam vi pagas iun (formas transakcion) vi elspezas unu aŭ pli da "produktaĵoj", en kiu kazo ili fariĝas "enigaĵoj" de la transakcio, kaj la blokĉeno markas ilin kiel elspezitaj. En ĉi tiu kazo, la ricevanto de via pago (aŭ vi mem, se vi bezonas ŝanĝon) ricevas la nove generitajn "produktaĵojn". Ĉi tio povas esti reprezentita skeme tiel:

Pri anonimeco en konto-bazitaj blokĉenoj

Konto-bazitaj blokĉenoj estas strukturitaj tre kiel via bankkonto. Ili nur traktas la kvanton en via konto kaj la transiga kvanto. Kiam vi translokigas iun kvanton de via konto, vi ne bruligas iujn ajn "produktaĵojn", la reto ne bezonas memori, kiuj moneroj estis elspezitaj kaj kiuj ne. En la plej simpla kazo, transakcia konfirmo signifas kontroli la subskribon de la sendinto kaj la kvanton sur lia saldo:

Pri anonimeco en konto-bazitaj blokĉenoj

Analizo de teknologio

Poste, ni parolos pri kiel Zether kaŝas la transakcian kvanton, ricevanton kaj sendinton. Dum ni priskribas la principojn de ĝia funkciado, ni notos la diferencojn en la konfidencaj kaj anonimaj versioj. Ĉar estas multe pli facile certigi konfidencon en konto-bazitaj blokĉenoj, iuj el la limigoj truditaj de anonimigo ne estos gravaj por la konfidenca versio de la teknologio.

Kaŝi ekvilibrojn kaj transigajn kvantojn

Ĉifradskemo estas uzata por ĉifri saldojn kaj translokigi sumojn en Zether El Gamal. Ĝi funkcias jene. Kiam Alice volas sendi Bob b moneroj laŭ adreso (ĝia publika ŝlosilo) Y, ŝi elektas hazardan nombron r kaj ĉifras la kvanton:

Pri anonimeco en konto-bazitaj blokĉenoj
kie C - ĉifrita kvanto, D - helpvaloro necesa por deĉifri ĉi tiun kvanton, G - fiksa punkto sur la elipsa kurbo, kiam multobligite per la sekreta ŝlosilo, la publika ŝlosilo estas akirita.

Kiam Bob ricevas ĉi tiujn valorojn, li simple aldonas ilin al sia ĉifrita bilanco en la sama maniero, tial ĉi tiu skemo estas oportuna.

Simile, Alico subtrahas la samajn valorojn de sia ekvilibro, nur kiel Y uzas vian publikan ŝlosilon.

Kaŝi la ricevanton kaj sendinto

Miksi "produktaĵoj" en UTXO devenas de la fruaj tagoj de kriptaj moneroj kaj helpas kaŝi la sendinton. Por fari tion, la sendinto mem, kiam li faras translokigon, kolektas hazardajn "produktaĵojn" en la blokĉeno kaj miksas ilin kun la sia propra. Poste, li subskribas la "produktaĵojn" kun ringa subskribo - ĉifrika mekanismo kiu permesas al li konvinki la kontrolilon ke la moneroj de la sendinto ĉeestas inter la "produktaĵoj" implikitaj. La miksitaj moneroj mem, kompreneble, ne estas elspezitaj.

Tamen, ni ne povos generi falsajn elirojn por kaŝi la ricevanton. Tial, en UTXO, ĉiu "eligo" havas sian propran unikan adreson, kaj ĝi estas kriptografie ligita al la adreso de la ricevanto de ĉi tiuj moneroj. Nuntempe, ne ekzistas maniero identigi la rilaton inter la unika eliga adreso kaj la ricevadreso sen scii ĝiajn sekretajn ŝlosilojn.

En la konto-bazita modelo, ni ne povas uzi unufojajn adresojn (alie ĝi jam estos modelo de "elirejoj"). Tial, la ricevanto kaj sendinto devas esti miksitaj inter aliaj kontoj en la blokĉeno. En ĉi tiu kazo, ĉifritaj 0-moneroj estas ŝulditaj de la miksitaj kontoj (aŭ 0 estas aldonitaj se la ricevanto estas miksita), sen fakte ŝanĝi ilian realan ekvilibron.

Ĉar kaj la sendinto kaj la ricevanto ĉiam havas konstantan adreson, fariĝas necese uzi la samajn grupojn por miksado dum transdono al la samaj adresoj. Estas pli facile rigardi ĉi tion kun ekzemplo.

Ni diru, ke Alicio decidas fari kontribuon al la bonfarado de Bob, sed preferas ke la translokigo restu anonima al ekstera observanto. Tiam, por alivesti sin en la sendintokampo, ŝi ankaŭ eniras la kontojn pri Adamo kaj Adele. Kaj por kaŝi Bob, aldonu la kontojn de Ben kaj Bill en la kampon de ricevanto. Farante la venontan kontribuon, Alice decidis skribi Alex kaj Amandan apud ŝi, kaj Bruce kaj Benjen apud Bob. En ĉi tiu kazo, kiam oni analizas la blokĉenon, en ĉi tiuj du transakcioj estas nur unu intersekciĝanta paro de partoprenantoj - Alice kaj Bob, kiu senanonimigas ĉi tiujn transakciojn.

Pri anonimeco en konto-bazitaj blokĉenoj

Transakciaj vetkuroj

Kiel ni jam menciis, por kaŝi vian saldon en kont-bazitaj sistemoj, la uzanto ĉifras sian saldon kaj la transigan kvanton. Samtempe, li devas pruvi, ke la saldo sur lia konto restas nenegativa. La problemo estas, ke kreante transakcion, la uzanto konstruas pruvon pri sia nuna konta stato. Kio okazas se Bob sendas transakcion al Alico, kaj ĝi estas akceptita antaŭ tiu sendita de Alico? Tiam la transakcio de Alico estos konsiderata nevalida, ĉar la pruvo de ekvilibro estis konstruita antaŭ ol la transakcio de Bob estis akceptita.

Pri anonimeco en konto-bazitaj blokĉenoj

La unua decido, kiu venas en tia situacio, estas frostigi la konton ĝis la transakcio efektiviĝos. Sed ĉi tiu aliro ne taŭgas, ĉar krom la komplekseco de solvi tian problemon en distribuita sistemo, en anonima skemo ne estos klare, kies konton bloki.

Por solvi ĉi tiun problemon, la teknologio apartigas envenantajn kaj elirantajn transakciojn: elspezado havas tujan efikon sur la bilanco, dum kvitancoj havas malfruan efikon. Por fari tion, la koncepto de "epoko" estas enkondukita - grupo de blokoj de fiksa grandeco. La nuna "epoko" estas determinita dividante la blokalton per la grupgrandeco. Dum prilaborado de transakcio, la reto tuj ĝisdatigas la bilancon de la sendinto kaj konservas la financojn de la ricevanto en stoka tanko. La akumulitaj financoj estas disponigitaj al la pagito nur kiam nova "erao" komenciĝas.

Kiel rezulto, la uzanto povas sendi transakciojn sendepende de kiom ofte oni ricevas financojn (laŭ lia saldo permesas, kompreneble). La epoka grandeco estas determinita surbaze de kiom rapide blokoj disvastiĝas tra la reto kaj kiom rapide transakcio eniras blokon.

Ĉi tiu solvo funkcias bone por konfidencaj translokigoj, sed kun anonimaj transakcioj, kiel ni vidos poste, ĝi kreas gravajn problemojn.

Protekto kontraŭ ripetaj atakoj

En konto-bazitaj blokĉenoj, ĉiu transakcio estas subskribita de la privata ŝlosilo de la sendinto, kiu konvinkas la kontrolilon, ke la transakcio ne estis modifita kaj estis kreita de la posedanto de ĉi tiu ŝlosilo. Sed kio se atakanto, kiu aŭskultis la transsendokanalon, kaptas ĉi tiun mesaĝon kaj sendas ĝuste la saman duan? La kontrolisto kontrolos la subskribon de la transakcio kaj estos konvinkita pri ĝia aŭtoreco, kaj la reto denove forigos la saman kvanton el la saldo de la sendinto.

Ĉi tiu atako estas nomita ripetatako. En la modelo UTXO, tiaj atakoj ne gravas, ĉar la atakanto provos uzi elspezitajn elirojn, kiuj en si mem ne validas kaj estas malakceptita de la reto.

Por malhelpi ĉi tion okazi, kampo kun hazardaj datumoj estas konstruita en la transakcion, kiu estas nomita nonce aŭ simple "salo". Reprezentante transakcion kun salo, la kontrolisto rigardas ĉu la nonce estis uzita antaŭe kaj, se ne, konsideras la transakcion valida. Por ne konservi la tutan historion de uzantaj noncoj en la blokĉeno, kutime en la unua transakcio ĝi estas egala al nulo, kaj poste pliigita je unu. La reto povas nur kontroli, ke la nonce de la nova transakcio diferencas de la antaŭa unuope.

En la anonima transiga skemo, ekestas la problemo validigi transakciajn noncojn. Ni ne povas eksplicite ligi la nonce al la adreso de la sendinto, ĉar, evidente, tio senanonimigas la transdonon. Ni ankaŭ ne povas aldoni unu al la noncoj de ĉiuj partoprenantaj kontoj, ĉar ĉi tio povas konflikti kun aliaj translokigoj procesitaj.

La aŭtoroj de Zether proponas generi la nonce kriptografie, depende de la "epoko". Ekzemple:

Pri anonimeco en konto-bazitaj blokĉenoj
estas x estas la sekreta ŝlosilo de la sendinto, kaj Gepoch — plia generatoro por la epoko, akirita per hakado de ŝnuro de la formo 'Zether + '. Nun la problemo ŝajnas esti solvita - ni ne malkaŝas la noncon de la sendinto kaj ne malhelpas la noncon de neengaĝitaj partoprenantoj. Sed ĉi tiu aliro trudas seriozan limigon: unu konto povas sendi ne pli ol unu transakcion por "epoko". Ĉi tiu problemo, bedaŭrinde, restas nesolvita, kaj nuntempe faras la anoniman version de Zether, laŭ nia opinio, apenaŭ taŭga por uzo.

La Komplekseco de Nulaj Scio-Pruvoj

En UTXO, la sendinto devas pruvi al la reto, ke li ne elspezas negativan kvanton, alie eblos generi novajn monerojn el la aero (kial tio eblas, ni skribis en unu el la antaŭaj). artikoloj). Kaj ankaŭ subskribu la "enigaĵojn" per ringa subskribo por pruvi, ke inter la miksitaj moneroj estas moneroj, kiuj apartenas al li.

En la anonima versio de la konto-bazita blokĉeno, la esprimoj por pruvo estas multe pli kompleksaj. La sendinto pruvas ke:

  1. La sendita kvanto estas pozitiva;
  2. La bilanco restas nenegativa;
  3. La sendinto ĝuste ĉifris la transigajn sumojn (inkluzive de nulo);
  4. La bilanco sur la pesilo ŝanĝiĝas nur por la sendinto kaj la ricevanto;
  5. La sendinto posedas la privatan ŝlosilon al sia konto kaj li fakte estas en la listo de sendintoj (inter tiuj implikitaj);
  6. La Nonce uzata en la transakcio estas kunmetita ĝuste.

Por tia kompleksa pruvo, la aŭtoroj uzas miksaĵon veŝtoj (unu el la aŭtoroj, cetere, partoprenis en ĝia kreado) kaj Sigma protokolo, kiuj estas nomitaj Sigma-kugloj. Formala pruvo de tia deklaro estas sufiĉe malfacila tasko, kaj ĝi multe limigas la nombron da homoj volantaj efektivigi la teknologion.

Kio en la fino?

Laŭ nia opinio, la parto de Zether, kiu alportas privatecon al kont-bazitaj blokĉenoj, povas esti uzata nun. Sed nuntempe, la anonima versio de la teknologio trudas gravajn limigojn al ĝia uzo, kaj ĝian kompleksecon al ĝia efektivigo. Tamen oni ne rabatu, ke la aŭtoroj publikigis ĝin nur antaŭ kelkaj monatoj, kaj eble iu alia trovos solvon al la hodiaŭaj problemoj. Post ĉio, jen kiel oni faras scienco.

fonto: www.habr.com

Aldoni komenton