Як часто висівають / dev / urandom проби з / dev / random?


15

Якщо я зовсім не збентежений і це не робить.

Хочу знати, чи / dev / urandom отримає посилену ентропію, якщо я візьму апаратний RNG і підключую його ентропію до / dev / random.

Отже, перефразовуючи, якщо я збільшив би ентропію / dev / random на X біт / сек (тобто / dev / random після введення дозволить вам відібрати X біт / с), це призведе до посилення переходу ентропії на urandom?


2
Хоча це не дуже актуально, 2uo.de/myths-about-urandom та blog.cloudflare.com/… (зокрема графік на blog.cloudflare.com/content/images/image01.png ) може бути корисним для читання.
користувач1686

Якщо у вас був справжній апаратний RNG, ви можете просто ним скористатися безпосередньо.
Майкл Хемптон

Відповіді:


25

Не можна сказати, що /dev/urandomзразки з /dev/random. Натомість два пули підтримуються одним джерелом ентропії. Коли кількість ентропії пулів досягає нуля, вони скидаються із спільного вхідного пулу. Отже, якщо ви якимось чином вводите ентропію введення ядра, вона може використовувати це для будь-якого /dev/randomабо /dev/urandom, залежно від того, яке читається.

Однак /dev/urandom також обмежена ставка в тому, як часто він може просити повторне повторне повторне використання. За замовчуванням він може перезавантажуватися лише раз на 60 секунд.

На практиці нічого з цього не має значення, тому що, поки пул спочатку засідає щонайменше 128 біт або більше ентропії, прогнозування будь-якого виходу вимагатиме не лише перегляду попередніх результатів, але й порушення алгоритмів, що використовуються, включаючи принаймні опорну оцінку SHA-1 ( який залишається незнімним ).


7

Це залежить від реалізації. Але, як правило, /dev/randomі /dev/urandomвитягніть ентропію з того ж пулу, так і буде.

Діаграма від https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/


4

У Linux будь-які дані, записані в / dev / random або / dev / urandom, копіюються як у блокуючий пул (джерело випадковості для / dev / random), так і в неблокуючий пул (джерело випадковості для / dev / urandom).

Просто подивіться на функцію random_write .

Але дані, записані в / dev / random, не враховуються внутрішнім оцінком ентропії (зрештою, якийсь локальний супротивник може спробувати просто перенаправити / dev / zero або якийсь інший дуже не випадковий джерело на / dev / random), тому якщо у вас виникнуть проблеми з блокуванням / dev / random, просто запис у / dev / random не допомагає.

У Linux пишіть у / dev / random (або / dev / urandom, різниці немає), але читайте завжди з / dev / urandom (як тільки це буде посіяно - насправді найкращим способом є використання нового системного виклику getrandom ).

Я не знаю, як це працює в інших Unice.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.