Circa l'anonimatu in i blockchains basati in contu

Avemu statu interessatu in u tema di l'anonimatu in cripto muniti per un bellu pezzu è pruvate à seguità u sviluppu di tecnulugia in questa zona. In i nostri articuli avemu digià discututu in dettu i principii di u funziunamentu transazzione cunfidenziale in Monero, è ancu realizatu rivista comparativa tecnulugia esistenti in stu campu. In ogni casu, tutte e criptovalute anonime oghje sò custruite nantu à u mudellu di dati prupostu da Bitcoin - Unspent Transaction Output (in seguitu UTXO). Per i blocchi basati in contu cum'è Ethereum, soluzioni esistenti per implementà l'anonimatu è a cunfidenziale (per esempiu, Mobius o Azteca) pruvatu à riplicà u mudellu UTXO in cuntratti intelligenti.

In ferraghju 2019, un gruppu di circadori di l'Università di Stanford è Visa Research liberatu prestampa "Zether: Versu a privacy in u mondu di i cuntratti intelligenti". L'autori sò stati i primi à prupone un approcciu per assicurà l'anonimatu in i blocchi basati in contu è presentanu duie versioni di un cuntrattu intelligenti: per transazzione cunfidenziale (oculta saldi è quantità di trasferimentu) è anònimu (ocultendu u destinatariu è u mittente). Truvemu a tecnulugia pruposta interessante è vuleria sparte u so disignu, è ancu di parlà per quessa chì u prublema di l'anonimatu in i blockchains basati in contu hè cunsideratu assai difficiuli è se l'autori hà sappiutu risolviri cumplettamente.

Circa a struttura di sti mudelli di dati

In u mudellu UTXO, una transazzione hè custituita da "inputs" è "outputs". Un analogu direttu di "outputs" hè i bills in a vostra billetera: ogni "output" hà qualchì denominazione. Quandu pagate qualcunu (formate una transazzione) spende una o più "outputs", in quale casu diventanu "inputs" di a transazzione, è u blockchain li marca cum'è spentu. In questu casu, u destinatariu di u vostru pagamentu (o voi stessu, se avete bisognu di cambià) riceve i "outputs" di novu generati. Questu pò esse rapprisintatu schematicamente cusì:

Circa l'anonimatu in i blockchains basati in contu

Blockchains basati in contu sò strutturati assai cum'è u vostru contu bancariu. Solu trattanu di a quantità in u vostru contu è a quantità di trasferimentu. Quandu si trasferisce qualchì quantità da u vostru contu, ùn brusgià micca "outputs", a reta ùn hà micca bisognu di ricurdà chì muniti sò stati spesi è chì ùn anu micca. In u casu più simplice, a verificazione di a transazzione si riduce à verificà a firma di u mittente è a quantità nantu à u so equilibriu:

Circa l'anonimatu in i blockchains basati in contu

Analisi di a tecnulugia

In seguitu, parlemu di cumu Zether oculta a quantità di transazzione, u destinatariu è u mittente. Quandu avemu discrittu i principii di u so funziunamentu, avemu da nutà e sferenze in e versioni cunfidenziale è anònimu. Siccomu hè assai più faciule per assicurà a cunfidenziale in i blocchi basati in contu, alcune di e restrizioni imposte da l'anonimizazione ùn saranu micca pertinenti per a versione cunfidenziale di a tecnulugia.

Oculta saldi è quantità di trasferimentu

Un schema di criptografia hè utilizatu per criptà i saldi è trasferisce quantità in Zether El Gamal. Funziona cum'è seguita. Quandu Alice vole mandà à Bob b muniti per indirizzu (a so chjave publica) Y, ella sceglie un numeru aleatoriu r è cripta a quantità:

Circa l'anonimatu in i blockchains basati in contu
induve C - quantità criptata, D - valore ausiliariu necessariu per decifrare sta quantità, G - un puntu fissu nantu à a curva ellittica, quandu multiplicate da a chjave secreta, a chjave publica hè ottenuta.

Quandu Bob riceve sti valori, solu l'aghjunghje à u so equilibriu cifratu in u listessu modu, per quessa chì stu schema hè cunvenutu.

In listessu modu, Alice sottrae i stessi valori da u so equilibriu, solu cum'è Y usa a vostra chjave publica.

Oculta u destinatariu è u mittente

Shuffling "outputs" in UTXO data di i primi tempi di i criptu di criptu è aiuta à ammuccià u mittente. Per fà questu, u mittente stessu, quandu face un trasferimentu, recullà "outputs" aleatorii in u blockchain è mischjà cù u so propiu. In seguitu, firma l'"outputs" cù una firma d'anellu - un mecanismu criptograficu chì li permette di cunvince u verificatore chì e muniti di u mittente sò prisenti trà i "outputs" implicati. I muniti misti stessi, sicuru, ùn sò micca spesi.

Tuttavia, ùn pudemu micca generà risultati falsi per ammuccià u destinatariu. Dunque, in UTXO, ogni "output" hà u so propiu indirizzu unicu, è hè criptograficamente ligatu à l'indirizzu di u destinatariu di sti muniti. À u mumentu, ùn ci hè manera di identificà a relazione trà l'indirizzu di output unicu è l'indirizzu di u destinatariu senza cunnosce e so chjave secrete.

In u mudellu basatu in contu, ùn pudemu micca usà indirizzi una volta (altrimenti serà digià un mudellu "exits"). Dunque, u destinatariu è u mittente anu da esse mischju trà altri cunti in u blockchain. In questu casu, una munita criptata 0 hè debitata da i cunti misti (o 0 sò aghjuntu se u destinatariu hè mischju), senza veramente cambià u so equilibriu veru.

Siccomu u mittente è u destinatariu anu sempre un indirizzu permanente, hè necessariu di utilizà i stessi gruppi per mischjà quandu si trasferisce à i stessi indirizzi. Hè più faciule per vede questu cun un esempiu.

Dicemu chì Alice decide di fà una cuntribuzione à a carità di Bob, ma preferisce chì u trasferimentu resta anonimu à un observatore esternu. Allora, per disguise in u campu di u mittente, entra ancu in i cunti di Adam è Adele. È per ammuccià Bob, aghjunghje i cunti di Ben è Bill in u campu di u destinatariu. Fendu a prossima cuntribuzione, Alice hà decisu di scrive Alex è Amanda accantu à ella, è Bruce è Benjen accantu à Bob. In questu casu, quandu analizà u blockchain, in queste duie transazzione ci hè solu un paru intersecting di participanti - Alice è Bob, chì de-anonymizes sti transazzione.

Circa l'anonimatu in i blockchains basati in contu

Corsi di transazzione

Comu avemu digià citatu, per ammuccià u vostru equilibriu in sistemi basati in contu, l'utilizatore cripta u so equilibriu è a quantità di trasferimentu. À u listessu tempu, deve pruvà chì u saldo nantu à u so contu ùn resta micca negativu. U prublema hè chì quandu crea una transazzione, l'utilizatore custruisce una prova in quantu à u so status di u contu attuale. Chì succede se Bob manda una transazzione à Alice, è hè accettata prima di quella mandata da Alice ? Allora a transazzione di Alice serà cunsiderata invalida, postu chì a prova di equilibriu hè stata custruita prima chì a transazzione di Bob hè stata accettata.

Circa l'anonimatu in i blockchains basati in contu

A prima decisione chì vene in una tale situazione hè di freeze u contu finu à chì a transazzione hè realizata. Ma questu approcciu ùn hè micca adattatu, perchè in più di a cumplessità di risolve un tali prublema in un sistema distribuitu, in un schema anonimu ùn serà micca chjaru quale u contu per bluccà.

Per risolve stu prublema, a tecnulugia separa e transazzioni entranti è in uscita: u gastru hà un effettu immediatu nantu à u bilanciu, mentre chì i ricevuti anu un effettu ritardatu. Per fà questu, u cuncettu di "epica" hè introduttu - un gruppu di blocchi di una dimensione fissa. A "epica" attuale hè determinata dividendu l'altitudine di u bloccu da a dimensione di u gruppu. Quandu si tratta di una transazzione, a rete aghjurnà immediatamente u bilanciu di u mittente è guarda i fondi di u destinatariu in un tank di almacenamiento. I fondi accumulati sò dispunibuli per u pagatore solu quandu una nova "era" principia.

In u risultatu, l'utilizatore pò mandà transazzione indipendentemente da quantu spessu i fondi sò ricevuti (finu à u so equilibriu permette, sicuru). A dimensione di l'epica hè determinata nantu à quantu rapidamente i blocchi si propaganu à traversu a reta è quantu rapidamente una transazzione entra in un bloccu.

Questa suluzione funziona bè per i trasferimenti cunfidenziale, ma cù transazzione anonima, cum'è vedemu dopu, crea prublemi serii.

Prutezzione contr'à attacchi di replay

In i blocchi basati in contu, ogni transazzione hè firmata da a chjave privata di u mittente, chì cunvince u verificatore chì a transazzione ùn hè micca stata mudificata è hè stata creata da u pruprietariu di sta chjave. Ma chì si un aggressore chì stava à sente u canali di trasmissione intercepte stu missaghju è manda esattamente u listessu secondu? U verificatore verificarà a firma di a transazzione è serà cunvinta di a so autore, è a rete scriverà a stessa quantità da u saldo di u mittente di novu.

Stu attaccu hè chjamatu un attaccu di replay. In u mudellu UTXO, tali attacchi ùn sò micca pertinenti, postu chì l'attaccante pruvucarà à utilizà l'outputs spent, chì in sè stessu ùn hè micca validu è hè rifiutatu da a reta.

Per impediscenu questu, un campu cù dati aleatorii hè custruitu in a transazzione, chì hè chjamatu nonce o solu "sale". Quandu ripresentà una transazzione cù un sali, u verificatore cerca per vede s'ellu hè statu usatu prima di u nonce è, se no, cunsidereghja a transazzione valida. Per ùn guardà tutta a storia di l'utilizatori nonces in u blockchain, di solitu in a prima transazzione hè stabilitu uguali à cero, è dopu aumentatu da unu. A reta pò verificà solu chì u nonce di a nova transazzione difiere da u precedente per unu.

In u schema di trasferimentu anònimu, u prublema di validazione di transazzione nonces sorge. Ùn pudemu micca ligà esplicitamente u nonce à l'indirizzu di u mittente, postu chì, ovviamente, questu de-anonimizza u trasferimentu. Ùn pudemu ancu aghjunghje unu à i nonces di tutti i cunti participanti, postu chì questu pò cunflittu cù altri trasferimenti chì sò processati.

L'autori di Zether pruponi di generà u nonce criptograficamente, secondu a "epica". Per esempiu:

Circa l'anonimatu in i blockchains basati in contu
x hè a chjave secreta di u mittente, è Gepoch - un generatore supplementu per l'epica, ottenutu da hashing una stringa di a forma "Zether +". Avà u prublema pare esse risolta - ùn palesemu micca u nonce di u mittente è ùn interferiscenu micca cù i nonces di i participanti micca implicati. Ma questu approcciu impone una limitazione seria: un cuntu pò mandà micca più di una transazzione per "epica". Stu prublema, sfurtunatamenti, resta senza risolve, è attualmente rende a versione anonima di Zether, in u nostru parè, pocu adattatu per l'usu.

A cumplessità di a prova di cunniscenza zero

In UTXO, u mittente deve dimustrà à a reta chì ùn spende micca una quantità negativa, altrimenti diventa pussibule di generà novi muniti fora di l'aria (perchè questu hè pussibule, avemu scrittu in unu di i precedenti). articuli). È ancu firmate l'"inputs" cù una firma d'anellu per pruvà chì trà e muniti chì sò mischiati ci sò fondi chì appartenenu à ellu.

In a versione anonima di u blockchain basatu in contu, l'espressioni per a prova sò assai più cumplessi. U mittente prova chì:

  1. A quantità mandata hè pusitiva;
  2. U equilibriu resta micca negativu;
  3. U mittente hà criptatu currettamente l'ammonti di trasferimentu (cumpresu zero);
  4. U equilibriu nantu à u bilanciu cambia solu per u mittente è u destinatariu;
  5. U mittente pussede a chjave privata di u so contu è hè veramente nantu à a lista di i mittenti (trà quelli implicati);
  6. U Nonce utilizatu in a transazzione hè cumpostu currettamente.

Per una prova cusì cumplessa, l'autori utilizanu una mistura Bulletproof (unu di l'autori, per via, hà participatu à a so creazione) è protocolu Sigma, chì sò chjamati Sigma-bullets. A prova formale di una tale dichjarazione hè un compitu piuttostu difficiule, è limita assai u numeru di persone disposti à implementà a tecnulugia.

Ciò à a fine?

In u nostru parè, a parte di Zether chì porta a privacy à i blocchi basati in contu pò esse usata avà. Ma à u mumentu, a versione anonima di a tecnulugia impone restrizioni seri à u so usu, è a so cumplessità nantu à a so implementazione. Tuttavia, ùn deve esse scontu chì l'autori l'anu liberatu solu uni pochi di mesi fà, è forsi qualcunu altru truvà una suluzione à i prublemi chì esistenu oghje. Dopu tuttu, hè cusì chì a scienza hè fatta.

Source: www.habr.com

Add a comment