Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Derivação hardened

Outros nomes: Chave estendida hardened.

O que é a derivação hardened?
A derivação hardened insere a chave privada pai em cada cálculo de uma chave filha, e é isso que impede que uma chave pública estendida vazada desvende o ramo que está abaixo dela.

Especificação no BIP-32.

Cada nó em uma árvore BIP-32 pode produzir 4.294.967.296 filhos, e a metade superior dessa faixa se comporta de forma diferente. Os índices a partir de 2.147.483.648 são hardened, escritos com um apóstrofo ou com a letra h, e nenhuma chave pública pode derivá-los. Essa restrição é o recurso, não uma deficiência.

Como funciona

A derivação hardened e a normal diferem em uma única entrada do mesmo hash. As duas inserem no HMAC-SHA512 o código de cadeia de uma chave pai e um índice da chave filha. A derivação normal acrescenta a chave pública pai, que qualquer pessoa que tenha a chave pública estendida já possui. A derivação hardened acrescenta a chave privada pai, precedida de um byte zero, de modo que o cálculo não pode ser feito sem o segredo.

O motivo é uma fraqueza específica que o BIP-32 detalha em suas notas de segurança: conhecer uma chave pública estendida pai mais qualquer chave privada não hardened descendente dela equivale a conhecer a chave privada estendida pai e, portanto, todas as chaves abaixo desse ponto. A aritmética por trás disso é simples. Uma chave privada filha normal é igual à chave pai mais um valor calculado a partir de informação pública, então subtrair esse valor recupera a chave pai.

Os índices hardened fecham essa rota. Não existe função de derivação pública para eles, então uma chave pública estendida para em seco na fronteira. Uma xpub vazada de uma conta expõe o histórico dessa conta e nada acima nem ao lado dela.

Onde você vê isso

O hardening aparece como os apóstrofos em um caminho de derivação, e onde eles ficam é uma decisão de projeto deliberada.

O caminho padrão do SegWit nativo é m/84'/0'/0'/0/0. Os três primeiros níveis, propósito, tipo de moeda e conta, são hardened. Os dois últimos, cadeia e índice de endereço, não são. Essa divisão é exatamente o que torna viável uma carteira de observação: uma chave pública estendida de conta pode gerar todos os endereços de recebimento e de troco abaixo dela, enquanto um atacante que obtenha essa mesma xpub não pode subir em direção à chave mestra nem se deslocar lateralmente para m/84'/0'/1'.

A notação varia sem mudar nada. O BIP-32 escreve 0', muitas ferramentas aceitam 0h, e o Bitcoin Core escreve h nos descritores que exporta porque um apóstrofo precisa ser escapado dentro do JSON. Um caminho copiado do Sparrow para o Core volta reescrito na forma h, o que assusta as pessoas na primeira vez e é puramente cosmético.

A regra prática é curta. Aplique hardening em cada nível até a conta, deixe sem hardening os dois níveis abaixo dela para que as ferramentas de observação continuem funcionando, e trate qualquer software que ofereça exportar uma única chave privada filha não hardened como um perigo, e não como uma comodidade, porque essa exportação combinada com sua xpub é o ramo inteiro.

Derivação hardened vs uma frase secreta

A derivação hardened é automática; uma frase secreta BIP-39 é um segredo que você escolhe. As duas são agrupadas como formas de aplicar hardening a uma carteira e tratam de problemas sem relação entre si. O hardening protege uma árvore contra uma chave pública estendida que escapou, e toda carteira padrão já o aplica sem perguntar a você. Uma frase secreta é uma entrada extra misturada à semente antes mesmo de a árvore ser construída, produzindo uma carteira completamente separada a partir das mesmas doze ou vinte e quatro palavras. Esqueça a frase secreta e os bitcoins ficam inalcançáveis, porque nada a registra em lugar algum. Esqueça o hardening e nada acontece, porque nunca foi você quem decidia isso.

Não confundir com

Perguntas frequentes

O que significa o apóstrofo em m/84'/0'/0'?

Ele marca um nível hardened, ou seja, o índice é 2.147.483.648 ou superior e a chave filha só pode ser derivada com a chave privada pai. Algumas ferramentas escrevem h em seu lugar, e o Bitcoin Core usa h nos descritores porque o JSON exigiria que o apóstrofo fosse escapado.

Preciso configurar a derivação hardened eu mesmo?

Não. Toda carteira que segue o BIP-44, o BIP-49, o BIP-84 ou o BIP-86 aplica a derivação hardened automaticamente aos níveis de propósito, tipo de moeda e conta, e deixa os dois níveis abaixo deles sem derivação hardened, para que as carteiras de observação continuem funcionando.

Leia a seguir

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês