random(7) Miscellaneous Information Manual random(7) random - , , (CSPRNG). , . CSPRNG: o /dev/urandom /dev/random, random(4). Linux, . o , Linux -- getrandom(2), Linux 3.17. /dev/urandom ( urandom) /dev/random ( random). urandom; random GRND_RANDOM ( getentropy(3) , , getrandom(2)). . , . (, , ), , , /dev/random getrandom(2) GRND_RANDOM. /dev/urandom getrandom(2) GRND_RANDOM. , urandom, , . GRND_RANDOM /dev/random , . , , GRND_RANDOM /dev/random, . - - /, , . , , . , , , . getrandom, /dev/urandom /dev/random . GRND_NONBLOCK getrandom(2). , , . +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ | | | | , | | | | | | +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ |/dev/random | | | , | | | | , | | | | | | | | | | , | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ |/dev/urandom | CSPRNG | | | | | | | | | | | | CSPRNG ( | | | | | | | | | | ) | +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ |getrandom() | , | | | | | /dev/urandom | | | +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ |getrandom() GRND_RANDOM | , | | | | | /dev/random | , | | | | | | | | | | , | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ |getrandom() GRND_NONBLOCK | , | | EAGAIN | | | /dev/urandom | | | +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ |getrandom() GRND_RANDOM + | , | EAGAIN, | EAGAIN | |GRND_NONBLOCK | /dev/random | | | | | | | | +----------------------------+-----------------------------------+-----------------------------------------+-----------------------------------------------------------------+ The amount of seed material required to generate a cryptographic key equals the effective key size of the key. For example, a 3072-bit RSA or Diffie-Hellman private key has an effective key size of 128 bits (it requires about 2^128 operations to break) so a key generator needs only 128 bits (16 bytes) of seed material from /dev/random. CSPRNG, 256 , - 256 (32 ) , ( ), , . . getrandom(2), getauxval(3), getentropy(3), random(4), urandom(4), signal(7) aereiae , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , Yuri Kozlov , ; GNU 3 , . . , , . Linux man-pages 6.06 31 2023 . random(7)