Cloudflare convierte las fotos de 100 lámparas de lava en datos aleatorios para su uso en la encriptación SSL.
Después de leer este artículo podrás:
Contenido relacionado
¿Qué es la encriptación?
Criptografía de clave pública
Encriptación asimétrica
¿Qué es SSL?
¿Qué es un certificado SSL?
Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar el enlace del artículo
La aleatoriedad es extremadamente importante para una encriptación segura. Cada nueva clave que un ordenador utiliza para encriptar datos debe ser realmente aleatoria, para que un atacante no pueda averiguarla y desencriptar los datos. Sin embargo, los ordenadores están diseñados para proporcionar resultados predecibles y lógicos basados en una entrada determinada. No están diseñados para producir los datos aleatorios necesarios para crear claves de encriptación imprevisibles.
Para producir los datos imprevisibles y caóticos necesarios para una encriptación fuerte, un ordenador debe tener una fuente de datos aleatorios. El "mundo real" resulta ser una gran fuente de aleatoriedad, ya que los acontecimientos del mundo físico son imprevisibles.
Como cabría esperar, las lámparas de lava son aleatorias de forma sistemática. La "lava" en una lámpara de lava nunca adopta la misma forma dos veces, y como resultado, observar un grupo de lámparas de lava es una gran fuente de datos aleatorios.
Para recopilar estos datos, Cloudflare ha dispuesto unas 100 lámparas de lava en una de las paredes del vestíbulo de la sede de Cloudflare y ha montado una cámara apuntando hacia ellas. La cámara hace fotos de las lámparas a intervalos regulares y envía las imágenes a los servidores de Cloudflare. En realidad, todas las imágenes digitales son almacenadas por los ordenadores como una serie de números, y cada píxel tiene su propio valor numérico, por lo que cada imagen se convierte en una cadena de números totalmente aleatorios que los servidores de Cloudflare pueden utilizar como punto de partida para crear claves de encriptación seguras.
Por tanto, con la ayuda de las lámparas de lava, Cloudflare es capaz de ofrecer una encriptación SSL/TLS extremadamente fuerte (y suficientemente aleatoria) a sus clientes. Esto es especialmente importante si se tiene en cuenta que millones de propiedades de Internet utilizan Cloudflare.
En criptografía, aleatorio no solo significa estadísticamente aleatorio, sino también imprevisible.
Los datos encriptados deben parecer totalmente aleatorios, ya que los datos predecibles se pueden adivinar. Si hay algún patrón, si ciertos valores se utilizan para la encriptación más que otros, o si los valores aparecen en un determinado orden de forma constante, el análisis matemático captará el patrón y permitirá a un atacante adivinar la clave utilizada para la encriptación con mucha más facilidad. En esencia, si los datos encriptados son predecibles, ya están en riesgo.
El proceso de encriptación es en sí mismo predecible: los datos encriptados más la clave adecuada equivalen a los datos desencriptados, y los datos desencriptados son los mismos que antes de ser encriptados. Pero las claves de encriptación utilizadas tienen que ser imprevisibles.
Para entender por qué la imprevisibilidad es tan importante, imaginemos dos jugadores de póker: Bob siempre apuesta cuando tiene buenas cartas y se retira (no iguala las apuestas de otros jugadores) cuando tiene malas cartas. Alice, por su parte, mezcla su estrategia de apuestas de forma que no hay un patrón discernible: a veces apuesta cuando tiene buenas cartas, a veces se contenta con igualar las apuestas de otros jugadores, y a veces incluso va de farol apostando fuerte cuando tiene malas cartas. Cuando Alice y Bob entran en el mismo torneo de póker, Alice dura mucho más que Bob, porque este es demasiado predecible. Los adversarios se dan cuenta muy rápido de cuándo Bob tiene buenas cartas y reaccionan en consecuencia. Aunque no pueden ver sus cartas, pueden discernir aproximadamente qué cartas tiene.
De forma similar, aunque los atacantes no puedan ver las "cartas", o el contenido encriptado, que se envía a través de una red, pueden adivinarlo si el método para ocultar el contenido es demasiado predecible.
Los ordenadores funcionan con lógica. Un programa informático se basa en declaraciones "si-entonces": si se cumplen ciertas condiciones, entonces realiza esta acción especificada. La misma entrada en un programa da siempre el mismo resultado.
Esto es así por diseño. Una entrada debe conducir a un resultado esperado, no a uno inesperado. Imaginemos el caos que se produciría si una impresora imprimiera un texto aleatorio diferente al del documento enviado a la impresora, o si los teléfonos inteligentes llamaran a un número de teléfono diferente al introducido por el usuario. Los ordenadores solo son útiles por su (relativa) fiabilidad y previsibilidad. Sin embargo, esa previsibilidad es un lastre cuando se trata de generar claves de encriptación seguras.
Algunos programas informáticos son buenos para simular la aleatoriedad, pero no lo suficientemente buenos como para crear claves de encriptación.
Un programa de software llamado generador de números pseudoaleatorios (PRNG) es capaz de tomar una entrada impredecible y utilizarla para generar resultados impredecibles. En teoría, un PRNG puede producir resultados ilimitados aleatorios a partir de una entrada aleatoria.
Un algoritmo de este tipo se denomina "pseudoaleatorio" y no "aleatorio", porque sus resultados no son en realidad completamente aleatorios. ¿Por qué es así? Hay dos razones principales:
Debido a la razón n.º 2, el algoritmo necesita nuevas entradas de aleatoriedad continuamente. Una entrada aleatoria se conoce como "semilla criptográfica".
Un generador de números pseudoaleatorios criptográficamente seguro, o CSPRNG, es un PRNG que cumple normas más estrictas, lo que hace su uso sea más seguro para la criptografía. Un CSPRNG cumple dos requisitos que los PRNG no necesariamente cumplen:
Igual que un PRNG, un CSPRNG necesita datos aleatorios (la semilla criptográfica) como punto de partida para producir más datos aleatorios.
Para generar claves de encriptación para la encriptación SSL/TLS, Cloudflare utiliza un CSPRNG, con los datos recogidos de las lámparas de lava como parte de la semilla criptográfica.
Una semilla criptográfica es el dato con el que empieza un CSPRNG para generar datos aleatorios. Aunque, en teoría, un CSPRNG podría producir resultados aleatorios ilimitados a partir de una única semilla criptográfica, es mucho más seguro actualizar con regularidad la semilla criptográfica. Un atacante puede llegar a poner en riesgo la semilla criptográfica inicial, y recordemos que un CSPRNG producirá exactamente los mismos resultados si se le alimenta con la misma semilla, por lo que el atacante podría duplicar los resultados aleatorios. Además, incluso el CSPRNG que haya sido sometido a las pruebas más rigurosas no garantiza que produzca resultados impredecibles indefinidamente.
Con las lámparas de lava, Cloudflare dispone de una fuente continua de nuevos datos de semillas criptográficas. Cada imagen que la cámara toma de las lámparas es diferente, lo que da lugar a una secuencia aleatoria diferente de valores numéricos que puede usarse como semilla.
Muchos sistemas operativos tienen sus propias fuentes de datos aleatorios para ser utilizados en las semillas criptográficas; por ejemplo, a partir de las acciones del usuario (movimientos del ratón, uso del teclado, etc.), aunque obtienen estos datos con relativa lentitud. Cloudflare mezcla los datos aleatorios obtenidos de las lámparas de lava con los datos generados por el sistema operativo Linux en dos máquinas diferentes para maximizar la entropía al crear semillas criptográficas para la encriptación SSL/TLS.
En general, "entropía" significa desorden o caos. Pero la entropía tiene un significado específico en criptografía: hace referencia a la imprevisibilidad. En realidad, los criptógrafos miden la cantidad de entropía que tiene un determinado conjunto de datos en términos del número de bits de entropía. Por ello, Cloudflare se refiere al muro de la lámpara de lava como el "Muro de entropía".
Como la pared de la lámpara de lava está en el concurrido vestíbulo de la sede central de Cloudflare, esto pasa todo el tiempo. La gente va y viene por el vestíbulo, pasando por delante o parándose a hablar delante de las lámparas. Estas obstrucciones se convierten en parte de la aleatoriedad que capta la cámara, por lo que las personas que bloquean parcialmente la visión de la cámara de las lámparas de lava ayudan en realidad a generar entropía.
Si esto ocurre, Cloudflare sigue teniendo otras dos fuentes de aleatorización del sistema operativo Linux que se ejecuta en los servidores de Cloudflare. Además, Cloudflare tiene un fácil acceso físico a la cámara, porque está en un espacio que es propiedad de Cloudflare, y Cloudflare puede volver a encenderla o sustituirla rápidamente, según sea necesario.
Las otras dos oficinas principales de Cloudflare están en Londres y en Singapur, y cada oficina tiene su propio método para generar datos aleatorios a partir de entradas del mundo real. En Londres se toman fotos de un sistema de doble péndulo montado en la oficina (un péndulo conectado a otro péndulo, cuyos movimientos son matemáticamente impredecibles). La oficina de Singapur mide la desintegración radiactiva de una bolita de uranio (una cantidad lo suficientemente pequeña como para ser inofensiva).
Sorprendentemente, no: una empresa llamada Silicon Graphics diseñó un sistema similar llamado "Lavarand" en 1996, aunque la patente ya ha caducado.
Para más información sobre el muro de la lámpara de lava de Cloudflare consulta estas dos publicaciones del blog:
Consulta esta página para más información sobre cómo utilizar la encriptación SSL gratuita de Cloudflare.