Xpub: cosa rivela la chiave pubblica del tuo wallet Bitcoin
Una xpub permette di ritrovare tutti gli indirizzi di un account Bitcoin, e quindi tutto il suo storico, senza poter spendere. Cosa rivela, qual è il suo rischio e a chi darla.
Una xpub (chiave pubblica estesa) è la chiave pubblica di un account di un wallet Bitcoin da cui si derivano tutti i suoi indirizzi: chi la possiede vede ogni pagamento ricevuto e inviato da quell'account, ma non può spendere nulla.
Cosa contiene una xpub
Lo standard BIP32 descrive i wallet gerarchici deterministici: un solo seed produce un intero albero di chiavi. Una chiave estesa aggiunge alla chiave un codice di catena (chain code), che serve a calcolare le sue chiavi figlie. Secondo BIP32, conoscere una chiave pubblica estesa permette di ricostruire tutte le sue chiavi pubbliche figlie non rafforzate (non-hardened).
I wallet ordinano queste chiavi secondo il percorso di BIP44: m / purpose' / coin_type' / account' / change / address_index. La xpub che mostra un wallet è quella del livello account'. Copre due catene di indirizzi: 0 per gli indirizzi di ricezione, 1 per gli indirizzi di resto, che ricevono il resto dei tuoi stessi invii.
xpub, ypub o zpub
Il prefisso dice quale tipo di indirizzo usa l'account:
| Prefisso | Standard | Percorso del primo account | Indirizzi |
|---|---|---|---|
xpub | BIP44 | m/44'/0'/0' | Vecchi indirizzi, che iniziano con 1 |
ypub | BIP49 | m/49'/0'/0' | SegWit annidato, che iniziano con 3 |
zpub | BIP84 | m/84'/0'/0' | SegWit nativo, che iniziano con bc1q |
Tutte e tre sono lo stesso tipo di chiave: cambiano solo i loro byte di versione, e quindi le loro prime lettere.
Cosa rivela una xpub
- Tutti gli indirizzi dell'account, passati e futuri: si derivano uno per uno, senza limite.
- Tutto lo storico: ogni ricezione, ogni invio, ogni importo, dato che la blockchain è pubblica.
- Il saldo dell'account, in qualsiasi momento.
- Niente per spendere: senza chiave privata, nessuna transazione può essere firmata.
È BIP32 stesso a indicare questo uso: consegnare a un revisore la chiave pubblica estesa di un account gli permette di vedere tutti i pagamenti in entrata e in uscita, senza accesso ad alcuna chiave segreta. Chi ha la tua xpub ha la vista di quel revisore, per sempre: una xpub non si può revocare.
Il rischio da conoscere
Una xpub da sola non permette di spendere. Ma BIP32 avverte: conoscere una chiave pubblica estesa e una qualsiasi chiave privata non rafforzata che ne discende equivale a conoscere la chiave privata estesa genitore. In altre parole, la tua xpub e la chiave privata di uno solo dei tuoi indirizzi bastano per spendere l'intero account.
Il livello account' è rafforzato: una fuga del genere resta limitata all'account interessato e non raggiunge gli altri account dello stesso seed. Esporta quindi una xpub, mai la chiave privata di un indirizzo, e non dare mai la tua frase di recupero.
Come un software ritrova gli indirizzi
Un software che legge una xpub deriva gli indirizzi in ordine e si ferma dopo una serie di indirizzi mai usati: BIP44 fissa questo limite (gap limit) a 20. Se hai creato più di 20 indirizzi di fila senza usarli, un software che segue questa regola non vedrà quelli successivi.
Per leggere i saldi, il software interroga poi un server o un nodo, indirizzo per indirizzo. Quel server viene così a conoscere tutti i tuoi indirizzi e può collegarli tra loro: è l'altra fuga, che non viene dalla xpub in sé, ma dal modo di leggerla.
Prima di dare la tua xpub
- Chiediti chi la conserva: un'app che conserva la tua xpub sui suoi server conosce il tuo account per tutto quel tempo, e una fuga dei suoi dati la espone.
- Preferisci una lettura locale: un wallet collegato al tuo nodo, o uno strumento che deriva gli indirizzi sul tuo dispositivo, non affida la xpub a nessuno.
- Un account per ogni uso: un altro account (il successivo
account') ha un'altra xpub, che non rivela nulla degli altri account.
Come CentraFIN legge la tua xpub
CentraFIN legge la tua xpub sul tuo dispositivo: il tuo browser deriva gli indirizzi, ne legge i saldi tramite una connessione cifrata end-to-end e conserva tutto in una cassaforte che cifra da sé. Il server di CentraFIN non vede mai la tua xpub, un indirizzo o un saldo. Ogni indirizzo viene sempre letto sullo stesso nodo, scelto a caso, così nessun nodo vede l'intero account. I dettagli sono nella pagina Bitcoin.
Fonti
- BIP32: wallet gerarchici deterministici
- BIP44: percorso di derivazione e gap limit
- BIP49: ypub, SegWit annidato
- BIP84: zpub, SegWit nativo
Domande frequenti
Si possono rubare bitcoin con una xpub?
Con la sola xpub no: non permette di firmare. Se in più si ha la chiave privata di uno degli indirizzi dell'account, sì: l'intero account.
Una xpub basta per vedere il mio saldo?
Sì. Dà tutti gli indirizzi dell'account, e la blockchain dà i loro saldi e le loro transazioni.
Cosa fare se la mia xpub è trapelata?
Non si può revocare: chi ce l'ha vedrà sempre quell'account. D'ora in poi, usa un nuovo account la cui xpub non sia mai stata condivisa. Il trasferimento dal vecchio account, invece, resterà visibile.
Che differenza c'è tra xpub, ypub e zpub?
Il tipo di indirizzo dell'account: indirizzi che iniziano con 1 per la xpub, con 3 per la ypub (SegWit annidato) e con bc1q per la zpub (SegWit nativo).
Prendi il controllo del tuo patrimonio
Il tuo account è pronto in un minuto, senza password.