Vaikka Satoshi Nakamoton valkoinen paperi viittaa siihen, että yksityisyys oli Bitcoin-protokollan suunnittelutavoitteena, blockchain-analyysi voi usein rikkoa käyttäjien yksityisyyttä. Tämä on ongelma. Bitcoinin käyttäjät eivät välttämättä halua maailman tietävän, mihin he kuluttavat rahansa, mitä ansaitsevat tai kuinka paljon he omistavat, kun taas yritykset eivät halua vuotaa tapahtumien yksityiskohtia kilpailijoille – muutamia esimerkkejä.
Mutta yksityisyyden palauttamiseksi on olemassa ratkaisuja, kuten CoinJoin. Jotkut nykypäivän suosituimmista sekoitusratkaisuista käyttävät tätä temppua, mukaan lukien Wasabi Wallet (joka hyödyntää ZeroLinkiä) ja Samourai Wallet (joka hyödyntää Whirlpoolia). Molemmissa tapauksissa käyttäjät pilkkovat kolikot yhtä suuriksi sekoittaakseen ne toisiinsa. Samojen määrien käyttämistä pidetään ratkaisevana vaiheena, jotta sekoitus olisi tehokas.
Tämän minisarjan ensimmäinen osa käsitteli uutta Cash Cash -sovellusta kehitettäessä uutta CashFusion-sekoitusprotokollaa, joka kyseenalaistaa olettaman, että onnistuneeseen sekoitukseen tarvitaan yhtä suuria määriä.
Mutta jopa vuonna 2017, a paperi RWTH Aachenin yliopiston ja Karlsruhen teknillisen korkeakoulun tutkijat analysoivat syvällisesti ei-yhtä suurien CoinJoins-yksityisyyksien yksityisyyttä..
Kirjoittajan huomautus: Jos et tiedä mikä CoinJoin-tapahtuma on tai miksi sekoittamiseen oletetaan tarvitsevan yhtä suuret määrät, sinun tulee ensin lukea tämän minisarjan ensimmäinen osa – tai ainakin lukea kyseisen artikkelin kaksi ensimmäistä osaa.
Sekoittaminen maksamiseen
Kuten tämän minisarjan ensimmäisessä osassa selitetään, yhtä suuri bitcoin-sekoitus tarjoaa todennäköisesti parhaan saavutettavan yksityisyyden Bitcoin-lohkoketjussa tänään. Mutta se jättää käyttäjille eriarvoisen muutoksen lähdöt. Nämä eivät tarjoa samaa yksityisyyden tasoa ja voivat jopa olla yksityisyyden riski. CashFusion voisi auttaa käsittelemään näitä eriarvoisia tuotoksia.
Mutta on toinen ongelma. Vaatimus käyttää samoja summia estää käyttäjiä suorittamasta todellisia maksuja CoinJoin-tapahtumien kautta: On epätodennäköistä, että kauppias veloittaisi tarkkaa määrää, joka vaaditaan CoinJoinissa. Joten sen sijaan yhtä suuria määriä CoinJoinsia käytetään oikeastaan vain sekoittamiseen *: Osallistujat sijoittavat varoja ja saavat saman määrän varoja takaisin. Valitettavasti tämä tarkoittaa, että sekoittaminen vaatii ylimääräisiä blockchain-tapahtumia, jotka maksavat transaktiomaksut ja ajan.
Tutkijat Felix Konstantin Maurer (RWTH Aachenin yliopistosta), Till Neudecker ja Martin Florian (molemmat Karlsruhen teknillisestä instituutista) pyrkivät ratkaisemaan tämän ongelman vuonna 2017 julkaisemassaan artikkelissa “Nimetön CoinJoin-liiketoiminta mielivaltaisilla arvoilla.”He ehdottivat CoinJoin-ratkaisua, josta voi olla hyötyä todellisissa maksuissa – eli se käyttää eriarvoisia summia – tarjoten silti yksityisyyttä.
Nimetty reppu ongelma, niiden liuosta kutsutaan reppuseokseksi.
Selkärepun sekoitus
Kuten CashFusion, myös reppujen sekoittamisen ydinajatuksena on luoda CoinJoin-tapahtuma, joka voidaan hämmentää yhdessä useiksi eri kokoonpanoiksi mahdollisista alkuperäisistä tapahtumista. Erilaiset kokoonpanot yhdistäisivät eri syötteet eri lähtöihin, murtamalla siten kolikkoketjun lohkoketjussa.
Selkäsekoittaminen saavuttaa tämän leikkaamalla alkuperäiset tapahtumat alkuperäisistä tapahtumista pienemmiksi tuotoksiksi CoinJoin-tapahtumaa varten. Lisäksi se käyttää suhteellisen yksinkertaisia temppuja varmistaakseen, että pienemmät tuotokset johtavat useiden mahdollisten kokoonpanojen mahdollistamiseen.
Maurerin, Neudeckerin ja Florianin paperi sisältää kolme varianttia repun sekoittamisesta. Ensimmäinen muunnelma on täsmällisin itse valkoisessa kirjassa. Toinen ja kolmas versio ovat melko samanlaisia, missä kolmas versio on todella parempi versio toisesta versiosta. (Paperin kirjoittajat esittivät kolmannen version vasta paperin myöhäisessä vaiheessa; muuten sille olisi todennäköisesti annettu merkittävämpi paikka tutkimuksessa.)
Katsotaanpa erilaisia vaihtoehtoja.
Variantti
Selittäkää reppujen sekoittamisen ensimmäistä muunnosta ottamalla CoinJoin-esimerkki tämän minisarjan ensimmäisestä artikkelista. Alice haluaa maksaa Carol 3,2 kolikkoa ja sillä on kaksi panosta, joiden arvo on vastaavasti 2,3 ja 1,4 kolikkoa. Sillä välin Bob haluaa maksaa Dave 4 -kolikoita ja sillä on kaksi panosta, joiden arvo on 3 ja 2.
Yksinkertaistettuna nämä tapahtumat näyttävät tältä:
2,3 + 1,4 = 3,2 + 0,5
ja
3 + 2 = 4 + 1
(0.5 BTC- ja 1 BTC-lähdöt muuttuvat.)
Yhdistettynä CoinJoin-tapahtuma näyttäisi tältä:
3 + 2,3 + 2 + 1,4 = 4 + 3,2 + 1 + 0,5
Kuten edellisessä artikkelissa todettiin, liiketoimet yhdistettiin, mutta olettaen, että tiedät, että maksajia on kaksi, summat voidaan hämmentää yhdessä vain yhdessä kokoonpanossa: alkuperäisissä tapahtumissa. Sellaisena on triviaalia löytää uudelleen, mitkä panokset maksavat, mitkä tuotokset, mikä estää CoinJoinin tekemisen.
Selkärepun sekoitus muuttaa tätä. Lyhyesti sanottuna se käyttää kahden alkuperäisen tapahtuman arvoeroa jakamaan alkuperäisen tuotoksen suurimmasta tapahtumasta pienemmiksi paloiksi. Tämä varmistaa ainakin, että on olemassa kaksi kokoonpanoa, joissa suurin osa lähdöistä voidaan liittää mihin tahansa tuloon.
Tarkastellaan tätä askel askeleelta. Ensinnäkin tuotosten kokonaismäärä lasketaan yhteen tapahtumaa kohti. Alicen ja Carolin kaupassa tämä on 2,3 + 1,4 = 3,7. Bobin ja Daveen tapahtumalle tämä on 3 + 2 = 5. Bobin ja Daveen tapahtuma on suurin.
Seuraavaksi lasketaan näiden kahden välinen ero: 5 – 3,7 = 1,3. Sitten tämä ero vähennetään suurimmasta tapahtumasta. Bob and Dave’s on suurin tapahtuma, ja jaamme 4 ulostuloa, joten: 4 – 1,3 = 2,7.
Suurimman tapahtuman neljä tuotosta ovat siis CoinJoinissa jaettuina 1,3 ja 2,7.
Tällä kertaa CoinJoin näyttää tältä:
3 + 2,3 + 2 + 1,4 = 3,2 + 2.7 + 1.3 + 1 + 0,5
Nyt palataan hämmentävään …
Alkuperäinen kokoonpano on tietysti edelleen mahdollista. Dave saa nyt vain kaksi lähtöä yhden sijasta.
Tämä näyttäisi tältä:
2,3 + 1,4 = 3,2 + 0,5
ja
3 + 2 = 2.7 + 1.3 + 1
Mutta sen lisäksi on nyt mahdollista saada aivan uusi kokoonpano:
2,3 + 1,4 = 2.7 + 1
ja
3 + 2 = 3,2 + 1.3 + 0.5
Tämän seurauksena blockchain-analyytikot eivät voi enää linkittää lähtöjä 3.2, 2.7, 1 tai 0.5 mihinkään tuloon varmasti! Siunaus yksityisyydelle, vaikka CoinJoin-tapahtuma ei käyttänyt yhtä suuria määriä.
Uuden tapahtuman lisäämiseksi sekoitukseen kaikkien aikaisempien tapahtumien arvo (toisin sanoen: nykyinen CoinJoin) lasketaan yhteen kuin yksi tapahtuma. Sitten, kuten ensimmäistä kertaa, näiden aikaisempien tapahtumien ja uuden tapahtuman välistä eroa käytetään jakamaan tuotos. Ja niin edelleen seuraavaa tapahtumaa ja mahdollisia lisätapahtumia varten sen jälkeen.
Vaihtoehdot kaksi ja kolme
Vaikka reppujen sekoittamisen toinen versio tekee hyvää työtä poistamalla useimmat lähdöt mistä tahansa sisääntulosta, itse tulot voidaan silti liittää muihin tuloihin. Nämä sarjat ovat samat molemmille kokoonpanoille. Tämä ei myöskään ole ihanteellinen yksityisyyden kannalta.
Selkärepun sekoitusvaihtoehdot kaksi ja kolme on suunniteltu erityisesti tulojen linkittämiseksi. Vaihtoehto 2 vaatii kuitenkin, että kaikki CoinJoin-osallistujat oppivat toistensa panokset ja tuotokset, mikä tarkoittaa, että se ei todellakaan tarjoa paljon yksityisyyttä: Vaihtoehto kolme korjaa tämän. Silti artikkeleita varten (joka keskittyy blockchain-yksityisyyteen) ero on riittävän pieni kattamaan molemmat variantit kerralla.
Otamme samat esimerkit kuin yllä. Alice haluaa maksaa Carol 3,2 kolikkoa ja Bob haluaa maksaa Dave 4 kolikoita.
Niin:
2,3 + 1,4 = 3,2 + 0,5
ja
3 + 2 = 4 + 1
Vaihtoehdoille kaksi ja kolme luodaan “virtuaalinen tapahtuma”. Tätä virtuaalista tapahtumaa ei muuten ole olemassa, mutta blockchain-analyytikot huijataan ajattelemaan, että se saattaa olla.
Tämän virtuaalitapahtuman luomiseksi otetaan yksi syöttö kustakin alkuperäisestä tapahtumasta. Sitten näiden tulojen arvo lasketaan yhteen.
Esimerkiksi kuten näin:
1,4 + 2 = 3,4
Valittujen tulojemme arvo on 3,4. Siksi virtuaalisen tapahtuman tuotosten arvon on oltava myös 3,4.
Tämä on helppo toteuttaa. Otamme jälleen kerran lähdön suurimmasta alkuperäisestä tapahtumasta, joka on esimerkissämme jälleen 4. Tarkastelemme myös sitä lähtöä, johon se oli alun perin sovitettu tässä alkuperäisessä tapahtumassa: 1. Jaetaan sitten iso tulos (4) että toinen puoliskoista voidaan yhdistää alkuperäiseen otteluun (1) virtuaaliarvon (3.4) muodostamiseksi. Tässä tapauksessa se tarkoittaa, että 4 on jaettu osiin 2,4 ja 1,6. (Loppujen lopuksi 2,4 + 1 = 3,4.)
Nyt CoinJoin näyttää tältä:
3 + 2,3 + 2 + 1,4 = 3,2 + 2.4 + 1.6 + 1 + 0,5
Jälleen tämän CoinJoinin perusteella alkuperäinen kokoonpano on tietysti edelleen mahdollista. Dave saa jälleen kaksi lähtöä yhden sijasta.
Tämä näyttäisi tältä:
2,3 + 1,4 = 3,2 + 0,5
ja
3 + 2 = 2.4 + 1.6 + 1
Mutta sen lisäksi on mahdollista myös uusi “virtuaalikokoonpano”:
3 + 2,3 = 3,2 + 1.6 + 0.5
ja
2 + 1,4 = 2.4 + 1
Eri kokoonpanot eivät vain sovita eri tuloja eri lähtöihin, vaan eri kokoonpanot myös eri tuloja keskenään!
Selkärepun heikkoudet
Selkäreppujen sekoittaminen, joka perustuu yksinkertaiseen temppuun, tarjoaa merkittävän yksityisyyden parannuksen, erityisesti verrattuna normaalien tapahtumien tekemiseen.
Selkärepusekoitus ei silti ole aivan yhtä yksityistä kuin yhtä suuret sekoitukset. Yhtä suuret sekoitukset mahdollistavat olennaisesti enimmäismäärän kokoonpanoja; välttämättä enemmän kuin edes paras reppuseos. Ja ehkä varsinkin, repun sekoitus sallii edelleen tiettyjen tulojen ja lähtöjen linkittämisen – tai ainakin todennäköisemmät linkit.
Itse asiassa yllä olevissa esimerkeissä tietyt tulot ja lähdöt sovitettiin molemmissa potentiaalisissa kokoonpanoissa. Vaihtoehdossa yksi 1,3-ulostulo sovitettiin 3 ja 2-tulojen kanssa molempiin suuntiin. Joten vaikka lohkoketjuanalyysi ei paljastaisi alkuperäisiä tapahtumia, se paljasti kuitenkin linkin 3 ja 2 syötteen ja 1,3 lähdön välillä. Vaihtoehdot kaksi ja kolme poistavat tulot toisistaan, mutta sallivat entistä enemmän otteluita tulojen ja lähtöjen välillä.
On myös syytä huomauttaa, että reppu CoinJoin maksamista varten vaatii ylimääräisiä tuotoksia ja maksaa sen vuoksi vielä enemmän maksuja kuin tavalliset liiketoimet tai jopa säännölliset CoinJoin-tapahtumat. Se voi myös vaatia kauppiaita antamaan maksettaessa kaksi osoitetta yhden sijasta.
Toisin sanoen, vaikka parannus yhtä suureen sekoitukseen lohkotilan tehokkuuden ja palkkioiden suhteen ja suuri parannus verrattuna säännöllisiin tapahtumiin tai jopa säännöllisiin CoinJoin-tapahtumiin yksityisyyden suojaamiseksi, reppujen sekoittamiseen liittyy silti hieman ylimääräistä vaivaa ja kustannuksia.
* Tämän artikkelin julkaisemisen jälkeen huomautettiin oikein, että JoinMarket sallii myös maksut CoinJoinin kautta.
Kirjoittajan huomautus: Selkäreppujen sekoittamista koskevassa ehdotuksessa on vähän enemmän, kuten miten CoinJoin-tapahtuma rakennetaan. Yksityisyyden suhteen on myös useita hienovaraisempia riskejä ja kompromisseja, kuten miten käyttäjät käsittelevät kolikoitaan ennen sekoitusta ja sen jälkeen. Yksinkertaisuuden ja luettavuuden vuoksi tässä artikkelissa keskitytään vain reppujen sekoittamisen keskeiseen ja epäilemättä mielenkiintoisimpaan ideaan: epätasainen määrä.