O que é uma Carteira?

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

As carteiras são ferramentas essenciais que permitem aos usuários gerenciar suas contas de blockchain, armazenar com segurança seus ativos e assinar transações para fazer alterações no estado do blockchain.

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

O que é uma carteira?

Uma carteira é um aplicativo que permite visualizar e interagir com sua(s) conta(s) de blockchain; essas contas permitem que você envie 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 de Propriedade Externa (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 um recurso poderoso, chamado de função de alçapão; o que significa que é:

  • Fácil de descobrir a chave pública se você 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?

Carteiras são usadas para assinar mensagens ou transações usando a chave privada da carteira para serem enviadas para um 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 da assinatura da transação. Isso é essencial para evitar que transações falsas/maliciosas sejam aceitas na blockchain.

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

Blockchains como o Ethereum usam ECDSA (Elliptic Curve Digital Signature Algorithm) 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 ele funcione em um 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 principal de como as contas são geradas na blockchain.

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

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

O que é uma frase semente?

Embora seja possível gerar um valor hexadecimais aleatório de 64 caracteres 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 que os usuários memorizem 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.

Isso permite que os usuários lembrem um único conjunto de palavras para acessar 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 cobrir como as frases-semente são geradas por meio 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 as Frases Semente Funcionam

Quando você instala um aplicativo de carteira pela primeira vez, geralmente ele pedirá para você anotar e armazenar com segurança uma frase-semente em algum lugar; geralmente uma combinação de 12 ou 24 palavras. Você pode ver uma lista de exemplo de possíveis palavras em inglês.aquique você perceberá que tem 2048 palavras de comprimento (voltaremos a esse número em breve).

O que é BIP-39?

Essa ideia de armazenar frases-semente mnemônicas foi introduzida em 2013 com um BIP (Proposta de Melhoria do Bitcoin); BIP-39. Essa 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, um número aleatório é gerado usando CSPRNG (Gerador de Números Pseudorrandômicos Criptograficamente Seguro), que você pode fazer em 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 utilizar 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 de 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 criada para garantir sua integridade.

Então, 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, 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 semente será composta por 12 palavras!

Lembre-se de que temos 2048 palavras em nossa lista e que 2048 foi escolhido porque 2048 é 2^11, uma vez 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 na lista (já que começamos no índice 0), por exemplo:

  • 000000111, (7 in binary) é o 8º item na lista, que é resumo! 😉
  • 11111111111, (2047 in binário) é o último item da lista (2048º), que é "zoo".

Repita isso 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 binários e usar esses valores binários como um índice para procurar palavras em uma lista de palavras, acabamos com uma frase de semente aleatória.

Alguém consegue adivinhar minha frase de semente?

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

Imagine que nos esqueçamos da etapa de geração aleatória de 128 bits e simplesmente selecionemos manualmente 12 palavras da lista. Cada vez que selecionamos uma palavra, estamos escolhendo uma opção em um grupo de 2048 palavras.

Então, podemos dizer que para outra pessoa adivinhar a 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 isso:

  • Primeira Palavra: 2048 escolhas
  • Segunda Palavra: 2048 escolhas
  • E assim por diante, até 12: 2048 escolhas

Isto é 2048 x 2048 x 2048 ... 12 vezes. Ou, 2048^12. O que é... um número absurdamente grande. Grosso modo, 5 septilhões, ou 5 quatrilhões de bilhões. Isso é insondável para a gente entender, mas vamos tentar...

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

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

Algumas carteiras optam por 128 bits (12 palavras), mas carteiras mais modernas pedem que você lembre de 24 palavras para a sua frase-semente! O que, novamente, é absurdamente 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 semente binária que pode ser usada para gerar carteiras. Esse processo envolve as seguintes etapas:

  1. Opcionalmente, o usuário fornece uma senha adicional.
  2. Um algoritmo chamado PBKDF2 (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 é BIP-32?

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 carteiras a partir de uma única semente binária, implementando um caminho de derivação específico seguindo a estrutura: m / propósito’ / tipo_moeda’ / conta’ / mudança / índice_endereço:

  • finalidade: Identifica o padrão BIP usado; para BIP-44, é 44’.
  • Tipo de moeda: 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 receber, 1 para mudança.
  • address_index: Fornece um índice único para cada endereço sob a mesma conta e tipo de mudança.

Nem todas as carteiras usam o BIP-44, mas é uma forma 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 têm 64 caracteres hexadecimais, o que equivale a 32 bytes. E, acabamos de gerar uma semente binária de 64 bytes por meio do processo PBKDF2 - então como usamos 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. Isso é uma correspondência direta de 1-1 da semente binária (gerada usando sua frase de semente) e sua carteira. Pode ser usado no processo de criação de chaves privadas filho.
  2. A segunda metade é o código da 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 se 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 as Chaves Públicas-Privadas Funcionam

Usando a 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 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 desse ponto de partida, "movemos" a curva um certo número de vezes (determinado por nossa chave privada), de uma maneira específica. O ponto da curva em que acabamos quando pararmos esse processo será nossa chave pública.

A maneira como "nos movemos" pela curva é chamada de multiplicação escalar. Ao trabalhar com curvas elípticas, um escalar refere-se a um número usado para escalar 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 é nossa chave privada; simplificando, pegamos nosso ponto de partida G e o multiplicamos escalarmente por nossa chave privada para chegar à nossa chave pública.

Na realidade, como a curva é definida sobre o campo primo ℤp, ela se parece mais com um monte de pontos espalhados... mas ainda tem as mesmas propriedades da curva elíptica.

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

Para que são usadas as chaves públicas no blockchain?

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

  • Ver quem enviou uma transação no 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 usam 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 de contas de contratos inteligentes, que oferecem mais recursos e permitem mecanismos de segurança, recuperação mais robustos e muito mais.

Aviso legal:

  1. Este artigo é reproduzido de [ https://abs.xyz/blog], Encaminhe o título original 'O que é uma Carteira?', Todos os direitos autorais pertencem ao autor original [ Jarrod Watts ]. Se houver objeções a esta reprodução, entre em contato com o Gate Aprenderequipe e eles vão lidar com isso prontamente.

  2. Aviso de Responsabilidade: As opiniões expressas neste artigo são exclusivamente do autor e não constituem nenhum conselho de investimento.

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

O que é uma Carteira?

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

As carteiras são ferramentas essenciais que permitem aos usuários gerenciar suas contas de blockchain, armazenar com segurança seus ativos e assinar transações para fazer alterações no estado do blockchain.

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

O que é uma carteira?

Uma carteira é um aplicativo que permite visualizar e interagir com sua(s) conta(s) de blockchain; essas contas permitem que você envie 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 de Propriedade Externa (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 um recurso poderoso, chamado de função de alçapão; o que significa que é:

  • Fácil de descobrir a chave pública se você 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?

Carteiras são usadas para assinar mensagens ou transações usando a chave privada da carteira para serem enviadas para um 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 da assinatura da transação. Isso é essencial para evitar que transações falsas/maliciosas sejam aceitas na blockchain.

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

Blockchains como o Ethereum usam ECDSA (Elliptic Curve Digital Signature Algorithm) 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 ele funcione em um 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 principal de como as contas são geradas na blockchain.

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

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

O que é uma frase semente?

Embora seja possível gerar um valor hexadecimais aleatório de 64 caracteres 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 que os usuários memorizem 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.

Isso permite que os usuários lembrem um único conjunto de palavras para acessar 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 cobrir como as frases-semente são geradas por meio 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 as Frases Semente Funcionam

Quando você instala um aplicativo de carteira pela primeira vez, geralmente ele pedirá para você anotar e armazenar com segurança uma frase-semente em algum lugar; geralmente uma combinação de 12 ou 24 palavras. Você pode ver uma lista de exemplo de possíveis palavras em inglês.aquique você perceberá que tem 2048 palavras de comprimento (voltaremos a esse número em breve).

O que é BIP-39?

Essa ideia de armazenar frases-semente mnemônicas foi introduzida em 2013 com um BIP (Proposta de Melhoria do Bitcoin); BIP-39. Essa 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, um número aleatório é gerado usando CSPRNG (Gerador de Números Pseudorrandômicos Criptograficamente Seguro), que você pode fazer em 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 utilizar 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 de 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 criada para garantir sua integridade.

Então, 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, 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 semente será composta por 12 palavras!

Lembre-se de que temos 2048 palavras em nossa lista e que 2048 foi escolhido porque 2048 é 2^11, uma vez 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 na lista (já que começamos no índice 0), por exemplo:

  • 000000111, (7 in binary) é o 8º item na lista, que é resumo! 😉
  • 11111111111, (2047 in binário) é o último item da lista (2048º), que é "zoo".

Repita isso 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 binários e usar esses valores binários como um índice para procurar palavras em uma lista de palavras, acabamos com uma frase de semente aleatória.

Alguém consegue adivinhar minha frase de semente?

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

Imagine que nos esqueçamos da etapa de geração aleatória de 128 bits e simplesmente selecionemos manualmente 12 palavras da lista. Cada vez que selecionamos uma palavra, estamos escolhendo uma opção em um grupo de 2048 palavras.

Então, podemos dizer que para outra pessoa adivinhar a 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 isso:

  • Primeira Palavra: 2048 escolhas
  • Segunda Palavra: 2048 escolhas
  • E assim por diante, até 12: 2048 escolhas

Isto é 2048 x 2048 x 2048 ... 12 vezes. Ou, 2048^12. O que é... um número absurdamente grande. Grosso modo, 5 septilhões, ou 5 quatrilhões de bilhões. Isso é insondável para a gente entender, mas vamos tentar...

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

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

Algumas carteiras optam por 128 bits (12 palavras), mas carteiras mais modernas pedem que você lembre de 24 palavras para a sua frase-semente! O que, novamente, é absurdamente 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 semente binária que pode ser usada para gerar carteiras. Esse processo envolve as seguintes etapas:

  1. Opcionalmente, o usuário fornece uma senha adicional.
  2. Um algoritmo chamado PBKDF2 (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 é BIP-32?

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 carteiras a partir de uma única semente binária, implementando um caminho de derivação específico seguindo a estrutura: m / propósito’ / tipo_moeda’ / conta’ / mudança / índice_endereço:

  • finalidade: Identifica o padrão BIP usado; para BIP-44, é 44’.
  • Tipo de moeda: 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 receber, 1 para mudança.
  • address_index: Fornece um índice único para cada endereço sob a mesma conta e tipo de mudança.

Nem todas as carteiras usam o BIP-44, mas é uma forma 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 têm 64 caracteres hexadecimais, o que equivale a 32 bytes. E, acabamos de gerar uma semente binária de 64 bytes por meio do processo PBKDF2 - então como usamos 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. Isso é uma correspondência direta de 1-1 da semente binária (gerada usando sua frase de semente) e sua carteira. Pode ser usado no processo de criação de chaves privadas filho.
  2. A segunda metade é o código da 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 se 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 as Chaves Públicas-Privadas Funcionam

Usando a 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 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 desse ponto de partida, "movemos" a curva um certo número de vezes (determinado por nossa chave privada), de uma maneira específica. O ponto da curva em que acabamos quando pararmos esse processo será nossa chave pública.

A maneira como "nos movemos" pela curva é chamada de multiplicação escalar. Ao trabalhar com curvas elípticas, um escalar refere-se a um número usado para escalar 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 é nossa chave privada; simplificando, pegamos nosso ponto de partida G e o multiplicamos escalarmente por nossa chave privada para chegar à nossa chave pública.

Na realidade, como a curva é definida sobre o campo primo ℤp, ela se parece mais com um monte de pontos espalhados... mas ainda tem as mesmas propriedades da curva elíptica.

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

Para que são usadas as chaves públicas no blockchain?

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

  • Ver quem enviou uma transação no 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 usam 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 de contas de contratos inteligentes, que oferecem mais recursos e permitem mecanismos de segurança, recuperação mais robustos e muito mais.

Aviso legal:

  1. Este artigo é reproduzido de [ https://abs.xyz/blog], Encaminhe o título original 'O que é uma Carteira?', Todos os direitos autorais pertencem ao autor original [ Jarrod Watts ]. Se houver objeções a esta reprodução, entre em contato com o Gate Aprenderequipe e eles vão lidar com isso prontamente.

  2. Aviso de Responsabilidade: As opiniões expressas neste artigo são exclusivamente do autor e não constituem nenhum conselho de investimento.

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

Comece agora
Inscreva-se e ganhe um cupom de
$100
!