Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert

Mir fuere weider eis Serie iwwer de Monero Blockchain, an den Artikel vun haut wäert sech op de RingCT (Ring Confidential Transactions) Protokoll konzentréieren, deen vertraulech Transaktiounen an nei Ring Ënnerschrëften virstellt. Leider gëtt et wéineg Informatioun um Internet iwwer wéi et funktionnéiert, a mir hu probéiert dës Lück ze fëllen.

Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert

Mir wäerte schwätzen iwwer wéi d'Netz Transferbetrag verstoppt mat dësem Protokoll, firwat se déi klassesch Kryptonote Ring Ënnerschrëften opginn hunn, a wéi dës Technologie weider entwéckelen.

Well dëse Protokoll eng vun de komplexsten Technologien am Monero ass, brauch de Lieser e Basiskenntnisser iwwer den Design vun dësem Blockchain an e passéierende Wëssen vun elliptesch Curve Kryptografie (fir dëst Wëssen opzebauen, kënnt Dir déi éischt Kapitele vun eisem liesen virdrun Artikel iwwer multisignatures).

RingCT Protokoll

Ee vun de méiglechen Attacken op Kryptonote Währungen ass Blockchain Analyse baséiert op Wëssen iwwer de Betrag an d'Zäit vun der geschéckter Transaktioun. Dëst erlaabt däitlech schmuel der Sich Beräich fir Sortie vun Interessi un den Ugräifer. Fir géint esou Analyse ze schützen, huet Monero en anonyme Transaktiounsprotokoll implementéiert, deen d'Quantitéiten vun den Transferten am Netz komplett verstoppt.

Et ass derwäert ze bemierken datt d'Iddi fir Betrag ze verstoppen net nei ass. Bitcoin Core Entwéckler Greg Maxwell war ee vun deenen éischten et a sengem beschreiwen Artikel Vertraulech Transaktiounen. Déi aktuell Implementatioun vu RingCT ass seng Ännerung mat der Méiglechkeet Ring Ënnerschrëften ze benotzen (egal ob ouni hinnen), an dat ass wéi et säin Numm krut - Ring Confidential Transactions.

Ënner anerem hëlleft de Protokoll d'Problemer mat der Vermëschung vu Staubausgaben ze läschen - Ausgänge vun engem klenge Betrag (normalerweis a Form vun Transaktiounsännerung kritt), déi méi Problemer erstallt hunn wéi se wäert sinn.

Am Januar 2017 ass eng haart Gabel vum Monero Netzwierk stattfonnt, wat d'optional Notzung vu vertraulech Transaktiounen erlaabt. A schonn am September vum selwechte Joer, mat der Versioun 6 Hard Gabel, goufen esou Transaktiounen déi eenzeg déi am Netz erlaabt sinn.

RingCT benotzt verschidde Mechanismen gläichzäiteg: multilayered verbonne spontan anonyme Grupp Ënnerschrëften (Multilayered Linkable Spontaneous Anonymous Group Signature, hei ënnendrënner als MLSAG bezeechent), en Engagement Schema (Pedersen Engagementer) a Range Beweiser (dëse Begrëff huet keng etabléiert Iwwersetzung op Russesch) .

De RingCT Protokoll féiert zwou Aarte vun anonyme Transaktiounen vir: einfach a voll. De Portemonnaie generéiert déi éischt wann eng Transaktioun méi wéi een Input benotzt, déi zweet - an der Géigendeel Situatioun. Si ënnerscheeden sech an der Validatioun vun Transaktiounsbetrag an den Donnéeën ënnerschriwwen mat enger MLSAG Ënnerschrëft (mir schwätze méi iwwer dëst hei ënnen). Ausserdeem kënnen Transaktioune vum Typ voll mat all Zuel vun Input generéiert ginn, et gëtt kee fundamentalen Ënnerscheed. Am Buch "Null op Monero" An dëser Hisiicht gëtt gesot datt d'Decisioun fir voll Transaktiounen op een Input ze limitéieren ass séier gemaach a kann an Zukunft änneren.

MLSAG Ënnerschrëft

Loosst eis erënneren wat ënnerschriwwen Transaktiounsinputen sinn. All Transaktioun verbréngt a generéiert e puer Fongen. D'Generatioun vu Fongen geschitt andeems Transaktiounsausgaben erstallt ginn (eng direkt Analogie ass Rechnungen), an d'Ausgab, déi d'Transaktioun verbréngt (schliisslech, am richtege Liewen verbrénge mir Geldschäiner) gëtt den Input (opgepasst, et ass ganz einfach duercherneen ze ginn hei).

En Input referenzéiert méi Ausgänge, awer verbréngt nëmmen eng, sou datt en "Smokescreen" erstellt fir et schwéier ze maachen d'Iwwersetzungsgeschicht ze analyséieren. Wann eng Transaktioun méi wéi een Input huet, da kann esou eng Struktur als Matrix duergestallt ginn, wou d'Reihen d'Inputen sinn an d'Säulen déi gemëschte Ausgab sinn. Fir dem Netz ze beweisen datt d'Transaktioun genee seng Ausgänge verbréngt (kennt hir geheime Schlësselen), sinn d'Inputen mat enger Ring Ënnerschrëft ënnerschriwwen. Sou eng Ënnerschrëft garantéiert datt den Ënnerschreiwer d'Geheimschlëssel fir all Elementer vun enger vun de Sailen wousst.

Vertraulech Transaktiounen benotzen net méi klassesch kryptonote Ring Ënnerschrëften, si goufen duerch MLSAG ersat - eng Versioun vun ähnlechen Single-Layer Ring Ënnerschrëften ugepasst fir verschidde Inputen, LSAG.

Si ginn Multilayer genannt, well se e puer Input gläichzäiteg ënnerschreiwen, jidderee mat e puer aneren gemëscht ass, dh eng Matrix ass ënnerschriwwen, an net eng Zeil. Wéi mir spéider gesinn, hëlleft dëst op der Ënnerschrëftgréisst ze spueren.

Loosst eis kucken wéi eng Ring Ënnerschrëft geformt gëtt, andeems Dir d'Beispill vun enger Transaktioun benotzt, déi 2 real Ausgänge verbréngt a m - 1 zoufälleg aus der Blockchain benotzt fir ze vermëschen. Loosst eis d'ëffentlech Schlëssele vun den Ausgänge bezeechnen, déi mir ausginn
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert, a Schlësselbilder fir si entspriechend: Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert Also kréie mir eng Matrix vu Gréisst 2xm vun. Als éischt musse mir déi sougenannt Erausfuerderunge fir all Pair vun Ausgänge berechnen:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
Mir starten d'Berechnungen mat den Ausgängen, déi mir mat hiren ëffentleche Schlësselen ausginn:Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiertan zoufälleg ZuelenVertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiertAls Resultat kréie mir déi folgend Wäerter:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert, déi mir benotze fir Erausfuerderung ze berechnen
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiertdéi nächst Pair vun Ausgänge (fir et méi einfach ze verstoen wat mir ersetzen wou, hu mir dës Wäerter a verschiddene Faarwen beliicht). All déi folgend Wäerter ginn an engem Krees berechent mat de Formelen, déi an der éischter Illustratioun uginn. Déi lescht Saach fir ze berechnen ass d'Erausfuerderung fir e Paar vun echte Ausgaben.

Wéi mir kënne gesinn, benotzen all Sailen ausser déi mat echte Ausgänge zoufälleg generéiert ZuelenVertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert. fir π- Kolonn wäerte mir se och brauchen. Loosst eis transforméierenVertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiertan s:Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
D'Ënnerschrëft selwer ass en Tupel vun all dëse Wäerter:

Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert

Dës Donnéeë ginn dann an eng Transaktioun geschriwwe.

Wéi mir kënne gesinn, enthält MLSAG nëmmen eng Erausfuerderung c0, wat Iech erlaabt Iech op Ënnerschrëftgréisst ze spueren (wat scho vill Plaz brauch). Weider, all Inspekter, benotzt d'DonnéeënVertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert, restauréiert d'Wäerter c1, ..., cm a kontrolléiert datVertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert. Sou ass eise Rank zou an d'Ënnerschrëft ass verifizéiert.

Fir RingCT Transaktioune vum vollen Typ gëtt eng méi Zeil an d'Matrix mat gemëschten Ausgänge bäigefüügt, awer mir wäerten iwwer dëst hei ënnen schwätzen.

Pedersen Engagementer

Obligatioun Schemaen (den englesche Begrëff Engagementer gëtt méi dacks benotzt) gi benotzt fir datt eng Partei beweise kann datt se e gewësse Geheimnis (Nummer) kennen ouni et tatsächlech ze verroden. Zum Beispill, Rullo Dir eng gewëssen Zuel op d'Wierfel, betruecht Engagement a gitt et op d'verifizéieren Partei. Also, am Moment vun der Verëffentlechung vun der geheimer Zuel, berechent de Verifizéierer onofhängeg d'Engagement, an doduerch sécherzestellen datt Dir him net täuscht hutt.

Monero Engagementer gi benotzt fir d'Quantitéiten vun den Transfere ze verstoppen an déi meescht üblech Optioun ze benotzen - Pedersen Engagementer. Iwwregens, eng interessant Tatsaach - fir d'éischt hunn d'Entwéckler proposéiert d'Quantitéiten duerch normal Vermëschung ze verstoppen, dat heescht Ausgänge fir arbiträr Betrag bäizefügen fir Onsécherheet anzeféieren, awer dunn hunn se op Engagementer gewiesselt (et ass net e Fakt datt se gespuert hunn) d'Transaktiounsgréisst, wéi mir hei ënnen gesinn).
Am Allgemengen gesäit Engagement esou aus:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiertWou C - d'Bedeitung vum Engagement selwer, a - verstoppte Betrag, H ass e fixe Punkt op der elliptesch Curve (Zousätzleche Generator), an x - eng Zort vun arbiträr Mask, e verstoppt Faktor zoufälleg generéiert. D'Mask ass hei gebraucht fir datt en Drëtte net einfach de Wäert vum Engagement kann roden.

Wann eng nei Ausgab generéiert gëtt, berechent de Portemonnaie Engagement dofir, a wann se ausginn, hëlt se entweder de Wäert berechent während der Generatioun oder berechent se, ofhängeg vun der Aart vun der Transaktioun.

RingCT einfach

Am Fall vun einfachen RingCT Transaktiounen, fir sécherzestellen datt d'Transaktioun Ausgänge erstallt huet an engem Betrag gläich wéi d'Quantitéit vun den Inputen (net Suen aus dënnem Loft produzéiert), ass et néideg datt d'Zomm vun Engagementer vun der éischter an zweeter déi selwecht sinn, dat ass:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
Engagement Kommissiounen betruecht et e bëssen anescht - ouni Mask:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiertwou a - de Betrag vun der Kommissioun, et ass ëffentlech verfügbar.

Dës Approche erlaabt eis der vertraulech Partei ze beweisen datt mir déiselwecht Betrag benotzen ouni se ze verroden.

Fir d'Saache méi kloer ze maachen, kucke mer e Beispill. Loosst eis soen datt eng Transaktioun zwee Ausgänge verbréngt (dat heescht datt se Input ginn) vun 10 a 5 XMR a generéiert dräi Ausgänge am Wäert vun 12 XMR: 3, 4 a 5 XMR. Zur selwechter Zäit bezilt hien eng Kommissioun vun 3 XMR. Also ass d'Quantitéit u Sue verbraucht plus de Betrag generéiert an d'Kommissioun gläich wéi 15 XMR. Loosst eis probéieren Engagementer ze berechnen an den Ënnerscheed an hire Betrag ze kucken (erënnert un d'Mathematik):

Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
Hei gesi mir datt fir d'Gleichung ze konvergéieren, brauche mir d'Zomme vun den Input- an Ausgangsmasken déiselwecht ze sinn. Fir dëst ze maachen, generéiert de Portemonnaie zoufälleg x1, y1, y2 an y3, an déi reschtlech x2 berechent esou:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
Mat dëse Masken kënne mir all Verifizéierer beweisen datt mir net méi Fongen generéiere wéi mir ausginn, ouni de Betrag ze verroden. Original, richteg?

RingCT voll

A voller RingCT Transaktiounen ass d'Iwwerweisungsbetrag e bësse méi komplizéiert ze kontrolléieren. An dësen Transaktiounen berechent de Portemonnaie keng Engagementer fir Inputen, awer benotzt déi berechent wann se generéiert goufen. An dësem Fall musse mir dovun ausgoen, datt mir net méi den Ënnerscheed an de Zomme gläich Null kréien, mee amplaz:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
et ass z - Ënnerscheed tëscht Input an Output Masken. Wa mir betruechten zG als ëffentleche Schlëssel (wat et de facto ass), dann z ass de private Schlëssel. Also kennen mir déi ëffentlech an entspriechend privat Schlësselen. Mat dësen Donnéeën an der Hand kënne mir et an der MLSAG Ring Ënnerschrëft benotzen zesumme mat den ëffentleche Schlëssele vun den Ausgaben déi gemëscht ginn:
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
Sou wäert eng valabel Ring Ënnerschrëft suergen, datt mir all privat Schlëssele vun enger vun de Sailen wëssen, a mir kënnen nëmmen de private Schlëssel an der leschter Zeil wëssen, wann d'Transaktioun net méi Fongen generéiert wéi se verbréngt. Iwwregens, hei ass d'Äntwert op d'Fro "Firwat féiert den Ënnerscheed an de Betrag vun Engagementer net op Null" - wann zG = 0, da wäerte mir d'Kolonn mat realen Ausgänge erweideren.

Wéi weess den Empfänger vun de Fongen wéi vill Suen him geschéckt goufen? Alles ass einfach hei - de Sender vun der Transaktioun an den Empfänger austausche Schlësselen mat dem Diffie-Hellman Protokoll, mam Transaktiounsschlëssel an dem Empfänger säi Sichtschlëssel a berechnen de gemeinsame Geheimnis. De Sender schreift Daten iwwer d'Ausgabbetrag, verschlësselte mat dësem gemeinsame Schlëssel, a spezielle Felder vun der Transaktioun.

Range Beweiser

Wat geschitt wann Dir eng negativ Zuel als Betrag an Engagementer benotzt? Dëst kann zu der Generatioun vun zousätzleche Mënzen féieren! Dëst Resultat ass inakzeptabel, also musse mir garantéieren datt d'Quantitéiten, déi mir benotzen, net negativ sinn (ouni dës Zommen ze verroden, natierlech, soss gëtt et sou vill Aarbecht an alles ëmsoss). An anere Wierder, mir mussen beweisen datt d'Zomm am Intervall ass [0, 2n - 1].

Fir dëst ze maachen, gëtt d'Zomm vun all Ausgang a binäre Zifferen opgedeelt an d'Engagement gëtt fir all Ziffer separat berechent. Et ass besser ze gesinn wéi dëst mat engem Beispill geschitt.

Loosst eis unhuelen datt eis Quantitéiten kleng sinn an a 4 Bits passen (an der Praxis ass et 64 Bits), a mir kreéieren en Ausgang am Wäert vun 5 XMR. Mir berechent Engagementer fir all Kategorie an den Total Engagement fir de ganze Betrag:Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiert
Als nächst gëtt all Engagement mat engem Surrogat gemëscht (Ci-2iH) a gëtt a Pairen ënnerschriwwen mat der Borromeo Ring Ënnerschrëft (eng aner Ring Ënnerschrëft), proposéiert vum Greg Maxwell am 2015 (Dir kënnt méi doriwwer liesen hei):
Vertraulech Transaktiounen am Monero, oder wéi een onbekannt Saachen op onbekannt Destinatiounen transferéiertZesummegefaasst gëtt dëst Range Beweis genannt an erlaabt Iech sécherzestellen datt Engagementer Betrag am Beräich benotzen [0, 2n - 1].

Wat d'nächst?

An der aktueller Implementatioun huelen d'Gammebeweiser vill Plaz op - 6176 Bytes pro Ausgang. Dëst féiert zu méi grouss Transaktiounen an dofir méi héich Fraisen. Fir d'Gréisst vun enger Monero Transaktioun ze reduzéieren, ginn d'Entwéckler Bulletproofs aféieren anstatt Borromeo Ënnerschrëften - e Range Beweis Mechanismus ouni bitwise Engagementer. No e puer Schätzungen, si kënnen d'Gréisst vum Range Beweis ëm bis zu 94% reduzéieren. Iwwregens, Mëtt Juli ass d'Technologie passéiert Audit vu Kudelski Security, déi weder an der Technologie selwer oder an hirer Ëmsetzung keng bedeitend Mängel opgedeckt huet. D'Technologie gëtt schonn am Testnetz benotzt, a mat der neier Hardgabel kann et wahrscheinlech an den Haaptnetz réckelen.

Stellt Är Froen, proposéiere Themen fir nei Artikelen iwwer Technologien am Beräich vun der Krypto Währung, an abonnéiert Iech och op eise Grupp an Facebookfir mat eisen Eventer a Publikatiounen um neiste Stand ze bleiwen.

Source: will.com

Setzt e Commentaire