Un generador de números aleatorios verdaderos no físicos ( NPTRNG ), [ 1 ] también conocido como generador de bits aleatorios no deterministas no físicos , es un generador de números aleatorios impredecibles sin el uso de una fuente de entropía de hardware dedicada . [ 2 ] Un NPTRNG utiliza una fuente de ruido no física que obtiene entropía de datos del sistema, como salidas de funciones de interfaz de programación de aplicaciones , información residual en memoria de acceso aleatorio , tiempo del sistema o entrada humana (por ejemplo, movimientos del ratón y pulsaciones de teclas), [ 3 ] [ 1 ] con la expectativa de que esos datos puedan contener elementos que sean verdaderamente aleatorios o al menos no conocidos o controlables por un adversario. Un NPTRNG típico se implementa como software que se ejecuta en una computadora de propósito general. [ 1 ] Los NPTRNG se encuentran en los núcleos de sistemas operativos populares [ 4 ] que se espera que se ejecuten en cualquier CPU genérica sin requerir hardware especializado.
Clasificación
Dentro de la taxonomía establecida por la Publicación Especial 800-90B del NIST, [ 3 ] los componentes de generación de números aleatorios se clasifican como fuentes de entropía o generadores de bits aleatorios deterministas (DRBG). Un NPTRNG funciona principalmente como una fuente de entropía: acumula datos impredecibles del entorno, los acondiciona para producir bits uniformes y, opcionalmente, inicializa un DRBG (como CTR_DRBG , Hash_DRBG o HMAC_DRBG) para producir un flujo de salida prácticamente ilimitado.
La clasificación de la Oficina Federal Alemana de Seguridad en Tecnologías de la Información (BSI, por sus siglas en inglés) en AIS 31 distingue entre PTG.1 (generador de números aleatorios verdadero físico con prueba en línea), PTG.2 (generador de números aleatorios verdadero físico con prueba en línea y fuera de línea) y NTG.1 (generador de números aleatorios verdadero no físico), donde un generador NTG.1 debe pasar pruebas estadísticas definidas y demostrar que cada bloque de salida contribuye con al menos un bit de entropía al estado interno. [ 5 ]
En la práctica, los subsistemas de números aleatorios de los sistemas operativos son híbridos: un acumulador de entropía real (el componente NPTRNG) inicializa un DRBG interno que gestiona la mayor parte de la generación de salida. Este diseño separa el problema de la acumulación de entropía del problema de la generación de salida, lo que significa que la tasa de salida del DRBG no está limitada por la tasa a la que se puede recolectar la entropía ambiental.
Fiabilidad
Un NPTRNG es inherentemente menos confiable que su contraparte de generador de números aleatorios físico , porque las fuentes de ruido no físico dependen de condiciones específicas para funcionar, y las estimaciones de entropía requieren suposiciones significativas sobre el entorno externo y las capacidades de un atacante. [ 5 ] Los ataques típicos incluyen: [ 6 ]
- vulnerabilidad ante un adversario con acceso al sistema (al igual que cualquier generador de números aleatorios verdadero basado en software );
- un atacante que proporciona una fuente predecible de eventos (por ejemplo, un simulador de ratón);
- operar en un entorno donde las suposiciones sobre el comportamiento del sistema ya no son válidas (por ejemplo, dentro de una máquina virtual ).
Un ataque más sofisticado en 2007 violó el secreto hacia adelante del NPTRNG en Windows 2000 al explotar fallas de implementación. [ 7 ]
Vulnerabilidades de reinicio y clonación en entornos virtualizados
La virtualización introduce una clase de problemas específicos de los NPTRNG. Cuando una máquina virtual se clona o se restaura a partir de una instantánea, su estado interno —incluida la semilla del PRNG y el grupo de entropía— se restablece a un valor anterior. Cualquier par de instancias clonadas producirán entonces una salida aleatoria idéntica hasta que hayan acumulado suficiente entropía ambiental nueva, una condición conocida como vulnerabilidad de restablecimiento o "agujero de entropía". [ 8 ] La aleatoriedad del arranque temprano en entornos virtualizados se ve particularmente afectada porque el grupo está casi vacío y las fuentes de entropía (E/S de disco, interrupciones) son más deterministas que en el metal desnudo. Las mitigaciones incluyen persistir un archivo semilla entre reinicios, usar instrucciones RDRAND / RDSEED cuando estén disponibles y consultar un RNG de hardware virtual (por ejemplo, RNG VirtIO o el dispositivo RNG virtual de VMware).
Implementaciones
El diseño de un NPTRNG sigue el patrón general de un TRNG: una fuente de ruido va seguida de un extractor de aleatoriedad de acondicionamiento y, opcionalmente, de un generador de números pseudoaleatorios (PRNG) inicializado con los bits verdaderamente aleatorios.
Linux
En Linux, el /dev/randomdispositivo de caracteres requiere una semilla verdaderamente aleatoria y puede bloquearse cuando el kernel necesita recopilar más entropía (particularmente en el momento del arranque), mientras que /dev/urandomsiempre es no bloqueante. [ 9 ] [ 10 ] A partir de 2025, la implementación de NPTRNG de Linux extrae entropía de: [ 11 ] [ 12 ]
- interrupciones , mezclando el contador de ciclos de la CPU, el valor del temporizador del kernel, el número IRQ y el puntero de instrucción de la instrucción interrumpida en un "grupo rápido";
- E/S en tiempo aleatorio (eventos del teclado, el ratón y el disco), que mezcla el valor del temporizador del kernel, el contador de ciclos y la información específica del dispositivo en el "grupo de entrada".
Se han propuesto contadores de rendimiento de hardware como una fuente adicional de entropía, ya que reflejan un no determinismo microarquitectónico que es difícil de observar o controlar para un atacante. [ 13 ] [ 14 ]
Desde Linux 5.17, /dev/randomy /dev/urandomhemos utilizado una salida idéntica del mismo CRNG basado en ChaCha20, con bloqueo solo en el arranque inicial hasta que el pool se haya inicializado con suficiente entropía; se eliminó la distinción histórica entre ellos para su uso posterior al arranque.
Windows
El sistema operativo Windows expone su generador de números aleatorios de novo (NPTRNG) mediante la función CNGBCryptGenRandom (y su predecesora CryptGenRandom). El acumulador de entropía de Windows recopila datos de diversas fuentes, como la temporización de interrupciones del sistema, identificadores de procesos e hilos, direcciones de asignación de memoria, temporización de paquetes de red y temporización de eventos de la interfaz de usuario. En procesadores compatibles con RDRAND , Windows utiliza la instrucción para complementar el conjunto de entropía del software. Tanto la API de protección de datos como la pila TLS se basan en el mismo generador de números aleatorios de criptografía (CRNG) subyacente.
OpenBSD
OpenBSD utiliza arc4randomla interfaz del espacio de usuario y del núcleo para su subsistema de números aleatorios. El grupo de entropía del núcleo se inicializa a partir de la fluctuación de las interrupciones, las instrucciones del generador de números aleatorios por hardware ( RDRAND/ RDSEEDen x86, instrucciones equivalentes en ARM) y una semilla almacenada entre reinicios. Este grupo alimenta un cifrador de flujo ChaCha20, y se aplica la aleatorización del espacio de direcciones ( ASLR ) a todos los procesos en el momento de la bifurcación, lo que proporciona una separación de claves por proceso.
Estimación de la entropía
Un desafío central en el diseño de NPTRNG es la estimación de la entropía : cuantificar cuánta imprevisibilidad aporta realmente cada fuente, independientemente de lo que un atacante pueda saber. NIST SP 800-90B define un conjunto de estimadores de entropía que tratan la fuente como una caja negra y limitan su min-entropía (el logaritmo negativo de la probabilidad de la salida más probable), en lugar de la entropía de Shannon , porque la min-entropía es la medida operacionalmente correcta para la seguridad. [ 2 ] Las fuentes se prueban con estimadores que incluyen la estimación del valor más común, la estimación de colisión, la estimación de Markov y una estimación de compresión; el mínimo de todos los estimadores se toma como el límite conservador.
Subestimar la entropía da lugar a un sistema que genera una aleatoriedad insuficiente; sobreestimarla permite a un atacante predecir los resultados. La dificultad reside en que la cantidad de entropía en, por ejemplo, una medición de temporización de interrupciones, depende del hardware y la carga de trabajo específicos, y no puede determinarse analíticamente.
Véase también
Referencias
- 1 2 3 Schindler 2008 , pág. 18.
- ^ Turan y col. 2018 , pág. 64.
- 1 2 Turan et al. 2018 , p. 5.
- ↑ Pabellón 2021 .
- 1 2 Peter y Schindler 2022 , pág. 61.
- ↑ Peter y Schindler 2022 , pág. 62.
- ↑ Schindler 2008 , pág. 20.
- ^ Everspaugh y col. 2014 , pág. 573.
- ↑ Schindler 2008 , págs. 18–19.
- ^ Everspaugh y col. 2014 , pág. 560.
- ^ Everspaugh y col. 2014 , pág. 561.
- ↑ Bouez, Daemen & Mennink 2025 , pág. 600.
- ↑ Bouez, Daemen & Mennink 2025 , pág. 601.
- ^ Alam y otros. 2020 , págs. 3-19.
Fuentes
- Alam, Manaar; Singh, Astikey; Bhattacharya, Sarani; Pratihar, Kuheli; Mukhopadhyay, Debdeep (2020). "Extracción in situ de aleatoriedad de la arquitectura informática mediante contadores de rendimiento de hardware" . Smart Card Research and Advanced Applications . Vol. 11833. Cham: Springer International Publishing. doi : 10.1007/978-3-030-42068-0_1 . ISBN 978-3-030-42067-3. Consultado el 1 de noviembre de 2025 .
- Bouez, Alexandre; Daemen, Joan; Mennink, Bart (2025). «Evaluación estadística de la acumulación de entropía en Linux». 2025 IEEE European Symposium on Security and Privacy Workshops (EuroS&PW) . IEEE. pp. 600–612 . doi : 10.1109/EUROSPW67616.2025.00075 . ISBN 979-8-3315-9546-3.
- Everspaugh, Adam; Zhai, Yan; Jellinek, Robert; Ristenpart, Thomas; Swift, Michael (2014). Números no tan aleatorios en Linux virtualizado y el generador de números aleatorios Whirlwind (PDF) . Simposio IEEE de 2014 sobre seguridad y privacidad. IEEE. págs. 559–574 . doi : 10.1109/SP.2014.42 . ISBN 978-1-4799-4686-0.
- Hall, Tim (29 de abril de 2021). "Fuentes de entropía no físicas" (PDF) . NIST .
- Pedro, Matías; Schindler, Werner (2 de septiembre de 2022). Una propuesta de clases de funcionalidad para generadores de números aleatorios (BORRADOR 2.35 ed.). Bundesamt für Sicherheit in der Informationstechnik .
- Turan, Meltem Sönmez; Barker, Elaine; Kelsey, John; McKay, Kerry A; Baish, Mary L; Boyle, Mike (2018). NIST SP800-90B: Recomendación para las fuentes de entropía utilizadas para la generación de bits aleatorios (Informe). Gaithersburg, MD: Instituto Nacional de Estándares y Tecnología. doi : 10.6028/nist.sp.800-90b .
- Schindler, Werner (2008). «Generadores de números aleatorios para aplicaciones criptográficas» . En Koc, CK (ed.). Ingeniería criptográfica . Boston, MA: Springer US. pp. 5–23 . doi : 10.1007/978-0-387-71817-0_2 . ISBN 978-0-387-71817-0. Consultado el 24 de agosto de 2024 .
- Criptografía
- generación de números aleatorios
- Cálculo de stubs