Xpub: co ujawnia klucz publiczny Twojego portfela Bitcoin

Xpub pozwala odnaleźć wszystkie adresy konta Bitcoin, a więc całą jego historię, bez możliwości wydania środków. Co ujawnia, jakie niesie ryzyko i komu go przekazać.

Xpub (rozszerzony klucz publiczny) to klucz publiczny konta portfela Bitcoin, z którego wyprowadza się wszystkie jego adresy: kto go posiada, widzi każdą płatność otrzymaną i wysłaną przez to konto, ale nie może niczego wydać.

Co zawiera xpub

Standard BIP32 opisuje hierarchiczne portfele deterministyczne: jedno ziarno tworzy całe drzewo kluczy. Klucz rozszerzony dodaje do klucza kod łańcucha (chain code), który służy do obliczania jego kluczy podrzędnych. Według BIP32 znajomość rozszerzonego klucza publicznego pozwala odtworzyć wszystkie jego nieutwardzone (non-hardened) podrzędne klucze publiczne.

Portfele układają te klucze według ścieżki BIP44: m / purpose' / coin_type' / account' / change / address_index. Xpub, który pokazuje portfel, to klucz z poziomu account'. Obejmuje on dwa łańcuchy adresów: 0 dla adresów odbiorczych, 1 dla adresów reszty, na które wraca reszta z Twoich własnych wysyłek.

xpub, ypub czy zpub

Prefiks mówi, jakiego typu adresów używa konto:

PrefiksStandardŚcieżka pierwszego kontaAdresy
xpubBIP44m/44'/0'/0'Starsze adresy, zaczynające się od 1
ypubBIP49m/49'/0'/0'Zagnieżdżony SegWit, adresy zaczynające się od 3
zpubBIP84m/84'/0'/0'Natywny SegWit, adresy zaczynające się od bc1q

Wszystkie trzy to ten sam rodzaj klucza: zmieniają się tylko jego bajty wersji, a więc i pierwsze litery.

Co ujawnia xpub

  • Wszystkie adresy konta, przeszłe i przyszłe: wyprowadza się je jeden po drugim, bez ograniczeń.
  • Cała historia: każdy wpływ, każda wysyłka, każda kwota, ponieważ blockchain jest publiczny.
  • Saldo konta, w każdej chwili.
  • Nic, co pozwala wydawać: bez klucza prywatnego nie da się podpisać żadnej transakcji.

BIP32 sam podaje takie zastosowanie: przekazanie rozszerzonego klucza publicznego konta audytorowi pozwala mu widzieć wszystkie płatności przychodzące i wychodzące, bez dostępu do jakiegokolwiek klucza tajnego. Kto ma Twój xpub, ma widok tego audytora, na zawsze: xpub nie da się odwołać.

Ryzyko, które trzeba znać

Sam xpub nie pozwala wydawać środków. BIP32 ostrzega jednak: znajomość rozszerzonego klucza publicznego i dowolnego nieutwardzonego klucza prywatnego, który od niego pochodzi, jest równoznaczna ze znajomością nadrzędnego rozszerzonego klucza prywatnego. Innymi słowy, Twój xpub i klucz prywatny jednego tylko z Twoich adresów wystarczą, by wydać środki z całego konta.

Poziom account' jest utwardzony: taki wyciek ogranicza się do danego konta i nie sięga innych kont z tego samego ziarna. Eksportuj więc xpub, nigdy klucz prywatny adresu, i nigdy nie podawaj swojej frazy odzyskiwania.

Jak oprogramowanie odnajduje adresy

Oprogramowanie, które odczytuje xpub, wyprowadza adresy po kolei i zatrzymuje się po serii adresów, które nigdy nie zostały użyte: BIP44 ustala ten limit (gap limit) na 20. Jeśli utworzysz ponad 20 adresów z rzędu i z nich nie skorzystasz, oprogramowanie stosujące tę regułę nie zobaczy kolejnych.

Aby odczytać salda, oprogramowanie odpytuje następnie serwer lub węzeł, adres po adresie. Ten serwer poznaje wtedy wszystkie Twoje adresy i może je ze sobą powiązać: to drugi wyciek, który nie wynika z samego xpub, lecz ze sposobu jego odczytu.

Zanim przekażesz swój xpub

  • Zastanów się, kto go przechowuje: aplikacja, która trzyma Twój xpub na swoich serwerach, zna Twoje konto tak długo, jak go trzyma, a wyciek jej danych je ujawnia.
  • Wybieraj odczyt lokalny: portfel połączony z Twoim własnym węzłem albo narzędzie, które wyprowadza adresy na Twoim urządzeniu, nikomu nie powierza xpub.
  • Jedno konto do jednego celu: inne konto (kolejny account') ma inny xpub, który nic nie ujawnia o pozostałych kontach.

Jak CentraFIN odczytuje Twój xpub

CentraFIN odczytuje Twój xpub na Twoim urządzeniu: Twoja przeglądarka wyprowadza adresy, odczytuje ich salda przez połączenie szyfrowane end-to-end i przechowuje wszystko w sejfie, który sama szyfruje. Serwer CentraFIN nigdy nie widzi Twojego xpub, adresu ani salda. Każdy adres jest zawsze odczytywany z tego samego, losowo wybranego węzła, dzięki czemu żaden węzeł nie widzi całego konta. Szczegóły znajdziesz na stronie Bitcoin.

Źródła

Najczęściej zadawane pytania

Czy za pomocą xpub można ukraść bitcoiny?

Nie samym xpub: nie pozwala on podpisywać. Jeśli ktoś ma do tego klucz prywatny jednego z adresów konta, tak: całe konto.

Czy xpub wystarczy, by zobaczyć moje saldo?

Tak. Daje wszystkie adresy konta, a blockchain podaje ich salda i transakcje.

Co zrobić, jeśli mój xpub wyciekł?

Nie da się go odwołać: kto go ma, zawsze będzie widział to konto. Na przyszłość używaj nowego konta, którego xpub nigdy nie był udostępniany. Natomiast transfer ze starego konta pozostanie widoczny.

Jaka jest różnica między xpub, ypub i zpub?

Typ adresów konta: adresy zaczynające się od 1 dla xpub, od 3 dla ypub (zagnieżdżony SegWit), od bc1q dla zpub (natywny SegWit).

Przejmij kontrolę nad swoim majątkiem

Twoje konto jest gotowe w minutę, bez hasła.