Xpub: o que revela a chave pública da sua carteira Bitcoin

Uma xpub permite encontrar todos os endereços de uma conta Bitcoin e, com eles, todo o histórico, sem poder gastar. O que revela, o seu risco e a quem a deve dar.

Uma xpub (chave pública estendida) é a chave pública de uma conta de carteira Bitcoin da qual são derivados todos os seus endereços: quem a detém vê cada pagamento recebido e enviado por essa conta, mas não pode gastar nada.

O que contém uma xpub

A norma BIP32 descreve as carteiras hierárquicas determinísticas: uma única semente produz toda uma árvore de chaves. Uma chave estendida acrescenta à chave um código de cadeia (chain code), que serve para calcular as respetivas chaves filhas. Segundo o BIP32, conhecer uma chave pública estendida permite reconstruir todas as suas chaves públicas filhas não reforçadas (non-hardened).

As carteiras organizam estas chaves segundo o caminho do BIP44: m / purpose' / coin_type' / account' / change / address_index. A xpub que uma carteira mostra é a do nível account'. Abrange duas cadeias de endereços: 0 para os endereços de receção, 1 para os endereços de troco, que recebem o troco dos seus próprios envios.

xpub, ypub ou zpub

O prefixo indica que tipo de endereço a conta utiliza:

PrefixoNormaCaminho da primeira contaEndereços
xpubBIP44m/44'/0'/0'Endereços antigos, que começam por 1
ypubBIP49m/49'/0'/0'SegWit aninhado, que começam por 3
zpubBIP84m/84'/0'/0'SegWit nativo, que começam por bc1q

As três são o mesmo tipo de chave: só mudam os bytes de versão e, com eles, as primeiras letras.

O que uma xpub revela

  • Todos os endereços da conta, passados e futuros: são derivados um a um, sem limite.
  • Todo o histórico: cada receção, cada envio, cada montante, já que a blockchain é pública.
  • O saldo da conta, a qualquer momento.
  • Nada para gastar: sem chave privada, nenhuma transação pode ser assinada.

O próprio BIP32 refere este uso: entregar a chave pública estendida de uma conta a um auditor permite-lhe ver todos os pagamentos de entrada e de saída, sem acesso a nenhuma chave secreta. Quem tem a sua xpub tem a visão desse auditor, para sempre: uma xpub não pode ser revogada.

O risco a conhecer

Uma xpub sozinha não permite gastar. Mas o BIP32 avisa: conhecer uma chave pública estendida e qualquer chave privada não reforçada que dela descenda equivale a conhecer a chave privada estendida mãe. Por outras palavras, a sua xpub e a chave privada de um só dos seus endereços bastam para gastar a conta inteira.

O nível account' é reforçado: uma fuga deste tipo fica limitada à conta em causa e não atinge as outras contas da mesma semente. Exporte, portanto, uma xpub, nunca a chave privada de um endereço, e nunca revele a sua frase de recuperação.

Como um programa encontra os endereços

Um programa que lê uma xpub deriva os endereços por ordem e para após uma sequência de endereços nunca utilizados: o BIP44 fixa esse limite (gap limit) em 20. Se criou mais de 20 endereços seguidos sem os utilizar, um programa que siga esta regra não verá os seguintes.

Para ler os saldos, o programa consulta depois um servidor ou um nó, endereço a endereço. Esse servidor fica então a conhecer todos os seus endereços e pode associá-los entre si: é a outra fuga, que não vem da própria xpub, mas da forma de a ler.

Antes de dar a sua xpub

  • Pergunte-se quem a guarda: uma aplicação que guarda a sua xpub nos respetivos servidores conhece a sua conta durante todo esse tempo, e uma fuga dos respetivos dados expõe-na.
  • Prefira uma leitura local: uma carteira ligada ao seu próprio nó, ou uma ferramenta que deriva os endereços no seu dispositivo, não confia a xpub a ninguém.
  • Uma conta para cada uso: outra conta (o account' seguinte) tem outra xpub, que não revela nada das outras contas.

Como o CentraFIN lê a sua xpub

O CentraFIN lê a sua xpub no seu dispositivo: o seu navegador deriva os endereços, lê os respetivos saldos por uma ligação encriptada ponto a ponto e guarda tudo num cofre que ele próprio encripta. O servidor do CentraFIN nunca vê a sua xpub, um endereço nem um saldo. Cada endereço é sempre lido no mesmo nó, escolhido ao acaso, para que nenhum nó veja a conta inteira. Os pormenores estão na página Bitcoin.

Fontes

Perguntas frequentes

É possível roubar bitcoins com uma xpub?

Só com a xpub, não: ela não permite assinar. Juntando-lhe a chave privada de um dos endereços da conta, sim: a conta inteira.

Uma xpub basta para ver o meu saldo?

Sim. Dá todos os endereços da conta, e a blockchain dá os respetivos saldos e transações.

O que fazer se a minha xpub tiver sido exposta?

Não pode ser revogada: quem a tem verá sempre essa conta. Daqui em diante, use uma conta nova cuja xpub nunca tenha sido partilhada. A transferência a partir da conta antiga, essa, continuará visível.

Qual é a diferença entre xpub, ypub e zpub?

O tipo de endereço da conta: endereços que começam por 1 para a xpub, por 3 para a ypub (SegWit aninhado) e por bc1q para a zpub (SegWit nativo).

Assuma o controlo do seu património

A sua conta fica pronta num minuto, sem palavra-passe.