Ievads konfidenciālajos darījumos
Sākums
Raksti
Ievads konfidenciālajos darījumos

Ievads konfidenciālajos darījumos

Vidēji sarežģītas tēmas
Publicēts Feb 10, 2020Atjaunināts Dec 28, 2022
6m

Ievads

Bieži tiek uzskatīts, ka blokķēdes darbībai ir ļoti svarīgi, lai sistēma būtu caurskatāma. Tas nozīmē, ka katrs mezgls tīklā var saglabāt kopiju un pārbaudīt, vai netiek pārkāpti kādi noteikumi. Daudzās sadalītajās virsgrāmatās jebkurš var ielādēt tiešsaistes bloku pārlūku, ar kuru var meklēt blokus, darījumus un adreses.

No privātuma aspekta tas nav ideāls risinājums. Bitcoin gadījumā jebkuru darījumu var saistīt ar iepriekšējo. Katra kriptovalūtas vienība tehniski ir unikāla, tātad katru var saistīt ar noteiktiem darījumiem. Neviens nevar liegt tev nosūtīt Bitcoin, taču var atteikties apstiprināt tavu darījumu, ja attiecīgā kriptovalūta iepriekš ir tikusi nosūtīta uz melnajā sarakstā iekļautu adresi.

Sliktākajā gadījumā šī katras vienības izsekojamība var būtiski ietekmēt sistēmas pašus pamatus. Par "tīrām" valūtas vienībām var tikt noteikta piemaksa, savukārt vecākas vienības būtu mazāk vērtīgas, ņemot vērā to vēsturi.

Bitcoin privātums nereti tiek pārspīlēts. Ir iespējams izsekot ne vien kriptovalūtas, bet arī lietotājus. Viņi var baudīt pseidonimitāti (ir redzamas publiskās adreses, nevis vārdi), taču tam ir savi trūkumi. Sarežģītākas analīzes metodes ļauj arvien precīzāk apvienot adreses, mēģinot deanonimizēt personas tīklā.

Viens no piedāvātajiem risinājumiem, kas varētu darījumus padarīt patiesi privātus, ir konfidenciālie darījumi.


Kas ir konfidenciālie darījumi?

Konfidenciālos darījumus (KD) 2013. gadā pirmoreiz apsprieda "Blockstream" izpilddirektors Adams Beks, un vēlāk detalizēti analizēja Bitcoin izstrādātājs Gregorijs Maksvels. Maksvels izklāstīja pirmajā sadaļā minētās problēmas (valūtas vienību unikalitāti un vāju pseidonimitāti) un piedāvāja risinājumu. Pārskaitītās summas varētu paslēpt no plašākā tīkla, lai tikai darījumā iesaistītās personas zinātu, cik daudz līdzekļu tiek pārskaitīti.



Normālos apstākļos (ar publiski redzamiem darījumiem) mezgls var viegli pārbaudīt, vai saņemtā summa nepārsniedz norādīto summu. Ja Alise vēlas nosūtīt Kārlim 0,3 BTC, viņa ņem neiztērēto summu (teiksim, 1 BTC) un sadala to divās daļās: 0,3 tiks nosūtīti Kārlim, bet 0,69 tiks nosūtīti atpakaļ viņai pašai (pārējā summa tiks iztērēta ieguves komisijas maksai).
Citiem mezgliem tas ir vienkāršs algebras aprēķins: 1 ir lielāks par 0,3 + 0,69, visi paraksti ir pareizi, un Alises resursi iepriekš nav nekur iztērēti, tāpēc darījumiem jābūt derīgiem. Tomēr, ja summas nav redzamas, viss vairs nav tik vienkārši. Kā būtu iespējams noteikt, vai nezināma summa ir vienāda ar vai lielāka par divu citu nezināmu lielumu kopsummu?


Izmantotās kriptogrāfijas pārskats

Lai slēptu datus, ir jāveic šifrēšana. Tomēr tradicionālās metodes atgādina dokumentu ievietošanu seifā – tiklīdz tie ir ieslēgti seifā, tos vairs nevar izmantot, līdz atkal izņem no seifa. Lai konfidenciālie darījumi darbotos, ir nepieciešams digitāls seifs, kura saturs netiek izpausts, bet kura īpašības varētu pārbaudīt persona no malas.

Risinājumu sniedz homomorfā šifrēšana shēmā, kuru sauc par Pedersena saistību. Ar šādu šifrēšanu cilvēks no malas var dažādiem mērķiem veikt darbības ar šifrētajiem datiem (kurus tas neredz). 

Var izmantot parastu jaucējkodu datiem, kurus vēlies vēlāk atklāt. Pieņemsim, ka tu vēlies izziņot sociālajos medijos konkursu, kurā balvu 0,01 BTC apmērā varēs iegūt tas, kurš uzminēs tavu iemīļotāko biržu. Dalībnieki varētu būt skeptiski, jo tu varētu konkursa noslēgumā paskatīties uz atbildēm un izvēlēties biržu, kuru neviens nav pieminējis.

Risinājums būtu darīt zināmu saviem sekotājiem jaucējkodu – šķietami nejauši izvēlētu ciparu un rakstzīmju virkni, kas atbilstu noteiktam rezultātam. Tu palaistu funkciju, izmantojot savas iemīļotākās biržas nosaukumu, un iegūtu noteiktus datus. Attēlosim to, izmantojot SHA256 algoritmu:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Paraugoties uz šo kodu, tev nav ne mazākās nojausmas, kādi bija ievadītie dati. Nav arī iespējams izpildīt pretēju funkciju, lai to noskaidrotu. Tomēr, ja tu zini, ka sākotnējie dati bija "Binance", tu vari pavisam vienkārši pārbaudīt, vai jaucējkods tiem atbilst. Tādējādi tavi sekotāji var iegūt zināmu pārliecību, ka tu nemainīsi savu atbildi konkursa noslēgumā, jo tad tiktu iegūts pavisam cits rezultāts.

Tomēr realitātē tas nav īpaši droši. Lai arī tavi sekotāji nevar no šī algoritma iegūt sākotnējos datus, viņi var sastādīt sarakstu ar iespējamajām biržām un jaukt to datus, līdz iegūs sakritību. Mēs varam samazināt šādu iespējamību, pievienojot jaucamajiem datiem kādus nejaušus datus – t. s. "maskējošo faktoru". 

Ja mēs ievadām tekstu "Binance ir mana mīļākā birža, es to mīlu vairāk par jebkuru citu biržu 2#43Wr", tad atbildi kļūst ievērojami grūtāk uzminēt (turklāt ar 0,01 BTC atlīdzību ir maz ticams, ka kāds mēģinās to darīt).

Pedersena saistības metode ļauj pievienot datus šīm saistībām. Maksvels to attēlo šādi:



C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2),

kur BF ir maskējošais faktors un D ir dati


Tālāk ir jāveic vēl dažas darbības, kas saistītas ar eliptiskās līknes kriptogrāfiju un diapazona pierādījumiem, taču pamata ideja ir tāda, ka lietotājam ir Pedersena saistība attiecībā uz savu adresi. Nosūtot līdzekļus, tiek veidotas divas papildu saistības (viena – lietotājam atgriežamā atlikuma adresei, bet otra – mērķa adresei). 

Neviens nezina, kāda ir pārskaitījuma summa, taču var pārbaudīt, vai maiņas un mērķa saistības (Maksvela vienādojuma kreisā puse) atbilst sākotnējai adresei (vienādojuma labā puse). Ja atbilstība pastāv, lietotāja darījums ir derīgs, jo var pierādīt, ka ievade atbilst izvadei.


Kāda ir konfidenciālo darījumu nozīme?

Ja konfidenciālie darījumi tiktu ieviesti Bitcoin tīklā, sistēma kļūtu daudz privātāka. No plašāka tīkla tiktu slēpti gan ievades, gan izvades dati, un ieraksti virsgrāmatā nebūtu redzami, taču mezgli joprojām varētu pārbaudīt to autentiskumu. Šāds vērienīgs privātuma uzlabojums varētu padarīt Bitcoin vienības savstarpēji aizstājamas, jo ķēdes analīze vairs neatklātu konkrētās kriptovalūtas vienības vēsturi. 

Pagaidām nešķiet ticami, ka konfidenciālie darījumi varētu tikt iekļauti protokolā. Ar šo papildu funkcionalitāti darījumi ir daudz lielāki par parastajiem, un, ņemot vērā ierobežotos blokķēdes resursus, tas tikai palielinātu noslodzi. Tāpat vairumam dalībnieku būtu jāvienojas par koda izmaiņām – šis uzdevums parasti ir visai grūti izpildāms.


Noslēgumā

Bitcoin sānķēdēs un citās kriptovalūtās jau ir redzēti konfidenciālajiem darījumiem līdzīgi risinājumi. Piemēram, Monero izmanto tos kombinācijā ar t. s. "gredzenveida parakstiem", lai nodrošinātu anonimitāti un aizstājamību. Liquid sānķēde tos ievieš ar mērķi veicināt privātumu, un arī MimbleWinble tos izmanto līdzīgā veidā.

Maksa par konfidenciālo darījumu sniegtajām priekšrocībām ir lielāks apstrādājamo datu apjoms. Kriptovalūtām bieži vien ir raksturīgas mērogojamības un caurlaidspējas problēmas pamata slānī, tāpēc ne visi ir sajūsmā par vēl apjomīgākiem darījumiem. Tajā pat laikā privātuma atbalstītāji uzskata, ka ir svarīgi slēpt darījumu summas un dalībniekus, lai kriptovalūta varētu funkcionēt kā nauda, kuras vienības ir savstarpēji aizstājamas.