Cómo funciona LavaRand para generar Cryptographically-Secure Pseudorandom Numbers con Lámparas de Lava en las oficinas de Cloudflare
Esta es una historia antigua, que comienza en el siglo pasado, pero como muchos me siguen preguntando por ello, voy a dedicarle un artículo para los que no conocen la historia de los Cloudflare LavaRamp, o los muros de Lámparas de Lava que hay en algunas oficinas de Cloudflare por el mundo.
Para contar cómo funcionan, debemos irnos al año 1996, cuando la empresa Silicon Graphics solicitó la patente US5732138A con el título: "Method for seeding a pseudo-random number generator with a cryptographic hash of a digitization of a chaotic system" donde se describe en detalle el funcionamiento del sistema LavaRand, para crear un Cryptographically-Secure Pseudorandom Number Generator (CSPNG).
La patente, que ya no está activa, describe un mecanismo para generar estos números critográficamente-seguros pseudo-aleatorios, a partir de un estado concreto en el tiempo de un sistema caótico. Ese sistema caótico, debe tener un fuente de datos con mucha entropía para que los números que salgan de la generación no sean predecibles bajo ningún factor de sesgo.
Figura 3: Esquema de generación de número
La entropía mide el grado de incertidumbre en el valor de un determinado bit a la hora de sacar un valor aleatorio. Es decir, si tenemos una lista de bits, la probabilidad de que cada bit sea 1 o sea 0 debería ser del 50% sin que dependa de ningún dato o factor externo que pudiera sesgarlo. En la patente, se busca un sistema caótico que no sea predecible - o díficilmente predecible - por lo que su entropía debe ser muy alta, y es ahí donde entran las Lámparas de Lava.
La idea es que si tenemos una serie de Lámparas de Lava, y hacemos una instantánea temporal en forma de fotografía, tendremos siempre formas diferentes con alta incertidumbre de predicción. Lo que sirve como fuente de generación de valores con alta entropía. La forma de llevar esta fuente de entropía al sistema es tan sencillo como tener un "Wall of Lava Lamps" y tomar una fotografía de ellas.
Esto lo implementa Cloudflare en varias oficinas, donde se pueden ver los "Lava Lamp Wall" de diferentes colores, y cada una de ellas generando diferentes composiciones en las fotografías. Es decir, cada fotografía tomada en un instante de tiempo tiene una secuencia de colores única, que traducida a una secuencia de bits, es de alta entropía.
Las imágenes, como podéis ver en la explicación técnica que se hizo en el blog de Cloudflare, es el inicio del sistema de generación de los números pseudo-aleatorios criptográficamente seguros que se utilizan después en las plataforma de Cloudflare.
Como podéis ver en la imagen anterior, el "Lava Lamp Wall" no es el único factor de entropía con el que se va mezclando, ya que las imágenes generan una fuente de datos de entrada con una función de entropía basada en los píxeles de colores, pero esta es mezclada también con otras fuentes de entropía para generar claves criptográficas lo más seguras posibles.
![]() |
| Figura 8: Libro de Cifrado de las comunicaciones digitales: de la cifra clásica a RSA 2ª Edición de 0xWord |
En este caso, después de la entropía que se genera con las imágenes de las lámparas, se usan datos con más entropía provenientes del sensor de movimiento de la cámara, de los generados por el servidor que controla la cámara - que tiene sus propios números aleatorios generados con su factor de entropía - y son mezclados con la fuente de números aleatorios del servidor donde corre el servicio de LavaRand, lo que permite que los consumidores de estos números aleatorios tengan la garantía de que llevan un alto nivel de entropía.
Por supuesto, las imágenes con Lamparas de Lava se pueden sustituir por otro tipo de imágenes, y en la oficina de Cloudflare en Lisboa, estas han sido cambiadas por Water Waves, para honrar al sistema con la conexión que Lisboa tiene con el agua, vía río y mar.
El funcionamiento es similar, y puedes verlo en este vídeo que está publicado en Youtube. Yo subí un pequeño vídeo de unos segundos a mi cuenta de Instagram que puedes ver aquí mismo.
Figura 11: Generando entropía para tener números aleatorios robustos
Por supuesto, desde que tenemos los Quantum-Based Random Number Generators donde se utilizan fotones y mediciones de valores cuánticos, tenemos fuentes de altísima entropía para generar números aleatorios, pero la historia de LavaRand es un ejemplo de cómo tener tus propias fuentes de entropía utilizadas para enriquecer, aún más, cualquier generador de números aleatorios que utilices, incluso los QRND.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)




DragonJAR
8.8 Chile
Ekoparty
e-Hack MX
AREA 51
Comunidad Dojo Panamá
ARPAHE SOLUTIONS 














