.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1997 John S. Kallal (kallal@voicenet.com) .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" Some changes by tytso and aeb. .\" .\" 2004-12-16, John V. Belmonte/mtk, Updated init and quit scripts .\" 2004-04-08, AEB, Improved description of read from /dev/urandom .\" 2008-06-20, George Spelvin , .\" Matt Mackall .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH random 4 "2 Mayo 2024" "Páginas de Manual de Linux 6.9.1" .SH NOMBRE random, urandom \- dispositivos del núcleo para generar números aleatorios .SH SINOPSIS .nf #incluir .P \fBint ioctl(\fP\fIfd\fP\fB, RND\fP\fIsolicitud\fP\fB, \fP\fIparam\fP\fB);\fP .fi .SH DESCRIPCIÓN Los archivos especiales \fI/dev/random\fP y \fI/dev/urandom\fP (presentes desde la versión 1.3.30 de Linux) proporcionan una interfaz con el generador de números aleatorios del núcleo. El archivo \fI/dev/random\fP tiene 1 como número mayor de dispositivo y 8 como número menor de dispositivo. El fichero \fI/dev/urandom\fP tiene 1 como número mayor de dispositivo y 9 como número menor de dispositivo. .P El generador de números aleatorios recoge el ruido ambiental procedente de los drivers de dispositivos y otras fuentes y lo guarda en un 'pool de entropía'. El generador también mantiene una estimación del número de bits de ruído de dicho pool. Los números aleatorios se crearán en base a este pool. .P Linux 3.17 y posteriores proporcionan una interfaz \fBgetrandom\fP(2) más sencilla y segura que no requiere archivos especiales; consulte la página del manual \fBgetrandom\fP(2) para obtener más detalles. .P Durante su lectura, el dispositivo \fI/dev/urandom\fP muestra bytes aleatorios creados por un generador de números pseudoaleatorios basado en el pool de entropía. No se crea ningun bloqueo durante la lectura de este dispositivo, no se libera la CPU, pero pueden darse retrasos apreciables si se solicitan grandes cantidades de datos. .P .\" This is a real problem; see .\" commit 9b4d008787f864f17d008c9c15bbe8a0f7e2fc24 Cuando se lee justo durante el inicio del equipo, pueden generarse datos antes de iniciarse el pool de entropía. Si se considera esto un inconveniente, utilice en su lugar \fBgetrandom\fP(2) o \fI/dev/random\fP. .P El dispositivo \fI/dev/random\fP es una interfaz antigua de una época en la que las primitivas criptográficas utilizadas en la implementación de \fI/dev/urandom\fP no eran demasiado fiables. Creará bytes aleatorios solo dentro del número estimado de bits de ruido nuevo en el pool de entropía, bloqueándolos si necesario. \fI/dev/random\fP es adecuado para aplicaciones que necesitan aleatoriedad de alta calidad y pueden permitirse retrasos indeterminados. .P Cuando el pool de entropía esté vacío, se bloqueará la lectura de \fI/dev/random\fP hasta que se recopile ruido ambiental adicional. Desde Linux 5.6, el indicador \fBO_NONBLOCK\fP se ignora ya que \fI/dev/random\fP ya no se bloqueará excepto durante el comienzo del inicio del equipo. En versiones anteriores, si se llama a \fBopen\fP(2) para \fI/dev/random\fP con el indicador \fBO_NONBLOCK\fP, un \fBread\fP(2) posterior no se bloqueará si el número de bytes solicitado no está disponible sino que se devuelven los bytes disponibles. Si no hay ningún byte disponible, \fBread\fP(2) devolverá \-1 y \fIerrno\fP se establecerá en \fBEAGAIN\fP. .P El indicador \fBO_NONBLOCK\fP no tiene efecto al abrir \fI/dev/urandom\fP. Al llamar a \fBread\fP(2) para el dispositivo \fI/dev/urandom\fP, las solicitudes de hasta 256 bytes devolverán tantos bytes como se soliciten y no serán interrumpidas por ningún controlador de señales. Las lecturas con un búfer por encima de este límite pueden devolver una cantidad menor del número de bytes solicitado o fallar con el error \fBEINTR\fP, si son interrumpidas por un controlador de señal. .P .\" commit 79a8468747c5f95ed3d5ce8376a3e82e0c5857fc .\" SEC_XFER_SIZE in drivers/char/random.c Desde Linux 3.16, un \fBread\fP(2) de \fI/dev/urandom\fP retornará un máximo de 32\ MB. Un \fBread\fP(2) de \fI/dev/random\fP devolverá un máximo de 512 bytes (340 bytes en versiones anteriores de Linux 2.6.12). .P Al escribir en \fI/dev/random\fP o \fI/dev/urandom\fP se actualiza el pool de entropía con esos datos escritos, pero esto no dará un recuento de entropía más alto. Afectará al contenido leído de ambos archivos, pero no hará que las lecturas de \fI/dev/random\fP sean más rápidas. .SS "Modo de empleo" La interfaz \fI/dev/random\fP se considera una interfaz heredada y \fI/dev/urandom\fP es la preferida en todos los casos, con la excepción de aplicaciones que requieren aleatoriedad durante el comienzo del inicio del equipo. Dichas aplicaciones, deberán usar \fBgetrandom\fP(2) en su lugar, porque se bloquearán hasta que se inicialice el pool de entropía. .P .\" Si se guarda un archivo semilla entre los reinicios como se recomienda a continuación, la salida será criptográficamente segura contra atacantes sin privilegios de administrador tan pronto como se recarga en la secuencia de inicio, y es perfectamente adecuada para su uso en las claves de sesión de cifrado de red. Las principales distribuciones de Linux guardan dicho archivo semilla desde, al menos, el año 2000. Dado que las lecturas de \fI/dev/random\fP pueden bloquearse, los usuarios normalmente querrán abrirlo en modo sin bloqueo (o realizar una lectura con tiempo de espera). y proporcionar algún tipo de notificación al usuario si la entropía deseada no está disponible de inmediato. .SS Configuración Si en su sistema no existen todavía \fI/dev/random\fP y \fI/dev/urandom\fP, puede crearlos con las siguientes órdenes: .P .in +4n .EX mknod \-m 666 /dev/random c 1 8 mknod \-m 666 /dev/urandom c 1 9 chown root:root /dev/random /dev/urandom .EE .in .P Cuando un sistema Linux arranca sin mucha interación del operador, el pool de entropía puede estar en un estado bastante predecible. Esto reduce la cantidad actual de ruido en el pool de entropía por debajo de lo recomendado. Para contrarestar este efecto, es posible conservar la información del pool de entropía entre los reinicios del sistema. Para hacer esto, añada las líneas a un script de shell adecuado que se ejecute durante la secuencia de inicio: .P .in +4n .EX echo "Iniciando generador de números aleatorios..." random_seed=/var/run/random\-seed # Guarda una semilla entre reinicios del sistema # Carga y guarda todo el pool de entropía if [ \-f $random_seed ]; then cat $random_seed >/dev/urandom else touch $random_seed fi chmod 600 $random_seed poolfile=/proc/sys/kernel/random/poolsize [ \-r $poolfile ] && bits=$(cat $poolfile) || bits=4096 bytes=$(expr $bits / 8) dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .EE .in .P También, añada las siguientes líneas a un guión shell apropiado que se ejecute durante la parada del sistema Linux: .P .in +4n .EX # Guarda una semilla de aleatoriedad cuando se apaga el sistema # Guarda todo el pool de entropía echo "Guardando semilla de entropía..." random_seed=/var/run/random\-seed touch $random_seed chmod 600 $random_seed poolfile=/proc/sys/kernel/random/poolsize [ \-r $poolfile ] && bits=$(cat $poolfile) || bits=4096 bytes=$(expr $bits / 8) dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .EE .in .P .\" En los ejemplos anteriores, se supone Linux 2.6.0 o posterior, donde \fI/proc/sys/kernel/random/poolsize\fP devuelve el tamaño del pool de entropía en bits (ver a continación). .SS "Interfaces /proc" Los archivos en el directorio \fI/proc/sys/kernel/random\fP (presente desde Linux 2.3.16) proporcionan información adicional sobre el dispositivo \fI/dev/random\fP: .TP \fIentropy_avail\fP Este archivo de sólo lectura proporciona la entropía disponible, en bits. Ésta será un número en el intervalo de 0 a 4096. .TP \fIpoolsize\fP Este archivo proporciona el tamaño del pool de entropía. El formato de este archivo varía según las versiones del kernel: .RS .TP Linux 2.4: Este archivo proporciona el tamaño del pool de entropía en \fIbytes\fP. Normalmente, este archivo tendrá el valor 512, pero es posible escribir en él y se puede cambiar a cualquier valor para el cual haya un algoritmo disponible. Las opciones son 32, 64, 128, 256, 512, 1024 o 2048. .TP Linux 2.6 y posterior: Este archivo es de sólo lectura y proporciona el tamaño del pool de entropía en \fIbits\fP. Contiene el valor 4096. .RE .TP \fIread_wakeup_threshold\fP Este archivo contiene los bits de entropía necesarios para reactivar procesos en pausa esperando entropía de \fI/dev/random\fP. El valor predeterminado es 64. .TP \fIwrite_wakeup_threshold\fP Este archivo contiene la cantidad de bits de entropía por debajo de los cuales se activan procesos que hacen un \fBselect\fP(2) o \fBpoll\fP(2) para acceso de escritura a \fI/dev/random\fP. Estos valores se pueden modificar escribiendo en los archivos. .TP \fIuuid\fP y \fIboot_id\fP .\" Estos archivos de solo lectura contienen cadenas aleatorias como 6fw3a24b\-31f4\-4bd4\-a9b9\-6b9be13e1fe9. El primero se genera de nuevo para cada lectura, el segundo se genera sólo una vez. .SS "interfaz ioctl(2) " Las siguientes solicitudes \fBioctl\fP(2) se definen en descriptores de archivos conectados bien a \fI/dev/random\fP o a \fI/dev/urandom\fP. Todas las solicitudes realizadas interactuarán con el pool de entropía de entrada, lo que afectará tanto a \fI/dev/random\fP como a \fI/dev/urandom\fP. La capacidad \fBCAP_SYS_ADMIN\fP es necesaria para todas las solicitudes salvo para \fBRNDGETENTCNT\fP. .TP \fBRNDGETENTCNT\fP Recupera el recuento de entropía del pool de entrada; el contenido será el mismo que el del archivo \fIentropy_avail\fP en proc. El resultado se almacenará en el int señalado por el argumento. .TP \fBRNDADDTOENTCNT\fP Incrementa o disminuye el recuento de entropía del pool de entrada por el valor señalado en el argumento. .TP \fBRNDGETPOOL\fP Eliminado en Linux 2.6.9. .TP \fBRNDADDENTROPY\fP Agrega algo de entropía adicional al grupo de entrada, incrementando el recuento de entropía. Es diferente a escribir en \fI/dev/random\fP o \fI/dev/urandom\fP, lo que solo agregaría algunos datos pero no incrementaría el recuento de entropía. Se utiliza la siguiente estructura: .IP .in +4n .EX struct rand_pool_info { int entropy_count; int buf_size; __u32 buf[0]; }; .EE .in .IP Aquí \fIentropy_count\fP es el valor agregado (o restado) al recuento de entropía, y \fIbuf\fP es el búfer de tamaño \fIbuf_size\fP que se agrega al pool de entropía. .TP \fBRNDZAPENTCNT\fP .TQ \fBRNDCLEARPOOL\fP Pone a cero el recuento de entropía de todos los pools y agrega algunos datos del sistema (como el reloj) a dichos pools. .SH ARCHIVOS \fI/dev/random\fP .br \fI/dev/urandom\fP .SH NOTAS Para obtener una descripción general y una comparación de las distintas interfaces que se pueden utilizar para obtener aleatoriedad, consulte \fBrandom\fP(7). .SH ERRORES .\" .SH AUTHOR .\" The kernel's random number generator was written by .\" Theodore Ts'o (tytso@athena.mit.edu). Durante el comienzo del inicio del sistema, la lectura de \fI/dev/urandom\fP pueden devolver datos antes de que se inicialice el pool de entropía. .SH "VÉASE TAMBIÉN" \fBmknod\fP(1), \fBgetrandom\fP(2), \fBrandom\fP(7) .P RFC\ 1750, "Randomness Recommendations for Security" .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Juan Piernas y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .