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.
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
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
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Ä
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Ä
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
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
un attiecÄ«gi galvenos attÄlus: 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:
MÄs sÄkam aprÄÄ·inus ar izejÄm, kuras iztÄrÄjam, izmantojot to publiskÄs atslÄgas:un nejauÅ”i skaitļiRezultÄtÄ mÄs iegÅ«stam Å”Ädas vÄrtÄ«bas:
, ko mÄs izmantojam izaicinÄjuma aprÄÄ·inÄÅ”anai
nÄ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ļi. Par Ļ- kolonna mums arÄ« bÅ«s vajadzÄ«gas. PÄrveidosims:
Pats paraksts ir visu Å”o vÄrtÄ«bu kopums:
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 datus, atjauno vÄrtÄ«bas c1,ā¦, cm un pÄrbauda to. 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
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:
Kur 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:
SaistÄ«bu komisijas to uzskata nedaudz savÄdÄk - bez maskas:
Kur 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):
Å 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:
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:
Å 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:
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:
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
KopumÄ 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.
Uzdodiet savus jautÄjumus, iesakiet tÄmas jauniem rakstiem par tehnoloÄ£ijÄm kriptovalÅ«tas jomÄ, kÄ arÄ« abonÄjiet mÅ«su grupu
Avots: www.habr.com