Provided by: manpages-es_4.27.0-1_all bug

NOMBRE

       random - visión general de las interfaces para la obtención de datos aleatorios

DESCRIPCIÓN

       El  generador  de  números  aleatorios del núcleo se basa en la entropía recogida de los controladores de
       dispositivos y otras fuentes de ruido ambiental para sembrar  un  generador  pseudoaleatorio  de  números
       criptográficamente seguro (CSPRNG). En su diseño se primó la seguridad sobre la velocidad.

       Las siguientes interfaces proporcionan acceso a la salida del núcleo CSPRNG:

       •  Los  dispositivos  /dev/urandom  y  dev/random  se describen en random (4). Estos dispositivos existen
          desde los primeros tiempos de Linux, también están disponibles en muchos otros sistemas.

       •  La llamada de sistema getrandom(2) específica 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 opción GRND_RANDOM para la llamada del  sistema.  La  función  getentropy(3)
          proporciona una interfaz ligeramente más portable a un nivel superior de getrandom(2).)

   Inicio del pool de entropía
       El núcleo recoge entropía del entorno.  Cuando se ha recogido un número suficiente de bits aleatorios, el
       pool de entropía se considera iniciado.

   Selección de la fuente de aleatoriedad
       Salvo  que  se  desee generar claves pensando a largo plazo (y probablemente ni siquiera asi), no debería
       estar leyendo desde el dispositivo /dev/random o empleando getrandom (2) con la opción GRND_RANDOM. En su
       lugar debería leer desde el dispositivo /dev/urandom o emplear getrandom(2) sin  la  opción  GRND_RANDOM.
       Los algoritmos criptográficos utilizados para la fuente de urandom son bastante conservadores, y deberían
       ser suficientes para todos los casos.

       La  desventaja  de  GRND_RANDOM  y  de  leer  desde /dev/random es que la operación puede bloquear por un
       período de tiempo indefinido. La gestión de las solicitudes parcialmente  cumplidas  que  pueden  ocurrir
       cuando se utiliza GRND_RANDOM o cuando se lee desde /dev/random aumentan la complejidad del código.

   Monte Carlo y otras aplicaciones de muestreo probabilístico
       El uso de estas interfaces para proporcionar grandes cantidades de datos para simulaciones de Monte Carlo
       u  otros  programas/algoritmos  que  están  haciendo  muestreo  probabilístico  será  lento.   Además, es
       innecesario, ya que esas aplicaciones no necesitan números aleatorios criptográficamente seguros.  En  su
       lugar,  utilice  las  interfaces descritas en esta página para obtener una pequeña cantidad de datos para
       sembrar un generador de  números  pseudoaleatorio  en  el  espacio  de  usuario  para  el  uso  de  estas
       aplicaciones.

   Comparación 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  última  columna de la tabla considera el caso que puede ocurrir al comienzo del inicio
       cuando aún no está iniciado el pool de entropía.
       ┌───────────────┬──────────────┬────────────────┬────────────────────┐
       │ InterfazPoolComportamientoComportamiento     │
       │               │              │ de bloqueocuando el pool aún │
       │               │              │                │ no está preparado  │
       ├───────────────┼──────────────┼────────────────┼────────────────────┤
       │ /dev/random   │ Pool de      │ Si el nivel de │ Bloquea hasta que  │
       │               │ bloqueo      │ entropía es    │ se haya acumulado  │
       │               │              │ demasiado      │ suficiente         │
       │               │              │ bajo, bloquea  │ entropía           │
       │               │              │ hasta que haya │                    │
       │               │              │ suficiente     │                    │
       ├───────────────┼──────────────┼────────────────┼────────────────────┤
       │ /dev/urandom  │ Salida       │ Nunca bloquea  │ Devuelve la salida │
       │               │ CSPRNG       │                │ de un CSPRNG no    │
       │               │              │                │ iniciado           │
       │               │              │                │ (seguramente de    │
       │               │              │                │ baja entropía, no  │
       │               │              │                │ válido con fines   │
       │               │              │                │ criptográficos)    │
       ├───────────────┼──────────────┼────────────────┼────────────────────┤
       │ getrandom()   │ Igual a      │ No bloquea una │ Bloquea hasta que  │
       │               │ /dev/urandom │ vez que el     │ el pool esté       │
       │               │              │ pool esté      │ preparado          │
       │               │              │ preparado      │                    │
       ├───────────────┼──────────────┼────────────────┼────────────────────┤
       │ getrandom()   │ Igual que    │ Si el nivel de │ Bloquea hasta que  │
       │ GRND_RANDOM/dev/random  │ entropía es    │ el pool esté       │
       │               │              │ demasiado      │ preparado          │
       │               │              │ bajo, bloquea  │                    │
       │               │              │ hasta que haya │                    │
       │               │              │ suficiente     │                    │
       ├───────────────┼──────────────┼────────────────┼────────────────────┤
       │ getrandom()   │ Igual a      │ No bloquea una │ EAGAIN             │
       │ GRND_NONBLOCK/dev/urandom │ vez que el     │                    │
       │               │              │ pool esté      │                    │
       │               │              │ preparado      │                    │
       ├───────────────┼──────────────┼────────────────┼────────────────────┤
       │ getrandom()   │ Igual que    │ EAGAIN Si no   │ EAGAIN             │
       │ GRND_RANDOM + │ /dev/random  │ se dispone de  │                    │
       │ GRND_NONBLOCK │              │ suficiente     │                    │
       │               │              │ entropía       │                    │
       └───────────────┴──────────────┴────────────────┴────────────────────┘

   Generación de claves criptográficas
       El tamaño de la semilla necesaria para generar una clave criptográfica equivale al  tamaño  de  la  clave
       efectiva de la llave. Por ejemplo, una llave privada RSA de 3072 bits o Diffie-Hellman tiene un tamaño de
       llave  efectivo  de  128  bits  (requiere  aproximadamente  2^128  operaciones para romper) por lo que un
       generador de llaves sólo necesita 128 bits (16 bytes) de /dev/random.

       Aunque es razonable un margen de seguridad por encima de  ese  mínimo  frente  afallos  en  el  algoritmo
       CSPRNG,  ningún  primitivo  criptográfico  disponible  actualmente  puede  prometer  más  de  256 bits de
       seguridad, por lo que si cualquier programa lee más de 256 bits (32 bytes) del núcleo pool aleatorio  por
       invocación, o por un intervalo razonablemente 'resembrado' (no menos de un minuto), debe tomarse como una
       señal de que la criptografía no está habilmente implementada.

VÉASE TAMBIÉN

       getrandom(2), getauxval(3), getentropy(3), random(4), urandom,(4) signal(7)

TRADUCCIÓN

       La traducción al español de esta página del manual fue creada por Marcos Fouces <marcos@debian.org>

       Esta  traducción  es  documentación  libre;  lea  la GNU General Public License Version 3 o posterior con
       respecto a las condiciones de copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta página  del  manual,  envíe  un  correo  electrónico  a
       debian-l10n-spanish@lists.debian.org.

Páginas de Manual de Linux 6.9.1                   2 Mayo 2024                                         random(7)