Личен блог на Георги Христов

Интерфейс към терзанията на един гийк

Защо /dev/random не работи?

/dev/random е файл на знаково устройство за генериране на случайни числа (символи). Получават се чрез т.нар. шум в обкръжението. Това означава, че в компютъра трябва да настъпват случайни събития. Това звучи доста елементарно на човек без достатъчно ИТ знания, но реално е сложно за една компютърна система. Такави случайни събития могат да бъдат трафик на мрежовата карта и работата с клавиатурата и мишката. Макар и да могат да се предвидят или манипулират до някаква степен честота на натискане на клавишите или на трафика се смятат за такива.

Най-често причината за да “не работи” /dev/random е липсата на случайни събития в система. Проверка може да се осъществи с проверка на entropy pool:

$ cat /proc/sys/kernel/random/entropy_avail

При липса решение може да бъде използването на /dev/urandom. Трябва да се отбележи, че тук се генерират псевдослучайни числа и на теория са възможни криптографски атаки. За сметка на това липсва блокирането при random. От тук идва и името на файла u(nlocked)random.

Скоростта на двата метода може да сравним нагледно по следният начин:

$ hexdump /dev/random,

след което изпълняваме:

$ hexdump /dev/urandom.

Доста добре се вижда как в първият случай случайните числа се генерат сравнително бавно, в замисимост от шума. Споменах вече как може да се генерира такъв. Във втория получаваме незабавно  голям брой случайни числа.

Linux е първата операционна система, в която е имплементиран такъв генератор на случайни числа. Във всички останали (*Unix, *BSD, MAC OS, Solaris) към този момент при наличие на /dev/random работи както /dev/urandom в Linux. В почти всички за реализацията се използва Yarrow алгоритъм.

Публикувано на | April 18, 2010 | Към момента няма коментари по публикацията

Мнения и коментари

  • Добавете ме в Google+

  • Последни публикации

  • Последни коментари