Em criptografia, a entropia descreve a incerteza que resta a um atacante ao tentar adivinhar um valor secreto. Numa carteira Bitcoin, importa logo na criação da base das chaves. A questão não é se os caracteres parecem complicados, mas quantos resultados eram realmente possíveis, qual a probabilidade de cada um e o que o atacante sabe sobre o processo.
Imagine um segredo criado a partir da data e da hora em que a carteira foi configurada. Depois de codificado, pode parecer uma longa mistura de caracteres. Mas, se o atacante conhecer a hora aproximada e o método, talvez só tenha de experimentar um pequeno conjunto de possibilidades. Uma representação mais longa não lhe dificulta necessariamente a tarefa. Por isso, o RFC 4086 distingue a imprevisibilidade da mera aparência de aleatoriedade. Não consegue avaliar a entropia olhando para uma única chave; precisa de saber como foi criada. [3]
Um bit é uma unidade básica de dados que pode ter o valor 0 ou 1. O número de bits, por si só, não indica quanta incerteza resta a um atacante. Quando uma carteira cria uma Seed Phrase segundo o BIP39, precisa primeiro de uma entrada aleatória. Só depois a transforma em palavras. Uma frase de 12 palavras codifica 128 bits de entrada e 4 bits de soma de verificação; uma de 24 palavras, 256 bits de entrada e 8 bits de verificação. A soma ajuda a detetar alguns erros de transcrição, mas não acrescenta entropia: é calculada a partir da entrada existente. Uma lista mais longa não corrige, por isso, uma aleatoriedade mal gerada. Importa como a cópia de segurança foi criada, não apenas o número de palavras. [4]
Uma carteira não precisa de fazer uma nova medição física por cada byte, um grupo de 8 bits. Pode usar um gerador criptográfico chamado DRBG: um algoritmo que produz mais valores a partir de um estado inicial secreto. Quando é bem concebido e utilizado, as saídas são difíceis de prever sem conhecer esse estado. Ainda assim, o algoritmo é determinístico: o mesmo estado completo e as mesmas entradas produzem a mesma continuação. Gerar mais bytes não cria automaticamente mais entropia física nova. Contam tanto a entrada inicial como a proteção do estado interno. [2]
Uma função hash calcula a partir dos dados uma impressão digital de comprimento fixo que pode parecer aleatória. Mas quem conhece a entrada consegue calcular o mesmo resultado. Entradas totalmente conhecidas não se tornam secretas dessa forma. O termo técnico conditioning designa um processamento que pode reduzir desvios e concentrar a incerteza já disponível. Não cria um segredo do nada. Também não se pode somar automaticamente a entropia de várias fontes: podem estar relacionadas e fornecer a mesma informação. [1] [3]
Uma fonte de ruído eletrónico pode avariar ou mudar de comportamento com as condições do ambiente. Por isso, o NIST SP 800-90B exige verificações do ruído bruto no arranque e durante o funcionamento, antes do processamento. Estas verificações procuram sinais de falha; não provam que cada saída é segura. O responsável pelo desenvolvimento deve compreender a fonte, os seus limites e as possíveis dependências. Uma falha detetada deve ser comunicada à aplicação que usa os dados. Se a avaria persistir, a fonte deve deixar de produzir saídas. Um chip apresentado como gerador aleatório não basta, por si só. [1]
Se um atacante obtiver o estado interno de um DRBG, poderá prever as saídas seguintes, consoante a sua construção. Recuperar a imprevisibilidade exige entrada nova suficiente que o atacante desconheça; acrescentar essa entropia chama-se reseeding. Continuar os cálculos ou acrescentar uma hora conhecida não garante essa proteção. Distinga também a reparação do gerador da segurança dos fundos existentes: recuperar o gerador não invalida uma chave que já tenha sido exposta. [2]
Um teste estatístico pode revelar, por exemplo, repetições suspeitas. Mas não consegue determinar com certeza se um atacante conhece a entrada secreta ou uma forma de prever a saída. O NIST SP 800-22 assinala expressamente este limite. Os testes são uma parte útil da avaliação, não substituem a análise do gerador completo. Um ficheiro cheio de números aparentemente aleatórios não prova, por si só, que uma carteira é segura. [5]
Um principiante não precisa de calcular à mão a entropia da sua carteira. É mais útil procurar um processo documentado: de onde vem a aleatoriedade, como é processada, como se reage às falhas e como se protegem os segredos. O NIST SP 800-90C trata precisamente da combinação de fontes de entropia e DRBG num gerador completo. Mas citar uma norma ou um chip conhecido não prova que uma versão concreta da carteira o utiliza corretamente. O que conta são as propriedades demonstradas da implementação real. [1] [6]
Para ter uma visão mais completa, leia este verbete junto com Entropy Bit, CSPRNG, Dice Roll Entropy, Private Key. Também há referências a este verbete em BIP85, Dice Roll Entropy, Entropy Bit, Brute Force Search Space.