Explicado · Bitcoin
O que é a frase-semente, a lista de 12 a 24 palavras que reproduz as chaves de uma carteira
Definida no BIP-39, a frase mnemônica condensa 128 a 256 bits de entropia em 12 a 24 palavras com checksum e vira seed de 512 bits pelo PBKDF2, de onde saem as chaves.
Frase-semente é o grupo de palavras que o BIP-39 define para transformar aleatoriedade de computador em chaves legíveis de uma carteira de cripto. O padrão foi atribuído em 10 de setembro de 2013, assinado por Marek Palatinus, Pavol Rusnak, Aaron Voisine e Sean Bowe, e está com status de implantado. Ele descreve duas etapas independentes: gerar a frase a partir de uma entropia inicial e converter essa frase em um seed binário, que depois alimenta carteiras determinísticas pelo BIP-32.
A frase não é inventada por quem usa. Ela codifica entropia sempre múltipla de 32 bits, entre 128 e 256 bits. Do hash SHA256 dessa entropia são tomados os primeiros ENT/32 bits, que formam o checksum e vão para o fim da cadeia de bits. O conjunto é fatiado em blocos de 11 bits; cada bloco vale um número de 0 a 2047 e aponta para uma posição da lista de palavras. A tabela do BIP fixa o resultado: 128 bits de entropia viram 12 palavras, 160 viram 15, 192 viram 18, 224 viram 21 e 256 viram 24.
A lista de palavras faz parte do mecanismo. As palavras parecidas são evitadas, como build e built ou woman e women, a lista fica ordenada para busca binária e o texto é normalizado em UTF-8 NFKD, de modo que as quatro primeiras letras já identificam a palavra sem ambiguidade. Como os índices vão de 0 a 2047, a lista tem 2.048 palavras. O BIP desaconselha fortemente listas em outros idiomas: a conversão da frase em seed usa a frase em si, não a entropia original, então trocar de lista produz outro seed e outra carteira.
Do seed, o passo seguinte é o PBKDF2 com HMAC-SHA512, 2.048 iterações, a frase como senha e a string mnemonic somada à passphrase como sal, devolvendo 512 bits. A passphrase é opcional e, quando não há, entra como string vazia. A frase pode ser escrita em papel ou ditada, que é o transporte previsto: reproduzi-la em outro aparelho leva ao mesmo seed e, pelo BIP-32, à mesma árvore de chaves, com chaves privadas para gastar e chaves públicas estendidas, as xpub, que só observam.
A passphrase traz ainda deniabilidade plausível, efeito previsto no próprio BIP: toda passphrase gera um seed válido e uma carteira, e só a passphrase correta abre a carteira esperada. O BIP também deixa claro que o mecanismo transporta aleatoriedade gerada por computador e não serve para transformar frases criadas por pessoas em seed, o caso chamado de brainwallet.
O que já é regra e o que continua sendo limite: a conversão é de ida só, da frase para o seed, e não há como representar um seed arbitrário do BIP-32 com uma frase do BIP-39; o checksum é curto e deixa passar 1 em cada 256 erros aleatórios, sem ajudar a corrigir a palavra trocada; e não há esquema de versionamento no endereço, lacuna que o próprio BIP registra como mitigada pelas carteiras descritivas do BIP-380. O SLIP-0039, proposta dos mesmos autores como sucessor, segue como proposta, enquanto a lista em inglês continua sendo a única amplamente suportada.