/dev/random
/dev/random та /dev/urandom — спеціальні символьні псевдопристрої в деяких UNIX-подібних системах, що вперше з'явилися в ядрі Linux версії 1.3.30. Вони надають інтерфейс до системного генератора випадкових чисел, який виводить «шуми» з драйверів пристроїв та інших джерел у «хаотичний» пул (англ. entropy pool). Генератор також зберігає необхідну кількість бітів шуму в цьому пулі і формує з нього випадкові числа[1].
Необхідність використання «шумів» з драйверів пов'язана з обмеженнями генераторів псевдовипадкових чисел. Воно полягає в тому, що якщо генератор складається з кінцевої множини елементів, то кількість станів такого генератора також є кінцевою. Це значить, що на основі попередньої історії використання генератора можна «вгадати» (наперед обчислити) наступні випадкові числа. Використання драйверів пристроїв збільшує кількість елементів системи шляхом залучення в систему додаткових елементів - користувача комп'ютера (через клавіатуру і мишу), комп'ютерної мережі, контролерів дисководів тощо, сигнали від яких враховуються як зовнішній непередбачуваний «шум».
При читанні даних у пристрої /dev/random створюються тільки випадкові байти, що складаються з бітів шуму «хаотичного» пулу. Пристрій /dev/random може бути необхідний в задачах, які вимагають дуже високого коефіцієнта випадковості, наприклад, при створенні ключа доступу і т. п. Якщо «хаотичний» пул спорожнів, читання /dev/random блокується, поки необхідну кількість бітів в пулі не буде створено.
Читання даних з пристрою /dev/urandom[2] поверне стільки байтів, скільки було запитано. В результаті, якщо в пулі було недостатньо бітів, теоретично можливо буде знайти уразливість алгоритму, що використовує цей пристрій. Якщо це важливо, слід використовувати /dev/random.