Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Chave filha

Outros nomes: Chave pública filha, Chave privada filha.

O que é uma chave filha?
Uma chave filha vem de uma etapa de derivação e não de um gerador de números aleatórios, identificada pelo índice que sua chave pai usou para produzi-la.

Especificação no BIP-32.

Nada em uma chave filha é mais fraco do que a chave acima dela. Uma chave filha é uma chave privada completa de 256 bits com um código de cadeia próprio, capaz de assinar transações e de ter chaves filhas por sua vez. A palavra descreve uma posição em uma árvore, e em uma carteira padrão as chaves que de fato guardam seus bitcoins ficam cinco níveis abaixo da raiz.

Como funciona

Derivar uma chave filha exige um hash e uma soma. O código de cadeia da chave pai se torna a chave do HMAC-SHA512, os dados são o material da chave pai seguido de um índice de quatro bytes, e o resultado de 64 bytes se divide pela metade. Os 32 bytes da direita se tornam o código de cadeia da chave filha. Os 32 bytes da esquerda são somados à chave privada pai, módulo a ordem da curva secp256k1, e a soma é a chave privada filha.

Essa soma é a razão de a derivação pública ser possível. Somar um número a uma chave privada corresponde a somar um ponto à chave pública, então um software que tenha apenas a parte pública pode calcular a mesma chave pública filha sem nunca ver um segredo. O BIP-32 também trata do caso em que a saída do hash cai fora do intervalo válido, cuja probabilidade ele situa abaixo de 1 em 2 elevado a 127, e a instrução é pular esse índice e passar para o seguinte.

Chaves irmãs não revelam nada. Duas chaves filhas de uma mesma chave pai não compartilham nada que um observador possa detectar a partir de seus endereços, e é isso que torna útil usar um endereço novo a cada pagamento. A relação só pode ser recuperada por quem tem a chave pública estendida pai.

Onde você vê isso

Uma carteira é de fato construída de chaves filhas, então você as encontra como números de índice e não como chaves.

Abra uma tela de controle de moedas no Sparrow ou no Electrum e cada endereço traz seu caminho: m/84'/0'/0'/0/7 é o oitavo endereço de recebimento da primeira conta, contando de zero. Confirme um saque em uma Trezor ou em uma Ledger e o dispositivo mostra esse mesmo caminho ao lado do endereço, que é como você verifica que o destino pertence à sua própria árvore e não a quem comprometeu o computador.

A profundidade também vale a leitura. A chave mestra fica na profundidade 0, e em um caminho no estilo BIP-44 a chave que assina um pagamento fica na profundidade 5. Cada nível entre elas é filho do de cima e pai do de baixo, então ambas as palavras descrevem uma relação e não um posto.

Um hábito decorre de tudo isso. Nunca exporte uma chave privada filha individual de uma carteira HD, a menos que você pretenda abandonar a ramificação por completo. Uma chave privada filha não endurecida combinada com a chave pública estendida pai revela a chave privada estendida pai, então uma única exportação descuidada pode entregar uma conta inteira em vez de um endereço.

Chave filha vs chave pai

Uma chave filha e uma chave pai são o mesmo tipo de objeto visto das extremidades opostas de uma etapa de derivação. Toda chave, exceto a mestra, é filha de alguém, e toda chave da qual se derivou é pai de alguém, então um nó em m/84'/0'/0' é as duas coisas ao mesmo tempo. A assimetria está no que cada uma pode calcular. Uma chave pai deriva suas chaves filhas sem limite, enquanto uma chave filha, sozinha, não diz nada sobre a chave acima dela. Essa propriedade unidirecional é todo o modelo de segurança da árvore, e a derivação endurecida é o que a mantém unidirecional.

Não confundir com

Perguntas frequentes

Uma chave filha é menos segura que a chave mestra?

Não. Uma chave filha é uma chave privada completa de 256 bits e assinar com ela é exatamente tão forte. A diferença é de posição: uma chave filha pode ser regenerada a partir de sua chave pai, enquanto a chave pai não pode ser regenerada a partir da chave filha.

Posso exportar apenas uma chave filha para mover um único endereço?

Pode, e não deveria. Uma chave privada filha não endurecida entregue a alguém que também tem a chave pública estendida pai permite reconstruir a chave privada pai e gastar toda a ramificação.

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês