Qué es la entropía y cómo la recolecta Quantum KeyGen
"Entropía" es una palabra que aparece en todas las herramientas de contraseñas y casi nunca se explica. Aquí está el detalle de qué significa, cómo un navegador consigue números impredecibles, y qué papel juegan exactamente el ratón y la cámara en Quantum KeyGen.
Entropía: dos usos del mismo término
En criptografía "entropía" se usa para dos cosas relacionadas pero distintas:
-
Entropía de una contraseña ya generada: cuántos bits de incertidumbre tiene
desde el punto de vista de un atacante. Es una propiedad del resultado y se calcula con
longitud × log2(alfabeto). - Entropía de la fuente de aleatoriedad: cuánta impredecibilidad real hay disponible en el sistema para producir ese resultado. Si la fuente es mala, la contraseña "parece" aleatoria pero es predecible.
Las dos importan. Una cadena de 32 caracteres derivada de un reloj predecible tiene mucha entropía "de contraseña" en el papel y muy poca de verdad.
Cómo consigue aleatoriedad un navegador
Los ordenadores son deterministas, así que no pueden inventar azar de la nada. Lo que hacen los
sistemas operativos es recolectar ruido físico de fuentes difíciles de
predecir: tiempos exactos entre interrupciones de hardware, jitter del reloj, actividad de disco
y red, y en CPU modernas instrucciones dedicadas (RDSEED/RDRAND). Ese
ruido alimenta un CSPRNG (generador de números pseudoaleatorios
criptográficamente seguro), que expande unos pocos cientos de bits de semilla en toda la
aleatoriedad que la máquina necesita.
En el navegador, ese CSPRNG del sistema se expone a través de la Web Crypto API:
crypto.getRandomValues(new Uint8Array(32))
Devuelve 32 bytes impredecibles. Es la misma calidad de aleatoriedad que usa el propio TLS de tu
conexión. Para generar contraseñas, esto ya es suficiente por sí solo. Lo que Math.random()
no debe usarse nunca para esto: no está diseñado para ser impredecible.
Por qué añadir entropía física entonces
Si el CSPRNG del sistema ya es bueno, ¿para qué mover el ratón? Por tres razones:
- Defensa en profundidad. En el caso rarísimo de que el CSPRNG del sistema estuviera mal sembrado (ha pasado en dispositivos empotrados y en máquinas virtuales recién clonadas), una fuente independiente mezclada evita que el resultado sea predecible.
- Transparencia. Ver la barra de entropía llenarse mientras mueves el ratón hace tangible de dónde viene el azar. Es pedagógico.
- Coste cero. Mezclar bien nunca empeora el resultado. Si una fuente es basura y la otra es buena, la combinación es al menos tan buena como la mejor de las dos.
Qué recolecta exactamente Quantum KeyGen
Movimiento del ratón
Cuando activas la entropía manual, la herramienta escucha los eventos de movimiento del puntero
y toma, de cada uno, la posición x e y y una marca de tiempo. Los
bits menos significativos de esos valores (los que cambian de forma caótica según cómo muevas la
mano y con qué microretardos llegan los eventos) se van acumulando con XOR en un grupo de 32
bytes. La barra de progreso se llena a medida que se captura el número de muestras objetivo.
Ruido de la cámara (LavaRand)
La opción de cámara está inspirada en el muro de lámparas de lava que Cloudflare fotografía para sembrar parte de su aleatoriedad. La idea: un sensor de imagen real nunca produce dos fotogramas idénticos ni siquiera apuntando a una pared fija, por el ruido térmico y de lectura del sensor. La herramienta toma fotogramas, extrae ese ruido de píxel y lo incorpora a la mezcla. La imagen se procesa en el momento y no se guarda ni se envía a ningún sitio.
Cómo se combinan
Ninguna de esas fuentes se usa "en crudo" como contraseña. Se mezclan con la salida de
crypto.getRandomValues() y se pasan por SHA-256, que actúa como
función de mezcla: reparte cualquier sesgo de entrada de forma uniforme por los 256 bits de
salida. De ese material ya mezclado se derivan los caracteres finales, rechazando valores para
evitar el sesgo de módulo cuando el tamaño del alfabeto no divide a 256.
¿Es esto "aleatoriedad cuántica"?
No, y conviene ser honesto: el nombre del proyecto es una licencia de marketing. No hay un chip cuántico aquí. El ruido de un sensor de imagen tiene componentes de origen cuántico (fotónico y térmico), pero el sistema no mide estados cuánticos de forma controlada como haría un QRNG de laboratorio. Lo que sí es cierto es que todo el material se combina con un CSPRNG estándar y SHA-256, que es exactamente lo que recomiendan las guías de criptografía aplicada.
Cómo comprobarlo tú
- Abre las herramientas de desarrollo, pestaña Red, y genera una contraseña: no hay peticiones salientes con datos de generación.
- Revisa el código fuente en GitHub: la lógica de entropía y derivación está en un único archivo JavaScript.
- Desconecta de internet: la generación sigue funcionando porque nunca dependió de la red.
← Volver al generador · Leer la guía completa de contraseñas