Chave Privada
Um número aleatório muito grande
Uma chave privada é um número aleatório muito grande. Ela é usada como fonte para criar uma chave pública.
Gerando
Como você cria uma chave privada?
Para criar uma chave privada, você só precisa gerar um número aleatório de 256 bits. A parte crítica é usar uma fonte confiável de aleatoriedade. No Linux, uma fonte confiável é /dev/urandom.
Intervalo da chave privada
Uma chave privada válida é qualquer número entre 1 e n−1, onde n é o número de pontos na curva elíptica usada no Bitcoin (secp256k1):
máx: 115792089237316195423570985008687907852837564279074904382605163141518161494336 Esse valor é ligeiramente menor que o máximo possível para um número de 256 bits. Então, ao gerar um número aleatório de 32 bytes, verifique se ele não está acima do máximo antes de usá-lo.
Números aleatórios criptograficamente seguros
As funções de número aleatório padrão das linguagens de programação (como rand()) normalmente não são seguras o suficiente para gerar chaves privadas. Procure como gerar "números aleatórios criptograficamente seguros" na sua linguagem.
Por exemplo, a biblioteca libbitcoin (a ferramenta bx seed) causou a perda de mais de US$ 900.000 em bitcoin em 2023 por não usar números aleatórios criptograficamente seguros (caso "Milk Sad").
Formatos
Como é uma chave privada?
Decimal
Uma chave privada é, em última análise, só um número aleatório, então é perfeitamente válido armazená-la como um número decimal.
Hexadecimal (mais comum)
Você normalmente verá chaves privadas exibidas como strings hexadecimais de 32 bytes. É o mesmo número aleatório, só uma forma diferente de exibi-lo.
Conversor de Números
WIF (Wallet Import Format)
Uma chave privada pode ser convertida para WIF (Wallet Import Format) por conveniência. É como um formato de endereço para chaves privadas, às vezes usado ao importar uma chave em uma carteira (ex.: Electrum):
WIF
Uso
Para que serve a chave privada?
A chave privada é usada para duas coisas: criar a chave pública (por multiplicação de curva elíptica) e criar assinaturas que destravam os bitcoins travados àquela chave pública.