Par anonimitāti uz kontu balstītās blokķēdes

MÅ«s jau ilgu laiku interesē anonimitātes tēma kriptovalÅ«tās un cenÅ”amies sekot lÄ«dzi tehnoloÄ£iju attÄ«stÄ«bai Å”ajā jomā. Savos rakstos mēs jau esam detalizēti apsprieduÅ”i darbÄ«bas principus konfidenciāli darÄ«jumi Monero, un arÄ« veica salÄ«dzinoÅ”s pārskats tehnoloÄ£ijas, kas pastāv Å”ajā jomā. Tomēr visas anonÄ«mās kriptovalÅ«tas mÅ«sdienās ir balstÄ«tas uz Bitcoin piedāvāto datu modeli ā€“ Unspent Transaction Output (turpmāk UTXO). Uz kontu balstÄ«tām blokķēdēm, piemēram, Ethereum, esoÅ”ie risinājumi anonimitātes un konfidencialitātes ievieÅ”anai (piemēram, Mobius vai Aztec) mēģināja atkārtot UTXO modeli viedajos lÄ«gumos.

2019. gada februārÄ« pētnieku grupa no Stenfordas Universitātes un Visa Research izlaists priekÅ”druka "Zether: ceļā uz privātumu viedo lÄ«gumu pasaulē." Autori bija pirmie, kas ierosināja pieeju anonimitātes nodroÅ”ināŔanai uz kontu balstÄ«tās blokķēdes, un iepazÄ«stināja ar divām viedā lÄ«guma versijām: konfidenciāliem (bilances un pārskaitÄ«juma summu slēpÅ”ana) un anonÄ«miem (saņēmēja un sÅ«tÄ«tāja slēpÅ”ana) darÄ«jumiem. Mēs uzskatām, ka piedāvātā tehnoloÄ£ija ir interesanta, un mēs vēlētos dalÄ«ties ar tās dizainu, kā arÄ« runāt par to, kāpēc anonimitātes problēma uz kontu balstÄ«tās blokķēdes tiek uzskatÄ«ta par ļoti sarežģītu un vai autoriem izdevās to atrisināt pilnÄ«bā.

Par Ŕo datu modeļu struktūru

UTXO modelÄ« transakcija sastāv no ā€œievadiemā€ un ā€œizvadiemā€. TieÅ”s ā€œizejuā€ analogs ir jÅ«su makā esoÅ”ie rēķini: katrai ā€œizejaiā€ ir noteikta nominālvērtÄ«ba. Maksājot kādam (veidojot darÄ«jumu), jÅ«s iztērējat vienu vai vairākas ā€œizejasā€, tādā gadÄ«jumā tās kļūst par darÄ«juma ā€œievadiā€, un blokķēde atzÄ«mē tās kā iztērētas. Å ajā gadÄ«jumā jÅ«su maksājuma saņēmējs (vai jÅ«s pats, ja nepiecieÅ”amas izmaiņas) saņem no jauna Ä£enerētos ā€œizejasā€. Shematiski to var attēlot Ŕādi:

Par anonimitāti uz kontu balstītās blokķēdes

Uz kontu balstÄ«tas blokķēdes ir strukturētas lÄ«dzÄ«gi jÅ«su bankas kontam. Tie attiecas tikai uz jÅ«su kontā esoÅ”o summu un pārskaitÄ«juma summu. Pārskaitot kādu summu no sava konta, jÅ«s nesadedzinat nekādas ā€œizejasā€, tÄ«klam nav jāatceras, kuras monētas ir iztērētas un kuras nav. VienkārŔākajā gadÄ«jumā darÄ«juma pārbaude ir saistÄ«ta ar sÅ«tÄ«tāja paraksta un viņa bilancē esoŔās summas pārbaudi:

Par anonimitāti uz kontu balstītās blokķēdes

Tehnoloģiju analīze

Tālāk mēs runāsim par to, kā Zether slēpj darÄ«juma summu, saņēmēju un sÅ«tÄ«tāju. Aprakstot tās darbÄ«bas principus, atzÄ«mēsim atŔķirÄ«bas konfidenciālajā un anonÄ«majā versijā. Tā kā uz kontu balstÄ«tās blokķēdes ir daudz vienkārŔāk nodroÅ”ināt konfidencialitāti, daži no anonimizācijas noteiktajiem ierobežojumiem nebÅ«s aktuāli tehnoloÄ£ijas konfidenciālajai versijai.

Atlikumu un pārskaitÄ«jumu summu slēpÅ”ana

Å ifrÄ“Å”anas shēma tiek izmantota, lai Å”ifrētu atlikumus un pārsÅ«tÄ«tu summas Zether El Gamal. Tas darbojas Ŕādi. Kad Alise vēlas nosÅ«tÄ«t Bobu b monētas pēc adreses (tās publiskā atslēga) Y, viņa izvēlas nejauÅ”u skaitli r un Å”ifrē summu:

Par anonimitāti uz kontu balstītās blokķēdes
kur C - Å”ifrēta summa, D - palÄ«gvērtÄ«ba, kas nepiecieÅ”ama Ŕīs summas atÅ”ifrÄ“Å”anai, G - fiksēts punkts eliptiskajā lÄ«knē, reizinot ar slepeno atslēgu, tiek iegÅ«ta publiskā atslēga.

Kad Bobs saņem Ŕīs vērtÄ«bas, viņŔ vienkārÅ”i pievieno tās savam Å”ifrētajam atlikumam tādā paŔā veidā, tāpēc Ŕī shēma ir ērta.

Tāpat Alise no sava bilances atņem tās paÅ”as vērtÄ«bas, tikai kā Y izmanto jÅ«su publisko atslēgu.

Saņēmēja un sÅ«tÄ«tāja slēpÅ”ana

ā€œIzvadesā€ sajaukÅ”ana UTXO ir datēta ar kriptovalÅ«tu pirmsākumiem un palÄ«dz slēpt sÅ«tÄ«tāju. Lai to izdarÄ«tu, pats sÅ«tÄ«tājs, veicot pārskaitÄ«jumu, savāc nejauÅ”as ā€œizejasā€ blokķēdē un sajauc tos ar savējo. Pēc tam viņŔ paraksta ā€œizejasā€ ar gredzenveida parakstu ā€” kriptogrāfijas mehānismu, kas viņam ļauj pārliecināt pārbaudÄ«tāju, ka sÅ«tÄ«tāja monētas ir starp iesaistÄ«tajām ā€œizvadēmā€. PaÅ”as jauktās monētas, protams, netiek iztērētas.

Tomēr mēs nevarēsim Ä£enerēt viltotus rezultātus, lai paslēptu adresātu. Tāpēc UTXO katrai ā€œizejaiā€ ir sava unikāla adrese, un tā ir kriptogrāfiski saistÄ«ta ar Å”o monētu saņēmēja adresi. PaÅ”laik nav iespējams noteikt attiecÄ«bas starp unikālo izvades adresi un saņēmēja adresi, nezinot tās slepenās atslēgas.

Uz kontu balstÄ«tajā modelÄ« mēs nevaram izmantot vienreizējas adreses (pretējā gadÄ«jumā tas jau bÅ«s ā€œizejuā€ modelis). Tāpēc adresāts un sÅ«tÄ«tājs ir jāsajauc starp citiem blokķēdes kontiem. Å ajā gadÄ«jumā no jauktajiem kontiem tiek debetēta Å”ifrēta 0 monēta (vai tiek pievienota 0, ja saņēmējs ir jaukts), faktiski nemainot to reālo atlikumu.

Tā kā gan sÅ«tÄ«tājam, gan saņēmējam vienmēr ir pastāvÄ«ga adrese, pārsÅ«tot uz vienām un tām paŔām adresēm, miksÄ“Å”anai ir jāizmanto vienas un tās paÅ”as grupas. To ir vieglāk aplÅ«kot ar piemēru.

Pieņemsim, ka Alise nolemj dot ieguldÄ«jumu Boba labdarÄ«bā, bet dod priekÅ”roku, lai pārsÅ«tÄ«Å”ana bÅ«tu anonÄ«ma ārējam novērotājam. Tad, lai maskētos sÅ«tÄ«tāja laukā, viņa ieiet arÄ« Ādama un Adeles kontos. Un, lai paslēptu Bobu, adresāta laukā pievienojiet Bena un Bila kontus. Sniedzot nākamo ieguldÄ«jumu, Alise nolēma viņai blakus uzrakstÄ«t Aleksu un Amandu, bet blakus Bobam BrÅ«su un Benjenu. Å ajā gadÄ«jumā, analizējot blokķēdi, Å”ajos divos darÄ«jumos ir tikai viens krustojoÅ”s dalÄ«bnieku pāris - Alise un Bobs, kas padara Å”os darÄ«jumus anonimizētus.

Par anonimitāti uz kontu balstītās blokķēdes

Darījumu sacīkstes

Kā jau minējām, lai paslēptu savu bilanci uz kontu balstÄ«tās sistēmās, lietotājs Å”ifrē savu bilanci un pārskaitÄ«juma summu. Tajā paŔā laikā viņam jāpierāda, ka viņa konta atlikums joprojām nav negatÄ«vs. Problēma ir tā, ka, veidojot darÄ«jumu, lietotājs izveido pierādÄ«jumu par sava tekoŔā konta statusu. Kas notiek, ja Bobs nosÅ«ta Alisei darÄ«jumu un tas tiek pieņemts pirms Alises nosÅ«tÄ«tā? Tad Alises darÄ«jums tiks uzskatÄ«ts par nederÄ«gu, jo lÄ«dzsvara apliecinājums tika izveidots pirms Boba darÄ«juma pieņemÅ”anas.

Par anonimitāti uz kontu balstītās blokķēdes

Pirmais lēmums, kas tiek pieņemts Ŕādā situācijā, ir konta iesaldÄ“Å”ana lÄ«dz darÄ«juma veikÅ”anai. Bet Ŕī pieeja nav piemērota, jo papildus Ŕādas problēmas risināŔanas sarežģītÄ«bai sadalÄ«tā sistēmā anonÄ«mā shēmā nebÅ«s skaidrs, kura kontu bloķēt.

Lai atrisinātu Å”o problēmu, tehnoloÄ£ija atdala ienākoÅ”os un izejoÅ”os darÄ«jumus: tēriņiem ir tÅ«lÄ«tēja ietekme uz bilanci, savukārt ieņēmumiem ir aizkavēta ietekme. Lai to izdarÄ«tu, tiek ieviests jēdziens ā€œepohaā€ - noteikta izmēra bloku grupa. PaÅ”reizējo "laikmetu" nosaka, dalot bloka augstumu ar grupas lielumu. Apstrādājot darÄ«jumu, tÄ«kls nekavējoties atjaunina sÅ«tÄ«tāja bilanci un uzglabā saņēmēja lÄ«dzekļus uzglabāŔanas tvertnē. Uzkrātie lÄ«dzekļi tiek nodoti maksājuma saņēmējam tikai tad, kad sākas jauna ā€œÄ“raā€.

Rezultātā lietotājs var nosūtīt darījumus neatkarīgi no tā, cik bieži tiek saņemti līdzekļi (protams, ciktāl to atļauj viņa bilance). Epoha lielums tiek noteikts, pamatojoties uz to, cik ātri bloki izplatās tīklā un cik ātri transakcija nonāk blokā.

Å is risinājums labi darbojas konfidenciālu pārsÅ«tÄ«Å”anu gadÄ«jumā, taču ar anonÄ«miem darÄ«jumiem, kā redzēsim vēlāk, tas rada nopietnas problēmas.

Aizsardzība pret atkārtoŔanas uzbrukumiem

Uz kontu balstÄ«tajās blokķēdēs katru darÄ«jumu paraksta sÅ«tÄ«tāja privātā atslēga, kas pārliecina pārbaudÄ«tāju, ka darÄ«jums nav mainÄ«ts un to ir izveidojis Ŕīs atslēgas Ä«paÅ”nieks. Bet ko darÄ«t, ja uzbrucējs, kurÅ” klausÄ«jās pārraides kanālu, pārtver Å”o ziņojumu un nosÅ«ta tieÅ”i to paÅ”u otro? Verificētājs pārbaudÄ«s darÄ«juma parakstu un pārliecināsies par tā autorÄ«bu, un tÄ«kls atkal norakstÄ«s tādu paÅ”u summu no sÅ«tÄ«tāja atlikuma.

Å o uzbrukumu sauc par atkārtotu uzbrukumu. UTXO modelÄ« Ŕādi uzbrukumi nav aktuāli, jo uzbrucējs mēģinās izmantot izlietotos izvadus, kas pats par sevi nav derÄ«gs un tÄ«kls tos noraida.

Lai tas nenotiktu, darÄ«jumā ir iebÅ«vēts lauks ar nejauÅ”iem datiem, ko sauc par nonce jeb vienkārÅ”i ā€œsāliā€. Atkārtoti iesniedzot darÄ«jumu ar sāli, verificētājs pārbauda, ā€‹ā€‹vai nonce ir izmantota iepriekÅ”, un, ja nē, darÄ«jumu uzskata par derÄ«gu. Lai blokķēdē netiktu saglabāta visa lietotāja nonces vēsture, parasti paŔā pirmajā darÄ«jumā tas tiek iestatÄ«ts vienāds ar nulli un pēc tam tiek palielināts par vienu. TÄ«kls var tikai pārbaudÄ«t, vai jaunā darÄ«juma nonce atŔķiras no iepriekŔējās.

AnonÄ«mās pārsÅ«tÄ«Å”anas shēmā rodas problēma ar darÄ«jumu neesÄ«bu validÄ“Å”anu. Mēs nevaram nepārprotami saistÄ«t nonce ar sÅ«tÄ«tāja adresi, jo, protams, tas padara pārsÅ«tÄ«Å”anu anonimizētu. Mēs arÄ« nevaram to pievienot visu iesaistÄ«to kontu nonces, jo tas var bÅ«t pretrunā ar citiem apstrādātajiem pārskaitÄ«jumiem.

Zether autori ierosina nonce Ä£enerēt kriptogrāfiski atkarÄ«bā no ā€œlaikaā€. Piemēram:

Par anonimitāti uz kontu balstītās blokķēdes
Å eit x ir sÅ«tÄ«tāja slepenā atslēga un Gepoch ā€” papildu Ä£enerators laikmetam, kas iegÅ«ts, jaucot virkni formā ā€œZether +ā€. Tagad Ŕķiet, ka problēma ir atrisināta - mēs neatklājam sÅ«tÄ«tāja nebijuÅ”us un neiejaucamies neiesaistÄ«to dalÄ«bnieku nonāvējumos. Taču Ŕī pieeja uzliek nopietnu ierobežojumu: viens konts var nosÅ«tÄ«t ne vairāk kā vienu darÄ«jumu vienā ā€œlaikāā€. Diemžēl Ŕī problēma joprojām nav atrisināta, un paÅ”laik Zether anonÄ«mā versija, mÅ«suprāt, nav piemērota lietoÅ”anai.

Nulles zināŔanu pierādījumu sarežģītība

UTXO gadÄ«jumā sÅ«tÄ«tājam jāpierāda tÄ«klam, ka viņŔ netērē negatÄ«vu summu, pretējā gadÄ«jumā kļūst iespējams no zila gaisa Ä£enerēt jaunas monētas (kāpēc tas ir iespējams, mēs rakstÄ«jām vienā no iepriekŔējiem raksti). Un arÄ« parakstiet ā€œievadÄ«jumusā€ ar gredzenveida parakstu, lai pierādÄ«tu, ka starp jauktajām monētām ir arÄ« viņam piederoÅ”i lÄ«dzekļi.

Uz kontu balstītās blokķēdes anonīmajā versijā pierādījumu izteicieni ir daudz sarežģītāki. Sūtītājs pierāda, ka:

  1. Nosūtītā summa ir pozitīva;
  2. Bilance paliek nenegatīva;
  3. SÅ«tÄ«tājs pareizi Å”ifrēja pārskaitÄ«juma summas (ieskaitot nulli);
  4. Bilances atlikums mainās tikai sūtītājam un saņēmējam;
  5. SÅ«tÄ«tājam pieder viņa konta privātā atslēga, un viņŔ faktiski ir sÅ«tÄ«tāju sarakstā (starp tiem, kas ir iesaistÄ«ti);
  6. Darījumā izmantotais Nonce ir sastādīts pareizi.

Šādam sarežģītam pierādÄ«jumam autori izmanto maisÄ«jumu bruņu (tā tapÅ”anā, starp citu, piedalÄ«jās viens no autoriem) un Sigma protokols, ko sauc par Sigma lodēm. Šāda paziņojuma formāls pierādÄ«jums ir diezgan grÅ«ts uzdevums, un tas ievērojami ierobežo to cilvēku skaitu, kuri vēlas ieviest tehnoloÄ£iju.

Rezultāts?

MÅ«suprāt, to Zether daļu, kas nodroÅ”ina privātumu uz kontu balstÄ«tām blokķēdēm, var izmantot jau tagad. Taču Å”obrÄ«d tehnoloÄ£ijas anonÄ«mā versija uzliek nopietnus ierobežojumus tās lietoÅ”anai un tās ievieÅ”anas sarežģītÄ«bu. Tomēr nevajadzētu noliegt, ka autori to izlaida tikai pirms dažiem mēneÅ”iem, un, iespējams, kāds cits atradÄ«s risinājumu mÅ«sdienu problēmām. Galu galā tā notiek zinātne.

Avots: www.habr.com

Pievieno komentāru