Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute

Cuntinuemu a nostra seria nantu à u blockchain di Monero, è l'articulu di l'oghje si focalizeghja nantu à u protocolu RingCT (Ring Confidential Transactions), chì introduce transazzione cunfidenziale è novi firmati di ring. Sfurtunatamente, ci hè pocu infurmazione nantu à Internet nantu à u funziunamentu di u funziunamentu, è avemu pruvatu à cumpensà sta lacuna.

Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute

Avemu da parlà di cumu a reta oculta quantità di trasferimentu chì utilizanu stu protokollu, perchè anu abbandunatu e firmate di l'anellu di criptonote classicu, è cumu sta tecnulugia hà da sviluppà più.

Siccomu stu protokollu hè una di e tecnulugii più cumplessi in Monero, u lettore hà bisognu di una cunniscenza basica di u disignu di questa catena di bloccu è di una cunniscenza passa di a criptografia di curva ellittica (per rinfriscà sta cunniscenza, pudete leghje i primi capituli di u nostru articulu precedente circa multisignature).

protocolu RingCT

Unu di i pussibuli attacchi à e valute cryptonote hè l'analisi di blockchain basatu nantu à a cunniscenza di a quantità è u tempu di a transazzione mandata. Questu permette ristrette significativamente l'area di ricerca per e surghjenti d'interessu per l'attaccante. Per prutezzione di tali analisi, Monero hà implementatu un protokollu di transazzione anonima chì oculta cumplettamente i quantità di trasferimenti in a reta.

Hè da nutà chì l'idea di ammuccià quantità ùn hè micca nova. U sviluppatore di Bitcoin Core, Greg Maxwell, hè statu unu di i primi à discrive in u so articulu Transazzioni cunfidenziale. L'implementazione attuale di RingCT hè a so mudificazione cù a pussibilità d'utilizà e firme di ring (sia senza elli), è hè cusì chì hà u so nome - Ring Confidential Transactions.

Frà l'altri cose, u protokollu aiuta à caccià i prublemi cù u mischju di u polu - outputs di una piccula quantità (di solitu ricevutu in forma di cambiamentu da e transacciones), chì creanu più prublemi di ciò chì valenu.

In ghjennaghju 2017, una furchetta dura di a reta di Monero hà fattu, chì permette l'usu facultativu di transazzione cunfidenziale. E digià in settembre di u stessu annu, cù a versione 6 hard fork, tali transazzione sò diventate l'unicu permessu in a reta.

RingCT usa parechji meccanismi à una volta: firma di gruppu anonimu spontanea cunnessa multistrati (Firma di Gruppu Anonima Spontaneous Linkable Multilayered, in seguitu chjamata MLSAG), un schema d'impegnu (Impegni Pedersen) è prove di gamma (questu termini ùn hà micca una traduzzione stabilita in russo) .

U protocolu RingCT introduce dui tipi di transazzione anonima: simplicità è piena. A billetera genera u primu quandu una transazzione usa più di un input, u sicondu - in a situazione opposta. Differiscenu in a validazione di quantità di transazzione è i dati firmati cù una firma MLSAG (parleremu più nantu à questu quì sottu). Inoltre, transazzione di tipu pienu pò esse generatu cù qualsiasi quantità di inputs, ùn ci hè micca una diferenza fundamentale. In u libru "Zero à Monero" In questu sensu, si dice chì a decisione di limità e transazzioni sanu à un input hè stata fatta in fretta è pò cambià in u futuru.

Signature MLSAG

Ricordemu ciò chì sò l'inputs di transazzione firmati. Ogni transazzione spende è genera qualchi fondi. A generazione di fondi si faci da a creazione di outputs di transazzione (una analogia diretta hè fattura), è l'output chì a transazzione spende (dopu à tuttu, in a vita reale spendemu billette) diventa l'input (attenzione, hè assai faciule d'esse cunfusu). quì).

Un input riferenzi multiplici outputs, ma spende solu unu, cusì creendu un "fumu" per rende difficiule di analizà a storia di a traduzzione. Se una transazzione hà più di un input, allora una tale struttura pò esse rapprisintata cum'è una matrice, induve e fila sò l'inputs è i culonni sò i outputs misti. Per pruvà à a reta chì a transazzione spende esattamente i so outputs (cunnosce i so chjavi sicreti), l'inputs sò firmati cù una firma d'anellu. Una tale firma guarantisci chì u firmante sapia i chjavi sicreti per tutti l'elementi di qualsiasi colonna.

E transazzione cunfidenziale ùn utilizanu più i classici criptonote e firme d'anellu, sò stati rimpiazzati da MLSAG - una versione di firme d'anellu simili à una sola capa adattata per input multipli, LSAG.

Sò chjamati multilayer perchè firmanu parechji inputs à una volta, ognunu di i quali hè mischju cù parechji altri, vale à dì una matrice hè firmata, è micca una fila. Comu vedemu più tardi, questu aiuta à salvà a dimensione di a firma.

Fighjemu cumu si forma una firma d'anellu, usendu l'esempiu di una transazzione chì spende 2 outputs reali è usa m - 1 casuale da u blockchain per mischjà. Denotemu i chjavi publichi di i outputs chì spendemu cum'è
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute, è l'imaghjini chjave per elli in cunseguenza: Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute Cusì, avemu una matrice di taglia 2 x m. Prima, avemu bisognu di calculà e cusì chjamate sfide per ogni paru di outputs:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
Cuminciamu i calculi cù l'outputs, chì passemu cù e so chjave pubbliche:Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciuteè numeri casualiTransacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciuteIn u risultatu, avemu i seguenti valori:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute, chì avemu usatu per calculà sfida
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciuteu prossimu paru di outputs (per fà più faciule per capiscenu ciò chì sustituiscemu induve, avemu evidenziatu questi valori in diversi culori). Tutti i valori seguenti sò calculati in un cercolu cù e formule date in a prima illustrazione. L'ultima cosa da calculà hè a sfida per un paru di outputs reali.

Comu pudemu vede, tutte e culonne eccettu quella chì cuntene outputs reali utilizanu numeri generati aleatoriamenteTransacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute. di π- culonna avemu ancu bisognu di elli. TrasformemuTransacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciutein s:Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
A firma stessa hè una tupla di tutti sti valori:

Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute

Questa data hè dopu scritta in una transazzione.

Comu pudemu vede, MLSAG cuntene solu una sfida c0, chì permette di salvà a dimensione di a firma (chì hè digià bisognu di assai spaziu). In più, ogni inspectore, utilizendu i datiTransacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute, restaurà i valori c1,…, cm è verifica chìTransacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute. Cusì, u nostru anellu hè chjusu è a firma hè stata verificata.

Per e transazzione RingCT di u tipu sanu, una linea più hè aghjuntu à a matrice cù outputs mixte, ma parlemu quì sottu.

L'impegni di Pedersen

Schemi di ubligatoriu (u terminu inglese impegni hè più spessu usatu) sò usati per chì una parte pò pruvà chì cunnosci un certu sicretu (numeru) senza veramente revelà. Per esempiu, fate un certu numaru nantu à i dadi, cunzidira l'impegnu è trasmette à u partitu di verificazione. Cusì, à u mumentu di a divulgazione di u numeru sicretu, u verificatore calcula indipindente l'impegnu, assicurendu cusì chì ùn avete micca ingannatu.

L'impegni di Monero sò usati per ammuccià e quantità di trasferimenti è utilizate l'opzione più cumuna - impegni Pedersen. A propositu, un fattu interessante - à u principiu, i sviluppatori prupunenu di ammuccià e quantità per u mischju ordinariu, vale à dì, aghjunghjenu outputs per quantità arbitrarie per intruduce l'incertezza, ma dopu anu cambiatu à l'impegni (ùn hè micca un fattu chì anu salvatu nantu à). a dimensione di a transazzione, cum'è avemu da vede quì sottu).
In generale, l'impegnu s'assumiglia cusì:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciuteInduve C - u significatu di l'impegnu stessu, a - quantità nascosta, H hè un puntu fissu nantu à a curva ellittica (generatore addiziale), è x - una sorta di maschera arbitraria, un fattore di ocultazione generatu aleatoriamente. A mascara hè necessariu quì per chì un terzu ùn pò micca solu guessà u valore di l'impegnu.

Quandu una nova pruduzzione hè generata, a billetera calcula l'impegnu per questu, è quandu si spende, piglia o u valore calculatu durante a generazione o ricalculate, secondu u tipu di transazzione.

RingCT simplice

In u casu di transazzione RingCT simplici, per assicurà chì a transazzione hà creatu outputs in una quantità uguale à a quantità di inputs (ùn hà micca pruduciutu soldi fora di l'aria), hè necessariu chì a summa di l'impegni di u primu è u sicondu. quelli sò listessi, vale à dì:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
Cummissioni di impegni u cunsidereghjanu un pocu sfarente - senza una maschera:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciuteinduve a - a quantità di a cumissioni, hè dispunibule publicamente.

Stu approcciu ci permette di dimustrà à u partitu di fiducia chì usemu i stessi quantità senza divulgà.

Per fà e cose più chjaru, fighjemu un esempiu. Diciamu chì una transazzione spende dui outputs (chì significa chì diventanu input) di 10 è 5 XMR è genera trè outputs per valore 12 XMR: 3, 4 è 5 XMR. À u listessu tempu, paga una cumissioni di 3 XMR. Cusì, a quantità di soldi spentu più a quantità generata è a cumissioni hè uguali à 15 XMR. Pruvemu di calculà l'impegni è fighjemu a diffarenza in i so quantità (ricurdate di a matematica):

Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
Quì vedemu chì per l'equazioni per cunverge, avemu bisognu di e sume di e maschere di input è output per esse listessi. Per fà questu, a billetera genera aleatoriamente x1, y1, y2 è y3, è u restu x2 calcula cusì:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
Utilizendu queste maschere, pudemu dimustrà à qualsiasi verificatore chì ùn generemu micca più fondi di quelli chì spendemu, senza divulgà a quantità. Originale, nò?

RingCT pienu

In tutte e transazzioni RingCT, cuntrollà i quantità di trasferimentu hè un pocu più intricatu. In queste transazzione, a billetera ùn recalculate l'impegni per l'inputs, ma usa quelli calculati quandu sò stati generati. In questu casu, duvemu assume chì ùn averemu più a diffarenza in i sume uguali à cero, ma invece:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
z - differenza trà maschere di input è output. Se avemu cunsideratu zG cum'è una chjave publica (chì hè de facto), allora z hè a chjave privata. Cusì, sapemu i chjavi publichi è privati ​​​​currispondenti. Cù sta dati in manu, pudemu usà in a firma di l'anellu MLSAG cù e chjavi pubbliche di i outputs mischiati:
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
Cusì, una firma d'anellu validu assicurarà chì sapemu tutte e chjave private di una di e culonne, è pudemu cunnosce solu a chjave privata in l'ultima fila se a transazzione ùn genera micca più fondi di ciò chì spende. A propositu, eccu a risposta à a quistione "perchè a diffarenza in i quantità di impegni ùn porta micca à zero" - se zG = 0, allora espansione a colonna cù outputs reali.

Cumu u destinatariu di i fondi sapi quantu soldi hè statu mandatu à ellu? Tuttu hè simplice quì - u mittente di a transazzione è i chjavi di scambià di u destinatariu utilizendu u protocolu Diffie-Hellman, utilizendu a chjave di transazzione è a chjave di vista di u destinatariu è calculate u sicretu spartutu. U mittente scrive dati nantu à e quantità di output, criptate cù questa chjave sparta, in campi speciali di a transazzione.

Prove di gamma

Chì succede se utilizate un numeru negativu cum'è a quantità in impegni? Questu pò purtà à a generazione di muniti supplementari! Stu risultatu hè inaccettabile, cusì avemu bisognu di guarantiscia chì e quantità chì usemu ùn sò micca negativi (senza divulgà queste quantità, sicuru, altrimenti ci hè tantu travagliu è tuttu in vain). In altri palori, avemu da pruvà chì a somma hè in l'intervallu [0, 2n - 1].

Per fà questu, a summa di ogni output hè divisa in numeri binari è l'impegnu hè calculatu per ogni cifru separatamente. Hè megliu per vede cumu questu succede cù un esempiu.

Assumimu chì i nostri quantità sò chjuchi è si mette in 4 bits (in pratica questu hè 64 bits), è creamu un output vale 5 XMR. Calculemu l'impegni per ogni categuria è l'impegnu tutale per l'intera quantità:Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciute
Dopu, ogni impegnu hè mischju cù un surrogate (Ci-2iH) è hè firmatu in coppie cù a firma di l'anellu Borromeo (una altra firma di l'anellu), pruposta da Greg Maxwell in u 2015 (pudete leghje più nantu à questu). ccà):
Transacciones cunfidenziale in Monero, o cumu trasfiriri cose scunnisciute à destinazioni scunnisciutePigliatu inseme, questu hè chjamatu prova di gamma è vi permette di assicurà chì l'impegni utilizanu quantità in u range [0, 2n - 1].

Chi c'è vicinu?

In l'implementazione attuale, e prove di gamma occupanu assai spaziu - 6176 bytes per output. Questu porta à transazzione più grande è dunque tariffi più alti. Per riduce a dimensione di una transazzione Monero, i sviluppatori introducenu bulletproofs invece di e firme Borromeo - un mecanismu di prova di gamma senza impegni bitwise. Sicondu alcune stime, sò capaci di riduce a dimensione di a prova di gamma finu à 94%. In modu, à a mità di lugliu a tecnulugia hà passatu audit da Kudelski Security, chì ùn hà micca revelatu alcuna mancanza significativa nè in a tecnulugia stessu nè in a so implementazione. A tecnulugia hè digià aduprata in a reta di teste, è cù a nova furchetta dura, pò esse prubabilmente spustà à a reta principale.

Fate e vostre dumande, suggerisce temi per novi articuli nantu à tecnulugii in u campu di criptocurrency, è ancu abbonate à u nostru gruppu in Facebookper mantene l'aghjurnamentu cù i nostri avvenimenti è publicazioni.

Source: www.habr.com

Add a comment