Recentemente, tenho vontade de fazer um guia sobre como obter "mnemônicos" secretos e seguros. Bem a tempo da piada de Do Kwon há alguns dias, sinto que é necessário compartilhá-lo com todos.

São necessárias 5 etapas no total:

1. Encontre a lista mnemônica

2. Encontre alguns dados

3. Jogue os dados - converta a base

4. Encontre o dígito de verificação

5. Backup

A carteira de hardware que você carrega é realmente segura? Na verdade: seja uma carteira quente ou uma carteira de hardware, a frase mnemônica que você obtém é gerada de forma aleatória e automática pelo software para você.

É claro que estou feliz em dar crédito suficiente aos fornecedores de carteiras de hardware, mas como um cara nativo da criptografia, sinto que “confiança” não é suficiente.

Por que você diz isso? Desde o momento em que uma carteira de hardware é produzida até suas mãos, ela passou por muitos links: desenvolvedores, designers de hardware, montadores, embaladores, entregador A, alfândega, triagem, entregador B... e assim por diante.

O pior cenário é: o algoritmo aleatório gerado automaticamente é uma versão crackeada ou simplesmente possui um backdoor.

Todo mundo já ouviu falar do conceito de “pseudo-aleatório”. Afinal, números aleatórios gerados por máquinas têm a possibilidade de serem previstos por outras pessoas. Por exemplo, se você usar uma carteira de hardware (violada) fornecida por outra pessoa, então, teoricamente, as 12 palavras que você gerar poderão ser geradas por outras pessoas e seus métodos de proteção de hardware não terão sentido.

Portanto, é melhor gerarmos nós mesmos um conjunto de mnemônicos, em vez de gerá-los automaticamente com a ajuda de um programa.

A carteira de hardware não pode acessar a rede. É difícil implantar um backdoor neste link. Contanto que você possa garantir que sua frase mnemônica seja gerada de forma verdadeiramente aleatória, a segurança da carteira de hardware compensará a última deficiência. é que ninguém pode conhecer sua frase mnemônica.

Então, como gerar um mnemônico verdadeiramente aleatório? É simples: aleatoriedade física.

A seguir está um tutorial. Se você estiver interessado, pode retuitá-lo e esperar o fim de semana para operá-lo lentamente.

Passo 1 Encontre a lista de palavras mnemônicas de 2.048

Em primeiro lugar, popularize um conceito: Bitcoin, Ethereum e todas as cadeias subsequentes usam o mesmo conjunto de protocolos, que é o BIP-39 criado pela comunidade Bitcoin. Existem 2.048 palavras aqui e, para evitar erros de caligrafia, o BIP-39 também removeu cuidadosamente muitas palavras que parecem muito semelhantes.

BIP39 no armazém Bitcoin

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

Você pode obter facilmente essas 2.048 palavras em qualquer mecanismo de pesquisa. Claro, como você está na vanguarda, pode procurar três fontes de informação e realizar pesquisas aleatórias para confirmar se são BIP39 genuínos.

Muitas pessoas não sabem que o BIP-39 realmente oferece suporte ao chinês. Por exemplo, a teoria de “um entra e sai de um” também pode gerar um endereço de carteira; Claro, para melhor compatibilidade, é recomendável usar a lista de palavras tradicional padrão.

Step2 Encontre alguns dados

A seguir, vamos fazer um experimento mental: se eu quiser obter a verdadeira aleatoriedade, a maneira mais simples é ter um "dado de 2.048 lados" e lançá-lo 12 vezes seguidas (na verdade, 11 vezes, falaremos sobre isso mais tarde) , Podemos obter um conjunto completamente aleatório de mnemônicos reais.

No entanto, acredito que nenhum de vocês tenha esses dados, então temos que usar um pouco de inteligência.

Há uma questão clássica de algoritmo: como usar um dado padrão para gerar números aleatórios de 1 a 7. https://www.zhihu.com/question/62404167

Só precisamos mudar o requisito desta questão de 7 para 2048. Agora você pode comprar 11 dados ou moedas online (para ser honesto, as moedas do continente são cada vez menos usadas).

Passo 3 Jogue os dados e converta para binário

Agora comece a agitar os dados, e os números ímpares nos dados serão registrados como 1, e os números pares serão registrados como 0 (o mesmo vale para moedas). As combinações de 11 dados são exatamente: 2*2*2*2*2*2*2*2*2*2*2*2=2048, então você pode usar esses dados para gerar um número binário.

Por exemplo, se eu agitar um resultado, será 1 0 1 1 1 1 1 0 0 0 1. Se você converter em decimal, será 1521. O algoritmo é muito simples e pode ser calculado com caneta e papel (não é recomendado usar um computador porque a chave privada não toca na Internet). Para o algoritmo, consulte: https://zhuanlan.zhihu.com). /p/75291280

Então você vai para a lista de palavras BIP-39 e encontra a 1521ª palavra, que é segura.

Role um total de 11 vezes seguidas e você obterá um conjunto completamente aleatório de palavras, como: colina segura também desvanece-se ocioso choque noz charuto olho água limpa.

Etapa 4: Obtenha a última palavra de teste por meio de método exaustivo

Por que não lançar os dados com todas as 12 palavras de uma só vez?

Toda a sequência mnemônica do BIP-39 contém um certo grau de função de verificação, semelhante ao número final de uma carteira de identidade, que possui um design semelhante.

Portanto, embora a 12ª palavra em si não seja um dígito de verificação especial, considerando que toda a sequência mnemônica deve obedecer a determinadas regras, ao criar uma carteira, se o mnemônico inserido não cumprir as regras de verificação, a criação falhará.

Para simplificar: nenhuma das 12 palavras da lista pode formar um conjunto de mnemônicos, elas devem estar em conformidade com certas regras. Se você procurar um conjunto de palavras aleatoriamente, provavelmente será solicitado: mnemônico inválido.

Se for uma frase mnemônica gerada automaticamente por um programa, é claro que ela obedece automaticamente às regras. E nós o criamos fisicamente, então, novamente, é necessário pensar um pouco.

É muito simples, já que os 11 primeiros não seguiram as regras. Então, só precisamos fazer a correspondência da 12ª frase mnemônica.

Então, como obter a 12ª palavra? Não vou deixar minha mochila para explicar o princípio aqui e adotar diretamente a ideia de "exaustão por força bruta" (inesperadamente, criar um mnemônico sozinho requer quebra de força bruta).

Na verdade, se você tentar de 0 a 30 palavras em qualquer posição da lista mnemônica de 2048, certamente haverá palavras que atendem às regras. Por exemplo, quando falo sobre este grupo, começo a partir da 230ª palavra, 233 marrom está OK e 255 cabine está OK.

Claro, seria melhor se você tentasse quebrá-lo diretamente na carteira de hardware, porque afinal, ele não tocará na Internet. Mas a desvantagem é que é cansativo, e a maioria das carteiras de hardware tem poucos botões...incluindo ledger S e onekey classic. Quanto ao trezor de Do Kwon, ainda não comprei, então não sei.

Se você quiser ser preguiçoso, use um telefone celular aposentado e baixe uma carteira confiável ou qualquer carteira que você conheça. Em seguida, desconecte-se da Internet e reveze-se nos testes. Até experimentar a 12ª palavra que atende às regras, anote-a silenciosamente, exclua o aplicativo, copie o que quiser (limpe a área de transferência) e reinicie e desligue o telefone várias vezes.

Isso está feito! Por meios totalmente físicos e aleatórios, sem estar conectado à Internet, você obtém um conjunto de palavras mnemônicas que absolutamente ninguém pode adivinhar. Neste momento, você insere esse conjunto de palavras mnemônicas na carteira de hardware e sua segurança é completa. Exausta.

Passo 5 Backup

Claro, ainda é recomendado fazer pelo menos 2 backups. Não use lápis (é fácil desbotar), não guarde no computador ou no celular (então fizemos em vão) e não tente guardar metade em dois aparelhos eletrônicos (é fácil ser quebrado pela força bruta).

Claro, se você for bom o suficiente, poderá memorizá-lo (para evitar a tragédia de Do Kwon), mas isso não é fortemente recomendado. Aqui estão algumas dicas para memorizar mnemônicos, como o meu: colina segura também desbotamento ocioso choque noz charuto olho cabine de água limpa.

Você pode inventar uma história: Em uma pequena aldeia (segura) nas montanhas, há uma colina (colina), e há um jovem preguiçoso (ocioso) na aldeia. Suas roupas estão muito desbotadas... balabala.

Dessa forma, em teoria, se você se lembrar da história, também se lembrará da frase mnemônica. Porém, gostaria de enfatizar que o cérebro humano é um dispositivo de armazenamento biológico muito legal e não é recomendado para pessoas comuns, exceto Do Kwon.

Claro, se você simplesmente deseja fazer uma carteira fria como titular de longo prazo, acho que escrevê-la no papel, copiar o endereço e apenas transferi-la para dentro, mas não para fora, então você nem precisa de uma carteira de hardware. Esta também era uma prática comum nos primeiros anos.

Finalmente, desejo que todos possam sempre proteger as suas carteiras e bens. Se você tiver alguma dúvida ou forma de melhorar a aleatoriedade física, deixe uma mensagem para comunicação.

Autor deste artigo:

0xTodd | Nada Parceiro de Pesquisa