Un Random Number Generator proporciona valores para un fin determinado. El uso criptográfico exige que un adversario no pueda predecirlos de forma viable bajo las hipótesis indicadas. La fuente física de entropía, el generador determinista y la interfaz del sistema operativo son capas distintas; la etiqueta RNG no define por sí sola sus propiedades.
Una fuente de entropía aporta incertidumbre, el acondicionamiento prepara la entrada y un generador determinista produce resultados desde su estado interno. NIST SP 800-90C combina mecanismos de 90A con fuentes según 90B. Por tanto, cada bit entregado no tiene por qué corresponder a una nueva medición física. [NIST SP 800-90C — RBG constructions]
Una secuencia puede superar pruebas estadísticas y ser conocida por un atacante. RFC 4086 advierte sobre relojes, números de serie y valores iniciales predecibles. Un generador de simulación no es apto para criptografía solo por su nombre o por la distribución de sus resultados. [RFC 4086 — Unpredictability and weak inputs]
NIST SP 800-90B evalúa la fuente de ruido, el acondicionamiento y las pruebas de salud al arrancar y durante el funcionamiento. Detectan fallos de la fuente, no demuestran la seguridad de toda una cartera. El diseño debe gestionar los fallos: una salida defectuosa no debe presentarse silenciosamente como aleatoriedad validada. [NIST SP 800-90B — Source health and failure handling]
Linux getrandom() normalmente espera a que se inicialice la fuente urandom. Con GRND_NONBLOCK puede devolver EAGAIN en vez de esperar. Tras inicializarse, las solicitudes urandom de hasta 256 bytes garantizan una lectura completa sin interrupción por señales; las mayores no. La aplicación debe respetar el estado devuelto. [Linux getrandom(2) — Initialization and return behavior]
Web Crypto getRandomValues() llena matrices de enteros compatibles con valores criptográficamente fuertes; más de 65536 bytes provoca QuotaExceededError. La especificación recomienda generateKey() para crear claves. Disponer de la interfaz no acredita la fiabilidad de la página ni protege los secretos del código que pueda acceder a ellos. [W3C Web Crypto — getRandomValues and key generation]
BIP39 codifica primero entre 128 y 256 bits de entropía inicial con una suma de comprobación derivada. Después deriva una semilla de 512 bits de las palabras y una passphrase opcional mediante PBKDF2. Ni la suma ni una salida más larga corrigen una entrada predecible; elegir palabras no sustituye la generación aleatoria. [BIP39 — Initial entropy and mnemonic-to-seed derivation]
Un generador determinista necesita proteger su estado e inicializarse correctamente. NIST SP 800-90A distingue creación de instancia, generación, reseeding y eliminación de instancia. Recuperarse tras divulgar el estado requiere un mecanismo adecuado y entropía nueva desconocida para el atacante; otra llamada no garantiza por sí sola la recuperación. [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]
La revisión debe identificar la fuente, el algoritmo, la inicialización, la interfaz y la gestión de errores de la versión evaluada. Etiquetas como hardware u offline no acreditan esa cadena. Los estándares citados explican requisitos de generación; no certifican una cartera concreta ni evitan una filtración posterior de su copia de seguridad. [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]
Para obtener la imagen más completa, lee esta entrada junto con Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. También enlazan con esta entrada CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.