Ентропія - це технічний термін для "Випадковості". Комп'ютери насправді не генерують ентропію, але збирають її, дивлячись на такі речі, як зміни швидкості обертання жорсткого диска (фізичні явища, які важко передбачити через тертя тощо). Коли комп'ютер хоче генерувати псевдовипадкові дані, він буде Винайдіть математичну формулу з справжньою ентропією, яку вона знайшла шляхом вимірювання клацання мишею, варіацій відкрутки жорсткого диска тощо. Грубо кажучи, entropy_avail
це міра бітів, доступних для читання/dev/random
Потрібен час, щоб комп'ютер зчитував ентропію з оточення, якщо у нього немає крутого обладнання, як галасливий діод чи щось подібне.
Якщо у вас є 4096 біт ентропії, і ви котите, /dev/random
ви можете розраховувати, що зможете прочитати 512 байтів ентропії (4096 біт) перед блоками файлів, поки вона чекає більшої ентропії.
Наприклад, якщо ви " cat /dev/random
" ваша ентропія зменшиться до нуля. Спочатку ви отримаєте 512 байт випадкового сміття, але він зупиниться і потроху ви побачите більше випадкових даних прокручування даних.
Але люди не повинні діяти /dev/random
. Зазвичай розробники будуть читати невелику кількість даних, наприклад, 128 біт, і використовуватимуть їх для виведення якогось алгоритму PRNG. Ввічливо не читати більше ентропії, /dev/random
ніж вам потрібно, оскільки так багато часу збирається і вважається цінним. Таким чином, якщо ви будете зливати його, недбало cat
підфарбовуючи файл, як вище, ви спричините /dev/random
блокування інших програм, які потрібно прочитати . В одній роботі на роботі ми помітили, що багато криптофункцій затримуються. Ми з'ясували, що робота з Cron викликає скрипт python, який ініціалізуєтьсяramdom.random()
на кожному пробігу, який тривав кожні кілька секунд. Щоб виправити це, ми переписали скрипт python, щоб він працював як демон, який ініціалізувався лише один раз, а завдання cron зчитували дані через XMLRPC, щоб не тримати читання від /dev/random
запуску.