Babagan anonimitas ing pamblokiran basis akun

Kita wis kasengsem ing topik anonimitas ing cryptocurrencies kanggo wektu sing suwe lan nyoba ngetutake perkembangan teknologi ing wilayah iki. Ing artikel kita wis dibahas kanthi rinci babagan prinsip operasi transaksi rahasia ing Monero, lan uga digawa metu review komparatif teknologi sing ana ing lapangan iki. Nanging, kabeh cryptocurrencies anonim saiki dibangun ing model data ngajokaken dening Bitcoin - Unspent Transaksi Output (sabanjurΓ© UTXO). Kanggo pamblokiran basis akun kaya Ethereum, solusi sing wis ana kanggo ngleksanakake anonimitas lan rahasia (contone, Mobius utawa Aztec) nyoba kanggo niru model UTXO ing kontrak pinter.

Ing Februari 2019, klompok peneliti saka Universitas Stanford lan Riset Visa dirilis pracetak "Zether: Menyang privasi ing donya kontrak pinter." Penulis minangka sing pisanan ngusulake pendekatan kanggo njamin anonimitas ing blokir basis akun lan nampilake rong versi kontrak cerdas: kanggo transaksi rahasia (ndhelikake saldo lan jumlah transfer) lan anonim (ndhelikake panampa lan pangirim). Kita nemokake teknologi sing diusulake menarik lan pengin nuduhake desaine, uga ngomong babagan kenapa masalah anonimitas ing blockchain adhedhasar akun dianggep angel banget lan manawa penulis bisa ngrampungake kanthi lengkap.

Babagan struktur model data kasebut

Ing model UTXO, transaksi kasusun saka "input" lan "output". Analog langsung saka "output" yaiku tagihan ing dompet sampeyan: saben "output" duwe denominasi. Nalika sampeyan mbayar wong (mbentuk transaksi) sampeyan nglampahi siji utawa luwih "output", ing kasus iki dadi "input" transaksi, lan blockchain nandhani minangka ngginakaken. Ing kasus iki, panampa pembayaran sampeyan (utawa sampeyan dhewe, yen sampeyan butuh pangowahan) nampa "output" sing mentas digawe. Iki bisa diwakili kanthi skema kaya iki:

Babagan anonimitas ing pamblokiran basis akun

Blockchain basis akun disusun kaya akun bank sampeyan. Dheweke mung ngurusi jumlah ing akun sampeyan lan jumlah transfer. Nalika sampeyan nransfer sawetara jumlah saka akun, sampeyan ora ngobong sembarang "output", jaringan ora perlu kanggo ngelingi kang dhuwit recehan wis ngginakaken lan sing wis ora. Ing kasus paling gampang, verifikasi transaksi teka kanggo mriksa teken pangirim lan jumlah imbangan:

Babagan anonimitas ing pamblokiran basis akun

Analisis teknologi

Sabanjure, kita bakal ngomong babagan carane Zether ndhelikake jumlah transaksi, panampa, lan pangirim. Nalika kita njlèntrèhaké prinsip operasi, kita bakal nyatet beda ing versi rahasia lan anonim. Amarga luwih gampang kanggo mesthekake rahasia ing pamblokiran basis akun, sawetara watesan sing ditindakake dening anonimisasi ora bakal relevan karo versi rahasia teknologi kasebut.

Ndhelikake saldo lan jumlah transfer

Skema enkripsi digunakake kanggo ndhelik saldo lan transfer jumlah ing Zether El Gamal. Kerjane kaya ing ngisor iki. Nalika Alice arep ngirim Bob b dhuwit recehan miturut alamat (kunci umum) Y, dheweke milih nomer acak r lan ndhelik jumlah:

Babagan anonimitas ing pamblokiran basis akun
ngendi C - jumlah ndhelik, D - Nilai tambahan sing dibutuhake kanggo nemtokake jumlah kasebut, G - titik tetep ing kurva elliptic, nalika pingan dening kunci rahasia, kunci umum dijupuk.

Nalika Bob nampa nilai kasebut, dheweke mung nambahake menyang imbangan ndhelik kanthi cara sing padha, mula skema iki trep.

Kajaba iku, Alice nyuda nilai sing padha saka keseimbangane, mung minangka Y nggunakake kunci umum sampeyan.

Singidaken panampa lan pangirim

Shuffling "output" ing UTXO tanggal bali menyang dina awal cryptocurrencies lan mbantu ndhelikake pangirim. Kanggo nindakake iki, pangirim dhewe, nalika nggawe transfer, ngumpulake "output" acak ing blockchain lan nyampur karo dhewe. Sabanjure, dheweke menehi tandha "output" kanthi tandha dering-mekanisme kriptografi sing ngidini dheweke bisa ngyakinake verifikasi yen dhuwit recehan pangirim ana ing antarane "output" sing melu. Dhuwit recehan campuran dhewe, mesthi, ora ngginakaken.

Nanging, kita ora bakal bisa ngasilake output palsu kanggo ndhelikake panampa. Mulane, ing UTXO, saben "output" duwe alamat unik dhewe, lan cryptographically disambung menyang alamat panampa dhuwit recehan iki. Saiki, ora ana cara kanggo ngenali hubungan antarane alamat output unik lan alamat panampa tanpa ngerti kunci rahasia.

Ing model basis akun, kita ora bisa nggunakake alamat siji-wektu (yen ora bakal dadi model "metu"). Mulane, panampa lan pangirim kudu dicampur ing antarane akun liyane ing blockchain. Ing kasus iki, 0 dhuwit recehan ndhelik debited saka akun campuran (utawa 0 ditambahake yen panampa dicampur), tanpa bener ngganti imbangan nyata.

Amarga pangirim lan panampa tansah duwe alamat permanen, mula kudu nggunakake grup sing padha kanggo nyampur nalika nransfer menyang alamat sing padha. Iku luwih gampang kanggo ndeleng iki karo conto.

Contone, Alice mutusake kanggo menehi sumbangan kanggo amal Bob, nanging luwih milih transfer kasebut tetep anonim menyang pengamat njaba. Banjur, kanggo nyamar ing lapangan pangirim, dheweke uga mlebu akun Adam lan Adele. Lan kanggo ndhelikake Bob, tambahake akun Ben lan Bill ing kolom panampa. Nggawe kontribusi sabanjure, Alice mutusake kanggo nulis Alex lan Amanda ing jejere dheweke, lan Bruce lan Benjen ing jejere Bob. Ing kasus iki, nalika nganalisa pamblokiran, ing loro transaksi iki mung ana siji intersecting pasangan peserta - Alice lan Bob, kang de-anonymizes transaksi iki.

Babagan anonimitas ing pamblokiran basis akun

Balapan transaksi

Kaya sing wis kasebut, kanggo ndhelikake imbangan sampeyan ing sistem basis akun, pangguna ndhelikake imbangan lan jumlah transfer. Ing wektu sing padha, dheweke kudu mbuktekake yen imbangan ing akun kasebut tetep ora negatif. Masalahe yaiku nalika nggawe transaksi, pangguna nggawe bukti babagan status akun saiki. Apa sing kedadeyan yen Bob ngirim transaksi menyang Alice, lan ditampa sadurunge sing dikirim dening Alice? Banjur transaksi Alice bakal dianggep ora sah, amarga bukti imbangan dibangun sadurunge transaksi Bob ditampa.

Babagan anonimitas ing pamblokiran basis akun

Kaputusan pisanan sing ana ing kahanan kaya ngono yaiku beku akun nganti transaksi ditindakake. Nanging pendekatan iki ora cocok, amarga saliyane kerumitan ngrampungake masalah kasebut ing sistem sing disebarake, ing skema anonim ora bakal jelas sing akun sing bakal diblokir.

Kanggo ngatasi masalah iki, teknologi misahake transaksi mlebu lan metu: mbuwang duwe efek langsung ing neraca, nalika kuitansi duwe efek telat. Kanggo nindakake iki, konsep "jaman" dienalake - klompok blok kanthi ukuran tetep. Saiki "jaman" ditemtokake kanthi misahake dhuwur blok kanthi ukuran klompok. Nalika ngolah transaksi, jaringan langsung nganyari imbangan pangirim lan nyimpen dana panampa ing tangki panyimpenan. Dana akumulasi kasedhiya kanggo sing mbayar mung nalika "jaman" anyar diwiwiti.

AkibatΓ©, pangguna bisa ngirim transaksi preduli saka sepira kerepe dana ditampa (mesthi imbangane ngidini, mesthi). Ukuran jaman ditemtokake adhedhasar sepira cepet pamblokiran nyebar liwat jaringan lan sepira cepet transaksi mlebu blok.

Solusi iki bisa digunakake kanthi apik kanggo transfer rahasia, nanging kanthi transaksi anonim, kaya sing bakal kita deleng mengko, nggawe masalah serius.

Perlindhungan marang serangan muter maneh

Ing pamblokiran basis akun, saben transaksi ditandatangani dening kunci pribadi pangirim, sing ngyakinake verifikasi yen transaksi kasebut durung diowahi lan digawe dening pemilik kunci iki. Nanging kepiye yen panyerang sing ngrungokake saluran transmisi nyegat pesen iki lan ngirim pesen sing padha? Verifier bakal verifikasi teken saka transaksi lan bakal nggawe percoyo saka authorship sawijining, lan jaringan bakal nulis mati jumlah sing padha saka imbangan pangirim maneh.

Serangan iki diarani serangan ulang. Ing model UTXO, serangan kasebut ora cocog, amarga panyerang bakal nyoba nggunakake output sing dienggo, sing ora bener lan ditolak dening jaringan.

Kanggo nyegah kedadeyan kasebut, lapangan kanthi data acak dibangun ing transaksi kasebut, sing diarani nonce utawa mung "uyah". Nalika ngirim maneh transaksi karo uyah, verifier katon kanggo ndeleng yen nonce wis digunakake sadurunge lan, yen ora, nganggep transaksi bener. Supaya ora nyimpen kabeh riwayat nonces pangguna ing pamblokiran, biasane ing transaksi pisanan disetel padha karo nol, banjur tambah siji. Jaringan mung bisa mriksa manawa transaksi anyar beda karo sing sadurunge.

Ing skema transfer anonim, masalah validasi nonces transaksi muncul. Kita ora bisa kanthi tegas ngiket nonce menyang alamat pangirim, amarga, jelas, iki de-anonymizes transfer. Kita uga ora bisa nambah siji menyang nonces kabeh akun sing melu, amarga iki bisa konflik karo transfer liyane sing diproses.

Penulis Zether ngusulake kanggo ngasilake nonce cryptographically, gumantung ing "jaman". Tuladhane:

Babagan anonimitas ing pamblokiran basis akun
iku x iku kunci rahasia pangirim, lan Gepok - generator tambahan kanggo jaman, dijupuk dening hashing senar saka wangun 'Zether +'. Saiki masalah katon wis ditanggulangi - kita ora mbukak nonce pangirim lan ora ngganggu nonces saka peserta uninvolved. Nanging pendekatan iki ndadekake watesan serius: siji akun bisa ngirim ora luwih saka siji transaksi saben "jaman". Masalah iki, sayangΓ©, tetep ora ditanggulangi, lan saiki nggawe versi anonim saka Zether, miturut pendapat kita, meh ora cocog kanggo digunakake.

Kompleksitas Bukti Pengetahuan Zero

Ing UTXO, pangirim kudu mbuktekake ing jaringan yen dheweke ora mbuwang jumlah negatif, yen ora, bisa ngasilake dhuwit recehan anyar saka hawa tipis (kok bisa, kita nulis ing salah sawijining artikel). Lan uga mlebu "input" kanthi teken dering kanggo mbuktekake manawa ing antarane dhuwit recehan sing dicampur ana dana sing dadi kagungane.

Ing versi anonim saka pamblokiran basis akun, ekspresi kanggo bukti luwih rumit. Pangirim mbuktekake manawa:

  1. Jumlah sing dikirim positif;
  2. Imbangan tetep non-negatif;
  3. Pangirim kanthi bener ndhelik jumlah transfer (kalebu nol);
  4. Imbangan ing imbangan diganti mung kanggo pangirim lan panampa;
  5. Pangirim ndarbeni kunci pribadi kanggo akun lan dheweke bener ana ing dhaptar pangirim (antarane sing melu);
  6. Nonce sing digunakake ing transaksi kasebut disusun kanthi bener.

Kanggo bukti sing kompleks, penulis nggunakake campuran Kaset (salah sawijining penulis, kanthi cara, melu nggawe) lan Protokol Sigma, kang disebut Sigma-peluru. Bukti resmi saka statement kasebut minangka tugas sing rada angel, lan mbatesi jumlah wong sing pengin ngetrapake teknologi kasebut.

Apa ing pungkasan?

Ing mratelakake panemume, bagean Zether sing nggawa privasi kanggo blockchains basis akun bisa digunakake saiki. Nanging ing wayahe, versi anonim saka teknologi nemtokke Watesan serius ing nggunakake, lan kerumitan ing implementasine. Nanging, ora kudu diremehake yen penulis dirilis mung sawetara sasi kepungkur, lan mbok menawa wong liya bakal nemokake solusi kanggo masalah sing ana saiki. Sawise kabeh, iki carane ngelmu rampung.

Source: www.habr.com

Add a comment