Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni

Kita nerusake seri babagan pamblokiran Monero, lan artikel dina iki bakal fokus ing protokol RingCT (Ring Confidential Transactions), sing ngenalake transaksi rahasia lan tanda tangan dering anyar. Sayange, ana sethitik informasi ing Internet babagan cara kerjane, lan kita nyoba kanggo ngisi longkangan iki.

Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni

Kita bakal pirembagan bab carane jaringan ndhelikake jumlah transfer nggunakake protokol iki, kok padha nilar tandha ring cryptonote klasik, lan carane teknologi iki bakal berkembang luwih.

Wiwit protokol iki minangka salah sawijining teknologi sing paling rumit ing Monero, sing maca mbutuhake kawruh dhasar babagan desain pamblokiran iki lan kawruh babagan kriptografi kurva eliptik (kanggo nyemak kawruh iki, sampeyan bisa maca bab pisanan kita artikel sadurunge babagan multisignatures).

Protokol RingCT

Salah sawijining serangan sing bisa ditindakake ing mata uang cryptonote yaiku analisis pamblokiran adhedhasar kawruh babagan jumlah lan wektu transaksi sing dikirim. Iki ngidini Ngartekno mbatesi area panelusuran kanggo metu saka kapentingan kanggo penyerang. Kanggo nglindhungi analisis kasebut, Monero wis ngetrapake protokol transaksi anonim sing ndhelikake jumlah transfer ing jaringan.

Wigati dicathet yen ide ndhelikake jumlah kasebut ora anyar. pangembang Bitcoin inti Greg Maxwell iku salah siji saka pisanan kanggo njlèntrèhaké ing Artikel Transaksi Rahasia. Implementasine RingCT saiki yaiku modifikasi kanthi kemungkinan nggunakake teken dering (apa tanpa kasebut), lan kaya ngono jenenge - Transaksi Rahasia Ring.

Antarane liyane, protokol mbantu nyingkirake masalah karo nyampur output bledug - output saka jumlah cilik (biasane ditampa ing wangun owah-owahan saka transaksi), kang nggawe masalah luwih saka padha worth.

Ing Januari 2017, garpu hard saka jaringan Monero dumadi, ngidini nggunakake opsional saka transaksi rahasia. Lan wis ing September taun sing padha, karo versi 6 hard garpu, transaksi kuwi mung diijini ing jaringan.

RingCT nggunakake sawetara mekanisme bebarengan: multilayered linked spontaneous anonymous group signatures (Multilayered Linkable Spontaneous Anonymous Group Signature, sing sabanjure diarani MLSAG), skema komitmen (Pedersen Commitments) lan sawetara bukti (istilah iki ora duwe terjemahan sing mapan ing basa Rusia) .

Protokol RingCT ngenalake rong jinis transaksi anonim: prasaja lan lengkap. Dompet ngasilake pisanan nalika transaksi nggunakake luwih saka siji input, kaloro - ing kahanan ngelawan. Padha beda-beda ing validasi jumlah transaksi lan data sing ditandatangani karo teken MLSAG (kita bakal ngomong luwih lengkap babagan iki ing ngisor iki). Kajaba iku, transaksi jinis lengkap bisa digawe kanthi jumlah input, ora ana prabédan dhasar. Ing buku "Nol kanggo Monero" Ing babagan iki, ujar manawa keputusan kanggo mbatesi transaksi lengkap kanggo siji input digawe kanthi cepet lan bisa uga diganti ing mangsa ngarep.

teken MLSAG

Ayo elinga apa input transaksi sing ditandatangani. Saben transaksi mbuwang lan ngasilake sawetara dana. Generasi dana dumadi kanthi nggawe output transaksi (analogi langsung yaiku tagihan), lan output sing ditindakake transaksi (sawise kabeh, ing urip nyata kita mbuwang dhuwit kertas) dadi input (ati-ati, gampang banget bingung. kene).

Sawijining input referensi sawetara output, nanging mung mbuwang siji, saéngga nggawe "smokescreen" kanggo nggawe angel kanggo nganalisa riwayat terjemahan. Yen transaksi duwe luwih saka siji input, struktur kasebut bisa diwakili minangka matriks, ing ngendi baris minangka input lan kolom minangka output campuran. Kanggo mbuktekaken menyang jaringan sing transaksi nglampahi persis output sawijining (ngerti kunci rahasia sing), input mlebu karo teken ring. Tandha kasebut njamin manawa sing menehi tandha ngerti kunci rahasia kanggo kabeh unsur ing kolom kasebut.

Transaksi rahasia ora nganggo klasik maneh cryptonote teken dering, padha diganti dening MLSAG - versi teken dering siji-lapisan padha diadaptasi kanggo macem-macem input, LSAG.

Iki diarani multilayer amarga padha mlebu sawetara input sekaligus, sing saben dicampur karo sawetara liyane, yaiku matriks ditandatangani, lan ora siji baris. Kaya sing bakal kita deleng mengko, iki mbantu ngirit ukuran teken.

Ayo goleki carane tandha dering dibentuk, nggunakake conto transaksi sing mbuwang 2 output nyata lan nggunakake m - 1 acak saka blockchain kanggo nyampur. Ayo kita ndudohke tombol umum saka output sing kita nglampahi minangka
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni, lan gambar kunci kanggo wong-wong mau: Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni Mangkono, kita entuk matriks ukuran 2 x m. Kaping pisanan, kita kudu ngetung tantangan sing diarani saben pasangan output:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
Kita miwiti petungan kanthi output, sing kita gunakake nggunakake kunci umum:Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingertenilan nomer acakTransaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteniAkibaté, kita entuk nilai ing ngisor iki:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni, sing digunakake kanggo ngitung tantangan
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingertenipasangan output sabanjure (supaya luwih gampang ngerti apa sing kita ganti ing ngendi, kita wis nyorot nilai kasebut kanthi warna sing beda). Kabeh nilai ing ngisor iki diwilang ing bunder nggunakake rumus sing diwenehake ing ilustrasi pisanan. Wangsulan: Bab ingkang pungkasan kanggo ngetung tantangan kanggo pasangan output nyata.

Kaya sing kita deleng, kabeh kolom kajaba sing ngemot output nyata nggunakake nomer sing digawe kanthi acakTransaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni. kanggo π-kolom kita uga bakal perlu wong. Ayo dadi ngowahiTransaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteniing s:Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
Tandha dhewe minangka tuple saka kabeh nilai kasebut:

Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni

Data kasebut banjur ditulis dadi transaksi.

Kaya sing kita deleng, MLSAG mung ngemot siji tantangan c0, sing ngidini sampeyan ngirit ukuran teken (sing wis mbutuhake akeh spasi). Salajengipun, sembarang inspektur, nggunakake dataTransaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni, mulihake nilai c1,…, cm lan mriksaTransaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni. Mangkono, dering kita ditutup lan teken wis diverifikasi.

Kanggo transaksi RingCT saka jinis lengkap, siji baris liyane ditambahake menyang matriks karo hasil campuran, nanging kita bakal pirembagan bab iki ing ngisor iki.

Komitmen Pedersen

Skema kewajiban (Istilah komitmen Inggris luwih kerep digunakake) digunakake supaya siji pihak bisa mbuktekake manawa dheweke ngerti rahasia (nomer) tartamtu tanpa ngungkapake. Contone, sampeyan muter nomer tartamtu ing dadu, nimbang prasetya lan pass menyang partai verifikasi. Mangkono, nalika mbukak nomer rahasia, verifikasi kanthi mandiri ngetung prasetya, saéngga mesthekake yen sampeyan ora ngapusi dheweke.

Komitmen Monero digunakake kanggo ndhelikake jumlah transfer lan nggunakake pilihan sing paling umum - komitmen Pedersen. Miturut cara, kasunyatan sing menarik - ing wiwitan para pangembang ngusulake ndhelikake jumlah kasebut kanthi nyampur biasa, yaiku, nambahake output kanggo jumlah sing sewenang-wenang kanggo ngenalake kahanan sing durung mesthi, nanging banjur padha ngalih menyang komitmen (dudu kasunyatan sing disimpen. ukuran transaksi, kaya sing bakal kita deleng ing ngisor iki).
Umumé, komitmen katon kaya iki:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteniNgendi C - makna komitmen dhewe, a - jumlah sing didhelikake, H minangka titik tetep ing kurva elips (generator tambahan), lan x - sawetara jinis topeng kasepakatan, faktor ndhelik sing digawe kanthi acak. Topeng dibutuhake ing kene supaya pihak katelu ora mung bisa ngira-ngira nilai komitmen.

Nalika output anyar kui, dompet ngetung prasetya kanggo, lan nalika ngginakaken, iku njupuk salah siji Nilai diwilang sak generasi utawa recalculates iku, gumantung ing jinis transaksi.

RingCT prasaja

Ing cilik saka transaksi RingCT prasaja, supaya kanggo mesthekake yen transaksi digawe output ing jumlah witjaksono kanggo jumlah input (ora gawé dhuwit metu saka udhara lancip), iku perlu sing jumlah saka prasetya pisanan lan kaloro. sing padha, yaiku:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
Komisi komitmen nganggep rada beda - tanpa topeng:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteningendi a - jumlah komisi, kasedhiya kanggo umum.

Pendekatan iki ngidini kita mbuktekake marang pihak sing ngandel yen kita nggunakake jumlah sing padha tanpa ngumumake.

Supaya luwih cetha, ayo deleng contone. Contone, transaksi mbuwang rong output (tegese dadi input) 10 lan 5 XMR lan ngasilake telung output sing regane 12 XMR: 3, 4 lan 5 XMR. Ing wektu sing padha, dheweke mbayar komisi 3 XMR. Mangkono, jumlah dhuwit sing dibuwang ditambah jumlah sing digawe lan komisi padha karo 15 XMR. Ayo nyoba ngetung komitmen lan ndeleng prabédan ing jumlahe (elinga matématika):

Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
Ing kene kita bisa ndeleng manawa persamaan kasebut bisa gabung, kita butuh jumlah topeng input lan output supaya padha. Kanggo nindakake iki, dompet ngasilake kanthi acak x1, y1, y2 lan y3, lan sing isih ana x2 ngitung kaya iki:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
Nggunakake topeng iki, kita bisa mbuktekake marang verifier manawa kita ora ngasilake dana luwih akeh tinimbang sing kita gunakake, tanpa ngumumake jumlahe. Asli, bener?

RingCT lengkap

Ing transaksi RingCT lengkap, mriksa jumlah transfer rada rumit. Ing transaksi kasebut, dompet ora ngitung maneh komitmen kanggo input, nanging nggunakake sing diwilang nalika digawe. Ing kasus iki, kita kudu nganggep manawa kita ora bakal entuk bedane jumlah sing padha karo nol, nanging:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
iku z - prabédan antarane topeng input lan output. Yen kita nimbang zG minangka kunci umum (sing de facto), banjur z iku kunci pribadi. Mangkono, kita ngerti kunci pribadi umum lan sing cocog. Kanthi data iki, kita bisa nggunakake ing tandha ring MLSAG bebarengan karo tombol umum saka output sing dicampur:
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
Mangkono, teken dering bener bakal mesthekake yen kita ngerti kabeh tombol pribadi saka salah siji kolom, lan kita mung bisa ngerti tombol pribadi ing baris pungkasan yen transaksi ora generate dana luwih saka mbuwang. Ngomong-ngomong, iki jawaban kanggo pitakonan "kenapa prabédan ing jumlah komitmen ora nyebabake nol" - yen zG = 0, banjur kita bakal nggedhekake kolom kanthi output nyata.

Kepiye panampa dana ngerti pira dhuwit sing dikirim menyang dheweke? Kabeh iku prasaja ing kene - pangirim transaksi lan tombol ijol-ijolan panampa nggunakake protokol Diffie-Hellman, nggunakake tombol transaksi lan tombol tampilan panampa lan ngetung rahasia sing dienggo bareng. Pangirim nulis data babagan jumlah output, sing dienkripsi nganggo kunci sing dienggo bareng iki, ing kolom khusus transaksi kasebut.

Range bukti

Apa sing kedadeyan yen sampeyan nggunakake nomer negatif minangka jumlah komitmen? Iki bisa mimpin kanggo generasi dhuwit recehan tambahan! Asil iki ora bisa ditampa, mula kita kudu njamin manawa jumlah sing digunakake ora negatif (tanpa ngumumake jumlah kasebut, mesthi, yen ora ana akeh karya lan kabeh muspra). Ing tembung liya, kita kudu mbuktekake manawa jumlah kasebut ana ing interval [0, 2n - 1].

Kanggo nindakake iki, jumlah saben output dipérang dadi digit binar lan prasetya diwilang kanggo saben digit kanthi kapisah. Iku luwih apik kanggo ndeleng carane iki kedaden karo conto.

Ayo dadi nganggep yen jumlah kita cilik lan pas menyang 4 bit (ing laku iki 64 bit), lan kita nggawe output worth 5 XMR. Kita ngetung komitmen kanggo saben kategori lan total komitmen kanggo kabeh jumlah:Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteni
Sabanjure, saben prasetya dicampur karo pengganti (Ci-2iH) lan mlebu ing pasangan karo teken Borromeo ring (tandha ring liyane), ngajokaken dening Greg Maxwell ing 2015 (sampeyan bisa maca liyane babagan iki. kene):
Transaksi rahasia ing Monero, utawa carane nransfer barang sing ora dingerteni menyang tujuan sing ora dingerteniDigabungake, iki diarani bukti jangkauan lan ngidini sampeyan mesthekake yen komitmen nggunakake jumlah ing sawetara [0, 2n - 1].

Apa sabanjuré?

Ing implementasine saiki, sawetara bukti njupuk akeh papan - 6176 bita saben output. Iki nyebabake transaksi sing luwih gedhe lan mulane biaya sing luwih dhuwur. Kanggo nyuda ukuran transaksi Monero, pangembang ngenalake antipeluru tinimbang tanda tangan Borromeo - mekanisme bukti sawetara tanpa komitmen bitwise. Miturut sawetara prakiraan, padha bisa nyuda ukuran bukti sawetara nganti 94%. Miturut cara, ing pertengahan Juli teknologi liwati audit saka Kudelski Security, sing ora mbukak kekurangan sing signifikan ing teknologi kasebut utawa ing implementasine. Teknologi wis digunakake ing jaringan test, lan karo garpu hard anyar, iku mbokmenawa bisa pindhah menyang jaringan utama.

Takon pitakonan sampeyan, menehi saran topik kanggo artikel anyar babagan teknologi ing bidang cryptocurrency, lan uga langganan grup kita ing Facebooksupaya tetep anyar karo acara lan publikasi kita.

Source: www.habr.com

Add a comment