A Cloudflare traduz fotos de 100 lâmpadas de lava em dados aleatórios para uso na criptografia SSL.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
O que é Criptografia?
Criptografia de chave pública
Criptografia assimétrica
O que é SSL?
O que é certificado SSL?
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
A aleatoriedade é extremamente importante para a criptografia segurança . Cada nova chave que um computador usa para criptografar dados deve ser realmente aleatória, para que um invasor não consiga descobrir a chave e descriptografar os dados. No entanto, os computadores são projetados para fornecer saídas lógicas e previsíveis com base em uma determinada entrada. Eles não são projetados para produzir os dados aleatórios necessários para criar chaves de criptografia imprevisíveis.
Para produzir os dados imprevisíveis e caóticos necessários para uma criptografia forte, um computador deve ter uma fonte de dados aleatórios. O "mundo real" acaba sendo uma grande fonte de aleatoriedade, porque os eventos no mundo físico são imprevisíveis.
Como esperado, as lâmpadas de lava são consistentemente aleatórias. A "lava" em uma lâmpada de lava nunca assume a mesma forma duas vezes e, como resultado, observar um grupo de lâmpadas de lava é uma ótima fonte de dados aleatórios.
Para coletar esses dados, a Cloudflare organizou cerca de 100 lâmpadas de lava em uma das paredes do saguão da sede da Cloudflare e montou uma câmera apontando para as lâmpadas. A câmera tira fotos das lâmpadas em intervalos regulares e envia as imagens para os servidores da Cloudflare. Na verdade, todas as imagens digitais são armazenadas pelos computadores como uma série de números, com cada pixel tendo seu próprio valor numérico e assim cada imagem se torna uma sequência de números totalmente aleatórios que os servidores da Cloudflare podem usar como ponto de partida para criar chaves de criptografia seguras.
Assim, com a ajuda de lâmpadas de lava, a Cloudflare é capaz de oferecer criptografia SSL/TLS extremamente forte (e suficientemente aleatória) aos seus clientes. Isso é especialmente importante considerando que milhões de ativos da internet usam a Cloudflare.
Na criptografia, aleatório não significa apenas estatisticamente aleatório; significa também imprevisível.
Os dados criptografados devem parecer dados totalmente aleatórios, pois os dados previsíveis podem ser adivinhados. Se houver algum padrão – se certos valores forem usados para criptografia mais do que outros, ou se os valores aparecerem em uma determinada ordem de forma consistente – então a análise matemática captará o padrão e permitirá que um invasor tenha muito mais facilidade de adivinhar a chave usada para a criptografia. Essencialmente, se os dados criptografados são previsíveis, eles já podem estar comprometidos.
O processo de criptografia em si é previsível: os dados criptografados mais a chave certa são iguais aos dados descriptografados e os dados descriptografados são os mesmos que eram antes de serem criptografados. Mas as chaves de criptografia usadas precisam ser imprevisíveis.
Para entender por que a imprevisibilidade é tão importante, imagine dois jogadores de pôquer: Bob sempre aposta quando tem boas cartas e desiste (não iguala as apostas de outros jogadores) quando tem cartas ruins. Enquanto isso, a Alice mistura sua estratégia de apostas para que não haja um padrão discernível: às vezes ela aposta quando tem boas cartas, às vezes se contenta em igualar as apostas de outros jogadores e às vezes até blefa apostando alto quando tem cartas ruins. Quando a Alice e o Bob entram no mesmo torneio de poker, a Alice fica durante muito mais tempo do que o Bob, porque o Bob é muito previsível. Os oponentes descobrem rapidamente quando ele tem boas cartas e reagem de acordo. Mesmo que não possam ver suas cartas, eles podem ter uma noção de quais cartas ele tem.
Da mesma forma, mesmo que os invasores não possam ver as "cartas" ou o conteúdo criptografado – que é enviado por uma rede, eles podem adivinhar se o método para ocultar o conteúdo for muito previsível.
Os computadores funcionam com lógica. Um programa de computador é baseado em instruções se-então: Se certas condições forem atendidas então, execute esta ação especifica. A mesma entrada em um programa resulta na mesma saída todas as vezes.
Isso é por design. Uma entrada deve levar a uma saída esperada, não inesperada. Imagine o caos se uma impressora imprimisse um texto aleatório diferente do texto no documento que foi enviado para a impressora, ou se os smartphones ligassem para um número de telefone diferente daquele que o usuário digitou. Os computadores só são úteis devido à sua confiabilidade (relativa) e previsibilidade. No entanto, essa previsibilidade é uma responsabilidade quando se trata de gerar chaves de criptografia seguras.
Alguns programas de computador são bons para simular aleatoriedade, mas não o suficiente para criar chaves de criptografia.
Um programa de software chamado gerador de números pseudoaleatórios (PRNG) é capaz de receber uma entrada imprevisível e usá-la para gerar saídas imprevisíveis. Teoricamente, um PRNG pode produzir saídas aleatórias ilimitadas a partir de uma entrada aleatória.
Tal algoritmo é chamado de "pseudoaleatório" e não "aleatório" porque suas saídas não são completamente aleatórias. Por que isto acontece? Existem 2 razões principais:
Por causa da segunda razão, o algoritmo precisa continuamente de novas entradas de aleatoriedade. Uma entrada aleatória é conhecida como "semente criptográfica".
Um gerador de números pseudoaleatórios criptograficamente seguros, ou CSPRNG, é um PRNG que atende a padrões mais rigorosos, tornando-o mais seguro para uso em criptografia. Um CSPRNG atende a dois requisitos que os PRNGs podem não atender, necessariamente:
Como um PRNG, um CSPRNG precisa de dados aleatórios (a semente criptográfica) como ponto de partida para produzir mais dados aleatórios.
Para gerar chaves de criptografia para criptografia SSL/TLS, a Cloudflare usa um CSPRNG, com dados coletados das lâmpadas de lava como parte da semente criptográfica.
Uma semente criptográfica são os dados iniciais que um CSPRNG usa para começar a gerar os dados aleatórios. Embora um CSPRNG possa teoricamente produzir saídas aleatórias ilimitadas de uma única semente criptográfica, é muito mais seguro atualizar regularmente a semente criptográfica. Um invasor pode eventualmente comprometer a semente criptográfica inicial – e lembre-se, um CSPRNG produzirá exatamente as mesmas saídas novamente se for alimentado com a mesma semente, assim o invasor pode duplicar as saídas aleatórias. Além disso, até o CSPRNG testado com mais rigor não tem garantia de produzir resultados imprevisíveis indefinidamente.
Com as lâmpadas de lava, a Cloudflare tem uma fonte contínua para novos dados de sementes criptográficas. Cada imagem que a câmera tira das lâmpadas é diferente, resultando em uma sequência aleatória diferente de valores numéricos que podem ser usados como semente.
Muitos sistemas operacionais têm suas próprias fontes de dados aleatórios para uso em sementes criptográficas, por exemplo, de ações do usuário (movimentos do mouse, digitação em um teclado, etc.), embora obtenham esses dados de forma relativamente lenta. A Cloudflare mistura os dados aleatórios obtidos das lâmpadas de lava com os dados gerados pelo sistema operacional Linux em duas máquinas diferentes para maximizar a entropia ao criar sementes criptográficas para criptografia SSL/TLS.
Em geral, "entropia" significa desordem ou caos. Mas a entropia tem um significado específico na criptografia: refere-se à imprevisibilidade. Os criptógrafos realmente medirão quanta entropia um determinado conjunto de dados possui em termos do número de bits de entropia. Por causa disso, a Cloudflare se refere à parede da lâmpadas de lava como a "Muralha da Entropia".
Como a parede da lâmpadas de lava fica no movimentado saguão da sede da Cloudflare, isso acontece o tempo todo. As pessoas vão e vêm no saguão, passando ou parando para conversar em frente às lâmpadas. Tais obstruções tornam-se parte da aleatoriedade que a câmera captura, então as pessoas que bloqueiam parcialmente a visão da câmera das lâmpadas de lava realmente ajudam a gerar entropia.
Se isso acontecer, a Cloudflare ainda terá duas outras fontes de randomização do sistema operacional Linux em execução nos servidores da Cloudflare. Além disso, a Cloudflare tem fácil acesso físico à câmera porque está em um espaço de propriedade da Cloudflare e a Cloudflare pode rapidamente ligá-la novamente ou substituí-la, conforme necessário.
Os outros dois principais escritórios da Cloudflare estão em Londres e Cingapura e cada escritório tem seu próprio método para gerar dados aleatórios a partir de entradas do mundo real. O de Londres tira fotos de um sistema de pêndulo duplo montado no escritório (um pêndulo conectado a um pêndulo, cujos movimentos são matematicamente imprevisíveis). O escritório de Cingapura mede o decaimento radioativo de uma pastilha de urânio (uma quantidade pequena que é inofensiva).
Surpreendentemente, não – uma empresa chamada Silicon Graphics projetou um sistema semelhante chamado “Lavarand” em 1996, embora a patente tenha expirado desde então.
Para saber mais sobre a parede de lâmpadas de lava da Cloudflare confira estas duas postagens no blog:
Consulte essa página para saber como usar gratuitamente a criptografia SSL da Cloudflare.