[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
16.6 Random-Number Subsystem Architecture
Libgcrypt provides 3 levels or random quality: The level
GCRY_VERY_STRONG_RANDOM
usually used for key generation, the
level GCRY_STRONG_RANDOM
for all other strong random
requirements and the function gcry_create_nonce
which is used
for weaker usages like nonces. There is also a level
GCRY_WEAK_RANDOM
which in general maps to
GCRY_STRONG_RANDOM
except when used with the function
gcry_mpi_randomize
, where it randomizes an
multi-precision-integer using the gcry_create_nonce
function.
There are two distinct random generators available:
-
The Continuously Seeded Pseudo Random Number Generator (CSPRNG), which
is based on the classic GnuPG derived big pool implementation.
Implemented in
random/random-csprng.c
and used by default. -
A FIPS approved ANSI X9.31 PRNG using AES with a 128 bit key. Implemented in
random/random-fips.c
and used if Libgcrypt is in FIPS mode.
Both generators make use of so-called entropy gathering modules:
- rndlinux
Uses the operating system provided ‘/dev/random’ and ‘/dev/urandom’ devices.
- rndunix
Runs several operating system commands to collect entropy from sources like virtual machine and process statistics. It is a kind of poor-man’s
/dev/random
implementation. It is not available in FIPS mode.- rndegd
Uses the operating system provided Entropy Gathering Daemon (EGD). The EGD basically uses the same algorithms as rndunix does. However as a system daemon it keeps on running and thus can serve several processes requiring entropy input and does not waste collected entropy if the application does not need all the collected entropy. It is not available in FIPS mode.
- rndw32
Targeted for the Microsoft Windows OS. It uses certain properties of that system and is the only gathering module available for that OS.
- rndhw
Extra module to collect additional entropy by utilizing a hardware random number generator. As of now the only supported hardware RNG is the Padlock engine of VIA (Centaur) CPUs. It is not available in FIPS mode.
16.6.1 Description of the CSPRNG | ||
16.6.2 Description of the FIPS X9.31 PRNG |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on February 9, 2014 using texi2html 5.0.