Um hacker e desenvolvedor da Lightning Network chamado John Cantrell revelou como concluiu a árdua tarefa de invadir uma carteira de bitcoin, roubando quase R$50 mil para si.
Cantrell levou 30 horas para checar nada menos que 1 trilhão de possíveis frases mnemônicas (combinações de 12 palavras colocadas em uma ordem específica que permitem o acesso a uma carteira).
De onde surgiu a ideia
Na verdade, tudo fez parte de um desafio orquestrado por Alistair Milne, CIO do Altana Digital Currency Fund, que teve início em maio.
Periodicamente, Milne publicou dicas para a frase inicial de 12 palavras para um endereço de carteira que continha 1 BTC inteiro, e os competidores deveriam decifrar o código para conseguir o prêmio.
O CIO planejava publicar as última três palavras de uma só vez, visando evitar que alguém forçasse a entrada na carteira ao adivinhar palavras continuamente até que uma combinação funcionasse.
Contudo, seu plano falhou, e Cantrell conseguiu invadir a carteira com apenas 8 palavras da frase inicial.
Testando “aproximadamente 1,1 trilhão de mnemônicos possíveis”, o desenvolvedor foi capaz de adivinhar as outras 4 palavras restantes, encontrar a combinação certa e desbloquear o endereço, levando o prêmio.
Como isso foi possível
As frases mnemônicas têm um número limitado de 2048 palavras que podem conter.
Para vencer o desafio, Cantrell contou que escreveu um programa especial e executou algumas benchmarks antes de descobrir que seu equipamento na época não seria capaz de realizar a tarefa.
O laptop do desenvolvedor conseguiu verificar apenas 1.250 mnemônicos por segundo, totalizando 108 milhões por dia.
“Isso significa que minha CPU levaria cerca de 25 anos para gerar e verificar as 1 trilhão de possibilidades necessárias para a força bruta do mnemônico, enquanto conhecia apenas oito das palavras”, observou ele.
Assim, Cantrell decidiu usar a computação em nuvem e alugou várias dezenas de placas gráficas em um mercado de GPU e o serviço de computação em nuvem da Microsoft, Azure.
Depois, escreveu um software que distribuiria o trabalho em lotes por cada placa gráfica.
Quando a oitava palavra foi publicada, o hacker ligou as máquinas e passou a testar “cerca de 40 bilhões de mnemônicos por horax” no pico.
“Isso significa que levaria cerca de 25 horas para testar os 1 trilhão de mnemônicos. Eu sabia que, em média, levaria apenas 50% do tempo”, disse Cantrell.
No entanto, após testar 85% das combinações, o hacker ainda não havia decifrado o código e percebeu que seu plano dependia das palavras estarem na ordem certa, e se não estivessem, “haveria 8! (fatorial) mais possibilidades”.
Cantrell passou um dia inteiro fazendo cálculos e quase desistiu, quando, para sua surpresa, “um pouco mais tarde, naquela noite (em 91%) e depois de quase 30 horas e exatamente 1 trilhão de cheques (1.000.710.602.752), o sistema encontrou uma solução!”, afirmou.
Temendo que mais alguém tivesse encontrado a resposta, o desenvolvedor pagou uma taxa de 0,01 BTC (cerca de R$493) para transferir o valor para sua carteira pessoal.
O hacker agora planeja lançar seu próprio desafio “que não pode ser ganho com software” para pagar adiante.