Kemi kemi interesuar prej kohĂ«sh mbi temĂ«n e anonimitetit nĂ« kriptovaluta dhe pĂ«rpiqemi tĂ« ndjekim zhvillimin e teknologjive nĂ« kĂ«tĂ« fushĂ«. NĂ« artikujt tanĂ«, kemi shqyrtuar nĂ« detaje parimet e funksionimit nĂ« Monero, si dhe kemi realizuar teknologji qĂ« ekzistojnĂ« nĂ« kĂ«tĂ« fushĂ«. MegjithatĂ«, tĂ« gjitha kriptovalutat anonime deri mĂ« sot janĂ« ndĂ«rtuar mbi modelin e tĂ« dhĂ«nave tĂ« propozuar nga Bitcoin â Unspent Transaction Output (UTXO). PĂ«r blockchain-et e bazuara nĂ« llogari si Ethereum, zgjidhjet ekzistuese pĂ«r realizimin e anonimitetit dhe konfidencialitetit (p.sh., ose ) kanĂ« tentuar tĂ« pĂ«rsĂ«risin modelin UTXO nĂ« kontratat e zgjuara.
Në shkurt 2019, një grup kërkuesish nga Universiteti i Stanfordit dhe Visa Research publikuar «Zether: Drejt privatësisë në botën e kontratave të zgjuara». Autorët për herë të parë ofruan një qasje për sigurimin e anonimitetit në blockchain-et e bazuara në llogari dhe paraqitën dy variante të kontratës së zgjuar: për transaksione konfidenciale (fshehja e balancit dhe shumave të transfertave) dhe anonime (fshehja e marrësit dhe dërguesit). Ne e konsiderojmë teknologjinë e propozuar interesante dhe do të donim të ndanim strukturën e saj, si dhe të flasim për arsyen pse problemi i anonimitetit në blockchain-et e bazuara në llogari konsiderohet shumë i komplikuar dhe nëse autorët e zgjidhën atë plotësisht.
Për strukturën e këtyre modeleve të dhënash
Në modelin UTXO, një transaksion përbëhet nga "hyrje" dhe "dalje". Një analog direkt i "daljeve" janë banknotat në portofolin tuaj: çdo "dalje" ka një nominal të caktuar. Kur paguani dikë (krijoni një transaksion), ju shpenzoni një ose më shumë "dalje", duke u bërë kështu "hyrje" të transaksionit, dhe blockchain-i i etiketon ato si të shpenzuara. Ndërkohë, marrësi i pagesës tuaj (ose vetë ju, nëse ju nevojitet kthimi) merr "daljet" e sapo krijuara. Kjo mund të ilustrohet skematikisht si vijon:

Blockchain-et e bazuara në llogari janë ndërtuar pak a shumë si llogaria juaj bankare. Ato operojnë vetëm me shumën në llogarinë tuaj dhe shumën e transfertës. Kur transferoni një shumë nga llogaria juaj, ju nuk shkurtoni asnjë "dalje", rrjeta nuk ka nevojë të mbajë mend se cilat monedha janë shpenzuar dhe cilat jo. Në rastin më të thjeshtë, verifikimi i transaksionit reduktohet në verifikimin e nënshkrimit të dërguesit dhe shumës në bilancin e tij:

Analiza e teknologjisë
Më pas do të flasim për mënyrën se si Zether fsheh shumat e transaksioneve, marrësin dhe dërguesin. Gjatë përshkrimit të parimeve të funksionimit të tij, do të theksojmë ndryshimet midis versionit të tij konfidencial dhe atij anonim. Duke qenë se është shumë më e lehtë të sigurohet konfidencialiteti në blockchain-et me llogari, disa nga kufizimet që vendosen nga anonimização do të jenë të panevojshme për versionin konfidencial të teknologjisë.
Fshehja e bilanceve dhe shumave të transferimeve
Për enkriptimin e bilanceve dhe shumave të transferimeve në Zether përdoret një skemë enkriptuese . Ajo funksionon si më poshtë. Kur Alice dëshiron t'i dërgojë Bob-it b monedha në adresën (çelësi i tij publik) Y, ajo zgjedh një numër të rastësishëm r dhe enkripton shumën:

ku C â shuma e enkriptuar, D â njĂ« vlerĂ« ndihmĂ«se, e nevojshme pĂ«r tĂ« dekoduar kĂ«tĂ« shumĂ«, G â njĂ« pikĂ« fikse nĂ« kurbĂ«n eliptike, tĂ« cilat, kur mnohen me çelĂ«sin sekret, japin çelĂ©sin publik.
Kur Bob merr këto vlera, ai thjesht i shton ato në bilancin e tij, i cili është enkriptuar po ashtu. Kjo është çfarë e bën këtë skemë të dobishme.
Në mënyrë analogjike, Alice heq këto vlera nga bilanci i saj, duke përdorur çelësin e saj publik si Y të përdorur.
Fshehja e marrësit dhe dërguesit
Mashimi i "daljeve" nĂ« UTXO ka filluar qĂ« nĂ« fillimet e monedhave kriptografike dhe ndihmon nĂ« fshehjen e dĂ«rguesit. PĂ«r kĂ«tĂ«, vetĂ« dĂ«rguesi gjatĂ« kryerjes sĂ« transferimit zgjedh "dalje" tĂ« rastĂ«sishme nĂ« blockchain dhe i mashon ato me tĂ« tijat. Pastaj nĂ«nshkruan "daljet" me njĂ« nĂ«nshkrim unazĂ« â njĂ« mekanizĂ«m kriptografik qĂ« lejon tĂ« bindet verifikuesi se midis "daljeve" tĂ« mashuara janĂ« monedhat e dĂ«rguesit. Monedhat e mashuara, natyrisht, nuk shpenzohen.
Megjithatë, për të fshehur marrësin nuk do të mund të gjenerojmë "dalje" të rreme. Prandaj, në UTXO, çdo "dalje" ka një adresë unike dhe ajo është e lidhur me adresën e marrësit të këtyre monedhave në mënyrë kriptografike. Deri më tani nuk ka mënyrë për të zbuluar lidhjen mes adresës unike "dalje" dhe adresës së marrësit pa ditur çelësat e tij sekretë.
Në modelin e bazuar në llogari, nuk mund të përdorim adresa njëherësh (ndryshe do të ishte modeli i "daljeve"). Prandaj, prindërit dhe dërguesit duhet të kombinohen me llogari të tjera në blockchain. Në këtë rast, llogaritë e përziera humbin 0 monedha të enkriptuara (ose shtohet 0 - në rastin e përzierjes së prindit), duke mos ndryshuar realisht bilancin e tyre.
Duke qenë se si dërguesi ashtu edhe prindërit gjithmonë kanë një adresë të përhershme, krijohet nevoja që gjatë dërgesave në të njëjtat adresa të përdoren të njëjtat grupe për përzierje. Më lehtë do ta shohim këtë me një shembull.
Supozoni se Aliça ka vendosur të bëjë një kontribuim në fondacionin humanitar të Bobit, por preferon që ky transfert të mbetet anonim për vëzhguesit e jashtëm. Atëherë, për të maskuar veten në fushën e dërguesit, ajo shkruan llogaritë e Adamit dhe Adelës. Për të fshehur Bobin - në fushën e prindit ajo shton llogaritë e Benit dhe Billit. Duke bërë kontributin e ardhshëm, Aliça vendosi të shkruajë përkrah vetes Alekshin dhe Amandën, ndërsa përkrah Bobit - Brensin dhe Benxhen. Në këtë rast, gjatë analizës së blockchain, në këto dy transaksione do të ketë vetëm një çift të përbashkët pjesëmarrësish - Aliça dhe Bobi, që i de-anonimizon këto transaksione.

Garazhet e transaksioneve
Siç e pĂ«rmendĂ«m, pĂ«r tĂ« fshehur bilancin e tij nĂ« sistemet e bazuara nĂ« llogari, pĂ«rdoruesi enkripton bilancin e tij dhe shumĂ«n e dĂ«rgesĂ«s. NĂ« kĂ«tĂ« rast, ai duhet tĂ« dĂ«mshpĂ«rblejĂ« qĂ« ecka e tij mbetet jo negative. Problemi qĂ«ndron nĂ« faktin se, duke formuar njĂ« transaksion, pĂ«rdoruesi ndihmon nĂ« ndĂ«rtimin e provĂ«s nĂ« lidhje me gjendjen e tij aktuale tĂ« llogarisĂ«. ĂfarĂ« do tĂ« ndodhte, nĂ«se Bobi dĂ«rgon njĂ« transaksion Aliçës, dhe ai pranohet pĂ«rpara se transaksioni i Aliçës tĂ« dĂ«rgohet? Aty do tĂ« mendohet se transaksioni i Aliçës Ă«shtĂ« i pavlefshĂ«m, pasi prova e bilancit Ă«shtĂ« ndĂ«rtuar para pranimit tĂ« transaksionit tĂ« Bobit.

Zgjidhja e parë që vjen në një situatë të tillë është të ngrije llogarinë deri në realizimin e transaksionit. Por ky qasje nuk është e përshtatshme, pasi përveç vështirësisë për të zgjidhur një problem të tillë në një sistem të shpërndarë, në një skemë anonime nuk do të ishte e qartë se çfarë llogarie duhet të bllokohet.
PĂ«r tĂ« zgjidhur kĂ«tĂ« problem, teknologjia ndan transaksionet hyrĂ«se dhe dalĂ«se: shpenzimet kanĂ« njĂ« effekt tĂ« menjĂ«hershĂ«m nĂ« gjendjen e bilancit, ndĂ«rsa tĂ« ardhurat kanĂ« njĂ« efekt tĂ« shtyrĂ«. PĂ«r kĂ«tĂ«, futet koncepti i "epokave" â grupe bllokesh tĂ« madhĂ«sisĂ« fikse. "Epoka" aktuale pĂ«rcaktohet nga ndarja e lartĂ«sisĂ« sĂ« bllokut me madhĂ«sinĂ« e grupit. Duke pĂ«rpunuar njĂ« transaksion, rrjeti pĂ«rditĂ«son bilancin e dĂ«rguesit menjĂ«herĂ«, ndĂ«rsa fondet e marrĂ«sit i grumbullon nĂ« njĂ« depozitĂ«. Fondet e grumbulluara kalojnĂ« nĂ« dispozitĂ« tĂ« marrĂ«sit tĂ« pagesĂ«s vetĂ«m kur ndodh njĂ« "epokĂ«" e re.
Si rezultat, përdoruesi mund të dërgojë transaksione pavarësisht nga sa shpesh merr fonde (sa lejon bilanci i tij, sigurisht). Madhësia e epokës përcaktohet në bazë të shpejtësisë së shpërndarjes së bllokëve në rrjet dhe sa shpejt një transaksion arrin një bllok.
Ky zgjidhje funksionon mirë për transferimet e fshehta, megjithatë me transaksionet anonime, siç do të shohim më vonë, ajo krijon probleme të rënda.
Mbrojtja nga sulmet replay
Në blockchain-in e bazuar në llogari, çdo transaksion nënshkruhet me çelësin privat të dërguesit, duke e bindur verifikuesin se transaksioni nuk është modifikuar dhe është krijuar nga pronari i këtij çelësi. Por çfarë ndodh nëse një sulmues, i cili po përgjon kanalin e transmetimit, kap këtë mesazh dhe dërgon një të dytë të njëjtë? Verifikuesi do të kontrollojë nënshkrimin e transaksionit dhe do të bindet për autorësinë e tij, dhe rrjeti do të heqë të njëjtën shumë nga bilanci i dërguesit përsëri.
Ky sulm quhet sulm replay. Në modelin UTXO, këto sulme nuk janë të rëndësishme, pasi sulmuesi do të përpiqet të përdorë daljet e shpenzuara, që vetë nuk është valide dhe do të refuzohet nga rrjeti.
Për të parandaluar që kjo të ndodhë, në transaksion vendoset një fushë me të dhëna rastësore, të cilën e quajnë nonce ose thjesht "kripë". Kur dërgohet përsëri një transaksion me "kripë", verifikuesi kontrollon nëse ky nonce është përdorur më parë dhe, nëse jo, e konsideron këtë transaksion si të vlefshëm. Për të mos ruajtur në blockchain të gjithë historinë e noncëve të përdoruesve, zakonisht në transaksionin e parë pranohet se ai është i barabartë me zero, dhe pastaj rritet me një. Rrjeti mbetet vetëm të verifikojë se nonce i transaksionit të ri është ndryshe nga ai i mëparshëm me një.
Në një skemë anonime të transfertave, shfaqet problemi i validimit të nonce-ve të transaksioneve. Ne nuk mund ta lidhim nonce-n në mënyrë të qartë me adresën e dërguesit, pasi kjo do ta deanonimizonte transferimin. Gjithashtu, nuk mund të shtojmë njësi në nonce-t e të gjitha llogarive të përfshira, pasi kjo mund të krijojë konflikte me transfertat e tjera në proces.
Autoret e Zether propozojnĂ« tĂ« gjenerojnĂ« nonce nĂ« mĂ«nyrĂ« kriptografike â nĂ« varĂ«si tĂ« "epokĂ«s". PĂ«r shembull:

KĂ«tu x â çelĂ«si sekret i dĂ«rguesit, dhe Gepoch â njĂ« gjenerator shtesĂ« pĂ«r epokĂ«n, qĂ« merret duke e hash-uar vargun e tipit 'Zether + '. Tani duket se problemi zgjidhet â ne nuk zgjerojmĂ« nonce-n e dĂ«rguesit dhe nuk ndĂ«rhyjmĂ« nĂ« nonce-t e pjesĂ«marrĂ«sve jo tĂ« prekur. Por kjo qasje vendos njĂ« kufizim tĂ« rĂ«ndĂ«sishĂ«m: njĂ« llogari mund tĂ« dĂ«rgojĂ« mĂ« shumĂ« se njĂ« transaksion nĂ« "epokĂ«". Ky problem, fatkeqĂ«sisht, mbetet i pa zgjidhur dhe, pĂ«r momentin, e bĂ«n versionin anonim tĂ« Zether, sipas mendimit tonĂ«, gati tĂ« pa pĂ«rdorshĂ«m.
Vështirësia e dëshmive me ndarjen zero
Në UTXO, dërguesi duhet të provokojë rrjetin se nuk po ndan një shumë negative, përndryshe bëhet e mundur gjenerimi i monedhave të reja nga ajri (pse kjo është e mundur, ne e kemi shkruar në një nga ). Po ashtu, ai duhet të nënshkruajë "hyrjet" me një nënshkrim rrethor, për të provuar se midis monedhave të përziera ka fonde që i përkasin atij.
Në versionin anonim të blockchain-it të bazuar në llogari, shprehjet për provimin bëhen shumë më të komplikuara. Dërguesi provon se:
- Shuma e dërguar është pozitive;
- Bilanci mbetet jo negativ;
- Dërguesi ka koduar saktë shumën e transfertave (përfshirë zero);
- Bilanci ndryshon vetëm për dërguesin dhe marrësin;
- Dërguesi zotëron çelësin sekret të llogarisë së tij dhe ai me të vërtetë është në listën e dërguesve (mes atyre të përziera);
- Nonce, i përdorur në transaksion, është përbërë saktë.
Për një provim kaq të komplikuar, autorët përdorin një përzierje (një nga autorët, për të thënë të vërtetën, ka marrë pjesë në krijimin e saj) dhe , e cila quhet Sigma-bullets. Dëshmia formale e një pohimi të tillë është një detyrë mjaft e vështirë, dhe ajo kufizon ndjeshëm numrin e atyre që duan të angazhohen në implementimin e teknologjisë.
ĂfarĂ« nĂ« pĂ«rfundim?
Sipas mendimit tonĂ«, pjesa Zether, e cila sjell privatĂ«sinĂ« nĂ« blockchain-Ă«t e bazuar nĂ« llogari, mund tĂ« pĂ«rdoret tashmĂ«. Por aktualisht, versioni anonim i teknologjisĂ« vendos kufizime tĂ« rĂ«nda nĂ« pĂ«rdorimin e saj, dhe kompleksiteti i saj â nĂ« zbatim. MegjithatĂ«, nuk duhet tĂ« neglizhojmĂ« faktin se autorĂ«t e publikuan atĂ« vetĂ«m disa muaj mĂ« parĂ«, dhe ndoshta dikush tjetĂ«r do tĂ« gjejĂ« njĂ« zgjidhje pĂ«r problemet aktuale. Sepse kjo Ă«shtĂ« ajo siç bĂ«het shkenca.
Burimi: habr.com
