Como as lâmpadas de lava ajudam na criptografia da internet?

A Cloudflare traduz fotos de 100 lâmpadas de lava em dados aleatórios para uso na criptografia SSL.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Aprender por que a aleatoriedade é necessária para as chaves de criptografia
  • Explicar por que os computadores não podem criar aleatoriedade por conta própria
  • Entender como um computador usa entradas aleatórias para gerar saídas aleatórias
  • Aprender o que é uma semente de criptografia
  • Entender como as lâmpadas de lava criam os dados aleatórios necessários para uma semente de criptografia

Copiar o link do artigo

Por que a Cloudflare usa lâmpadas de lava para ajudar na criptografia?

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.

O que significa "aleatório" no contexto da criptografia?

Na criptografia, aleatório não significa apenas estatisticamente aleatório; também significa imprevisível. Suponha que alguém jogasse um único dado de seis lados duas dúzias de vezes com os seguintes resultados:

1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6

Estatisticamente falando, esta é uma distribuição aleatória dos resultados do lançamento de dados. Cada número tem uma probabilidade igual de ser rolado, então é possível que essa sequência apareça.

No entanto, esta sequência não é imprevisível. Se essa série fosse usada na criptografia, um invasor poderia descobrir o padrão.

Por que a verdadeira imprevisibilidade é importante para a criptografia?

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.

Por que os computadores não podem criar aleatoriedade?

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.

Como um computador pode usar entradas aleatórias do mundo real para gerar dados aleatórios?

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:

  1. Para começar, quando uma determinada semente é fornecida duas vezes seguidas, um PRNG produzirá exatamente os mesmos resultados.
  2. É difícil provar se os resultados gerados serão completamente aleatórios o tempo todo (se o PRNG for executado indefinidamente).

Por causa da segunda razão, o algoritmo precisa continuamente de novas entradas de aleatoriedade. Uma entrada aleatória é conhecida como "semente criptográfica".

O que é um gerador de números pseudoaleatórios criptograficamente seguros?

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:

  1. Ele precisa passar por certos testes estatísticos de aleatoriedade para provar a imprevisibilidade.
  2. Um invasor não deve ser capaz de prever as saídas do CSPRNG, mesmo que tenha acesso parcial ao programa.

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.

O que é uma semente de criptografia?

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.

As lâmpadas de lava são a única fonte para as sementes criptográficas?

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.

O que é entropia?

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".

E se alguém ficar na frente das lâmpadas de lava?

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.

E se alguém desligar ou danificar a câmera?

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.

Todos os escritórios da Cloudflare têm a parede da lâmpadas de lava?

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).

A Cloudflare foi a primeira empresa a usar lâmpadas de lava para criptografia?

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.