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.