Fundamentals ·

O Que e Entropia? A Aleatoriedade por Tras da Seguranca Cripto


Toda carteira de criptomoedas comeca com um numero aleatorio. Nao uma senha que voce escolhe, nao um padrao que voce projeta, mas aleatoriedade pura extraida do mundo fisico. Essa aleatoriedade e chamada de entropia, e e o fator mais importante que determina se seus ativos cripto estao seguros ou vulneraveis.

Se a entropia por tras da sua carteira for forte, um atacante precisaria percorrer mais combinacoes do que ha atomos no universo observavel para encontrar suas chaves. Se a entropia for fraca, seus fundos podem ser roubados em segundos. Nao existe meio-termo.

Entropia Definida

Em criptografia, entropia mede a imprevisibilidade dos dados. E quantificada em bits. Um bit de entropia representa uma unica escolha binaria: cara ou coroa, 0 ou 1. Dois bits de entropia dao quatro resultados possiveis. Tres bits dao oito. Cada bit adicional dobra o numero de possibilidades.

A formula e direta: n bits de entropia produzem 2^n valores possiveis.

Esse crescimento exponencial e o que torna a entropia tao poderosa. Em numeros pequenos, as possibilidades parecem gerenciaveis. Nas contagens de bits usadas em criptomoedas, tornam-se incompreensivelmente grandes.

Entropia no contexto cripto nao e uma metafora ou conceito abstrato. E uma quantidade especifica e mensuravel de aleatoriedade que e alimentada em algoritmos deterministicos para produzir sua seed phrase, chaves privadas e, em ultima instancia, seus enderecos. Tudo a jusante da entropia inicial e matematicamente derivado. A entropia em si e a unica parte que deve ser genuinamente aleatoria.

128 Bits vs 256 Bits

O padrao BIP39, que define como seed phrases sao geradas, suporta dois comprimentos primarios de entropia:

128 bits (seed phrase de 12 palavras)

  • Produz 2^128 seed phrases possiveis
  • Isso e 340.282.366.920.938.463.463.374.607.431.768.211.456 combinacoes
  • Aproximadamente 3,4 x 10^38

256 bits (seed phrase de 24 palavras)

  • Produz 2^256 seed phrases possiveis
  • Isso e aproximadamente 1,16 x 10^77 combinacoes
  • Mais que o numero estimado de atomos no universo observavel

Ambos os niveis sao considerados seguros contra a tecnologia atual. 128 bits de entropia e o padrao para a maioria das carteiras de consumo, e nenhum metodo computacional conhecido pode percorrer 2^128 possibilidades em qualquer prazo pratico. A opcao de 256 bits fornece uma margem de seguranca adicional para usuarios que desejam maxima protecao ou estao preocupados com avancos futuros em computacao. Para uma comparacao detalhada, veja Quao Rapido uma Seed Phrase Pode Ser Quebrada por Forca Bruta?.

A relacao entre bits de entropia e contagem de palavras segue uma regra simples: cada 11 bits de entropia correspondem a uma palavra da lista de palavras BIP39 (2.048 palavras, e 2^11 = 2.048). Uma frase de 12 palavras codifica 128 bits de entropia mais 4 bits de checksum. Uma frase de 24 palavras codifica 256 bits de entropia mais 8 bits de checksum. Para a analise completa desse processo, leia BIP39 Explicado.

Fontes de Aleatoriedade: Hardware RNG e Web Crypto API

A questao critica e: de onde vem a entropia? Nem todos os geradores de numeros aleatorios sao iguais.

Pseudoaleatorio vs. Criptograficamente Seguro

Uma funcao de aleatoriedade padrao de programacao (como Math.random() do JavaScript) e pseudoaleatoria. Ela usa uma formula matematica para produzir numeros que parecem aleatorios mas sao inteiramente deterministicos. Dado o mesmo valor inicial, produzira a mesma sequencia todas as vezes. Isso e catastroficamente inadequado para gerar chaves de criptomoedas.

Geradores de numeros aleatorios criptograficamente seguros (CSPRNGs) resolvem isso incorporando aleatoriedade fisica genuina de fontes de hardware.

Geradores de Numeros Aleatorios por Hardware

CPUs modernas incluem geradores de numeros aleatorios por hardware dedicados que coletam entropia de fenomenos fisicos:

  • Intel RDRAND/RDSEED: Usa ruido termico em circuitos de silicio
  • ARM TrustZone TRNG: Aproveita geracao de bits aleatorios no nivel de hardware
  • Pools de entropia do SO: /dev/urandom do Linux, CryptGenRandom do Windows e SecRandomCopyBytes do macOS mantem pools de entropia alimentados por eventos de hardware como timing de interrupcoes, variacoes de seek de disco e tempos de chegada de pacotes de rede

Essas fontes fisicas produzem aleatoriedade que nao pode ser prevista mesmo por um atacante com conhecimento completo do estado do software do sistema.

Web Crypto API

Para ferramentas baseadas em navegador, a Web Crypto API fornece acesso ao gerador de numeros aleatorios criptograficos do sistema operacional atraves de crypto.getRandomValues(). Essa funcao e especificada pelo W3C e implementada em todos os navegadores modernos. Ela extrai do mesmo pool de entropia do SO usado por aplicacoes nativas.

O SafeSeed usa a Web Crypto API para toda geracao de chaves. Quando voce usa o Gerador de Seed Phrase Bitcoin ou o Gerador de Seed Phrase Ethereum, a entropia e obtida atraves de crypto.getRandomValues(), que fornece bytes aleatorios criptograficamente seguros diretamente do hardware do seu dispositivo. Nada e gerado em um servidor; tudo roda no seu navegador.

A Web Crypto API nao e o mesmo que Math.random(). E um sistema fundamentalmente diferente projetado especificamente para operacoes criptograficas. A distincao importa enormemente: Math.random() tem aproximadamente 52 bits de estado interno na maioria das implementacoes, significando que um atacante que observa algumas saidas pode prever todas as futuras. crypto.getRandomValues() nao tem tal fraqueza.

Da Entropia a Seed Phrase

A jornada da entropia bruta a uma seed phrase segue um caminho preciso e deterministico definido pela especificacao BIP39:

Etapa 1: Gerar bytes aleatorios

O CSPRNG produz 16 bytes (128 bits) ou 32 bytes (256 bits) de dados aleatorios.

Etapa 2: Calcular o checksum

O hash SHA-256 da entropia e calculado. Os primeiros 4 bits (para entropia de 128 bits) ou 8 bits (para entropia de 256 bits) desse hash sao acrescentados a entropia como checksum.

Etapa 3: Dividir em grupos de 11 bits

Os bits combinados de entropia + checksum sao divididos em grupos de 11 bits cada. Para uma frase de 12 palavras: 128 + 4 = 132 bits, divididos em 12 grupos de 11 bits.

Etapa 4: Mapear para palavras

Cada valor de 11 bits (0-2047) e usado como indice na lista de palavras BIP39 de 2.048 palavras. O resultado e sua frase mnemonica.

Etapa 5: Derivar a seed

A frase mnemonica e passada pelo PBKDF2-HMAC-SHA512 com 2.048 iteracoes para produzir uma seed de 512 bits. Essa seed e entao usada para derivar a arvore da sua carteira HD seguindo os caminhos de derivacao BIP44.

Cada etapa apos a etapa 1 e deterministica. Os mesmos 128 bits de entropia sempre produzirao as mesmas 12 palavras, a mesma seed e os mesmos enderecos. Toda a seguranca do sistema repousa sobre a imprevisibilidade desses bytes aleatorios iniciais.

Quando Entropia Fraca Leva a Fundos Roubados

As consequencias da entropia fraca nao sao teoricas. Multiplos incidentes do mundo real demonstraram o que acontece quando a aleatoriedade falha.

A vulnerabilidade Android SecureRandom (2013)

Em agosto de 2013, uma falha na implementacao do SecureRandom do Android foi descoberta. A biblioteca criptografica Java no Android nao estava inicializando adequadamente seu gerador de numeros aleatorios, fazendo com que algumas carteiras de Bitcoin gerassem chaves privadas com entropia insuficiente. Atacantes exploraram isso para roubar bitcoins das carteiras afetadas. A vulnerabilidade impactou multiplas aplicacoes de carteira e levou a patches de emergencia em todo o ecossistema Android.

Blockchain Bandit (chaves previsiveis)

O pesquisador de seguranca Adrian Bednarek documentou um caso em que atacantes escanearam sistematicamente a blockchain Ethereum em busca de enderecos derivados de chaves privadas fracas. Chaves como 0x0000...0001 (o numero 1) ou chaves derivadas de frases simples foram usadas por pessoas que nao entendiam entropia. Bots automatizados monitoravam esses enderecos e roubavam quaisquer fundos depositados neles em segundos. Milhares de ether foram drenados de enderecos com chaves previsiveis.

Ataques a brain wallets

Brain wallets --- onde uma chave privada e derivada de uma frase memorizada --- foram repetidamente comprometidas porque frases escolhidas por humanos tem muito menos entropia do que as pessoas supoe. Atacantes executam dicionarios massivos de frases, letras de musicas, citacoes de livros e senhas comuns pela mesma funcao de derivacao usada por brain wallets. Qualquer frase que um humano pode lembrar provavelmente esta dentro do espaco de busca desses ataques.

Esses incidentes compartilham uma licao comum: os algoritmos criptograficos em si (SHA-256, secp256k1, ECDSA) nao foram quebrados. A entropia que os alimentava era insuficiente.

Testando a Qualidade da Entropia

Como voce pode verificar se um gerador de numeros aleatorios esta produzindo entropia de qualidade? Diversos testes estatisticos existem:

NIST SP 800-22

O National Institute of Standards and Technology publica um conjunto de testes estatisticos para aleatoriedade. Estes incluem testes de frequencia (0s e 1s estao aproximadamente balanceados?), testes de sequencia (as sequencias de bits identicos tem o comprimento esperado?) e testes de rank de matriz, entre outros. Um CSPRNG bem funcionando deve passar em todos eles.

Conjunto de testes Dieharder

Um conjunto estendido de testes de aleatoriedade que exige mais dos geradores do que o conjunto NIST. Nomeado em homenagem aos testes Diehard originais de George Marsaglia, esse conjunto e comumente usado para avaliar novos geradores de numeros aleatorios.

Verificacao pratica

Para usuarios finais, a verificacao mais pratica e garantir que voce esta usando uma ferramenta bem auditada que depende de crypto.getRandomValues() ou um CSPRNG equivalente no nivel do SO. Voce nao deve tentar melhorar a entropia adicionando sua propria "aleatoriedade" (como escolher palavras voce mesmo), pois escolhas humanas sao muito menos aleatorias do que parecem.

As ferramentas do SafeSeed sao de codigo aberto, significando que qualquer um pode verificar que a fonte de entropia e crypto.getRandomValues() e nao uma alternativa mais fraca. O codigo roda inteiramente no seu navegador sem comunicacao com servidor, entao nao ha oportunidade para um intermediario influenciar a geracao de numeros aleatorios. Para uma discussao mais ampla sobre por que a geracao no lado do cliente importa, veja Geradores de Seed Online Sao Seguros?.

Entropia e Sua Postura de Seguranca

Entender entropia muda como voce pensa sobre seguranca cripto. Sua seed phrase de 12 palavras nao e apenas um mecanismo de backup conveniente; e uma codificacao legivel por humanos de um numero aleatorio tao grande que o universo nao contem energia suficiente para percorrer todas as possibilidades.

Mas essa protecao so se mantem se o numero aleatorio original era verdadeiramente aleatorio. Ao escolher ferramentas para gerar sua carteira:

  1. Verifique a fonte de entropia: A ferramenta deve usar crypto.getRandomValues(), /dev/urandom ou aleatoriedade equivalente baseada em hardware.
  2. Evite entropia personalizada: Nao escolha suas proprias palavras, lance dados com metodo viciado ou use qualquer fonte de aleatoriedade que voce "sente" ser boa o suficiente.
  3. Use padroes estabelecidos: BIP39 foi testado em batalha desde 2013. Ferramentas que seguem BIP39 precisamente, como o Gerador de Seed Phrase Solana no SafeSeed, herdam uma decada de revisao de seguranca.
  4. Gere offline quando possivel: Mesmo com entropia forte, gerar chaves em um dispositivo air-gapped ou offline elimina vetores de ataque baseados em rede. Veja Como Gerar uma Seed Phrase Bitcoin Offline para um guia pratico.

Entropia e invisivel. Voce nao pode ve-la, senti-la ou verifica-la olhando para a saida. Uma seed phrase gerada a partir de entropia fraca parece identica a uma gerada a partir de entropia forte. A unica forma de garantir sua seguranca e confiar no processo: use ferramentas auditadas e de codigo aberto que extraem de geradores de numeros aleatorios baseados em hardware, e nunca comprometa esse fundamento.