NeonCripto
Por dentro da carteira · 9 de 11

Chave pública estendida (xpub) e carteiras somente leitura

Uma chave pública estendida (xpub) permite gerar endereços de recebimento sem nenhuma chave privada. É assim que carteiras “somente leitura” e servidores de pagamento funcionam.

Mas a xpub revela todo o histórico e os saldos da conta, e, combinada com uma chave filha não hardened vazada, expõe a chave privada do pai.

Laboratório educativo. Todo o cálculo roda no seu navegador, nada é enviado nem salvo. Nunca digite aqui sua frase de recuperação, chave privada ou passphrase reais: os exemplos usam apenas vetores de teste públicos.

Só dados de teste

Nunca cole nem exiba a xprv ou a xpub de uma carteira real. Uma xpub revela todos os endereços e o histórico da conta.

frase / entropiaseedchave privada (segredo)chave pública / endereço (público)

Conta m/84'/0'/0' (exemplo)

Chave pública estendida (xpub)

xpub6CatWdiZiodmUeTDp8LT5or8nmbKNcuyvz7WyksVFkKB4RHwCD3XyuvPEbvqAQY3rAPshWcMLoP2fMFMKHPJ4ZeZXYVUhLv1VMrjPC7PW6V

Chave privada estendida (xprv)

•••••••• (oculta: é segredo)

Carteira somente leitura: só a xpub

Endereços de recebimento m/0/i gerados apenas com a xpub, sem nenhuma chave privada:

  1. 0. bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu ✓ igual ao derivado com a chave privada
  2. 1. bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g ✓ igual ao derivado com a chave privada
  3. 2. bc1qp59yckz4ae5c4efgw2s5wfyvrz0ala7rgvuz8z ✓ igual ao derivado com a chave privada
  4. 3. bc1qgl5vlg0zdl7yvprgxj9fevsc6q6x5dmcyk3cn3 ✓ igual ao derivado com a chave privada
  5. 4. bc1qm97vqzgj934vnaq9s53ynkyf9dgr05rargr04n ✓ igual ao derivado com a chave privada

Limite da xpub: derivação hardened

Filhos hardened usam a chave privada do pai, então não dá para derivá-los a partir da xpub.

Ataque: xpub do pai + chave privada de um filho não hardened

Se alguém tem a xpub da conta e vaza a chave privada de um filho não hardened, calcula a chave privada do pai: k_pai = (k_filho − IL) mod n, em que IL = HMAC-SHA512(chain code, chave pública do pai ‖ índice) é público.

Teste o que aprendeu

1. Uma xpub permite gastar os fundos?
2. Por que não expor a xpub junto com uma chave filha não hardened?
3. Dá para derivar um filho hardened só com a xpub?
0 de 3 respondidas.

Experimente

  • Compare os endereços gerados só com a xpub com os gerados com a chave privada.
  • Rode o vazamento: recupere a chave do pai a partir da xpub e de um filho.
  • Tente derivar um filho hardened a partir da xpub e veja o erro.
Detalhes técnicos
  • Filho não hardened: k_filho = (IL + k_pai) mod n, com IL = HMAC-SHA512(chaincode, pubkey_pai ‖ índice). Como a xpub contém pubkey e chaincode, quem tem k_filho calcula k_pai = (k_filho − IL) mod n.
  • Derivação hardened inclui a chave privada do pai no HMAC, então a xpub não basta para derivá-la.
  • A xpub não gasta fundos, mas compromete a privacidade de todos os endereços da conta.
Próxima lição →Comparar

Termos desta lição

Contas feitas com bibliotecas auditadas (@scure/bip39, @scure/bip32, @noble/curves, @noble/hashes) e conferidas contra os vetores de teste oficiais dos BIP-32, BIP-39 e BIP-84. Conteúdo educativo, não é um gerador nem um serviço de recuperação de carteiras.