name: Ochrana osobních údajů v bitcoinech goal: Pochopení a zvládnutí zásad ochrany soukromí při používání Bitcoinu objectives:


Ochrana soukromí na Bitcoinu

Ve světě, kde se důvěrnost finančních transakcí postupně stává luxusem, je pochopení a zvládnutí zásad ochrany soukromí při používání Bitcoinu nezbytné. Tento vzdělávací kurz vám poskytne všechny klíče, teoretické i praktické, jak toho samostatně dosáhnout.

Dnes se na analýzu blockchainu specializují společnosti zabývající se Bitcoinem. Jejich hlavní činnost spočívá právě v pronikání do vaší soukromé sféry s cílem ohrozit důvěrnost vašich transakcí. Ve skutečnosti nic takového jako "právo na soukromí" v Bitcoinu neexistuje. Je tedy na vás, uživatelích, abyste se domáhali svých přirozených práv a chránili důvěrnost svých transakcí, protože nikdo jiný to za vás neudělá.

Kurz je koncipován jako komplexní a obecný. Každý technický koncept je podrobně popsán a doplněn vysvětlujícími schématy. Cílem je zpřístupnit znalosti všem. BTC204 je proto cenově dostupný pro začátečníky i středně pokročilé uživatele. Kurz nabízí přidanou hodnotu i zkušenějším bitcoinářům, protože se hlouběji zabýváme některými technickými koncepty, které jsou často špatně chápány.

Připojte se k nám, abyste změnili způsob používání bitcoinu a stali se informovanými uživateli, kteří jsou schopni porozumět otázkám důvěrnosti a ochrany svého soukromí.

Úvod

Přehled kurzu

Vítejte v kurzu BTC204!

Ve světě, kde se důvěrnost finančních transakcí postupně stává luxusem, je pochopení a zvládnutí zásad ochrany soukromí při používání Bitcoinu nezbytné. Tento vzdělávací kurz vám poskytne všechny klíče, teoretické i praktické, jak toho samostatně dosáhnout.

Dnes se na analýzu blockchainu specializují společnosti zabývající se Bitcoinem. Jejich hlavní činnost spočívá právě v pronikání do vaší soukromé sféry s cílem ohrozit důvěrnost vašich transakcí. Ve skutečnosti nic takového jako "právo na soukromí" v Bitcoinu neexistuje. Je tedy na vás, uživatelích, abyste se domáhali svých přirozených práv a chránili důvěrnost svých transakcí, protože nikdo jiný to za vás neudělá.

Bitcoin není jen o "Number Go Up" a zachování hodnoty úspor. Díky svým jedinečným vlastnostem a historii je především nástrojem protihospodářství. Díky tomuto impozantnímu vynálezu můžete volně nakládat se svými penězi, utrácet je a hromadit, aniž by vám v tom kdokoli mohl zabránit.

Bitcoin nabízí klidný únik z područí státu a umožňuje vám plně využívat vaše přirozená práva, která nelze zpochybnit zavedenými zákony. Díky vynálezu Satoshiho Nakamota máte moc vynutit si respektování svého soukromého vlastnictví a znovu získat svobodu uzavírat smlouvy.

Bitcoin však není ve výchozím nastavení anonymní, což může představovat riziko pro osoby zapojené do protihospodářské činnosti, zejména v regionech pod despotickou vládou. To však není jediné nebezpečí. Protože bitcoin je cenné a nevyčíslitelné aktivum, může být cílem zlodějů. Ochrana vašeho soukromí se tak stává i otázkou bezpečnosti: může vám pomoci zabránit hackerským útokům a fyzickému napadení.

Jak uvidíme, ačkoli protokol sám o sobě nabízí určitou ochranu důvěrnosti, je nezbytné používat další nástroje k optimalizaci a obraně této důvěrnosti.

Tento školicí kurz je navržen tak, aby poskytl ucelený obecný přehled o problematice důvěrnosti bitcoinů. Každý technický koncept je podrobně popsán a doplněn vysvětlujícími diagramy. Cílem je zpřístupnit tyto znalosti všem, i začátečníkům a středně pokročilým uživatelům. Pro zkušenější uživatele Bitcoinu se v průběhu kurzu věnujeme také vysoce technickým a někdy málo známým konceptům, abychom prohloubili porozumění každému tématu.

Cílem tohoto školení není zajistit, abyste byli při používání Bitcoinu zcela anonymní, ale spíše vám poskytnout základní nástroje, abyste věděli, jak chránit svou důvěrnost v souladu s vašimi osobními cíli. Budete si moci svobodně vybrat z představených konceptů a nástrojů a vytvořit si vlastní strategie, přizpůsobené vašim konkrétním cílům a potřebám.

Oddíl 1: Definice a klíčové pojmy

Nejprve si projdeme základní principy fungování Bitcoinu, abychom se pak mohli v klidu věnovat pojmům týkajícím se důvěrnosti. Než budete moci plně pochopit pojmy, kterými se budeme zabývat v následujících kapitolách, je nezbytné zvládnout několik základních pojmů, jako je UTXO, přijímání adres a skriptování. Představíme si také obecný model důvěrnosti Bitcoinu, jak si jej představoval Satoshi Nakamoto, což nám umožní pochopit související sázky a rizika.

BTC204

Oddíl 2: Porozumění analýze řetězce a ochrana před ní

Ve druhé části se podíváme na techniky, které používají společnosti zabývající se analýzou blockchainu ke sledování vaší aktivity na Bitcoinu. Pochopení těchto metod je zásadní pro posílení ochrany vašeho soukromí. Cílem této části je prozkoumat strategie útočníků, abychom lépe pochopili rizika a připravili si půdu pro techniky, které budeme studovat v následujících částech. Budeme analyzovat vzory transakcí, vnitřní a vnější heuristiky a pravděpodobné interpretace těchto vzorů. Kromě teorie se na praktických příkladech a cvičeních naučíme používat průzkumníka bloků pro analýzu řetězců.

BTC204

Oddíl 3: Osvojení osvědčených postupů pro ochranu soukromí

Ve třetí části našeho vzdělávacího kurzu přejdeme k samotné podstatě: praxi! Cílem je osvojit si všechny základní osvědčené postupy, které by se měly stát přirozenými reflexy každého uživatele Bitcoinu. Budeme se zabývat používáním prázdných adres, tagováním, konsolidací, používáním kompletních uzlů a také metodami KYC a akvizice. Cílem je poskytnout vám ucelený přehled nástrah, kterým je třeba se vyhnout, abyste si vytvořili pevné základy v naší snaze o ochranu soukromí. U některých z těchto postupů budete odkázáni na konkrétní návod, jak je implementovat.

BTC204

Oddíl 4: Porozumění transakcím coinjoin

Jak můžeme mluvit o soukromí v Bitcoinu, aniž bychom zmínili coinjoiny? V části 4 se dozvíte vše, co potřebujete vědět o této metodě míchání. Dozvíte se, co jsou coinjoiny, jaká je jejich historie a cíle a jaké různé typy coinjoinů existují. Nakonec se pro zkušenější uživatele podíváme na to, co jsou to anonsety a entropie a jak je vypočítat.

BTC204

Oddíl 5: Porozumění problémům dalších pokročilých technik utajení

V páté části se podíváme na všechny ostatní dostupné techniky ochrany soukromí na Bitcoinu, kromě coinjoinu. V průběhu let prokázali vývojáři pozoruhodnou kreativitu při navrhování nástrojů věnovaných ochraně soukromí. Podíváme se na všechny tyto metody, jako je payjoin, kolaborativní transakce, coin swap a atomic swap, a podrobně popíšeme, jak fungují, jaké jsou jejich cíle a případné slabiny.

Budeme se také zabývat soukromím na úrovni sítě uzlů a šířením transakcí. Probereme také různé protokoly, které byly v průběhu let navrženy ke zvýšení soukromí uživatelů v Bitcoinu, včetně protokolů statických adres.

BTC204 Připraveni prozkoumat zákoutí soukromí na Bitcoinu? Jdeme na to!

Definice a klíčové pojmy

Model UTXO společnosti Bitcoin

Bitcoin je především měna, ale víte, jak jsou BTC v protokolu zastoupeny?

UTXO na Bitcoinu: co to je?

Protokol bitcoinu je založen na modelu UTXO, což je zkratka pro "Unspent Transaction Output".

Tento model se výrazně liší od tradičních bankovních systémů, které se při sledování finančních toků spoléhají na mechanismus účtů a zůstatků. V bankovním systému jsou totiž jednotlivé zůstatky vedeny na účtech spojených s identitou. Když si například koupíte bagetu u pekaře, vaše banka jednoduše odečte částku nákupu z vašeho účtu, čímž se sníží váš zůstatek, zatímco na účet pekaře se připíše stejná částka, čímž se zvýší jeho zůstatek. V tomto systému neexistuje žádná vazba mezi penězi, které na váš účet přicházejí, a penězi, které z něj odcházejí, kromě záznamů o transakcích.

BTC204

Bitcoin funguje jinak. Koncept účtu neexistuje a peněžní jednotky nejsou spravovány prostřednictvím zůstatků, ale prostřednictvím UTXO. UTXO představuje určité množství bitcoinů, které ještě nebylo utraceno, a tvoří tak "kus bitcoinu", který může být velký nebo malý. Jedno UTXO může mít například hodnotu 500 BTC nebo jednoduše 700 SATS.

**> Satoshi, často zkracovaný na sat, je nejmenší jednotka bitcoinu, srovnatelná s centem ve fiat měnách.

1 BTC = 100 000 000 SATS

Teoreticky může jeden UTXO představovat libovolnou hodnotu v bitcoinech, od jedné sedmičky až po teoretické maximum kolem 21 milionů BTC. Je však logicky nemožné vlastnit všech 21 milionů bitcoinů a existuje spodní ekonomická hranice zvaná "prach", pod kterou je UTXO považováno za ekonomicky nevýhodné utratit.

**> Největší UTXO, které kdy bylo na Bitcoinu vytvořeno, mělo hodnotu 500 000 BTC. Vytvořila ho platforma MtGox během konsolidační operace v listopadu 2011: 29a3efd3ef04f9153d47a990bd7b048a4b2d213daaa5fb8ed670fb85f13bdbcf

UTXO a podmínky výdajů

UTXO jsou směnné nástroje na Bitcoinu. Výsledkem každé transakce je spotřeba UTXO jako vstupů a vytvoření nových UTXO jako výstupů. Po dokončení transakce jsou UTXO použité jako vstupy považovány za "spotřebované" a jsou vytvořeny nové UTXO, které jsou přiděleny příjemcům uvedeným ve výstupech transakce. UTXO tedy jednoduše představuje nespotřebovaný výstup transakce, a tedy množství bitcoinů, které v daném okamžiku patří uživateli.

BTC204

Všechny UTXO jsou zabezpečeny skripty, které definují podmínky, za nichž je lze utratit. Aby mohl uživatel UTXO spotřebovat, musí síti prokázat, že splňuje podmínky stanovené skriptem, který dané UTXO zajišťuje. Obvykle jsou UTXO chráněny veřejným klíčem (nebo přijímací adresou, která tento veřejný klíč zastupuje). Aby mohl uživatel utratit UTXO spojený s tímto veřejným klíčem, musí prokázat, že je držitelem odpovídajícího soukromého klíče, a to předložením digitálního podpisu vytvořeného tímto klíčem. Proto říkáme, že vaše bitcoinová peněženka ve skutečnosti neobsahuje bitcoiny, ale uchovává vaše soukromé klíče, které vám následně umožňují přístup k UTXO a následně i k bitcoinům, které představují.

BTC204

Protože v bitcoinech neexistuje pojem účtu, zůstatek peněženky je jednoduše součtem hodnot všech UTXO, které může utratit. Pokud například vaše peněženka s bitcoiny může utratit následující 4 UTXO:

- 2 BTC
- 8 BTC
- 5 BTC
- 2 BTC

Celkový zůstatek vašeho portfolia bude 17 BTC.

BTC204

Struktura transakcí Bitcoin

Vstupy a výstupy transakcí

Transakce s bitcoiny je operace zaznamenaná v blockchainu, která převádí vlastnictví bitcoinů z jedné osoby na druhou. Přesněji řečeno, protože jsme na modelu UTXO a neexistují žádné účty, transakce splňuje podmínky výdajů, které zajišťují jedno nebo více UTXO, spotřebovává je a ekvivalentně vytváří nové UTXO s novými podmínkami výdajů. Stručně řečeno, transakce přesouvá bitcoiny ze splněného skriptu do nového skriptu určeného k jejich zajištění.

BTC204

Každá bitcoinová transakce se proto skládá z jednoho nebo více vstupů a jednoho nebo více výstupů. Vstupy jsou UTXO spotřebované transakcí k vytvoření výstupů. Výstupy jsou nové UTXO, které lze použít jako vstupy pro budoucí transakce.

BTC204

**> Teoreticky může mít bitcoinová transakce nekonečný počet vstupů a výstupů. Jediným omezením je maximální velikost bloku.

Každý vstup v transakci bitcoinu se vztahuje k předchozímu nevydanému UTXO. Aby bylo možné UTXO použít jako vstup, musí jeho držitel prokázat, že je oprávněným vlastníkem, a to ověřením souvisejícího skriptu, tj. splněním uložené podmínky utracení. Obecně to znamená předložit digitální podpis vytvořený pomocí soukromého klíče odpovídajícího veřejnému klíči, který původně zabezpečil toto UTXO. Skript tedy spočívá v ověření, že podpis odpovídá veřejnému klíči použitému při přijetí prostředků.

BTC204

Každý výstup zase určuje částku bitcoinů, která má být převedena, a příjemce. Ten je definován novým skriptem, který obvykle zablokuje nově vytvořené UTXO s adresou příjemce nebo novým veřejným klíčem.

Aby byla transakce považována za platnou podle pravidel konsensu, musí být celkový výstup menší nebo roven celkovému vstupu. Jinými slovy, součet nových UTXO vygenerovaných transakcí nesmí být vyšší než součet UTXO spotřebovaných jako vstupy. Tento princip je logický: pokud máte pouze 500 000 SATS, nemůžete provést nákup 700 000 SATS.

Výměna a sloučení v transakci Bitcoin

Transakci bitcoinu na UTXO tak lze přirovnat k přetavení zlaté mince. UTXO totiž není dělitelné, ale pouze tavitelné. To znamená, že uživatel nemůže UTXO představující určitou částku v bitcoinech jednoduše rozdělit na několik menších UTXO. Musí jej celý spotřebovat v transakci, aby vytvořil jedno nebo více nových UTXO o libovolné hodnotě na výstupu, která musí být menší nebo rovna původní hodnotě.

Tento mechanismus je podobný mechanismu zlaté mince. Řekněme, že vlastníte minci o váze 2 unce a chcete zaplatit 1 unci za předpokladu, že vám prodávající nemůže vrátit drobné. Museli byste svou minci roztavit a odlít 2 nové po 1 unci.

Bitcoin funguje podobně. Představme si, že Alice má UTXO ve výši 10 000 SATS a chce si koupit bagetu v ceně 4 000 SATS. Alice provede transakci s 1 UTXO ve výši 10 000 SATS jako vstupem, který celý spotřebuje, a 2 UTXO ve výši 4 000 SATS a 6 000 SATS jako výstupem. UTXO ve výši 4 000 SATS bude odesláno pekaři jako platba za bagetu, zatímco UTXO ve výši 6 000 SATS se vrátí Alici ve formě drobných. Toto UTXO, které se vrací původnímu emitentovi transakce, se v bitcoinovém žargonu nazývá "výměna".

BTC204

Nyní si představme, že Alice nemá jeden UTXO o kapacitě 10 000 SATS, ale dva UTXO po 3 000 SATS. V této situaci ani jeden z UTXO jednotlivě nestačí k nastavení hůlky na 4 000 SATS. Alice proto musí jako vstupy své transakce použít současně dva UTXO o hodnotě 3 000 SATS. Tímto způsobem dosáhne celková částka vstupů 6 000 SATS, což jí umožní uspokojit platbu 4 000 SATS pekaři. Tento způsob, při kterém se několik UTXO seskupí jako vstupy do transakce, se často označuje jako "slučování".

BTC204

Transakční poplatky

Intuitivně by se mohlo zdát, že transakční náklady představují také výstup transakce. Ve skutečnosti tomu tak ale není. Transakční náklady představují rozdíl mezi celkovými vstupy a celkovými výstupy. To znamená, že po použití části hodnoty vstupů na pokrytí požadovaných výstupů v transakci zůstává určitá suma vstupů nevyužita. Tato zbývající částka představuje transakční náklady.

Frais = total inputs - total outputs

Vezměme si příklad Alice, která má UTXO ve výši 10 000 SATS a chce si koupit bagetu za 4 000 SATS. Alice vytvoří transakci, jejímž vstupem bude její UTXO ve výši 10 000 SATS. Poté vygeneruje výstup ve výši 4 000 SATS pro pekaře, který zaplatí za bagetu. Aby Alice povzbudila těžaře k začlenění její transakce do bloku, přidělí jim 200 SATS jako poplatky. Poté vytvoří druhý výstup, směnu, která jí bude vrácena, ve výši 5 800 SATS.

BTC204

Podle vzorce pro výpočet poplatků zjistíme, že nezletilým skutečně zbývá 200 SATS:

Frais = total inputs - total outputs
Frais = 10 000 - (4 000 + 5 800)
Frais = 10 000 - 9 800
Frais = 200

Když se těžaři podaří blok validovat, je oprávněn vybírat tyto poplatky za všechny transakce zahrnuté v jeho bloku, a to prostřednictvím tzv. "coinbase" transakce.

Vytváření UTXO v systému Bitcoin

Pokud jste pozorně sledovali předchozí odstavce, víte, že UTXO lze vytvořit pouze konzumací jiných existujících UTXO. Tímto způsobem tvoří bitcoinové mince souvislý řetězec. Možná vás však zajímá, jak vznikly první UTXO v tomto řetězci. Vyvstává tak problém podobný tomu o slepici a vejci: kde se vzaly tyto původní UTXO?

Odpověď je v transakční bázi mincí.

Coinbase je specifický typ transakce bitcoinu, který je pro každý blok jedinečný a je vždy první z nich. Umožňuje těžaři, který našel platný důkaz práce, získat odměnu za svůj blok. Tato odměna se skládá ze dvou prvků: dotace bloku a poplatku za transakci, o nichž jsme hovořili v předchozí části.

Transakce coinbase je jedinečná v tom, že jako jediná dokáže vytvářet bitcoiny ex nihilo, aniž by bylo nutné spotřebovávat vstupy pro generování výstupů. Tyto nově vytvořené bitcoiny bychom mohli nazvat "původní UTXO".

BTC204

Blokově dotované bitcoiny jsou nové BTC vytvořené od nuly podle předem stanoveného harmonogramu vydávání v pravidlech konsensu. Bloková dotace se snižuje na polovinu každých 210 000 bloků, tj. přibližně každé čtyři roky, v procesu známém jako "halving". Původně bylo s každou dotací vytvořeno 50 bitcoinů, ale toto množství se postupně snižovalo; v současnosti činí 3,125 bitcoinu na blok.

Co se týče transakčních poplatků, ty sice také představují nově vytvořené BTC, ale nesmí překročit rozdíl mezi celkovými vstupy a výstupy všech transakcí v bloku. Již dříve jsme viděli, že tyto poplatky představují část vstupů, která není použita ve výstupech transakcí. Tato část je technicky vzato "ztracena" během transakce a těžař má právo tuto hodnotu znovu vytvořit ve formě jednoho nebo více nových UTXO. Jedná se o převod hodnoty mezi emitentem transakce a těžařem, který ji přidává do blockchainu.

**> Na bitcoiny vygenerované transakcí na coinbase se vztahuje doba splatnosti 100 bloků, během níž je těžař nemůže utratit. Toto pravidlo má zabránit komplikacím spojeným s používáním nově vytvořených bitcoinů v řetězci, který by později mohl být zastaralý.

Důsledky modelu UTXO

Především model UTXO přímo ovlivňuje transakční poplatky Bitcoinu. Protože kapacita každého bloku je omezená, těžaři upřednostňují transakce, které nabízejí nejlepší poplatky v poměru k prostoru, který v bloku zaberou. Čím více UTXO totiž transakce obsahuje na svých vstupech a výstupech, tím je těžší, a proto vyžaduje vyšší poplatky. To je jeden z důvodů, proč se často snažíme snížit počet UTXO v našem portfoliu, což může mít vliv i na důvěrnost, což je téma, kterému se budeme podrobně věnovat ve třetí části tohoto kurzu.

Za druhé, jak bylo zmíněno v předchozích částech, mince Bitcoin jsou v podstatě řetězcem UTXO. Každá transakce tak vytváří spojení mezi minulým UTXO a budoucím UTXO. UTXO tedy umožňují explicitně sledovat cestu bitcoinů od jejich vzniku až po jejich současné výdaje. Tuto transparentnost lze vnímat pozitivně, neboť umožňuje každému uživateli přesvědčit se o pravosti přijatých bitcoinů. Na tomto principu sledovatelnosti a auditovatelnosti je však založena i analýza blockchainu, což je postup, který má ohrozit důvěrnost. Na tuto praxi se podrobně podíváme ve druhé části kurzu.

Model soukromí bitcoinu

Peníze: autenticita, integrita a dvojí utrácení

Jednou z funkcí peněz je řešit problém dvojího souběhu potřeb. V systému založeném na směnném obchodu vyžaduje dokončení směny nejen najít jedince, který se vzdává zboží odpovídající mé potřebě, ale také mu poskytnout zboží ekvivalentní hodnoty, které uspokojuje jeho vlastní potřebu. Dosažení této rovnováhy je složitá záležitost.

BTC204

Proto používáme peníze k přesunu hodnot v prostoru i čase.

BTC204

Aby ražba mincí tento problém vyřešila, je nezbytné, aby strana poskytující zboží nebo službu byla přesvědčena o své schopnosti tuto částku později utratit. Každý racionálně uvažující jedinec, který chce přijmout minci, ať už digitální, nebo fyzickou, se tedy ujistí, že splňuje dvě základní kritéria:

Pokud používáte fyzickou měnu, je to první charakteristika, kterou je nejsložitější potvrdit. V různých historických obdobích byla integrita kovových mincí často narušena praktikami, jako je stříhání nebo propichování. Například ve starověkém Římě bylo běžnou praxí, že občané oškrabávali hrany zlatých mincí, aby získali trochu drahého kovu a zároveň si je schovali pro budoucí transakce. Vnitřní hodnota mince se tak snížila, ale její nominální hodnota zůstala stejná. To je jeden z důvodů, proč byla hrana mince později rýhována.

Pravost je také obtížné ověřit na fyzickém peněžním nosiči. Dnešní techniky boje proti padělaným penězům jsou stále složitější, což nutí prodejce investovat do nákladných ověřovacích systémů.

Na druhou stranu, vzhledem k jejich povaze není dvojí utrácení pro fyzické měny problémem. Pokud vám dám bankovku v hodnotě 10 EUR, neodvolatelně opouští mé vlastnictví a vstupuje do vašeho, což přirozeně vylučuje jakoukoli možnost vícenásobného utrácení peněžních jednotek, které ztělesňuje. Stručně řečeno, tuto bankovku v hodnotě 10 € nebudu moci utratit znovu.

BTC204

U digitální měny je to jiné. Zajištění pravosti a integrity mince je často jednodušší. Jak jsme viděli v předchozí části, model UTXO Bitcoinu umožňuje dohledat minci až k jejímu původu, a tak ověřit, že byla skutečně vytvořena těžařem v souladu s pravidly konsensu.

Na druhou stranu je složitější zajistit, aby nedocházelo k dvojímu vynakládání prostředků, protože veškeré digitální zboží je v podstatě informací. Na rozdíl od fyzického zboží se informace při výměně nedělí, ale šíří se násobením. Pokud vám například pošlu dokument e-mailem, bude se duplikovat. Nemůžete si být jisti, že jsem původní dokument smazal.

BTC204

Zabránění dvojímu utrácení za Bitcoin

Jediným způsobem, jak se této duplikaci digitálního aktiva vyhnout, je mít přehled o všech výměnách v systému. Tímto způsobem můžeme zjistit, kdo co vlastní, a aktualizovat držbu jednotlivých osob podle provedených transakcí. To se děje například u skripturálních peněz v bankovním systému. Když zaplatíte 10 eur obchodníkovi kreditní kartou, banka zaznamená směnu a aktualizuje účetní knihu.

BTC204

U bitcoinu se dvojímu utrácení brání stejným způsobem. Snažíme se potvrdit neexistenci transakce, při které již byly dané mince utraceny. Pokud mince nebyly nikdy použity, můžeme si být jisti, že k dvojímu utracení nedojde. Tento princip popsal Satoshi Nakamoto v Bílé knize slavnou větou:

**Jediný způsob, jak potvrdit neexistenci transakce, je mít povědomí o všech transakcích

Na rozdíl od bankovního modelu však v případě Bitcoinu nechceme důvěřovat centrálnímu subjektu. Všichni uživatelé tedy musí mít možnost potvrdit tuto absenci dvojího utrácení, aniž by se museli spoléhat na třetí stranu. Všichni tedy musí mít přehled o všech bitcoinových transakcích. Proto jsou transakce Bitcoinu veřejně vysílány ve všech uzlech sítě a zaznamenávány v čistém textu v blockchainu.

Právě toto veřejné šíření informací komplikuje ochranu soukromí v bitcoinech. V tradičním bankovním systému teoreticky ví o provedených transakcích pouze finanční instituce. U Bitcoinu jsou naopak o všech transakcích informováni všichni uživatelé, a to prostřednictvím svých uzlů.

Model důvěrnosti: bankovní systém vs. Bitcoin

V tradičním systému je váš bankovní účet spojen s vaší identitou. Bankéř je schopen zjistit, který bankovní účet patří kterému klientovi a které transakce jsou s ním spojeny. Tento tok informací je však mezi bankou a veřejnou sférou přerušen. Jinými slovy, není možné znát zůstatek a transakce na bankovním účtu patřícím jiné osobě. K těmto informacím má přístup pouze banka.

BTC204

Váš bankéř například ví, že si každé ráno kupujete bagetu u místního pekaře, ale váš soused o této transakci neví. Tímto způsobem je tok informací přístupný zúčastněným stranám, zejména bance, ale zůstává nedostupný pro osoby zvenčí.

BTC204

Kvůli omezení veřejného šíření transakcí, které jsme viděli v předchozí části, nemůže model důvěrnosti bitcoinu následovat model bankovního systému. Protože v případě Bitcoinu nelze přerušit tok informací mezi transakcemi a veřejným prostorem, model soukromí se opírá o oddělení identity uživatele od samotných transakcí.

BTC204

Pokud si například koupíte bagetu od pekaře a zaplatíte v BTC, váš soused, který má svůj vlastní kompletní uzel, může vidět, jak vaše transakce proběhla, stejně jako vidí všechny ostatní transakce v systému. Při dodržení zásad důvěrnosti by však neměl být schopen spojit tuto konkrétní transakci s vaší identitou.

BTC204

Protože jsou však transakce bitcoinů zveřejňovány, je možné mezi nimi vytvořit vazby a odvodit informace o zúčastněných stranách. Tato činnost dokonce představuje samostatnou specializaci, známou jako "analýza blockchainu". V další části kurzu vás zvu k prozkoumání základů blockchainové analýzy, abyste pochopili, jak jsou vaše bitcoiny sledovány, a mohli se proti nim lépe bránit.

Porozumění analýze řetězce a ochrana před ní

Co je analýza řetězce bitcoinů?

Definice a fungování

Analýza blockchainu se zabývá sledováním toku bitcoinů v blockchainu. Obecně řečeno, analýza řetězce je založena na pozorování charakteristik ve vzorcích předchozích transakcí. Poté spočívá v identifikaci stejných charakteristik na transakci, kterou chceme analyzovat, a odvození pravděpodobných interpretací z nich. Tato metoda řešení problému, založená na praktickém přístupu k nalezení dostatečně dobrého řešení, je známá jako "heuristika".

Laicky řečeno, analýza řetězce má tři hlavní fáze:

  1. Sledování blockchainu ;

  2. Identifikace známých prvků ;

  3. **Dedukce předpokladů **

BTC204

Analýzu blockchainu může provádět kdokoli. Stačí mít přístup k veřejným informacím blockchainu prostřednictvím kompletního uzlu, abyste mohli sledovat pohyby transakcí a vytvářet hypotézy. Existují také bezplatné nástroje, které tuto analýzu usnadňují, jako například OXT.me, kterým se budeme podrobně věnovat v posledních dvou kapitolách této části. Hlavní riziko pro důvěrnost však představují společnosti specializující se na analýzu řetězců. Tyto společnosti dovedly analýzu blockchainu do průmyslového měřítka a prodávají své služby finančním institucím a vládám. Mezi těmito společnostmi je jistě nejznámější Chainalysis.

Cíle analýzy řetězce

Jedním z cílů analýzy blockchainu je seskupit různé aktivity na Bitcoinu, aby bylo možné určit jedinečnost uživatele, který je provedl. Následně bude možné pokusit se spojit toto seskupení činností se skutečnou identitou.

BTC204

Vzpomeňte si na předchozí kapitolu. Vysvětlil jsem, proč byl model soukromí bitcoinu původně založen na oddělení identity uživatele od transakcí. Bylo by proto lákavé si myslet, že analýza blockchainu je k ničemu, protože i když se nám podaří agregovat aktivity na řetězci, nemůžeme je spojit se skutečnou identitou.

Teoreticky je toto tvrzení správné. V první části tohoto kurzu jsme viděli, že k určení podmínek na UTXO se používají páry kryptografických klíčů. Tyto páry klíčů v podstatě neprozrazují žádné informace o identitě svých držitelů. Takže i když se nám podaří seskupit činnosti spojené s různými páry klíčů, neřekne nám to nic o entitě, která za těmito činnostmi stojí.

BTC204

Praktická realita je však mnohem složitější. Existuje množství chování, které může spojit skutečnou identitu s aktivitou v řetězci. V analýze se tomu říká vstupní bod a existuje jich velké množství.

Nejběžnější je KYC (Know Your Customer). Pokud vybíráte své bitcoiny z regulované platformy na jednu z vašich osobních přijímacích adres, někteří lidé jsou schopni spojit vaši identitu s touto adresou. V širším smyslu může být vstupním bodem jakákoli forma interakce mezi vaším reálným životem a bitcoinovou transakcí. Pokud například zveřejníte přijímací adresu na svých sociálních sítích, může to být vstupní bod pro analýzu. Pokud provedete platbu v Bitcoinech svému pekaři, bude moci spojit váš obličej (součást vaší identity) s bitcoinovou adresou.

Těmto vstupním bodům se při používání Bitcoinu prakticky nelze vyhnout. I když se můžeme snažit omezit jejich rozsah, budou vždy přítomny. Proto je zásadní kombinovat metody zaměřené na ochranu soukromí. Udržování oddělení vaší skutečné identity od vašich transakcí je sice zajímavý přístup, ale v dnešní době je stále nedostatečný. Pokud totiž lze všechny vaše aktivity v onchainu seskupit, pak i ten nejmenší vstupní bod pravděpodobně ohrozí jedinou vrstvu důvěrnosti, kterou jste si vytvořili.

BTC204

Obrana proti řetězové analýze

Při používání Bitcoinu si tedy musíme umět poradit i s analýzou blockchainu. Tím můžeme minimalizovat agregaci našich aktivit a omezit dopad vstupního bodu na naše soukromí.

BTC204

Jak lépe čelit analýze blockchainu, než se seznámit s metodami, které se při ní používají? Pokud chcete vědět, jak zlepšit své soukromí na Bitcoinu, musíte těmto metodám porozumět. Díky tomu lépe pochopíte techniky, jako je coinjoin nebo payjoin (techniky, na které se podíváme v závěrečných částech kurzu), a omezíte chyby, kterých se můžete dopustit.

https://planb.network/tutorials/privacy/on-chain/coinjoin-samourai-wallet-e566803d-ab3f-4d98-9136-5462009262ef

https://planb.network/tutorials/privacy/on-chain/payjoin-848b6a23-deb2-4c5f-a27e-93e2f842140f

V tomto ohledu můžeme najít analogii s kryptografií a kryptoanalýzou. Dobrý kryptograf je především dobrý kryptoanalytik. Chcete-li vymyslet nový šifrovací algoritmus, musíte vědět, jakým útokům bude čelit, a také studovat, proč byly předchozí algoritmy prolomeny. Stejný princip platí i pro soukromí Bitcoinu. Pochopení metod analýzy blockchainu je klíčem k ochraně před nimi. Proto jsem do tohoto školení zařadil celou část o analýze řetězců.

Metody analýzy řetězce

Je důležité si uvědomit, že analýza řetězců není exaktní věda. Opírá se o heuristiku odvozenou z předchozích pozorování nebo logických interpretací. Tato pravidla nám umožňují získat poměrně spolehlivé výsledky, nikdy však s absolutní přesností. Jinými slovy, řetězcová analýza vždy zahrnuje určitý rozměr pravděpodobnosti v dosažených závěrech. Například lze s různou mírou jistoty odhadnout, že dvě adresy patří stejnému subjektu, ale naprostá jistota bude vždy nedosažitelná.

Celý smysl řetězové analýzy spočívá právě v agregaci různých heuristik, aby se minimalizovalo riziko chyby. Svým způsobem jde o kumulaci důkazů, která nás přibližuje realitě.

Tyto známé heuristiky lze rozdělit do různých kategorií, které si podrobně popíšeme níže:

Satoshi Nakamoto a analýza řetězce

První dvě heuristiky analýzy řetězce objevil sám Satoshi Nakamoto. Hovoří o nich v 10. části Bílé knihy Bitcoinu. Jsou to :

BTC204

Zdroj: Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System", https://bitcoin.org/bitcoin.pdf, 2009.

Jaké to jsou, se dozvíme v následujících kapitolách, ale už teď je zajímavé, že tyto dvě heuristiky si dodnes udržují v analýze řetězců prvenství.

Vzory transakcí

Vzor transakce je jednoduše celkový model nebo struktura typické transakce, kterou lze nalézt v blockchainu a jejíž pravděpodobná interpretace je známa. Při studiu vzorů se zaměřujeme na jednu transakci a analyzujeme ji na vysoké úrovni.

Jinými slovy, budeme se zabývat pouze počtem UTXO na vstupech a počtem UTXO na výstupech, aniž bychom se zabývali konkrétnějšími detaily nebo prostředím transakce. Na základě pozorovaného vzoru můžeme interpretovat povahu transakce. Poté budeme hledat charakteristiky její struktury a vyvodíme interpretaci.

BTC204

V této části se společně podíváme na hlavní modely transakcí, se kterými se setkáváme při analýze řetězců, a u každého modelu uvedu pravděpodobný výklad této struktury a také konkrétní příklad.

Jedna zásilka (nebo jedna platba)

Začněme velmi častým vzorem, protože se objevuje u většiny plateb bitcoiny. Jednoduchý model platby je charakterizován spotřebou jednoho nebo více UTXO jako vstupů a produkcí 2 UTXO jako výstupů. Tento model tedy vypadá následovně:

BTC204

Když si všimneme této struktury transakcí v blockchainu, můžeme si již udělat výklad. Jak již název napovídá, tento model naznačuje, že se nacházíme v přítomnosti odesílací nebo platební transakce. Uživatel spotřeboval na vstupu své vlastní UTXO, aby na výstupu uspokojil platební UTXO a směnné UTXO (peníze vrácené témuž uživateli).

Víme tedy, že sledovaný uživatel již pravděpodobně nevlastní jeden ze dvou výstupních UTXO (platební UTXO), ale stále vlastní druhý UTXO (výměnný UTXO).

V tuto chvíli nemůžeme určit, který výstup reprezentuje který UTXO, protože to není účelem studie vzoru. K tomu se dostaneme tak, že se budeme spoléhat na heuristiku, kterou budeme studovat v následujících částech. V této fázi se náš cíl omezuje na určení povahy dané transakce, což je v tomto případě prosté odeslání.

Zde je například transakce Bitcoinu, která využívá vzor jednoduchého odeslání:

b6cc79f45fd2d7669ff94db5cb14c45f1f879ea0ba4c6e3d16ad53a18c34b769
BTC204

Source : Mempool.space

Po tomto prvním příkladu byste měli lépe pochopit, co znamená studovat "transakční model". Transakci zkoumáme tak, že se soustředíme pouze na její strukturu, aniž bychom brali v úvahu její prostředí nebo konkrétní detaily transakce. V tomto prvním kroku se díváme pouze na celkový obraz.

Nyní, když jste pochopili, co je to vzor, přejděme k dalším existujícím vzorům.

Zametání

Tento druhý model je charakterizován spotřebou jednoho UTXO jako vstupu a výrobou jednoho UTXO jako výstupu.

BTC204

Interpretace tohoto modelu je taková, že se nacházíme v přítomnosti samopřenosu. Uživatel převedl své bitcoiny na sebe, na jinou adresu, která mu patří. Vzhledem k tomu, že při transakci nedochází k žádné výměně, je velmi nepravděpodobné, že jsme v přítomnosti platby. Při platbě je totiž téměř nemožné, aby měl plátce UTXO přesně odpovídající částce požadované prodávajícím plus poplatek za transakci. Obecně je tedy plátce povinen vytvořit směnný výstup.

Pak víme, že sledovaný uživatel pravděpodobně stále vlastní toto UTXO. V kontextu řetězové analýzy, pokud víme, že UTXO použitý jako vstup transakce patří Alici, můžeme předpokládat, že UTXO použitý jako výstup patří také jí. Zajímavým se později stane nalezení heuristik pro vnitřní transakce, které by mohly tento předpoklad posílit (těmto heuristikám se budeme věnovat v kapitole 3.3).

Zde je například transakce s bitcoiny, která využívá vzor sweep:

35f1072a0fda5ae106efb4fda871ab40e1f8023c6c47f396441ad4b995ea693d
BTC204

Source : Mempool.space

Dejte si však pozor, že tento typ vzoru může odhalit i vlastní převod na účet platformy pro výměnu kryptoměn. Teprve studium známých adres a kontext transakce nám napoví, zda se jedná o samopřevod na peněženku, nebo o výběr na platformu. Adresy směnárenských platforem jsou totiž často snadno identifikovatelné.

Vezměme si znovu příklad Alice: pokud skenování vede na adresu známou nějaké platformě (jako je například Binance), může to znamenat, že bitcoiny byly převedeny mimo přímé vlastnictví Alice, pravděpodobně s úmyslem je prodat nebo uložit na této platformě. Na druhou stranu, pokud je cílová adresa neznámá, lze předpokládat, že jde jednoduše o jinou peněženku, která stále patří Alici. Tento typ studie však patří spíše do kategorie heuristiky než vzorců.

Konsolidace

Tento model je charakterizován spotřebou několika UTXO na vstupu a výrobou jednoho UTXO na výstupu.

BTC204

Interpretace tohoto vzoru je taková, že se nacházíme ve fázi konsolidace. Jedná se o běžnou praxi mezi uživateli bitcoinu, jejímž cílem je sloučení několika UTXO v očekávání možného zvýšení transakčních poplatků. Provedením této operace v období, kdy jsou poplatky nízké, je možné ušetřit na budoucích poplatcích. O této praxi si povíme více v kapitole 4.3.

Z toho můžeme usuzovat, že uživatel, který stojí za tímto transakčním modelem, pravděpodobně vlastnil všechny UTXO na vstupu a stále vlastní UTXO na výstupu. Pravděpodobně se tedy jedná o automatický převod.

Stejně jako u přehazování může tento typ vzoru odhalit i vlastní převod na účet výměnné platformy. Teprve studium známých adres a kontextu transakce nám napoví, zda se jedná o konsolidaci do portfolia samopřevodu, nebo o výběr na platformu.

Zde je například transakce s bitcoiny, která využívá konsolidační vzor:

77c16914211e237a9bd51a7ce0b1a7368631caed515fe51b081d220590589e94
BTC204

Source : Mempool.space

Při analýze řetězce může tento model odhalit velké množství informací. Víme-li například, že jeden ze vstupů patří Alici, můžeme předpokládat, že jí patří i všechny ostatní vstupy a výstupy této transakce. Tento předpoklad by pak umožnil vrátit se zpět do řetězce předchozích transakcí a objevit a analyzovat další transakce, které jsou pravděpodobně spojeny s Alicí.

BTC204

Seskupené výdaje

Tento model se vyznačuje spotřebou několika UTXO jako vstupů (často jen jednoho) a výrobou mnoha UTXO jako výstupů.

BTC204

Interpretace tohoto modelu je taková, že se jedná o seskupené výdaje. Jedná se o praxi, která pravděpodobně odhaluje velmi rozsáhlou ekonomickou aktivitu, například výměnnou platformu. Seskupené výdaje umožňují těmto subjektům ušetřit náklady tím, že spojí své výdaje do jedné transakce.

Z tohoto modelu můžeme odvodit, že UTXO na vstupu pochází z podniku s vysokou úrovní ekonomické aktivity a že UTXO na výstupu se rozptýlí. Mnoho z nich bude patřit zákazníkům společnosti, kteří si z platformy vybrali bitcoiny. Další mohou připadnout partnerským společnostem. A nakonec se jistě jedna nebo více směn vrátí zpět k vydávající společnosti.

Například zde je transakce s bitcoiny, která využívá vzor sdružené útraty (pravděpodobně se jedná o transakci vydanou platformou Bybit):

8a7288758b6e5d550897beedd13c70bcbaba8709af01a7dbcc1f574b89176b43
BTC204

Source : Mempool.space

Transakce specifické pro protokol

Mezi transakčními vzory můžeme také identifikovat ty, které odhalují použití konkrétního protokolu. Například transakce Whirlpool coinjoins (o kterých jsme hovořili v části 5) budou mít snadno identifikovatelnou strukturu, která je odliší od ostatních, běžnějších transakcí.

BTC204

Analýza tohoto vzorce naznačuje, že se pravděpodobně jedná o transakci založenou na spolupráci. Je také možné pozorovat coinjoin. Pokud se tato druhá hypotéza ukáže jako správná, pak by nám počet výstupů mohl poskytnout hrubý odhad počtu účastníků coinjoinu.

Zde je například transakce Bitcoinu, která využívá vzor kolaborativní transakce coinjoin:

00601af905bede31086d9b1b79ee8399bd60c97e9c5bba197bdebeee028b9bea
BTC204

Source : Mempool.space

Existuje mnoho dalších protokolů s vlastní specifickou strukturou. Existují například transakce Wabisabi, transakce Stamps a transakce Runes.

Díky těmto transakčním vzorům již můžeme interpretovat určité množství informací o dané transakci. Struktura transakcí však není jediným zdrojem informací pro analýzu. Můžeme také studovat její detaily. Tyto vnitřní detaily s oblibou nazývám "vnitřní heuristika" a budeme se jimi zabývat v následující kapitole.

Interní heuristika

Vnitřní heuristika je specifická vlastnost, kterou identifikujeme v rámci samotné transakce, aniž bychom museli zkoumat její okolí, a která nám umožňuje činit závěry. Na rozdíl od vzorů, které se zaměřují na celkovou strukturu transakce na vysoké úrovni, je interní heuristika založena na souboru extrahovatelných dat. Patří sem např:

Obecně řečeno, tento typ heuristiky nám umožní identifikovat směnu v konkrétní transakci. Tímto způsobem pak můžeme trvale sledovat entitu v několika různých transakcích. Pokud totiž identifikujeme UTXO patřící uživateli, kterého chceme sledovat, je klíčové určit, když provede transakci, který výstup byl převeden na jiného uživatele a který výstup představuje směnu, která tak zůstává v jeho vlastnictví.

BTC204

Znovu připomínám, že tyto heuristické metody nejsou absolutně přesné. Jednotlivě nám pouze umožňují identifikovat pravděpodobné scénáře. Právě kumulace několika heuristik pomáhá snižovat nejistotu, aniž by ji kdy dokázala zcela odstranit.

Vnitřní podobnosti

Tato heuristika zahrnuje studium podobností mezi vstupy a výstupy téže transakce. Pokud je stejná vlastnost pozorována na vstupech a pouze na jednom z výstupů transakce, je pravděpodobné, že tento výstup představuje směnu.

Nejzřetelnějším rysem je opakované použití přijímací adresy ve stejné transakci.

BTC204

Tato heuristika ponechává jen málo prostoru pro pochybnosti. Pokud nebyl hacknut jeho soukromý klíč, stejná přijímací adresa nutně odhaluje aktivitu jediného uživatele. Výsledná interpretace je, že výměna transakcí je výstupem se stejnou adresou jako vstup. Na základě této výměny pak můžeme pokračovat ve sledování jednotlivce.

Zde je například transakce, na kterou lze tuto heuristiku pravděpodobně použít:

54364146665bfc453a55eae4bfb8fdf7c721d02cb96aadc480c8b16bdeb8d6d0
BTC204

Source : Mempool.space

Tyto podobnosti mezi vstupy a výstupy nekončí u opakovaného použití adresy. Jakákoli podobnost v použití skriptů může být použita k aplikaci heuristiky. Například někdy můžeme pozorovat stejné verzování mezi vstupem a jedním z výstupů transakce.

BTC204

Na tomto diagramu vidíme, že vstup č. 0 odemyká skript P2WPKH (SegWit V0 začínající na bc1q). Výstup č. 0 používá stejný typ skriptu. Výstup č. 1 naopak používá skript P2TR (SegWit V1 začínající na bc1p). Interpretace této vlastnosti je taková, že je pravděpodobné, že adresa se stejným verzováním jako vstup je výměnnou adresou. Bude tedy vždy patřit stejnému uživateli.

Zde je transakce, na kterou lze tuto heuristiku pravděpodobně použít:

db07516288771ce5d0a06b275962ec4af1b74500739f168e5800cbcb0e9dd578
BTC204

Source : Mempool.space

Na druhém z nich vidíme, že vstup č. 0 a výstup č. 1 používají skripty P2WPKH (SegWit V0), zatímco výstup č. 0 používá jiný skript P2PKH (Legacy).

Na počátku roku 2010 byla tato heuristika založená na verzování skriptů poměrně neužitečná vzhledem k omezenému počtu dostupných typů skriptů. Postupem času a s postupnými aktualizacemi systému Bitcoin však byla zavedena stále větší rozmanitost typů skriptů. Tato heuristika se proto stává stále relevantnější, protože s širší škálou typů skriptů se uživatelé rozdělují do menších skupin, čímž se zvyšuje šance na uplatnění této interní heuristiky opakovaného použití verzí. Z tohoto důvodu je pouze z hlediska důvěrnosti vhodné zvolit nejběžnější typ skriptu. Například v době, kdy píšu tyto řádky, jsou skripty Taproot (bc1p) používány méně často než skripty SegWit V0 (bc1q). Ačkoli první z nich nabízí v určitých specifických kontextech ekonomické výhody a výhody v oblasti důvěrnosti, pro tradičnější použití s jedním podpisem může mít smysl zůstat u staršího standardu z důvodu důvěrnosti, dokud se nový standard nerozšíří.

Zaokrouhlení plateb

Další interní heuristikou, která nám může pomoci identifikovat výměnu, je heuristika kulatého čísla. Obecně řečeno, pokud se setkáme s jednoduchým platebním vzorem (1 vstup a 2 výstupy), pak pokud jeden z výstupů utratí kulatou částku, představuje to platbu.

BTC204

Pokud jeden výstup představuje platbu, druhý představuje směnu. Lze tedy interpretovat jako pravděpodobné, že uživatel vstupu má vždy k dispozici výstup identifikovaný jako směna.

Je třeba zdůraznit, že tato heuristická metoda není vždy použitelná, protože většina plateb se stále provádí ve svěřeneckých účetních jednotkách. Pokud totiž maloobchodník ve Francii přijímá bitcoiny, zpravidla nebude zobrazovat stabilní ceny v sátech. Místo toho zvolí přepočet mezi cenou v eurech a částkou v bitcoinech, která má být zaplacena. Na konci transakce by tedy neměla být žádná zaokrouhlená čísla.

Analytik by se nicméně mohl pokusit provést tento přepočet s ohledem na směnný kurz platný v době, kdy byla transakce vysílána do sítě. Vezměme si příklad transakce se vstupem 97 552 sats a dvěma výstupy, jedním 31 085 sats a druhým 64 152 sats. Na první pohled se zdá, že tato transakce nezahrnuje zaokrouhlené částky. Při použití směnného kurzu 64 339 € v době transakce však získáme přepočet na eura následujícím způsobem:

Po převodu na fiat měnu lze tuto transakci použít k použití heuristické metody zaokrouhlení částky. Výstup 20 € pravděpodobně přešel k obchodníkovi nebo alespoň změnil vlastníka. Na základě dedukce je pravděpodobné, že výstup ve výši 41,27 € zůstal ve vlastnictví původního uživatele.

BTC204

Pokud se jednoho dne bitcoin stane preferovanou zúčtovací jednotkou na našich burzách, může být tato heuristika pro analýzu ještě užitečnější.

Zde je například transakce, na kterou lze tuto heuristiku pravděpodobně použít:

2bcb42fab7fba17ac1b176060e7d7d7730a7b807d470815f5034d52e96d2828a
BTC204

Source : Mempool.space

Největší výkon

Pokud na základě jednoduchého platebního modelu identifikujeme dostatečně velký rozdíl mezi dvěma transakčními výstupy, můžeme odhadnout, že největší výstup bude pravděpodobně devizový.

BTC204

Tato heuristika největšího výkonu je jistě nejnepřesnější ze všech. Sama o sobě je dost slabá. Tuto vlastnost však můžeme kombinovat s dalšími heuristikami a snížit tak nejistotu naší interpretace.

Pokud se například díváme na transakci s kulatou platbou a větší platbou, použití heuristiky kulaté platby a heuristiky větší platby společně snižuje naši míru nejistoty.

Zde je například transakce, na kterou lze tuto heuristiku pravděpodobně použít:

b79d8f8e4756d34bbb26c659ab88314c220834c7a8b781c047a3916b56d14dcf
BTC204

Source : Mempool.space

Externí heuristika

Studium externích heuristik znamená analýzu podobností, vzorců a charakteristik určitých prvků, které nejsou specifické pro samotnou transakci. Jinými slovy, zatímco dříve jsme se omezovali na využívání prvků vlastních transakci pomocí interních heuristik, nyní rozšiřujeme pole analýzy o prostředí transakce díky externím heuristikám.

Opětovné použití adresy

Jedná se o jednu z nejznámějších heuristik bitcoinářů. Opakované použití adresy umožňuje vytvořit vazbu mezi různými transakcemi a různými UTXO. Dochází k němu, když je adresa pro příjem bitcoinů použita několikrát.

Je tedy možné využít opakované použití adresy v rámci téže transakce jako interní heuristiku pro identifikaci výměny (jak jsme viděli v předchozí kapitole). Opakované použití adresy lze však využít také jako vnější heuristiku k rozpoznání jedinečnosti entity, která stojí za několika transakcemi.

Interpretace opakovaného použití adresy je taková, že všechny UTXO blokované na této adrese patří (nebo patřily) stejnému subjektu. Tato heuristika ponechává jen malý prostor pro nejistotu. Po identifikaci bude výsledná interpretace pravděpodobně odpovídat skutečnosti. Umožňuje tedy seskupovat různé činnosti v řetězci.

BTC204

Jak bylo vysvětleno v úvodu třetí části, tuto heuristiku objevil sám Satoshi Nakamoto. V Bílé knize zmiňuje řešení, které má uživatelům pomoci vyhnout se jejímu generování, a to jednoduše použít prázdnou adresu pro každou novou transakci:

"Jako dodatečný firewall by mohl být pro každou transakci použit nový pár klíčů, aby nebyly spojeny se společným vlastníkem."

BTC204

Zdroj: Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System", https://bitcoin.org/bitcoin.pdf, 2009.

Zde je například adresa, která se opakovaně používá v několika transakcích:

bc1qqtmeu0eyvem9a85l3sghuhral8tk0ar7m4a0a0
BTC204

Zdroj : Mempool.space

Podobnost písma a otisky peněženek

Kromě opakovaného použití adres existuje mnoho dalších heuristických postupů, které umožňují propojit akce se stejným portfoliem nebo shlukem adres.

Za prvé, analytik může hledat podobnosti v používání skriptů. Například některé menšinové skripty, jako je multisig, lze odhalit snáze než skripty SegWit V0. Čím větší je skupina, ve které se skrýváme, tím těžší je nás odhalit. To je jeden z důvodů, proč na dobrých protokolech Coinjoin všichni účastníci používají naprosto stejný typ skriptu.

Obecněji řečeno, analytik se může zaměřit také na charakteristické otisky portfolia. Jedná se o procesy specifické pro dané použití, které lze identifikovat s cílem využít je jako sledovací heuristiku. Jinými slovy, pokud pozorujeme kumulaci stejných vnitřních charakteristik u transakcí přisuzovaných sledovanému subjektu, můžeme se pokusit identifikovat tytéž charakteristiky u jiných transakcí.

Například budeme moci zjistit, že sledovaný uživatel systematicky odesílá své změny na adresy P2TR (bc1p...). Pokud se tento proces opakuje, můžeme jej použít jako heuristický údaj pro zbytek naší analýzy. Můžeme také použít další otisky, jako je pořadí UTXO, místo změny ve výstupech, signalizace RBF (Replace-by-Fee) nebo číslo verze, pole nSequence a pole nLockTime.

BTC204

Jak upozorňuje @LaurentMT v Space Kek #19 (francouzsky psaný podcast), užitečnost portfoliových otisků při analýze řetězců se postupem času výrazně zvyšuje. Rostoucí počet typů skriptů a stále progresivnější zavádění těchto nových funkcí portfoliovým softwarem totiž zvýrazňuje rozdíly. V některých případech je dokonce možné přesně identifikovat software, který sledovaný subjekt používá. Je proto důležité si uvědomit, že studium portfoliových stop je relevantní zejména pro nedávné transakce, nikoli pro transakce zahájené na počátku roku 2010.

Shrneme-li to, otiskem může být jakýkoli specifický postup, prováděný automaticky peněženkou nebo ručně uživatelem, který můžeme najít u jiných transakcí a který nám pomůže při analýze.

Heuristika společného vlastnictví vstupů (CIOH)

Heuristika společného vlastnictví vstupů (CIOH) je heuristika, která říká, že pokud má transakce více vstupů, všechny pravděpodobně pocházejí od jednoho subjektu. V důsledku toho je jejich vlastnictví společné.

BTC204

Pro použití CIOH nejprve pozorujeme transakci s několika vstupy. Mohou to být 2 vstupy nebo 30 vstupů. Jakmile tuto charakteristiku identifikujeme, ověříme, zda transakce zapadá do známého transakčního modelu. Například pokud existuje 5 vstupů s přibližně stejnou částkou a 5 výstupů s přesně stejnou částkou, budeme vědět, že se jedná o strukturu coinjoinu. Nebudeme moci použít CIOH.

BTC204

Na druhou stranu, pokud transakce nezapadá do žádného známého modelu kolaborativních transakcí, pak můžeme interpretovat, že všechny vstupy pravděpodobně pocházejí od stejného subjektu. To může být velmi užitečné pro rozšíření již známého shluku nebo pro pokračování ve sledování.

BTC204

CIOH objevil Satoshi Nakamoto. Hovoří o něm v 10. části Bílé knihy:

"[...] propojení je nevyhnutelné u transakcí s více záznamy, které nutně prozrazují, že jejich záznamy byly v držení stejného vlastníka. Riziko spočívá v tom, že pokud je vlastník klíče odhalen, propojení může odhalit další transakce, které patřily stejnému vlastníkovi."

BTC204

Zvláště fascinující je, že Satoshi Nakamoto ještě před oficiálním spuštěním Bitcoinu identifikoval dvě hlavní slabiny soukromí uživatelů, a to CIOH a opakované použití adres. Taková předvídavost je docela pozoruhodná, protože tyto dvě heuristiky zůstávají i dnes nejužitečnějšími při analýze blockchainu.

Jako příklad uvádíme transakci, na kterou můžeme pravděpodobně aplikovat CIOH:

20618e63b6eed056263fa52a2282c8897ab2ee71604c7faccfe748e1a202d712
BTC204

Source : Mempool.space

Údaje mimo řetězec

Analýza řetězců se samozřejmě neomezuje výhradně na data v řetězci. K upřesnění analýzy lze použít i jakákoli data z předchozí analýzy nebo dostupná na internetu.

Pokud například zjistíme, že sledované transakce jsou systematicky vysílány ze stejného bitcoinového uzlu, a podaří se nám identifikovat jeho IP adresu, můžeme být schopni identifikovat další transakce od stejného subjektu a také určit část identity emitenta. Ačkoli tento postup není snadno dosažitelný, protože vyžaduje provoz mnoha uzlů, mohou jej využít některé společnosti specializující se na analýzu blockchainu.

Analytik má také možnost vycházet z analýz, které byly dříve zveřejněny, nebo z vlastních předchozích analýz. Možná se nám podaří najít výstup, který ukazuje na již identifikovaný shluk adres. Někdy je také možné se spolehnout na výstupy, které ukazují na výměnnou platformu, protože adresy těchto společností jsou obecně známé.

Stejným způsobem můžete provést analýzu vylučovací metodou. Například pokud se při analýze transakce se dvěma výstupy jeden z nich vztahuje k již známému shluku adres, ale odlišnému od sledované entity, pak můžeme interpretovat, že druhý výstup pravděpodobně představuje výměnu.

Analýza kanálů zahrnuje také poněkud obecnější složku OSINT (Open Source Intelligence), která zahrnuje vyhledávání na internetu. Z tohoto důvodu nedoporučujeme zveřejňovat adresy přímo na sociálních sítích nebo na webových stránkách, ať už se jedná o pseudonymy nebo ne.

BTC204

Časové modely

Přemýšlíme o tom méně, ale určité lidské chování je rozpoznatelné v řetězci. Snad nejužitečnější při analýze je váš spánkový režim! Ano, když spíte, nevysíláte bitcoinové transakce. Ale obecně spíte zhruba ve stejnou dobu. Proto se v blockchainové analýze běžně používá časová analýza. Jednoduše řečeno, jedná se o sčítání časů, kdy jsou transakce daného subjektu vysílány do sítě Bitcoin. Analýzou těchto časových vzorců můžeme odvodit řadu informací.

Především časová analýza může někdy určit povahu sledované entity. Pokud zjistíme, že transakce jsou vysílány soustavně po dobu 24 hodin, pak to prozrazuje vysokou úroveň ekonomické aktivity. Subjektem, který za těmito transakcemi stojí, bude pravděpodobně společnost, potenciálně mezinárodní a možná s automatizovanými vnitropodnikovými postupy.

Například tento vzorec jsem rozpoznal před několika měsíci při analýze transakce, která omylem přidělila 19 bitcoinů na poplatcích. Jednoduchá časová analýza mi umožnila vyslovit hypotézu, že máme co do činění s automatizovanou službou, a tedy pravděpodobně s velkým subjektem, jako je výměnná platforma.

O několik dní později se skutečně zjistilo, že finanční prostředky patří společnosti PayPal, a to prostřednictvím směnárenské platformy Paxos.

Naopak, pokud vidíme, že časový vzorec je spíše rozložen do 16 konkrétních hodin, pak můžeme odhadnout, že máme co do činění s jednotlivým uživatelem nebo možná s místní společností v závislosti na vyměňovaných objemech.

Kromě povahy sledované entity nám časový vzorec může díky časovým zónám také přibližně říci, kde se uživatel nachází. Tímto způsobem můžeme porovnat další transakce a použít jejich časové značky jako další heuristiku, kterou lze přidat do naší analýzy.

Například na vícekrát použité adrese, o které jsem se zmínil dříve, vidíme, že transakce, příchozí i odchozí, se soustřeďují na 13hodinový interval.

bc1qqtmeu0eyvem9a85l3sghuhral8tk0ar7m4a0a0
BTC204

Zdroj: OXT.me

Tento rozsah pravděpodobně odpovídá Evropě, Africe nebo Blízkému východu. Můžeme tedy předpokládat, že uživatel, který za těmito transakcemi stojí, žije v těchto oblastech.

Časová analýza tohoto typu také vedla k hypotéze, že Satoshi Nakamoto neoperoval z Japonska, ale z USA: The Time Zones of Satoshi Nakamoto

Využití v praxi pomocí průzkumníka bloků

V této závěrečné kapitole se budeme věnovat praktickému využití konceptů, které jsme doposud studovali. Ukážu vám příklady skutečných transakcí s bitcoiny a vy budete muset získat informace, které po vás budu chtít.

V ideálním případě by bylo pro provedení těchto cvičení vhodnější použít profesionální nástroj pro analýzu řetězců. Od zatčení tvůrců peněženky Samourai však jediný bezplatný nástroj pro analýzu OXT.me již není k dispozici. Pro tato cvičení proto zvolíme klasický průzkumník bloků. Doporučuji používat Mempool.space pro jeho mnoho funkcí a řadu nástrojů pro analýzu řetězců, ale můžete se rozhodnout i pro jiný průzkumník, například Bitcoin Explorer.

Na začátek vás seznámím se cvičeními. K jejich vyplnění použijte průzkumníka bloků a odpovědi si zapište na list papíru. Na konci této kapitoly vám pak poskytnu odpovědi, abyste si mohli zkontrolovat a opravit své výsledky.

Transakce vybrané pro tato cvičení byly vybrány čistě na základě jejich charakteristik poněkud náhodným způsobem. Tato kapitola má pouze vzdělávací a informativní charakter. Chtěl bych jasně říci, že nepodporuji ani nenabádám k používání těchto nástrojů ke škodlivým účelům. Cílem je naučit vás, jak se chránit před analýzou řetězců, nikoli provádět analýzu za účelem odhalení soukromých informací jiných osob.

Cvičení 1

Identifikátor analyzované transakce :

3769d3b124e47ef4ffb5b52d11df64b0a3f0b82bb10fd6b98c0fd5111789bef7

Jak se jmenuje model této transakce a jaké pravděpodobné interpretace lze vyvodit pouze na základě zkoumání jejího modelu, tj. struktury transakce?

Cvičení 2

Identifikátor analyzované transakce :

baa228f6859ca63e6b8eea24ffad7e871713749d693ebd85343859173b8d5c20

Jak se jmenuje model této transakce a jaké pravděpodobné interpretace lze vyvodit pouze na základě zkoumání jejího modelu, tj. struktury transakce?

Cvičení 3

Identifikátor analyzované transakce :

3a9eb9ccc3517cc25d1860924c66109262a4b68f4ed2d847f079b084da0cd32b

Jaký je model této transakce?

Jaký výstup bude pravděpodobně představovat výměna po identifikaci jejího modelu pomocí interní heuristiky transakce?

Cvičení 4

Identifikátor analyzované transakce :

35f0b31c05503ebfdf7311df47f68a048e992e5cf4c97ec34aa2833cc0122a12

Jaký je model této transakce?

Jaký výstup bude pravděpodobně představovat výměna po identifikaci jejího modelu pomocí interní heuristiky transakce?

Cvičení 5

Představme si, že Loïc zveřejnil jednu ze svých adres pro příjem bitcoinů na sociální síti Twitter:

BTC204
bc1qja0hycrv7g9ww00jcqanhfpqmzx7luqalum3vu

Které transakce bitcoinu lze na základě těchto informací a s použitím pouze heuristiky opakovaného použití adresy spojit s Loïcovou identitou?

Samozřejmě nejsem skutečným majitelem této adresy a nezveřejnil jsem ji na sociálních sítích. Je to adresa, kterou jsem náhodně převzal z blockchainu

Cvičení 6

Po provedení cvičení 5 jste díky heuristice opakovaného použití adresy dokázali identifikovat několik transakcí Bitcoin, do kterých je Loïc zřejmě zapojen. Za normálních okolností jste si mezi identifikovanými transakcemi měli všimnout této:

2d9575553c99578268ffba49a1b2adc3b85a29926728bd0280703a04d051eace

Tato transakce je vůbec první, při níž byly na Loïcovu adresu odeslány finanční prostředky. Odkud myslíte, že pocházejí bitcoiny, které Loïc touto transakcí obdržel?

Cvičení 7

Po provedení cvičení 5 jste díky heuristice opakovaného použití adresy dokázali identifikovat několik transakcí Bitcoin, do kterých je Loïc zřejmě zapojen. Nyní chcete zjistit, odkud Loïc pochází. Na základě nalezených transakcí proveďte časovou analýzu a zjistěte časové pásmo, které Loïc s největší pravděpodobností používá. Na základě tohoto časového pásma určete místo, kde Loïc zřejmě žije (země, stát/region, město...).

BTC204

Cvičení 8

Zde je transakce Bitcoin ke studiu:

bb346dae645d09d32ed6eca1391d2ee97c57e11b4c31ae4325bcffdec40afd4f

Jaké informace můžeme interpretovat při pohledu na tuto transakci?

Cvičební řešení

Cvičení 1:

Model této transakce je jednoduchý platební model. Pokud studujeme pouze jeho strukturu, můžeme interpretovat, že jeden výstup představuje směnu a druhý výstup představuje skutečnou platbu. Víme tedy, že pozorovaný uživatel již pravděpodobně nevlastní jeden ze dvou UTXO na výstupu (ten platební), ale stále vlastní druhý UTXO (ten směnný).

Cvičení 2:

Model pro tuto transakci je model seskupených výdajů. Tento model pravděpodobně odhaluje rozsáhlou ekonomickou činnost, například výměnnou platformu. Můžeme usuzovat, že vstupní UTXO pochází od společnosti s vysokou úrovní ekonomické aktivity a že výstupní UTXO budou rozptýlené. Některé budou patřit zákazníkům společnosti, kteří si své bitcoiny vybrali do peněženek pro vlastní úschovu. Jiné mohou připadnout partnerským společnostem. A konečně nepochybně dojde k výměně některých, které se vrátí zpět do vydávající společnosti.

Cvičení 3:

Model této transakce je jednoduchá platba. Na transakci proto můžeme použít interní heuristiku a pokusit se identifikovat směnu.

Osobně jsem identifikoval nejméně dvě vnitřní heuristiky, které podporují stejnou hypotézu:

Nejzřetelnější heuristikou je opakované použití stejného typu skriptu. Výstup 0 je totiž P2SH, který poznáme podle jeho přijímací adresy začínající na 3 :

3Lcdauq6eqCWwQ3UzgNb4cu9bs88sz3mKD

Zatímco výstup 1 je P2WPKH, identifikovatelný podle adresy začínající na bc1q :

bc1qya6sw6sta0mfr698n9jpd3j3nrkltdtwvelywa

UTXO použitý jako vstup pro tuto transakci také používá skript P2WPKH:

bc1qyfuytw8pcvg5vx37kkgwjspg73rpt56l5mx89k

Můžeme tedy předpokládat, že výstup 0 odpovídá platbě a výstup 1 je směna transakcí, což by znamenalo, že vstupní uživatel vždy vlastní výstup 1.

Abychom tuto hypotézu podpořili nebo vyvrátili, můžeme hledat další heuristické znaky, které buď potvrzují naši úvahu, nebo snižují pravděpodobnost, že je naše hypotéza správná.

Identifikoval jsem přinejmenším jednu další heuristiku. Je to největší výstupní heuristika. Výstup 0 měří 123 689 sats, zatímco výstup 1 měří 505 839 sats. Mezi těmito dvěma výstupy je tedy významný rozdíl. Největší výstupní heuristika naznačuje, že největším výstupem bude pravděpodobně devizový. Tato heuristika dále posiluje naši původní hypotézu.

Zdá se proto pravděpodobné, že uživatel, který poskytl UTXO jako vstup, stále drží výstup 1, který zřejmě ztělesňuje výměnu transakce.

Cvičení 4:

Model této transakce je jednoduchá platba. Na transakci proto můžeme použít interní heuristiku a pokusit se identifikovat směnu.

Osobně jsem identifikoval nejméně dvě vnitřní heuristiky, které podporují stejnou hypotézu:

Nejzřetelnější heuristikou je opakované použití stejného typu skriptu. Výstup 0 je totiž P2SH, který poznáme podle jeho přijímací adresy začínající na 3 :

3FSH5Mnq6S5FyQoKR9Yjakk3X4KCGxeaD4

Zatímco výstup 1 je P2WPKH, identifikovatelný podle adresy začínající na bc1q :

bc1qvdywdcfsyavt4v8uxmmrdt6meu4vgeg439n7sg

UTXO použitý jako vstup pro tuto transakci také používá skript P2WPKH:

bc1qku3f2y294h3ks5eusv63dslcua2xnlzxx0k6kp

Můžeme tedy předpokládat, že výstup 0 odpovídá platbě a výstup 1 je směna transakcí, což by znamenalo, že vstupní uživatel vždy vlastní výstup 1.

Abychom tuto hypotézu podpořili nebo vyvrátili, můžeme hledat další heuristické znaky, které buď potvrzují naši úvahu, nebo snižují pravděpodobnost, že je naše hypotéza správná.

Identifikoval jsem přinejmenším jednu další heuristiku. Jedná se o výstup zaokrouhleného množství. Výstup 0 měří 70 000 satelitů, zatímco výstup 1 měří 22 962 satelitů. Máme tedy dokonale kulatý výstup v zúčtovací jednotce BTC. Heuristika kulatého výstupu naznačuje, že UTXO s kulatou částkou je s největší pravděpodobností ta platební a že po eliminaci ostatní představují směnu. Tato heuristika dále posiluje naši původní hypotézu.

V tomto příkladu však může naši původní hypotézu zpochybnit jiná heuristika. Výstup 0 je totiž větší než výstup 1. Na základě heuristiky, že největší výstup je zpravidla devizový, bychom mohli usuzovat, že výstup 0 je devizový. Tato protihypotéza se však jeví jako nepravděpodobná, protože ostatní dvě heuristiky se zdají být podstatně přesvědčivější než heuristika největšího výstupu. V důsledku toho se zdá rozumné zachovat naši původní hypotézu i přes tento zdánlivý rozpor.

Zdá se proto pravděpodobné, že uživatel, který poskytl UTXO jako vstup, stále drží výstup 1, který zřejmě ztělesňuje výměnu transakce.

Cvičení 5:

Vidíme, že k Lojcově identitě lze přiřadit 8 transakcí. Z nich 4 zahrnují příjem bitcoinů:

2d9575553c99578268ffba49a1b2adc3b85a29926728bd0280703a04d051eace
8b70bd322e6118b8a002dbdb731d16b59c4a729c2379af376ae230cf8cdde0dd
d5864ea93e7a8db9d3fb113651d2131567e284e868021e114a67c3f5fb616ac4
bc4dcf2200c88ac1f976b8c9018ce70f9007e949435841fc5681fd33308dd762

Další 4 se týkají zásilek bitcoinů:

8b52fe3c2cf8bef60828399d1c776c0e9e99e7aaeeff721fff70f4b68145d540
c12499e9a865b9e920012e39b4b9867ea821e44c047d022ebb5c9113f2910ed6
a6dbebebca119af3d05c0196b76f80fdbf78f20368ebef1b7fd3476d0814517d
3aeb7ce02c35eaecccc0a97a771d92c3e65e86bedff42a8185edd12ce89d89cc

Cvičení 6:

Pokud se podíváme na model této transakce, je zřejmé, že se jedná o vázané výdaje. Transakce má totiž jeden vstup a 51 výstupů, což svědčí o vysoké míře ekonomické aktivity. Můžeme tedy vyslovit hypotézu, že Loïc vybral bitcoiny z výměnné platformy.

Tuto hypotézu podporuje několik faktorů. Zaprvé, typ skriptu použitý k zabezpečení vstupu UTXO je multisig skript P2SH 2/3, což naznačuje pokročilou úroveň zabezpečení typickou pro výměnné platformy:

OP_PUSHNUM_2
OP_PUSHBYTES_33 03eae02975918af86577e1d8a257773118fd6ceaf43f1a543a4a04a410e9af4a59
OP_PUSHBYTES_33 03ba37b6c04aaf7099edc389e22eeb5eae643ce0ab89ac5afa4fb934f575f24b4e
OP_PUSHBYTES_33 03d95ef2dc0749859929f3ed4aa5668c7a95baa47133d3abec25896411321d2d2d
OP_PUSHNUM_3
OP_CHECKMULTISIG

Zkoumaná adresa 3PUv9tQMSDCEPSMsYSopA5wDW86pwRFbNF je navíc opakovaně použita ve více než 220 000 různých transakcích, což je často charakteristické pro výměnné platformy, které obecně nedbají na jejich důvěrnost.

Časová heuristika aplikovaná na tuto adresu rovněž ukazuje pravidelné vysílání transakcí téměř denně po dobu 3 měsíců s prodlouženými hodinami přes 24 hodin, což naznačuje nepřetržitou aktivitu výměnné platformy.

A konečně, objemy, které tento subjekt zpracovává, jsou obrovské. Adresa přijala a odeslala 44 BTC v 222 262 transakcích mezi prosincem 2022 a březnem 2023. Tyto velké objemy dále potvrzují pravděpodobnou povahu činnosti výměnné platformy.

Cvičení 7:

Analýzou časů potvrzení transakcí lze zjistit následující časy UTC:

05:43
20:51
18:12
17:16
04:28
23:38
07:45
21:55

Analýza těchto časových rozvrhů ukazuje, že časy UTC-7 a UTC-8 jsou u většiny časových rozvrhů v souladu s rozsahem současné lidské činnosti (mezi 8:00 a 23:00):

05:43 UTC > 22:43 UTC-7
20:51 UTC > 13:51 UTC-7
18:12 UTC > 11:12 UTC-7
17:16 UTC > 10:16 UTC-7
04:28 UTC > 21:28 UTC-7
23:38 UTC > 16:38 UTC-7
07:45 UTC > 00:45 UTC-7
21:55 UTC > 14:55 UTC-7
05:43 UTC > 21:43 UTC-8
20:51 UTC > 12:51 UTC-8
18:12 UTC > 10:12 UTC-8
17:16 UTC > 09:16 UTC-8
04:28 UTC > 20:28 UTC-8
23:38 UTC > 15:38 UTC-8
07:45 UTC > 23:45 UTC-8
21:55 UTC > 13:55 UTC-8
BTC204

Časové pásmo UTC-7 je důležité zejména v létě, protože zahrnuje státy a regiony jako :

Z těchto informací vyplývá, že Loïc pravděpodobně žije na západním pobřeží Spojených států nebo v Kanadě.

Cvičení 8:

Analýza této transakce ukazuje 5 vstupů a jeden výstup, což naznačuje konsolidaci. Při použití heuristiky CIOH můžeme předpokládat, že všechny vstupní UTXO jsou ve vlastnictví jediného subjektu a že výstupní UTXO patří rovněž tomuto subjektu. Zdá se, že uživatel se rozhodl seskupit několik UTXO, které vlastnil, a vytvořit tak jediné UTXO na výstupu s cílem konsolidovat své části. Tento krok byl pravděpodobně motivován snahou využít tehdejších nízkých transakčních nákladů, aby se snížily budoucí náklady.


Při psaní této třetí části o analýze řetězců jsem čerpal z následujících zdrojů:

Rád bych poděkoval jejich autorům, vývojářům a výrobcům. Děkuji také korektorům, kteří pečlivě opravili článek, z něhož vychází tento třetí díl, a poskytli mi své odborné rady :

Osvojení osvědčených postupů pro ochranu soukromí

Opětovné použití adresy

Po prostudování technik, které mohou narušit důvěrnost Bitcoinu, se v této třetí části podíváme na nejlepší postupy, které je třeba přijmout, abyste se ochránili. Cílem této části není zkoumat metody zvyšování důvěrnosti, což je téma, kterému se budeme věnovat později, ale spíše pochopit, jak správně komunikovat s Bitcoinem, abyste si zachovali důvěrnost, kterou přirozeně nabízí, aniž byste se museli uchylovat k dalším technikám.

Na začátku této třetí části budeme samozřejmě hovořit o opakovaném použití adresy. Tento jev je hlavní hrozbou pro důvěrnost uživatelů. Tato kapitola je jistě nejdůležitější z celého kurzu.

Co je to přijímací adresa?

Adresa pro příjem bitcoinů je řetězec nebo identifikátor, který se používá pro příjem bitcoinů do peněženky.

Technicky vzato přijímací adresa bitcoinu "nepřijímá" bitcoiny v pravém slova smyslu, ale slouží spíše k definování podmínek, za kterých lze bitcoiny utratit. Konkrétně řečeno, když je vám zaslána platba, transakce odesílatele pro vás vytvoří nové UTXO jako výstup z UTXO, které spotřebovala jako vstupy. Na tento výstup připojí skript definující, jak lze toto UTXO později utratit. Tento skript se nazývá "ScriptPubKey" nebo "Locking Script". Do tohoto skriptu je integrována vaše přijímací adresa, přesněji řečeno její náklad. Laicky řečeno, tento skript v podstatě říká:

"Chcete-li utratit tento nový UTXO, musíte poskytnout digitální podpis pomocí soukromého klíče spojeného s touto přijímací adresou." BTC204

Adresy bitcoinů jsou různých typů v závislosti na použitém modelu skriptování. První modely, známé jako "Legacy*", zahrnují adresy P2PKH (Pay-to-PubKey-Hash) a P2SH (Pay-to-Script-Hash). Adresy P2PKH začínají vždy na 1 a adresy P2SH na 3. Ačkoli jsou tyto formáty stále bezpečné, jsou nyní zastaralé, protože s sebou nesou vyšší transakční náklady a nabízejí menší důvěrnost než nové standardy.

Adresy SegWit V0 (P2WPKH a P2WSH) a Taproot / SegWit V1 (P2TR) představují moderní formáty. Adresy SegWit začínají na bc1q a adresy Taproot, zavedené v roce 2021, začínají na bc1p.

Například zde je adresa příjmu Taproot:

bc1ps5gd2ys8kllz9alpmcwxqegn7kl3elrpnnlegwkm3xpq2h8da07spxwtf5

Způsob konstrukce klíče ScriptPubKey závisí na používaném standardu:

| ScriptPubKey | Šablona skriptu

| ---------------- | ----------------------------------------------------------- |

| P2PKH | OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG |

| P2SH | OP_HASH160 <scriptHash> OP_EQUAL |

| P2WPKH | 0 <pubKeyHash> |

| P2WSH | 0 <witnessScriptHash> |

| P2SH - P2WPKH | OP_HASH160 <redeemScriptHash> OP_EQUAL |

| P2SH - P2WSH | OP_HASH160 <redeemScriptHash> OP_EQUAL |

| P2TR | 1 <pubKey> |

Konstrukce adres pro příjem závisí také na zvoleném modelu skriptu:

BTC204

Adresy zobrazené v portfoliovém softwaru obsahují také HRP (Human-Readable Part), obvykle bc pro adresy po SegWitu, oddělovač 1 a číslo verze q pro SegWit V0 a p pro Taproot/SegWit V1. Přidává se také kontrolní součet, který zaručuje integritu a platnost adresy během přenosu.

Nakonec jsou adresy převedeny do standardního formátu:

Zde je sčítací matice pro formáty bech32 a bech32m (SegWit a Taproot) od základu 10:

| + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |

| --- | --- | --- | --- | --- | --- | --- | --- | --- |

| 0 | q | p | z | r | y | 9 | x | 8 |

| 8 | g | f | 2 | t | v | d | w | 0 |

| 16 | s | 3 | j | n | 5 | 4 | k | h |

| 24 | c | e | 6 | m | u | a | 7 | l |

Co je opakované použití adresy?

Opakované použití adresy je použití stejné přijímací adresy pro blokování několika různých UTXO.

Jak jsme viděli v předchozí části, každý UTXO má svůj vlastní ScriptPubKey, který jej uzamyká a musí být splněn, aby mohl být UTXO použit jako vstup v nové transakci. Právě do tohoto klíče ScriptPubKey jsou integrovány adresy užitečného zatížení.

Pokud různé klíče ScriptPubKeys obsahují stejnou přijímací adresu, jedná se o tzv. opakované použití adresy. V praxi to znamená, že uživatel opakovaně poskytl odesílatelům stejnou adresu, aby mohl přijímat bitcoiny prostřednictvím více plateb. A právě tato praxe je pro vaše soukromí katastrofální.

Proč je opakované použití adresy problém?

Protože je blockchain veřejný, je snadné zjistit, které adresy blokují které UTXO a kolik bitcoinů. Pokud je stejná adresa použita pro několik transakcí, je možné odvodit, že všechny bitcoiny spojené s touto adresou patří stejné osobě. Tento postup ohrožuje soukromí uživatelů tím, že umožňuje vytvořit deterministické vazby mezi různými transakcemi a dohledat bitcoiny v blockchainu. Na tento problém upozornil již sám Satoshi Nakamoto v Bílé knize bitcoinu:

Jako další brána firewall by se pro každou transakci mohl použít nový pár klíčů, aby nebyly spojeny se společným vlastníkem BTC204

Zdroj: Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System", https://bitcoin.org/bitcoin.pdf, 2009.

Satoshiho záměrem v této větě bylo vytvořit další firewall v případě spojení mezi identitou uživatele a párem klíčů v Bitcoinu, aby se zabránilo veřejnému propojení celé jeho aktivity s jeho identitou. Dnes, s rozmachem společností zabývajících se analýzou blockchainu a regulací KYC, již používání jedinečných adres není "dodatečnou firewallovou stěnou", ale nezbytnou praxí pro každého, kdo si chce zachovat alespoň minimální soukromí.

Při opakovaném použití adresy vytváříte téměř nepopiratelnou vazbu mezi všemi transakcemi spojenými s touto adresou. To sice přímo neohrožuje vaše finanční prostředky, protože kryptografie eliptických křivek zaručuje bezpečnost vašich soukromých klíčů, ale usnadňuje to sledování vašich aktivit. Kdokoli s uzlem totiž může sledovat transakce a zůstatky na adresách, což zcela ohrožuje vaši anonymitu.

BTC204

Pro ilustraci si uveďme příklad Boba, uživatele, který pravidelně nakupuje bitcoiny v malých částkách v DCA a posílá je vždy na stejnou adresu. Po dvou letech tato adresa obsahuje značné množství bitcoinů. Pokud Bob použije tuto adresu k platbě místnímu obchodníkovi, ten bude moci vidět všechny související prostředky a odvodit Bobovo bohatství. To může vést k osobním bezpečnostním rizikům, například k pokusu o krádež nebo vydírání. Kdyby Bob používal pro příjem každého pravidelného nákupu prázdnou adresu, prozradil by obchodníkovi neskonale méně informací.

Při analýze řetězců existují 2 typy opakovaného použití adresy:

První je, když je adresa opakovaně použita v několika různých transakcích s bitcoiny. To je to, o čem jsme mluvili dříve: tato heuristika vyvozuje, že všechny UTXO prošlé přes tuto adresu patří jednomu subjektu.

K opakovanému použití interních adres nedochází, pokud k němu dochází v rámci několika transakcí, ale pokud k němu dochází v rámci jedné transakce. Pokud je totiž stejná adresa použitá k uzamčení vstupu použita jako výstup transakce, pak můžeme odvodit, že tento výstup patří stále stejnému uživateli (burze) a že druhý výstup představuje skutečnou platbu. Tato další heuristika umožňuje zachovat stopu prostředků v průběhu několika transakcí.

BTC204

Opakované použití adres je pro Bitcoin skutečnou pohromou. Podle webových stránek OXT.me (v současné době nepřístupných) činila v roce 2022 celková míra opakovaného použití adres v Bitcoinu přibližně 52 %:

BTC204

Tato míra je obrovská, ale pochází v drtivé většině od výměnných platforem, nikoli od jednotlivých uživatelů.

Jak zabránit opakovanému použití adresy?

Zamezit opakovanému použití adresy je poměrně jednoduché: Pro všechny nové platby do peněženky jednoduše použijte novou, prázdnou adresu.

Díky BIP32 jsou nyní moderní portfolia deterministická a hierarchická. To znamená, že uživatel může vygenerovat velké množství adres z jediné počáteční informace: semínka. Uložením této jediné informace je možné obnovit všechny soukromé klíče v portfoliu, což umožní přístup k finančním prostředkům zajištěným příslušnými adresami.

BTC204

Proto se po stisknutí tlačítka "přijmout" v softwaru peněženky vždy nabídne nepoužitá přijímací adresa. Po přijetí bitcoinů na této adrese software automaticky navrhne novou adresu.

PS: Nedávno některé softwarové peněženky oznámily svůj záměr přestat generovat prázdné adresy, protože se obávají, že to úřady budou vnímat jako formu praní špinavých peněz. Pokud je váš software jedním z nich, důrazně vám doporučuji, abyste jej okamžitě vyměnili, protože je to pro uživatele nepřijatelné Pokud potřebujete statický identifikátor pro příjem plateb, například darů, není vhodné používat klasickou adresu Bitcoin kvůli riziku opakovaného použití. Místo toho použijte adresu Lightning nebo zvolte statický identifikátor platby v řetězci, například BIP47 nebo Silent Payments. Tyto protokoly jsou podrobně vysvětleny v 6. části tohoto školení.

Označování a kontrola dílů

Jak jsme zjistili v části o analýze řetězců, existuje množství heuristických postupů a vzorů, které lze použít k odvození informací o transakci. Jako uživatel je důležité tyto techniky znát, abyste se před nimi mohli lépe chránit.

To zahrnuje důslednou správu peněženky ve vlastní úschově, což znamená znát původ UTXO a pečlivě vybírat, které UTXO se při platbách spotřebují. Tato efektivní správa peněženky se opírá o dvě důležité vlastnosti dobrých bitcoinových peněženek: označování a kontrolu mincí.

V této kapitole se podíváme na tyto funkce a zjistíme, jak je můžete inteligentně využívat, aniž by vás příliš zatěžovaly, a výrazně tak optimalizovat své soukromí v systému Bitcoin.

Co je to označování?

Označování je postup, při kterém se konkrétnímu UTXO v peněžence Bitcoin přiřadí anotace nebo štítek. Tyto anotace jsou ukládány lokálně softwarem peněženky a nikdy nejsou přenášeny přes síť Bitcoin. Labelling je tedy osobní nástroj pro správu.

Pokud mám například UTXO z nákupu P2P na Bisq u společnosti Charles, mohu jej označit jako "Non-KYC Bisq Charles".

Označování je osvědčený postup, který pomáhá zapamatovat si původ nebo zamýšlené místo určení UTXO, což usnadňuje správu finančních prostředků a optimalizaci ochrany osobních údajů. Vaše bitcoinová peněženka totiž jistě zabezpečuje několik UTXO. Pokud jsou zdroje těchto UTXO různé, možná nebudete chtít tyto UTXO v budoucnu slučovat, jinak byste mohli odhalit jejich společné vlastnictví. Řádným označením všech svých částí si můžete být jisti, že si vzpomenete, odkud pocházejí, až je budete potřebovat použít, i kdyby to mělo být až za několik let.

Co je to rohová kontrola?

Aktivní využívání označování je ještě zajímavější ve spojení s možností kontroly mincí v softwaru pro správu portfolia.

Kontrola mincí je funkce, kterou najdete v dobrém softwaru bitcoinové peněženky a která vám dává možnost ručně vybrat konkrétní UTXO, které chcete použít jako vstupy pro dokončení transakce. Ve skutečnosti, abyste uspokojili výstupní platbu, musíte na oplátku spotřebovat vstupní UTXO. Z řady důvodů, na které se podíváme později, můžete chtít přesně vybrat, které části spotřebovat jako vstupy pro uspokojení dané platby. Přesně to vám umožňuje ovládání mincí. Abychom vám poskytli analogii, tato funkce je podobná výběru konkrétní mince z peněženky při platbě za bagetu.

BTC204

Použití portfoliového softwaru s kontrolou mincí ve spojení s označením UTXO umožňuje uživatelům rozlišovat a přesně vybírat UTXO pro své transakce.

Jak označujete své UTXO?

Neexistuje žádná univerzální metoda označování UTXO. Je na vás, abyste si definovali systém označování, který bude pro vaše portfolio srozumitelný. V každém případě mějte na paměti, že dobré značení je takové, kterému rozumíte, když ho potřebujete. Pokud je vaše peněženka s bitcoiny určena především ke spoření, nemusí vám být označení užitečné ještě desítky let. Proto se ujistěte, že jsou jasné, přesné a srozumitelné.

Je důležité, aby vaši blízcí mohli snadno zjistit původ finančních prostředků, pokud by jednoho dne potřebovali přístup k vašemu portfoliu. Pomůže jim to jak z důvodu zachování důvěrnosti, tak pro právní účely, pokud by potřebovali původ prostředků zdůvodnit nějakému úřadu.

Nejdůležitější věcí, kterou je třeba na etiketě uvést, je zdroj UTXO. Měli byste jednoduše uvést, jak se mince dostala do vaší peněženky. Je výsledkem nákupu na burzovní platformě? Úhrady faktury od zákazníka? Na peer-to-peer burze? Nebo představuje výměnu výdaje? Můžete například uvést:

BTC204

Chcete-li vyladit správu UTXO a respektovat strategii oddělení fondů v rámci portfolia, můžete své štítky obohatit o další ukazatel, který toto oddělení odráží. Pokud vaše portfolio obsahuje dvě kategorie UTXO, které byste rádi nemíchali, mohli byste do svých štítků začlenit ukazatel, který tyto skupiny jasně odliší. Tyto oddělovací značky budou záviset na vašich vlastních kritériích, například na rozlišení mezi UTXO vzniklými v důsledku akvizičního procesu, který zahrnuje KYC, nebo mezi profesionálními a osobními fondy. Vezmeme-li si výše uvedené příklady štítků, mohlo by se to projevit takto:

BTC204

Doporučuje se také udržovat označení dílu v průběhu transakcí. Například při konsolidaci UTXO no-KYC nezapomeňte výsledné UTXO označit nejen jako konsolidace, ale konkrétně jako konsolidace no-KYC, abyste měli jasný záznam o tom, odkud mince pocházejí.

A konečně, není povinné uvádět na štítku datum. Většina softwaru peněženek již datum transakce zobrazuje a díky TXID je možné tuto informaci vždy najít v průzkumníku bloků.

Jak vybrat správné díly?

Při provádění transakce umožňuje ovládací prvek mince konkrétně vybrat, které UTXO se mají spotřebovat jako vstupy pro uspokojení výstupu platby. Tato volba má dva aspekty:

Pro ilustraci prvního bodu si uveďme konkrétní příklad. Předpokládejme, že si u svého pekaře koupíte bagetu v bitcoinech. Použijete jeden nebo více UTXO, které držíte jako vstupy, abyste pokryli alespoň cenu bagety ve výstupech a také transakční poplatky. Váš pekař by pak mohl potenciálně spojit váš obličej nebo jakoukoli jinou část vaší identity, kterou zná, s mincemi použitými jako vstupy. S vědomím existence tohoto propojení byste mohli při placení raději zvolit konkrétní UTXO než jinou.

BTC204

Pokud například jeden z vašich UTXO pochází z výměnné platformy a vy byste byli raději, kdyby pekař o vašem účtu na této platformě nevěděl, vyhnete se použití tohoto UTXO k platbě. Pokud máte UTXO s vysokou hodnotou, které odhaluje značné množství bitcoinů, můžete se také rozhodnout ho nepoužít, aby se pekař nedozvěděl o vašem bohatství v BTC.

Výběr UTXO pro tento první bod je tedy osobním rozhodnutím, které je ovlivněno tím, co jste ochotni prozradit nebo ne. Štítky, které přiřadíte svým UTXO při jejich obdržení, vám pomohou vybrat ty, které po jejich vynaložení odhalí pouze ty informace, které jste ochotni příjemci prozradit.

Kromě informací potenciálně odhalených příjemci ovlivňuje volba vstupů také to, co odhalíte všem pozorovatelům blockchainu. Pokud totiž jako vstupy do transakce použijete několik UTXO, podle heuristiky CIOH (Common Input Ownership Heuristic) prozradíte, že je vlastní stejný subjekt.

BTC204

Při výběru dílů si proto musíte být vědomi toho, že transakce, kterou se chystáte vysílat, vytvoří spojení mezi všemi použitými UTXO. Toto propojení může být problematické pro vaše soukromí, zejména pokud UTXO pocházejí z různých zdrojů.

BTC204

Vezměme si příklad mého UTXO bez KYC od společnosti Bisq; chci se vyhnout jeho kombinaci s UTXO například z regulované burzovní platformy, která zná mou identitu. Pokud totiž někdy použiji tyto 2 UTXO jako vstupy do stejné transakce, regulovaná platforma bude schopna spojit mou identitu s UTXO, které jsem koupil na Bisq a které předtím nebylo spojeno s mou identitou.

BTC204

A konečně, při výběru UTXO, které se použijí jako vstupy transakce, je nejdůležitější vyhnout se použití více UTXO. Pokud můžete, zvolte nanejvýš jednu dostatečně velkou minci, která uspokojí vaši platbu. Tímto způsobem se zcela vyhnete rizikům spojeným s CIOH. Pokud však k platbě nestačí jediné UTXO a musíte jich spotřebovat několik, ujistěte se, že pocházejí z podobných zdrojů, abyste minimalizovali riziko nežádoucích vazeb. Mějte také na paměti, že příjemce by si mohl informace, které o vás má, spojit s historií mincí použitých na vstupu.

Porozumění automatickému výběru dílů

V předchozích částech jsme se zabývali ručním výběrem UTXO, které se mají použít pro transakci. Co se však stane, když software peněženky provede tento výběr automaticky? Existuje několik metod, jak určit, které mince se mají spotřebovat, a výběr UTXO představuje skutečnou oblast výzkumu Bitcoinu. Hlavním cílem tohoto automatického procesu je často minimalizovat transakční náklady pro uživatele.

Metody výběru UTXO, jako jsou FIFO (First In First Out) a LIFO (Last In First Out), patří k nejjednodušším, ale také nejméně efektivním. Při FIFO se nejprve použijí nejstarší části portfolia. Tento přístup je obecně neefektivní jak z hlediska minimalizace transakčních nákladů, tak z hlediska zachování důvěrnosti, s výjimkou případů, kdy se používají relativní časové zámky, které je třeba pravidelně obnovovat. Naopak LIFO upřednostňuje použití nejnovějších UTXO. Obě metody jsou sice jednoduché, ale často se ukazují jako neefektivní.

Pokročilejší metodou je Knapsack Solver. Ten se používal v peněžence Bitcoin Core do verze 0.17. Spočívá v iterativním a náhodném výběru UTXO z peněženky, jejich sečtení v podmnožinách a ponechání řešení, které co nejvíce snižuje váhu transakce, aby se snížily náklady pro uživatele.

Branch-and-Bound (BNB), často přezdívaný "Murchův algoritmus" podle svého vynálezce, nahradil od verze 0.17 v jádře bitcoinu Knapsack Solver. Cílem této pokročilejší metody je najít množinu UTXO, která přesně odpovídá částce potřebné k uspokojení výstupů transakce. Cílem BNB je minimalizovat směnnou částku i poplatky, a to snížením tzv. kritéria odpadu, které zohledňuje jak okamžité náklady, tak očekávané budoucí náklady na směnu. Tato metoda je odvozena z původní koncepce Branch-and-Bound, kterou v roce 1960 vymyslely Ailsa Landová a Alison Harcourtová, a nabízí přesnější optimalizaci poplatků než Knapsack Solver.

Všechny tyto metody automatického výběru UTXO mohou být účinné při snižování transakčních nákladů, ale často jsou neúčinné při zachování důvěrnosti informací o uživateli. Tyto algoritmy totiž mohou sloučit několik UTXO do vstupů, čímž odhalí společnou vlastnost těchto UTXO v důsledku CIOH. Je zřejmé, že tyto metody nemohou brát v úvahu štítky připojené k UTXO, které jsou nicméně klíčové pro vědomý výběr částí, které mají být příjemci transakce odhaleny. V současné době je jediným způsobem, jak optimalizovat důvěrnost při výběru mincí, provádět tento výběr ručně.

Výukový program pro označování UTXO

Pokud se chcete dozvědět, jak označit UTXO, připravili jsme pro vás obsáhlý návod pro hlavní software bitcoinových peněženek:

https://planb.network/tutorials/privacy/on-chain/utxo-labelling-d997f80f-8a96-45b5-8a4e-a3e1b7788c52

KYC a identifikace klíčů

Zkratka KYC znamená "Poznej svého zákazníka". Jedná se o regulační postup, který uplatňují některé společnosti působící v oblasti bitcoinů. Cílem tohoto postupu je ověřit a zaregistrovat totožnost jejich zákazníků, přičemž deklarovaným cílem je boj proti praní špinavých peněz a financování terorismu.

V praxi KYC zahrnuje shromažďování různých osobních údajů klienta, které se mohou lišit v závislosti na jurisdikci, ale obecně zahrnují průkaz totožnosti, fotografii a doklad o adrese. Tyto informace jsou následně ověřeny a uloženy pro budoucí použití.

Tento postup se stal povinným pro všechny regulované burzovní platformy ve většině západních zemí. To znamená, že každý, kdo chce prostřednictvím těchto platforem směnit státní měny za bitcoiny, musí splnit požadavky KYC.

Tento postup není bez rizika pro soukromí a bezpečnost uživatelů. V této kapitole se budeme těmito riziky podrobně zabývat a analyzovat konkrétní dopady procesů KYC a identifikace na soukromí uživatelů bitcoinu.

Usnadnění sledování v řetězci

První riziko spojené s KYC spočívá v tom, že nabízí privilegovaný vstupní bod pro analýzu blockchainu. Jak jsme viděli v předchozí části, analytici mohou shlukovat a sledovat aktivity v blockchainu pomocí transakčních vzorů a heuristiky. Jakmile se jim podaří shlukovat aktivitu uživatele v onchainu, stačí jim najít jediný vstupní bod mezi všemi jeho transakcemi a klíči, aby plně ohrozili jeho důvěrnost.

BTC204

Když provedete KYC, poskytnete vysoce kvalitní vstupní bod pro analýzu blockchainu, protože spojíte své přijímací adresy používané při výběru bitcoinů z výměnné platformy se svou úplnou, ověřenou identitou. Teoreticky jsou tyto informace známy pouze společnosti, které jste je poskytli, ale jak uvidíme níže, riziko úniku dat je reálné. Navíc už samotný fakt, že společnost tyto informace má, může být problematický, i když je nesdílí.

Pokud tedy nepodniknete další kroky k omezení agregace vašich aktivit v blockchainu, může kdokoli, kdo zná tento vstupní bod KYC, potenciálně spojit všechny vaše aktivity v Bitcoinech s vaší identitou. Z pohledu této společnosti ztrácí vaše používání Bitcoinu veškerou důvěrnost.

BTC204

Abychom to ilustrovali srovnáním, je to, jako kdyby váš bankéř v Bance X měl přístup nejen ke všem vašim transakcím s Bankou X, ale mohl také sledovat vaše transakce s Bankou Y a všechny vaše hotovostní transakce.

Pamatujte si z první části tohoto školení: Model důvěrnosti bitcoinu, jak jej vymyslel Satoshi Nakamoto, je založen na oddělení identity uživatele od jeho klíčových párů. Přestože tato vrstva důvěrnosti dnes již není dostatečná, je stále rozumné co nejvíce omezit její degradaci.

Vystavení státnímu dohledu

Druhým velkým problémem KYC je, že státu prozrazuje, že jste v určitém okamžiku vlastnili bitcoin. Když si bitcoiny koupíte prostřednictvím regulovaného subjektu, je možné, aby se stát o tomto vlastnictví dozvěděl. V tuto chvíli se to může zdát jako banalita, ale je důležité si uvědomit, že politická a ekonomická budoucnost vaší země není ve vašich rukou.

Za prvé, stát může rychle zaujmout autoritářský postoj. Historie je plná příkladů, kdy se politika náhle změnila. V Evropě dnes mohou bitcoináři psát články o bitcoinech, účastnit se konferencí a spravovat své peněženky ve vlastní režii. Ale kdo může říct, co bude zítra? Pokud se Bitcoin náhle stane veřejným nepřítelem číslo jedna, může být spojování s ním ve vládních spisech problematické.

V případě vážné hospodářské krize by pak stát mohl uvažovat o zabavení bitcoinů v držení občanů. Možná, že zítra budou majitelé bitcoinů vnímáni jako krizoví spekulanti a tváří v tvář znehodnocení fiat měny budou nadměrně zdaněni za své kapitálové zisky.

Možná si myslíte, že to není problém, protože vaše bitcoiny jsou smíšené, a tudíž nevystopovatelné. O dohledatelnost zde však nejde. Skutečným problémem je, že stát ví, že jste bitcoiny vlastnili. Už jen tato informace by mohla stačit k tomu, aby vás usvědčila nebo pohnala k odpovědnosti. Mohli byste se pokusit tvrdit, že jste své bitcoiny utratili, ale to by se muselo projevit ve vašem daňovém přiznání a byli byste přistiženi. Mohli byste také říct, že jste ztratili klíče při nehodě na lodi, ale kromě vtipu na Twitteru si opravdu myslíte, že by to stačilo k vašemu očištění?

Proto je důležité vzít v úvahu riziko, že se stát dozví, že jste vlastnili BTC, jakkoli se toto riziko dnes může zdát vzdálené.

Dalším problémem, který KYC představuje z hlediska státního dohledu, je povinné podávání zpráv regulovanými platformami. Ačkoli neznám předpisy v jiných jurisdikcích, ve Francii jsou Prestataires de Services sur Actifs Numériques (PSAN) povinni hlásit orgánům finančního dohledu jakýkoli pohyb finančních prostředků, který považují za podezřelý.

Ve Francii bylo v roce 2023 nahlášeno 1 449 podezřelých činů ze strany PSAN. Prozatím většina těchto činů souvisí s trestnou činností. Orgány však také žádají regulované platformy, aby hlásily veškeré podezřelé transakce s bitcoiny pouze na základě jejich struktury. Pokud provedete kolaborativní transakci, nebo dokonce jen transakci s mírně netypickou strukturou, a tato transakce proběhne nedaleko od výběru vašich bitcoinů z těchto platforem, můžete se ocitnout v situaci, kdy budete nahlášeni úřadům. I v případě, že nedošlo k nekalému jednání a k legitimnímu výkonu vašich práv, by takové nahlášení mohlo vést ke zvýšeným kontrolám a dohledu, což jsou nepříjemnosti, kterým byste se bez KYC vyhnuli.

Riziko úniku osobních údajů

Dalším problémem KYC je, že vyžaduje, aby všechny vaše osobní údaje byly uloženy na serverech soukromé společnosti.

Nedávné události nám připomněly, že nikdo není imunní vůči finančním nebo IT selháním. V roce 2022 na to doplatili zákazníci společnosti Celsius. Po vyhlášení úpadku společnosti zveřejnily americké soudy během správního řízení jména věřitelů a výši jejich majetku.

Před necelými dvěma lety byla vlajkovou lodí v oblasti kybernetické bezpečnosti kryptoměn, které byly ukradeny osobní údaje zákazníků. Přestože tento incident nebyl přímo spojen s nákupem bitcoinů, zůstává takové riziko i pro směnárenské platformy. S osobními údaji je tedy spojeno určité riziko.

Je pravda, že mnoho svých osobních údajů již svěřujeme soukromým společnostem. Riziko je zde však dvojí, protože tyto údaje vás nejen identifikují, ale jsou také spojeny s aktivitou na Bitcoinu. Když totiž hacker získá přístup k údajům o zákaznících směnárenské platformy, může důvodně předpokládat, že tito zákazníci vlastní Bitcoiny. Toto riziko zvyšuje skutečnost, že Bitcoin, stejně jako jakékoli jiné cenné aktivum, přitahuje pozornost zlodějů.

V případě úniku dat se můžete stát v nejlepším případě terčem cílených pokusů o phishing. V horším případě byste se mohli ocitnout v centru fyzického ohrožení svého domova.

Kromě specifických rizik spojených s bitcoinem existují také nebezpečí spojená s předáváním dokladů totožnosti. V případě úniku dat je totiž možné stát se obětí krádeže identity. Sázky se tedy neomezují pouze na ochranu důvěrnosti transakcí, ale týkají se také osobní bezpečnosti každého jednotlivce.

Některé zažité představy o KYC

Je důležité dekonstruovat některé zažité představy o KYC, se kterými se často setkáváme na Twitteru nebo při výměně názorů mezi bitcoináři.

Především je nepřesné si myslet, že ochrana soukromí u bitcoinů získaných prostřednictvím KYC je zbytečná. Nástroje a metody ochrany soukromí u Bitcoinu jsou různé a slouží různým účelům. Například používání transakcí coinjoin u bitcoinů získaných prostřednictvím KYC není špatný nápad. U regulovaných směnárenských platforem si samozřejmě musíte dávat pozor, aby vám nebyl účet zmrazen nebo zakázán, ale z čistě technického hlediska nejsou tyto postupy neslučitelné. Coinjoin má za následek přerušení historie mince, čímž vám pomůže zmařit určitá rizika analýzy řetězce spojená s KYC. Ačkoli neeliminuje všechna rizika, představuje významný přínos.

BTC204

Na důvěrnost bitcoinů by se nemělo pohlížet binárně, jako na rozdíl mezi "anonymními" a neanonymními bitcoiny. Vlastnictví bitcoinů získaných prostřednictvím KYC neznamená, že je vše ztraceno; naopak, použití nástrojů pro utajení se může ukázat jako ještě výhodnější.

Naopak získání bitcoinu metodou, která není spojena s KYC, nezaručuje dokonalou důvěrnost ani vás nezbavuje nutnosti přijmout další ochranná opatření. Pokud držíte bitcoiny způsobem non-KYC, ale několikrát opakovaně používáte přijímací adresy, mohou být vaše transakce sledovány a agregovány. Sebemenší spojení se světem mimo Bitcoin může ohrozit jedinou vrstvu důvěrnosti, kterou máte. Proto je důležité považovat všechny nástroje a metody zvyšující soukromí v Bitcoinu za doplňkové. Každá technika řeší konkrétní riziko a může přidat další vrstvu ochrany. Vlastnictví Bitcoinu, který není určen k ochraně osobních údajů, tedy neznamená, že nepotřebujete přijmout další bezpečnostní opatření.

Lze KYC zrušit?

Někdy se mě ptají, zda je možné se po provedení KYC "vrátit zpět", a jak si můžete představit z předchozích odstavců, odpověď je různorodá. Nejjednodušší způsob, jak se vyhnout rizikům spojeným s KYC, je nepoužívat ho při pořizování bitcoinů. Tomuto tématu se budeme věnovat podrobněji v další kapitole. Pokud však KYC již byla provedena a bitcoiny byly zakoupeny, existují způsoby, jak zmírnit rizika s tím spojená?

Pokud jde o riziko vysledování vašich transakcí, je řešením použití funkce coinjoin. Na tuto metodu se podrobně podíváme později v kurzu, ale měli byste vědět, že coinjoin umožňuje přerušit historii mince a zabránit jejímu dohledání z minulosti do současnosti a ze současnosti do minulosti. Dokonce i v případě BTC získaných prostřednictvím regulované platformy může tato technika zabránit jejich dohledatelnosti.

Služba coinjoin však nesmazává druhé riziko spojené s KYC: skutečnost, že stát může být informován o vašem vlastnictví bitcoinů. I když totiž vaše mince již nejsou dohledatelné, stát může mít v závislosti na jurisdikci přístup k vašim prohlášením o převodu kryptoaktiv. Jelikož toto riziko není technické, ale administrativní, neexistují žádná specifická řešení pro Bitcoin, jak ho eliminovat, kromě toho, že se v první řadě nevystavíte KYC. Jediným legálním přístupem ke zmírnění tohoto rizika je prodat na regulovaných platformách své Bitcoiny získané prostřednictvím regulovaných platforem a poté je zpětně odkoupit prostředky bez KYC. Prodejem a nahlášením převodu by měly úřady zjistit, že je již nevlastníte.

Pokud jde o riziko úniku vašich osobních údajů a dokladů totožnosti, jedná se o nebezpečí, které se netýká Bitcoinu, a neexistuje žádné technické řešení, jak se mu vyhnout. Jakmile jsou vaše údaje odhaleny, je obtížné operaci vrátit zpět. Můžete se pokusit zrušit svůj účet na platformě, ale to nezaručuje vymazání vašich údajů KYC, zejména pokud je ověřování totožnosti zadáváno externě. Ověření úplného vymazání vašich údajů je nemožné. Neexistuje proto řešení, které by tomuto riziku zcela zabránilo a zajistilo, že již neexistuje.

Rozdíl mezi KYC a identifikací klíčů

Někdy mají někteří bitcoináři tendenci rozšířit pojem "KYC" na jakoukoli výměnu BTC zahrnující bankovní převod nebo platbu kreditní kartou, protože tyto prostředky mohou rovněž odhalit původ platby, stejně jako KYC. KYC by se však neměl zaměňovat s identifikací klíče. Osobně musím přiznat, že mé vnímání tohoto tématu se v průběhu času vyvíjelo.

KYC se konkrétně týká regulačního postupu, který některé společnosti provádějí za účelem ověření a registrace totožnosti svých zákazníků. Je to binární záležitost: při získávání bitcoinů buď KYC provedete, nebo ne. Identifikace klíče, která se týká vazby mezi aspektem identity uživatele a aktivitou na řetězci, však není tak binární, ale představuje spíše kontinuum. V kontextu získávání nebo převodu bitcoinů je totiž taková identifikace v různé míře možná vždy.

Pokud například nakupujete bitcoiny na regulované platformě ve Švýcarsku, KYC se nevyžaduje. Vaše klíče však mohou být identifikovány, protože nákup byl proveden prostřednictvím vašeho bankovního účtu. Zde se mohou první dvě rizika spojená s KYC - usnadnění sledování na řetězci a vystavení státnímu dohledu - projevit i při výměně bez KYC. Pokud švýcarský subjekt nahlásí podezřelé transakce orgánům ve vaší zemi, mohou jednoduše zkontrolovat bankovní účet použitý k nákupu a zjistit vaši totožnost. Nákup bez KYC na regulovaných platformách je tedy na stupnici rizik pro identifikaci klíče poměrně vysoko.

BTC204

Vyhýbání se regulovaným platformám a volba metod pořizování P2P však riziko identifikace klíče zcela neodstraňuje, ale pouze snižuje. Vezměme si příklad nákupu na Bisq nebo jiné platformě P2P. K zaplacení protistrany pravděpodobně použijete svůj bankovní účet. Pokud úřady vyslechnou osobu, se kterou jste obchodovali, a požádají o vaše jméno, jsme zpět u rizik 1 a 2. Ačkoli jsou tato rizika mnohem nižší než při nákupu na platformě bez KYC a dokonce nižší než při nákupu s KYC, stále jsou přítomna v menší míře.

BTC204

A konečně, i když své bitcoiny získáte prostřednictvím fyzické směny za hotovost, nejste zcela anonymní. Osoba, se kterou jste směnili, viděla váš obličej, který je součástí vaší identity. I když je v tomto příkladu minimální, stále existuje možnost identifikace podle klíče.

BTC204

Závěrem lze říci, že při směně bitcoinů za jiná aktiva, ať už se jedná o nákup ve státní měně nebo prodej za reálné zboží, vždy existuje nějaká forma identifikačního klíče. V závislosti na zvoleném způsobu směny může mít tato identifikace různou intenzitu. Je důležité nezaměňovat tuto identifikaci s KYC, což je přesně definovaný regulační proces. Mezi KYC a spektrem identifikace však existuje souvislost, protože KYC je na vyšším konci spektra, protože systematicky usnadňuje identifikaci klíčů uživatelů ze strany orgánů.

Prodejní a akviziční metody

Po přečtení předchozí kapitoly vás možná zajímá, jak můžete nakupovat nebo prodávat bitcoiny, aniž byste museli podstoupit proceduru ověření totožnosti, abyste se vyhnuli rizikům spojeným s KYC. Existuje několik způsobů, jak s bitcoiny obchodovat.

Výměny hotovosti P2P

Jak jsme viděli, nejlepší metodou z hlediska důvěrnosti zůstává P2P (výměna mezi osobami) s hotovostním vypořádáním. Tato metoda umožňuje minimalizovat zanechané stopy a výrazně snižuje možnost identifikace klíče, ať už nakupujete, nebo prodáváte.

BTC204

Přesto existují rizika pro osobní bezpečnost. Hlavní nebezpečí spočívá v tom, že během výměny se protistrana dozví, že držíte velkou částku peněz, ať už v hotovosti, nebo v bitcoinech. Tato informace může přilákat pozornost zlomyslných osob. Obecně se totiž doporučuje být ohledně držby bitcoinů diskrétní. Tuto radu lze uplatnit i na hotovost. Při osobní směně je však nevyhnutelné odhalit, že vlastníte bitcoiny, a to může přitáhnout nežádoucí pozornost.

BTC204

Chcete-li toto riziko omezit, doporučuji vám, abyste upřednostňovali hotovostní transakce s důvěryhodnými osobami, jako jsou členové rodiny nebo blízcí přátelé. Případně můžete zvážit obchodování na místních setkáních bitcoinových obchodníků, poté, co se jich několikrát zúčastníte. To vám umožní lépe poznat ostatní účastníky a nebýt při fyzické výměně sám. Je však důležité si uvědomit, že P2P peněžní burzy s sebou ze své podstaty nesou rizika pro vaši osobní bezpečnost, která při nákupu přes regulovanou platformu a váš bankovní účet neexistují.

Navíc v závislosti na místě, kde žijete, může být přeprava a skladování velkých částek peněz riskantní, ať už jde o bitcoiny, nebo hotovost.

Výměna hotovosti může také představovat právní riziko v případě policejní nebo jiné kontroly. Ačkoli ve většině zemí neexistují žádná omezení týkající se množství hotovosti, které můžete mít u sebe, nadměrné množství může vzbudit podezření. Buďte proto opatrní, zejména pokud musíte cestovat na delší vzdálenosti, a vyvarujte se provádění příliš velkých transakcí najednou, abyste nemuseli zdůvodňovat držení velkých částek.

Další nevýhodou nákupů přes P2P je, že cena je často vyšší než na regulovaných platformách. Prodejci si často účtují přirážku v rozmezí od 1 % do někdy více než 10 %. Tento cenový rozdíl má několik důvodů. Zaprvé se jedná o běžnou praxi prodejců P2P, která se časem ustálila. Za druhé, prodejci mají s transakcí spojené poplatky za odeslání finančních prostředků kupujícímu. Při prodeji P2P je také zvýšené riziko krádeže ve srovnání s transakcemi na platformě, což ospravedlňuje kompenzaci za podstoupené riziko. V neposlední řadě mohou být dodatečné náklady spojeny s poptávkou a kvalitou výměny z hlediska důvěrnosti. Pro kupujícího má zisk z důvěrnosti svou cenu, která se odráží v přirážce uplatňované prodávajícím. Někteří bitcoináři se také domnívají, že cena s přirážkou u BTC nakoupených na P2P odráží jejich skutečnou cenu, a tvrdí, že nižší ceny na regulovaných platformách jsou výsledkem ohrožení důvěrnosti vašich osobních údajů.

BTC204

Výměny P2P prostřednictvím matchmakingové platformy

Méně rizikovou alternativou z hlediska osobní bezpečnosti je provádět výměny P2P výhradně online prostřednictvím elektronických platebních metod, jako je PayPal, bankovní převody nebo Revolut.

BTC204

Tento přístup zabraňuje mnoha rizikům spojeným s hotovostními transakcemi. Riziko selhání protistrany při online výměně je však vyšší. Pokud totiž při fyzické směně předáte peníze prodávajícímu, který vám na oplátku nepošle bitcoiny, můžete ho okamžitě volat k zodpovědnosti, protože stojí před vámi. Naproti tomu online je často nemožné vypátrat někoho, kdo vás okradl.

BTC204

Ke zmírnění tohoto rizika je možné využít specializované platformy pro výměny P2P. Tyto platformy používají mechanismy řešení konfliktů, které chrání poškozené uživatele. Obvykle nabízejí systém úschovy, kde jsou bitcoiny drženy do doby, než prodávající potvrdí platbu ve fiat měně.

BTC204

Z hlediska osobní bezpečnosti je tento způsob nákupu podstatně bezpečnější než fyzická výměna hotovosti. Jak však bylo uvedeno výše, online P2P výměny zanechávají více stop než fyzická výměna, což může být na úkor soukromí u Bitcoinu. Použitím online fiat platebního prostředku, jako je banka, vystavujete více informací, které by mohly usnadnit identifikaci klíče.

BTC204

Opět bych na těchto platformách nedoporučoval provádět příliš mnoho velkých obchodů v rámci jedné transakce. Rozdělením transakcí rozložíte riziko krádeže protistrany.

Další nevýhodou nákupů přes P2P je opět to, že cena je často vyšší než na regulovaných platformách. Prodejci si často účtují přirážku v rozmezí od 1 % do někdy více než 10 %. Tento cenový rozdíl má několik důvodů. Zaprvé se jedná o běžnou praxi prodejců P2P, která se časem ustálila. Za druhé, prodejci mají s transakcí spojené poplatky za odeslání finančních prostředků kupujícímu. Při prodeji P2P je také zvýšené riziko krádeže ve srovnání s transakcemi na platformě, což ospravedlňuje kompenzaci za podstoupené riziko. V neposlední řadě mohou být dodatečné náklady spojeny s poptávkou a kvalitou výměny z hlediska důvěrnosti. Pro kupujícího má zisk z důvěrnosti svou cenu, která se odráží v přirážce uplatňované prodávajícím. Někteří bitcoináři se také domnívají, že cena s přirážkou u BTC nakoupených na P2P odráží jejich skutečnou cenu, a tvrdí, že nižší ceny na regulovaných platformách jsou výsledkem ohrožení důvěrnosti vašich osobních údajů.

BTC204

Co se týče řešení, osobně jsem vždy používal Bisq a jsem s ním velmi spokojen. Jejich systém je vyzkoušený a zdá se být spolehlivý. Bisq je však k dispozici pouze na PC a jeho rozhraní může být pro začátečníky příliš složité. Další nevýhodou je, že Bisq pracuje pouze s onchain transakcemi, což se může v období vysokých transakčních poplatků za Bitcoin prodražit.

-> Viz náš výukový program Bisq.

https://planb.network/tutorials/exchange/peer-to-peer/bisq-fe244bfa-dcc4-4522-8ec7-92223373ed04

Jednodušší variantou je mobilní aplikace Peach, která spojuje kupující a prodávající a má zabudovaný systém řešení konfliktů. Proces je intuitivnější než u společnosti Bisq.

-> Podívejte se na náš výukový program Peach.

https://planb.network/tutorials/exchange/peer-to-peer/peach-c6143241-d900-4047-9b73-1caba5e1f874

Další online možností je HodlHodl, zavedená platforma, která nabízí dobrou likviditu, ačkoli jsem ji osobně netestoval.

-> Viz náš výukový program HodlHodl.

https://planb.network/tutorials/exchange/peer-to-peer/hodlhodl-d7344cd5-6b18-40f5-8e78-2574a93a3879

Pro řešení založená na síti Lightning Network vyzkoušejte RoboSats a LNP2PBot. RoboSats je přístupný prostřednictvím webové stránky a jeho použití je poměrně jednoduché. LNP2PBot je atypičtější, protože funguje prostřednictvím výměnného systému v aplikaci pro zasílání zpráv Telegram.

-> Podívejte se na náš výukový program RoboSats.

-> Viz náš výukový program LNP2PBot.

https://planb.network/tutorials/exchange/peer-to-peer/robosats-b60e4f7c-533a-4295-9f6d-5368152e8c06

https://planb.network/tutorials/exchange/peer-to-peer/lnp2pbot-v2-e6bcb210-610b-487d-970c-7cce85273e3c

BTC204

Regulované platformy bez KYC

V závislosti na zemi, ve které žijete, můžete mít přístup k regulovaným platformám, které pro nákup nebo prodej bitcoinů nevyžadují postupy KYC. Ve Švýcarsku můžete například používat platformy, jako jsou Relai a MtPelerin.

-> Podívejte se na náš výukový program Relai.

https://planb.network/tutorials/exchange/centralized/relai-v2-30a9671d-e407-459d-9203-4c3eae15b30e

Jak jsme viděli v předchozí kapitole, tento typ platformy vás ušetří rizik spojených s postupy KYC, ale představuje vyšší úroveň rizika pro identifikaci klíčů. Z hlediska důvěrnosti bitcoinů tedy tyto platformy nabízejí lepší ochranu než metody nákupu s KYC, ale zůstávají méně atraktivní než P2P burzy.

Z hlediska osobní bezpečnosti je však používání těchto platforem mnohem méně rizikové než výměna P2P. Jejich používání je také často jednodušší než u platforem P2P.

Bankomaty

Další možností, jak nakupovat nebo prodávat bitcoiny bez KYC, jsou kryptoměnové bankomaty. Osobně jsem nikdy neměl příležitost toto řešení vyzkoušet, protože v mé zemi žádné nejsou. Tento způsob však může být velmi zajímavý, záleží na tom, kde žijete.

BTC204

Problém s bankomaty spočívá v tom, že v některých zemích jsou buď zakázány, nebo v jiných zemích podléhají přísné regulaci. Pokud bankomat vyžaduje postup ověření totožnosti, pak je vystaven stejným rizikům, jaká jsou vlastní platformám s regulací KYC. Na druhou stranu, pokud bankomat umožňuje transakce bez ověření totožnosti pro malé částky, pak jeho použití může nabídnout úroveň důvěrnosti srovnatelnou s výměnou hotovosti P2P a zároveň se vyhnout většině rizik spojených s tímto typem výměny.

Hlavní nevýhodou bankomatů jsou často vysoké poplatky za směnu, které se pohybují od několika procent až po 15 % směňované částky.

Dárkové karty

Nakonec jsem vám také chtěl představit řešení, které dobře funguje pro ty, kteří chtějí své bitcoiny používat ke každodenním nákupům, a ne je prodávat za fiat měny.

Nejlepší způsob, jak utratit BTC, je samozřejmě použít Bitcoin nebo Lightning Network přímo k nákupu zboží nebo služby. V mnoha zemích je však počet obchodníků přijímajících Bitcoin stále omezený. Praktickou alternativou je použití dárkových karet.

Několik platforem, které nevyžadují postupy KYC, nabízí možnost výměny bitcoinů za dárkové karty, které lze použít u velkých maloobchodníků. Patří mezi ně CoinsBee, The Bitcoin Company a Bitrefill. Tyto platformy výrazně usnadňují každodenní používání bitcoinů a umožňují vám přístup k široké škále produktů a služeb, aniž byste je museli převádět na fiat měnu.

https://planb.network/tutorials/exchange/centralized/bitrefill-8c588412-1bfc-465b-9bca-e647a647fbc1

BTC204

Další metody akvizice

Mezi další způsoby, jak získat bitcoiny a zároveň chránit své soukromí, patří samozřejmě těžba. Chcete-li začít těžit saty, nemusíte odhalovat svou identitu; stačí najít platný důkaz práce a odeslat jej do sítě. Pokud se rozhodnete pro těžbu v poolu, některé pooly vyžadují určitou formu identifikace, například KYC, zatímco jiné ne.

Další metodou je práce výměnou za bitcoiny. Tento způsob získání může být zajímavý, ale míra požadované identifikace se značně liší v závislosti na okolnostech.

*K napsání této kapitoly jsem použil školení BTC205, které poskytl @pivi___ na síti Plan ₿ (zatím je k dispozici pouze ve francouzštině)

Konsolidace, řízení UTXO a CIOH

Jedním z nejsložitějších aspektů vedení portfolia s vlastní správou je konsolidace. Měli byste konsolidovat? Jaký to má smysl? Jakou velikost UTXO je třeba respektovat? Jaké jsou kompromisy z hlediska důvěrnosti? Na to se podíváme v této části.

Co je to konsolidace?

Bitcoin funguje jako aukční trh, kde těžaři dávají přednost transakcím s nejnižšími poplatky. Každý blok má však maximální váhu, která omezuje počet transakcí, které do něj mohou být zařazeny. Vzhledem k tomu, že blok vzniká v průměru každých 10 minut, je prostor, který je v každém bloku k dispozici, vzácným zdrojem.

Těžaři, jejichž činnost přináší značné náklady na elektřinu, dlouhodobý majetek a údržbu, se přirozeně snaží maximalizovat svou ziskovost. Proto mají tendenci upřednostňovat transakce, které generují nejvyšší poplatky v poměru k jejich váze.

Ne všechny transakce s bitcoiny mají stejnou váhu. Ty s větším počtem vstupů a výstupů budou mít větší váhu. Představme si například 2 transakce:

BTC204

V tomto příkladu sice transakce B nabízí vyšší celkový poplatek, ale těžaři budou preferovat transakci A, protože nabízí lepší poměr mezi poplatkem a váhou. Zde je výpočet pro každou transakci vyjádřený v satech na virtuální bajt (sat/vB):

TXA : 1994 / 141 = 14 sats/vB
TXB : 2640 / 220 = 12 sats / vB

To znamená, že na každou jednotku váhy nabízí transakce A vyšší náklady než transakce B, i když transakce B nabízí vyšší náklady v absolutním vyjádření.

BTC204

Pro uživatele je proto vždy zajímavější, aby při svých transakcích spotřebovával co nejméně vstupů. Je však třeba spotřebovat dostatečné množství, aby bylo možné uspokojit výstupní platbu. Při správě svého portfolia musíte mít dostatečně velké UTXO.

Principem konsolidace je právě využití období, kdy jsou poplatky u Bitcoinu nízké, ke sloučení jeho menších UTXO do jednoho většího. Tímto způsobem budete moci v době, kdy se poplatky na Bitcoinu zvýší, provádět transakce s minimem vstupů, a tedy v absolutním vyjádření utratit za poplatky méně. Cílem je tedy předvídat povinné transakce, které se budou provádět v období vysokých poplatků.

BTC204

Kromě úspory transakčních nákladů pomáhá konsolidace UTXO předcházet vzniku "prachu". Prach" označuje UTXO, jejichž hodnota v satech je tak nízká, že nestačí pokrýt transakční náklady nutné k jejich vydání. Proto je ekonomicky neracionální tyto UTXO používat, dokud jsou transakční náklady vysoké. Aktivním sdružováním UTXO zabráníte jejich proměně v prach a zajistíte, že všechny vaše prostředky zůstanou použitelné.

Jaká je minimální velikost vašich UTXO?

Někdy se mě ptají, jaká je doporučená minimální hodnota pro UTXO. Bohužel neexistuje univerzální odpověď, protože záleží na vašich preferencích a podmínkách na trhu s poplatky. Zde je však vzorec, který vám může pomoci určit hranici vhodnou pro vaše potřeby:

\frac {P \times F}T = M

Kde:

Předpokládejme, že máte v plánu pokrýt poplatky za standardní SegWit transakce s 1 vstup a 2 výstupy, váží 141 vB. Pokud zajišťujete až 800 sátů/vB a jste ochotni utratit maximálně 12 % hodnoty UTXO na poplatcích, pak by výpočet vypadal takto:

\frac{141 \times 800}{0.12} = 940\ 000

V tomto příkladu by proto bylo rozumné udržovat ve svém portfoliu minimální hodnotu 940 000 satelitů pro UTXO.

Konsolidace a CIOH

Jednou z nejpoužívanějších heuristik při analýze blockchainu je heuristika CIOH (Common Input Ownership Heuristic), která předpokládá, že všechny vstupy do bitcoinové transakce patří stejnému subjektu. Samotný princip konsolidace spočívá v tom, že se jako vstupy spotřebuje několik UTXO a jako výstup se vytvoří jediný UTXO. Konsolidace tedy umožňuje uplatnit ICOH.

BTC204

V praxi to znamená, že vnější pozorovatel může usoudit, že všechny konsolidované UTXO pravděpodobně patří stejné osobě a že jí patří i jedinečný vygenerovaný výstup. Tato situace může ohrozit důvěrnost informací tím, že se spojí různé historie transakcí. Řekněme například, že konsoliduji 3 UTXO získané prostřednictvím P2P s jedním UTXO získaným prostřednictvím platformy, která vyžaduje KYC :

BTC204

Tímto způsobem bude moci jakýkoli subjekt s přístupem k údajům burzovní platformy, potenciálně včetně vládních agentur, zjistit, že vlastním jiné množství BTC. Dříve tyto UTXO nebyly přímo spojeny s mou identitou, nyní již ano. Navíc všem zdrojům prozradí, že vlastním určité množství bitcoinů.

Pokud jde o správu UTXO, ekonomické důvody, které vedou ke konsolidaci za účelem snížení nákladů, se dostávají do rozporu s osvědčenými postupy v oblasti ochrany osobních údajů, které doporučují nikdy neslučovat UTXO. Volba mezi hospodárností a důvěrností proto závisí na prioritách každého uživatele.

Pokud se můžete vyhnout konsolidaci a zároveň si zachovat značné UTXO, je to ideální. Za tímto účelem optimalizujte své akviziční metody. Pokud nakupujete bitcoiny v DCA, snažte se své jednorázové nákupy co nejvíce rozložit, abyste konsolidovali hodnotu v menším počtu UTXO. Bude snazší zvládnout jednorázový nákup ve výši 1 000 EUR každé dva měsíce než nákup ve výši 120 EUR každý týden. Tím minimalizujete počet generovaných UTXO a zjednodušíte správu svého portfolia při zachování důvěrnosti.

Pokud budete muset konsolidovat své bitcoiny, upřednostněte nejprve konsolidaci UTXO ze stejného zdroje. Například sloučení 10 UTXO z jedné platformy ovlivní vaši důvěryhodnost méně než smíchání 5 UTXO z platformy A s 5 UTXO z platformy B. Pokud je konsolidace různých zdrojů nevyhnutelná, snažte se je rozdělit podle jejich vlastností. Například seskupte UTXO získané prostřednictvím KYC do jedné transakce a UTXO získané prostřednictvím P2P do jiné.

V každém případě nezapomeňte, že jakákoli konsolidace s sebou nevyhnutelně nese ztrátu důvěrnosti. Pečlivě proto zhodnoťte potřebu této operace a její možný dopad na vaše soukromí a vezměte v úvahu ČOI.

Další osvědčené postupy

Podívejme se na několik dalších osvědčených postupů pro optimalizaci vašeho soukromí v bitcoinech.

Kompletní uzel

Vlastnit své bitcoiny ve vlastní úschově je skvělé, ale používat vlastní kompletní uzel je ještě lepší! Zde se dozvíte, proč je pro zcela suverénní používání bitcoinu zásadní mít vlastní uzel:

Kromě těchto výhod zvyšuje používání kompletního uzlu také důvěrnost při vysílání transakcí. Když vydáváte transakci, je nejprve vytvořena a podepsána prostřednictvím vaší peněženky. Aby ji bylo možné vysílat v síti Bitcoin, musí ji znát alespoň jeden uzel. Používáním vlastního uzlu máte nad touto distribucí přímou kontrolu, čímž posilujete svou důvěrnost a omezujete riziko úniku dat.

BTC204

Pokud nemáte vlastní uzel Bitcoin, budete nuceni použít uzel třetí strany, například ten, který nabízí poskytovatel softwaru pro peněženku. Kromě vysílání transakcí vyžaduje peněženka přístup k různým informacím, jako jsou čekající transakce, zůstatky spojené s vašimi adresami a počet potvrzení vašich transakcí. Pro přístup ke všem těmto údajům je třeba se dotázat uzlu.

BTC204

Hlavním rizikem v případě, že nepoužíváte svůj vlastní uzel Bitcoin, je, že provozovatel cizího uzlu může sledovat vaše aktivity v blockchainu, nebo dokonce tyto informace sdílet s jinými subjekty. Chcete-li toto riziko omezit, je přechodným řešením použití softwaru peněženky, který maskuje vaše připojení přes Tor. To může snížit odhalení vašich údajů. Optimálním řešením je však mít vlastní uzel Bitcoin a používat jej k vysílání svých transakcí. Samozřejmě si také musíte dát pozor, aby prostřednictvím vašeho uzlu neunikly žádné informace, ale to je další téma, kterému se budeme věnovat v dalších částech.

Kromě zjevné výhody pro vaše soukromí vám vlastní kompletní uzel také zaručuje pravdivost dat v blockchainu, chrání vás před cenzurou a umožňuje vám aktivně se podílet na správě Bitcoinu. Používáním vlastního uzlu přispíváte svou ekonomickou vahou do vámi zvoleného řetězce, což je důležité během konfliktů uvnitř komunity, jako například během války o velikost bloku v letech 2015 až 2017. V případě forku by vás používání cizího uzlu mohlo vést k podpoře řetězce, který nechcete upřednostňovat, protože provozovatel uzlu rozhoduje za vás.

Jak vidíte, v zájmu zachování důvěrnosti a individuální suverenity je nezbytné spustit a používat vlastní kompletní uzel!

Klamavá heuristika analýzy

Obecněji řečeno, je důležité porozumět heuristikám, o kterých jsme hovořili v předchozí části, abychom se jim mohli lépe vyhnout nebo je oklamat. Přijetí řady osvědčených postupů může být přínosné, i když nejsou nezbytné. Nabízejí další vrstvu ochrany, která může být důležitá pro zachování důvěrnosti při používání Bitcoinu.

První rada, kterou bych vám mohl dát, je splynout s nejhustším davem. U Bitcoinu to znamená používat nejrozšířenější šablony skriptů. Například skripty P2WSH, které se často používají pro multisig konfigurace SegWit V0, jsou velmi neobvyklé. Neumožňují skrýt se ve velké sadě anonymity. Totéž platí pro starší modely, jako jsou P2PKH nebo P2SH. Ačkoli jsou v sadě UTXO hojně zastoupeny, pro nové transakce se používají stále méně.

Obecně platí, že je rozumnější zvolit nejnovější standard skriptování, pokud byl dostatečně přijat. Takže pokud bych v roce 2022 nedoporučoval používat P2TR (Taproot) kvůli jeho nízkému přijetí, v roce 2024 bych doporučil zvolit místo něj tento typ skriptu, nebo v opačném případě skript SegWit V0, protože počet transakcí využívajících P2TR začíná představovat velmi významný podíl.

BTC204

Zdroj: txstats.com

Dalším tipem pro zachování důvěrnosti je snaha obejít interní heuristiku transakcí. Například při provádění platby se můžete pokusit vyhnout vytvoření výstupu s kulatou částkou, protože by to mohlo signalizovat, že jiný výstup představuje cizí měnu. Pokud potřebujete poslat 100 k sátů příteli, zvažte převod o něco vyšší částky, abyste se této heuristice vyhnuli. Stejně tak se snažte nevytvářet devizové výstupy, které jsou neúměrně vysoké vzhledem k provedené platbě, protože by to také mohlo prozradit, který z výstupů představuje devizu.

BTC204

A konečně, pokud provádíte transakce s bitcoiny pravidelně, ujistěte se, že je nevysíláte vždy ve stejnou dobu. Rozložením vysílání vašich transakcí v průběhu dne a týdne zabráníte tomu, aby vnější pozorovatelé měli možnost odhalit časový vzorec založený na časovém pásmu, který by mohl posílit jejich analýzu.

Kromě všech těchto osvědčených postupů, které je třeba používat každý den, existují ještě účinnější metody, jak zcela přerušit sledovatelnost vašich bitcoinů. Mezi ně patří samozřejmě transakce coinjoin, na které se podrobně podíváme v následující části.

Porozumění transakcím coinjoin

Co je to transakce coinjoin?

Po prostudování základů ochrany soukromí se nyní podíváme na sofistikovanější techniky zaměřené na aktivní ochranu důvěrnosti, zejména na rozdělení historie bitcoinů. V příští části se budeme zabývat celou řadou drobných technik, ale nejprve bych vám rád pověděl o coinjoinu.

Coinjoin je často považován za nejúčinnější metodu ochrany soukromí uživatelů Bitcoinu. Ale co přesně je coinjoin transakce? Pojďme to zjistit.

Základní principy funkce coinjoin

Coinjoin je technika pro prolomení sledování bitcoinů v blockchainu. Je založena na kolaborativní transakci se specifickou strukturou stejného jména: coinjoin transakce.

Jak jsme viděli v prvních částech tohoto kurzu, transakce Bitcoinu jsou všem uživatelům známy prostřednictvím jejich uzlu. Je proto snadné zkontrolovat řetězec elektronického podpisu každé mince a sledovat její historii. To znamená, že všichni uživatelé se mohou pokusit analyzovat transakce ostatních uživatelů. V důsledku toho je anonymita na úrovni transakcí nemožná. Na úrovni individuální identifikace je však anonymita zachována. Na rozdíl od konvenčního bankovního systému, kde je každý účet spojen s osobní identitou, jsou v Bitcoinu finanční prostředky spojeny s páry kryptografických klíčů (nebo skriptů), což uživatelům nabízí určitou formu pseudonymity za kryptografickými identifikátory.

BTC204

Důvěrnost bitcoinu je narušena, pokud jsou vnější pozorovatelé schopni spojit konkrétní UTXO s identifikovanými uživateli. Jakmile je toto spojení vytvořeno, je možné sledovat jejich transakce a analyzovat jejich bitcoinovou historii. Coinjoin je právě technika vyvinutá k prolomení sledovatelnosti UTXO, aby uživatelům Bitcoinu nabídla určitou vrstvu důvěrnosti na úrovni transakcí.

Coinjoins posilují důvěrnost uživatelů bitcoinu tím, že externím pozorovatelům komplikují analýzu řetězce. Jejich struktura umožňuje sloučit více mincí od různých uživatelů do jediné transakce, čímž se rozmazávají hranice a ztěžuje se určení vazeb mezi vstupními a výstupními adresami.

Je důležité si uvědomit, že cílem transakce coinjoin je přerušit historii mince. Na rozdíl od toho, co si možná myslíte, tato technika neposkytuje trvalou anonymitu ani definitivně neblokuje sledování bitcoinů. Cílem transakce coinjoin je pouze přerušit historii v okamžiku, kdy je transakce coinjoin provedena. Před touto operací i po ní však mince zůstává vystavena stejným rizikům z hlediska důvěrnosti.

BTC204

Jak fungují koincidenční spoje?

Princip coinjoin je založen na kolaborativním přístupu: několik uživatelů, kteří chtějí smíchat své bitcoiny, vloží stejné částky jako vstupy do stejné transakce. Tyto částky jsou pak přerozděleny na výstupech stejné hodnoty každému uživateli.

BTC204

Na konci transakce je nemožné přiřadit konkrétní výstup k uživateli známému jako vstup. Mezi vstupy a výstupy neexistuje žádná přímá vazba, čímž se přeruší vazba mezi uživateli a jejich UTXO a také historie jednotlivých částí.

BTC204

Vezměme si příklad Alice. Chce poslat přibližně 100 000 sátů své sestře Evě k narozeninám. Alice však nechce, aby Eva mohla sledovat historii jejích transakcí, protože nechce prozradit, kolik bitcoinů má a jak je získala. Za tímto účelem se Alice rozhodne prolomit svou historii UTXO transakcí coinjoin. Domluví se s Bobem, Charlesem, Davidem a Frankem, že provedou společnou transakci:

BTC204 BTC204 BTC204 BTC204

V tomto případě Alice použila techniku coinjoin ke zvýšení důvěrnosti s ohledem na retrospektivní analýzu. Alice se tak vlastně chrání před možnou analýzou Evy, která by začala od konkrétní transakce a postupovala zpětně přes historii UTXO. Tato ochrana proti analýze od současnosti do minulosti je známá jako retrospektivní anonset. Podrobněji se tímto konceptem budeme zabývat v závěrečných kapitolách této části.

Metoda coinjoin však nabízí také možnost posílení důvěrnosti při analýze z minulosti do současnosti, tzv. prospektivní anonset. Vraťme se k našemu příkladu, kdy Alice poslala Evě k narozeninám 98 000 sátů, ale s obrácenými rolemi. Nyní si představme, že je to Eva, kdo se obává o své soukromí. Alice by totiž mohla být v pokušení sledovat minci, kterou poslala Evě, aby z ní získala informace. Eve by klidně mohla konsolidovat tento UTXO, který právě obdržela, se všemi svými ostatními UTXO, což by Alici mohlo prozradit množství bitcoinů, které má ve své peněžence. Aby se tomu Eve vyhnula, může také prolomit historii mince, kterou právě obdržela:

BTC204 BTC204 BTC204

V prvním příkladu jsme viděli, jak může coinjoin chránit soukromí místnosti ve vztahu k její minulosti, a ve druhém příkladu, jak může také zabezpečit historii místnosti ve vztahu k její budoucnosti. Proto jsem zmínil, že coinjoin je třeba vnímat jako jednorázovou událost, která rozděluje část historie oběma směry:

BTC204

Směšovač, spojka, směšovač... Jaký je v tom rozdíl?

Coinjoiny jsou někdy označovány jako "mixéry", což je termín, který někteří bitcoináři odmítají, protože se obávají, že by mohl být zaměňován s custodial mixéry. Domnívám se však, že tato obava je neopodstatněná, protože v matematickém kontextu coinjoin ztělesňuje právě pojem mixování.

V obecné matematice se mícháním rozumí vlastnost dynamického systému, kdy se po určité době mohou teoreticky všechny části počátečního prostoru smísit s jakoukoli jinou částí. Míchání znamená, že poloha částice nebo stav systému se vyvíjí tak, že jeho budoucí rozložení je nezávislé na jeho počátečním rozložení, a dosahuje tak stavu, kdy jsou vlastnosti počátečního stavu rovnoměrně rozloženy v celém prostoru systému. Přesně to se děje při spojení mincí s bitcoiny. Podle mého názoru je tedy coinjoin skutečně metodou míchání mincí.

BTC204

Na druhou stranu je důležité odlišit coinjoin od shufflerů. Shuffler je služba, kam uživatelé posílají své bitcoiny k zamíchání. Tyto služby byly populární v průběhu roku 2010, ale jejich používání pokleslo kvůli dvěma hlavním nevýhodám ve srovnání s coinjoin:

BTC204

Dnešní uživatelé proto dávají přednost coinjoinu, protože jim umožňuje zachovat si plnou kontrolu nad svými prostředky v průběhu celého procesu. Účastníkům coinjoinu nehrozí, že by jim ostatní zúčastněné strany odcizily jejich bitcoiny. V další kapitole se podíváme, jak je to všechno možné.

Zerolink a chaumian coinjoins

Soukromí, které poskytuje coinjoin, je dáno velikostí skupiny, v níž je náš kus skryt. To znamená najít co nejvíce účastníků. Je naprosto možné vytvořit coinjoin ručně, s uživateli, které jsme sami našli, ale je to složitý proces, který vám žádné velké anonce nepřinese.

To je důvod, proč se na Bitcoinu vyvinuli koordinátoři coinjoin. Jejich úkolem je zprostředkovat kontakt mezi jednotlivými uživateli a předávat informace potřebné k dokončení společné transakce.

BTC204

Jak ale můžeme zajistit, aby koordinátor nikdy neměl v rukou bitcoiny uživatelů, a navzdory tomu, že je osobou, která vytváří transakci coinjoin, jak můžeme zajistit, aby nemohl propojit vstupy a výstupy uživatelů, což by mohlo představovat únik důvěrnosti?

Chaumovy slepé podpisy

Moderní implementace coinjoinu používají slepé podpisy Davida Chauma, aby se zabránilo úniku informací. Podívejme se, jak tyto slepé podpisy fungují.

Chaumovy slepé podpisy jsou formou digitálního podpisu, při níž vystavitel podpisu nezná obsah zprávy, kterou podepisuje. Podpis však lze následně ověřit na základě původní zprávy. Tuto techniku vyvinul v roce 1983 kryptograf David Chaum.

BTC204

Vezměme si příklad společnosti, která chce ověřit důvěrný dokument, například smlouvu, aniž by prozradila jeho obsah. Společnost použije proces maskování, který kryptograficky transformuje původní dokument reverzibilním způsobem. Takto upravený dokument je zaslán certifikační autoritě, která jej opatří slepým podpisem, aniž by znala základní obsah. Po obdržení podepsaného dokumentu společnost podpis odmaskuje. Výsledkem je původní dokument ověřený podpisem autority, aniž by autorita kdy viděla původní obsah.

Chaumovy slepé podpisy tedy mohou osvědčit pravost dokumentu, aniž by byl znám jeho obsah, a zaručit tak důvěrnost dat uživatele i integritu podepsaného dokumentu.

Chaumian coinjoins

Takzvané "chaumovské" coinjoiny kombinují použití sítě Tor a slepých podpisů Davida Chauma, které zajišťují, že koordinátor nemůže zjistit, který výstup patří kterému uživateli.

Proces konstrukce transakce coinjoin zahrnuje tři hlavní fáze: registraci vstupu, registraci výstupu a podpis transakce. Podívejme se na tento proces na příkladu Alice, jednoho z účastníků coinjoinu. Všichni ostatní účastníci postupují stejně jako Alice, každý sám za sebe.

**Krok 1: Vstupní registrace

BTC204 BTC204

Krok 2: Registrace výstupů

BTC204 BTC204

Krok 3: Podpis transakce

BTC204 BTC204

V tomto systému není koordinátor schopen propojit vstup s konkrétním výstupem. Navíc si nemůže přivlastnit prostředky účastníků, protože nikdy nemá přístup k soukromým klíčům potřebným k odemčení jejich UTXO. Po celou dobu procesu, až do konce kroku 3, také nemá přístup k podpisům. Když Alice a ostatní účastníci podepíší globální transakci, po kontrole, že je vše v pořádku, koordinátor již nemůže transakci včetně výstupů měnit, aniž by ji zneplatnil. Tím je koordinátorovi zabráněno v krádeži bitcoinů.

Konečně, při registraci svého výstupu v transakci si uživatel coinjoinu přeje mít podobné záruky jako občan hlasující ve volbách. Mezi veřejným a soukromým aspektem těchto akcí existuje dualita. Na jedné straně je tu to, co chcete udržet soukromé: u voliče nechcete, aby byl jeho hlasovací lístek spojen s jeho identitou; u uživatele coinjoin nechcete, aby byl jeho výstup spojen s jeho vstupem. Pokud se totiž koordinátorovi nebo kterékoli jiné straně podaří vytvořit spojení mezi vstupem a výstupem, coinjoin ztrácí veškerý zájem. Jak bylo vysvětleno výše, coinjoin musí fungovat jako zlom v historii mince. K tomuto zastavení dochází právě z důvodu nemožnosti spojit konkrétní vstup s konkrétním výstupem v transakci coinjoin (prospektivní anonset) a naopak (retrospektivní anonset).

Na druhou stranu je tu veřejný aspekt: volič si chce být jistý, že jeho hlasovací lístek je zahrnut do volební urny; podobně si chce být uživatel coinjoinu jistý, že jeho výstup je zahrnut do transakce coinjoinu. Účastníci coinjoinu totiž musí být bezpodmínečně schopni ověřit přítomnost svého výstupu před podpisem transakce, jinak by koordinátor mohl prostředky ukrást.

Právě tyto dva veřejné a soukromé aspekty, umožněné použitím slepých podpisů Davida Chauma, zaručují účastníkům Chaumových coinjoins, že jejich bitcoiny nebudou ukradeny a že jejich prostředky nebude možné vystopovat.

Kdo vymyslel koncept coinjoin?

Těžko s jistotou říci, kdo jako první představil myšlenku coinjoinu v Bitcoinu a kdo přišel s nápadem použít v této souvislosti slepé podpisy Davida Chauma. Často se má za to, že to byl Gregory Maxwell, kdo se o tom poprvé zmínil ve zprávě na BitcoinTalk v roce 2013 :

*"Použití Chaumových slepých podpisů: Uživatelé se přihlásí a poskytnou vstupy (a vymění si adresy), jakož i kryptograficky zaslepenou verzi adresy, na kterou chtějí poslat své soukromé části; server tokeny podepíše a pošle je zpět. Uživatelé se znovu anonymně připojí, odmaskují své výstupní adresy a pošlou je zpět serveru. Server vidí, že všechny výstupy byly jím podepsány a že tedy všechny výstupy pocházejí od platných účastníků. Později se lidé znovu připojí a přihlásí Maxwell, G. (2013, 22. srpna). CoinJoin: Bitcoin privacy for the real world (Soukromí bitcoinů pro reálný svět). Fórum BitcoinTalk. https://bitcointalk.org/index.php?topic=279249.0

BTC204

Existují však i další dřívější zmínky, a to jak o Chaumových signaturách jako součásti míchání, tak i o coinjoinech. V červnu 2011 představil Duncan Townsend na BitcoinTalk mixér, který používá Chaumovy podpisy způsobem dosti podobným moderním chaumovským coinjoinům.

Ve stejném vlákně nalezneme zprávu od hashcoinu v reakci na Duncana Townsenda pro zlepšení jeho mixéru. Proces popsaný v této zprávě je přesně tím, o čem coinjoiny jsou. Zmínku o podobném systému najdeme také ve zprávě od Alexe Mizrahiho z roku 2012, kdy radil tvůrcům Tenebrixu, jednoho z prvních altcoinů, který posloužil jako základ pro pozdější vytvoření Litecoinu. Dokonce i samotný termín "coinjoin" prý nevymyslel Greg Maxwell, ale pochází z nápadu Petera Todda.

BTC204

Zerolink

Zerolink je komplexní směšovací protokol, který zahrnuje Chaumianova spojení a různé strategie na ochranu anonymity uživatelů před několika formami analýzy řetězců, zejména minimalizací chyb spojených se správou portfolia. Tento protokol představili nopara73 a TDevD v roce 2017.

BTC204

Jak už název napovídá, principem Zerolink je vytváření coinjoin transakcí, které zajišťují, že vazby mezi vstupy a výstupy nelze vysledovat. Toho je dosaženo tím, že je zajištěno, že všechny výstupy mají naprosto identické částky.

BTC204

Důležitým preventivním opatřením společnosti Zerolink je udržovat nesmíšené UTXO zcela oddělené od smíšených UTXO pomocí samostatných sad kryptografických klíčů nebo dokonce samostatných portfolií. Tím se odlišuje peněženka "pre-mix", určená pro díly před smícháním, od peněženky "post-mix", vyhrazené pro díly, které byly smíchány.

BTC204

Toto důsledné oddělení UTXO slouží především k tomu, aby se zabránilo náhodnému spojení smíšeného UTXO s nesmíšeným UTXO. Pokud totiž k takovému spojení dojde, účinnost coinjoinu na smíšeném UTXO se zruší, aniž by si toho byl uživatel vědom, čímž je ohrožena důvěrnost UTXO, o jehož historii si myslel, že ji porušil. K těmto vazbám může dojít buď opětovným použitím adresy při zajištění smíšeného UTXO nesmíšeným, nebo aplikací CIOH (Common-Input-Ownership Heuristic), pokud uživatel spotřebovává smíšené a nesmíšené UTXO jako vstupy téže transakce. Oddělením předsmíšených a smíšených portfolií se vyhneme takovým náhodným asociacím a ochráníme uživatele před neúmyslnými chybami.

BTC204

Toto rozdělení také nabízí možnost uplatnit odlišná pravidla pro portfolia před smícháním a po smíšení na úrovni portfoliového softwaru. Například v postmixovém portfoliu může software zakázat slučování UTXO do vstupů, aby se zabránilo použití CIOH, které by ohrozilo anonset uživatele. Je také možné standardizovat používání skriptů a transakčních možností (jako je například hlášení RBF), aby se zabránilo identifikaci podle otisků peněženky.

V současné době je Whirlpool jedinou implementací coinjoinu, která důsledně uplatňuje protokol Zerolink. V příští kapitole se podíváme na různé existující implementace coinjoin a na výhody a nevýhody každé z nich.

Implementace funkce Coinjoin

*V roce 2024 jsme svědky velkých změn v nástrojích, které mají uživatelé, kteří chtějí provádět coinjoiny na Bitcoinu, k dispozici. V současné době se nacházíme v bodě zlomu a trh s coinjoiny prochází zásadní restrukturalizací. Tato kapitola bude jistě časem aktualizována

V současné době existují v Bitcoinu především 3 různé implementace coinjoinu:

Každá z těchto implementací má za cíl prolomit historii UTXO prostřednictvím transakcí coinjoin. Jejich mechanismy se však značně liší. Je proto nezbytné pochopit, jak každá z nich funguje, abyste si mohli vybrat možnost, která nejlépe vyhovuje vašim potřebám.

JoinMarket

Společnost JoinMarket, kterou v roce 2015 založili Adam Gibson a Chris Belcher, se od ostatních implementací coinjoin jasně odlišuje svým jedinečným modelem propojování uživatelů. Systém je založen na P2P směnném trhu, kde někteří uživatelé, "tvůrci", dávají k dispozici své bitcoiny k míchání, zatímco jiní, "příjemci", tyto peníze využívají k coinjoinům výměnou za poplatek.

BTC204

V tomto modelu "tvůrci" dávají své bitcoiny k dispozici "příjemcům" a za svou službu dostávají poplatek. "Takers" zase platí za použití bitcoinů "makers" k provádění svých vlastních transakcí coinjoin. Poplatky za služby se liší podle zastávané role: "Tvůrci" kumulují poplatky za nabízení likvidity, zatímco "příjemci" poplatky platí. Trh funguje volně, bez jakýchkoli podmínek používání.

Jednou z hlavních nevýhod JoinMarketu je složitost jeho používání, které vyžaduje určitou míru komfortu při práci s terminály. Zatímco pro zkušeného uživatele tato složitost nepředstavuje překážku, pro širokou veřejnost může omezovat přístup. Nedávné zavedení webového rozhraní s názvem JAM však jeho používání poněkud usnadnilo.

BTC204

Zdroj: JAM

Hlavní překážkou však zůstává technická bariéra. V ekosystému coinjoin, kde je důvěrnost posílena počtem účastníků, má jakékoli omezení snižující dostupnost přímý vliv na dostupnou likviditu, která je rozhodujícím faktorem efektivity mixu. Bitcoin, který je již výklenkem v oblasti finančních transakcí, vnímá využití coinjoinů jako svůj podvýklenek a JoinMarket představuje jeho ještě specializovanější část, což tedy omezuje jeho potenciál zvyšovat anonsety uživatelů.

I přes svůj inovativní model propojení P2P pro coinjoinery má JoinMarket některé významné nevýhody, zejména pokud jde o transakční strukturu. Na rozdíl od jiných implementací, jako je Whirlpool, JoinMarket nezaručuje dokonalou rovnost mezi výstupy a je možné vysledovat deterministické vazby mezi vstupy a výstupy. Navíc nemá žádné nástroje, které by zabránily opětovnému smíchání již smíchaných částí, což by mohlo ohrozit důvěrnost, o kterou uživatelé usilují.

A konečně, i když je koncept JoinMarket zajímavý, zejména pro zájemce o dynamický trh s likviditou, jeho strukturální nedostatky a technická složitost jej podle mého názoru činí méně zajímavým jak pro nováčky, tak pro odborníky, kteří hledají implementaci coinjoinu.

Wabisabi

Wabisabi je další implementací coinjoinu s přístupem, který centralizuje koordinaci transakcí. Tento model vymysleli Ádám Ficsór (nopara73), Yuval Kogman, Lucas Ontivero a István András Seres v roce 2021 a následující rok byl začleněn do softwaru Wasabi 2.0. Wabisabi je právě evolucí modelu coinjoin softwaru Wasabi, který byl spuštěn v roce 2018.

BTC204

Ke konci roku 2010 společnost Wasabi přijala radikálně odlišnou strukturu transakcí coinjoin než společnost Whirlpool. Společnost Wasabi používala velmi rozsáhlé transakce coinjoin zahrnující desítky účastníků, aby zvýšila anonsety svých účastníků. Naproti tomu Whirlpool se rozhodl pro více malých transakcí, což umožnilo exponenciální růst anonsetů s každým cyklem.

Metody správy výměny rovněž odlišovaly obě implementace. U Whirlpoolu byla cizí měna vyloučena a izolována od UTXO před cykly coinjoin díky TX0, což je koncept, který blíže vysvětlím v další kapitole. U Wasabi naopak devizové prostředky tvořily jeden z výstupů transakce coinjoin a udržovaly deterministické vazby mezi určitými vstupy a výstupy.

BTC204

Wasabi ve verzi 2.0 přizpůsobilo svůj přístup k coinjoins přístupu společnosti Whirlpool. Přestože transakce coinjoin zůstávají velmi rozsáhlé, je nyní možné řetězit několik po sobě jdoucích cyklů podle modelu Whirlpool. Zvláštní pozornost byla věnována také řízení směnného kurzu: na rozdíl od verze Wasabi 1.0, kde byl směnný kurz přímo vázán na vstupy od uživatelů, se Wabisabi snaží rozdělit směnný kurz na několik malých částek, rozdělených na stejné nominální hodnoty pro všechny účastníky.

Ukažme si to na zjednodušeném příkladu, který zahrnuje pouze 2 uživatele: Alice si přeje smíchat 115 000 satelitů a Bob 210 000 satelitů. Pomineme-li poplatky, s Wasabi 1.0 by transakce coinjoin vygenerovala 3 výstupy po 100 000 satech plus 1 výměnu 15 000 satech pro Alici a 1 výměnu 10 000 satech pro Boba. Výstupy z výměny by byly stále propojeny se vstupy:

BTC204

Podle Wabisabi by stejná transakce vytvořila 3 výstupy po 100 000 sázích a 5 výstupů po 5 000 sázích, čímž by se výměna rozptýlila, takže by ji nebylo možné přímo spojit s konkrétním vstupem:

BTC204

Osobně se domnívám, že devizové řízení společnosti Wabisabi představuje několik rizik, která by mohla ohrozit jeho účinnost z hlediska důvěrnosti:

Na rozdíl od společnosti Whirlpool, která používá protokol ZeroLink zajišťující přísné oddělení UTXO před smícháním a po smíšení, společnost Wabisabi toto přísné oddělení nedodržuje. U některých zákazníků společnosti Wasabi se také objevily problémy s opakovaným používáním adres, které jsou pro uživatele samozřejmě velmi škodlivé.

Ve verzi Wasabi 2.0 byla zavedena nová politika poplatků za připojení mincí. Od nynějška jsou koordinátorské poplatky stanoveny na 0,3 % pro UTXO nad 0,01 bitcoinu, zatímco pro menší UTXO jsou tyto poplatky nabízeny v plné výši. Kromě toho jsou remixy pro tyto menší UTXO zdarma, ačkoli poplatky za těžbu platí uživatel i nadále za všechny transakce, včetně remixů.

To je v kontrastu s politikou společnosti Whirlpool, kde poplatky zůstávají pevné bez ohledu na velikost získaných anonsetů. U Wasabi 2.0 jsou sice zrušeny poplatky koordinátora za malé UTXO, ale uživatel stále musí platit poplatky za těžbu všech transakcí, včetně remixů.

V době, kdy píšu tyto řádky, se používání Wabisabi v důsledku nedávných událostí výrazně zkomplikovalo. Po zatčení zakladatelů peněženky Samourai oznámila společnost zkSNACKs, která financuje a řídí vývoj Wasabi, že její služba coinjoin koordinátora bude k 1. červnu 2024 ukončena. Tento koordinátor, který byl na Wasabi nastaven jako výchozí, byl zodpovědný za drtivou většinu likvidity.

Po ukončení činnosti tohoto hlavního koordinátora se nyní uživatelé musí připojit k novým, nezávislým koordinátorům. Tato změna vyvolává řadu obav: na jedné straně noví koordinátoři nemusí mít dostatečnou likviditu, což snižuje účinnost coinjoins z hlediska důvěrnosti. Na druhé straně existuje riziko, že narazíte na zlomyslného koordinátora. Tato situace přináší významná nová rizika pro ty, kteří chtějí používat Wabisabi.

Kromě technických problémů vyvolává rozhodnutí společnosti zkSNACKs, která stojí za projektem Wasabi, využít k filtrování účastníků coinjoinu služeb společnosti zabývající se analýzou řetězců vážné etické a strategické otázky. Původní myšlenkou bylo zabránit používání coinjoinů na Wasabi zločinci, což se může zdát legitimní. Vyvolává však paradox: platit poplatky koordinátorovi, jehož hlavním posláním je posílit důvěrnost uživatelů, jen proto, aby financoval společnost, jejímž cílem je stejnou důvěrnost ohrozit.

Ještě více znepokojující je princip filtrování, který je v radikálním rozporu s filozofií Bitcoinu, který nabízí otevřený finanční systém bez cenzury. Ačkoli se může zdát oprávněné chtít vyloučit trestnou činnost, toto filtrování by mohlo postihnout i jednotlivce, jejichž jednání, ačkoli je v určitých souvislostech klasifikováno jako nezákonné, by mohlo být morálně ospravedlnitelné nebo společensky prospěšné. Tuto dichotomii dokonale ilustruje příklad Edwarda Snowdena: některé vlády ho za jeho odhalení považují za zločince, jiné ho vnímají jako whistleblowera, který jednal ve veřejném zájmu. Tato složitost podtrhuje potenciální nebezpečí filtrování, které, ačkoli má dobré úmysly, může v konečném důsledku ohrozit práva a bezpečnost oprávněných uživatelů. Mohl jsem také zmínit aktivisty a novináře, kteří jsou v některých autoritářských režimech pronásledováni.

Jak jste již jistě pochopili, u Bitcoinu dávám jednoznačně přednost modelu Whirlpool pro spojování mincí. Tento systém vyniká svou přísností a nabízí vynikající záruky důvěrnosti. Jako jediný také nabízí mix, který je v matematickém kontextu považován za dokonalý. Podle mého názoru představuje tento model budoucnost coinjoins na Bitcoinu. Vyzývám vás, abyste se tímto modelem podrobněji zabývali v následující kapitole.

Jak funguje společnost Whirlpool

Whirlpool se od ostatních metod coinjoin liší použitím transakcí "ZeroLink", které zajišťují, že mezi všemi vstupy a výstupy neexistuje žádné možné technické spojení. Této dokonalé kombinace je dosaženo díky struktuře, v níž každý účastník přispívá stejným množstvím vstupů (s výjimkou poplatků za těžbu) a generuje výstupy v naprosto stejné výši.

Tento restriktivní přístup ke vstupům dává transakcím coinjoin společnosti Whirlpool jedinečnou vlastnost: naprostou absenci deterministických vazeb mezi vstupy a výstupy. Jinými slovy, každý výstup má stejnou pravděpodobnost, že bude přiřazen kterémukoli účastníkovi, ve vztahu ke všem ostatním výstupům v transakci.

BTC204

Jak funguje společnost Whirlpool

Zpočátku byl počet účastníků v každém coinjoinu Whirlpool omezen na 5, přičemž 2 účastníci byli noví a 3 remixéři (tyto pojmy vysvětlíme později). Nárůst transakčních poplatků na řetězci zaznamenaný v roce 2023 však přiměl Samouraiovy týmy k přehodnocení modelu s cílem zvýšit důvěrnost a zároveň snížit náklady. S ohledem na situaci na trhu s poplatky a počet účastníků tak nyní koordinátor může organizovat coinjoiny zahrnující 6, 7 nebo 8 účastníků. Tato vylepšená sezení jsou známá jako "Surge Cycles". Je důležité si uvědomit, že bez ohledu na konfiguraci se coinjoinů Whirlpool účastní vždy pouze 2 noví účastníci.

Transakce Whirlpool se tedy vyznačují stejným počtem vstupů a výstupů, které mohou být :

BTC204 BTC204 BTC204 BTC204

Model společnosti Whirlpool je založen na malých transakcích coinjoin. Na rozdíl od Wabisabi a JoinMarket, kde je robustnost anonsetů založena na objemu účastníků v jednom cyklu (nebo na několika málo cyklech), Whirlpool spoléhá na posloupnost několika malých cyklů.

V tomto modelu uživatelé platí poplatky pouze při prvním vstupu do fondu, což jim umožňuje účastnit se mnoha remixů bez dalších nákladů. Noví účastníci platí poplatky za těžbu remixérům.

S každým dalším spojením mincí, kterého se daný kus účastní, a s každým dalším spojením mincí, se kterými se setkal v minulosti, bude počet anonsetů exponenciálně růst. Cílem je využít těchto volných remixů, které při každém svém výskytu přispívají k posílení hustoty anonsetů spojených s každou smíšenou skladbou.

BTC204

Whirlpool byl navržen s ohledem na dva důležité požadavky:

Těmito požadavky se řídili vývojáři peněženky Samourai při navrhování systému Whirlpool a omezili počet účastníků na jeden cyklus. Příliš malý počet by ohrozil efektivitu spojování mincí a drasticky snížil počet anonsetů vygenerovaných za cyklus, zatímco příliš velký počet by způsobil problémy se správou mobilních aplikací a ztížil by průběh cyklu.

A konečně, v systému Whirlpool není potřeba mít vysoký počet účastníků na jeden coinjoin, protože anonsety se provádějí na základě kumulace několika coinjoin cyklů. Nejdůležitější zásadou je zde homogenita UTXO všech účastníků, protože ta zajišťuje dokonalé promíchání, a tedy plný užitek z cyklů míchání a remixování.

Coinjoin pools a poplatky

Aby tyto vícenásobné cykly zvýšily anonce smíšených částí, je třeba určitý rámec pro omezení množství použitých UTXO. Whirlpool definuje různé pooly.

Pool představuje skupinu uživatelů, kteří se chtějí smíchat a kteří se dohodnou na množství UTXO, které se má použít k optimalizaci procesu spojování mincí při zachování dokonalé homogenity dílů. Každý pool určuje pevné množství UTXO, které musí uživatel dodržet, aby se mohl zúčastnit. Chcete-li tedy provádět coinjoiny s Whirlpoolem, musíte si vybrat pool. V současné době jsou k dispozici následující pooly:

Když vstoupíte do poolu se svými bitcoiny, budou rozděleny tak, aby generovaly UTXO, které jsou dokonale homogenní s UTXO ostatních účastníků poolu. Každý pool má svůj maximální limit, takže v případě částek přesahujících tento limit budete muset buď provést dva samostatné vstupy do téhož poolu, nebo se přesunout do jiného poolu s vyšší částkou:

| Pool (bitcoin) | Maximální částka za položku (bitcoin) |

|----------------|--------------------------------------|

| 0,5 | 35 |

| 0,05 | 3,5 |

| 0,01 | 0,7 |

| 0,001 | 0,025 |

UTXO je považováno za součást fondu, když je připraveno k začlenění do coinjoinu. To však neznamená, že uživatel ztrácí jeho vlastnictví. Jak jsme viděli v prvních kapitolách této části, prostřednictvím různých cyklů míchání si zachováváte plnou kontrolu nad svými klíči a následně i nad svými bitcoiny. Tím se technika coinjoin liší od ostatních centralizovaných technik míchání.

Chcete-li se připojit k poolu coinjoin, musíte zaplatit poplatek za služby a poplatek za těžbu. Servisní poplatky jsou pro každý pool pevně stanoveny a jsou určeny k odměňování týmů zodpovědných za vývoj a údržbu Whirlpoolu.

Poplatek za službu Whirlpool se platí pouze jednou při vstupu do bazénu. Po připojení se můžete účastnit neomezeného počtu remixů bez dalších poplatků. Zde jsou uvedeny aktuální fixní poplatky za jednotlivé bazény:

| Pool (Bitcoin) | Vstupní poplatek (Bitcoin) |

|----------------|---------------------------------|

| 0,5 | 0,0175 |

| 0,05 | 0,00175 |

| 0,01 | 0,0005 (50 000 satelitů) |

| 0,001 | 0,00005 (5 000 satelitů) |

Tyto poplatky v podstatě fungují jako vstupenka do vybraného poolu bez ohledu na částku, kterou jste vložili do coinjoinu. Ať už tedy vstoupíte do poolu 0,01 s přesně 0,01 BTC nebo 0,5 BTC, poplatky zůstanou v absolutním vyjádření stejné.

Před zahájením spojování Whirlpool si uživatel může vybrat ze dvou strategií:

Obecně se nedoporučuje slučovat několik smíšených UTXO po cyklech coinjoin, protože by to mohlo ohrozit získanou důvěrnost, zejména kvůli heuristice společného vlastnictví vstupů (CIOH: Common-Input-Ownership-Heuristic). V důsledku toho může mít smysl zvolit větší pool, i když to znamená zaplatit více, aby se zabránilo tomu, že na výstupu bude příliš mnoho UTXO s malou hodnotou. Uživatel musí tyto kompromisy vyhodnotit, aby si vybral fond, kterému dává přednost.

Kromě poplatku za službu je třeba vzít v úvahu také poplatek za těžbu, který je specifický pro každou transakci s bitcoiny. Jako uživatel Whirlpool budete muset zaplatit poplatek za těžbu za přípravnou transakci (Tx0) a také za první připojení mince. Všechny další remixy budou díky modelu Whirlpool založenému na placení nových účastníků zdarma.

Ve skutečnosti jsou v každém spojení Whirlpool 2 uživatelé mezi vstupy novými účastníky. Ostatní vstupy pocházejí od remixérů. V důsledku toho náklady na těžbu pro všechny účastníky transakce nesou tito 2 noví účastníci, kteří pak mohou těžit i z bezplatných remixů:

BTC204

Díky tomuto systému poplatků se Whirlpool skutečně odlišuje od ostatních implementací coinjoinu, protože anonce UTXO nejsou úměrné ceně zaplacené uživatelem. Díky tomu je možné dosáhnout výrazně vyšší úrovně anonymity zaplacením pouze vstupního poplatku do poolu a poplatku za těžbu 2 transakcí (Tx0 a počáteční mix).

Je důležité si uvědomit, že uživatel bude muset také zaplatit poplatky za těžbu, aby si mohl vybrat své UTXO z poolu po dokončení více coinjoinů, pokud si nezvolil možnost mix to, která poskytuje externí adresu, která obdrží prostředky přímo z coinjoinu, bez dalších transakcí.

Účty portfolia HD

Chcete-li vytvořit coinjoin přes Whirlpool, musí peněženka vygenerovat několik samostatných účtů. Na tomto principu funguje protokol ZeroLink. Účet v kontextu HD (Hierarchical Deterministic) portfolia představuje část zcela izolovanou od ostatních, přičemž k tomuto oddělení dochází na úrovni třetí hloubky hierarchie portfolia, tj. na úrovni xpub.

BTC204

Z peněženky HD lze teoreticky odvodit až 2^(31) různých účtů. Počáteční účet, který se ve výchozím nastavení používá ve všech bitcoinových peněženkách, odpovídá indexu 0.

U portfolií přizpůsobených systému Whirlpool se pro potřeby procesu ZeroLink používají 4 účty:

Každý z těchto účtů plní v procesu spojování mincí určitou funkci, kterou se budeme zabývat v následujících částech.

Všechny tyto účty jsou propojeny s jediným seedem, což uživateli umožňuje obnovit přístup ke všem svým bitcoinům pomocí jeho obnovovací fráze a případně jeho přístupové fráze. Během operace obnovy však musí být software informován o různých použitých indexech účtů.

Podívejme se na jednotlivé fáze spojení Whirlpool coinjoin v rámci těchto účtů.

TX0

Výchozím bodem každého připojení k účtu Whirlpool je vkladový účet. Jedná se o účet, který automaticky použijete při vytvoření nové bitcoinové peněženky. Na tento účet bude třeba připsat bitcoiny, které chcete smíchat.

Tx0" je prvním krokem v procesu míchání společnosti Whirlpool. Jeho účelem je připravit a vyrovnat UTXO pro coinjoin, rozdělit je na jednotky odpovídající množství vybraného poolu, aby bylo zajištěno homogenní míchání. Takto vyrovnané UTXO jsou poté odeslány na účet premix. Pokud jde o rozdíl, který nemůže vstoupit do poolu, je oddělen na zvláštní účet: špatný bank (neboli "doxxic change").

Tato počáteční transakce Tx0 slouží také k zaplacení poplatku za službu koordinátorovi spojení mincí. Na rozdíl od následujících kroků tato transakce není kooperativní, takže uživatel musí nést plné náklady na těžbu:

BTC204

V tomto příkladu transakce Tx0 je vstupní částka 372 000 satelitů z našeho vkladového účtu rozdělena na několik výstupních UTXO, které se rozdělí takto:

Například zde je skutečný model Whirlpool Tx0 (není můj): edef60744f539483d868caff49d4848e5cc6e805d6cdc8d0f9bdbbaedcb5fc46

BTC204

Doxické změny

Přebytek, který se nepodařilo začlenit do fondu, zde odpovídající 40 000 sátů, je přesměrován na špatný bankovní účet, známý také jako "doxická výměna", aby bylo zajištěno přísné oddělení od ostatních UTXO v portfoliu.

Tento UTXO je nebezpečný pro důvěrnost uživatele, protože nejenže je stále spojen se svou minulostí, a tedy pravděpodobně s identitou svého vlastníka, ale je také zaznamenán jako patřící uživateli, který provedl coinjoin.

BTC204

Pokud je tento UTXO sloučen se smíšenými výstupy, ztratí všechny důvěrnosti získané během cyklů coinjoin, zejména kvůli CIOH (Common-Input-Ownership-Heuristic). Pokud je sloučen s jinými doxxickými změnami, hrozí, že uživatel ztratí důvěrnost, protože propojí různé záznamy z coinjoin cyklů. Mělo by se s ní proto zacházet opatrně. Podrobněji se správě těchto doxxic UTXO budeme věnovat v poslední části této kapitoly.

Počáteční směs

Po Tx0 jsou vyrovnané UTXO odeslány na účet premix našeho portfolia, kde jsou připraveny k zavedení do prvního cyklu spojování mincí, známého také jako "počáteční mix". Pokud, jako v našem příkladu, Tx0 vygeneruje několik UTXO určených ke smíchání, každý z nich bude začleněn do samostatného počátečního mixu.

Na konci těchto prvních mixů bude účet premix prázdný, zatímco naše mince, které zaplatily poplatky za těžbu za toto první spojení mincí, budou upraveny přesně na částku definovanou zvoleným poolem. V našem příkladu se naše počáteční UTXO ve výši 108 000 sátů sníží přesně na 100 000 sátů.

BTC204

Remixy

Po počátečním smíchání jsou prostředky UTXO převedeny na účet postmix. Tento účet shromažďuje již smíchané UTXO a ty, které čekají na remixování. Když je zákazník Whirlpool aktivní, UTXO nacházející se na účtu postmix jsou automaticky k dispozici pro remixy a budou náhodně vybrány pro účast v těchto nových cyklech.

Připomínáme, že remixy jsou pak 100% zdarma: nevyžadují se žádné další poplatky za služby nebo těžbu. Ponechání UTXO na účtu postmix tedy zachovává jejich hodnotu a zároveň zlepšuje jejich anonsety. Proto je důležité umožnit těmto mincím účast v několika cyklech coinjoinu. Nestojí vás to vůbec nic a zvyšuje to úroveň jejich anonymity.

Pokud se rozhodnete utratit smíšené jednotky UTXO, můžete tak učinit přímo z tohoto účtu postmix. Doporučujeme vám, abyste si na tomto účtu ponechávali smíšené UTXO, abyste mohli využívat bezplatných remixů a abyste zabránili jejich opuštění okruhu Whirlpool, což by mohlo snížit jejich důvěrnost.

Jak spravujete své postmixy?

Po spuštění cyklů coinjoin je nejlepší strategií ponechat UTXO na účtu postmix a čekat na jejich budoucí použití. Dokonce je vhodné nechat je remixovat po neomezenou dobu, dokud je nebudete potřebovat utratit.

Někteří uživatelé mohou zvážit převod svých smíšených bitcoinů do peněženky zabezpečené hardwarovou peněženkou. To je možné, ale je důležité důsledně dodržovat doporučení peněženky Samourai, aby nedošlo k ohrožení získané důvěrnosti.

Nejčastější chybou je slučování jednotek UTXO. Abyste se vyhnuli CIOH (Common-Input-Ownership-Heuristic), musíte se vyvarovat kombinování smíšených UTXO s nesmíšenými UTXO ve stejné transakci. To vyžaduje pečlivou správu UTXO v rámci vašeho portfolia, zejména pokud jde o označování.

BTC204

Pozornost je třeba věnovat také konsolidaci smíšených UTXO. Mírná konsolidace je možná, pokud vaše smíšené UTXO mají významné anonsety, ale tím se nevyhnutelně sníží důvěrnost vašich dílů. Dbejte na to, aby konsolidace nebyly příliš rozsáhlé ani aby nebyly prováděny po nedostatečném počtu remixů s rizikem vytvoření odvoditelných vazeb mezi vašimi UTXO před a po cyklech coinjoin. V případě pochybností o těchto manipulacích je nejlepším postupem nekonsolidovat UTXO po mixu, ale převádět je po jednom do hardwarové peněženky a pokaždé vygenerovat novou prázdnou adresu. Opět nezapomeňte označit každé UTXO, které obdržíte.

Rovněž se nedoporučuje převádět postmixové UTXO do peněženky pomocí skriptů, které nejsou běžně používány. Pokud například vstoupíte do Whirlpoolu z multisig peněženky pomocí skriptů P2WSH, je malá šance, že se smísíte s ostatními uživateli, kteří měli původně stejný typ peněženky. Pokud své postmixy znovu smícháte do stejné multisig peněženky, úroveň důvěrnosti vašich smíšených bitcoinů se výrazně sníží. Kromě skriptů existuje mnoho dalších otisků peněženek, které vám mohou hrát do karet.

Stejně jako u každé transakce s bitcoiny je také důležité, abyste znovu nepoužívali adresu příjemce. Každá nová transakce musí být přijata na nové, prázdné adrese.

Nejjednodušším a nejbezpečnějším řešením je nechat smíšené UTXO v klidu na jejich postmixovém účtu, nechat je remixovat a sáhnout na ně pouze za účelem utrácení. Peněženky Samurai a Sparrow jsou vybaveny dalšími ochranami proti všem těmto rizikům analýzy řetězce. Tyto ochrany vám pomohou vyhnout se chybám.

Jak zvládáte toxické výměny?

Dále si musíte dát pozor na správu doxxic exchange, tedy burzy, která se nedostala do fondu coinjoin. Tyto toxické UTXO, které vznikly použitím Whirlpoolu, představují riziko pro vaše soukromí, protože vytvářejí spojení mezi vámi a uživatelem coinjoinu. Je proto nutné s nimi nakládat opatrně a nekombinovat je s jinými UTXO, zejména se smíšenými UTXO.

Zde je několik strategií, jak je používat:

Jak mohu používat produkt Whirlpool?

Po zatčení zakladatelů peněženky Samourai a zabavení jejich serverů 24. dubna 2024 již nástroj Whirlpool nefunguje, a to ani pro ty, kteří mají vlastní Dojo. Dříve byl k dispozici v peněženkách Samourai Wallet a Sparrow Wallet.

BTC204

Je však možné, že tento nástroj bude v nadcházejících týdnech v závislosti na výsledcích zkoušek znovu aktivován nebo bude spuštěn jiným způsobem. V každém případě si nemyslím, že trh s bitcoinovými mincemi bude dlouho bez nabídky, protože poptávka po nich existuje. A co víc, jelikož model společnosti Whirlpool je z hlediska důvěrnosti nejpokročilejší, bude v budoucnu jistě modelem volby pro další implementace.

Tento případ a vývoj souvisejících nástrojů bedlivě sledujeme. Můžete si být jisti, že tento vzdělávací kurz budeme aktualizovat, jakmile budou k dispozici nové informace.

V příští kapitole se dozvíme, co jsou to "anonsety", jak se tyto ukazatele počítají a jak nám mohou pomoci odhadnout efektivitu cyklů coinjoin.

https://planb.network/tutorials/privacy/on-chain/coinjoin-sparrow-wallet-84def86d-faf5-4589-807a-83be60720c8b

https://planb.network/tutorials/privacy/on-chain/coinjoin-samourai-wallet-e566803d-ab3f-4d98-9136-5462009262ef

https://planb.network/tutorials/privacy/on-chain/coinjoin-dojo-c4b20263-5b30-4c74-ae59-dc8d0f8715c2

Sady anonymity

Poté, co jsme si prostudovali, jak funguje spojování mincí a jaké jsou problémy spojené s efektivním mícháním, se nyní dozvíme, jak měřit jejich účinnost. Jak můžeme určit, zda byl proces coinjoiningu účinný a jaký stupeň anonymity část získala? To zjistíme v této kapitole pomocí sad anonymity neboli "anonsetů".

Připomenutí užitečnosti funkce coinjoin

Užitečnost funkce coinjoin spočívá ve schopnosti vytvořit věrohodnou popíratelnost tím, že svou část vložíte do skupiny nerozlišitelných částí. Cílem této akce je přerušit vazby sledovatelnosti, a to jak z minulosti do přítomnosti, tak z přítomnosti do minulosti.

Jinými slovy, analytik, který zná vaši počáteční transakci (Tx0) na vstupu do cyklů coinjoin, by neměl být schopen s jistotou identifikovat vaše UTXO na výstupu z cyklů remix (analýza vstupu do cyklu na výstupu z cyklu).

BTC204

Naopak analytik, který zná vaše UTXO na výstupu z cyklů coinjoin, nesmí být schopen určit původní transakci na vstupu do cyklů (analýza výstupu z cyklu na vstup do cyklu).

BTC204

Abychom mohli posoudit, jak obtížné je pro analytika propojit minulost se současností a naopak, musíme kvantifikovat velikost skupin homogenních částí, v nichž se vaše část skrývá. Tato míra nám říká, kolik analýz má stejnou pravděpodobnost. Pokud je tedy správná analýza utopena mezi 3 dalšími analýzami se stejnou pravděpodobností, je úroveň vašeho utajení velmi nízká. Na druhou stranu, pokud se správná analýza nachází v souboru 20 000 stejně pravděpodobných analýz, je vaše část velmi dobře skryta. Velikost těchto skupin představují ukazatele známé jako "anonce".

Porozumění anonsetům

Anonymy se používají jako indikátory pro posouzení stupně důvěrnosti konkrétního UTXO. Přesněji řečeno, měří počet nerozlišitelných UTXO v souboru, který zahrnuje zkoumanou část. Požadavek na homogenní soubor UTXO znamená, že anonsety se obvykle počítají na cyklech coinjoin. Použití těchto ukazatelů je zvláště důležité pro Whirlpool coinjointy, a to vzhledem k jejich homogenitě.

V případě potřeby lze k posouzení kvality koincidenčních spojů použít anonsety. Velký anonset znamená vysokou úroveň anonymity, protože je obtížné rozlišit konkrétní UTXO v homogenním souboru.

existují 2 typy anonsetů:

Perspektivní anonset

Výhledový anonset udává velikost skupiny, mezi kterou se skrývá UTXO zkoumaný na konci cyklu, vzhledem k UTXO na začátku, tj. počet nerozlišitelných částí přítomných v této skupině. Název tohoto ukazatele je "metrika zaměřená na budoucnost".

Tento ukazatel měří odolnost důvěrnosti místnosti vůči analýze minulosti a současnosti (vstup-výstup).

BTC204

Tato metrika se používá k odhadu míry ochrany UTXO proti pokusům o rekonstrukci jeho historie od bodu vstupu do bodu výstupu v procesu spojování mincí.

Například pokud se vaše transakce zúčastnila prvního cyklu spojení mincí a byly dokončeny další dva sestupné cykly, váš budoucí anonset mince bude 13 :

BTC204

Představme si například, že naše mince má na začátku cyklu spojení mincí hodnotu 86,871. V praxi to znamená, že je ukryta mezi 86 871 nerozlišitelnými částmi. Vnější pozorovatel, který zná tuto minci na začátku cyklu coinjoin a snaží se vystopovat její výstup, bude konfrontován s 86 871 možnými UTXO, z nichž každá má stejnou pravděpodobnost, že je hledanou mincí.

BTC204

Retrospektivní anonset

Retrospektivní anonset udává počet možných zdrojů pro danou část, přičemž zná UTXO na konci cyklu. Tento ukazatel měří odolnost důvěrnosti dílu vůči analýze z přítomnosti do minulosti (z výstupu na vstup), tj. jak obtížné je pro analytika vysledovat váš díl zpět k jeho původu, před cykly coinjoin. Název tohoto ukazatele je "zpětná anonce" nebo "zpětně orientovaná metrika".

BTC204

Na základě znalosti vašeho UTXO na výstupu z cyklů určí retrospektivní anonset počet potenciálních transakcí Tx0, které mohly představovat váš vstup do cyklů coinjoin. V níže uvedeném diagramu to odpovídá součtu všech oranžových bublin.

BTC204

Představme si například, že naše část coinjoin má retrospektivní anonset 42,185. V praxi to znamená, že pro toto UTXO existuje 42 185 potenciálních zdrojů. Pokud vnější pozorovatel identifikuje tuto minci na konci cyklů a snaží se vystopovat její původ, bude mít před sebou 42 185 možných zdrojů, přičemž všechny mají stejnou pravděpodobnost, že jsou hledaným původem.

BTC204

Jak vypočítáte anonsety?

U malých souborů je možné anonsety vypočítat ručně pomocí průzkumníka bloků. Pro větší anonsety je však použití specializovaného nástroje nezbytné. Pokud je mi známo, jediným softwarem, který je schopen tento úkol provést, je Whirlpool Stats Tool, nástroj v jazyce Python vyvinutý týmy Samourai a OXT. Tento nástroj je bohužel v současné době mimo provoz v důsledku zatčení zakladatelů společnosti Samourai a přerušení činnosti společnosti OXT, která byla používána k získávání dat z blockchainu.

BTC204

Jak jsme viděli v této kapitole, anonsety lze vypočítat pouze v případě, že existuje určitá homogenita ve struktuře coinjoin. V příští kapitole zjistíme, jak tuto homogenitu kvantifikovat na bitcoinové transakci, ať už jde o coinjoin, nebo tradičnější transakci.

https://planb.network/tutorials/privacy/analysis/wst-anonsets-0354b793-c301-48af-af75-f87569756375

Entropie

Jak jsme viděli v této části o spojování mincí, homogenita UTXO na vstupu a výstupu hraje důležitou roli při zvyšování důvěrnosti bitcoinové transakce. Tento parametr vytváří věrohodnou popíratelnost tváří v tvář analýze blockchainu. K měření této homogenity lze použít několik metod, ale jednou z nejefektivnějších je podle mého názoru využití ukazatelů poskytovaných nástrojem Boltzmann, který vyvinuly týmy OXT a Samourai Wallet, a zejména entropie transakce. Právě na to se budeme v této kapitole podrobněji zaměřovat.

Na rozdíl od anonsetů, které se počítají na základě souboru transakcí, se zde prezentované ukazatele zaměřují na jednu transakci, ať už se jedná o coinjoin nebo tradičnější transakci.

Počet interpretací

Prvním ukazatelem, který lze na transakci bitcoinu pozorovat, je celkový počet možných interpretací, kterým čelí analýza vnějšího pozorovatele. S přihlédnutím k hodnotám UTXO zapojených do transakce tento ukazatel ukazuje počet způsobů, jakými lze vstupy přiřadit k výstupům. Jinými slovy, určuje počet možných interpretací, které může transakce vyvolat v tocích bitcoinů z pohledu vnějšího pozorovatele, který ji analyzuje.

Například jednoduchá platební transakce s 1 vstupem a 2 výstupy bude mít pouze jednu interpretaci, a to že vstup č. 0 financoval výstup č. 0 a výstup č. 1. Jiná interpretace není možná:

BTC204

Naproti tomu rohová hra Whirlpool 5x5 má 1,496 možných kombinací:

BTC204

Whirlpool Surge Cycle 8x8 coinjoin má 9\,934\,563 možných interpretací:

BTC204

Entropie

Z počtu interpretací transakce bitcoinu můžeme vypočítat její entropii.

V obecném kontextu kryptografie a informací je entropie kvantitativní mírou nejistoty nebo nepředvídatelnosti spojené se zdrojem dat nebo náhodným procesem. Jinými slovy, entropie je způsob měření, jak obtížné je předvídat nebo odhadnout určitou informaci.

V konkrétním kontextu analýzy blockchainu je entropie také název ukazatele, odvozeného od Shannonovy entropie a vynalezeného LaurentemMT, který lze vypočítat na transakci Bitcoin.

Pokud transakce představuje velký počet možných interpretací, je často relevantnější odkazovat na její entropii. Tento ukazatel měří nedostatečné znalosti analytiků o přesné konfiguraci transakce. Jinými slovy, čím vyšší je entropie, tím obtížnější je pro analytiky identifikovat tok bitcoinů mezi vstupy a výstupy.

V praxi entropie odhaluje, zda transakce z pohledu vnějšího pozorovatele představuje více možných interpretací založených pouze na množství vstupů a výstupů bez zohlednění dalších vnějších nebo vnitřních vzorců a heuristik. Vysoká entropie je proto synonymem větší důvěrnosti transakce.

Entropie je definována jako binární logaritmus počtu možných kombinací. Zde je použitý vzorec, kde E je entropie transakce a C počet možných interpretací:

E = \log_2(C)

V matematice je binární logaritmus (logaritmus o základu 2) inverzní operací exponencializace čísla 2. Jinými slovy, binární logaritmus čísla x je exponent, na který je třeba zvýšit číslo 2, abychom získali číslo x. Tento ukazatel se tedy vyjadřuje v bitech.

Vezměme si příklad výpočtu entropie pro transakci coinjoin strukturovanou podle modelu Whirlpool 5x5, která, jak bylo uvedeno v předchozí části, má počet možných interpretací 1\,496 :

\begin{align*}
C &= 1\,496 \\
E &= \log_2(1\,496) \\
E &= 10.5469 \text{ bits}
\end{align*}

Tato transakce coinjoin má tedy entropii 10,5469$ bitů, což je považováno za velmi uspokojivé. Čím vyšší je tato hodnota, tím více různých interpretací transakce připouští, čímž se posiluje úroveň její důvěrnosti.

Pro transakci coinjoin 8x8 s interpretacemi 9,934\,563 by entropie byla :

\begin{align*}
C &= 9\,934\,563 \\
E &= \log_2(9\,934\,563) \\
E &= 23.244 \text{ bits}
\end{align*}

Uveďme další příklad klasické platební transakce s 1 vstupem a 2 výstupy: 1b1b0c3f0883a99f1161c64da19471841ed12a1f78e77fab128c69a5f578ccce

BTC204

V případě této transakce je jediná možná interpretace: (In.0) > (Out.0 ; Out.1). V důsledku toho je její entropie 0 :

\begin{align*}
C &= 1 \\
E &= \log_2(1) \\
E &= 0 \text{ bits}
\end{align*}

Účinnost

Na základě entropie transakce můžeme také vypočítat její účinnost z hlediska důvěrnosti. Tento ukazatel hodnotí účinnost transakce porovnáním s optimální transakcí, kterou lze předpokládat v identické konfiguraci.

To nás přivádí ke konceptu maximální entropie, která odpovídá nejvyšší entropii, jíž může určitá struktura transakcí teoreticky dosáhnout. Účinnost transakce se pak vypočítá porovnáním této maximální entropie se skutečnou entropií analyzované transakce.

Používá se následující vzorec s :

Ef = E_R - E_M

Například pro strukturu Whirlpool 5x5 coinjoin je maximální entropie 10,5469 :

\begin{align*}
E_R &= 10.5469 \\
E_M &= 10.5469 \\
Ef &= E_R - E_M \\
Ef &= 10.5469 - 10.5469 \\
Ef &= 0 \text{ bits}
\end{align*}

Tento ukazatel je rovněž vyjádřen v procentech. Používá se následující vzorec: :

\begin{align*}
E_f &= \frac{C_R}{C_M} \\
E_f &= \frac{1\,496}{1\,496} \\
E_f &= 100 \%
\end{align*}

Efektivita 100 USD znamená, že transakce využívá svůj potenciál důvěrnosti v závislosti na své struktuře.

Hustota entropie

Entropie je dobrým ukazatelem pro měření důvěrnosti transakce, ale částečně závisí na počtu vstupů a výstupů v transakci. Pro porovnání entropie 2 různých transakcí s různým počtem vstupů a výstupů můžeme vypočítat hustotu entropie. Tento ukazatel poskytuje pohled na entropii vzhledem ke každému vstupu nebo výstupu transakce. Hustota je užitečná pro hodnocení a porovnávání efektivity transakcí různých velikostí.

Pro její výpočet jednoduše vydělíme celkovou entropii transakce celkovým počtem vstupů a výstupů zapojených do transakce:

E_D = \frac{E}{T}

Vezměme si příklad spojení 5x5 Whirlpool:

\begin{align*}
T &= 5 + 5 = 10 \\
E &= 10.5469 \\
E_D &= \frac{E}{T} \\
E_D &= \frac{10.5469}{10} \\
E_D &= 1.054 \text{ bits}
\end{align*}

Vypočítejme také hustotu entropie spojnice 8x8 Whirlpool:

\begin{align*}
T &= 8 + 8 = 16 \\
E &= 23.244 \\
E_D &= \frac{E}{T} \\
E_D &= \frac{23.244}{16} \\
E_D &= 1.453 \text{ bits}
\end{align*}

Analýzou hustoty entropie těchto dvou typů spojení je zřejmé, že i při normalizaci entropie podle počtu prvků generuje spojení "Surge Cycle 8x8" větší nejistotu pro analýzu.

Boltzmannovo skóre

Další informací analyzovanou v transakci je Boltzmannovo skóre každého prvku vůči jinému. Jedná se o tabulku pravděpodobnosti shody mezi vstupy a výstupy. Tato tabulka udává prostřednictvím Boltzmannova skóre podmíněnou pravděpodobnost, že určitý vstup je spojen s daným výstupem. Jedná se tedy o kvantitativní míru podmíněné pravděpodobnosti, že dojde k asociaci mezi vstupem a výstupem v transakci, založenou na poměru počtu příznivých výskytů této události k celkovému počtu možných výskytů, v souboru interpretací.

Na příkladu spojení Whirlpool by tabulka podmíněné pravděpodobnosti zvýraznila šance na spojení mezi každým vstupem a výstupem a nabídla by kvantitativní míru nejednoznačnosti spojení v transakci:

| % | Výstup 0 | Výstup 1 | Výstup 2 | Výstup 3 | Výstup 4 |

| ------- | -------- | -------- | -------- | -------- | -------- |

| Vstup 0 | 34% | 34% | 34% | 34% | 34% | 34% | 34% |

| Vstup 1 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | Vstup 1

| Vstup 2 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34

| Vstup 3 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | Vstup 3

| Vstup 4 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34

Je zřejmé, že každý vstup má stejnou šanci být spojen s jakýmkoli výstupem, což posiluje důvěrnost transakce.

Boltzmannovo skóre se vypočítá vydělením počtu interpretací, v nichž se určitá událost vyskytne, celkovým počtem dostupných interpretací. Chceme-li tedy určit skóre spojující vstup č. 0 s výstupem č. 3 (událost se vyskytuje v 512$ interpretacích), postupujeme takto:

\begin{align*}
\text{Interpretations (IN.0 > OUT.3)} &= 512 \\
\text{Interpretations totales} &= 1496 \\
\text{Score} &= \frac{512}{1496} \\
\text{Score} &= 34 \%
\end{align*}

Vezmeme-li si příklad spojení Whirlpool 8x8 Surge Cycle, bude Boltzmannova tabulka vypadat takto:

| OUT.0 | OUT.1 | OUT.2 | OUT.3 | OUT.4 | OUT.5 | OUT.6 | OUT.7 |

|-------|-------|-------|-------|-------|-------|-------|-------|-------|

| IN.0 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

| IN.1 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

| IN.2 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

| IN.3 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

| IN.4 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

| IN.5 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

| IN.6 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

| IN.7 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |

V případě jednoduché transakce s jedním vstupem a dvěma výstupy je však situace jiná:

| Výstup 0 | Výstup 1 |

|---------|----------|----------|

| Vstup 0 | 100% | 100% |

Zde vidíme, že pravděpodobnost každého výstupu pocházejícího ze vstupu č. 0 je 100 %. Nižší pravděpodobnost tedy odráží větší důvěrnost, která rozmělňuje přímé vazby mezi vstupy a výstupy.

Deterministické odkazy

Můžeme také vypočítat počet deterministických spojení v transakci. Tento ukazatel ukazuje, kolik spojení mezi vstupy a výstupy v analyzované transakci je nezpochybnitelných, a to se 100% pravděpodobností. Tento ukazatel pak můžeme doplnit výpočtem poměru deterministických vazeb. Poměr poskytuje pohled na váhu těchto deterministických vazeb v rámci celkových vazeb transakce.

Například transakce Whirlpool coinjoin nemá žádné deterministické vazby mezi vstupy a výstupy, a proto se u ní zobrazí indikátor 0 vazeb a poměr 0 %. Naopak v naší druhé zkoumané jednoduché platební transakci (s jedním vstupem a 2 výstupy) nám indikátor říká, že existují 2 deterministické vazby, a poměr dosahuje 100 %. Jinými slovy, nulový ukazatel svědčí o vynikající důvěrnosti díky absenci přímých a nesporných vazeb mezi vstupy a výstupy.

Jak tyto ukazatele vypočítáváte?

Ruční výpočet těchto ukazatelů pomocí rovnic, které jsem uvedl, je poměrně jednoduchý. Obtížnost spočívá především ve stanovení počtu možných interpretací transakce. U klasické transakce lze tento výpočet provést ručně. Pro coinjoin je však tento úkol mnohem složitější.

Dříve existoval nástroj v jazyce Python s názvem Boltzmann Calculator, vyvinutý týmy OXT a Samourai, který automaticky vypočítával všechny tyto ukazatele pro transakci Bitcoin :

BTC204

Pro tyto analýzy bylo možné využít také webové stránky KYCP.org:

BTC204

Bohužel po zatčení zakladatelů společnosti Samourai již tyto nástroje nejsou funkční.

Nyní, když jsme se podrobně věnovali coinjoins, se v závěrečné části našeho kurzu podíváme na další techniky ochrany soukromí dostupné v Bitcoinu. Budeme se zabývat payjoiny, specifickými typy pseudo-coinjoin transakcí, protokoly statických adres a také opatřeními k posílení důvěrnosti nikoli na úrovni samotných transakcí, ale na úrovni sítě uzlů.

https://planb.network/tutorials/privacy/analysis/boltzmann-entropy-738e45af-18a6-4ce6-af1a-1bf58e15f1fe

Pochopení výzev dalších pokročilých technik utajení

Transakce Payjoin

Coinjoin je v současné době nejúčinnější metodou, jak vnést nejistotu do sledování částí v analýze řetězce. Jak jsme viděli v předchozích kapitolách, pro získání vysoce výkonného mixu musí být vstupy a výstupy co nejhomogennější. Kromě toho je důležité, aby byly součásti integrovány do co největší skupiny, aby se maximalizovaly anonsety. Aby tedy bylo coinjoins efektivní, musí zahrnovat velký počet stejnorodých částí. Toto množství požadavků znamená, že transakce coinjoin mají velmi pevnou strukturu: částky jsou předem pevně stanoveny a všichni účastníci je musí dodržovat, aby byla zaručena jednotnost procesu. Kromě toho coinjoiny vyžadují synchronizaci mezi všemi účastníky a koordinátorem během konstrukce transakce.

Kvůli těmto požadavkům je coinjoin pro přímé platby nevhodný. Například pokud máte v poolu coinjoin minci o hodnotě 1 milionu sats, bylo by její přímé použití jako platby složité. Vyžadovalo by to synchronizaci s ostatními účastníky a koordinátorem, který by sestavil společnou transakci přesně v okamžiku, kdy potřebujete provést platbu, a částka nákupu by musela přesně odpovídat hodnotě vaší mince, což je prakticky neproveditelné. Transakce coinjoin je tedy ze své podstaty kolaborativní sweep transakcí, tj. většinou se jedná o stejné vlastníky vstupů, které najdeme na výstupech.

Bylo by však zajímavé mít takové struktury transakcí, které by umožňovaly praktické provádění plateb a zároveň vnášely pochybnosti do analýzy řetězců. Právě tím se budeme zabývat v této a následující kapitole.

Co je to transakce payjoin?

Payjoin je specifická struktura transakce Bitcoin, která zvyšuje soukromí uživatele při utrácení tím, že spolupracuje s příjemcem platby.

Poprvé v roce 2015 LaurentMT popsal tuto metodu pod označením "steganographic transactions", jak je uvedeno v dokumentu dostupném zde. Tuto techniku následně převzala peněženka Samourai Wallet, která ji v roce 2018 jako první klient implementovala pomocí nástroje Stowaway. Koncept payjoinu lze rovněž nalézt v BIP79, BIP78 a BIP77. Pro označení payjoinu se tak používá několik různých termínů:

Zvláštnost payjoinu spočívá v tom, že dokáže vygenerovat transakci, která se na první pohled zdá být obyčejná, ale ve skutečnosti se jedná o mini coinjoin mezi dvěma lidmi. Aby toho bylo dosaženo, zahrnuje struktura transakce příjemce platby do vstupů vedle skutečného odesílatele. Příjemce tak doprostřed transakce zahrne platbu sobě samému, která mu sama o sobě umožňuje, aby mu bylo zaplaceno.

Pro lepší pochopení tohoto procesu si uveďme příklad. Alice si koupí bagetu za 4 000 sátů s využitím UTXO 10 000 sátů a rozhodne se pro payjoin. Její pekař Bob přidá jako vstup UTXO v hodnotě 15 000 sats, které mu patří, a které získá zpět v plné výši jako výstup, navíc k Aliciným 4 000 sats.

BTC204

V tomto příkladu pekař Bob zadá na vstupu 15 000 satů a na výstupu 19 000 satů, přičemž rozdíl je přesně 4 000 satů, tj. cena bagety. Na straně Alice vstupuje 10 000 satů a na výstupu končí s 6 000 satů, což představuje zůstatek -4 000 satů, tj. cenu bagety. Pro zjednodušení příkladu jsem v této transakci záměrně vynechal náklady na těžbu.

K čemu je payjoin?

Transakce payjoin plní dva cíle a umožňuje uživatelům zvýšit důvěrnost jejich platby.

Za prvé, payjoin se snaží uvést vnějšího pozorovatele v omyl tím, že v analýze řetězce vytvoří návnadu. To umožňuje heuristika CIOH (Common Input Ownership Heuristic). Jak jsme viděli v části 3, obvykle, když má transakce v blockchainu několik vstupů, se předpokládá, že všechny tyto vstupy patří stejnému subjektu nebo uživateli.

Když tedy analytik zkoumá transakci payjoin, je přesvědčen, že všechny vstupy pocházejí od stejné osoby. Tento dojem je však mylný, protože na vstupech se vedle skutečného plátce podílí také příjemce. Analýza řetězce je proto odkloněna k interpretaci, která se ukáže jako nesprávná.

Vezměme si náš příklad transakce payjoin pro platbu bagety:

BTC204

Při pohledu na tuto transakci v blockchainu by vnější pozorovatel, který by se řídil obvyklou heuristikou analýzy blockchainu, provedl následující interpretaci: "Alice sloučila 2 UTXO jako vstupy do transakce, aby zaplatila 19 000 sátů Bobovi".

BTC204

Tento výklad je samozřejmě nesprávný, protože jak již víte, dvě UTXO na vstupech nepatří stejné osobě. Jeden pochází od Alice, kupující bagety, a druhý od Boba, pekaře.

BTC204

Tímto způsobem je analýza externího pozorovatele nasměrována k chybnému závěru, čímž je zajištěno zachování důvěrnosti zúčastněných stran.

Steganografická transakce

Druhým účelem payjoin je uvést vnějšího pozorovatele v omyl ohledně skutečné výše provedené platby. Při zkoumání struktury transakce by se analytik mohl domnívat, že platba odpovídá částce jednoho z výstupů.

Vrátíme-li se k našemu příkladu nákupu bagety, bude si analytik myslet, že částka platby odpovídá buď UTXO 6 000 sátů, nebo UTXO 19 000 sátů. V tomto případě si analytik bude spíše myslet, že částka platby odpovídá 19 000 sats, protože ve výstupech jsou 2 UTXO, z nichž alespoň jedno je větší než 6 000 sats (není žádný logický důvod používat 2 UTXO k platbě 6 000 sats, když by k uspokojení této platby stačilo jediné UTXO).

BTC204

Ve skutečnosti je však tato analýza chybná. Výše platby neodpovídá žádnému z výstupů. Ve skutečnosti je to rozdíl mezi UTXO příjemce na výstupu a UTXO příjemce na vstupu.

BTC204

V tomto ohledu transakce payjoin spadá do oblasti steganografie. Umožňuje skrýt skutečnou částku transakce v rámci falešné transakce, která funguje jako návnada.

Steganografie je technika skrývání informací v jiných datech nebo objektech tak, aby přítomnost skrytých informací nebyla patrná. Tajnou zprávu lze například skrýt do tečky v nesouvisejícím textu, takže ji pouhým okem nelze odhalit (jedná se o techniku microdot).

Na rozdíl od šifrování, které bez dešifrovacího klíče činí informace nesrozumitelnými, steganografie informace nemění. Zůstává zobrazena v čistém textu. Jejím cílem je spíše utajit samotnou existenci tajné zprávy, zatímco šifrování jasně odhaluje přítomnost skryté informace, i když bez klíče nepřístupné. Proto byl původní název payjoin "steganografické transakce".

Lze najít analogii mezi kryptografií a coinjoin a mezi steganografií a payjoin. Coinjoin má podobné vlastnosti jako šifrování: metoda je rozpoznatelná, ale informace jsou nerozluštitelné. Naopak payjoin má podobné vlastnosti jako steganografie: informace je teoreticky přístupná, ale protože metoda utajení není rozpoznatelná, stává se nedostupnou.

Jak mohu používat službu payjoin?

Mezi známé programy, které podporují payjoin, patří Sparrow Wallet, Wasabi Wallet, Mutiny, BitMask, BlueWallet a JoinMarket, stejně jako platební procesor BTCPay.

BTC204

Nejpokročilejší implementací payjoin byl pouze Stowaway na Samourai Wallet. Od zatčení zakladatelů softwaru je však tento nástroj nyní funkční jen částečně. Výhodou Stowaway je, že se jedná o komplexní, snadno použitelný protokol, který podporuje příjem i odesílání payjoinů. Částečně podepsané transakce lze vyměňovat ručně naskenováním několika QR kódů nebo automaticky pomocí Toru přes Soroban. Druhá možnost komunikace je v současné době mimo provoz.

BTC204

Potíž při používání služby payjoin spočívá v její závislosti na účasti obchodníka. Jako zákazník nemůžete payjoin používat, pokud jej obchodník nepodporuje. To přidává k procesu nákupu další obtíže: nejenže je obtížné najít obchodníky, kteří přijímají bitcoiny, ale pokud hledáte i ty, kteří payjoin podporují, je to ještě složitější.

Jedním z řešení by bylo použití transakčních struktur, které do analýzy řetězce vnášejí nejednoznačnost, aniž by vyžadovaly spolupráci příjemce. To by nám umožnilo zvýšit důvěrnost našich plateb, aniž bychom se museli spoléhat na aktivní účast obchodníků. Právě na to se zaměříme v následující kapitole.

https://planb.network/tutorials/privacy/on-chain/payjoin-sparrow-wallet-087a0e49-61cd-41f5-8440-ac7b157bdd62

https://planb.network/tutorials/privacy/on-chain/payjoin-samourai-wallet-48a5c711-ee3d-44db-b812-c55913080eab

Platba mini-coinjoin

Pokud chcete provést platební transakci při zachování určitého stupně důvěrnosti, je payjoin dobrou volbou. Jak jsme si však právě ukázali, payjoin vyžaduje zapojení příjemce. Co tedy dělat, když se příjemce odmítne payjoin zúčastnit nebo když ho prostě raději nezapojíte? Jednou z alternativ je použití transakce Stonewall nebo Stonewall x2. Podívejme se na tyto dva typy transakcí blíže.

Transakce Stonewall

Stonewall je specifická forma transakce s bitcoiny, která má zvýšit důvěrnost uživatelů při utrácení tím, že imituje pseudo-coinjoin mezi dvěma lidmi, aniž by jím ve skutečnosti byl. Ve skutečnosti tato transakce není společná. Uživatel si ji může vytvořit sám a jako vstupy použít pouze UTXO, které vlastní. Můžete tedy vytvořit transakci Stonewall pro jakoukoli příležitost, aniž byste se museli synchronizovat s jiným uživatelem nebo příjemcem.

Transakce Stonewall funguje následovně: emitent použije jako vstup do transakce 2 UTXO, které mu patří. Na výstupu transakce vzniknou 4 UTXO, z nichž 2 jsou přesně ve stejné výši. Zbývající 2 UTXO budou tvořit cizí měnu. Ze 2 výstupů o stejné částce půjde příjemci skutečně pouze jeden.

V transakci Stonewall jsou tedy pouze 2 role:

Podívejme se na příklad, abychom tuto strukturu transakce pochopili. Alice si jde k pekaři Bobovi koupit bagetu, která stojí 4 000 satů. Chce zaplatit v bitcoinech, přičemž chce zachovat určitou formu důvěrnosti ohledně své platby. Rozhodne se tedy pro tuto platbu sestavit transakci Stonewall.

BTC204

Analýzou této transakce zjistíme, že pekař Bob ve skutečnosti obdržel za bagetu 4 000 satů. Alice použila jako vstupy 2 UTXO: jeden za 10 000 sátů a druhý za 15 000 sátů. Na výstupech získala 3 UTXO: jeden za 4 000 sats, jeden za 6 000 sats a jeden za 11 000 sats. Alice má tedy z této transakce čistý zůstatek -4 000 sátů, což odpovídá ceně bagety.

V tomto příkladu jsem záměrně zanedbal poplatky za těžbu, aby byl příklad srozumitelnější. Ve skutečnosti nese transakční náklady výhradně emitent.

Jaké jsou cíle transakce Stonewall?

Struktura Stonewall přidává do transakce obrovské množství entropie a rozmazává linie řetězové analýzy. Při pohledu zvenčí by taková transakce mohla být interpretována jako minipřipojení mincí mezi dvěma lidmi. Ve skutečnosti se však jedná o platbu. Tato metoda proto vytváří nejistoty v analýze řetězce, nebo dokonce vede k falešným stopám.

Vezměme si příklad Alice u pekaře Boba. Transakce v blockchainu by vypadala takto:

BTC204

Vnější pozorovatel, který se spoléhá na běžnou heuristiku analýzy řetězce, by mohl chybně dojít k závěru, že "dva lidé vytvořili malý coinjoin, každý s jedním UTXO na vstupu a dvěma UTXO na výstupu". Analýza této transakce zvenčí nevede k aplikaci CIOH, protože přítomnost dvou výstupů o stejné výši naznačuje vzor coinjoin. Z vnějšího pohledu se tedy CIOH v tomto konkrétním případě neuplatní.

BTC204

Tato interpretace je nepřesná, protože, jak víte, jeden UTXO byl poslán pekaři Bobovi, 2 vstupy UTXO pocházely od Alice a ta získala 3 výměnné výstupy.

BTC204

Na struktuře transakce Stonewall je zajímavé zejména to, že z pohledu vnějšího pozorovatele se ve všech ohledech podobá transakci Stonewall x2.

Transakce Stonewall x2

Stonewall x2 je další specifická forma transakce s bitcoiny, jejímž cílem je rovněž zvýšit důvěrnost uživatelů při utrácení, tentokrát však ve spolupráci s třetí osobou, která se na utrácení nepodílí. Tato metoda funguje jako pseudo-coinjoin mezi dvěma účastníky a zároveň provádí platbu třetí osobě.

Fungování transakce Stonewall x2 je poměrně jednoduché: k provedení platby použijeme UTXO, který vlastníme, a požádáme o pomoc třetí stranu, která rovněž přispěje UTXO, který jí patří. Transakce končí čtyřmi výstupy: dva z nich jsou ve stejné výši, jeden je určen pro adresu příjemce platby, druhý pro adresu patřící spolupracovníkovi. Třetí UTXO se vrací na jinou adresu patřící spolupracovníkovi, což mu umožňuje získat zpět počáteční částku (pro něj neutrální akce, modulovaná náklady na těžbu), a poslední UTXO se vrací na adresu patřící nám, což představuje platební výměnu.

V transakcích Stonewall x2 jsou tak definovány tři různé role:

Vraťme se k našemu příkladu s Alicí, která si jde k pekaři Bobovi koupit bagetu, která stojí 4 000 satů. Chce platit v bitcoinech, přičemž chce zachovat určitou úroveň důvěrnosti ohledně své platby. Zavolá tedy svého přítele Charlese, který jí v tomto procesu pomůže.

BTC204

Analýzou této transakce zjistíme, že pekař Bob ve skutečnosti obdržel za bagetu 4 000 satů. Alice použila 10 000 satů na vstupu a získala zpět 6 000 satů na výstupu, tj. čistý zůstatek -4 000 satů, což odpovídá ceně bagety. Pokud jde o Charlese, ten poskytl 15 000 satů na vstupu a získal dva výstupy: jeden ve výši 4 000 satů a druhý ve výši 11 000 satů, což dává saldo 0.

V tomto příkladu jsem záměrně vynechal poplatky, aby to bylo srozumitelnější. Ve skutečnosti se poplatky za těžbu obecně dělí rovným dílem mezi vydavatele platby a přispěvatele.

Jaké jsou cíle transakce Stonewall x2?

Stejně jako struktura Stonewall přidává struktura Stonewall x2 do transakce velké množství entropie a mate řetězovou analýzu. Při pohledu zvenčí lze takovou transakci interpretovat jako malý coinjoin mezi dvěma lidmi. Ve skutečnosti se však jedná o platbu. Tato metoda proto vytváří nejistotu v analýze řetězce, nebo dokonce vede k falešným stopám.

Vezměme si příklad Alice, pekaře Boba a Charlese. Transakce v blockchainu by vypadala takto:

BTC204

Vnější pozorovatel, který se spoléhá na běžnou heuristiku řetězové analýzy, by mohl chybně dojít k závěru, že "Alice a Charles provedli malé spojení s jedním UTXO na vstupu a dvěma UTXO na výstupu". Analýza této transakce zvenčí opět nevede k aplikaci ICOH, protože přítomnost dvou výstupů o stejné výši naznačuje vzor coinjoin. Z vnějšího pohledu se tedy CIOH v tomto konkrétním případě neuplatní.

BTC204

Tato interpretace je nesprávná, protože, jak víte, pekaři Bobovi bylo odesláno jedno UTXO, Alice má pouze jeden výměnný výstup a Charles má dva.

BTC204

A opět je na struktuře transakce Stonewall x2 obzvláště zajímavé to, že z pohledu vnějšího pozorovatele se v každém ohledu podobá transakci Stonewall.

Jaký je rozdíl mezi Stonewall a Stonewall x2?

Transakce StonewallX2 funguje úplně stejně jako transakce Stonewall s tím rozdílem, že první z nich je kolaborativní, zatímco druhá ne. Jak jsme viděli, transakce Stonewall x2 zahrnuje účast třetí strany (Charles), která je vůči platbě externí a která dá k dispozici své bitcoiny, aby zvýšila důvěrnost transakce. V klasické Stonewall transakci přebírá roli spolupracovníka odesílatel.

BTC204

Z vnějšího pohledu je vzor transakce naprosto stejný.

BTC204

Skutečnost, že tyto dvě transakční struktury mají přesně stejný vzor, znamená, že i když se vnějšímu pozorovateli podaří identifikovat vzor "Stonewall(x2)", nebude mít k dispozici všechny informace. Nebude schopen určit, kterému ze dvou UTXO stejných částek odpovídá platba. Navíc nebude schopen určit, zda obě UTXO se vstupy pocházejí od dvou různých osob (Stonewall x2), nebo zda patří jedné osobě, která je sloučila (Stonewall).

Tento poslední bod je způsoben skutečností, že transakce Stonewall x2 probíhají přesně podle stejného schématu jako transakce Stonewall. Při pohledu zvenčí a bez dalších kontextových informací není možné odlišit transakci Stonewall od transakce Stonewall x2. První z nich nejsou transakcemi spolupráce, zatímco druhé ano. To přidává analýze jedné z těchto transakcí ještě více pochybností.

Kdy se mají používat transakce Stonewall a Stonewall x2?

Pokud chcete použít nástroj pro utajení výdajů, měla by být logika následující:

Jak mohu používat transakce Stonewall a Stonewall x2?

Transakce Stonewall a Stonewall x2 jsou dostupné v aplikaci Samourai Wallet i v softwaru Sparrow Wallet.

BTC204

Stejně jako v případě payjoins však po zatčení zakladatelů společnosti Samourai fungují transakce Stonewall x2 nyní pouze na základě ruční výměny PSBT mezi zúčastněnými stranami. Automatická výměna prostřednictvím Sorobanu již bohužel není k dispozici.

Tento typ transakce je možné provést také ručně z libovolného softwaru bitcoinové peněženky.

V příští kapitole se podíváme na další techniku utajení, která je poměrně neznámá, ale je velmi užitečná jako doplněk k tomu, co jsme již studovali.

https://planb.network/tutorials/privacy/on-chain/stonewall-033daa45-d42c-40e1-9511-cea89751c3d4

https://planb.network/tutorials/privacy/on-chain/stonewall-x2-05120280-f6f9-4e14-9fb8-c9e603f73e5b

Rikošky

Použití struktur transakcí bitcoinu, které přidávají nejednoznačnost analýze řetězce, jako je coinjoin, je obzvláště výhodné pro ochranu soukromí. Jak jsme však uvedli v kapitole o payjoin, transakce coinjoin jsou v řetězci přirozeně identifikovatelné. Vzpomeňte si na analogii, kterou jsme uvedli mezi šifrováním a coinjoiny: když je soubor zašifrován, třetí strana, která objeví zašifrovaný soubor, nemůže získat přístup k jeho obsahu, ale může jasně identifikovat, že soubor byl upraven tak, aby se jeho obsah skryl. Totéž platí pro coinjoin: když analytik zkoumá transakci coinjoin, nemůže sice zjistit přímé vazby mezi vstupy a výstupy (a naopak), nicméně může rozpoznat, že pozorovaná transakce je coinjoin.

V závislosti na tom, jak hodláte díl po cyklech coinjoin používat, může být skutečnost, že prošel tímto procesem, problematická. Pokud například plánujete prodat svou minci na regulované burzovní platformě, ale nedávno prošla coinjoinem, nástroj pro analýzu řetězce platformy tuto skutečnost zjistí. Platforma pak může odmítnout přijmout váš coinjoin UTXO, nebo po vás dokonce může požadovat vysvětlení, přičemž hrozí, že váš účet bude pozastaven nebo vaše prostředky zmrazeny. V některých případech může platforma vaše chování také nahlásit státním orgánům (to například vyžaduje TRACFIN od PSAN ve Francii).

BTC204

Abychom tomu zabránili, potřebujeme nástroj, který by dokázal zahladit stopy minulosti bitcoinové mince a obnovit tak určitou formu zastupitelnosti. Právě k tomu slouží ricochet.

BTC204

Co je to ricochet?

Rikošet je technika spočívající v provedení několika fiktivních transakcí vůči sobě (sweep), která simuluje převod vlastnictví bitcoinů. Tento nástroj se od ostatních transakčních struktur, o kterých jsme hovořili, liší tím, že nezískává prospektivní anonymitu, ale spíše formu retrospektivní anonymity. Ve skutečnosti ricochet rozmazává specifika, která mohou ohrozit zaměnitelnost bitcoinové mince vzhledem k její minulosti.

Aby se vyhladil otisk, který na minci zanechala minulá událost, například cykly spojování mincí, provede ricochet čtyři po sobě jdoucí transakce, při nichž si uživatel převede prostředky na různé adresy.

BTC204

Po této sekvenci transakcí nástroj ricochet nakonec bitcoiny přesměruje na místo určení, například na výměnnou platformu.

BTC204

Cílem je vytvořit odstup ovlivňující zaměnitelnost mince, například při transakci coinjoin, a konečný výdajový akt, který by mohl tuto minci odmítnout kvůli její minulosti. Nástroje řetězové analýzy by tak mohly dojít k závěru, že po této události pravděpodobně došlo ke změně vlastníka, a považovat tuto minci za zaměnitelnou. V případě transakce coinjoin by pak nástroje pro analýzu blockchainu mohly předpokládat, že se nejedná o stejnou osobu, která odeslala bitcoiny a provedla coinjoin, a že tedy nemá smysl podnikat kroky proti odesílateli.

BTC204

Proč to funguje?

V souvislosti s touto metodou ricochetů si lze představit, že by software pro analýzu řetězců mohl prohloubit své zkoumání nad rámec čtyř odrazů. Tyto platformy však čelí dilematu při optimalizaci detekčního prahu. Musí stanovit limit počtu skoků, po kterém akceptují, že pravděpodobně došlo ke změně vlastnosti a že spojení s předchozí událostí (např. coinjoin) by mělo být ignorováno.

BTC204

Nastavení tohoto prahu je však riskantní: každé rozšíření počtu pozorovaných skoků exponenciálně zvyšuje objem falešně pozitivních výsledků, tj. osob chybně označených za účastníky události, i když ve skutečnosti operaci provedl někdo jiný. Tento scénář představuje pro tyto společnosti velké riziko, protože falešně pozitivní výsledky vedou k nespokojenosti, která může postižené zákazníky přivést ke konkurenci. Z dlouhodobého hlediska vede příliš vysoký práh detekce k tomu, že platforma ztrácí více zákazníků než její konkurenti, což může ohrozit její životaschopnost. Pro tyto platformy je proto komplikované zvyšovat počet zjištěných odchylek, přičemž 4 je často dostatečný počet, aby bylo možné jejich analýzy vyvrátit.

Pozorovaný jev je do jisté míry analogický teorii šesti stupňů odloučení.

Teorie šesti stupňů odloučení předpokládá, že každý člověk na Zemi je spojen s jakýmkoli jiným člověkem řetězcem vztahů, který se skládá nejvýše ze šesti prostředníků. Stačilo by tedy projít řadou šesti lidí, z nichž každý osobně zná dalšího, abychom se dostali ke kterémukoli jednotlivci na světě.

V případě transakcí s bitcoiny se setkáváme s podobným jevem. Při sledování dostatečného počtu transakcí Bitcoinu nevyhnutelně narazíme na coinjoin. Metoda ricochet využívá tohoto principu tím, že používá větší počet skoků, než jsou směnné platformy schopny rozumně sledovat. Pokud se platformy rozhodnou sledovat více transakcí, je pak možné jednoduše přidat další hop a toto opatření obejít.

Kdy a jak používat ricochet?

Nejběžnější případ použití ricochetu nastává, když je třeba zakrýt předchozí účast v coinjoinu na UTXO, které vlastníte. V ideálním případě je nejlepší vyhnout se převodu bitcoinů, které prošly coinjoinem, na regulované subjekty. Nicméně v případě, že se ocitnete bez jiné možnosti, zejména při naléhavé potřebě likvidace bitcoinů ve státní měně, nabízí ricochet účinné řešení.

Tato metoda je účinná nejen pro koincidenční spoje, ale také pro jakoukoli jinou značku, která by mohla ohrozit zaměnitelnost dílu.

S nápadem na tuto metodu ricochet původně přišly týmy společnosti Samourai Wallet, které ji integrovaly do své aplikace, aby proces automatizovaly. Služba není na Samourai zdarma, protože ricochet zahrnuje poplatek za službu ve výši 100 000 sátů plus náklady na těžbu. Její použití se proto doporučuje pro převody významných částek.

BTC204

Aplikace Samurai nabízí dvě varianty ricochetů:

BTC204 BTC204

Ricocheting jednoduše znamená, že si bitcoiny posíláte sami. Je naprosto možné ricochetovat bitcoiny ručně v jakémkoli softwaru peněženky, bez použití specializovaného nástroje. Stačí si postupně přeposílat stejné mince, pokaždé s použitím nové, prázdné adresy.

V další kapitole se podíváme na různé techniky tajných převodů vlastnictví. Tyto metody se zásadně liší od těch, které jsme zkoumali doposud, a to jak z hlediska fungování, tak z hlediska výsledků.

https://planb.network/tutorials/privacy/on-chain/ricochet-e0bb1afe-becd-44a6-a940-88a463756589

Tajné převody vlastnictví

Další z technik důvěrnosti bitcoinu je tajný převod vlastnictví. Cílem této metody je převést vlastnictví bitcoinů z jedné osoby na druhou a naopak, aniž by transakce byla explicitně viditelná v blockchainu. Podívejme se na různé dostupné techniky spolu s jejich výhodami a nevýhodami.

Výměna mincí

Coinwap je založen na poměrně jednoduchém konceptu: využívá chytré smlouvy k usnadnění převodu vlastnictví bitcoinů mezi dvěma uživateli, aniž by byla nutná důvěra a aniž by tento převod byl explicitně viditelný v blockchainu.

BTC204

Představme si naivní příklad s Alicí a Bobem. Alice má 1 BTC zabezpečený soukromým klíčem A a Bob má také 1 BTC zabezpečený soukromým klíčem B. Teoreticky by si mohli vyměnit své soukromé klíče prostřednictvím externího komunikačního kanálu a provést tajný převod.

BTC204

Tato naivní metoda však představuje vysoké riziko z hlediska důvěryhodnosti. Nic nebrání tomu, aby si Alice po výměně ponechala kopii soukromého klíče A a později ji použila ke krádeži bitcoinů, jakmile se klíč dostane do Bobových rukou.

BTC204

Navíc není zaručeno, že Alice neobdrží Bobův soukromý klíč B a nepředá mu výměnou svůj soukromý klíč A. Tato výměna tedy závisí na přílišné důvěře mezi stranami a je neúčinná při zajišťování bezpečného tajného převodu vlastnictví.

BTC204

Abychom tyto problémy vyřešili a umožnili výměnu mezi stranami, které si navzájem nedůvěřují, použijeme místo toho systémy chytrých smluv. Chytrá smlouva je program, který se automaticky spustí, když jsou splněny předem definované podmínky. V našem případě zajistí, že výměna majetku proběhne automaticky, bez nutnosti vzájemné důvěry.

Toho lze dosáhnout pomocí HTLC (Hash Time-Locked Contracts) nebo PTLC (Point Time-Locked Contracts). Tyto dva protokoly fungují podobným způsobem a používají systém časového zámku, který zajišťuje, že výměna bude buď úspěšně dokončena, nebo zcela zrušena, čímž je chráněna integrita prostředků obou stran. Hlavní rozdíl mezi HTLC a PTLC spočívá v tom, že HTLC používá k zabezpečení transakce hashe a předobrazy, zatímco PTLC používá podpisy adaptérů.

Ve scénáři výměny mincí pomocí HTLC nebo PTLC mezi Alicí a Bobem probíhá výměna bezpečně: buď se podaří a každý obdrží BTC toho druhého, nebo se nepodaří a každý si ponechá svůj vlastní BTC. Tím je znemožněno, aby kterákoli ze stran podváděla nebo ukradla BTC druhé strany.

HTLC je také mechanismus používaný k bezpečnému směrování plateb prostřednictvím obousměrných kanálů sítě Lightning Network V této souvislosti je obzvláště zajímavé použití signatur adaptérů, protože umožňuje obejít se bez tradičních skriptů (tento mechanismus se někdy označuje jako "scriptless scripts"). Tato funkce snižuje náklady spojené s výměnou. Další významnou výhodou Adaptor Signatures je, že nevyžadují použití společného hashe pro obě strany transakce, čímž se v určitých typech výměny vyhýbají nutnosti odhalit přímé spojení mezi nimi.

Podpisy adaptérů

Adaptační podpisy jsou kryptografickou metodou, která integruje platný podpis s dalším podpisem, nazývaným "adaptační podpis", a odhaluje tak tajná data. Tento mechanismus je navržen tak, že znalost dvou ze tří následujících prvků: platného podpisu, adaptorového podpisu a tajného údaje, umožňuje odvodit chybějící třetí prvek. Zajímavou vlastností této metody je, že pokud známe podpis adaptéru našeho kolegy a konkrétní bod na eliptické křivce spojený s tajemstvím použitým k výpočtu tohoto podpisu adaptéru, můžeme odvodit vlastní podpis adaptéru, který bude kompatibilní s týmž tajemstvím, aniž bychom měli přímý přístup k samotnému tajemství.

Při výměně mincí umožňuje použití Adaptor Signatures současné zveřejnění dvou citlivých informací mezi účastníky, čímž odpadá potřeba vzájemné důvěry. Uveďme příklad, který tento proces ilustruje na příkladu Alice a Boba, kteří si chtějí vyměnit vlastnictví 1 BTC každý, ale navzájem si nedůvěřují. Při této výměně použijí Adaptor Signatures, aby eliminovali potřebu vzájemné důvěry. Zde je uveden jejich postup:

s_A = n_A + t + H(N_A + T \paralelní P_A \paralelní m_A) \cdot p_A

s_A' = s_A - t

s_A' \cdot G = N_A + H(N_A + T \paralelní P_A \paralelní m_A) \cdot P_A

s_B' = n_B + H(N_B + T \paralelní P_B \paralelní m_B) \cdot p_B

s_B = s_B' + t

(s_B' + t) \cdot G = N_B + T + H(N_B + T \paralelní P_B \paralelní m_B) \cdot P_B

t = (s_B' + t) - s_B' = s_B - s_B'

s_A = s_A' + t

(s_A' + t) \cdot G = N_A + T + H(N_A + T \paralelní P_A \paralelní m_A) \cdot P_A

Shrňme si, jak funguje podpis adaptéru při výměně mincí. Na začátku Alice pošle Bobovi nepodepsanou transakci doplněnou adaptérem, který Bobovi umožní ověřit, že později odhalené tajemství mu umožní přístup k bitcoinům. Bob na oplátku pošle Alici svou vlastní nepodepsanou transakci a adaptér. Alice pak může dokončit Bobovu transakci a získat bitcoiny odvysíláním platné transakce díky tajemství. Když je tato transakce zveřejněna v blockchainu, Bob má možnost získat tajemství a tím odemknout Alicinu transakci. V důsledku toho, pokud Alice iniciuje převod Bobových bitcoinů, může Bob naopak získat přístup k Aliciným bitcoinům bez nutnosti vzájemné důvěry.

Všimněte si, že výměnu mincí poprvé navrhl Gregory Maxwell v říjnu 2013 na BitcoinTalk.

Atomová výměna

Podobně jako u coinswapu a s využitím stejných typů chytrých smluv je možné provádět i atomické swapy. Atomický swap umožňuje přímou výměnu různých kryptoměn, například BTC a XMR, mezi dvěma uživateli bez nutnosti důvěry nebo zásahu zprostředkovatele. Tyto výměny se označují jako "atomické", protože mají pouze dva možné výsledky: buď je swap úspěšný a obě strany jsou spokojené, nebo se nezdaří a každá si ponechá své původní kryptoměny, čímž odpadá nutnost důvěřovat druhé straně.

BTC204

Atomic swap a coinswap mají podobný způsob fungování a nabízejí stejné výhody i nevýhody z hlediska důvěrnosti. Z pohledu Bitcoinu je totiž atomický swap srovnatelný s coinswapem prováděným ve dvou fázích. Nejprve vyměníme svůj BTC za jinou kryptoměnu, poté lze tuto kryptoměnu směnit za jiné BTC. Nakonec získáme zpět BTC jiného uživatele. Proto v analýze otázek důvěrnosti řadím tyto dva protokoly do kategorie vlastních tajných výměn.

BTC204

Pozor však na to, že na rozdíl od coinswapu může být atomový swap nerovnovážný, pokud jde o dostupnou likviditu, zejména na burzách BTC/XMR. Obecně je snazší vyměnit bitcoiny za altcoiny, protože po bitcoinech je silná poptávka, která udržuje prémie za tento směr konverze nízké. Výměna altcoinů za BTC však může být kvůli nižší poptávce složitější, což často vede k velmi vysokým prémiím.

A konečně, pokud atomická výměna zahrnuje bitcoiny v řetězci a bitcoiny v síti Lightning, hovoříme o "podmořské výměně".

Je to opravdu užitečné?

Tajné převody vlastnictví, jako je výměna mincí a výměna atomů, mají tu výhodu, že obelstí heuristiku řetězové analýzy. Tyto metody mohou naznačovat, že transakce se týkají stejného uživatele, zatímco skutečné vlastnictví změnilo majitele. Hlavní nevýhodou těchto metod však je, že jsou velmi riskantní bez použití další techniky k prolomení historie mince.

Když Alice provede výměnu mincí nebo atomickou výměnu s Bobem, vymění si své bitcoiny za Bobovy. V případě atomického swapu výměna zahrnuje altcoin, ale princip zůstává stejný. Alice tedy skončí s mincí B a Bob s mincí A. To přidává pochybnosti do analýzy řetězce, ale historie mincí zůstává dohledatelná. Pokud analytik prozkoumá část A, může dohledat předchozí aktivity Alice a naopak u části B.

BTC204

Z pohledu Alice hrozí, že historie mince B může být některými subjekty považována za podezřelou. Pokud by například Bob získal minci B trestným činem, například hackerským útokem, mince by zůstala spojena s jeho nelegální činností. Alice by se pak mohla ocitnout v držení mince, kterou by nemohla převést na regulované směnárenské platformy, aniž by riskovala zmrazení svých prostředků, nebo dokonce obvinění z Bobových trestných činů, přestože s nimi nemá nic společného.

BTC204

Zločinci, jejichž finanční prostředky jsou pod dohledem úřadů, nevyhnutelně upřednostňují metody utajení, jako je výměna mincí nebo atomová výměna. Tyto protokoly jim umožňují zbavit se sledovaných bitcoinů výměnou za dokonale zastupitelné bitcoiny. Umožňují jim také odvést pozornost tím, že úřady nasměrují na jiné uživatele. Tito lidé tak mají dvojí účel.

I když je vaše mince smíchána s monitorovanými bitcoiny, historie mince je přerušena, což poskytuje formu věrohodného popření, která neexistuje u protokolů tajného převodu vlastnictví, jako je coinswap nebo atomic swap.

BTC204

Pokud se chce Alice vyhnout jakémukoli riziku, musí nutně použít metodu, která přeruší historii mince B, například její předání přes coinjoins. To vyvolává otázku o užitečnosti kombinace tajného převodu vlastnictví a coinjoinu. Coinjoin tím, že prolamuje historii mince, již Alici poskytuje dostatečnou úroveň utajení. Můj názor je tedy takový, že pokud chce Alice chránit své soukromí, bylo by moudřejší přistoupit přímo k coinjoinu, než se zapojit do výměny mincí a následně do coinjoinu.

Aby byly metody tajného převodu vlastnictví skutečně účinné a aby se zabránilo riziku propojení historie uživatele A s uživatelem B, bylo by paradoxně nutné, aby jejich použití bylo všeobecně známé. Pokud se coinswap masově používá a úřady o této běžné praxi vědí, pak by bylo možné zavést věrohodnou formu popírání. Dokud však bude používání těchto převodů okrajové, myslím, že tyto metody budou pro uživatele příliš rizikové.

Doposud jsme se zabývali především metodami utajení na úrovni samotných transakcí. V příští kapitole se budeme zabývat otázkami na úrovni sítě a šířením transakcí.

Ochrana soukromí v síti P2P

V části 4 jsme se zabývali důležitostí používání kompletního uzlu pro ochranu důvěrnosti vašich transakcí. Je však důležité si uvědomit, že váš uzel může být sám předmětem útoků, které se snaží získat informace o vašich aktivitách. V této kapitole se proto podíváme na různá opatření, která můžete přijmout k ochraně svého soukromí, a to nikoli na úrovni samotných transakcí nebo toků bitcoinů, ale na úrovni sítě.

Pampeliška

Jedním ze způsobů, jak se vyhnout různým deanonymizačním útokům, je použití návrhu Dandelion. Tento vysílací protokol byl formalizován v BIP156, ale nikdy nebyl implementován v Bitcoinu.

Myšlenkou projektu Dandelion je zlepšit důvěrnost směrování transakcí v síti Bitcoin a čelit tak různým formám útoků. Jeho hlavním cílem je skrýt zdrojový uzel, který transakci v síti původně vysílal. Odhalení tohoto uzlu by mohlo umožnit spojit transakci v Bitcoinech s konkrétní IP adresou (pokud uzel funguje v síti clearnet), což by mohlo poskytnout vstupní bod pro analýzu řetězce.

Toto spojení mezi aktivitou na Bitcoinu a IP adresou představuje značné riziko pro důvěrnost informací o uživateli. Mnoho subjektů totiž může snadno spojit IP adresu s osobní identitou. Patří mezi ně vlády a poskytovatelé internetových služeb. Navíc se tyto informace mohou stát veřejně přístupnými, například pokud dojde k úniku IP adresy a osobních údajů při hackerském útoku do databáze webové stránky.

Při klasickém provozu Bitcoinu se transakce vytvořené uživatelem v jeho peněžence přenášejí do jeho osobního uzlu. Tento uzel novou transakci okamžitě rozešle všem peerům, ke kterým je připojen.

BTC204

Tito kolegové pak transakci zkontrolují, aby se ujistili, že je v souladu s konsensem a místními pravidly standardizace. Jakmile je transakce ověřena, každý peer ji předá svým peerům a tak dále.

BTC204

Toto rozložení transakcí čekajících na začlenění do bloku je poměrně vyvážené a statisticky předvídatelné. Tuto slabinu mohou zneužít komplicové špionážních uzlů, kteří spolupracují na monitorování a analýze sítě, aby identifikovali první uzel, který transakci odvysílal. Pokud se pozorovateli podaří lokalizovat zdrojový uzel, může předpokládat, že transakce pochází od operátora tohoto uzlu. Tento typ pozorování lze použít k propojení běžně anonymních transakcí s konkrétními IP adresami.

BTC204

Cílem BIP156 je tento problém řešit. Za tímto účelem zavádí dodatečnou fázi šíření nové transakce, aby byla zachována anonymita před širokým veřejným šířením. Pampeliška nejprve používá "kmenovou" fázi, kdy je transakce odeslána náhodnou cestou uzlů.

BTC204

Transakce je poté rozeslána celé síti ve fázi „Fluff“.

BTC204

Stonek a fáze „Fluff“ odkazují na chování šíření transakce v síti, které připomíná tvar a vývoj pampelišky (v angličtině „Dandelion“).

Špionážní uzly tak potenciálně mohou sledovat transakci zpět k uzlu, který zahájil fázi „Fluff“ (hromadné šíření), ale tento uzel není tím, kdo transakci vyslal jako první, protože ji obdržel od posledního uzlu stonku. Pokud špionážní uzly nedokážou vystopovat stonek, nemohou identifikovat zdrojový uzel.

BTC204

I v přítomnosti špionážních uzlů během kmenové fáze vždy zůstává pochybnost, protože jakmile se v difuzním grafu setkají s poctivým uzlem, nemohou špioni určit, zda je tento uzel původním zdrojem, nebo pouze prostředníkem.

BTC204

Tato metoda směrování zamlžuje stopu vedoucí zpět ke zdrojovému uzlu, takže je obtížné vysledovat transakci v síti až k jejímu původu. Dandelion tak zlepšuje důvěrnost tím, že omezuje schopnost protivníků deanonymizovat síť. Tato metoda je o to účinnější, když transakce během fáze "stemming" prochází uzlem, který šifruje svou síťovou komunikaci, jako je tomu u Tor nebo P2P Transport V2.

BIP156 nebyl integrován do jádra bitcoinu a v současné době je klasifikován jako "zamítnutý". Jedním z hlavních problémů tohoto protokolu je, že během kmenové fáze musí být transakce před ověřením přenášeny přes zprostředkující uzly. Jak jsme viděli, v běžném modelu Bitcoinu každý uzel nejprve transakci ověří a teprve poté ji předá svým kolegům. Pokud transakce nevyhovuje pravidlům konsensu uzlu nebo pravidlům lokální standardizace, uzel ji ignoruje a nedistribuuje ji. Tento proces je důležitý pro boj s útoky DoS, protože do celé sítě jsou vysílány pouze platné transakce. Neplatné transakce, potenciálně hromadně generované za účelem přetížení sítě, jsou zastaveny v prvním uzlu, na který narazí, a dále se nešíří. Hlavním rizikem protokolu Dandelion je, že by tento nový protokol mohl zavést nové vektory pro útoky DoS tím, že by umožnil vysílání neplatných transakcí v části sítě.

Přeprava P2P V2

Dalším síťovým protokolem uvedeným v BIP324 je P2P transport V2. Jedná se o novou verzi transportního protokolu Bitcoin P2P, která obsahuje oportunistické šifrování pro zlepšení důvěrnosti a bezpečnosti komunikace mezi uzly.

Toto vylepšení má vyřešit několik problémů základní verze protokolu P2P. Na jedné straně činí vyměňovaná data pro pasivního pozorovatele nerozeznatelnými od jiných typů dat kolujících po internetu. Hlavním cílem je zabránit vládám, poskytovatelům internetových služeb a poskytovatelům VPN v masivním sledování uživatelů Bitcoinu. Pro tyto subjekty je také obtížnější zjistit, zda je uživatel internetu zároveň uživatelem Bitcoinu, tj. zda provozuje kompletní uzel.

P2P V2 také pomáhá snižovat riziko cenzury a útoků tím, že detekuje specifické vzory v datových paketech. To komplikuje a prodražuje provádění různých typů útoků Sybil na úrovni sítě. K útoku Sybil dochází, když aktér vytvoří více falešných identit, aby získal nekalou výhodu. V kontextu sítě Bitcoin se to často projevuje tak, že aktér ovládá velký počet kompletních uzlů a agresivně je využívá k násobení spojení. Útoky Sybil mohou být pasivní, s cílem shromažďovat informace a ohrozit důvěrnost uživatelů, nebo aktivní, v podobě útoků Eclipse. Ty izolují konkrétní uzel od zbytku sítě a buď cenzurují uživatele, nebo mění přijímaná data. A konečně, P2P V2 také umožňuje nákladnější a snadněji odhalitelné útoky typu Man-In-The-Middle (MITM).

Šifrování implementované P2P V2 nezahrnuje ověřování, aby nepřidávalo zbytečnou složitost a neohrožovalo skutečnost, že připojení k síti zůstává bez oprávnění. Přesto tento nový transportní protokol P2P nabízí lepší zabezpečení proti pasivním útokům a aktivní útoky činí podstatně nákladnějšími a odhalitelnějšími. Zavedení pseudonáhodného datového toku do síťových zpráv ztěžuje útočníkům cenzurování nebo manipulaci s komunikací.

Transport P2P V2 byl zahrnut jako volitelná možnost (ve výchozím nastavení vypnutá) do jádra bitcoinu verze 26.0, které bylo nasazeno v prosinci 2023. Ve verzi 27.0 z dubna 2024 byl pak ve výchozím nastavení povolen. V konfiguračním souboru ji lze změnit pomocí volby v2transport=.

Tor

Dalším jednoduchým řešením, jak se vyhnout riziku ztráty důvěrnosti síťového uzlu, je spustit jej celý pod Tor.

Tor je síť přenosových serverů (uzlů), která anonymizuje původ připojení TCP na internetu. Funguje na základě zapouzdření dat v několika vrstvách šifrování. Každý relay uzel odstraní jednu vrstvu a odhalí tak adresu dalšího uzlu, dokud není dosaženo konečného cíle. Síť Tor zajišťuje anonymitu tím, že zprostředkujícím uzlům znemožňuje znát původ i cíl dat, takže pro pozorovatele je velmi obtížné vysledovat činnost uživatele.

BTC204

Tor nejen šifruje data, ale také maskuje původ a cíl komunikace. Používáním Toru pro komunikaci z osobního uzlu posilujete důvěrnost svých transakcí: váš poskytovatel internetových služeb nemůže komunikaci dešifrovat a ostatní uzly v síti Bitcoin nemohou identifikovat IP adresu zdrojového uzlu. Tor navíc před poskytovatelem internetových služeb skrývá i samotné používání Bitcoinu.

Hlavní riziko této metody spočívá v tom, že Tor je protokol nezávislý na Bitcoinu. Pokud máte uzel Bitcoinu spuštěný pod Tor a Tor přestane fungovat, váš uzel Bitcoinu již nebude schopen komunikovat.

Je také důležité si uvědomit, že komunikace v síti Tor je pomalejší. Tato latence je nepříjemná zejména při počátečním spuštění uzlu, protože IBD (Initial Block Download) vyžaduje hodně komunikace. V důsledku toho může počáteční synchronizace se sítí Bitcoin trvat při použití Toru podstatně déle. Je také možné provést IBD na clearnetu a poté aktivovat Tor jako druhý krok. Tato metoda sice prozradí existenci vašeho uzlu Bitcoin vašemu poskytovateli internetových služeb, ale po přepnutí na Tor ochrání vaše osobní informace o transakcích.

Poté, co jsme prozkoumali různé metody utajení na úrovni sítě, bych vás v několika následujících kapitolách rád seznámil se dvěma elegantními řešeními, jak zabránit opakovanému použití adres: BIP47 a Tiché platby.

BIP47 a opakovaně použitelné platební kódy

Jak jsme viděli v části 3, opakované použití adres je vážnou překážkou důvěrnosti uživatelů v protokolu Bitcoin. Pro zmírnění těchto rizik se důrazně doporučuje generovat prázdnou přijímací adresu pro každou novou platbu přijatou do peněženky. Ačkoli je generování nové adresy v současné době zjednodušeno používáním moderního softwaru a hierarchických deterministických peněženek, může se tento postup zdát kontraintuitivní.

BTC204

V tradičním bankovním systému jsme například zvyklí sdílet svůj IBAN, který zůstává stále stejný. Jakmile ho někomu sdělíme, může nám poslat více plateb, aniž by s námi musel znovu komunikovat. Neobanky nabízejí i modernější možnosti, například používání unikátních e-mailových adres u služby PayPal nebo RevTags u služby Revolut. I mimo finanční sféru jsou naše každodenní identifikátory, jako je poštovní adresa, telefonní číslo a e-mailová adresa, rovněž jedinečné a trvalé. Nemusíme je obnovovat při každé nové interakci.

BTC204

Bitcoin však funguje jinak: pro každou příchozí transakci musí být vygenerována nová přijímací adresa. Tento kompromis mezi snadností použití a důvěrností sahá až k samotným počátkům Bílé knihy Bitcoinu. Již při zveřejnění první verze svého dokumentu na konci roku 2008 Satoshi Nakamoto na toto riziko upozorňoval:

**Jako další firewall by se pro každou transakci mohl použít nový pár klíčů, aby nebyly spojeny se společným vlastníkem

Existuje mnoho způsobů, jak přijímat více plateb na jeden identifikátor, aniž byste museli znovu používat adresu. Každý z nich má své vlastní kompromisy a nevýhody. Mezi tyto metody patří BIP47, návrh, který vypracoval Justus Ranvier a který byl zveřejněn v roce 2015. Cílem tohoto návrhu je vytvořit opakovaně použitelné platební kódy, které umožní provádět více transakcí vůči stejné osobě a zároveň zabrání opakovanému použití adresy. Stručně řečeno, cílem BIP47 je nabídnout platební systém stejně intuitivní jako jedinečný identifikátor a zároveň zachovat důvěrnost transakcí.

BTC204

BIP47 přímo nezvyšuje důvěrnost uživatelů, protože platba BIP47 nabízí stejnou úroveň důvěrnosti jako klasická transakce Bitcoin s použitím prázdných adres. Umožňuje však pohodlnější a intuitivnější používání Bitcoinu, což je snadnost, která by za normálních okolností důvěrnost ohrozila. Díky BIP47 dosahuje toto snadné používání stejné úrovně důvěrnosti jako klasická transakce. Proto je BIP47 tak cenným nástrojem pro zachování soukromí.

Původně bylo navrženo začlenění BIP47 do jádra Bitcoinu, ale nikdy nebylo implementováno. Některé softwarové aplikace se jej však rozhodly implementovat samy. Například týmy peněženky Samourai vyvinuly vlastní implementaci BIP47 nazvanou "PayNym".

Obecný princip BIP47 a PayNym

Cílem BIP47 je umožnit přijímání velkého počtu plateb bez opakovaného používání adres. Je založen na použití opakovaně použitelného platebního kódu, který umožňuje různým vydavatelům zaslat několik plateb na jeden kód patřící jinému uživateli. Příjemce tak nemusí pro každou transakci uvádět novou, prázdnou adresu, což značně usnadňuje výměnu a zároveň zachovává důvěrnost.

BTC204

Uživatel tak může zcela volně sdílet svůj platební kód, ať už na sociálních sítích nebo na svých webových stránkách, aniž by riskoval ztrátu důvěrnosti, na rozdíl od běžné adresy příjemce nebo veřejného klíče.

K provedení transakce potřebují obě strany peněženku Bitcoin s implementací BIP47, například PayNym na Samurai Wallet nebo Sparrow Wallet. Společné použití jejich platebních kódů mezi nimi vytvoří tajný kanál. Aby se tento kanál účinně vytvořil, musí vydavatel provést v bitcoinovém blockchainu určitou transakci, známou jako "notifikační transakce" (více o ní později).

Kombinací platebních kódů dvou uživatelů vznikne sdílené tajemství, které následně vytvoří velký počet jedinečných adres pro příjem bitcoinů (přesně 2^32, tedy asi 4 miliardy). Tímto způsobem nejsou platby provedené prostřednictvím BIP47 ve skutečnosti adresovány na samotný platební kód, ale spíše na klasické přijímací adresy odvozené z platebních kódů zúčastněných uživatelů.

Kód platby tak slouží jako virtuální identifikátor odvozený od osiva portfolia. V hierarchické odvozovací struktuře portfolia je kód platby umístěn na úrovni 3, tj. na úrovni účtu.

BTC204

Cíl odvození pro BIP47 je označen indexem 47 (0x8000002F), který odkazuje na BIP47. Příklad odvozovací cesty pro opakovaně použitelný platební kód je následující:

m/47'/0'/0'/

Abyste si mohli udělat představu o tom, jak vypadá kód platby, zde je ten můj:

PM8TJSBiQmNQDwTogMAbyqJe2PE2kQXjtgh88MRTxsrnHC8zpEtJ8j7Aj628oUFk8X6P5rJ7P5qDudE4Hwq9JXSRzGcZJbdJAjM9oVQ1UKU5j2nr7VR5

Tento kód může být také zakódován jako kód QR, aby se s ním dalo snadněji komunikovat, stejně jako s běžnou adresou pro příjem.

Pokud jde o PayNym Bots, roboty, které lze někdy vidět na Twitteru, jedná se o vizuální reprezentaci platebního kódu vytvořenou společností Samourai Wallet. Jsou generovány pomocí hashovací funkce, což jim dává téměř jedinečnost. Mají podobu malého řetězce znaků začínajícího na + :

+throbbingpond8B1
+twilightresonance487
+billowingfire340

Tyto avatary lze také znázornit jako obrázky:

BTC204

Ačkoli tito roboti nemají v rámci BIP47 žádnou specifickou technickou funkci, hrají roli při usnadňování interakce s uživateli tím, že nabízejí snadno rozpoznatelnou vizuální identitu.


V následujících částech této kapitoly věnovaných protokolu BIP47 se podrobně seznámíme s jeho fungováním, se zvláštním důrazem na použité kryptografické metody. Pro plné pochopení těchto poněkud technických vysvětlení je nezbytné nejprve porozumět struktuře peněženek HD, postupům odvozování klíčů a základům kryptografie eliptických křivek. Pokud byste se chtěli do těchto pojmů ponořit hlouběji, je na síti Plan ₿ k dispozici další bezplatný vzdělávací kurz :

https://planb.network/courses/46b0ced2-9028-4a61-8fbc-3b005ee8d70f

Přesto bych vám doporučil, abyste se jimi řídili, protože pochopení technického fungování BIP47 vám usnadní porozumění dalším podobným návrhům, o kterých budeme hovořit v následujících kapitolách


Opakovaně použitelný platební kód

Jak již bylo zmíněno, opakovaně použitelný platební kód se nachází v hloubce 3 peněženky HD, takže je srovnatelný s xpubem, a to jak z hlediska jeho pozice ve struktuře peněženky, tak z hlediska jeho role.

80bajtový kód platby se rozděluje takto:

Zde je hexadecimální reprezentace mého opakovaně použitelného platebního kódu, který jsem již uvedl v předchozí části:

0x010002a0716529bae6b36c5c9aa518a52f9c828b46ad8d907747f0d09dcd4d9a39e97c3c5f37c470c390d842f364086362f6122f412e2b0c7e7fc6e32287e364a7a36a00000000000000000000000000
BTC204

Dále musí být na začátek přidán předčíslí P, které jasně označuje, že se jedná o kód platby. Tento bajt je reprezentován znakem 0x47 :

0x47010002a0716529bae6b36c5c9aa518a52f9c828b46ad8d907747f0d09dcd4d9a39e97c3c5f37c470c390d842f364086362f6122f412e2b0c7e7fc6e32287e364a7a36a00000000000000000000000000

Nakonec se pro zajištění integrity platebního kódu provede výpočet kontrolního součtu pomocí HASH256, který se skládá z dvojnásobného hashe pomocí funkce SHA256. První čtyři bajty tohoto hashe jsou pak spojeny na konci platebního kódu:

0x47010002a0716529bae6b36c5c9aa518a52f9c828b46ad8d907747f0d09dcd4d9a39e97c3c5f37c470c390d842f364086362f6122f412e2b0c7e7fc6e32287e364a7a36a00000000000000000000000000567080c4
BTC204

Po dokončení těchto kroků je platební kód připraven. Zbývá jej pouze převést do základu 58, abyste získali konečnou verzi:

PM8TJSBiQmNQDwTogMAbyqJe2PE2kQXjtgh88MRTxsrnHC8zpEtJ8j7Aj628oUFk8X6P5rJ7P5qDudE4Hwq9JXSRzGcZJbdJAjM9oVQ1UKU5j2nr7VR5

Při vytváření platebního kódu používáme komprimovaný veřejný klíč a řetězcový kód. Oba jsou odvozeny deterministicky a hierarchicky ze semínka peněženky. Odvozovací cesta, která se k tomu používá, je :

m/47'/0'/0'/

Konkrétně při generování komprimovaného veřejného klíče a řetězcového kódu spojeného s opakovaně použitelným platebním kódem začneme výpočtem hlavního soukromého klíče ze semínka peněženky. Poté přistoupíme k odvození dvojice dceřiných klíčů pomocí indexu 47 + 2^31 (posílená derivace). Poté následují další dvě po sobě jdoucí odvození dceřiných párů, vždy s použitím indexu 2^31 (zesílené odvození).

BTC204

Diffie-Hellmanova výměna klíčů na eliptických křivkách (ECDH)

Kryptografický protokol, který je základem protokolu BIP47, je znám pod zkratkou ECDH, což znamená Elliptic-Curve Diffie-Hellman. Tato metoda je variantou původní Diffie-Hellmanovy výměny klíčů.

Diffie-Hellmanův protokol byl představen v roce 1976 a umožňuje dvěma stranám, z nichž každá je vybavena párem klíčů (veřejným a soukromým), dohodnout se na společném tajemství, i když komunikují pouze veřejným, nezabezpečeným kanálem.

BTC204

Toto sdílené tajemství (v tomto případě modrý klíč) lze pak použít pro další operace. Typicky lze toto sdílené tajemství použít k šifrování a dešifrování komunikace v nezabezpečené síti:

BTC204

Diffie-Hellman k tomu používá modulární aritmetiku pro výpočet sdíleného tajemství. Zde je laicky řečeno, jak to funguje:

BTC204

V této popularizaci představuje hnědá barva tajemství sdílené Alicí a Bobem. Představte si, že ve skutečnosti je pro útočníka nemožné oddělit oranžovou a zelenou barvu, aby zjistil Alicino nebo Bobovo tajemství.

Nyní se podívejme, jak tento protokol skutečně funguje, a to nikoli pomocí analogií s barvami, ale pomocí reálných čísel a modulární aritmetiky!

Než se pustíme do Diffieho-Hellmanových mechanismů, dovolte mi, abych vám krátce připomněl dva základní matematické pojmy, které budeme potřebovat:

Výměna Diffieho-Hellmanova klíče mezi Alicí a Bobem probíhá takto:

A se rovná g zvýšenému na mocninu a modulo p :

A = g^a \bmod p

B se rovná g zvýšenému na mocninu b modulo p :

B = g^b \bmod p

z se rovná B zvýšenému na mocninu a modulo p :

z = B^a \bmod p

Připomínka:

B = g^b \bmod p

Výsledkem je :

z = B^a \bmod p
z = (g^b)^a \bmod p

Uplatněním pravidel výkonu :

(x^n)^m = x^{nm}

Výsledkem je :

z = g^{ba} \bmod p

z se rovná A zvýšenému na mocninu b modulo p :

z = A^b \bmod p

Výsledkem je :

z = (g^a)^b \bmod p
z = g^{ab} \bmod p
z = g^{ba} \bmod p

Díky distributivitě operátoru modulo dostanou Alice a Bob přesně stejnou hodnotu z. Toto číslo představuje jejich společné tajemství, ekvivalentní hnědé barvě v předchozí popularizaci s plechovkami barvy. Toto společné tajemství nyní mohou použít k symetrickému šifrování své komunikace v nezabezpečené síti.

BTC204

Útočník, i když bude mít k dispozici p, g, A a B (veřejné hodnoty), nebude schopen vypočítat a, b nebo z (soukromé hodnoty). K tomu by bylo nutné exponenciálu obrátit, což je operace, která je nemožná bez postupného vyzkoušení všech možností, neboť se rovná výpočtu diskrétního logaritmu, tj. reciproké hodnoty exponenciály v konečné cyklické grupě.

Pokud jsou tedy hodnoty a, b a p dostatečně velké, je Diffie-Hellmanův protokol bezpečný. Při parametrech 2048 bitů (600místné desítkové číslo) by testování všech možností pro a a b bylo obvykle nepraktické. K dnešnímu dni je s takovými čísly tento algoritmus považován za bezpečný.

V tom spočívá hlavní nevýhoda Diffieho-Hellmanova protokolu. Aby byl algoritmus bezpečný, musí používat velká čísla. Proto se dnes raději používá algoritmus ECDH (Elliptic Curve Diffie-Hellman), varianta Diffie-Hellmanova protokolu založená na algebraické křivce, přesněji na eliptické křivce. Tento přístup umožňuje pracovat s mnohem menšími čísly při zachování rovnocenného zabezpečení, čímž se snižují prostředky potřebné pro výpočet a ukládání.

Obecný princip algoritmu zůstává stejný. Místo náhodného čísla a a čísla A vypočteného z a modulární exponencí však používáme dvojici klíčů vytvořených na eliptické křivce. Namísto spoléhání na distributivitu operátoru modulo využíváme skupinový zákon na eliptických křivkách, přesněji asociativitu tohoto zákona.

Pro stručné vysvětlení principu kryptografie na eliptických křivkách je soukromý klíč reprezentován náhodným číslem v rozmezí 1n-1, kde n představuje řád křivky. Veřejný klíč je naproti tomu konkrétní bod na této křivce, získaný ze soukromého klíče sčítáním a zdvojováním bodů z generujícího bodu podle rovnice :

K = k \cdot G

V tomto vzorci K označuje veřejný klíč, k soukromý klíč a G bod generátoru.

Podstatnou vlastností těchto klíčů je snadnost, s jakou lze z k a G vypočítat K, zatímco z K a G je prakticky nemožné zjistit k. Tato asymetrie vytváří jednosměrnou funkci. Jinými slovy, je snadné vypočítat veřejný klíč, pokud znáte soukromý klíč, ale získat soukromý klíč z veřejného klíče je nemožné. Tato bezpečnost je dále podpořena výpočetní náročností diskrétního logaritmu.

Tuto vlastnost využijeme k úpravě našeho Diffie-Hellmanova algoritmu. Princip fungování ECDH je následující:

K_a = k_a \cdot G
K_b = k_b \cdot G
(x,y) = k_a \cdot K_b
(x,y) = k_b \cdot K_a

Dostanou stejné sdílené tajemství, protože :

(x,y) = k_a \cdot K_b = k_a \cdot (k_b \cdot G) = (k_a \cdot k_b) \cdot G = (k_b \cdot k_a) \cdot G = k_b \cdot (k_a \cdot G) = k_b \cdot K_a

Případný útočník, který sleduje nezabezpečenou veřejnou síť, bude moci získat pouze veřejné klíče jednotlivých osob a parametry zvolené eliptické křivky. Jak bylo vysvětleno výše, tyto informace samy o sobě k určení soukromých klíčů nestačí. Útočník proto nemůže zjistit tajemství sdílené mezi Alicí a Bobem.

ECDH je tedy algoritmus pro výměnu klíčů. Často se používá ve spojení s dalšími kryptografickými metodami k vytvoření kompletního protokolu. ECDH je například základem TLS (Transport Layer Security), šifrovacího a autentizačního protokolu používaného pro internetovou transportní vrstvu. TLS používá ECDHE pro výměnu klíčů, což je varianta ECDH, kde jsou klíče efemérní, aby byla zajištěna trvalá důvěrnost. Kromě toho protokol TLS používá autentizační algoritmy, jako je ECDSA, šifrovací algoritmy, jako je AES, a hašovací funkce, jako je SHA256.

Protokol TLS je zodpovědný za znak s ve slově https a visací zámek v adresním řádku prohlížeče - symboly šifrované komunikace. Absolvováním tohoto kurzu budete používat ECDH a je velmi pravděpodobné, že jej budete používat denně, aniž byste o tom věděli.

Transakce oznámení

Jak jsme viděli v předchozí části, ECDH je variantou Diffie-Hellmanovy výměny pomocí párů klíčů vytvořených na eliptické křivce. Je dobře, že v našich peněženkách Bitcoin již máme mnoho párů klíčů respektujících tento standard! Myšlenka BIP47 spočívá v použití párů klíčů hierarchických deterministických peněženek Bitcoin obou stran k vytvoření sdílených, efemérních tajemství mezi nimi. BIP47 místo toho používá ECDHE (Elliptic Curve Diffie-Hellman Ephemeral).

BTC204

ECDHE se nejprve používá v BIP47 k přenosu platebního kódu od odesílatele k příjemci. Jedná se o známou notifikační transakci. Tento krok je nezbytný, protože pro efektivní fungování protokolu BIP47 musí obě zúčastněné strany (odesílatel i příjemce) znát své platební kódy. Tato znalost umožňuje odvození efemérních veřejných klíčů a následně i souvisejících prázdných adres příjemce.

Odesílatel logicky již před touto výměnou zná platební kód příjemce, protože jej získal mimo řetězec, například z jeho webových stránek, faktury nebo sociálních sítí. Příjemce však nemusí nutně znát platební kód odesílatele. Tento kód mu však musí být předán, jinak nebude schopen odvodit efemérní klíče potřebné k identifikaci adres, na kterých jsou uloženy jeho bitcoiny, nebo získat přístup ke svým prostředkům. Ačkoli tento přenos kódu odesílatele lze technicky provést mimo řetězec jinými komunikačními prostředky, představuje to problém, pokud má být peněženka získána pouze ze seedu.

Je to proto, že na rozdíl od běžných adres nejsou adresy BIP47 odvozeny přímo ze seedu příjemce - v tomto případě by bylo jednodušší použít xpub - ale jsou výsledkem výpočtu kombinujícího dva platební kódy: kód odesílatele a kód příjemce. Pokud tedy příjemce ztratí svou peněženku a pokusí se ji obnovit ze svého seedu, obnoví svůj vlastní platební kód, který je přímo odvozen z jeho seedu. K obnovení efemérních adres však bude potřebovat také platební kódy všech, kteří mu bitcoiny prostřednictvím BIP47 poslali. Proto je důležitá notifikační transakce, která umožňuje tyto informace uložit do bitcoinového blockchainu a zároveň je velmi snadno najít, aniž by bylo nutné prohledávat miliardy transakcí provedených od jeho spuštění v roce 2009.

BTC204

Proto by bylo možné implementovat BIP47 bez použití oznamovací transakce za předpokladu, že si každý uživatel uchovává zálohu platebních kódů svých kolegů. Tento způsob se však ukazuje jako složitý na správu, dokud nebude vyvinuto jednoduché, robustní a účinné řešení pro vytváření, ukládání a aktualizaci těchto záloh. Za současného stavu je notifikační transakce téměř nevyhnutelná.

V následujících kapitolách se však budeme zabývat dalšími protokoly s podobnými cíli jako BIP47, které však nevyžadují oznamovací transakci. Tyto alternativy však přinášejí vlastní kompromisy.

Kromě úlohy ukládání platebních kódů má notifikační transakce také funkci oznámení pro příjemce, jak napovídá její název. Upozorňuje zákazníka příjemce na skutečnost, že byl vytvořen nový platební tunel, a navrhuje mu, aby sledoval výsledné efemerní adresy.

Model důvěrnosti BIP47

Před podrobným popisem technického fungování oznamovací transakce je důležité probrat model důvěrnosti spojený s BIP47, který odůvodňuje určitá opatření přijatá při vytváření této počáteční transakce.

Samotný platební kód nepředstavuje přímé riziko pro důvěrnost. Na rozdíl od tradičního modelu Bitcoinu, jehož cílem je přerušit spojení mezi identitou uživatele a jeho transakcemi (které jsou veřejné) zachováním anonymity klíčů a adres, může být platební kód otevřeně spojen s identitou, aniž by představoval hrozbu.

Důvodem je, že kód platby se nepoužívá k přímému odvození adres, na které jsou platby BIP47 zasílány. Místo toho jsou tyto adresy generovány prostřednictvím aplikace ECDH mezi klíči odvozenými z platebních kódů obou zúčastněných stran.

Kód platby tedy sám o sobě nevede přímo ke ztrátě důvěrnosti, protože se z něj odvozuje pouze adresa oznámení. Ačkoli tato adresa může odhalit určité informace, obvykle neodhaluje strany, s nimiž transakce probíhají, pokud není provedena důkladná analýza řetězce. Pokud totiž odesílatel používá k provedení notifikační transakce UTXO, které lze spojit s jeho identitou, pak je možné odvodit, že jeho identita je pravděpodobně spojena s platbami BIP47 s vaším platebním kódem. To neodhalí podkladové transakce, ale naznačí jejich pravděpodobnou existenci.

Proto je nezbytné zachovat toto přísné oddělení platebních kódů uživatelů. S ohledem na to je počáteční sdělení kódu kritickým okamžikem pro důvěrnost plateb, který je však nezbytný pro správné fungování protokolu. Pokud lze jeden z platebních kódů získat veřejně (například na webových stránkách), nesmí být druhý kód, kód odesílatele, v žádném případě spojen s prvním kódem.

Uveďme si konkrétní příklad: Chci přispět politickému hnutí prostřednictvím BIP47 :

Jak mohu předat svůj kód bez rizika? Použití běžných komunikačních prostředků by mohlo vést k úniku informací, a tím i ke spojení mé osoby s tímto politickým hnutím. Notifikační transakce nabízí řešení díky vrstvě šifrování, která právě takovému spojení dvou kódů brání. Není to sice jediná metoda tajného přenosu platebního kódu odesílatele, ale je velmi účinná.

V níže uvedeném diagramu jsou oranžovými čarami vyznačeny body, kde musí být tok informací přerušen, a černé šipky ukazují spojení potenciálně pozorovatelná třetími stranami:

BTC204

Ve skutečnosti je v tradičním modelu důvěrnosti Bitcoinu často složité zcela oddělit tok informací mezi párem klíčů a uživatelem, zejména u vzdálených transakcí. Například v rámci dárcovské kampaně musí příjemce nevyhnutelně zveřejnit adresu nebo veřejný klíč prostřednictvím svých webových stránek nebo sociálních sítí. Správné použití BIP47, zejména u oznamovací transakce, umožňuje tento problém obejít díky ECDHE a šifrovací vrstvě, které se budeme věnovat později.

Klasický model důvěrnosti Bitcoinu samozřejmě stále platí pro efemérní veřejné klíče, které jsou odvozeny z kombinace dvou platebních kódů. Oba modely se ve skutečnosti doplňují. Chci zde zdůraznit, že na rozdíl od obvyklého použití veřejného klíče pro příjem Bitcoinů lze platební kód spojit s konkrétní identitou, protože informace "Alice provádí transakci s Bobem" je porušena v jiné fázi. Platební kód se používá k vygenerování platebních adres, ale pouze na základě pozorování blockchainu není možné spojit platební transakci BIP47 s platebními kódy použitými k jejímu provedení, ledaže by příslušné UTXO byly již dříve spojeny s identitou a uživatelé si své platební kódy spojili s příslušnými identitami.

Závěrem lze říci, že model důvěrnosti, který nabízí platby BIP47, lze považovat za lepší než základní model Bitcoinu, i když to neznamená, že je to kouzelné.

Vytvoření transakce oznámení

Nyní se podívejme, jak tato oznamovací transakce funguje. Představme si, že Alice chce poslat peníze Bobovi pomocí BIP47. V mém příkladu Alice vystupuje jako odesílatel a Bob jako příjemce. Bob zveřejnil svůj platební kód na svých webových stránkách. Alice tedy již zná Bobův platební kód.

1- Alice vypočítá sdílené tajemství pomocí ECDH :

a

B = b \cdot G

S = a \cdot B

f = \text{HMAC-SHA512}(o, x)

**2 - Alice převede svůj osobní platební kód do báze 2 (binární) **

3- Tento oslepující faktor používá jako klíč k symetrickému šifrování užitečného zatížení svého platebního kódu. Použitý šifrovací algoritmus je jednoduše XOR. Prováděná operace je srovnatelná s Vernamovou šifrou, známou také jako "One-Time Pad".

f = f1 || f2

x' = x \oplus f1

c' = c \oplus f2

4- Alice má tedy v současné době svůj platební kód se zašifrovaným nákladem. Sestaví a odvysílá transakci zahrnující její veřejný klíč A jako vstup, výstup na Bobovu notifikační adresu a výstup OP_RETURN sestávající z jejího platebního kódu se zašifrovaným nákladem. Tato transakce je oznamovací transakce.

OP_RETURN je opcode, který označuje výstup transakce Bitcoin jako neplatný. Dnes se používá k vysílání nebo ukotvení informací v bitcoinovém blockchainu. Může obsahovat až 80 bajtů dat, která jsou následně zapsána do řetězce a viditelná pro všechny ostatní uživatele.

Jak jsme viděli v předchozích částech, ECDH se používá k vytvoření sdíleného tajemství mezi dvěma uživateli, kteří komunikují v nezabezpečené síti a mohou být pozorováni útočníky. V BIP47 se ECDH používá ke komunikaci v síti Bitcoin, která je ze své podstaty transparentní komunikační sítí a je pozorována mnoha útočníky. Sdílené tajemství vypočtené prostřednictvím výměny klíčů ECDH se pak použije k zašifrování tajné informace, která má být přenesena: platebního kódu odesílatele (Alice).

Shrnu kroky, které jsme právě společně viděli, a provedu transakci oznámení:

BTC204

Oznámení o transakci: praktická studie

Abychom podrobněji pochopili, jak to funguje, a zejména použití OP_RETURN, podívejme se na skutečnou notifikační transakci. Takovou transakci jsem provedl na testnetu, který najdete kliknutím sem.

BTC204

Při pohledu na tuto transakci již vidíme, že má jeden vstup a 4 výstupy:

Nejzajímavější pro studium je zřejmě výstup 0 pomocí OP_RETURN. Podívejme se blíže na to, co obsahuje. Zde je scriptPubKey v hexadecimálním tvaru :

6a4c50010002b13b2911719409d704ecc69f74fa315a6cb20fdd6ee39bc9874667703d67b164927b0e88f89f3f8b963549eab2533b5d7ed481a3bea7e953b546b4e91b6f50d800000000000000000000000000

Tento skript má několik částí. Za prvé, :

6a4c

Mezi opcodes můžeme rozpoznat 0x6a, který označuje OP_RETURN a 0x4c, který označuje OP_PUSHDATA1.

Bajt následující za tímto posledním opkódem udává velikost následného užitečného zatížení. Označuje 0x50, tedy 80 bajtů:

6a4c50

Dále máme metadata mého platebního kódu v čistém textu:

010002

Šifrovaná abscesa veřejného klíče mého platebního kódu :

b13b2911719409d704ecc69f74fa315a6cb20fdd6ee39bc9874667703d67b164

Šifrovaný řetězový kód mého platebního kódu :

927b0e88f89f3f8b963549eab2533b5d7ed481a3bea7e953b546b4e91b6f50d8

A nakonec padding na 80 bajtů, což je standardní velikost OP_RETURN :

00000000000000000000000000

Abych vám pomohl porozumět, zde je můj kód platby v prostém textu v základu 58 :

PM8TJQCyt6ovbozreUCBrfKqmSVmTzJ5vjqse58LnBzKFFZTwny3KfCDdwTqAEYVasn11tTMPc2FJsFygFd3YzsHvwNXLEQNADgxeGnMK8Ugmin62TZU

A v základu 16 :

4701000277507c9c17a89cfca2d3af554745d6c2db0e7f6b2721a3941a504933103cc42add94881210d6e752a9abc8a9fa0070e85184993c4f643f1121dd807dd556d1dc000000000000000000000000008604e4db

Porovnáme-li můj kód platby v prostém textu s kódem OP_RETURN, zjistíme, že HRP (0x47) a kontrolní součet (0x8604e4db) nejsou přeneseny. To je normální, protože tyto informace jsou určeny pro lidi.

Dále můžeme rozpoznat verzi (0x01), bitové pole (0x00) a paritu veřejného klíče (0x02). A na konci platebního kódu jsou prázdné bajty (0x0000000000000000000000000000000000), které umožňují vycpávku, aby celkový počet bajtů dosáhl 80. Všechna tato metadata jsou přenášena nešifrovaně.

Nakonec si můžeme všimnout, že absces veřejného klíče (0x77507c9c17a89cfca2d3af554745d6c2db0e7f6b2721a3941a504933103cc42a) a řetězcový kód (0xdd94881210d6e752a9abc8a9fa0070e85184993c4f643f1121dd807dd556d1dc) byly zašifrovány. Jedná se o užitečné zatížení platebního kódu.

Co je XOR?

V předchozích částech jsme viděli, že platební kód je přenášen zašifrovaný pomocí operace XOR. Podívejme se blíže na to, jak tato operace funguje, protože je v kryptografii hojně využívána.

XOR je bitový logický operátor založený na Booleově algebře. Při zadání dvou operandů v bitech vrací 1, pokud se bity stejného řádu liší, a vrací 0, pokud se bity stejného řádu rovnají. Zde je pravdivostní tabulka XOR podle hodnot operandů D a E :

| D | E | D XOR E |

| --- | --- | ------- |

| 0 | 0 | 0 |

| 0 | 1 | 1 |

| 1 | 0 | 1 |

| 1 | 1 | 0 |

Například:

0110 \oplus 1110 = 1000

Nebo :

010011 \oplus 110110 = 100101

U ECDH je použití XOR jako šifrovací vrstvy obzvláště důsledné. Za prvé, díky tomuto operátoru je šifrování symetrické. To znamená, že příjemce může dešifrovat platební kód stejným klíčem, který byl použit pro šifrování. Šifrovací a dešifrovací klíče se vypočítávají ze sdíleného tajemství pomocí ECDH. Tuto symetrii umožňují komutativní a asociativní vlastnosti operátoru XOR:

D \oplus D = 0
D \oplus 0 = D
D \oplus E = E \oplus D
D \oplus (E \oplus Z) = (D \oplus E) \oplus Z = D \oplus E \oplus Z

Pokud :

D \oplus E = L

Pak :

D \oplus L = D \oplus (D \oplus E) = D \oplus D \oplus E = 0 \oplus E = E \\
\therefore D \oplus L = E

Za druhé, tato šifrovací metoda je velmi podobná Vernamově šifře (One-Time Pad), jedinému dosud známému šifrovacímu algoritmu, který má bezpodmínečnou (nebo absolutní) bezpečnost. Aby Vernamova šifra měla tuto vlastnost, musí být šifrovací klíč dokonale náhodný, stejně velký jako zpráva a použitý pouze jednou. V šifrovací metodě použité zde pro BIP47 má klíč skutečně stejnou velikost jako zpráva a oslepující faktor má přesně stejnou velikost jako konkatenace abscesu veřejného klíče s řetězcovým kódem platebního kódu. Tento šifrovací klíč se použije pouze jednou. Na druhou stranu tento klíč není odvozen z dokonalé náhodnosti, protože se jedná o HMAC. Je spíše pseudonáhodný. Nejedná se tedy o Vernamovu šifru, ale metoda se jí blíží.

Přijetí oznamovací transakce

Nyní, když Alice odeslala oznamovací transakci Bobovi, podívejme se, jak ji Bob interpretuje. Připomínáme, že Bob musí mít přístup k Alicinu platebnímu kódu. Bez této informace, jak uvidíme v následující části, nebude schopen odvodit páry klíčů vytvořené Alicí, a nebude tedy schopen získat přístup ke svým bitcoinům přijatým prostřednictvím BIP47. Prozatím je Alicin platební kódový náklad zašifrován. Podívejme se, jak jej Bob dešifruje.

1- Bob sleduje transakce, které vytvářejí výstupy s jeho notifikační adresou.

2- Když má transakce na své oznamovací adrese výstup, Bob ji analyzuje, aby zjistil, zda obsahuje výstup OP_RETURN, který je v souladu se standardem BIP47.

3- Pokud je první bajt užitečného zatížení OP_RETURN 0x01, Bob začne hledat možné tajemství sdílené s ECDH :

A = a \cdot G

b

S = b \cdot A

f = \text{HMAC-SHA512}(o, x)

4- Bob interpretuje údaje OP_RETURN v oznamovací transakci jako kód platby. Jednoduše dešifruje užitečné zatížení tohoto potenciálního platebního kódu pomocí zaslepovacího faktoru f:

x = x' \oplus f1

c = c' \oplus f2

5- Bob zkontroluje, zda hodnota veřejného klíče Alicina platebního kódu patří do skupiny secp256k1. Pokud ano, interpretuje ji jako platný platební kód. Pokud ne, transakci ignoruje.

Nyní, když Bob zná Alicin platební kód, může mu Alice poslat až 2^32 plateb, aniž by musela opakovat notifikační transakci tohoto typu.

Proč to funguje? Jak může Bob určit stejný zaslepující faktor jako Alice, a tak rozluštit její platební kód? Podívejme se blíže na působení ECDH v tom, co jsme právě popsali.

Především se jedná o symetrické šifrování. To znamená, že šifrovací a dešifrovací klíč mají stejnou hodnotu. Tento klíč v oznamovací transakci představuje zaslepující faktor:

f = f1 || f2

Alice a Bob proto musí získat stejnou hodnotu f, aniž by ji předávali přímo, protože útočník by ji mohl ukrást a dešifrovat tajnou informaci. Tento zaslepující faktor se získá použitím HMAC-SHA512 na 2 hodnoty:

Bob proto potřebuje obě tyto informace, aby mohl dešifrovat Alicin platební kód. Pokud jde o vstupní UTXO, Bob ji může jednoduše získat sledováním oznamovací transakce. Pro tajný bod bude Bob muset použít ECDH. Jak jsme viděli v předchozí části o Diffie-Hellmanovi, pouhou výměnou svých příslušných veřejných klíčů a tajným použitím svých soukromých klíčů na veřejný klíč toho druhého mohou Alice a Bob najít přesný tajný bod na eliptické křivce. Na tomto mechanismu je založena oznamovací transakce:

B = b \cdot G

A = a \cdot G

S = a \cdot B = a \cdot (b \cdot G) = (b \cdot a) \cdot G = b \cdot A

BTC204

Nyní, když Bob zná Alicin platební kód, bude schopen zjistit její platby BIP47 a bude schopen odvodit soukromé klíče blokující přijaté bitcoiny.

Shrnu kroky, které jsme právě společně viděli, pro příjem a interpretaci transakce oznámení:

BTC204

Platební transakce BIP47

Podívejme se na proces platby pomocí služby BIP47. Pro připomenutí aktuální situace :

Před vysvětlením tohoto postupu je podle mého názoru důležité připomenout, na kterých indexech právě pracujeme. Cesta odvození kódu platby je popsána následovně: m/47'/0'/0'. Následující hloubka rozděluje indexy následovně:

Pokaždé, když chce Alice poslat platbu Bobovi, vytvoří novou, jedinečnou, prázdnou adresu, opět pomocí protokolu ECDH:

a

B = b \cdot G

S = a \cdot B

S = (Sx, Sy)

s = \text{SHA256}(Sx)

K0 = B + s \cdot G

Jakmile Alice získá Bobovu přijímací adresu K0, může provést transakci s bitcoiny standardním způsobem. Za tímto účelem si vybere UTXO, které vlastní a které je zabezpečeno párem klíčů z jiné větve její peněženky HD, a spotřebuje jej k uspokojení výstupu na Bobovu adresu K0. Je důležité si uvědomit, že tato platba po odvození adresy probíhá klasickým způsobem a již nezávisí na klíčích spojených s BIP47.

Shrnu kroky, které jsme si právě společně ukázali, pro odeslání platby BIP47:

BTC204

Pokud chce Alice provést druhou platbu, bude postupovat stejně jako předtím, tentokrát však zvolí druhý veřejný klíč odvozený z Bobova platebního kódu. Konkrétně použije další nepoužitý klíč. Získá tak novou přijímací adresu patřící Bobovi, označenou K1 :

BTC204

Tímto způsobem lze pokračovat a získat až 2^32 prázdných adres patřících Bobovi.

Z vnějšího pohledu, při pohledu na blockchain, je teoreticky nemožné odlišit platbu BIP47 od běžné platby. Zde je příklad platební transakce BIP47 v síti Testnet:

94b2e59510f2e1fa78411634c98a77bbb638e28fb2da00c9f359cd5fc8f87254

Vypadá jako klasická transakce se spotřebovaným vstupem, výstupem platby a směnným kurzem:

BTC204

Přijetí platby BIP47 a odvození soukromého klíče

Alice právě provedla svou první platbu na prázdnou adresu BIP47 patřící Bobovi. Nyní se podívejme, jak Bob tuto platbu přijme. Uvidíme také, proč Alice nemá přístup k soukromému klíči adresy, kterou právě sama vygenerovala, a jak Bob tento klíč najde, aby mohl utratit právě obdržené bitcoiny.

Jakmile Bob obdrží notifikační transakci od Alice, získá veřejný klíč BIP47 K0 ještě předtím, než jeho korespondent odešle platbu. Pozoruje tedy každou platbu na přidruženou adresu. Ve skutečnosti okamžitě odvodí několik adres, které pozoruje (K0, K1, K2, K3...). Zde je uvedeno, jak odvozuje tento veřejný klíč K0 :

b

A = a \cdot G

S = b \cdot A

s = \text{SHA256}(Sx)

K0 = B + s \cdot G

Jakmile Bob získá tento veřejný klíč K0, může odvodit související soukromý klíč a utratit své bitcoiny. Tento soukromý klíč může vygenerovat pouze on:

k0 = b + s

Díky skupinovému zákonu eliptické křivky získá Bob přesně soukromý klíč odpovídající veřejnému klíči, který použila Alice. Máme tedy :

K0 = k0 \cdot G

Shrnu kroky, které jsme si právě společně ukázali, pro přijetí platby BIP47 a výpočet odpovídajícího soukromého klíče:

BTC204

Protože Alice nemůže získat b (Bobův soukromý klíč), není schopna určit k0 (soukromý klíč spojený s Bobovou přijímací adresou BIP47). Schematicky můžeme výpočet sdíleného tajemství S znázornit takto:

BTC204

Jakmile je sdílené tajemství nalezeno pomocí ECDH, Alice a Bob vypočítají veřejný klíč platby BIP47 K0 a Bob také vypočítá související soukromý klíč k0 :

BTC204

Vrácení platby BIP47

Protože Bob zná Alicin opakovaně použitelný platební kód, má již všechny informace, které potřebuje, aby jí mohl poslat náhradu. Nebude muset Alici znovu kontaktovat a žádat ji o jakékoli informace. Stačí, když ji upozorní notifikační transakcí, aby mohla načíst své adresy BIP47 s jejím semenem, a pak jí také může poslat až 2^32 plateb.

Funkce vrácení peněz je specifická pro BIP47 a je jednou z jeho výhod oproti jiným metodám, jako jsou tiché platby, kterým se budeme věnovat v dalších kapitolách.

Bob pak může Alici vrátit peníze stejným způsobem, jakým mu poslala platby. Role jsou obrácené:

BTC204

*Děkujeme Fanisovi Michalakisovi za korektury a odborné rady k článku, který inspiroval napsání této kapitoly!

https://planb.network/tutorials/privacy/on-chain/paynym-bip47-a492a70b-50eb-4f95-a766-bae2c5535093

Tiché platby

BIP47 byl široce kritizován pro svou neúčinnost v řetězci. Jak bylo vysvětleno v předchozí kapitole, vyžaduje provedení oznamovací transakce pro každého nového příjemce. Toto omezení se stává zanedbatelným, pokud s tímto příjemcem plánujeme vytvořit udržitelný platební kanál. Jediná notifikační transakce totiž otevírá cestu k téměř nekonečnému počtu následných plateb BIP47.

V určitých situacích však může být transakce oznámení pro uživatele překážkou. Vezměme si příklad jednorázového daru příjemci: s klasickou bitcoinovou adresou stačí k dokončení daru jediná transakce. U BIP47 jsou však nutné dvě transakce: jedna pro oznámení a druhá pro samotnou platbu. Pokud je poptávka po blokovém prostoru nízká a transakční poplatky nízké, tento krok navíc obvykle nepředstavuje problém. V době přetížení se však transakční poplatky za jednu platbu mohou stát přehnaně vysokými a potenciálně zdvojnásobit náklady uživatele ve srovnání se standardní bitcoinovou transakcí, což se pro uživatele může ukázat jako nepřijatelné.

Pro situace, kdy uživatel plánuje provést pouze několik plateb na statický identifikátor, byla vyvinuta jiná řešení. Patří mezi ně tiché platby popsané v BIP352. Tento protokol umožňuje používat statický identifikátor k přijímání plateb, aniž by docházelo k opakovanému používání adres a aniž by bylo nutné používat oznamovací transakce. Podívejme se, jak tento protokol funguje.


Pro úplné pochopení této kapitoly je nezbytné zvládnout fungování ECDH (Elliptic Curve Diffie-Hellman) a odvozování kryptografických klíčů v peněžence HD. Tyto pojmy byly podrobně popsány v předchozí kapitole o BIP47. Nebudu je zde opakovat. Pokud tyto pojmy ještě neznáte, doporučuji vám, abyste si před pokračováním v této kapitole prostudovali předchozí kapitolu. Nebudu se vracet k rizikům spojeným s opakovaným používáním adres pro příjem, ani k důležitosti existence jedinečného identifikátoru pro příjem plateb. Zmíním se jen o několika bodech, které bych zde rád uvedl


Proč nepřesunout oznámení?

Jak je uvedeno v kapitole BIP47, notifikační transakce má dvě hlavní funkce:

Někdo by si mohl naivně myslet, že tento proces oznámení lze provést mimo řetězec. Teoreticky je to dokonale proveditelné: jediné, co by příjemce musel udělat, je uvést komunikační prostředek, který by přijímal platební kódy BIP47 od odesílatelů. Tento přístup však naráží na dva zásadní problémy:

Díky všem těmto omezením je použití oznámení v řetězci pro BIP47 nezbytné. Tiché platby se však snaží tomuto kroku oznámení v řetězci vyhnout právě kvůli jeho nákladům. Přijaté řešení proto nespočívá v přesunu notifikace, ale v jejím úplném odstranění. K dosažení tohoto cíle je třeba přijmout kompromis: skenování. Na rozdíl od BIP47, kde uživatel díky notifikačním transakcím přesně ví, kde najde své finanční prostředky, u Tichých plateb musí uživatel prozkoumat všechny existující bitcoinové transakce, aby odhalil všechny platby určené jemu. Aby se tato operační zátěž snížila, omezuje se vyhledávání Tichých plateb pouze na transakce, které takové platby pravděpodobně obsahují, tj. na transakce s alespoň jedním výstupem Taproot P2TR. Kontrola se také zaměřuje výhradně na transakce od data vytvoření peněženky (není třeba kontrolovat transakce z roku 2009, pokud byla peněženka vytvořena v roce 2024).

Je tedy zřejmé, proč BIP47 a tiché platby, ačkoli mají podobný cíl, zahrnují různé kompromisy, a proto ve skutečnosti odpovídají odlišným případům použití. Pro jednorázové platby, jako jsou jednorázové dary, jsou vhodnější Tiché platby, protože mají nižší náklady. Naopak pro pravidelné transakce stejnému příjemci, jako v případě směnných platforem nebo těžebních poolů, může být vhodnější BIP47.

Podívejme se na technické fungování tichých plateb, abychom lépe pochopili, co je v sázce. K tomu navrhuji zvolit stejný přístup jako u vysvětlujícího dokumentu BIP352. Postupně rozebereme výpočty, které je třeba provést, prvek po prvku a zdůvodníme každý nový přírůstek.

Několik pojmů, které je třeba pochopit

Než začneme, je důležité zdůraznit, že Tiché platby jsou založeny výhradně na použití typů skriptů P2TR (Pay to Taproot). Na rozdíl od BIP47 není nutné odvozovat přijímací adresy z veřejných klíčů dětí pomocí hashování. Ve standardu P2TR se vylepšený veřejný klíč používá přímo a nešifrovaně v adrese. Adresa příjmu Taproot je tedy v podstatě veřejný klíč s některými metadaty. Tento upravený veřejný klíč je agregací dvou dalších veřejných klíčů: jeden umožňuje přímé, tradiční utrácení prostřednictvím jednoduchého podpisu a druhý představuje Merklův kořen MAST, který opravňuje k utrácení za předpokladu splnění jedné z podmínek potenciálně zapsaných v Merklově stromu.

BTC204

Rozhodnutí omezit tiché platby výhradně na společnost Taproot má dva hlavní důvody:

Naivní odvození veřejného klíče tichých plateb

Začněme jednoduchým příkladem, který nám přiblíží fungování tichých plateb. Vezměme si Alici a Boba, dva uživatele Bitcoinu. Alice si přeje poslat Bitcoiny Bobovi na prázdnou přijímací adresu. Tento proces má tři cíle:

Alice má ve své bezpečné peněžence Bitcoin UTXO s následujícím párem klíčů:

Bob má adresu SP, kterou zveřejnil na internetu s :

Získáním Bobovy adresy je Alice schopna vypočítat novou prázdnou adresu, která patří Bobovi, pomocí ECDH. Nazvěme tuto adresu P :

P = B + \text{hash}(a \cdot B) \cdot G

V této rovnici Alice jednoduše vypočítala skalární součin svého soukromého klíče a a Bobova veřejného klíče B. Tento výsledek předala do všem známé hashovací funkce. Výslednou hodnotu pak skalárně vynásobila generujícím bodem G eliptické křivky secp256k1. Nakonec Alice přidá výsledný bod k Bobovu veřejnému klíči B. Jakmile Alice získá tuto adresu P, použije ji jako výstup v transakci, tj. pošle na ni bitcoiny.

V kontextu tichých plateb odpovídá funkce "hash" hashovací funkci SHA256 speciálně označené BIP0352/SharedSecret, která zajišťuje, že generované hashe jsou jedinečné pro tento protokol a nemohou být znovu použity v jiných kontextech, a zároveň nabízí další ochranu proti opakovanému použití nonces v podpisech. Tento standard odpovídá standardu uvedenému v BIP340 pro Schnorrovy podpisy na secp256k1. Díky vlastnostem eliptické křivky, na které je ECDH založena, víme, že :

a \cdot B = b \cdot A

Bob tedy bude schopen vypočítat přijímací adresu, na kterou Alice poslala bitcoiny. Za tímto účelem sleduje všechny bitcoinové transakce, které splňují kritéria tichých plateb, a na každou z nich použije následující výpočet, aby zjistil, zda je platba adresována jemu (skenování):

P' = B + \text{hash}(b \cdot A) \cdot G

Když prohledá Alicinu transakci, zjistí, že P' se rovná P. Ví tedy, že platba je určena jí:

P' = B + \text{hash}(b \cdot A) \cdot G = B + \text{hash}(a \cdot B) \cdot G = P

Odtud bude Bob schopen vypočítat soukromý klíč p, který umožní utratit adresu P:

p = (b + \text{hash}(b \cdot A)) \bmod n

Jak vidíte, pro výpočet tohoto soukromého klíče p musíte mít soukromý klíč b. Tento soukromý klíč b má pouze Bob. Bude tedy jediným, kdo bude moci utratit bitcoiny zaslané na jeho adresu Tiché platby.

BTC204

Legenda:

Zde je poněkud naivní počáteční přístup k použití Bobovy statické adresy, označené B, k odvození jedinečné adresy P, na kterou lze posílat bitcoiny. Tato metoda je však příliš zjednodušená a má několik nedostatků, které je třeba odstranit. Prvním problémem je, že v tomto schématu nemůže Alice vytvořit více výstupů na Boba v rámci jedné transakce.

Jak vytvořím více výstupů?

V příkladu v předchozí části Alice vytvoří jeden výstup, který bude odeslán Bobovi na jeho jedinečnou adresu P. Při zvolení stejného vstupu není možné, aby Alice vytvořila dvě samostatné prázdné adresy pro Boba, protože použitá metoda by vedla vždy ke stejnému výsledku pro P, tj. ke stejné adrese. Může však nastat mnoho situací, kdy si Alice přeje rozdělit svou platbu Bobovi na několik menších částek, a vytvořit tak několik UTXO. Je proto nutné najít metodu, jak toho dosáhnout.

Abychom toho dosáhli, mírně upravíme výpočet, který Alice provádí k získání P, aby mohla pro Boba vygenerovat dvě různé adresy, a to P_0 a P_1.

Chcete-li výpočet upravit a získat 2 různé adresy, stačí přidat celé číslo, které výsledek upraví. Alice tedy do svého výpočtu přidá 0, aby získala adresu P_0, a 1, aby získala adresu P_1. Nazvěme toto celé číslo i :

P_i = B + \text{hash}(a \cdot B \text{ ‖ } i) \cdot G

Postup výpočtu zůstává stejný jako u předchozí metody, jen tentokrát Alice před provedením hashování spojí a \cdot B s i. Poté stačí upravit i a získat novou adresu patřící Bobovi. Například:

P_0 = B + \text{hash}(a \cdot B \text{ ‖ } 0) \cdot G

P_1 = B + \text{hash}(a \cdot B \text{ ‖ } 1) \cdot G

Když Bob prohledává blockchain kvůli tichým platbám určeným pro něj, začne s použitím i = 0 pro adresu P_0. Pokud na adrese P_0 nenajde žádné platby, dojde k závěru, že tato transakce neobsahuje žádné Tiché platby určené pro něj, a skenování přeruší. Pokud je však P_0 platná a obsahuje platbu určenou pro něj, pokračuje v téže transakci s P_1, aby zkontroloval, zda Alice provedla druhou platbu. Pokud se ukáže, že P_1 je neplatný, přestane tuto transakci prohledávat; v opačném případě pokračuje v testování po sobě jdoucích hodnot i:

P_0 = B + \text{hash}(b \cdot A \text{ ‖ } 0) \cdot G

P_1 = B + \text{hash}(b \cdot A \text{ ‖ } 1) \cdot G

Vzhledem k tomu, že se Bob okamžitě zastaví na i = 0, pokud P_0 nefunguje, nepřidává použití tohoto celého čísla Bobovi téměř žádnou další operační zátěž pro fázi skenování transakcí.

Bob pak může stejným způsobem vypočítat soukromé klíče:

p_0 = (b + \text{hash}(b \cdot A \text{ ‖ } 0)) \bmod n
p_1 = (b + \text{hash}(b \cdot A \text{ ‖ } 1)) \bmod n
BTC204

Legenda:

Touto metodou začínáme získávat pěkný protokol, ale stále je třeba překonat několik problémů, v neposlední řadě zabránit opakovanému použití adresy.

Jak zabránit opakovanému použití adresy?

Jak jsme viděli v předchozích částech, Alice používá dvojici klíčů, která zabezpečuje její UTXO, a kterou použije k výpočtu sdíleného tajemství ECDH s Bobem. Toto tajemství jí umožní odvodit jedinečnou adresu P_0. Dvojice klíčů (a, A), kterou Alice používá, však může zabezpečit několik UTXO, pokud tuto adresu použila několikrát. V případě, že by Alice provedla dvě platby na Bobovu statickou adresu B pomocí dvou UTXO zabezpečených stejným klíčem A, došlo by u Boba k opakovanému použití adresy.

Opakované použití adresy je z hlediska důvěrnosti uživatelů velmi špatná praxe. Chcete-li zjistit proč, doporučuji vám projít si první části tohoto školení. Jelikož je unikátní adresa P_0 odvozena z A a B, tak pokud Alice odvodí druhou adresu pro druhou platbu do B se stejným klíčem A, skončí na přesně stejné adrese P_0. Abychom se tomuto riziku vyhnuli a zabránili opakovanému používání adres v rámci tichých plateb, budeme muset naše výpočty trochu upravit.

Chceme, aby každý UTXO, který Alice spotřebuje jako vstup pro platbu, měl na Bobově straně jedinečnou adresu, i když je několik UTXO zajištěno stejným párem klíčů. Takže vše, co musíme udělat, je přidat odkaz na UTXO při výpočtu jedinečné adresy P_0. Tento odkaz bude jednoduše hash UTXO spotřebovaného jako vstup:

\text{inputHash} = \text{hash}(\text{outpoint} \text{ ‖ } A)

A Alice přidá tento odkaz na vstup pro svůj výpočet jedinečné adresy P_0 :

P_0 = B + \text{hash}(\text{inputHash} \cdot a \cdot B \text{ ‖ } 0) \cdot G

Při skenování může Bob také přidat \text{vstupníHash}, protože k odvození \text{výstupní bod} mu stačí sledovat transakci:

P_0 = B + \text{hash}(\text{inputHash} \cdot b \cdot A \text{ ‖ } 0) \cdot G

Když najde platný klíč P_0, může vypočítat odpovídající soukromý klíč p_0:

p_0 = (b + \text{hash}(\text{inputHash} \cdot b \cdot A \text{ ‖ } 0)) \bmod n
BTC204

Legenda:

V tuto chvíli naše výpočty předpokládají, že Alice používá pro svou transakci jediný vstup. Měla by však být schopna použít více vstupů. V důsledku toho by měl Bob pro každou transakci zahrnující několik vstupů teoreticky vypočítat ECDH pro každý vstup, aby zjistil, zda je platba určena pro něj. Tento způsob je nevyhovující, proto je třeba najít řešení, jak snížit pracovní zátěž!

Tweakování veřejných klíčů do vstupů

Abychom tento problém vyřešili, použijeme místo páru klíčů zajišťujícího konkrétní vstup na straně Alice součet všech párů klíčů použitých na vstupech transakce. Tento součet pak budeme považovat za nový klíčový pár. Tato technika je známá jako "vylepšování".

Představme si například, že Alicina transakce má 3 vstupy, z nichž každý je zabezpečen jiným párem klíčů:

BTC204

Podle dříve popsané metody by Alice musela vybrat jeden pár klíčů z a_0, a_1 a a_2 pro výpočet tajemství ECDH a vygenerovat jednu platební adresu P z Bobovy statické adresy B. Tento přístup však vyžaduje, aby Bob testoval každou možnost postupně, počínaje a_0, pak a_1 a tak dále, dokud neidentifikuje dvojici, která generuje platnou adresu P. Tento postup vyžaduje, aby Bob provedl výpočet ECDH na všech vstupech všech transakcí, což značně zvyšuje operační zátěž skenování.

Abychom se tomu vyhnuli, požádáme Alici, aby vypočítala P pomocí součtu všech vstupních klíčů. Na našem příkladu by se upravený soukromý klíč a vypočítal takto:

a = a_0 + a_1 + a_2

Stejným způsobem mohou Alice a Bob vypočítat upravený veřejný klíč:

A = A_0 + A_1 + A_2

Při této metodě stačí Bobovi vypočítat pouze součet veřejných klíčů transakce a poté vypočítat ECDH tajemství pouze z A, což výrazně snižuje počet výpočtů potřebných pro fázi skenování.

Nezapomeňte však na předchozí část. Do našeho výpočtu jsme přidali hash \text{inputHash}, který se používá jako nonce, aby se zabránilo opakovanému použití adresy:

\text{inputHash} = \text{hash}(\text{outpoint} \text{ ‖ } A)

Pokud však máte v transakci více vstupů, musíte být schopni určit, který \text{výstupní bod} se při tomto výpočtu vybere. Podle BIP352 je kritériem výběru \text{outpoint}, které se má použít, výběr nejmenšího lexikograficky, což znamená výběr UTXO, které se objeví jako první v abecedním pořadí. Tato metoda standardizuje výběr UTXO v každé transakci. Pokud je například tento lexikograficky nejmenší \text{outpoint} \text{outpoint}_L, výpočet \text{inputHash} bude :

\text{inputHash} = \text{hash}(\text{outpoint}_L \text{ ‖ } A)

Výpočty pak zůstávají totožné s výpočty uvedenými v předchozí části, s tím rozdílem, že soukromý klíč a a jemu odpovídající veřejný klíč A již nepředstavují dvojici použitou k zabezpečení jednoho vstupu, ale nyní představují vylepšení pro všechny dvojice klíčů na vstupech.

Oddělené klíče výdajů a skenování

Prozatím jsme statickou adresu tiché platby B označovali jako jedinečný veřejný klíč. Nezapomeňte, že právě tento veřejný klíč B používá Alice k vytvoření sdíleného tajemství ECDH, které následně vypočítá jedinečnou platební adresu P. Bob používá tento veřejný klíč B a odpovídající soukromý klíč b pro fázi skenování. Soukromý klíč b však použije také k výpočtu soukromého klíče p, který umožňuje utrácení z adresy P.

Nevýhodou této metody je, že soukromý klíč b, který se používá k výpočtu všech soukromých klíčů adres, které obdržely Tiché platby, používá Bob také ke skenování transakcí. Tento krok vyžaduje, aby byl klíč b dostupný v softwaru peněženky připojené k internetu, což jej vystavuje většímu riziku krádeže než jeho uchovávání v chladné peněžence. V ideálním případě by bylo výhodné mít možnost využívat Tiché platby a zároveň mít soukromý klíč b, který řídí přístup ke všem ostatním soukromým klíčům, v bezpečí hardwarové peněženky. Naštěstí byl protokol upraven tak, aby právě to umožňoval.

Za tímto účelem vyžaduje BIP352, aby přijímač použil 2 různé páry klíčů:

Tímto způsobem může Bob uchovávat soukromý klíč b_{\text{spend}} v hardwarové peněžence a používat soukromý klíč b_{\text{scan}} v online softwaru k nalezení svých Tichých plateb, aniž by odhalil b_{\text{spend}}. Na druhou stranu jsou veřejné klíče B_{\text{scan}} a B_{\text{spend}} veřejně odhaleny, protože se nacházejí v Bobově statické adrese B :

B = B_{\text{scan}} \text{ ‖ } B_{\text{výdaje}}

Pro výpočet jedinečné platební adresy P_0 patřící Bobovi provede Alice následující výpočet:

P_0 = B_{\text{výdaj}} + \text{hash}(\text{inputHash} \cdot a \cdot B_{\text{scan}} \text{ ‖ } 0) \cdot G

Aby Bob zjistil platby, které jsou mu určeny, provede následující výpočet:

P_0 = B_{\text{výdaj}} + \text{hash}(\text{inputHash} \cdot b_{\text{scan}} \cdot A \text{ ‖ } 0) \cdot G

Jak vidíte, Bob zatím nepotřeboval použít b_{\text{spend}}, který je v jeho hardwarové peněžence. Když chce utratit P_0, může provést následující výpočet, aby zjistil soukromý klíč p_0 :

p_0 = (b_{\text{výdaj}} + \text{hash}(\text{inputHash} \cdot b_{\text{scan}} \cdot A \text{ ‖ } 0)) \bmod n

BTC204

Legenda:

Použití adres SP se štítkem

Bob má tedy statickou adresu B pro Tiché platby, např. :

B = B_{\text{scan}} \text{ ‖ } B_{\text{výdaje}}

Problém této metody spočívá v tom, že neumožňuje oddělit různé platby zaslané na tuto adresu. Pokud má například Bob ve své firmě 2 různé zákazníky a chce rozlišovat platby pro každého z nich, bude potřebovat 2 různé statické adresy. Naivním řešením by při současném přístupu bylo, kdyby si Bob vytvořil dvě samostatné peněženky, každou s vlastní statickou adresou, nebo dokonce zřídil dvě různé statické adresy v rámci jedné peněženky. Toto řešení však vyžaduje skenování celého blockchainu dvakrát (jednou pro každou adresu), aby bylo možné detekovat platby určené pro každou adresu, resp. Toto dvojí skenování nepřiměřeně zvyšuje provozní zátěž Boba.

K vyřešení tohoto problému používá BIP352 systém štítků, který umožňuje různé statické adresy, aniž by se nepřiměřeně zvýšila pracovní zátěž při hledání tichých plateb v blockchainu. Za tímto účelem přidáváme k veřejnému výdajovému klíči B_{\text{spend}} celé číslo m. Toto celé číslo může nabývat hodnoty 1 pro první statickou adresu, pak 2 pro druhou atd. Klíče výdajů B_{\text{výdaje}} se nyní budou nazývat B_m a budou konstruovány tímto způsobem:

B_m = B_{\text{výdaj}} + \text{hash}(b_{\text{scan}} \text{ ‖ } m) \cdot G

Například pro první klíč výdajů s označením 1 :

B_1 = B_{\text{výdaj}} + \text{hash}(b_{\text{scan}} \text{ ‖ } 1) \cdot G

Statická adresa zveřejněná Bobem se nyní bude skládat z B_{\text{scan}} a B_m. Například první statická adresa s označením 1 bude :

B = B_{\text{scan}} \text{ ‖ } B_1

Začínáme pouze od štítku 1, protože štítek 0 je vyhrazen pro změnu. Alice zase získá adresu jediné platby P stejným způsobem jako dříve, ale místo B_{\text{spend}} použije nový B_1 :

P_0 = B_1 + \text{hash}(\text{inputHash} \cdot a \cdot B_{\text{scan}} \text{ ‖ } 0) \cdot G

Ve skutečnosti Alice ani nemusí nutně vědět, že Bob má označenou adresu, protože prostě používá druhou část statické adresy, kterou jí poskytl, a v tomto případě je to hodnota B_1, nikoli B_{text{spend}}.

Pro skenování plateb bude Bob vždy používat hodnotu své počáteční statické adresy s B_{\text{spend}} tímto způsobem:

P_0 = B_{\text{výdaj}} + \text{hash}(\text{inputHash} \cdot b_{\text{scan}} \cdot A \text{ ‖ } 0) \cdot G

Pak jednoduše odečte zjištěnou hodnotu P_0 od každého výstupu po jedné. Poté zkontroluje, zda jeden z výsledků těchto odečtů odpovídá hodnotě jednoho ze štítků, které používá ve svém portfoliu. Pokud se například výstup č. 4 shoduje se štítkem 1, znamená to, že tento výstup je Tichá platba spojená s jeho staticky označenou adresou B_1 :

Out_4 - P_0 = \text{hash}(b_{\text{scan}} \text{ ‖ } 1) \cdot G

Funguje to, protože :

B_1 = B_{\text{výdaj}} + \text{hash}(b_{\text{scan}} \text{ ‖ } 1) \cdot G

Díky této metodě může Bob používat množství statických adres (B_1, B_2, B_3...), které jsou odvozeny od jeho základní statické adresy (B = B_{\text{sken}} \text{ ‖ } B_{\text{výdaj}}), aby bylo možné oddělit jejich používání.

Upozorňujeme však, že toto oddělení statických adres platí pouze z hlediska správy osobního portfolia, ale neodděluje identity. Protože všechny mají stejný B_{\text{scan}}, je velmi snadné spojit všechny statické adresy dohromady a odvodit, že patří jedné entitě.

BTC204

Legenda:

Jak vytvořím adresu Tiché platby?

Chcete-li vytvořit adresu určenou pro tiché platby, musíte nejprve získat 2 páry klíčů z peněženky Bitcoin HD:

Tyto páry jsou odvozeny pomocí následujících cest (Bitcoin Mainnet):

scan : m / 352' / 0' / 0' / 1' / 0
spend : m / 352' / 0' / 0' / 0' / 0

Jakmile máme tyto dva páry klíčů, jednoduše je spojíme (end-to-end) a vytvoříme tak užitečné zatížení statické adresy:

B = B_{\text{scan}} \text{ ‖ } B_{\text{výdaje}}

Pokud chceme použít štítky, nahradíme B_{\text{výdaj}} za B_m :

B = B_{\text{scan}} \text{ ‖ } B_m

Se značkou m :

B_m = B_{\text{výdaj}} + \text{hash}(b_{\text{scan}} \text{ ‖ } m) \cdot G

Jakmile máme tento náklad, přidáme HRP (Human-Readable Part) sp a verzi q (= verze 0). Přidáme také kontrolní součet a adresu naformátujeme jako bech32m.

Například zde je moje statická adresa Silent Payments:

sp1qqvhjvsq2vz8zwrw372vuzle7472zup2ql3pz64yn5cpkw5ngv2n6jq4nl8cgm6zmu48yk3eq33ryc7aam6jrvrg0d0uuyzecfhx2wgsumcurv77e

Důležitým bodem týkajícím se statických adres, který jste možná pochopili v předchozích částech, je, že tyto adresy nejsou v transakcích Bitcoinu viditelné. V blockchainu se objevují pouze platební adresy P použité ve výstupech ve standardním formátu Taproot. Zvenčí tedy není možné odlišit transakci zahrnující tichou platbu od běžné transakce využívající výstupy P2TR.

Stejně jako v případě BIP47 nelze vytvořit spojení mezi statickou adresou B a platební adresou P odvozenou z B. Ve skutečnosti, i když se potenciální útočník Eve pokusí prohledat blockchain s Bobovou statickou adresou B, nebude schopen provést výpočty potřebné k určení P. K tomu by potřebovala buď Bobův soukromý klíč b_{\text{scan}}, nebo soukromé klíče odesílatele a, ale oba jsou samozřejmě soukromé. Je tedy možné explicitně spojit svou statickou adresu s určitou formou osobní identity.

Jak používat tiché platby?

Návrh tichých plateb je relativně nový a v současné době jej implementoval jen velmi omezený počet peněženek. Pokud je mi známo, existují pouze tři softwarové produkty, které je podporují:

Brzy vám poskytneme podrobný návod, jak si nastavit vlastní statickou adresu Silent Payments.

Vzhledem k tomu, že tato funkce je nová, doporučujeme vám, abyste byli opatrní a nepoužívali Tiché platby pro velké částky v mainnetu.

K vytvoření této kapitoly o tichých platbách jsem použil stránku s vysvětlením tichých plateb a dokument s vysvětlením BIP352.

Sekce finále

Recenze a hodnocení

true

Závěrečná zkouška

true

Závěr

true