Čeprav Satoshi Nakamoto bel papir nakazuje, da je bila zasebnost oblikovalski cilj protokola Bitcoin, analiza veriženja blokov pogosto lahko zlomi zasebnost uporabnikov. To je težava. Uporabniki Bitcoinov morda ne bodo želeli, da svet ve, kje trošijo svoj denar, kaj zaslužijo ali koliko imajo v lasti, medtem ko podjetja morda ne bodo želela razkrivati podrobnosti transakcij konkurentom – če naštejemo nekaj primerov.
Vendar obstajajo rešitve za ponovno pridobitev zasebnosti, kot je CoinJoin. Nekatere najbolj priljubljene mešalne rešitve, ki so danes na voljo, uporabljajo ta trik, vključno z denarnico Wasabi (ki uporablja ZeroLink) in denarnico Samourai (ki uporablja Whirlpool). V obeh primerih uporabniki sekajo svoje kovance v enake količine, da jih med seboj pomešajo. Uporaba enakih količin je ključni korak za učinkovito mešanje.
Prvi del te miniserije je zajemal nov mešalni protokol v razvoju za Bitcoin Cash, imenovan CashFusion, ki izpodbija domnevo, da so za uspešno kombinacijo potrebne enake količine.
Toda tudi leta 2017 je v a papir pri podrobni analizi zasebnosti neenake količine CoinJoins so raziskovalci z univerze RWTH Aachen in tehnološkega inštituta Karlsruhe predlagali rešitev za pridobitev zasebnosti prek CoinJoin brez potrebe po uporabi enakih količin: mešanje nahrbtnika.
Opomba avtorja: Če ne veste, kaj je transakcija CoinJoin ali zakaj se za mešanje štejejo enaki zneski, najprej preberite prvi del te miniserije – ali vsaj prva dva oddelka tega članka.
Mešanje v primerjavi s plačevanjem
Kot je razloženo v prvem delu te miniserije, enakovredno mešanje bitcoinov verjetno danes ponuja najboljšo dosegljivo zasebnost na verigi Bitcoin. Vendar pa uporabnikom pušča neenake spremembe. Ti ne ponujajo enake ravni zasebnosti in bi lahko celo predstavljali tveganje za zasebnost. CashFusion bi lahko pomagal rešiti te neenake rezultate.
Ampak obstaja še en problem. Zahteva po enakih zneskih uporabnikom preprečuje dejanska plačila prek transakcij CoinJoin: malo verjetno je, da bi trgovec zaračunal natančen znesek, ki ga zahteva CoinJoin. Namesto tega se enakovredni CoinJoins v resnici uporabljajo samo za mešanje *: udeleženci vložijo sredstva in dobijo enako količino sredstev nazaj. Na žalost to pomeni, da mešanje zahteva dodatne blockchain transakcije, ki stanejo provizije za transakcije in čas.
Raziskovalci Felix Konstantin Maurer (z univerze RWTH Aachen), Till Neudecker in Martin Florian (oba s Tehnološkega inštituta Karlsruhe) so se v svojem prispevku z naslovom “2017” lotili reševanja tega problema.Anonimne CoinJoin transakcije s poljubnimi vrednostmi.”Predlagali so rešitev CoinJoin, ki bi lahko bila koristna za dejanska plačila – to pomeni, da uporablja neenake zneske – in hkrati še vedno ponuja zasebnost.
Poimenovano po problem nahrbtnika, njihova raztopina se imenuje mešanje nahrbtnikov.
Mešanje nahrbtnikov
Tako kot CashFusion je tudi glavna zamisel mešanja nahrbtnikov ustvarjanje transakcije CoinJoin, ki jo je mogoče zbrati v več različnih konfiguracijah potencialnih prvotnih transakcij. Različne konfiguracije bi povezale različne vhode z različnimi izhodi, s čimer bi prekinili sled kovancev na verigi blokov.
Mešanje nahrbtnikov to doseže z rezanjem prvotnih izhodov iz prvotnih transakcij na manjše izhode za transakcijo CoinJoin. Poleg tega uporablja razmeroma preproste trike, s katerimi zagotavlja, da so zaradi manjših izhodov možne številne potencialne konfiguracije.
Prispevek Maurerja, Neudeckerja in Floriana vključuje tri različice mešanja nahrbtnikov. Prva varianta je najbolj podrobno opisana v belem papirju. Druga in tretja različica sta si dokaj podobni, kjer je tretja različica resnično vrhunska različica druge različice. (Avtorji prispevka so do tretje različice prišli šele v pozni fazi pisanja prispevka; drugače bi verjetno dobili bolj vidno mesto v študiji.)
Oglejmo si različne variante.
Varianta ena
Za razlago prve variante mešanja nahrbtnikov vzemimo primer CoinJoin iz prvega članka v tej miniseriji. Alice želi Carol plačati 3,2 kovanca in ima dva vložka v vrednosti 2,3 oziroma 1,4 kovanca. Bob želi Daveu plačati 4 kovance in ima dva vložka v vrednosti 3 oziroma 2 kovanca.
Poenostavljeno so te transakcije videti takole:
2,3 + 1,4 = 3,2 + 0,5
in
3 + 2 = 4 + 1
(Izhoda 0,5 BTC in 1 BTC se spremenita.)
Transakcija CoinJoin, združena skupaj, bi bila potem videti tako:
3 + 2,3 + 2 + 1,4 = 4 + 3,2 + 1 + 0,5
Kot je bilo poudarjeno v prejšnjem članku, so bile transakcije združene, vendar ob predpostavki, da veste, da obstajata dva plačnika, lahko zneske zmedemo v samo eni konfiguraciji: prvotne transakcije. Kot takšno je trivialno ponovno odkriti, kateri vložki so plačali katere izhode, s čimer smo premagali smisel ustvarjanja CoinJoin.
Mešanje nahrbtnikov to spremeni. Skratka, uporablja vrednostno razliko med dvema prvotnima transakcijama, da izvirni izhod iz največje transakcije razdeli na manjše kose. To vsaj zagotavlja, da obstajata dve konfiguraciji, kjer bi bilo večino izhodov mogoče povezati s katerim koli vhodom.
Poglejmo si to korak za korakom. Najprej se sešteje skupni znesek rezultatov na transakcijo. Za transakcijo Alice in Carol je to 2,3 + 1,4 = 3,7. Za transakcijo Boba in Davea je to 3 + 2 = 5. Transakcija Boba in Dave je največja.
Nato se izračuna razlika med obema: 5 – 3,7 = 1,3. Nato se ta razlika odšteje od največje transakcije. Bob in Dave je največja transakcija in razdelili bomo 4 izhode, torej: 4 – 1,3 = 2,7.
Štirje izhodi največje transakcije so torej v CoinJoin, razdeljeni na 1,3 in 2,7.
Tokrat je CoinJoin videti tako:
3 + 2,3 + 2 + 1,4 = 3,2 + 2.7 + 1.3 + 1 + 0,5
Zdaj se vračamo k zmedi …
Seveda je prvotna konfiguracija še vedno mogoča. Samo da zdaj Dave prejme dva izhoda namesto enega.
To bi izgledalo takole:
2,3 + 1,4 = 3,2 + 0,5
in
3 + 2 = 2.7 + 1.3 + 1.
Toda poleg tega je zdaj možna tudi povsem nova konfiguracija:
2,3 + 1,4 = 2.7 + 1.
in
3 + 2 = 3,2 + 1.3 + 0,5
Kot rezultat, analitiki blockchain ne morejo več zanesljivo povezati izhodov 3.2, 2.7, 1 ali 0.5 z nobenim vhodom! Dobro za zasebnost, čeprav transakcija CoinJoin ni uporabila enakih zneskov.
Če želite mešanici dodati novo transakcijo, se vrednost vseh prejšnjih transakcij (drugače rečeno: obstoječi CoinJoin) sešteje, kot da gre za eno transakcijo. Nato bi se, tako kot prvič, vrednostna razlika med temi prejšnjimi transakcijami in novo transakcijo uporabila za razdelitev rezultata. In tako naprej za naslednjo transakcijo in katero koli dodatno transakcijo po tem.
Različici dve in tri
Medtem ko različica ena mešanja nahrbtnikov dobro naredi ločitev večine izhodov iz katerega koli vhoda, so vhodi sami še vedno lahko povezani z drugimi vhodi. Ti kompleti so enaki za obe konfiguraciji. Tudi to ni idealno za zasebnost.
Različice dveh in treh mešanja nahrbtnika so posebej zasnovane za prekinitev povezave med vhodi. Vendar različica dve zahteva, da se vsi udeleženci v CoinJoinu medsebojno naučijo vhodov in izhodov, kar pomeni, da pravzaprav ne ponuja veliko zasebnosti: različica tri to popravi. Toda za namen članka (ki se osredotoča na zasebnost blockchain-a) je razlika dovolj majhna, da zajema obe različici hkrati.
Vzemimo enake primere kot zgoraj. Alice želi Carol plačati 3,2 kovanca, Bob pa Daveu 4 kovance.
Torej:
2,3 + 1,4 = 3,2 + 0,5
in
3 + 2 = 4 + 1
Za različici dve in tri se ustvari “navidezna transakcija”. Ta virtualna transakcija sicer ne obstaja, vendar bodo analitiki blockchain-a prevarani, če mislijo, da bi lahko.
Če želite ustvariti to navidezno transakcijo, se vzame en vhod iz vsake prvotne transakcije. Nato se vrednost teh vhodov sešteje.
Na primer, tako:
1,4 + 2 = 3,4
Vrednost naših izbranih vložkov je 3,4. Zato mora biti vrednost izhodov navidezne transakcije tudi 3,4.
To je enostavno doseči. Ponovno vzamemo izhod iz največje izvirne transakcije, ki je v našem primeru spet 4. Prav tako si ogledujemo izhod, s katerim je bil prvotno povezan v tej prvotni transakciji: 1. Nato velik izhod (4) razdelimo tako, da lahko eno od polovic kombiniramo s prvotnim ujemanjem (1), da dobimo navidezno vrednost (3.4). V tem primeru to pomeni, da je 4 razdeljeno na 2,4 in 1,6. (Navsezadnje 2,4 + 1 = 3,4.)
Zdaj je CoinJoin videti tako:
3 + 2,3 + 2 + 1,4 = 3,2 + 2.4 + 1.6 + 1 + 0,5
Na podlagi tega CoinJoin je prvotna konfiguracija seveda še vedno mogoča. Samo da Dave znova prejme dva izhoda namesto enega.
To bi izgledalo takole:
2,3 + 1,4 = 3,2 + 0,5
in
3 + 2 = 2.4 + 1.6 + 1.
A poleg tega je mogoča tudi nova “navidezna konfiguracija”:
3 + 2,3 = 3,2 + 1.6 + 0,5
in
2 + 1,4 = 2.4 + 1.
Ne samo, da se različne konfiguracije ujemajo z različnimi vhodi z različnimi izhodi, različne konfiguracije se med seboj ujemajo tudi z različnimi vhodi!
Slabosti nahrbtnika
Mešanje nahrbtnikov, ki temelji na preprostem triku, ponuja znatno izboljšanje zasebnosti, zlasti v primerjavi z običajnimi transakcijami.
Kljub temu mešanje nahrbtnikov ni tako zasebno kot mešanice enake količine. Mešanice enake količine v bistvu omogočajo največjo količino konfiguracij; nujno več kot celo najboljša mešanica nahrbtnikov. In morda še pomembneje, mešanje nahrbtnika še vedno omogoča določeno povezovanje določenih vhodov in izhodov – ali vsaj bolj verjetne povezave.
Dejansko so bili v zgornjih primerih določeni vhodi in izhodi usklajeni v obeh potencialnih konfiguracijah. V različici ena je bil izhod 1,3 tako ali tako povezan s 3 in 2 vhodoma. Torej, medtem ko analiza veriženja blokov ne bi razkrila, kakšne so bile prvotne transakcije, bi vseeno razkrila povezavo med 3 in 2 vhodoma in 1,3 izhoda. Različici dve in tri, čeprav medsebojno ločujeta vhode, omogočata še več ujemanj med vhodi in izhodi.
Prav tako je treba poudariti, da nahrbtnik CoinJoin za plačilo zahteva dodatne izhode in bi zato še vedno stal več provizij kot običajne transakcije ali celo običajne transakcije CoinJoin. Trgovci lahko zahtevajo tudi, da namesto samo enega navedejo dva naslova, ko so plačani.
Z drugimi besedami, medtem ko izboljšanje enakovrednega mešanja, ko gre za učinkovitost in pristojbine blokovskega prostora, in velik napredek v primerjavi z rednimi transakcijami ali celo rednimi transakcijami CoinJoin za zasebnost, mešanje nahrbtnikov še vedno prinaša nekaj dodatnih težav in stroškov.
* Po objavi tega članka je bilo pravilno poudarjeno, da JoinMarket omogoča tudi plačila prek CoinJoin.
Opomba avtorja: Pri predlogu za mešanje nahrbtnika je nekaj več, na primer o tem, kako je zgrajena transakcija CoinJoin. Pri zasebnosti obstaja tudi nekaj bolj subtilnih tveganj in kompromisov, na primer kako uporabniki ravnajo s svojimi kovanci pred mešanico in po njej. Zaradi enostavnosti in berljivosti se ta članek osredotoča le na osrednjo in verjetno najzanimivejšo idejo mešanja nahrbtnikov: mešanje z neenako količino.