diff options
Diffstat (limited to 'man4/random.4')
-rw-r--r-- | man4/random.4 | 134 |
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" |