summaryrefslogtreecommitdiffstats
path: root/man4/random.4
diff options
context:
space:
mode:
Diffstat (limited to 'man4/random.4')
-rw-r--r--man4/random.4134
1 files changed, 134 insertions, 0 deletions
diff --git a/man4/random.4 b/man4/random.4
new file mode 100644
index 000000000..d12c43cef
--- /dev/null
+++ b/man4/random.4
@@ -0,0 +1,134 @@
+.\" Copyright (c) 1997 John S. Kallal (kallal@voicenet.com)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" Some changes by tytso and aeb.
+.\"
+.TH RANDOM 4 2003-10-25 "Linux" "Linux Programmer's Manual"
+.SH NAME
+random, urandom \- kernel random number source devices
+.SH DESCRIPTION
+The character special files \fB/dev/random\fP and
+\fB/dev/urandom\fP (present since Linux 1.3.30)
+provide an interface to the kernel's random number generator.
+File \fB/dev/random\fP has major device number 1
+and minor device number 8. File \fB/dev/urandom\fP
+has major device number 1 and minor device number 9.
+.LP
+The random number generator gathers environmental noise
+from device drivers and other sources into an entropy pool.
+The generator also keeps an estimate of the
+number of bits of noise in the entropy pool.
+From this entropy pool random numbers are created.
+.LP
+When read, the \fB/dev/random\fP device will only return random bytes
+within the estimated number of bits of noise in the entropy
+pool. \fB/dev/random\fP should be suitable for uses that need very
+high quality randomness such as one-time pad or key generation.
+When the entropy pool is empty, reads from \fB/dev/random\fP will block
+until additional environmental noise is gathered.
+.LP
+When read, \fB/dev/urandom\fP device will return as many bytes as are
+requested. As a result, if there is not sufficient entropy in the
+entropy pool, the returned values are theoretically vulnerable to a
+cryptographic attack on the algorithms used by the driver. Knowledge of
+how to do this is not available in the current non-classified
+literature, but it is theoretically possible that such an attack may
+exist. If this is a concern in your application, use \fB/dev/random\fP
+instead.
+.SH CONFIGURING
+If your system does not have
+\fB/dev/random\fP and \fB/dev/urandom\fP created already, they
+can be created with the following commands:
+
+.nf
+ mknod -m 644 /dev/random c 1 8
+ mknod -m 644 /dev/urandom c 1 9
+ chown root:root /dev/random /dev/urandom
+.fi
+
+When a Linux system starts up without much operator interaction,
+the entropy pool may be in a fairly predictable state.
+This reduces the actual amount of noise in the entropy pool
+below the estimate. In order to counteract this effect, it helps to carry
+entropy pool information across shut-downs and start-ups.
+To do this, add the following lines to an appropriate script
+which is run during the Linux system start-up sequence:
+
+.nf
+ echo "Initializing kernel random number generator..."
+ # Initialize kernel random number generator with random seed
+ # from last shut-down (or start-up) to this start-up. Load and
+ # then save 512 bytes, which is the size of the entropy pool.
+ if [ -f /var/random-seed ]; then
+ cat /var/random-seed >/dev/urandom
+ fi
+ dd if=/dev/urandom of=/var/random-seed count=1
+.fi
+
+Also, add the following lines in an appropriate script which is
+run during the Linux system shutdown:
+
+.nf
+ # Carry a random seed from shut-down to start-up for the random
+ # number generator. Save 512 bytes, which is the size of the
+ # random number generator's entropy pool.
+ echo "Saving random seed..."
+ dd if=/dev/urandom of=/var/random-seed count=1
+.fi
+.SH "PROC INTERFACE"
+The files in the directory
+.I /proc/sys/kernel/random
+(present since 2.3.16) provide an additional interface to the
+.B /dev/random
+device.
+.LP
+The read-only file
+.I entropy_avail
+gives the available entropy. Normally, this will be 4096 (bits),
+a full entropy pool.
+.LP
+The file
+.I poolsize
+gives the size of the entropy pool. Normally, this will be 512 (bytes).
+It can be changed to any value for which an algorithm is available.
+Currently the choices are 32, 64, 128, 256, 512, 1024, 2048.
+.LP
+The file
+.I read_wakeup_threshold
+contains the number of bits of entropy required for waking up processes
+that sleep waiting for entropy from
+.BR /dev/random .
+The default is 64.
+The file
+.I write_wakeup_threshold
+contains the number of bits of entropy below which we wake up
+processes that do a
+.I select()
+or
+.I poll()
+for write access to
+.BR /dev/random .
+These values can be changed by writing to the files.
+.LP
+The read-only files
+.I uuid
+and
+.I boot_id
+contain random strings like 6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9.
+The former is generated afresh for each read, the latter was
+generated once.
+.SH FILES
+/dev/random
+.br
+/dev/urandom
+.SH AUTHOR
+The kernel's random number generator was written by
+Theodore Ts'o (tytso@athena.mit.edu).
+.SH "SEE ALSO"
+mknod (1)
+.br
+RFC 1750, "Randomness Recommendations for Security"