Chaves públicas, chaves privadas e endereços: o que cada um faz de fato
Três coisas que as pessoas usam como se fossem intercambiáveis e que cumprem papéis completamente diferentes. Separá-las é o que faz todas as outras decisões de segurança fazerem sentido.
Quase todo erro grave em cripto remonta à confusão de três coisas que soam parecidas e que não se comportam nada igual. Uma vez clara a distinção, a maior parte dos conselhos de segurança deixa de ser uma lista de regras a decorar e passa a ser óbvia.
A chave privada assina
Uma chave privada é um número secreto muito grande. A sua única função é produzir assinaturas: dada uma transação, ela gera uma prova de que quem tem a chave a autorizou. Esse é todo o trabalho.
A propriedade decisiva é que uma assinatura pode ser verificada por qualquer pessoa sem revelar a chave que a produziu. É isso que faz o sistema funcionar. É também por isso que a chave privada é a única das três que precisa permanecer secreta, e por que quem a obtiver pode mover os seus fundos sem nenhum passo adicional. Não há uma camada de senha abaixo dela nem uma autoridade capaz de reverter o resultado.
A chave pública verifica
A chave pública é derivada da chave privada por um cálculo de mão única. Com a chave privada você calcula a pública trivialmente; a partir da pública não há meio prático de recuperar a privada. Essa assimetria é todo o alicerce.
O trabalho dela é a verificação. Quem tem a chave pública pode conferir que uma assinatura foi produzida pela chave privada correspondente — é assim que a rede confirma que uma transação foi autorizada por quem controla os fundos. Publicá-la não lhe custa nada.
O endereço recebe
Um endereço é derivado da chave pública, geralmente aplicando-lhe uma função hash e acrescentando uma soma de verificação. Ele é mais curto, inclui detecção de erro — então um endereço digitado errado é quase sempre rejeitado em vez de aceito — e na maioria das redes não revela a chave pública até que você gaste a partir dele pela primeira vez.
O trabalho dele é ser distribuído. Um endereço é um destino, nada mais. Compartilhar um não expõe os seus fundos a risco algum; o pior resultado é perda de privacidade, porque qualquer pessoa com o endereço pode ver o histórico de transações dele num livro-razão público.
Onde a frase-semente entra
Uma frase-semente não é uma quarta chave. É uma codificação legível por humanos do número que gera as suas chaves privadas — normalmente todas elas, ao longo de muitos endereços, de forma determinística. É por isso que uma frase pode restaurar uma carteira inteira.
Segue-se diretamente que uma frase-semente é estritamente mais sensível do que qualquer chave privada isolada, porque equivale a todas elas ao mesmo tempo. Toda regra sobre frases-semente — nunca digitá-la num site, nunca fotografá-la, nunca guardá-la num gerenciador de senhas que você não controla — decorre desse único fato, e não de superstição. O nosso verbete do glossário cobre a codificação em si.
O que isso torna óbvio
Com os três papéis claros, vários conselhos padrão deixam de precisar ser decorados:
- Compartilhar um endereço é seguro, porque um endereço só recebe. Compartilhar uma chave privada é a perda total, porque uma chave privada assina.
- Uma carteira física é valiosa justamente porque faz a assinatura dentro do dispositivo, então a chave privada nunca existe num computador conectado à internet.
- “Confira o endereço” é sobre a soma de verificação e sobre malware que troca a área de transferência, não sobre sigilo.
- Um serviço que pede a sua frase-semente para “validar” ou “restaurar” qualquer coisa está pedindo todas as chaves que você tem. Não existe versão legítima desse pedido.
A relação de mão única
Vale guardar a direção da derivação: frase-semente → chave privada → chave pública → endereço, cada passo fácil para a frente e inviável para trás. Toda consequência prática decorre dessa seta. Você pode distribuir a ponta distante à vontade e precisa proteger a ponta próxima de forma absoluta, e nada no meio muda isso.
Por que uma semente produz muitos endereços
Carteiras modernas são hierárquicas e determinísticas, que é uma forma precisa de dizer que uma única semente gera toda uma árvore de chaves por um procedimento definido. Cada ramo produz uma chave privada nova, e cada uma delas produz a sua própria chave pública e o seu endereço.
Duas consequências úteis decorrem disso. Uma carteira pode fornecer um endereço novo a cada pagamento sem precisar de um backup novo, porque todos esses endereços descendem da mesma semente. E restaurar essa semente em outro software recupera os mesmos endereços, porque o procedimento de derivação é padronizado, não proprietário.
Isso também explica uma confusão comum: ver muitos endereços numa carteira não significa que existam muitos segredos separados. Há um segredo, e todo o resto é derivado dele. Isso é conveniente e é precisamente por isso que a frase-semente é o único ponto de falha total.
Assinar não revela a chave
Vale ser explícito sobre a propriedade em que tudo se apoia. Uma assinatura é produzida a partir da chave privada e da mensagem, e pode ser conferida contra a chave pública — mas observar qualquer quantidade de assinaturas não permite a um atacante reconstruir a chave privada que as fez.
É isso que torna seguro assinar repetidamente com a mesma chave em vez de precisar de uma nova a cada vez. Também explica por que assinar uma mensagem para provar a posse de um endereço é uma operação normal e segura, enquanto digitar uma frase-semente nunca é. Uma é o uso pretendido do sistema e a outra é entregar o sistema.
Onde o modelo é esticado
Dois desenvolvimentos complicam esse quadro limpo, e vale conhecer ambos porque eles mudam o que uma assinatura significa.
Arranjos de multiassinatura exigem várias chaves privadas para autorizar uma transação, então nenhuma chave isolada basta. Isso remove o ponto único de falha ao custo de uma história de recuperação mais complexa — você agora tem vários segredos a proteger e uma política sobre quantos são necessários.
A abstração de contas, nas redes que a suportam, permite que as regras que governam uma conta sejam programadas em vez de fixas: limites de gasto, atrasos de tempo ou recuperação por uma parte designada. É útil, e significa que “quem tem a chave controla os fundos” já não é estritamente verdadeiro nessas redes. O mecanismo base não mudou; o que mudou foi quem pode acioná-lo.