SNICKER bi lahko bil naslednje orodje v naraščajoči zbirki orodij za zasebnost Bitcoinov.

Čeprav Satoshi Nakamoto bel papir nakazuje, da je bila zasebnost oblikovalski cilj protokola Bitcoin, analiza blockchain lahko danes pogosto zlomi zasebnost uporabnikov. To je težava. Uporabniki Bitcoinov morda ne bodo nujno želeli, da svet ve, kam trošijo svoj denar, kaj zaslužijo ali koliko imajo v lasti, medtem ko podjetja morda ne bodo želela razkrivati ​​podrobnosti transakcij konkurentom – naštejmo nekaj primerov.

Na srečo razvijalci in raziskovalci Bitcoin prihajajo z vedno več rešitvami, s katerimi lahko uporabniki povrnejo svojo zasebnost. Eden od teh prvakov za zasebnost Bitcoin je Adam “waxwing” Gibson, morda najbolj znan po svojih prispevkih k JoinMarketu, protokolu, ki uporabnikom omogoča mešanje njihovih kovancev – in ponuja finančno nagrado za sodelovanje v takih mešanicah.

Pred kratkim je Gibson predstavil novo idejo: SNICKER (preprost neinteraktiven kovanec s ponovno uporabljenimi ključi za šifriranje). Zdaj predloženo kot osnutek predloga za izboljšanje Bitcoinov (BIP), bi SNICKER omogočil mešanje kovancev brez kakršne koli sinhronizacije ali interakcije: uporabnikom ne bi bilo treba hkrati usklajevati ali biti v spletu.

CoinJoin

SNICKER temelji na že uveljavljeni tehniki mešanja bitcoinov CoinJoin. Nekatere najbolj priljubljene mešalne rešitve, ki so danes na voljo, že uporabljajo ta trik, vključno z denarnico Wasabi (ZeroLink), denarnico Samourai (Whirlpool) in JoinMarket.

Nadaljnje branje: Kaj so mešalniki Bitcoin?

CoinJoin je v bistvu orodje za združitev več transakcij v eno. Recimo, da želi Alice Carol plačati en bitcoin, Bob pa Daveu en bitcoin. V tem primeru lahko Alice in Bob sodelujeta pri ustvarjanju ene velike transakcije, pri kateri oba porabita en bitcoin (dva skupaj), Carol in Dave pa prejmeta po en bitcoin. Blockchain vohun ne bo mogel ugotoviti, kateri od pošiljateljev je plačal katerega od prejemnikov, kar koristi zasebnosti vseh.

V resnici pa znesek poslanih bitcoinov pogosto pušča zasebnost. Če želi Alice Carol plačati en bitcoin, Bob pa Daveu dva bitcoina, bo očitno, kdo je plačal z ujemanjem zneskov pošiljanja in prejemanja.

Zato se CoinJoin bolj pogosto uporablja za mešanje. Namesto da bi plačala komu drugemu, Alice in Bob oba pošljeta en bitcoin sebi. Z združitvijo tega v eno transakcijo blockchain vohuni ne morejo ugotoviti, kdo je dobil kateri kovanec nazaj: Kovanci so mešani in tako varujejo zasebnost Alice in Boba naprej.

Mešalniki CoinJoin danes delujejo, vendar imajo pomanjkljivost: zahtevajo interaktivnost. Transakcija CoinJoin velja samo, če vsi sodelujoči uporabniki podpišejo celotno transakcijo – toda za podpis celotne transakcije morajo sodelujoči uporabniki vanjo najprej dodati vse svoje kovance in nove prejemne naslove. To običajno pomeni, da morajo transakcijo opraviti nekajkrat in običajno zahteva, da so vsi hkrati na spletu.

Takšne zahteve predstavljajo veliko oviro za številne uporabnike, kar je eden od razlogov, da transakcije CoinJoin niso zelo pogoste. SNICKER te zahteve obkroži.

SNICKER različica 1

Protokol, opisan v tem poglavju, je prva predlagana različica SNICKER. To različico je nekoliko lažje razumeti kot nadomestno različico, vendar je treba omeniti, da dejansko ni najboljša različica protokola ali različica, ki bo najverjetneje implementirana. (Več o alternativnih različicah kasneje.)

S tem je navedeno, kako deluje različica 1 SNICKER:

Recimo, da ima Alice en bitcoin, ki ga želi zmešati, ki ga predstavlja neizrabljen izhod transakcije (UTXO) na verigi blokov. Prva stvar, ki jo naredi, je, da ta bitcoin pošlje na svoj isti naslov. Tako je, v tej različici SNICKER-ja znova uporablja naslov, ki krši najboljše prakse Bitcoina. A pride prav: UTXO javno označi kot (potencialno) na voljo za mešanje.

To sicer ne pomeni, da Alice kovanca ne more uporabljati. Še vedno sedi v njeni denarnici in je pripravljena kadar koli porabiti. Samo označeno je, če koga zanima.

Bob ima tudi en kovanec za mešanje. (Dejansko vnaprej ni treba, da so zneski enaki – Bob mora imeti vsaj toliko kot Alice.) Bob ne pozna Alice, ve pa, da so uporabniki, kot je Alice, zunaj in označujejo svoje UTXO. kot mešljiv. Torej Bob skenira blockchain za morebitna ujemanja. Najde Alicein UTXO in verjetno še nekaj ustreznih UTXO-jev, vključno z lažnimi pozitivnimi učinki (vsi znova uporabljeni naslovi v resnici niso na voljo za mešanje). A zaenkrat za preprostost domnevamo, da Bob najde le eno tekmo: Alice’s UTXO. (Na druga možna ujemanja in lažno pozitivne rezultate se bomo vrnili kasneje.)

Z ujemanjem Bob zdaj prevzame javni ključ, ki ustreza ponovnemu naslovu. To je mogoče ravno zato, ker je naslov ponovno uporabljen: s tem, ko ga je prvič porabila, je Alice objavila ta javni ključ na verigi blokov. (Javni ključi postanejo vidni na verigi blokov po porabi kovancev, naslovi pa so vedno vidni.)

Na tej točki ima Bob Alicein UTXO (ker ga je označila) in njen javni ključ (ker je enkrat porabila s svojega naslova).

Zdaj Bob uporablja Alicein javni ključ in ga kombinira s svojim zasebnim ključem (za kovanec, ki ga želi zmešati), da ustvari “skupno skrivnost”. Ta skrivnost je povsem dobesedno najstarejši trik v knjigi kriptografije, saj jo lahko ustvarijo samo Alice in Bob: Bob s svojim zasebnim ključem in javnim ključem Alice ter Alice z zasebnim ključem in Bobovim javnim ključem (ustreza kovancem, ki jih želi mešati).

Torej, Bob ima Alicein UTXO in njen javni ključ ter skupno skrivnost (ker ga je ustvaril z Aliceinim javnim ključem in njegovim zasebnim ključem).

Bob uporablja skupno skrivnost na nov način. Uporablja ga za matematično “prilagajanje” javnega ključa Alice. Ta prilagoditev dejansko ustvari nov javni ključ. Razen … nihče nima zasebnega ključa zanj. Pa vendar.

Zanimivo je, da zahvaljujoč še enemu delčku kripto čarovništva lahko potegnjeni zasebni ključ za potegnjeni javni ključ odkrije tudi Alice! Če bi izvirni zasebni ključ prilagodila z isto skupno skrivnostjo, bi nastali potegnjeni zasebni ključ ustrezal potegnjenemu javnemu ključu.

Z drugimi besedami, Bob lahko ustvari nov javni ključ in s tem nov naslov Bitcoin za Alice, od katerega lahko samo ona porabi. Tudi ne da bi ona zdaj vedela!

Torej, Bob ima zdaj Alicein UTXO in njen javni ključ, skupno skrivnost in nov Bitcoin naslov za Alice (ustvarjen z njenim javnim ključem in skupno skrivnostjo).

To je skoraj dovolj za ustvarjanje veljavne transakcije CoinJoin. Natančneje, Bob vzame Alicein UTXO in doda UTXO za svoj kovanec, tako da obstajata dva vhoda. Nato kot izhodne podatke doda Alicein nov naslov in svoj naslov (kot tudi provizije in nekatere druge podrobnosti, na primer spremembo naslova, če je potrebno). In podpiše transakcijo.

Zdaj manjka le podpis Alice.

Doseči Alice

Zadnji korak – doseči Alice – je dejansko lažji, kot se sliši, vendar zahteva še zadnji trik.

Bob bi lahko preprosto objavil skoraj popolno transakcijo CoinJoin nekje, da bi jo Alice našla. Na primer na oglasni deski, namenjeni uporabnikom SNICKER; po možnosti enega na Tor skritem servisu ali kako drugače zajamčeno, da ponuja anonimnost založnikov.

Če pa bi to storili v navadnem besedilu, to še vedno ne bi bilo idealno. Če vohun pozorno spremlja oglasno desko, lahko trivialno ugotovi, kateri prispevek pripada predlagatelju (v tem primeru Bobu) in kateri prispevek pripada prevzemniku (v tem primeru Alice): Podpisani je predlagatelj. To bi lahko samo po sebi pomenilo uhajanje zasebnosti. Še huje pa bi bilo, če bi Bob dal več predlogov za mešanje različnih kovancev. V tem primeru bi vohun na primer lahko povezal vse različne UTXO z Bobom, ker je bil njegov paket predlogov hkrati objavljen na oglasni deski.

Namesto tega Bob šifrira transakcijo CoinJoin … z Aliceinim javnim ključem! Tako lahko samo Alice dešifrira transakcijo, vohun pa se ne more ničesar naučiti.

Po objavi šifrirane transakcije na oglasni deski je Bob naredil vse, kar je moral. Če hoče, lahko izgine na spletu.

Alice’s Turn

Ker je transakcija CoinJoin zdaj šifrirana, to predstavlja še zadnji, majhen zaplet. Medtem ko Alice ve, kje najti paket – na oglasni deski SNICKER – ne ve, kaj naj išče: vse transakcije CoinJoin na oglasni deski izgledajo kot šifrirani blobs.

Izhod je samo en. Alice mora s svojim zasebnim ključem poskusiti dešifrirati vse pakete, v upanju, da se eden od njih spremeni v nekaj koristnega.

Toda ko se Bobov šifrirani blob spremeni v transakcijo CoinJoin, ima Alice vse, kar potrebuje za dokončanje kombinacije. S svojim zasebnim ključem in Bobovim javnim ključem (ki je vključen v njegov prispevek) ustvari skupno skrivnost, ki jo lahko nato uporabi za ustvarjanje novega, prilagojenega zasebnega ključa. Potem ko preveri, ali novi ključ ustreza njenemu novemu naslovu prejemnika v izhodu, podpiše in odda transakcijo v Bitcoin omrežje.

Alice in Bob sta pomešala kovanca, čeprav nikoli nista komunicirala, niti niti ni bilo treba, da sta hkrati na spletu.

In čeprav se postopek v besedilu morda sliši nekoliko mukotrpno, ne pozabite, da ga je mogoče vse programsko povzeti, prevesti v nekaj gumbov na zaslonu prenosnika ali telefona ali celo popolnoma avtomatizirati.

SNICKER različica 2

SNICKER, kot je bilo doslej pojasnjeno, je prva različica predloga. Gibson je že predlagal drugo različico, na mizi pa so tudi druge različice.

Druga različica SNICKER je podobna, vendar se izogiba potrebi po ponovni uporabi naslova – za ceno nekoliko bolj zapletene.

V tej drugi različici Bob ne dobi javnega ključa Alice z vnovičnega naslova. Namesto tega Bob prevzame javni ključ iz vhoda iste transakcije, ki je ustvarila Alicein UTXO. Bob domneva, da je vsaj enega od vhodov v tej transakciji ustvarila Alice sama in da ima še vedno zasebne ključe za te.

Bob to domneva, ker je tokrat Alicein UTXO še bolj jasno označen, da je na voljo za mešanje, in bi bil tako jasno označen le, če Alice nadzoruje zasebne tipke, ki ustrezajo vhodom. SNICKER BIP ne določa, kako naj se opravi začetno označevanje, vendar predlaga, da nekatere denarnice (kot so denarnice JoinMarket) nedvoumno razkrijejo take informacije. Alice bi lahko preprosto objavila sporočilo na oglasni deski in reklamirala svoj UTXO.

Toda še bolje: ko se SNICKER začne uporabljati, bi moralo biti iskanje novih tekem veliko lažje. To je zato, ker bi bile transakcije SNICKER same po sebi trivialno prepoznavne, obstoječi uporabniki SNICKER pa bi verjetno želeli znova mešati svoje kovance. Z drugimi besedami, po začetni fazi bootstrappinga bi se nemešani kovanci pomešali s predhodno zmešanimi kovanci, kar bi povzročilo več mešanih kovancev, ki bi se nato lahko vzvodili za več mešanja.

Izzivi in ​​priložnosti

Kot smo že omenili, je SNICKER BIP še vedno samo osnutek in je predmet pregleda in morebitnih izboljšav. (Ideja se je že razvila v nekaterih pogledih, odkar jo je Gibson prvič javno predlagal v objava v spletnem dnevniku.) Predlog je zdaj predložen, da postane BIP, tako da ga je mogoče standardizirati in združiti med različnimi denarnicami..

Tudi SNICKER se sooča z nekaterimi odprtimi vprašanji in izzivi, čeprav se nobeno od teh ne zdi nepremostljivo. Sem spadajo na primer kateri UTXO-ji naj bodo izbrani kot ujemanja in zlasti, kako omejiti število lažno pozitivnih rezultatov. Poleg ponovno uporabljenih naslovov je mogoče na primer filtrirati potencialna ujemanja glede zneskov, starosti UTXO ali določenih vrst uporabljenih denarnic.

A kot je bilo omenjeno zgoraj v tem članku, je to verjetno le majhen problem, tudi če obstaja več zadetkov (vključno z lažnimi pozitivnimi učinki). Ponudniki (“Bob”) bi lahko preprosto ustvarili transakcije kandidatov za vse. Tudi če so ti predlogi v nasprotju (ker Bob uporablja svoj isti UTXO za vse), to preprosto pomeni, da bo prvi uporabnik (prva “Alice”), ki se bo odzval, dobil kombinacijo – drugi potencialni udeleženci bodo ugotovili, da so prepozni, vendar ne škodijo bi bilo storjeno. Za lažne pozitivne učinke tudi ni prave škode, Bobova ponudba bo le sedela na oglasni deski, za vedno prezrta (ali dokler ne bo odstranjena).

Kar pa bi lahko bila še posebej pomembna težava, je neželena pošta. Ker bi oglasna deska gostila šifrirane bloke podatkov, bi bilo nemogoče filtrirati “lažne” predloge: naključne neumnosti, ki jih je napadalec objavil, da bi motili protokol SNICKER. Gibson je v svojem osnutku BIP predlagal nekaj rešitev za to težavo, vendar bi to predstavljalo nove kompromise, kot je strošek objave predloga.

Na drugi strani SNICKER ponuja tudi nekaj prednosti, ki so bile zaradi poenostavitve doslej izpuščene iz razlage. Ena izmed takšnih ugodnosti je, da ponudniki lahko dodajo nekaj sredstev v izvajalčevo produkcijo in dodajo finančno spodbudo za sprejem kombinacije. Morda bo možno hkrati izvajati mešanice SNICKER z ​​več kot dvema uporabnikoma – čeprav bo to trik precej bolj zapleteno.

In ravno zato, ker protokol ni interaktiven, Gibson verjame, da bi bilo SNICKER razmeroma enostavno vgraditi v denarnice v primerjavi z nekaterimi drugimi tehnologijami zasebnosti, kot je JoinMarket. Do zdaj je denarnica Electrum pokazala zanimanje za sprejetje predloga – čeprav je do njegove dejanske izvedbe morda še daleč.

Za več informacij in ozadje o SNICKER glejte osnutek BIP, sledite poštnemu seznamu bitcoin-dev diskusija ali preberite Gibsonovo (nekoliko zastarelo) objava v spletnem dnevniku o predlogu.