Um estudo sobre o Bitcoin — Chaves

Chaves

Introdução à Criptografia de Chave Pública

A criptografia de chave pública, também conhecida como criptografia assimétrica, é um dos pilares fundamentais que sustentam a segurança e a funcionalidade do Bitcoin. Diferente da criptografia simétrica, onde a mesma chave é usada para criptografar e descriptografar dados, a criptografia assimétrica utiliza um par de chaves matematicamente relacionadas: uma chave privada (secreta) e uma chave pública (compartilhável).

Essas chaves têm uma relação unidirecional: a chave pública é derivada da chave privada através de operações matemáticas complexas, mas o processo inverso — derivar a chave privada a partir da pública — é computacionalmente inviável. Essa propriedade é o que permite que alguém compartilhe sua chave pública para receber fundos, mantendo a chave privada em segredo para autorizar transações.

Uma analogia útil é pensar na chave privada como a chave física de um cofre e na chave pública como o endereço desse cofre. Qualquer pessoa pode enviar itens para o cofre conhecendo apenas o endereço, mas apenas quem possui a chave física pode abrir o cofre e acessar seu conteúdo.

A Chave Privada: A Soberania do Usuário

No contexto do Bitcoin, uma chave privada é essencialmente um número aleatório muito grande — um inteiro de 256 bits, o que significa um número entre 1 e aproximadamente 1.1579×1077. Para ter uma ideia da magnitude, existem aproximadamente 1080 átomos no universo observável.

A função fundamental da chave privada é servir como prova de propriedade. Quem controla a chave privada associada a um endereço Bitcoin controla os bitcoins nesse endereço. É a posse dessa chave que permite ao proprietário assinar transações e, assim, transferir os fundos.

A geração de chaves privadas requer um alto grau de entropia (aleatoriedade) para garantir a segurança. Chaves geradas de forma previsível ou com baixa entropia podem ser descobertas por atacantes, resultando na perda dos fundos.

Essa responsabilidade sobre a chave privada é o que fundamenta o conceito de "seja seu próprio banco" no Bitcoin. Ao contrário do sistema bancário tradicional, onde uma instituição guarda e protege seus ativos, no Bitcoin, a segurança da chave privada é inteiramente responsabilidade do usuário. Perder a chave privada significa perder permanentemente o acesso aos fundos associados a ela, sem possibilidade de recuperação.

A Chave Pública: Derivação e Função

A chave pública no Bitcoin é derivada da chave privada usando a criptografia de curva elíptica (ECC), especificamente a curva chamada secp256k1. Essa curva é definida pela equação y2 = x3 + 7 (mod p), onde p é um número primo muito grande.

O processo matemático, de forma simplificada, pode ser representado como: Chave Pública = Chave Privada * Ponto Gerador (G). A "multiplicação" na curva elíptica é uma operação de sentido único — é fácil calcular o resultado, mas extremamente difícil (computacionalmente inviável) determinar a chave privada original conhecendo apenas a chave pública e o ponto gerador.

A chave pública tem duas funções principais no ecossistema Bitcoin:

É importante notar que, embora a chave pública seja necessária para verificar transações, ela não pode, por si só, gastar os fundos. Para gastar, é necessária a chave privada correspondente.

Da Chave Pública ao Endereço Bitcoin

Um equívoco comum é pensar que o endereço Bitcoin é a chave pública. Na verdade, o endereço Bitcoin é um hash da chave pública, gerado para maior segurança e usabilidade. Esse processo de transformação adiciona camadas de proteção e torna o endereço mais curto e amigável para o usuário.

O processo de criação de um endereço Bitcoin tradicional (P2PKH - Pay-to-Public-Key-Hash) envolve os seguintes passos:

  1. Aplica-se o hash SHA-256 à chave pública.
  2. Aplica-se o hash RIPEMD-160 ao resultado do passo anterior.
  3. Adiciona-se um byte de versão (0x00 para a rede principal) ao início do resultado.
  4. Calcula-se o "checksum" aplicando o hash SHA-256 duas vezes ao resultado e anexando os primeiros 4 bytes ao final.
  5. Codifica-se o resultado final em Base58Check.

Esse processo serve a vários propósitos:

É importante notar que existem diferentes tipos de endereços Bitcoin (P2PKH, P2SH, Bech32, etc.), cada um com seu próprio processo de geração, mas todos derivados fundamentalmente da chave pública.

Formatos de Chave e Endereço

Formatos de Chave Privada:

  • Hexadecimal (Raw): Representação bruta da chave privada como 64 caracteres hexadecimais. Exemplo: E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262.
  • WIF (Wallet Import Format): Formato padrão para importar chaves em carteiras. É a chave privada codificada em Base58Check, com um prefixo de versão (0x80) e um checksum. Exemplo: 5Kb8kLf9zgWQnogidDA76MzPL6TsZZY36hWXMssSzNydYXYB9KF.

Formatos de Chave Pública:

  • Descomprimida: Começa com o prefixo 04 e contém as coordenadas X e Y de 64 bytes (130 caracteres no total). Exemplo: 04F01D6E9028A5E5C13D7DC904F3D6A9B8A6F0B0D3B2C9A1F5E8A6D2B9C5F8E1A4D7C0B3A6F9E2D5C8B1E4A7D0C3B6F9E2D5C8B1E4A7D0C3B6F9.
  • Comprimida: Começa com 02 ou 03 e contém apenas a coordenada X, com o prefixo indicando se Y é par ou ímpar. É mais eficiente em espaço. Exemplo: 02F01D6E9028A5E5C13D7DC904F3D6A9B8A6F0B0D3B2C9A1F5E8A6D2B9C5F8E1A4.

Formatos de Endereço:

  • P2PKH (Legacy): Começa com '1'. Exemplo: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2.
  • P2SH (Nested SegWit): Começa com '3'. Exemplo: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy.
  • Bech32 (Native SegWit): Começa com 'bc1'. Exemplo: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq.

Carteiras Hierárquicas Determinísticas (HD) - BIP-32

Um desafio prático no ecossistema Bitcoin é o gerenciamento de múltiplas chaves. Criar uma nova chave para cada transação é complexo e difícil de fazer backup. A solução para esse problema é o uso de Carteiras Hierárquicas Determinísticas (HD Wallets), introduzidas pelo BIP-32.

As HD Wallets permitem que uma única "semente mestre" (master seed) possa derivar uma árvore inteira de chaves públicas e privadas de forma determinística. Isso significa que, a partir da mesma semente, sempre serão geradas as mesmas chaves na mesma ordem.

Para facilitar o backup e a restauração, a semente mestre é representada por uma frase mnemônica (BIP-39), que é uma lista de 12 ou 24 palavras em inglês (ou outros idiomas). Esta frase é o backup definitivo da carteira — com ela, é possível restaurar todas as chaves e, consequentemente, todos os fundos.

As chaves são organizadas em uma estrutura de "caminho de derivação" (ex: m/44'/0'/0'/0/0), que define como as chaves são derivadas da semente. Essa estrutura permite a organização em contas, propósitos (BIP-44), etc., facilitando o gerenciamento de múltiplas contas e identidades dentro da mesma carteira.

Um benefício adicional das HD Wallets é a capacidade de gerar chaves públicas-filhas a partir de chaves públicas-pai (xpub), sem precisar da chave privada. Isso permite que carteiras de observação (watch-only) possam acompanhar transações sem expor as chaves privadas.

O Papel das Chaves em uma Transação

Para Receber:

Quando um usuário deseja receber bitcoins, ele compartilha seu endereço Bitcoin (derivado da chave pública) com o remetente. O remetente cria uma transação que envia os fundos para esse endereço. Na blockchain, os bitcoins são associados a um script que exige a assinatura correspondente à chave pública para serem gastos.

Para Gastar:

Para gastar os bitcoins, o proprietário usa sua chave privada para criar uma assinatura digital sobre os dados da transação. Essa assinatura é criada usando o algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm).

A assinatura, junto com a chave pública correspondente, é incluída na transação. Quando a transação é transmitida para a rede, os nós Bitcoin verificam se a assinatura é válida para a chave pública e se a chave pública corresponde ao endereço de destino dos fundos. Se tudo estiver correto, a transação é considerada válida e pode ser incluída em um bloco.

É importante notar que a chave privada nunca é revelada durante esse processo. Apenas a assinatura e a chave pública são compartilhadas, provando a propriedade sem comprometer a segurança da chave privada.

Conclusão e Melhores Práticas de Segurança

As chaves criptográficas são a base da segurança e da funcionalidade do Bitcoin. Elas permitem um sistema sem permissão onde a posse é garantida matematicamente, eliminando a necessidade de intermediários para verificar e autorizar transações.

A gestão de chaves transfere a responsabilidade da segurança para o indivíduo, um dos pilares fundamentais da filosofia do Bitcoin. Essa soberania vem acompanhada da necessidade de adotar práticas rigorosas de segurança:

Em última análise, a compreensão adequada das chaves criptográficas e de seu papel no ecossistema Bitcoin é essencial para qualquer pessoa que deseje usar o Bitcoin de forma segura e soberana. Elas representam a materialização matemática da propriedade no mundo digital, permitindo que indivíduos sejam verdadeiramente seus próprios bancos.