random(7) Miscellaneous Information Manual random(7) NOMBRE random - vision general de las interfaces para la obtencion de datos aleatorios DESCRIPCION El generador de numeros aleatorios del nucleo se basa en la entropia recogida de los controladores de dispositivos y otras fuentes de ruido ambiental para sembrar un generador pseudoaleatorio de numeros criptograficamente seguro (CSPRNG). En su diseno se primo la seguridad sobre la velocidad. Las siguientes interfaces proporcionan acceso a la salida del nucleo CSPRNG: o Los dispositivos /dev/urandom y dev/random se describen en random (4). Estos dispositivos existen desde los primeros tiempos de Linux, tambien estan disponibles en muchos otros sistemas. o La llamada de sistema getrandom(2) especifica de Linux, disponible desde Linux 3.17. Esta llamada del sistema proporciona acceso a la misma fuente que /dev/urandom (llamada la fuente urandom en este documento) o a la mismo fuente como /dev/random. La fuente predeterminada es urandom; la fuente random se selecciona mediante la opcion GRND_RANDOM para la llamada del sistema. La funcion getentropy(3) proporciona una interfaz ligeramente mas portable a un nivel superior de getrandom(2).) Inicio del pool de entropia El nucleo recoge entropia del entorno. Cuando se ha recogido un numero suficiente de bits aleatorios, el pool de entropia se considera iniciado. Seleccion de la fuente de aleatoriedad Salvo que se desee generar claves pensando a largo plazo (y probablemente ni siquiera asi), no deberia estar leyendo desde el dispositivo /dev/random o empleando getrandom (2) con la opcion GRND_RANDOM. En su lugar deberia leer desde el dispositivo /dev/urandom o emplear getrandom(2) sin la opcion GRND_RANDOM. Los algoritmos criptograficos utilizados para la fuente de urandom son bastante conservadores, y deberian ser suficientes para todos los casos. La desventaja de GRND_RANDOM y de leer desde /dev/random es que la operacion puede bloquear por un periodo de tiempo indefinido. La gestion de las solicitudes parcialmente cumplidas que pueden ocurrir cuando se utiliza GRND_RANDOM o cuando se lee desde /dev/random aumentan la complejidad del codigo. Monte Carlo y otras aplicaciones de muestreo probabilistico El uso de estas interfaces para proporcionar grandes cantidades de datos para simulaciones de Monte Carlo u otros programas/algoritmos que estan haciendo muestreo probabilistico sera lento. Ademas, es innecesario, ya que esas aplicaciones no necesitan numeros aleatorios criptograficamente seguros. En su lugar, utilice las interfaces descritas en esta pagina para obtener una pequena cantidad de datos para sembrar un generador de numeros pseudoaleatorio en el espacio de usuario para el uso de estas aplicaciones. Comparacion entre getrandom, /dev/urandom y /dev/random La siguiente tabla resume el comportamiento de las diversas interfaces que se pueden utilizar para obtener datos aleatorios. GRND_NONBLOCK se puede usar para controlar el comportamiento de bloqueo de getrandom(2). La ultima columna de la tabla considera el caso que puede ocurrir al comienzo del inicio cuando aun no esta iniciado el pool de entropia. +--------------+-----------------+------------------+--------------------+ |Interfaz | Pool | Comportamiento | Comportamiento | | | | de bloqueo | cuando el pool aun | | | | | no esta preparado | +--------------+-----------------+------------------+--------------------+ |/dev/random | Pool de bloqueo | Si el nivel de | Bloquea hasta que | | | | entropia es | se haya acumulado | | | | demasiado bajo, | suficiente | | | | bloquea hasta | entropia | | | | que haya | | | | | suficiente | | +--------------+-----------------+------------------+--------------------+ |/dev/urandom | Salida CSPRNG | Nunca bloquea | Devuelve la salida | | | | | de un CSPRNG no | | | | | iniciado | | | | | (seguramente de | | | | | baja entropia, no | | | | | valido con fines | | | | | criptograficos) | +--------------+-----------------+------------------+--------------------+ |getrandom() | Igual a | No bloquea una | Bloquea hasta que | | | /dev/urandom | vez que el pool | el pool este | | | | este preparado | preparado | +--------------+-----------------+------------------+--------------------+ |getrandom() | Igual que | Si el nivel de | Bloquea hasta que | |GRND_RANDOM | /dev/random | entropia es | el pool este | | | | demasiado bajo, | preparado | | | | bloquea hasta | | | | | que haya | | | | | suficiente | | +--------------+-----------------+------------------+--------------------+ |getrandom() | Igual a | No bloquea una | EAGAIN | |GRND_NONBLOCK | /dev/urandom | vez que el pool | | | | | este preparado | | +--------------+-----------------+------------------+--------------------+ |getrandom() | Igual que | EAGAIN Si no se | EAGAIN | |GRND_RANDOM + | /dev/random | dispone de | | |GRND_NONBLOCK | | suficiente | | | | | entropia | | +--------------+-----------------+------------------+--------------------+ Generacion de claves criptograficas El tamano de la semilla necesaria para generar una clave criptografica equivale al tamano de la clave efectiva de la llave. Por ejemplo, una llave privada RSA de 3072 bits o Diffie-Hellman tiene un tamano de llave efectivo de 128 bits (requiere aproximadamente 2^128 operaciones para romper) por lo que un generador de llaves solo necesita 128 bits (16 bytes) de /dev/random. Aunque es razonable un margen de seguridad por encima de ese minimo frente afallos en el algoritmo CSPRNG, ningun primitivo criptografico disponible actualmente puede prometer mas de 256 bits de seguridad, por lo que si cualquier programa lee mas de 256 bits (32 bytes) del nucleo pool aleatorio por invocacion, o por un intervalo razonablemente 'resembrado' (no menos de un minuto), debe tomarse como una senal de que la criptografia no esta habilmente implementada. VEASE TAMBIEN getrandom(2), getauxval(3), getentropy(3), random(4), urandom,(4) signal(7) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Linux man-pages 6.18 8 Febrero 2026 random(7)