484 / 736TRNG

True Random Number Generator

Generador físico de números aleatorios

Un TRNG obtiene aleatoriedad de un proceso físico, como el ruido eléctrico. Para ayudar a crear una cartera de forma segura, el dispositivo debe medir y procesar ese ruido correctamente y detectar sus fallos.

Un True Random Number Generator, o TRNG, obtiene nuevas entradas impredecibles midiendo un proceso físico. Se diferencia así de un generador que solo calcula nuevos valores a partir de un estado guardado. En la práctica, ambos pueden colaborar. Pero «true» no garantiza calidad: una fuente física también puede estar mal diseñada o averiada.

Un circuito puede medir pequeñas fluctuaciones eléctricas y convertirlas en números. Lo importante es cuánto de esa medición no puede predecir un atacante. No basta con producir muchos datos rápidamente. NIST SP 800-90B evalúa por ello la fuente de ruido concreta, su muestreo, el procesamiento y las comprobaciones de funcionamiento. Nombrar el fenómeno físico no sustituye esa evaluación. [1]

Una fuente puede producir ceros con más frecuencia que unos. El procesamiento llamado conditioning ayuda a reducir ese sesgo y concentrar la entropía disponible, la incertidumbre desde la perspectiva del atacante, en una salida más corta. No crea la incertidumbre que falta. Por eso NIST SP 800-90B vincula la entropía reconocida en la salida con la entrada y el método usado. Ni siquiera un hash, una huella calculada de los datos, demuestra que los valores originales fueran impredecibles: con la entrada conocida se puede calcular de nuevo la misma huella. [1]

Si la fuente devuelve continuamente el mismo valor, el dispositivo no debe pasarlo por alto. NIST SP 800-90B utiliza Repetition Count Test para las repeticiones y Adaptive Proportion Test para frecuencias inusuales. Estas comprobaciones buscan determinados fallos; no detectan automáticamente todos los ataques o defectos. Al detectar un fallo persistente, la fuente no debe seguir entregando datos como si funcionara normalmente. [1]

La mera presencia de un TRNG no demuestra que la cartera sea segura. También importa cómo utiliza sus datos esa versión concreta y qué hace cuando hay errores. NIST SP 800-90C considera por ello las fuentes junto con los generadores posteriores. Evaluar un componente no equivale a evaluar toda la cartera. Ni siquiera una excelente fuente de aleatoriedad protege una copia de seguridad que después reveles. [4]

Un registro largo de un dispositivo encendido muestra una parte distinta de su comportamiento que apagarlo y arrancarlo repetidamente. Por eso NIST SP 800-90B incluye pruebas de reinicio. La evaluación debe corresponder a la fuente concreta y sus condiciones de uso. Un resultado para una muestra no cubre automáticamente todos los dispositivos o entornos. Un cambio de firmware, el programa interno del dispositivo, también puede exigir una nueva evaluación. [1]

En la documentación técnica aparecen las instrucciones RDRAND y RDSEED. Intel las describe en su guía del DRNG, un generador de números aleatorios por hardware. RDRAND proporciona resultados de un generador determinista que calcula valores a partir de su estado interno. RDSEED entrega entropía procesada para inicializar, es decir, crear el estado de partida del generador. Ambas vías pueden comenzar en una fuente física; ninguna promete por ello acceso directo al ruido sin procesar. [2]

El procesador puede no tener un resultado listo para cada solicitud. Por eso Intel exige comprobar el indicador de estado CF tanto en RDRAND como en RDSEED: 1 significa resultado disponible y 0 no disponible. No basta con buscar un cero numérico en el registro de destino, un pequeño espacio de almacenamiento del procesador. El programa debe leer el indicador de éxito. Que el procesador admita una instrucción no significa que una solicitud concreta haya tenido éxito. [2]

En Linux, la interfaz hw_random permite leer datos del hardware mediante /dev/hwrng de forma parecida a un archivo. Su documentación advierte expresamente que esa interfaz no aplica por sí misma pruebas de calidad a los datos. Un hardware defectuoso o manipulado puede devolver datos erróneos que la aplicación logre leer. Leerlos correctamente no prueba que tengan suficiente entropía. Hay que evaluar tanto la fuente como el uso que hace el programa de sus resultados. [3]

Para obtener la imagen más completa, lee esta entrada junto con Cryptographic Entropy, Random Number Generator, CSPRNG, Entropy Mixing. También enlazan con esta entrada Entropy Mixing.

DOC · 001NIST SP 800-90B — Entropy sources, conditioning and health testsEspecificación DOC · 002Intel DRNG guide — RDRAND, RDSEED and CFDocumentación DOC · 003Linux kernel — Hardware random number generator interfaceDocumentación DOC · 004NIST SP 800-90C — Complete RBG constructionsEspecificación
Revisado: Fuentes primero · No es asesoramiento financiero