Ngeunaan anonymity dina blockchains basis akun

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 transaksi rahasia dina Monero, sarta ogé dilaksanakeun review komparatif téknologi anu aya dina widang ieu. Sanajan kitu, sagala cryptocurrencies anonim kiwari diwangun dina model data diusulkeun ku Bitcoin - Unspent Transaksi Output (hereinafter UTXO). Pikeun blockchains dumasar akun sapertos Ethereum, solusi anu aya pikeun ngalaksanakeun anonimitas sareng karusiahan (contona, Möbius atawa Aztec) nyoba ngayakeun réplikasi modél UTXO dina kontrak pinter.

Dina Pébruari 2019, sakelompok peneliti ti Stanford University sareng Visa Research dileupaskeun préprint "Zether: Nuju privasi di dunya kontrak pinter." Panulis mangrupikeun anu pangheulana ngajukeun pendekatan pikeun mastikeun anonimitas dina blockchain dumasar-akun sareng nampilkeun dua vérsi kontrak pinter: pikeun transaksi rahasia (nyumputkeun kasaimbangan sareng jumlah transfer) sareng anonim (nyumputkeun panarima sareng pangirim). Kami mendakan téknologi anu diusulkeun pikaresepeun sareng hoyong ngabagi desainna, ogé nyarioskeun naha masalah anonimitas dina blockchain dumasar akun dianggap sesah pisan sareng naha pangarang junun ngabéréskeunana sapinuhna.

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:

Ngeunaan anonymity dina blockchains basis akun

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:

Ngeunaan anonymity dina blockchains basis akun

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 El Gamal. Gawéna saperti kieu. Nalika Alice hayang ngirim Bob b koin dumasar alamat (konci publik na) Y, manehna milih nomer acak r sareng énkripsi jumlahna:

Ngeunaan anonymity dina blockchains basis akun
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.

Ngeunaan anonymity dina blockchains basis akun

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.

Ngeunaan anonymity dina blockchains basis akun

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:

Ngeunaan anonymity dina blockchains basis akun
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. artikel). Sarta ogé asup "inputs" kalawan signature ring ngabuktikeun yén diantara koin keur dicampur aya dana milik anjeunna.

Dina versi anonim tina blockchain basis akun, ekspresi pikeun buktina langkung kompleks. Pangirimna ngabuktikeun yén:

  1. Jumlah dikirim positif;
  2. Kasaimbangan tetep non-négatip;
  3. Pangirim énkripsi leres jumlah transfer (kalebet nol);
  4. Kasaimbangan dina kasaimbangan robah ngan pikeun ngirim jeung panarima;
  5. Pangirimna gaduh konci pribadi kana akunna sareng anjeunna leres-leres dina daptar pangirim (diantara anu kalibet);
  6. Nonce anu dianggo dina transaksi disusun leres.

Pikeun bukti kompléks misalna, pangarang ngagunakeun campuran Bulletproof (salah sahiji pangarang, ku jalan, nyandak bagian dina kreasi na) jeung Protokol Sigma, nu disebut sigma-pélor. Buktina resmi tina pernyataan sapertos mangrupikeun tugas anu rada sesah, sareng éta ngabatesan pisan jumlah jalma anu daék nerapkeun téknologi.

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

Tambahkeun komentar