Gerar números aleatórios é algo bem simples, mesmo o velho BASIC do ZX-81 tinha uma função pra isso, e eles são extremamente úteis, usados em inúmeras aplicações, mas acima de tudo essenciais para criptografia. O problema é que a imensa maioria dos geradores de números aleatórios são um lixo.
O método mais seguro possível de criptografia é uma simples tabela de substituição, aonde as letras e números são substituídos seqüencialmente por letras e números em uma tabela. Digamos que você começa pela primeira letra da frase “A BOMBA FOI ENTREGUE”. Na sua tabela a primeira linha de substituição lista que para “A” você deve usar “F”. Na segunda linha você busca “B” e a tabela lista “R”, aí quando chega na 5ª linha, você tem um “A” de novo. Esse “A” deve ser trocado por um “R”, que não tem nada a ver com o R anterior. E por aí vai.
Essas tabelas de uso único são muito populares entre espiões, ainda mais agora que é simples manter um pendrive ou MicroSD com dezenas ou centenas de tabelas. Só que da mesma forma que são simples de usar, se essas tabelas não forem criadas usando números realmente aleatórios, supercomputadores podem fazer análises estatísticas e descobrir a “semente” usada para gerar os números.
A imensa maioria dos algoritmos de geração de números aleatórios é suscetível a esse tipo de ataque. Serviços que necessitam de criptografia forte e números aleatórios apelam para todo tipo de tecnologia, incluindo as chamadas lâmpadas de lava, aquelas luminárias bregas dos Anos 70, que usam cera e glicerina, aquecidas por uma lâmpada e continuamente geram glóbulos de cera derretida que sobem, se esfriam e descem.
O Cloudflare usa 100 lâmpadas dessa, câmeras e software especializado para transformar o movimento aleatório das lâmpadas em números genuinamente randômicos.
Nos EUA a NSA desenvolveu sistemas de criptografia que geravam chaves aleatórias captando radiação eletromagnética de micro-ondas vinda do espaço, usando ruído térmico gerado por um resistor, detectores de fótons e outros métodos, mas sempre se buscou uma fonte realmente randômica, não influenciável por efeitos externos.
Uma fonte excelente de números randômicos é o chamado decaimento radioativo, quando um átomo espontaneamente emite radiação, na forma de ondas eletromagnéticas ou partículas. Ninguém sabe quando um átomo radioativo vai emitir algo, não há como prever esse fenômeno. Os números resultantes são genuinamente aleatórios.
Esse efeito foi usado por um maker chamado Lukas Koch, que utilizou um detector de fumaça para gerar números aleatórios.
Esses detectores usam um truque bem simples em seu funcionamento: Uma pequena amostra de material radioativo, no caso Amerício-241 emite partículas alfa, núcleos de Hélio. Essas partículas ionizam o ar e afetam a condutividade elétrica entre dois eletrodos dentro do detector. Estatisticamente dá pra manter uma média da emissão, e quando fumaça se intromete, afeta a absorção das partículas alfa, que por sua vez afeta a ionização e a voltagem entre os eletrodos.
O que Lukas fez foi refinar a precisão da medição, identificando as emissões individuais e transformando-as em números aleatórios, mas isso nem foi o primeiro uso dessa técnica.
Em 2014 Mark Hart, cientista e engenheiro do Laboratório Nacional Lawrence Livermore, a unidade do Governo dos EUA que projeta armas nucleares propôs uma nova técnica para proteger armas nucleares.
Ao contrário do que se pensa, a imensa maioria do trabalho no projeto de uma arma nuclear é criar mecanismos de proteção para que elas não explodam sem-querer, e muito menos via acesso não-autorizado. São dezenas de circuitos de autenticação, envelopes de certificação e vários outros recursos. Um deles envolve cada componente da bomba autenticar todos os outros componentes.
Assim o gerador de nêutrons só vai funcionar se todos os outros dispositivos forem legítimos. Não adianta você arrancar o timer ou o altímetro, espetar uma versão hackeada, os outros dispositivos não vão autenticar seu hardware hackeado.
Para isso cada dispositivo, quando instalado, precisa gerar uma Unique ID e propagar para o resto do sistema. Se você usar um gerador externo, cai no risco de ser um gerador com alguma falha, portanto passível de um ataque criptográfico, ou então os dados gerados podem ser interceptados entre a geração e a inserção na ogiva.
Mark propôs que os componentes fossem inicializados dentro da própria ogiva termonuclear, e já que estavam colados a uma boa fonte de radiação, que tal aproveitar e usar o decaimento radioativo do Plutônio para fornecer os números aleatórios necessários?
Com esse método as chances de um agente externo assumir controle de um componente individual são de 10-18, e do sistema inteiro 10-27, quase as mesmas chances da Luciana Vendramini aceitar meu convite para um chopinho.
Óbvio que não é necessário uma arma termonuclear para gerar números aleatórios, e o mesmo efeito foi conseguido com um detector de fumaça de US$20, mas é muito mais chique e elegante matar dois coelhos com uma cajadada atômica só.
Source link