Força bruta é a estratégia mais burra que existe, e é a única disponível quando o alvo é um endereço. Ela também é surpreendentemente rápida, por um motivo que quase ninguém percebe de primeira: ninguém calcula cada chave do zero.
Testar um candidato exige quatro etapas. Multiplicar o gerador pelo número candidato, o que produz a chave pública. Passar a chave pública pela SHA-256. Passar o resultado pela RIPEMD-160. Comparar os vinte bytes com o endereço procurado. A primeira etapa é dezenas de vezes mais cara que as outras três somadas — e é justamente ela que os programas de busca evitam.
O truque é procurar os candidatos em sequência. Se você já tem o ponto correspondente a k, o ponto correspondente a k mais um é aquele ponto somado a G: uma soma, não uma multiplicação inteira. E como toda soma de pontos exige uma divisão no corpo finito, que é a operação cara ali, usa-se um segundo truque, conhecido como inversão em lote: calcula-se uma única inversão para centenas de pontos de uma vez, e o custo por candidato despenca.

Com essas duas otimizações, uma placa de vídeo moderna testa alguns bilhões de candidatos por segundo. É um número que impressiona, e o que ele significa merece ser posto na balança devagar.
Um intervalo de setenta bits tem 2^69 candidatos, o que é aproximadamente 590 quintilhões. Dividindo por três bilhões por segundo, dá cerca de duzentos bilhões de segundos — algo em torno de seis mil e duzentos anos numa placa só. Mil placas em paralelo reduzem isso a pouco mais de seis anos. Dez mil placas, a sete meses.
Agora a conta de luz, que é a que decide de verdade. Uma placa dessas consome perto de quatrocentos watts. Multiplicando pela duração total do trabalho, a varredura completa de setenta bits gasta em torno de vinte e dois gigawatts-hora — o consumo de uma cidade de porte médio durante alguns dias, independentemente de quantas placas você use para chegar lá. Dividir o trabalho entre mais máquinas encurta o calendário e não muda a energia.

E então vem o que estraga tudo: cada bit a mais dobra a conta inteira. Setenta e um bits custam o dobro em tempo e o dobro em energia. Setenta e cinco custam trinta e duas vezes mais. Oitenta bits custam mil vezes mais que setenta — e mil vezes vinte e dois gigawatts-hora é uma quantidade de energia que nenhuma operação privada compra para procurar uma chave.

Vale ser exato sobre uma comparação que aparece muito. A rede do Bitcoin inteira calcula em torno de um sextilhão de hashes por segundo, um número centenas de vezes maior que qualquer fazenda de placas de vídeo — e ainda assim ela não serve para isto. Um minerador ASIC sabe fazer uma coisa só, SHA-256 sobre um cabeçalho de oitenta bytes, e não sabe multiplicar pontos numa curva. O hardware que resolve um desafio é outro, e é muito mais lento.
É por isso que a fronteira da força bruta sobre endereços está, hoje, em algum lugar entre setenta e oitenta bits, e não avança porque alguém teve uma ideia melhor: ela avança quando o hardware fica mais barato, e devagar. Nenhuma otimização de software muda a natureza exponencial da parede.
Vale registrar duas advertências práticas. A primeira é que o número de chaves por segundo que os programas anunciam varia muito conforme o que se procura — buscar um endereço específico, buscar qualquer um de uma lista de milhares e buscar por um prefixo são tarefas de custo bem diferente. A segunda é que boa parte dos ganhos anunciados vem de comparar contra uma lista carregada na memória, e não de calcular mais rápido.
Toda essa aula supôs o pior caso: só o endereço é conhecido. Quando a chave pública está exposta, o problema deixa de ser varrer o intervalo e passa a ser um logaritmo discreto — e aí existe um atalho que reduz 2^69 tentativas a algo perto de 2^35. Na próxima aula, o primeiro desses atalhos: trocar memória por tempo.