136 / 736V2P2P

BIP324

Šifrované spojení mezi uzly

Bitcoinové uzly si předávají transakce a bloky. BIP324 pomáhá, aby člověk sledující jejich internetové spojení nemohl tyto zprávy jednoduše číst. Nečiní však uzel anonymním a nezbavuje ho povinnosti přijatá data ověřit.

BIP324 popisuje, jak šifrovat zprávy, které si mezi sebou předávají bitcoinové uzly. Uzel je program, který ověřuje transakce a bloky a komunikuje s dalšími účastníky sítě. Toto přímé spojení mezi účastníky sítě se označuje P2P a jeho šifrovaná varianta jako v2 transport. Člověk, který spojení jen odposlouchává, nemá jednoduše číst jeho obsah. Šifrování ale samo nepotvrzuje, se kterým uzlem opravdu komunikujete. Veřejný blockchain ani pravidla platnosti transakcí se tím nemění.

Blok je dávka transakcí zařazená do společné historie Bitcoinu. Bloky jsou veřejné, ale pozorovat jejich šíření není totéž jako číst hotový řetězec. Kdo sleduje nešifrované spojení, vidí také pořadí zpráv, dotazy a okamžik, kdy uzel transakci předal. To může pomoci spojovat síťový provoz s konkrétními lidmi. BIP324 omezuje snadné čtení tohoto obsahu pasivním pozorovatelem. [1] [2] [7]

Dva podporující uzly si při navázání spojení dohodnou klíče a dál komunikují šifrovaně. Nemusí předem znát totožnost druhé strany ani mít certifikát od centrální autority. Právě proto slovo šifrované neznamená důvěryhodné. Protější uzel zprávy samozřejmě čte a stále může patřit útočníkovi. [1]

Při úvodním navázání spojení, kterému se říká handshake, si oba uzly vytvoří dočasné klíče. Soukromý klíč je tajný číselný údaj; odpovídající veřejný klíč lze sdílet s ostatními. Pomocí ECDH pak každý z nich vypočítá stejné sdílené tajemství, aniž by si posílaly své soukromé klíče. Z něj se odvodí klíče pro ochranu přenosu. ElligatorSwift je způsob zápisu veřejných klíčů, díky kterému tato část výměny připomíná náhodná data a hůře se rozpoznává podle pevného vzoru. Jde výhradně o klíče síťového spojení. Nejsou to privátní klíče k bitcoinům ani seed, tajný výchozí údaj pro odvození klíčů peněženky. Zapnutí šifrovaného přenosu nevyžaduje nikomu sdělit zálohu peněženky. [1] [8]

Představte si, že někdo po cestě zachytí zprávu a změní její obsah. BIP324 používá ChaCha20Poly1305: šifrování doplněné o kontrolu, zda zpráva odpovídá klíči daného spojení a nebyla pozměněna. Útočník bez tohoto klíče nemůže jen přepsat data a vytvořit platnou zprávu. Tato kontrola však neprokazuje, že klíč sdílíte se zamýšleným uzlem. Aktivní prostředník může už při navazování spojení vystupovat vůči každé straně jako její protějšek. Pak má dvě samostatná šifrovaná spojení a zprávy mezi nimi čte a předává. Proto ochrana zpráv a ověření protistrany zůstávají dvě různé věci. [1]

Klíče se během přenosu obměňují. Při správném mazání starých tajemství tak pozdější získání současných klíčů neotevře automaticky celý dřívější záznam komunikace. Tato vlastnost se nazývá forward secrecy. Neochrání však zprávy, které si protější uzel už přečetl nebo uložil. Nepomůže ani proti útočníkovi, který má počítač pod trvalou kontrolou; poslední skupina zpráv navíc může zůstat odhalitelná. [1]

Starší v1 transport zůstává kvůli kompatibilitě podporován. Pokud v2 spojení selže, software může zkusit v1. Aktivní útočník proto může šifrované spojení blokovat a snažit se vynutit nešifrovaný návrat. BIP324 zdražuje pasivní dohled, ale neslibuje obecnou odolnost proti downgradu ani dostupnost spojení. [1] [4]

BIP324 neskrývá IP adresu ani všechny časové a objemové vzorce provozu. IP adresa je síťová adresa, kterou zařízení používá při internetové komunikaci. Tor může řešit jinou část tohoto problému, ani společné použití však nedává automatickou anonymitu. Ať zpráva přijde jakkoli, Full Node musí ověřit transakce, podpisy i bloky. Šifrování samo neřeší Eclipse Attack, při němž uzel obklopí útočníci. [1] [6]

Bitcoin Core 26.0 přidal podporu v2 v roce 2023, tehdy vypnutou ve výchozím nastavení. Verze 27.0 ji zapnula standardně. Rok uvedený u tohoto hesla proto označuje první podporu v Bitcoin Core, ne vznik návrhu. Vyjednání probíhá pro každé spojení zvlášť; podpora programu ještě neznamená, že všechny připojené uzly používají v2. [3] [4]

Provozovatel Bitcoin Core může stav přečíst příkazem bitcoin-cli getpeerinfo. Jde o dotaz přes RPC, rozhraní pro ovládání a získávání údajů z uzlu; tento příkaz nevysílá transakce do bitcoinové sítě ani nemění nastavení. Výstup uvádí každé spojení zvlášť. V poli transport_protocol_type znamená v2 šifrovaný přenos, v1 starší nešifrovaný přenos a detecting dosud nerozhodnutý stav. Pole session_id obsahuje identifikátor v2 spojení; jinak je prázdné. Jeho samotná přítomnost neověřuje protistranu. Pokud dva provozovatelé porovnají identifikátor svého vzájemného spojení jiným důvěryhodným kanálem, mohou odhalit prostředníka; běžné spojení takovou kontrolu automaticky nedělá. Výsledek vypovídá o tomto spoji, nikoli o celé cestě transakce sítí. Výpis navíc obsahuje síťové údaje, které není nutné zveřejňovat. [5] [1]

BIP324 uvádí autory Dhruv Mehta, Tim Ruffing, Jonas Schnelli a Pieter Wuille. Číslo bylo přiděleno v roce 2019; při kontrole 17. října 2026 má návrh stav Deployed. Zavedení nevyžaduje Soft Fork ani změnu nabídky bitcoinů. Jde o postupné zlepšení komunikace mezi uzly, jehož přínos stojí na správné implementaci a skutečně používaných spojeních. [1]

Pro nejúplnější obraz čtěte toto heslo společně s Full Node, Eclipse Attack, Soukromí v Bitcoinu, Bitcoin Core. Opačným směrem na něj odkazují také Mix Network.

DOC · 001BIP 324 — Version 2 P2P Encrypted Transport ProtocolSpecifikace DOC · 002Bitcoin Optech — Version 2 P2P transportDokumentace DOC · 003Bitcoin Core 26.0 releasePrimární zdroj DOC · 004Bitcoin Core 27.0 releasePrimární zdroj DOC · 005Bitcoin Core — getpeerinfo RPCDokumentace DOC · 006Bitcoin Developer Reference — P2P networkDokumentace DOC · 007Bitcoin Developer Guide — Block ChainDokumentace DOC · 008Bitcoin Developer Reference — TransactionsDokumentace
Revidováno: Primární zdroje · Nejde o investiční doporučení