.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (C) 2008, George Spelvin <linux@horizon.com>,
.\" and Copyright (C) 2008, Matt Mackall <mpm@selenic.com>
.\" and Copyright (C) 2016, Laurent Georget <laurent.georget@supelec.fr>
.\" and Copyright (C) 2016, Nikos Mavrogiannopoulos <nmav@redhat.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" The following web page is quite informative:
.\" http://www.2uo.de/myths-about-urandom/
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH random 7 "2 Mayo 2024" "Páginas de Manual de Linux 6.9.1" 
.SH NOMBRE
random \- visión general de las interfaces para la obtención de datos
aleatorios
.SH 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.
.P
Las siguientes interfaces proporcionan acceso a la salida del núcleo CSPRNG:
.IP \[bu] 3
Los dispositivos \fI/dev/urandom\fP y \fIdev/random\fP se describen en \fBrandom \fP(4). Estos dispositivos existen desde los primeros tiempos de Linux,
también están disponibles en muchos otros sistemas.
.IP \[bu]
.\"
La llamada de sistema \fBgetrandom\fP(2) específica de Linux, disponible desde
Linux 3.17. Esta llamada del sistema proporciona acceso a la misma fuente
que \fI/dev/urandom\fP (llamada la fuente \fIurandom\fP en este documento) o a la
mismo fuente como \fI/dev/random\fP. La fuente predeterminada es \fIurandom\fP; la
fuente \fIrandom\fP se selecciona mediante la opción \fBGRND_RANDOM\fP para la
llamada del sistema. La función \fBgetentropy\fP(3) proporciona una interfaz
ligeramente más portable a un nivel superior de \fBgetrandom\fP(2).)
.SS "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.
.SS "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 \fI/dev/random\fP
o empleando \fBgetrandom \fP(2) con la opción \fBGRND_RANDOM\fP. En su lugar
debería leer desde el dispositivo \fI/dev/urandom\fP o emplear \fBgetrandom\fP(2)
sin la opción \fBGRND_RANDOM\fP. Los algoritmos criptográficos utilizados para
la fuente de \fIurandom\fP son bastante conservadores, y deberían ser
suficientes para todos los casos.
.P
.\"
La desventaja de \fBGRND_RANDOM\fP y de leer desde \fI/dev/random\fP 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
\fBGRND_RANDOM\fP o cuando se lee desde \fI/dev/random\fP aumentan la complejidad
del código.
.SS "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.
.SS "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. \fBGRND_NONBLOCK\fP se puede
usar para controlar el comportamiento de bloqueo de \fBgetrandom\fP(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.
.ad l
.TS
allbox;
lbw13 lbw12 lbw14 lbw18
l l l l.
Interfaz	Pool	T{
Comportamiento de
\%bloqueo
T}	T{
Comportamiento cuando el pool aún no está preparado
T}
T{
\fI/dev/random\fP
T}	T{
Pool de bloqueo
T}	T{
Si el nivel de entropía es demasiado bajo, bloquea hasta que haya suficiente
T}	T{
Bloquea hasta que se haya acumulado suficiente entropía
T}
T{
\fI/dev/urandom\fP
T}	T{
Salida CSPRNG
T}	T{
Nunca bloquea
T}	T{
Devuelve la salida de un CSPRNG no iniciado (seguramente de baja entropía, no válido con fines criptográficos)
T}
T{
\fBgetrandom\fP()
T}	T{
Igual a 
\fI/dev/urandom\fP
T}	T{
No bloquea una vez que el pool esté preparado
T}	T{
Bloquea hasta que el pool esté preparado
T}
T{
\fBgetrandom\fP()
\fBGRND_RANDOM\fP
T}	T{
Igual que
\fI/dev/random\fP
T}	T{
Si el nivel de entropía es demasiado bajo, bloquea hasta que haya suficiente
T}	T{
Bloquea hasta que el pool esté preparado
T}
T{
\fBgetrandom\fP()
\fBGRND_NONBLOCK\fP
T}	T{
Igual a 
\fI/dev/urandom\fP
T}	T{
No bloquea una vez que el pool esté preparado
T}	T{
\fBEAGAIN\fP
T}
T{
\fBgetrandom\fP()
\fBGRND_RANDOM\fP
+
\fBGRND_NONBLOCK\fP
T}	T{
Igual que
\fI/dev/random\fP
T}	T{
\fBEAGAIN\fP
Si no se dispone de suficiente entropía
T}	T{
\fBEAGAIN\fP
T}
.TE
.ad
.\"
.SS "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\[ha]128 operaciones para romper) por
lo que un generador de llaves sólo necesita 128 bits (16 bytes) de
\fI/dev/random\fP.
.P
.\"
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 \fIno\fP está
habilmente implementada.
.SH "VÉASE TAMBIÉN"
\fBgetrandom\fP(2), \fBgetauxval\fP(3), \fBgetentropy\fP(3), \fBrandom\fP(4),
\fBurandom\fP,(4) \fBsignal\fP(7)
.PP
.SH TRADUCCIÓN
La traducción al español de esta página del manual fue creada por
Marcos Fouces <marcos@debian.org>
.
.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 .