Kami parantos lami kabetot dina topik anonimitas dina mata uang kripto sareng nyobian nuturkeun pamekaran téknologi di daérah ieu. Dina artikel kami kami geus dibahas di jéntré prinsip operasi
Dina Pébruari 2019, sakelompok peneliti ti Stanford University sareng Visa Research
Ngeunaan struktur model data ieu
Dina modél UTXO, transaksi diwangun ku "inputs" jeung "outputs". Analog langsung tina "output" nyaéta tagihan dina dompét anjeun: unggal "output" ngagaduhan sababaraha denominasi. Lamun anjeun mayar batur (ngabentuk urus a) méakkeun hiji atawa leuwih "outputs", bisi nu aranjeunna jadi "inputs" tina urus, sarta blockchain nandaan aranjeunna salaku spent. Dina hal ieu, panarima pembayaran anjeun (atawa anjeun sorangan, lamun perlu robah) narima karek dihasilkeun "outputs". Ieu bisa digambarkeun schematically kawas kieu:
Blockchain dumasar akun terstruktur sapertos rekening bank anjeun. Éta ngan ukur ngurus jumlah dina akun anjeun sareng jumlah transfer. Lamun anjeun nransper sababaraha jumlah tina akun anjeun, anjeun teu kaduruk sagala "outputs", jaringan teu perlu apal mana koin geus spent jeung nu teu. Dina kasus pangbasajanna, verifikasi transaksi turun pikeun mariksa tandatangan pangirim sareng jumlah kasaimbanganna:
Analisis téhnologi
Salajengna, urang bakal ngobrol ngeunaan kumaha Zether nyumputkeun jumlah transaksi, panarima, sareng pangirim. Nalika urang ngajelaskeun prinsip operasina, urang bakal perhatikeun bédana dina versi rahasia sareng anonim. Kusabab éta leuwih gampang pikeun mastikeun karusiahan dina blockchains dumasar-akun, sababaraha larangan ditumpukeun ku anonymization moal relevan pikeun versi rahasia téhnologi nu.
Nyumputkeun kasaimbangan sareng jumlah transfer
Skéma énkripsi dianggo pikeun énkripsi kasaimbangan sareng nransferkeun jumlah dina Zether
di mana C - jumlah énkripsi, D - nilai bantu anu dipikabutuh pikeun decipher jumlah ieu, G - titik tetep dina kurva elliptic, nalika dikali konci rusiah, konci publik diala.
Nalika Bob nampi nilai-nilai ieu, anjeunna ngan saukur nambihanana kana kasaimbangan énkripsina dina cara anu sami, naha éta skéma ieu merenah.
Nya kitu, Alice subtracts nilai sarua tina kasaimbangan nya, ngan salaku Y ngagunakeun konci publik Anjeun.
Nyumputkeun panarima jeung nu ngirim
Shuffling "output" dina UTXO balik deui ka poé mimiti cryptocurrencies tur mantuan nyumputkeun pangirim. Jang ngalampahkeun ieu, pangirim sorangan, nalika mindahkeun, ngumpulkeun acak "outputs" dina blockchain jeung mixes aranjeunna kalayan sorangan. Salajengna, anjeunna nandatanganan "outputs" kalawan ring signature-mékanisme cryptographic anu ngamungkinkeun anjeunna ngayakinkeun verifier yén koin pangirim hadir diantara "outputs" aub. The campuran koin sorangan, tangtosna, teu spent.
Nanging, urang moal tiasa ngahasilkeun kaluaran palsu pikeun nyumputkeun panampi. Ku alatan éta, dina UTXO, unggal "kaluaran" boga alamat unik sorangan, sarta ieu cryptographically numbu ka alamat panarima tina koin ieu. Ayeuna, teu aya deui jalan pikeun ngaidentipikasi hubungan antara alamat kaluaran unik sareng alamat panarima tanpa terang konci rahasia na.
Dina modél dumasar-akun, urang teu bisa maké alamat hiji-waktos (lain éta bakal geus jadi model "kaluar"). Ku alatan éta, panarima jeung pangirim kudu dicampurkeun antara akun sejenna dina blockchain nu. Dina hal ieu, hiji énkripsi 0 koin debited ti rekening dicampur (atawa 0 ditambahkeun lamun panarima dicampurkeun), tanpa sabenerna ngarobah kasaimbangan nyata maranéhanana.
Kusabab duanana pangirim sareng panarima salawasna gaduh alamat permanén, janten kedah nganggo grup anu sami pikeun nyampur nalika mindahkeun ka alamat anu sami. Éta langkung gampang ningali ieu kalayan conto.
Sebutkeun Alice mutuskeun pikeun nyumbang kana amal Bob, tapi langkung milih transferna tetep anonim ka panitén luar. Lajeng, dina raraga nyamur dirina dina widang pangirim, manéhna ogé nuliskeun rekening Adam jeung Adele. Jeung pikeun nyumputkeun Bob, tambahkeun akun Ben jeung Bill dina widang panarima. Nyieun kontribusi salajengna, Alice mutuskeun pikeun nulis Alex jeung Amanda gigireun dirina, sarta Bruce jeung Benjen gigireun Bob. Dina hal ieu, nalika analisa blockchain, dina dua transaksi ieu ngan aya hiji intersecting pasangan pamilon - Alice jeung Bob, nu de-anonymizes transaksi ieu.
Ras transaksi
Sakumaha anu parantos disebatkeun, pikeun nyumputkeun kasaimbangan anjeun dina sistem dumasar akun, pangguna énkripsi kasaimbangan sareng jumlah transferna. Dina waktos anu sami, anjeunna kedah ngabuktikeun yén kasaimbangan dina akunna tetep henteu négatip. Masalahna nyaéta nalika nyiptakeun transaksi, pangguna ngawangun bukti ngeunaan status akun na ayeuna. Naon anu bakal kajadian upami Bob ngirim transaksi ka Alice, sareng éta katampi sateuacan anu dikirim ku Alice? Lajeng transaksi Alice urang bakal dianggap sah, saprak bukti kasaimbangan diwangun saméméh transaksi Bob urang ditarima.
Kaputusan anu munggaran dina kaayaan sapertos kitu nyaéta ngabébaskeun akun dugi ka urus dilaksanakeun. Tapi pendekatan ieu teu cocog, sabab salian pajeulitna ngarengsekeun masalah sapertos dina sistem disebarkeun, dina skéma anonim teu jelas saha akun pikeun meungpeuk.
Pikeun ngajawab masalah ieu, téknologi misahkeun transaksi asup jeung kaluar: belanja boga pangaruh langsung dina neraca, bari kuitansi boga pangaruh nyangsang. Jang ngalampahkeun ieu, konsép "epoch" diwanohkeun - grup blok tina ukuran tetep. "Epoch" ayeuna ditangtukeun ku ngabagi jangkungna blok ku ukuran grup. Nalika ngolah transaksi, jaringan langsung ngamutahirkeun kasaimbangan pangirim sareng nyimpen dana panarima dina tanki panyimpen. Akumulasi dana disayogikeun pikeun anu mayar ngan nalika "era" anyar dimimitian.
Hasilna, pangguna tiasa ngirim transaksi henteu paduli sabaraha sering dana ditampi (sajauh kasaimbanganna ngamungkinkeun, tangtosna). Ukuran jaman ditangtukeun dumasar kana kumaha gancang blok nyebarkeun ngaliwatan jaringan sareng kumaha gancang transaksi asup kana blok.
Solusi ieu tiasa dianggo pikeun mindahkeun rahasia, tapi kalayan transaksi anonim, sakumaha anu bakal urang tingali engké, éta nyiptakeun masalah anu serius.
Perlindungan ngalawan serangan replay
Dina blockchains dumasar akun, unggal transaksi ditandatanganan ku konci pribadi pangirim, nu ngayakinkeun verifier yén urus teu acan dirobah sarta dijieun ku nu boga konci ieu. Tapi kumaha upami panyerang anu ngadangukeun saluran transmisi nyegat pesen ieu sareng ngirimkeun anu kadua anu sami? Verifier bakal pariksa signature tina urus tur bakal yakin kana pangarang na, sarta jaringan bakal nulis kaluar jumlah sarua tina kasaimbangan pangirim deui.
Serangan ieu disebut serangan ulang. Dina modél UTXO, serangan sapertos kitu henteu relevan, sabab panyerang bakal nyobian nganggo kaluaran anu diséépkeun, anu nyalira henteu sah sareng ditolak ku jaringan.
Pikeun nyegah ieu lumangsung, hiji widang kalayan data acak diwangun kana urus, nu disebut nonce atawa ngan saukur "uyah". Nalika ngirimkeun deui transaksi nganggo uyah, verifikasi bakal ningali naha nonce parantos dianggo sateuacanna sareng, upami henteu, nganggap transaksi éta sah. Dina raraga teu nyimpen sakabéh sajarah nonces pamaké dina blockchain nu, biasana dina urus pisan munggaran diatur sarua jeung nol, lajeng ngaronjat ku hiji. Jaringan ngan ukur tiasa mariksa yén nonce tina transaksi énggal bénten ti anu sateuacana.
Dina skéma transfer anonim, masalah validasi nonces urus timbul. Urang teu bisa sacara eksplisit meungkeut nonce ka alamat pangirim, sabab, écés, ieu de-anonymizes transfer. Kami ogé henteu tiasa nambihan hiji kana nonces sadaya akun anu milu, sabab ieu tiasa bertentangan sareng transfer anu sanés diolah.
Panulis Zether ngajukeun pikeun ngahasilkeun nonce cryptographically, gumantung kana "epoch". Salaku conto:
Ieu téh x nyaeta konci rusiah pangirim, jeung Gepoch - generator tambahan pikeun epoch, diala ku hashing string tina formulir 'Zether +'. Ayeuna masalahna sigana direngsekeun - kami henteu ngungkabkeun nonce pangirim sareng henteu ngaganggu kana nonces pamilon anu henteu terlibat. Tapi pendekatan ieu imposes watesan serius: hiji akun bisa ngirim teu leuwih ti hiji transaksi per "epoch". Masalah ieu, hanjakalna, tetep unresolved, sarta ayeuna ngajadikeun versi anonim of Zether, dina pamadegan urang, boro cocog pikeun pamakéan.
The pajeulitna Zero Pangaweruh Buktina
Dina UTXO, pangirim kedah ngabuktikeun ka jaringan yén anjeunna henteu nyéépkeun jumlah anu négatif, upami henteu tiasa ngahasilkeun koin énggal tina hawa ipis (naha ieu mungkin, kami nyerat dina salah sahiji saméméhna.
Dina versi anonim tina blockchain basis akun, ekspresi pikeun buktina langkung kompleks. Pangirimna ngabuktikeun yén:
- Jumlah dikirim positif;
- Kasaimbangan tetep non-négatip;
- Pangirim énkripsi leres jumlah transfer (kalebet nol);
- Kasaimbangan dina kasaimbangan robah ngan pikeun ngirim jeung panarima;
- Pangirimna gaduh konci pribadi kana akunna sareng anjeunna leres-leres dina daptar pangirim (diantara anu kalibet);
- Nonce anu dianggo dina transaksi disusun leres.
Pikeun bukti kompléks misalna, pangarang ngagunakeun campuran
Naon hasilna?
Dina pamadegan urang, bagian tina Zether nu brings privasi kana blockchains basis akun bisa dipaké ayeuna. Tapi di momen, versi anonim tina téhnologi nu imposes larangan serius dina pamakéan na, sarta pajeulitna dina palaksanaan na. Sanajan kitu, eta teu matak potongan yén pangarang ngarilis eta ngan sababaraha bulan kapengker, jeung sugan batur bakal manggihan solusi pikeun masalah anu aya kiwari. Barina ogé, ieu kumaha elmu dipigawé.
sumber: www.habr.com