O que é uma Carteira?

Principiante10/1/2024, 6:09:44 PM
Neste post, abordaremos o que é uma carteira, como as carteiras são feitas e como elas usam criptografia de curva elíptica para gerar e proteger pares de chaves público-privadas, derivar frases de semente e facilitar interações seguras de blockchain.

As carteiras são ferramentas essenciais que permitem aos utilizadores gerir as suas contas de blockchain, armazenar os seus ativos de forma segura e assinar transações para efetuar alterações no estado da blockchain.

Neste post, abordaremos o que é uma carteira, como as carteiras são feitas e como utilizam a criptografia de curva elíptica para gerar e garantir pares de chaves privadas-públicas, derivar frases de semente e facilitar interações seguras com a blockchain.

O que é uma carteira?

Uma carteira é uma aplicação que lhe permite visualizar e interagir com a(s) sua(s) conta(s) blockchain; estas contas permitem-lhe enviar transações para realizar ações como enviar tokens ou interagir com contratos inteligentes.

Cada conta na blockchain é composta por um par de chaves criptográficas; um conjunto de 2 chaves que estão vinculadas entre si. No contexto das blockchains, este tipo de conta é tipicamente chamado de Conta Externa de Propriedade (EOA) e consiste em uma chave pública e uma chave privada:

  • Chave pública: o endereço da sua carteira. Ele pode ser compartilhado com qualquer pessoa, e outras pessoas (ou contratos inteligentes) podem usá-lo para enviar criptomoedas.
  • Chave privada: A "chave de assinatura" que você usa para assinar mensagens ou transações. Qualquer pessoa que tenha acesso à chave privada tem controle total sobre os fundos na carteira.

Este par de chaves tem uma função poderosa, chamada de função de porta de armadilha; o que significa que é:

  • Fácil de descobrir a chave pública se tiver a chave privada (A→B).
  • Impossível descobrir a chave privada se você tiver a chave pública (B→A).

Para que servem as carteiras?

As carteiras são usadas para assinar mensagens ou transações usando a chave privada da carteira para serem enviadas para uma blockchain.

As carteiras fornecem uma maneira de saber quais mensagens ou transações uma carteira concordou; uma vez que a chave pública do remetente da transação pode ser recuperada a partir da assinatura da transação. Isto é essencial para evitar que transações falsas/maliciosas sejam aceites na blockchain.

Por exemplo, Jarrod poderia submeter uma transação alegando que Abril lhe enviou 5 ETH, mesmo que ela nunca tenha concordado com essa transação. No entanto, uma vez que a blockchain verifica a assinatura de cada transação, rapidamente rejeitará a transação, uma vez que o endereço recuperado da assinatura não corresponde ao "remetente" da transação (ou seja, Abril).

Blockchains como o Ethereum usam o ECDSA (Algoritmo de Assinatura Digital de Curva Elíptica) para verificar se a chave pública recuperada da assinatura da transação corresponde à chave pública da pessoa que enviou a transação para a rede.

Como são criadas as carteiras?

Para criar uma carteira, você precisa criar um par de chaves pública-privada. No entanto, os valores deste par de chaves precisam seguir algumas regras para que funcione em uma blockchain.

  1. Uma chave privada é composta por 64 caracteres hexadecimais (caracteres 0→F).
  2. A chave pública é derivada da chave privada usando criptografia de curva elíptica (ECC).
  3. A chave pública é cortada, hashada e formatada para se tornar um endereço de 42 caracteres.

Este processo de 3 etapas é o fluxo central de como as contas são geradas na blockchain.

A seguir, vamos mergulhar em como uma chave pública é derivada usando uma curva elíptica e uma chave privada. Mas antes disso, responderemos a algumas outras perguntas que você possa ter sobre carteiras, como:

  • Como posso garantir que a minha chave privada é gerada aleatoriamente?
  • E se eu obtiver a mesma chave privada que outra pessoa?
  • Como é que as frases-semente se encaixam neste processo?
  • Como são gerados vários pares de chaves a partir de uma única frase-semente?

O que é uma frase-semente?

Embora seja possível gerar um valor hexadecimal aleatório de 64 dígitos como acabamos de demonstrar, geralmente, as chaves privadas são geradas usando padrões específicos que se originaram do Bitcoin. Esses padrões permitem aos usuários lembrar de uma frase semente, que é uma frase de 12 a 24 palavras que pode ser usada para criar qualquer número de novas contas associadas a ela.

Isto permite aos utilizadores lembrarem-se de um conjunto único de palavras para aceder a todas as suas contas; cada uma com um par de chaves público-privadas individuais. Qualquer número de novas chaves privadas pode ser derivado de uma única frase-semente usando uma função de derivação de chave específica (KDF).

Então, vamos primeiro abordar como as frases-semente são geradas através de entropia aleatória e como as chaves privadas podem ser derivadas de uma frase-semente, antes de finalmente revisitar como as chaves públicas são derivadas das chaves privadas.

Como funcionam as frases semente

Quando instala pela primeira vez uma aplicação de carteira, normalmente, pedir-lhe-á para escrever e guardar em segurança uma frase semente em algum lugar; normalmente uma combinação de 12 ou 24 palavras. Pode ver um exemplo de lista de palavras em inglês possíveisaqui, que você notará tem 2048 palavras de comprimento (voltaremos a esse número em breve).

O que é BIP-39?

Esta ideia de armazenar frases semente mnemônicas foi introduzida em 2013 com um BIP (Proposta de Melhoria Bitcoin); BIP-39. Esta proposta fornece uma maneira padronizada de gerar entropia aleatória e traduzi-la em uma série de palavras fáceis de lembrar.

Como é gerada uma frase-semente?

Primeiro, precisamos garantir que nossa frase-semente seja gerada aleatoriamente, afinal, não queremos que outra pessoa acesse acidentalmente nossa carteira e tenha acesso aos nossos fundos.

Para fazer isso, é gerado um número aleatório usando CSPRNG (gerador de números pseudoaleatórios criptograficamente seguro), que você pode fazer no seu navegador:

Este número aleatório é chamado de entropia. Esta entropia é usada para criar o conjunto de palavras que formam uma frase-semente. No nosso caso, 128 bits correspondem a 12 palavras, mas também é possível usar outros comprimentos, como:

  • 15 palavras: 160 bits
  • 18 palavras: 192 bits
  • 21 palavras: 224 bits
  • 24 palavras: 256 bits

Então, como usamos esses bits para criar uma frase semente? Qual é a relação entre bits e palavras? Primeiro, é criado um checksum para a entropia e anexado aos 128 bits; este é um hash de 4 bits da entropia criado para garantir sua integridade.

Portanto, agora temos 128 bits de entropia + 4 bits de checksum, totalizando 132 bits. Em seguida, os 132 bits são convertidos em binário; especificamente, eles são divididos em pedaços de 11 bits.

Agora temos um conjunto de 12 números binários, cada um com 11 bits de comprimento. Dica: temos 12 números e nossa frase de semente terá 12 palavras!

Lembre-se de que temos 2048 palavras em nossa lista e que 2048 foi escolhido porque 2048 é 2^11, já que existem 2048 números binários diferentes possíveis que você pode fazer com 11 bits.

Agora só precisamos converter esses números binários em palavras da nossa lista de palavras. Isso é feito usando o número binário como um índice para procurar uma palavra na lista de palavras. Ou seja, se o número binário for 10, usamos a nona palavra da lista (já que começamos no índice 0), por exemplo:

  • 000000111, (7 em binário) é o 8º item da lista, que é resumo! 😉
  • 11111111111, (2047 em binário) é o último item da lista (2048º), que é “zoo”.

Repetir isto 12 vezes, uma para cada número de 11 bits para formar uma frase-semente contendo 12 palavras.

Ao gerar um valor de entropia aleatório, dividi-lo em pedaços de binário e usar esses valores binários como um índice para procurar palavras em uma lista de palavras, acabamos com uma frase-semente aleatória.

Alguém consegue adivinhar a minha frase-semente?

A sua reação imediata a isto pode ser: "Se só existem 2048 palavras possíveis, alguém não consegue adivinhar a minha frase-semente?" Bem, tecnicamente sim, mas é realmente... realmente improvável. Quão improvável pergunta você?

Imagine que esquecemos o passo de geração aleatória de 128 bits e selecionamos manualmente apenas 12 palavras da lista. Cada vez que selecionamos uma palavra, estamos selecionando uma opção em um conjunto de 2048 palavras.

Portanto, podemos dizer que para outra pessoa também adivinhar essa mesma sequência de palavras, ela precisa adivinhar corretamente a mesma palavra que nós com uma chance de 1/2048, 12 vezes seguidas. Agora mesmo, você provavelmente está pensando: 'ok, isso não parece tão difícil...,' certo?"Mas, vamos jogar isto:

  • Primeira Palavra: 2048 escolhas
  • Segunda palavra: 2048 opções
  • E assim por diante, até 12: 2048 opções

Isto é 2048 x 2048 x 2048 ... 12 vezes. Ou seja, 2048^12. Que é... um número absurdamente grande. Aproximadamente, 5 septiliões, ou 5 quatrilhões de bilhões. Isso é inimaginável para nós compreendermos, mas vamos tentar...

Imagine que começaste a adivinhar agora, usando um computador incrivelmente poderoso que pode adivinhar 1 trilhão de frases-semente por segundo. Levaria a esta máquina 159 trilhões de anos para adivinhar uma frase-semente. Ou, (dependendo no que acreditas), aproximadamente 11.000 vezes mais do que a idade atual do universo.

São frases-semente de 24 palavras melhores do que as de 12?

Algumas carteiras optam por 128 bits (12 palavras), mas as carteiras mais modernas pedem que se lembre de 24 palavras para a sua frase-semente! O que, mais uma vez, é ridículamente grande.

Como as chaves privadas são derivadas de frases semente

Agora temos uma frase-semente de 12 palavras, como ela é usada para criar chaves privadas para contas? Para fazer isso, precisamos converter nossa frase-semente em uma frase-semente binária que pode ser usada para gerar carteiras. Esse processo envolve as seguintes etapas:

  1. Opcionalmente, o utilizador fornece uma palavra-passe adicional.
  2. Um algoritmo chamado PBKDF2 (Função de Derivação de Chave Baseada em Senha) recebe: A frase semente. Uma combinação da string 'mnemônico' e a senha opcional.

Este processo (chamado de função de derivação de chave), produz um valor de hash de 64 bytes, chamado de semente binária, usando outro algoritmo chamado HMAC-SHA512 como função pseudo-aleatória.

O valor de hash de 64 bytes gerado pode ser usado para gerar contas usando a lógica que se originou de outros padrões do Bitcoin; nomeadamente BIP-32 e, opcionalmente, uma extensão do BIP-32, BIP-44.

O que é o BIP-32?

O BIP-32 introduz carteiras determinísticas hierárquicas (HD); onde muitas carteiras podem ser derivadas de uma única semente, e mais carteiras podem ser derivadas dessas carteiras, criando uma "árvore" de carteiras.

O que é BIP-44?

BIP-44 fornece uma maneira padronizada de criar uma hierarquia para estruturas de carteira a partir de uma única semente binária, implementando um caminho de derivação específico seguindo a estrutura: m / finalidade' / tipo_moeda' / conta' / mudança / índice_endereço:

  • finalidade: Identifica o padrão BIP usado; para BIP-44, é 44'.
  • coin_type: Especifica a criptomoeda; por exemplo, 0' para Bitcoin, 60' para Ethereum.
  • conta: Distingue entre diferentes contas de usuário.
  • change: Indica o tipo de endereço: 0 para recebimento, 1 para troco.
  • address_index: Fornece um índice único para cada endereço sob a mesma conta e tipo de alteração.

Nem todas as carteiras usam o BIP-44, mas é uma maneira comum de padronizar como as contas são derivadas de uma semente binária.

Como são criadas as chaves privadas a partir da semente binária?

Como mencionamos anteriormente, as chaves privadas são compostas por 64 caracteres hexadecimais, o que corresponde a 32 bytes. E, acabamos de gerar uma semente binária de 64 bytes através do processo PBKDF2 - então como podemos usar esse valor de hash de 64 bytes para criar chaves privadas?

Primeiro, o hash é dividido em duas metades, cada uma com 32 bytes de tamanho:

  1. A primeira metade é a chave privada mestra. Esta é uma correspondência direta 1-1 da semente binária (gerada usando sua frase-semente) e sua carteira. Pode ser usada no processo para criar chaves privadas filhas.
  2. A segunda metade é o código de cadeia. Isso é usado para garantir: se uma chave filha for comprometida, a chave mestra permanece segura. As chaves filhas podem ser construídas de forma consistente e são únicas.

Agora entendemos como as chaves privadas parecem, como são geradas aleatoriamente e como várias chaves podem ser derivadas de uma única frase de semente. Em seguida, vamos explorar como as chaves públicas são derivadas das chaves privadas.

Como funcionam as Chaves Públicas-Privadas

Usando criptografia de curva elíptica (ECC), podemos descobrir a chave pública para uma determinada chave privada. Existem diferentes tipos de curvas elípticas, mas aquela usada tanto pelo Bitcoin quanto pelo Ethereum é chamada de secp256k1.

A especificação para esta curva elíptica inclui um ponto base, G, que é usado como ponto de partida para criarmos outros pontos na curva. A partir deste ponto de partida, "movemo-nos" na curva um certo número de vezes (determinado pela nossa chave privada), de uma forma específica. O ponto da curva em que terminamos quando pararmos este processo será a nossa chave pública.

A forma como nos “movimentamos” na curva é chamada de multiplicação escalar. Ao trabalhar com curvas elípticas, um escalar refere-se a um número usado para dimensionar um ponto na curva. Tomamos o ponto base G e aplicamos o número escalar a ele para alcançar um novo ponto na curva, “esticando” esse ponto.

O número escalar que aplicamos ao ponto base é a nossa chave privada; em termos simples, pegamos o nosso ponto de partida G e multiplicamo-lo escalarmente pela nossa chave privada para alcançar a nossa chave pública.

Na realidade, uma vez que a curva é definida sobre o campo primo ℤp, parece mais uma série de pontos dispersos... mas ainda possui as mesmas propriedades da curva elíptica.

No final deste processo de multiplicação escalar (saltando em torno do número de chave privada), acabaremos em um novo ponto na curva, que é nossa chave pública. Você pode imaginar que esse processo se parece com isso:

Para que são utilizadas as chaves públicas na blockchain?

Chaves públicas, como o nome sugere, podem ser compartilhadas publicamente com qualquer pessoa. Elas são úteis para:

  • Ver quem submeteu uma transação na blockchain
  • Receber fundos, como ETH, de outras carteiras
  • Pode ser usado para verificar se uma chave privada assinou uma mensagem ou não.

Conclusão

As carteiras são um componente essencial das blockchains que utilizam criptografia de curva elíptica para permitir que os usuários enviem transações e assinem mensagens de suas contas.

No entanto, algumas blockchains como a Abstract também suportam novos tipos de carteiras, chamadas contas de contratos inteligentes, que fornecem mais funcionalidades e permitem mecanismos de segurança mais fortes, recuperação e muito mais.

Aviso Legal:

  1. Este artigo foi reproduzido a partir de [https://abs.xyz/blog], Encaminhar o Título Original 'O que é uma Carteira?', Todos os direitos autorais pertencem ao autor original [ Jarrod Watts ]. Se houver objeções a esta reimpressão, por favor entre em contato com oGate Aprenderequipa e eles tratarão do assunto prontamente.

  2. Isenção de Responsabilidade: Os pontos de vista e opiniões expressos neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.

  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.

O que é uma Carteira?

Principiante10/1/2024, 6:09:44 PM
Neste post, abordaremos o que é uma carteira, como as carteiras são feitas e como elas usam criptografia de curva elíptica para gerar e proteger pares de chaves público-privadas, derivar frases de semente e facilitar interações seguras de blockchain.

As carteiras são ferramentas essenciais que permitem aos utilizadores gerir as suas contas de blockchain, armazenar os seus ativos de forma segura e assinar transações para efetuar alterações no estado da blockchain.

Neste post, abordaremos o que é uma carteira, como as carteiras são feitas e como utilizam a criptografia de curva elíptica para gerar e garantir pares de chaves privadas-públicas, derivar frases de semente e facilitar interações seguras com a blockchain.

O que é uma carteira?

Uma carteira é uma aplicação que lhe permite visualizar e interagir com a(s) sua(s) conta(s) blockchain; estas contas permitem-lhe enviar transações para realizar ações como enviar tokens ou interagir com contratos inteligentes.

Cada conta na blockchain é composta por um par de chaves criptográficas; um conjunto de 2 chaves que estão vinculadas entre si. No contexto das blockchains, este tipo de conta é tipicamente chamado de Conta Externa de Propriedade (EOA) e consiste em uma chave pública e uma chave privada:

  • Chave pública: o endereço da sua carteira. Ele pode ser compartilhado com qualquer pessoa, e outras pessoas (ou contratos inteligentes) podem usá-lo para enviar criptomoedas.
  • Chave privada: A "chave de assinatura" que você usa para assinar mensagens ou transações. Qualquer pessoa que tenha acesso à chave privada tem controle total sobre os fundos na carteira.

Este par de chaves tem uma função poderosa, chamada de função de porta de armadilha; o que significa que é:

  • Fácil de descobrir a chave pública se tiver a chave privada (A→B).
  • Impossível descobrir a chave privada se você tiver a chave pública (B→A).

Para que servem as carteiras?

As carteiras são usadas para assinar mensagens ou transações usando a chave privada da carteira para serem enviadas para uma blockchain.

As carteiras fornecem uma maneira de saber quais mensagens ou transações uma carteira concordou; uma vez que a chave pública do remetente da transação pode ser recuperada a partir da assinatura da transação. Isto é essencial para evitar que transações falsas/maliciosas sejam aceites na blockchain.

Por exemplo, Jarrod poderia submeter uma transação alegando que Abril lhe enviou 5 ETH, mesmo que ela nunca tenha concordado com essa transação. No entanto, uma vez que a blockchain verifica a assinatura de cada transação, rapidamente rejeitará a transação, uma vez que o endereço recuperado da assinatura não corresponde ao "remetente" da transação (ou seja, Abril).

Blockchains como o Ethereum usam o ECDSA (Algoritmo de Assinatura Digital de Curva Elíptica) para verificar se a chave pública recuperada da assinatura da transação corresponde à chave pública da pessoa que enviou a transação para a rede.

Como são criadas as carteiras?

Para criar uma carteira, você precisa criar um par de chaves pública-privada. No entanto, os valores deste par de chaves precisam seguir algumas regras para que funcione em uma blockchain.

  1. Uma chave privada é composta por 64 caracteres hexadecimais (caracteres 0→F).
  2. A chave pública é derivada da chave privada usando criptografia de curva elíptica (ECC).
  3. A chave pública é cortada, hashada e formatada para se tornar um endereço de 42 caracteres.

Este processo de 3 etapas é o fluxo central de como as contas são geradas na blockchain.

A seguir, vamos mergulhar em como uma chave pública é derivada usando uma curva elíptica e uma chave privada. Mas antes disso, responderemos a algumas outras perguntas que você possa ter sobre carteiras, como:

  • Como posso garantir que a minha chave privada é gerada aleatoriamente?
  • E se eu obtiver a mesma chave privada que outra pessoa?
  • Como é que as frases-semente se encaixam neste processo?
  • Como são gerados vários pares de chaves a partir de uma única frase-semente?

O que é uma frase-semente?

Embora seja possível gerar um valor hexadecimal aleatório de 64 dígitos como acabamos de demonstrar, geralmente, as chaves privadas são geradas usando padrões específicos que se originaram do Bitcoin. Esses padrões permitem aos usuários lembrar de uma frase semente, que é uma frase de 12 a 24 palavras que pode ser usada para criar qualquer número de novas contas associadas a ela.

Isto permite aos utilizadores lembrarem-se de um conjunto único de palavras para aceder a todas as suas contas; cada uma com um par de chaves público-privadas individuais. Qualquer número de novas chaves privadas pode ser derivado de uma única frase-semente usando uma função de derivação de chave específica (KDF).

Então, vamos primeiro abordar como as frases-semente são geradas através de entropia aleatória e como as chaves privadas podem ser derivadas de uma frase-semente, antes de finalmente revisitar como as chaves públicas são derivadas das chaves privadas.

Como funcionam as frases semente

Quando instala pela primeira vez uma aplicação de carteira, normalmente, pedir-lhe-á para escrever e guardar em segurança uma frase semente em algum lugar; normalmente uma combinação de 12 ou 24 palavras. Pode ver um exemplo de lista de palavras em inglês possíveisaqui, que você notará tem 2048 palavras de comprimento (voltaremos a esse número em breve).

O que é BIP-39?

Esta ideia de armazenar frases semente mnemônicas foi introduzida em 2013 com um BIP (Proposta de Melhoria Bitcoin); BIP-39. Esta proposta fornece uma maneira padronizada de gerar entropia aleatória e traduzi-la em uma série de palavras fáceis de lembrar.

Como é gerada uma frase-semente?

Primeiro, precisamos garantir que nossa frase-semente seja gerada aleatoriamente, afinal, não queremos que outra pessoa acesse acidentalmente nossa carteira e tenha acesso aos nossos fundos.

Para fazer isso, é gerado um número aleatório usando CSPRNG (gerador de números pseudoaleatórios criptograficamente seguro), que você pode fazer no seu navegador:

Este número aleatório é chamado de entropia. Esta entropia é usada para criar o conjunto de palavras que formam uma frase-semente. No nosso caso, 128 bits correspondem a 12 palavras, mas também é possível usar outros comprimentos, como:

  • 15 palavras: 160 bits
  • 18 palavras: 192 bits
  • 21 palavras: 224 bits
  • 24 palavras: 256 bits

Então, como usamos esses bits para criar uma frase semente? Qual é a relação entre bits e palavras? Primeiro, é criado um checksum para a entropia e anexado aos 128 bits; este é um hash de 4 bits da entropia criado para garantir sua integridade.

Portanto, agora temos 128 bits de entropia + 4 bits de checksum, totalizando 132 bits. Em seguida, os 132 bits são convertidos em binário; especificamente, eles são divididos em pedaços de 11 bits.

Agora temos um conjunto de 12 números binários, cada um com 11 bits de comprimento. Dica: temos 12 números e nossa frase de semente terá 12 palavras!

Lembre-se de que temos 2048 palavras em nossa lista e que 2048 foi escolhido porque 2048 é 2^11, já que existem 2048 números binários diferentes possíveis que você pode fazer com 11 bits.

Agora só precisamos converter esses números binários em palavras da nossa lista de palavras. Isso é feito usando o número binário como um índice para procurar uma palavra na lista de palavras. Ou seja, se o número binário for 10, usamos a nona palavra da lista (já que começamos no índice 0), por exemplo:

  • 000000111, (7 em binário) é o 8º item da lista, que é resumo! 😉
  • 11111111111, (2047 em binário) é o último item da lista (2048º), que é “zoo”.

Repetir isto 12 vezes, uma para cada número de 11 bits para formar uma frase-semente contendo 12 palavras.

Ao gerar um valor de entropia aleatório, dividi-lo em pedaços de binário e usar esses valores binários como um índice para procurar palavras em uma lista de palavras, acabamos com uma frase-semente aleatória.

Alguém consegue adivinhar a minha frase-semente?

A sua reação imediata a isto pode ser: "Se só existem 2048 palavras possíveis, alguém não consegue adivinhar a minha frase-semente?" Bem, tecnicamente sim, mas é realmente... realmente improvável. Quão improvável pergunta você?

Imagine que esquecemos o passo de geração aleatória de 128 bits e selecionamos manualmente apenas 12 palavras da lista. Cada vez que selecionamos uma palavra, estamos selecionando uma opção em um conjunto de 2048 palavras.

Portanto, podemos dizer que para outra pessoa também adivinhar essa mesma sequência de palavras, ela precisa adivinhar corretamente a mesma palavra que nós com uma chance de 1/2048, 12 vezes seguidas. Agora mesmo, você provavelmente está pensando: 'ok, isso não parece tão difícil...,' certo?"Mas, vamos jogar isto:

  • Primeira Palavra: 2048 escolhas
  • Segunda palavra: 2048 opções
  • E assim por diante, até 12: 2048 opções

Isto é 2048 x 2048 x 2048 ... 12 vezes. Ou seja, 2048^12. Que é... um número absurdamente grande. Aproximadamente, 5 septiliões, ou 5 quatrilhões de bilhões. Isso é inimaginável para nós compreendermos, mas vamos tentar...

Imagine que começaste a adivinhar agora, usando um computador incrivelmente poderoso que pode adivinhar 1 trilhão de frases-semente por segundo. Levaria a esta máquina 159 trilhões de anos para adivinhar uma frase-semente. Ou, (dependendo no que acreditas), aproximadamente 11.000 vezes mais do que a idade atual do universo.

São frases-semente de 24 palavras melhores do que as de 12?

Algumas carteiras optam por 128 bits (12 palavras), mas as carteiras mais modernas pedem que se lembre de 24 palavras para a sua frase-semente! O que, mais uma vez, é ridículamente grande.

Como as chaves privadas são derivadas de frases semente

Agora temos uma frase-semente de 12 palavras, como ela é usada para criar chaves privadas para contas? Para fazer isso, precisamos converter nossa frase-semente em uma frase-semente binária que pode ser usada para gerar carteiras. Esse processo envolve as seguintes etapas:

  1. Opcionalmente, o utilizador fornece uma palavra-passe adicional.
  2. Um algoritmo chamado PBKDF2 (Função de Derivação de Chave Baseada em Senha) recebe: A frase semente. Uma combinação da string 'mnemônico' e a senha opcional.

Este processo (chamado de função de derivação de chave), produz um valor de hash de 64 bytes, chamado de semente binária, usando outro algoritmo chamado HMAC-SHA512 como função pseudo-aleatória.

O valor de hash de 64 bytes gerado pode ser usado para gerar contas usando a lógica que se originou de outros padrões do Bitcoin; nomeadamente BIP-32 e, opcionalmente, uma extensão do BIP-32, BIP-44.

O que é o BIP-32?

O BIP-32 introduz carteiras determinísticas hierárquicas (HD); onde muitas carteiras podem ser derivadas de uma única semente, e mais carteiras podem ser derivadas dessas carteiras, criando uma "árvore" de carteiras.

O que é BIP-44?

BIP-44 fornece uma maneira padronizada de criar uma hierarquia para estruturas de carteira a partir de uma única semente binária, implementando um caminho de derivação específico seguindo a estrutura: m / finalidade' / tipo_moeda' / conta' / mudança / índice_endereço:

  • finalidade: Identifica o padrão BIP usado; para BIP-44, é 44'.
  • coin_type: Especifica a criptomoeda; por exemplo, 0' para Bitcoin, 60' para Ethereum.
  • conta: Distingue entre diferentes contas de usuário.
  • change: Indica o tipo de endereço: 0 para recebimento, 1 para troco.
  • address_index: Fornece um índice único para cada endereço sob a mesma conta e tipo de alteração.

Nem todas as carteiras usam o BIP-44, mas é uma maneira comum de padronizar como as contas são derivadas de uma semente binária.

Como são criadas as chaves privadas a partir da semente binária?

Como mencionamos anteriormente, as chaves privadas são compostas por 64 caracteres hexadecimais, o que corresponde a 32 bytes. E, acabamos de gerar uma semente binária de 64 bytes através do processo PBKDF2 - então como podemos usar esse valor de hash de 64 bytes para criar chaves privadas?

Primeiro, o hash é dividido em duas metades, cada uma com 32 bytes de tamanho:

  1. A primeira metade é a chave privada mestra. Esta é uma correspondência direta 1-1 da semente binária (gerada usando sua frase-semente) e sua carteira. Pode ser usada no processo para criar chaves privadas filhas.
  2. A segunda metade é o código de cadeia. Isso é usado para garantir: se uma chave filha for comprometida, a chave mestra permanece segura. As chaves filhas podem ser construídas de forma consistente e são únicas.

Agora entendemos como as chaves privadas parecem, como são geradas aleatoriamente e como várias chaves podem ser derivadas de uma única frase de semente. Em seguida, vamos explorar como as chaves públicas são derivadas das chaves privadas.

Como funcionam as Chaves Públicas-Privadas

Usando criptografia de curva elíptica (ECC), podemos descobrir a chave pública para uma determinada chave privada. Existem diferentes tipos de curvas elípticas, mas aquela usada tanto pelo Bitcoin quanto pelo Ethereum é chamada de secp256k1.

A especificação para esta curva elíptica inclui um ponto base, G, que é usado como ponto de partida para criarmos outros pontos na curva. A partir deste ponto de partida, "movemo-nos" na curva um certo número de vezes (determinado pela nossa chave privada), de uma forma específica. O ponto da curva em que terminamos quando pararmos este processo será a nossa chave pública.

A forma como nos “movimentamos” na curva é chamada de multiplicação escalar. Ao trabalhar com curvas elípticas, um escalar refere-se a um número usado para dimensionar um ponto na curva. Tomamos o ponto base G e aplicamos o número escalar a ele para alcançar um novo ponto na curva, “esticando” esse ponto.

O número escalar que aplicamos ao ponto base é a nossa chave privada; em termos simples, pegamos o nosso ponto de partida G e multiplicamo-lo escalarmente pela nossa chave privada para alcançar a nossa chave pública.

Na realidade, uma vez que a curva é definida sobre o campo primo ℤp, parece mais uma série de pontos dispersos... mas ainda possui as mesmas propriedades da curva elíptica.

No final deste processo de multiplicação escalar (saltando em torno do número de chave privada), acabaremos em um novo ponto na curva, que é nossa chave pública. Você pode imaginar que esse processo se parece com isso:

Para que são utilizadas as chaves públicas na blockchain?

Chaves públicas, como o nome sugere, podem ser compartilhadas publicamente com qualquer pessoa. Elas são úteis para:

  • Ver quem submeteu uma transação na blockchain
  • Receber fundos, como ETH, de outras carteiras
  • Pode ser usado para verificar se uma chave privada assinou uma mensagem ou não.

Conclusão

As carteiras são um componente essencial das blockchains que utilizam criptografia de curva elíptica para permitir que os usuários enviem transações e assinem mensagens de suas contas.

No entanto, algumas blockchains como a Abstract também suportam novos tipos de carteiras, chamadas contas de contratos inteligentes, que fornecem mais funcionalidades e permitem mecanismos de segurança mais fortes, recuperação e muito mais.

Aviso Legal:

  1. Este artigo foi reproduzido a partir de [https://abs.xyz/blog], Encaminhar o Título Original 'O que é uma Carteira?', Todos os direitos autorais pertencem ao autor original [ Jarrod Watts ]. Se houver objeções a esta reimpressão, por favor entre em contato com oGate Aprenderequipa e eles tratarão do assunto prontamente.

  2. Isenção de Responsabilidade: Os pontos de vista e opiniões expressos neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.

  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.

Comece agora
Registe-se e ganhe um cupão de
100 USD
!