O que é bip39?

Um BIP (Proposta de melhoria do bitcoin) é um documento de design pattern que fornece/descreve informações à comunidade Bitcoin sobre seus processos e/ou ambiente.

O BIP-39 descreve a implementação de códigos mnemônicos ou declarações mnemônicas para geração de carteiras determinísticas.

Esse padrão é constituído em duas partes, a primeira gera a sequencia mnemônica e a segunda convertendo-a em uma semente binária.

Essa semente pode então ser usada para gerar uma carteira determinística usando BIP-32 ou métodos similares.

O BIP-39 serve como um meio termo entre as infinitas possibilidades de chaves aleatórias e a nossa capacidade de memorização, tornando esses infinitos caracteres legíveis para humanos e altamente fáceis de usar em comparação com representações binárias ou hexadecimais.

Substituindo assim as sequencias intermináveis de caracteres, por palavras, ajudando os usuários a lembrar suas chaves secretas com mais facilidade.

Os mnemônicos são gerados codificando a entropia em múltiplos de 32 bits e tem entre 128-256 bits. Chamamos o comprimento da entropia inicial de ENT.

Quanto maior o comprimento do bits, maior o nível de segurança, mas o comprimento do mnemônico também aumenta.

Depois que o ENT é gerado, uma soma de verificação é criada ao se pegar os primeiros “ENT/32” bits de seu hash SHA256.

HASH = soma de verificação SHA256(ENT)

CS = primeiros ENT/32 bits de HASH

A soma de verificação é então anexada à entropia inicial, resultando em ENT + CS.

Os bits combinados são então divididos em grupos de 11 bits, cada grupo codificando um número de 0 a 2047, que serve como um índice do vocabulário.

Esses números são convertidos em palavras, e as palavras conectadas são usadas como mnemônicos.

Vocabulário

As palavras do vocabulário correspondem aos índices 0 ao 2047, são padronizadas para interoperabilidade.

Suas características são:

  • A lista de palavras é formada para que seja possível identificar claramente a palavra apenas digitando as primeiras quatro letras.
  • É evitado usar pares de palavras semelhantes para facilitar a lembrança da frase.
  • A classificação da lista é feita para tornar a pesquisa de palavras por código mais eficiente.

A conversão para mnemônico em seed é feito com PBKDF2

O PBKDF 2 é uma função simples de derivação de chave senha que é resistente a ataques de dicionário e ataques de rainbow table. É baseado na derivação de múltiplas iterações HMAC com algum preenchimento.

frase mnemônica serve como senha, e a string “memory” + senha é usada como salt para a função PBKDF2.

A senha pode ser inserida pelo usuário, caso contrário, uma string vazia será usada.

É definido 2048 interações e HMAC-SHA512 é usado como uma função pseudo-aleatória para derivar uma chave de comprimento de 512 bits. Essa semente é então usada para gerar a carteira HD descrita no BIP 32.

Sobre Nicolau 37 Artigos
Fuçando o desenvolvimento de software desde 2013, sou da turma do código aberto, vivo pesquisando e garimpando a segurança na web. Sommelier de sucos e chocólatra de carteirinha. Hic svnt dracones.

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*