Brute Force Search Space é o conjunto de possibilidades que podem ser testadas para descobrir um segredo. Imagine esquecer a senha do seu próprio backup criptografado: cada tentativa é uma candidata, e você precisa reconhecer se ela abriu o backup corretamente. Mais possibilidades igualmente prováveis e verificações mais caras costumam tornar a busca mais difícil. Em uma carteira real, porém, primeiro precisamos definir exatamente o que estamos procurando.
A senha de um backup, uma chave privada que autoriza gastar bitcoins e a entrada do gerador que criou a chave são coisas diferentes. Mudam tanto as possibilidades quanto a forma de verificá-las. Se um gerador defeituoso escolheu entre poucas entradas, a busca pode ser mais fácil do que o tamanho da chave resultante sugere. Um atacante pode testar esse pequeno conjunto em vez de todas as chaves matematicamente possíveis. Antes de contar as possibilidades, precisamos entender como o segredo foi criado. [1] [3]
Imagine 16 possibilidades igualmente prováveis, com exatamente uma resposta correta. Testamos uma após a outra, sem repetir. Às vezes acertamos cedo, às vezes só no fim; a média é de 8,5 candidatas verificadas. Para uma quantidade qualquer N, a relação é E = (N+1)/2. A uma velocidade constante de 2 tentativas por segundo, isso dá uma média de 4,25 segundos. A fração de tentativa pertence à média, não a uma busca específica. É um exemplo didático, não um tempo medido de recuperação de carteira Bitcoin. [1]
Palavras favoritas, nomes e padrões fáceis de lembrar aparecem mais do que combinações aleatórias. Um atacante pode começar pelas respostas mais prováveis. Um gerador defeituoso que produz certos resultados com maior frequência cria um problema semelhante. Nesse caso, a média do exemplo anterior deixa de valer. A min-entropia descreve a chance da melhor primeira tentativa, mas não determina sozinha o trabalho total nem um prazo garantido de sucesso. Contar possibilidades sem considerar suas probabilidades deixa a informação incompleta. [1] [2]
Verificar uma candidata pode levar tempo. PBKDF2 é uma função que deriva uma chave a partir de uma senha e outras entradas; repetir os cálculos aumenta o trabalho de cada tentativa. Outra entrada é o salt. Em geral, é um dado público que diferencia as derivações: salts diferentes impedem a simples reutilização da mesma tabela de resultados pré-calculados. Salt não é outra senha secreta nem substitui uma entrada forte. Para estimar a velocidade, precisamos conhecer a função, suas configurações e o hardware utilizado. [3]
O BIP39 transforma as palavras de recuperação e uma passphrase opcional, isto é, uma senha adicional, em um seed: o valor secreto inicial para derivar chaves. Usa PBKDF2 com HMAC-SHA512 como função interna de cálculo e 2048 iterações, ou repetições, para gerar um seed de 512 bits. Aqui, o parâmetro salt é o texto “mnemonic” seguido da passphrase; o segredo adicional vem da própria passphrase. Toda passphrase gera um seed válido, portanto a soma de verificação das palavras não confirma que você digitou a passphrase certa. Ao recuperar sua própria carteira, é possível reconhecê-la por um endereço conhecido, usando as configurações corretas de derivação de chaves, por exemplo. Um resultado longo não torna forte uma senha fraca. [4]
Também existem métodos matemáticos que não consistem apenas em testar palpites. Na criptografia de curvas elípticas (ECC), é possível calcular uma chave pública a partir da privada; encontrar o valor privado no sentido inverso é a tarefa difícil chamada problema do logaritmo discreto. O SEC 2 descreve os parâmetros da curva secp256k1 usada no Bitcoin. Contar todas as sequências de 256 bits, portanto, não representa todas as vias de ataque. O NIST SP 800-57 distingue tamanho de chave de força de segurança, o esforço estimado para quebrar a proteção sob determinadas hipóteses. Existir um caminho matemático não significa que ele seja fácil na prática. [5] [6]
Mais processadores podem dividir tentativas independentes, mas o ganho também depende da memória e da organização dos cálculos. O hashrate da mineração mede cálculos de mineração; não mede a velocidade do PBKDF2 nem das operações ECC. Também há diferença entre entrar em um site e ter uma cópia de backup. Um serviço pode restringir o acesso depois de tentativas erradas. Já quem possui uma cópia de um arquivo criptografado pode testar candidatas offline no próprio equipamento. O limite de login do site, por si só, não impede essas tentativas. [3] [6]
Quem obtém o seed inteiro não precisa percorrer um enorme conjunto de possibilidades. Um programa malicioso ou uma falha no software que manipula as chaves pode produzir o mesmo efeito. Segurança, portanto, vai além de escolher um segredo imprevisível: a forma de guardar e usar esse segredo também importa. Ao ouvir uma previsão de tempo para quebrar a proteção, pergunte qual ataque foi considerado, o que o atacante já sabe e como a velocidade foi medida. Um número grande não garante a segurança de um dispositivo, e este modelo não promete recuperar uma carteira perdida. [6]
Para ter uma visão mais completa, leia este verbete junto com Cryptographic Entropy, Entropy Bit, Private Key, Seed Phrase. Também há referências a este verbete em Entropy Bit, Random Number Generator.