Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem

Mēs turpinām sēriju par Monero blokķēdi, un Å”odienas raksts koncentrēsies uz RingCT (Ring Confidential Transactions) protokolu, kas ievieÅ” konfidenciālus darÄ«jumus un jaunus gredzena parakstus. Diemžēl internetā ir maz informācijas par to, kā tas darbojas, un mēs centāmies Å”o robu aizpildÄ«t.

Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem

Mēs runāsim par to, kā tÄ«kls slēpj pārsÅ«tÄ«Å”anas summas, izmantojot Å”o protokolu, kāpēc viņi atteicās no klasiskajiem kriptonotes gredzena parakstiem un kā Ŕī tehnoloÄ£ija attÄ«stÄ«sies tālāk.

Tā kā Å”is protokols ir viena no vissarežģītākajām Monero tehnoloÄ£ijām, lasÄ«tājam bÅ«s nepiecieÅ”amas pamatzināŔanas par Ŕīs blokķēdes dizainu un garām ejoŔām zināŔanām par eliptiskās lÄ«knes kriptogrāfiju (lai papildinātu Ŕīs zināŔanas, varat izlasÄ«t mÅ«su grāmatas pirmās nodaļas iepriekŔējais raksts par vairāki paraksti).

RingCT protokols

Viens no iespējamiem uzbrukumiem kriptonotu valÅ«tām ir blokķēdes analÄ«ze, kuras pamatā ir zināŔanas par nosÅ«tÄ«tā darÄ«juma apjomu un laiku. Tas ļauj ievērojami saÅ”aurina meklÄ“Å”anas apgabalu, lai atrastu uzbrucēju interesējoŔās izejas. Lai aizsargātu pret Ŕādu analÄ«zi, Monero ir ieviesis anonÄ«mu transakciju protokolu, kas pilnÄ«bā slēpj pārskaitÄ«jumu apjomu tÄ«klā.

Ir vērts atzÄ«mēt, ka ideja par summu slēpÅ”anu nav jauna. Bitcoin Core izstrādātājs Gregs Maksvels bija viens no pirmajiem, kas to aprakstÄ«ja savā pants Konfidenciāli darÄ«jumi. PaÅ”reizējā RingCT ievieÅ”ana ir tās modifikācija ar iespēju izmantot zvana parakstus (neatkarÄ«gi no tā, vai bez tiem), un tāpēc tas ieguva savu nosaukumu - Ring Confidential Transactions.

Cita starpā, protokols palÄ«dz atbrÄ«voties no problēmām, kas saistÄ«tas ar putekļu izvades sajaukÅ”anu - neliela apjoma izvadi (parasti tiek saņemti darÄ«jumu izmaiņu veidā), kas radÄ«ja vairāk problēmu, nekā bija vērts.

2017. gada janvārÄ« notika Monero tÄ«kla hard fork, kas ļāva pēc izvēles izmantot konfidenciālus darÄ«jumus. Un jau tā paÅ”a gada septembrÄ« ar 6. versiju hard fork Ŕādi darÄ«jumi kļuva par vienÄ«gajiem tÄ«klā atļautajiem.

RingCT vienlaikus izmanto vairākus mehānismus: daudzslāņu saistÄ«tus spontānos anonÄ«mos grupu parakstus (Multlayered Linkable Spontaneous Anonymous Group Signature, turpmāk tekstā MLSAG), saistÄ«bu shēmu (Pedersen Commitments) un diapazona pierādÄ«jumus (Å”im terminam nav noteikta tulkojuma krievu valodā). .

RingCT protokols ievieÅ” divu veidu anonÄ«mus darÄ«jumus: vienkārÅ”us un pilnus. Maks pirmo Ä£enerē, ja darÄ«jumam tiek izmantots vairāk nekā viens ievades veids, otro - pretējā situācijā. Tie atŔķiras ar darÄ«jumu summu apstiprināŔanu un datiem, kas parakstÄ«ti ar MLSAG parakstu (par to mēs runāsim tālāk). Turklāt pilna tipa transakcijas var Ä£enerēt ar jebkādu ievades skaitu, nav bÅ«tiskas atŔķirÄ«bas. Grāmatā "No nulles lÄ«dz Monero" Å ajā sakarā tiek teikts, ka lēmums ierobežot pilna apjoma darÄ«jumus ar vienu ievadi tika pieņemts steigā un nākotnē var mainÄ«ties.

MLSAG paraksts

Atcerēsimies, kas ir parakstÄ«to darÄ«jumu ievades. Katrs darÄ«jums tērē un rada zināmus lÄ«dzekļus. LÄ«dzekļu Ä£enerÄ“Å”ana notiek, izveidojot darÄ«juma rezultātus (tieÅ”a analoÄ£ija ir rēķini), un izvade, ko darÄ«jums iztērē (galu galā, reālajā dzÄ«vē mēs tērējam banknotes), kļūst par ievadi (esiet piesardzÄ«gs, ir ļoti viegli apjukt Å”eit).

Ievade atsaucas uz vairākām izejām, bet tērē tikai vienu, tādējādi radot ā€œdÅ«mu ekrānuā€, kas apgrÅ«tina tulkoÅ”anas vēstures analÄ«zi. Ja darÄ«jumam ir vairāk nekā viena ievade, tad Ŕādu struktÅ«ru var attēlot kā matricu, kur rindas ir ievades, bet kolonnas ir jauktās izejas. Lai pierādÄ«tu tÄ«klam, ka darÄ«jums iztērē tieÅ”i tā izvadi (zina to slepenās atslēgas), ievades tiek parakstÄ«tas ar zvana parakstu. Šāds paraksts garantē, ka parakstÄ«tājs zināja slepenās atslēgas visiem jebkuras kolonnas elementiem.

Konfidenciālajos darÄ«jumos vairs neizmanto klasiskos darÄ«jumus kriptonote zvana paraksti, tie tika aizstāti ar MLSAG ā€” lÄ«dzÄ«gu viena slāņa zvana parakstu versiju, kas pielāgota vairākām ievadēm, LSAG.

Tos sauc par daudzslāņu, jo tie vienlaikus paraksta vairākas ievades, no kurām katra ir sajaukta ar vairākām citām, t.i., tiek parakstīta matrica, nevis viena rinda. Kā redzēsim vēlāk, tas palīdz ietaupīt paraksta lielumu.

ApskatÄ«sim, kā veidojas gredzena paraksts, izmantojot transakcijas piemēru, kurā tiek iztērēti 2 reāli izvadi un miksÄ“Å”anai tiek izmantoti m - 1 nejauÅ”i no blokķēdes. ApzÄ«mēsim izejas publiskās atslēgas, kuras mēs iztērējam
Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiemun attiecīgi galvenos attēlus: Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem Tādējādi mēs iegūstam lieluma matricu 2 x m. Pirmkārt, mums ir jāaprēķina tā sauktie izaicinājumi katram rezultātu pārim:
Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem
Mēs sākam aprēķinus ar izejām, kuras iztērējam, izmantojot to publiskās atslēgas:Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iemun nejauÅ”i skaitļiKonfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iemRezultātā mēs iegÅ«stam Ŕādas vērtÄ«bas:
Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iem, ko mēs izmantojam izaicinājuma aprēķināŔanai
Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iemnākamais izvadu pāris (lai bÅ«tu vieglāk saprast, ko mēs kur aizstājam, mēs esam izcēluÅ”i Ŕīs vērtÄ«bas dažādās krāsās). Visas tālāk norādÄ«tās vērtÄ«bas tiek aprēķinātas aplÄ«, izmantojot pirmajā attēlā norādÄ«tās formulas. Pēdējā lieta, kas jāaprēķina, ir izaicinājums reālu rezultātu pārim.

Kā redzam, visās kolonnās, izņemot to, kas satur reālus izvadus, tiek izmantoti nejauÅ”i Ä£enerēti skaitļiKonfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iem. Par Ļ€- kolonna mums arÄ« bÅ«s vajadzÄ«gas. PārveidosimKonfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iems:Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iem
Pats paraksts ir visu Å”o vērtÄ«bu kopums:

Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem

Pēc tam Å”ie dati tiek ierakstÄ«ti darÄ«jumā.

Kā redzam, MLSAG satur tikai vienu izaicinājumu c0, kas ļauj ietaupÄ«t uz paraksta lielumu (kas jau prasa daudz vietas). Turklāt jebkurÅ” inspektors, kurÅ” izmanto datusKonfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iem, atjauno vērtÄ«bas c1,ā€¦, cm un pārbauda toKonfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iem. Tādējādi mÅ«su gredzens ir aizvērts un paraksts ir pārbaudÄ«ts.

Pilna veida RingCT transakcijām matricai tiek pievienota vēl viena rinda ar jauktiem izvadiem, taču par to mēs runāsim tālāk.

Pedersena saistības

SaistÄ«bu shēmas (biežāk tiek lietots angļu valodas termins saistÄ«bas) tiek lietoti, lai viena puse varētu pierādÄ«t, ka zina noteiktu noslēpumu (skaitli), to faktiski neatklājot. Piemēram, jÅ«s metat uz kauliņa noteiktu skaitli, apsverat saistÄ«bas un nododat to verifikācijas pusei. Tādējādi slepenā numura izpauÅ”anas brÄ«dÄ« verificētājs patstāvÄ«gi aprēķina saistÄ«bas, tādējādi pārliecinoties, ka jÅ«s viņu neesat maldinājis.

Monero saistÄ«bas tiek izmantotas, lai slēptu pārskaitÄ«jumu summas un izmantotu izplatÄ«tāko variantu - Pedersen saistÄ«bas. Starp citu, interesants fakts - sākumā izstrādātāji ierosināja summas slēpt ar parastu sajaukÅ”anu, tas ir, pievienot izejas patvaļīgām summām, lai ieviestu nenoteiktÄ«bu, bet pēc tam pārgāja uz saistÄ«bām (tas nav fakts, ka ietaupÄ«ja darÄ«juma lielums, kā mēs redzēsim tālāk).
Kopumā apņemÅ”anās izskatās Ŕādi:
Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iemKur C ā€” paÅ”as saistÄ«bas nozÄ«me, a - slēptā summa, H ir fiksēts punkts eliptiskajā lÄ«knē (papildu Ä£enerators), un x ā€” kaut kāda patvaļīga maska, nejauÅ”i Ä£enerēts slēpÅ”anas faktors. Maska Å”eit ir vajadzÄ«ga, lai treŔā persona nevarētu vienkārÅ”i uzminēt saistÄ«bu vērtÄ«bu.

Kad tiek Ä£enerēta jauna izvade, maciņŔ par to aprēķina saistÄ«bas, un, iztērējot, tas ņem vai nu Ä£enerÄ“Å”anas laikā aprēķināto vērtÄ«bu, vai pārrēķina to atkarÄ«bā no darÄ«juma veida.

RingCT vienkārŔs

VienkārŔu RingCT darījumu gadījumā, lai nodroŔinātu, ka darījums radīja izejas, kas vienādas ar ievades apjomu (nauda netika radīta no zila gaisa), ir nepiecieŔams, lai pirmā un otrā saistību summa būtu tas pats, tas ir:
Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem
Saistību komisijas to uzskata nedaudz savādāk - bez maskas:
Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iemKur a ā€” komisijas maksas apmērs, tas ir publiski pieejams.

Å Ä« pieeja ļauj mums pierādÄ«t ieinteresētajai pusei, ka izmantojam tādas paÅ”as summas, tās neatklājot.

Lai lietas bÅ«tu skaidrākas, apskatÄ«sim piemēru. Pieņemsim, ka darÄ«jumam tiek iztērēti divi izvadi (tas nozÄ«mē, ka tie kļūst par ievadi) 10 un 5 XMR un tiek Ä£enerēti trÄ«s izvadi 12 XMR vērtÄ«bā: 3, 4 un 5 XMR. Tajā paŔā laikā viņŔ maksā komisijas maksu 3 XMR. Tādējādi iztērētā naudas summa plus Ä£enerētā summa un komisijas maksa ir vienāda ar 15 XMR. Mēģināsim aprēķināt saistÄ«bas un apskatÄ«t to summu atŔķirÄ«bu (atcerieties matemātiku):

Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem
Å eit mēs redzam, ka, lai vienādojums konverģētu, mums ir nepiecieÅ”ams, lai ievades un izvades masku summa bÅ«tu vienāda. Lai to izdarÄ«tu, maku Ä£enerē nejauÅ”i x1, y1, y2 un y3, un pārējās x2 aprēķina Ŕādi:
Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem
Izmantojot Ŕīs maskas, mēs varam pierādÄ«t jebkuram pārbaudÄ«tājam, ka mēs neradām vairāk lÄ«dzekļu, nekā iztērējam, neatklājot summu. OriÄ£ināls, vai ne?

RingCT pilns

Pilnos RingCT darÄ«jumos pārskaitÄ«juma summu pārbaude ir nedaudz sarežģītāka. Å ajos darÄ«jumos maciņŔ neveic ieguldÄ«jumu saistÄ«bu pārrēķinu, bet izmanto tās, kas aprēķinātas to Ä£enerÄ“Å”anas laikā. Å ajā gadÄ«jumā mums ir jāpieņem, ka mēs vairs neiegÅ«sim starpÄ«bu starp summām, kas vienādas ar nulli, bet gan:
Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem
Å eit z ā€” atŔķirÄ«ba starp ievades un izvades maskām. Ja mēs uzskatām zG kā publisko atslēgu (kas tā de facto ir), tad z ir privātā atslēga. Tādējādi mēs zinām publiskās un atbilstoŔās privātās atslēgas. Izmantojot Å”os datus, mēs varam tos izmantot MLSAG gredzena parakstā kopā ar jaukto izeju publiskajām atslēgām:
Konfidenciāli darījumi Monero jeb kā pārsūtīt nezināmas lietas uz nezināmiem galamērķiem
Tādējādi derÄ«gs zvana paraksts nodroÅ”inās, ka mēs zinām visas vienas kolonnas privātās atslēgas, un mēs varam zināt tikai privāto atslēgu pēdējā rindā, ja darÄ«jums nerada vairāk lÄ«dzekļu, nekā tas tērē. Starp citu, Å”eit ir atbilde uz jautājumu "kāpēc saistÄ«bu apmēru starpÄ«ba nenoved lÄ«dz nullei" - ja zG = 0, tad mēs paplaÅ”ināsim kolonnu ar reāliem rezultātiem.

Kā lÄ«dzekļu saņēmējs zina, cik naudas viņam ir nosÅ«tÄ«ts? Å eit viss ir vienkārÅ”i - darÄ«juma sÅ«tÄ«tājs un saņēmējs apmainās ar atslēgām, izmantojot Diffie-Hellman protokolu, izmantojot transakcijas atslēgu un saņēmēja skata atslēgu un aprēķina kopÄ«go noslēpumu. SÅ«tÄ«tājs ieraksta datus par izvades summām, kas Å”ifrētas ar Å”o koplietoto atslēgu, speciālajos darÄ«juma laukos.

Diapazona pierādījumi

Kas notiek, ja kā saistÄ«bu summu izmantosiet negatÄ«vu skaitli? Tas var novest pie papildu monētu Ä£enerÄ“Å”anas! Šāds iznākums ir nepieņemams, tāpēc mums ir jāgarantē, lai summas, kuras mēs izmantojam, nebÅ«tu negatÄ«vas (protams, neatklājot Ŕīs summas, pretējā gadÄ«jumā ir tik daudz darba un viss velti). Citiem vārdiem sakot, mums jāpierāda, ka summa ir intervālā [0, 2n - 1].

Lai to izdarÄ«tu, katras izvades summa tiek sadalÄ«ta bināros ciparos, un saistÄ«bas tiek aprēķinātas katram ciparam atseviŔķi. Labāk ir redzēt, kā tas notiek, izmantojot piemēru.

Pieņemsim, ka mÅ«su summas ir mazas un iekļaujas 4 bitos (praksē tas ir 64 biti), un mēs izveidojam izvadi 5 XMR vērtÄ«bā. Mēs aprēķinām saistÄ«bas katrai kategorijai un kopējās saistÄ«bas visai summai:Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iem
Tālāk katra apņemÅ”anās tiek sajaukta ar surogātu (Ci-2iH) un ir parakstÄ«ts pa pāriem ar Borromeo gredzena parakstu (citu gredzena parakstu), ko 2015. gadā ierosināja Gregs Maksvels (par to varat lasÄ«t vairāk Å”eit):
Konfidenciāli darÄ«jumi Monero jeb kā pārsÅ«tÄ«t nezināmas lietas uz nezināmiem galamērÄ·iemKopumā to sauc par diapazona pārbaudi, un tas ļauj nodroÅ”ināt, ka saistÄ«bās tiek izmantotas diapazona summas [0, 2n - 1].

Ko tālāk?

PaÅ”reizējā ievieÅ”anā diapazona pierādÄ«jumi aizņem daudz vietas - 6176 baiti uz vienu izvadi. Tas rada lielākus darÄ«jumus un lÄ«dz ar to arÄ« augstākas maksas. Lai samazinātu Monero darÄ«juma apjomu, izstrādātāji Borromeo parakstu vietā ievieÅ” ložu necaurlaidÄ«gus mehānismus ā€” diapazona pārbaudes mehānismu bez bitu lÄ«meņa saistÄ«bām. Pēc dažām aplēsēm, tie spēj samazināt diapazona pierādÄ«jumu lielumu lÄ«dz pat 94%. Starp citu, jÅ«lija vidÅ« tehnoloÄ£ija pagāja audits no Kudelski Security, kas neatklāja bÅ«tiskus trÅ«kumus ne paŔā tehnoloÄ£ijā, ne tās ievieÅ”anā. TehnoloÄ£ija jau tiek izmantota testa tÄ«klā, un ar jauno cieto dakÅ”u, iespējams, tā var pāriet uz galveno tÄ«klu.

Uzdodiet savus jautājumus, iesakiet tēmas jauniem rakstiem par tehnoloģijām kriptovalūtas jomā, kā arī abonējiet mūsu grupu Facebooklai būtu lietas kursā par mūsu notikumiem un publikācijām.

Avots: www.habr.com

Pievieno komentāru