Compreendendo suas chaves Bitcoin: palavras-semente Bip39

0
69

A base da auto-soberania do Bitcoin é ter controle sobre suas chaves privadas. Sem isso, de uma forma ou de outra, você está cedendo o controle do seu dinheiro para outra pessoa. “Nem suas chaves, nem suas moedas”, como diz o ditado. Um aspecto contra-intuitivo do Bitcoin para pessoas que não estão familiarizadas com seus fundamentos técnicos é “onde” seu Bitcoin realmente está. Quando as pessoas pensam em uma carteira, pensam “no lugar onde guardo meu dinheiro”. Na verdade, sua carteira de bitcoin não “retém” seu Bitcoin, apenas armazena suas chaves privadas. Seu Bitcoin são apenas entradas de dados no blockchain hospedado por todos os participantes da rede. Quando você vai gastar seu bitcoin, o que na verdade você está fazendo é propor uma atualização dos dados armazenados no blockchain. Uma chave privada é como o protocolo garante que você, e somente você, possa autorizar uma atualização no blockchain que gasta seu Bitcoin.

Então, quais são suas chaves privadas? Apenas números muito grandes. Extremamente grande. Esta é uma chave privada em binário:

11100010110110010111101111000010100010000001000100111101011101101010111011100111111111110101011101001011101001110100111001 01001101111010001100001111101011110011010010111100110111010000011011011011100011010001100011110100010010011110110101010110011 01101010

256 1s e 0s aleatórios. Esse número aleatório é o que protege seu Bitcoin. Pode não parecer muito, mas a aleatoriedade é o que garante a segurança da sua carteira. Existem quase tantas chaves privadas Bitcoin possíveis quanto átomos no universo visível. Esse é o número de números que um computador teria que contar para gerar e catalogar todas as chaves privadas potencialmente possíveis. Contanto que o processo usado para gerar as chaves seja verdadeiramente aleatório, suas chaves estarão seguras.

Esta é a aparência de uma chave privada em hexadecimal (o binário usa dois dígitos para codificar um número, 1 e 0, o hexadecimal usa 16 dígitos, 0-9 e AF):

E2D97BC144089EBB5773FFABA5D3A729BD187D79A5E6E836DC68C7A24F6AB36A

Esta é a aparência de uma chave privada no formato de importação de carteira (WIF) descompactado:

5KYC9aMMSDWGJciYRtwY3mNpeTn91BLagdjzJ4k4RQmdhQvE98G

O formato WIF é como todos interagiam com suas chaves privadas nos primeiros dias do Bitcoin. Nesta época, você poderia gerar uma chave privada por vez e então geraria a chave pública a partir dela. O processo de geração de uma chave pública é essencialmente apenas a multiplicação de números muito grandes, mas há um pouco mais do que isso. Todas as chaves públicas são um ponto xey em um gráfico que mostra um valor muito, muito grande curva que gira sobre si mesma.

Na curva do gráfico, no caso do Bitcoin Secp256k1, há um ponto chamado “ponto gerador”. Este ponto gerador pode ser considerado o “ponto base” na curva Secp256k1. É parte integrante do processo de geração de chaves e assinatura com elas. Este é o ponto gerador da curva do Bitcoin:

G = 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798

Para gerar a chave pública a partir da sua chave privada, você pega a chave privada gerada e multiplica-a pelo ponto gerador. É isso. Isso agora estabelece um ponto no gráfico com uma relação matemática com a chave privada que você gerou e que só você conhece.

Esta é uma chave pública descompactada mostrando os pontos x e y:

04C0E410A572C880D1A2106AFE1C6EA2F67830ABCC8BBDF24729F7BF3AFEA06158F0C04D7335D051A92442330A50B8C37CE0EC5AFC4FFEAB41732DA5108261FFED

É muito comum “compactar” chaves públicas na rara chance de você interagir com elas para apenas armazenar a coordenada x com um byte para informar se a coordenada y é negativa ou positiva. Isso encurta consideravelmente:

04C0E410A572C880D1A2106AFE1C6EA2F67830ABCC8BBDF24729F7BF3AFEA06158F0C04D7335D051A92442330A50B8C37CE0EC5AFC4FFEAB41732DA5108261FFED

Quando você assina uma transação com sua chave privada, mais uma vez tudo se resume essencialmente a apenas multiplicação. Ao gerar um número aleatório (o nonce) e usá-lo junto com sua chave privada para multiplicar essencialmente o hash da transação que você está assinando, você produz a assinatura (que é composta de dois valores, r e S). Isso permite que alguém execute um algoritmo para verificar se a mensagem foi assinada pela chave privada apropriada sem revelar essa chave. O que garante que somente você pode autorizar o gasto de seu Bitcoin é essencialmente apenas a multiplicação de números muito, muito grandes.

Se você não está familiarizado com esses conceitos antes de ler isto, tudo isso provavelmente parece um tanto intimidante. Binário? Hexadecimal? Pontos do gráfico? Como você faz backup de um WIF?

Desde o desenvolvimento de formas mais intuitivas de lidar com esses dados, a maioria dos usuários não está familiarizada com esses formatos complicados. Provavelmente, você tem mais experiência com sementes de palavras, também conhecidas como frases-semente.

Sementes Mnemônicas BIP 39

Sementes mnemônicas, ou frases-semente, foram criadas para resolver o problema da experiência de interagir com suas chaves privadas.

Como discutimos anteriormente, as chaves privadas são, em última análise, apenas uma longa série de 1s e 0s geradas aleatoriamente. Imagine tentar criar cópias disso e garantir que não cometeu nenhum erro ao transcrevê-lo:

11100010110110010111101111000010100010000001000100111101011101101010111011100111111111110101011101001011101001110100111001 01001101111010001100001111101011110011010010111100110111010000011011011011100011010001100011110100010010011110110101010110011 01101010

Bastaria um único erro ao copiar um dígito para tornar inútil o backup de suas chaves. É aqui que as sementes mnemônicas são úteis. 256 1s e 0s consecutivos não é uma maneira amigável de interagir com informações confidenciais. Registrar este número incorretamente significa perder o acesso à sua conta.

caminhão renovar fúria burro lembrar laptop reforma detalhe dividir tristeza porque gordura

Isso é muito mais fácil de lidar, não é? Apenas 12 palavras. Então, como isso funciona, passando de um monte de 1s e 0s aleatórios para uma sequência de palavras que realmente fazem sentido para você? Um esquema de codificação, assim como binário ou hexadecimal!

Cada uma dessas 12 palavras naquela semente mnemônica acima é um número binário em um esquema de codificação mapeando strings específicas de 1s e 0s para palavras. Se olharmos para o exemplo anterior da chave privada WIF, esse era simplesmente um número codificado em um esquema de codificação específico, nesse caso, base 58, que usa todos os números e letras do alfabeto, exceto 0 e 1, e O e l ( maiúsculas e minúsculas). A exclusão desses caracteres foi feita especificamente para tornar improváveis ​​​​erros de transcrição, confundindo 1 com l ou 0 com O. bech32 e bech32m usados ​​​​por Segwit e Taproot levam isso para o próximo nível usando apenas este conjunto de caracteres ( qpzry9x8gf2tvdw0s3jn54khce6mua7l).

A Proposta de Melhoria do Bitcoin 39 (BIP 39), introduziu um esquema de codificação padronizado onde cada palavra em um dicionário especialmente criado é mapeada em ordem alfabética para um número binário de 00000000001 a 11111111111. A semente de demonstração acima mapeia para isto:

caminhão: 11101001001

renovar: 10110110001

fúria: 01011110011

burro: 01000001001

lembrar: 10110101110

portátil: 01111101000

reforma: 10110100010

detalhe: 00111100010

divisão: 11010010001

luto: 01100110100

porque: 00010011110

gordura: 01010011011

Em apenas binário fica assim:

11101001001 10110110001 01011110011 01000001001 10110101110 01111101000 10110100010 00111100010 11010010001 01100110100 000 10011110 0101001 1011

Existem 2.048 palavras, cada uma mapeada para uma sequência específica de 11 dígitos de 1s e 0s, especificamente para facilitar a interação das pessoas com suas chaves privadas. Quando você gera um número aleatório para sua chave privada, sua carteira corta esse número em pedaços de números binários de 11 dígitos e os mapeia para o dicionário Mnemônico BIP 39. Ainda é o mesmo número grande, mas agora você pode lê-lo como palavras em inglês. Como seu cérebro está muito mais acostumado com esse formato do que com longas sequências de 1s e 0s, isso drasticamente reduz as chances de você escrever algo errado e perder seu Bitcoin no processo.

Você deve ter notado que na codificação binária bruta da palavra semente acima, há quatro dígitos (1011) isolados, e a última “palavra” tem, na verdade, apenas 8 dígitos. Essa é uma soma de verificação para garantir que uma frase-semente é válida. Quando você gera seu número aleatório, não há dígitos suficientes para mapeá-lo exatamente em 12 (ou 24) palavras. A carteira faz o hash dos dígitos existentes que você gerou e pega os primeiros dígitos do hash para adicionar ao final do seu número aleatório. Isso fornece dígitos suficientes para mapear até a última palavra.

Esta última palavra permite realizar uma verificação de segurança nas cópias de sua semente. Se você inserir incorretamente sua semente mnemônica em uma carteira, a soma de verificação não corresponderá. Cada seed de 12 ou 24 palavras tem múltiplas palavras de soma de verificação válidas em potencial, mas se a última palavra não corresponder à soma de verificação de uma seed correta, sua carteira irá avisá-lo de que é inválida. Isso dá às pessoas uma maneira intuitiva, mas ainda matemática, de garantir que seus backups estejam corretos, ao contrário do processo complicado de transcrever e fazer backup dos números binários brutos.

A seleção das palavras específicas da lista chegou ao ponto de garantir que nenhuma das 2.048 palavras tivesse as mesmas quatro primeiras letras. Isso foi feito para reduzir a probabilidade de as pessoas cometerem erros de transcrição, confundindo palavras semelhantes e acabando com um backup incorreto de suas chaves privadas.

Traduzindo essas palavras em um definir de múltiplas chaves privadas/públicas é bastante simples. Sua semente mnemônica é obtida e hash usando SHA512, que gera um hash de 512 1s e 0s individuais. Metade dessa saída é usada como uma chave privada real e a outra metade é usada como entrada para SHA512 com um número de índice e a chave privada ou pública existente para gerar um novo par de chaves. Você pode fazer isso quantas vezes quiser para gerar novas chaves privadas/públicas que podem ser recuperadas a partir de sua única frase mnemônica.

Isso garante que você possa gerenciar suas chaves privadas com a mesma facilidade e com segurança, tanto quanto possível, com as menores chances de cometer um erro que resultará na perda de seu dinheiro. E tudo isso foi feito usando matemática! Esperançosamente, agora você entende bem por que as pessoas dizem que Bitcoin é dinheiro “garantido pela matemática”.

Fonte: bitcoinmagazine.com

Receba nossas atualizações
Fique por dentro de todas as notícias e novidades do mundo da tecnologia!

Deixe uma resposta