🔐 Что такое /dev/random и /dev/urandom на Linux? |

🔐 Что такое /dev/random и /dev/urandom на Linux?

Мануал

Короткий ответ на этот вопрос – “средства генерации случайных чисел”.

И я уверен, что вы знаете об этом.

Но чтобы понять использование /dev/random и /dev/urandom, сначала нужно знать, почему генерация случайных чисел так важна.

Почему генерация случайных чисел имеет решающее значение?

Компьютеры – это машины, работающие по набору инструкций (поэтому мы создаем программы, чтобы заставить их работать).

Вы можете спросить, почему генерация случайных чисел так важна? Ответ прост.

Соображения безопасности.

Большинство криптографических алгоритмов основаны на генерации случайных чисел, поскольку эти числа впоследствии будут использоваться для создания криптографических ключей.

И если генерируемые числа не являются полностью случайными по своей природе, это делает всю криптографическую технику слабой.

Поскольку эти ключи могут быть легко предсказаны.

И это самая важная причина для генерирования случайных чисел.

Как же Linux решает эту ситуацию?

Очень просто, это тема сегодняшнего обсуждения.

Использование /dev/random и /dev/random.

Вы правильно догадались.

Они оба используются для генерации случайных чисел.

Они оба используются для обеспечения интерфейса к генератору случайных чисел через ядро.

Генератор случайных чисел будет собирать случайные данные из внешних источников, включая драйверы устройств, в пул энтропии.

Но между /dev/random и /dev/urandom есть огромная разница, поскольку они используют разные подходы к генерации случайных чисел.

Как /dev/random будет генерировать случайные числа

/dev/random будет возвращать только случайные числа из пула энтропии, и если пул энтропии пуст или не указывает на достаточную случайность, чтение на /dev/random будет заблокировано.

Это делает его идеальным для генерации высококачественных случайных чисел.

Как /dev/urandom будет генерировать случайные числа

random(unlimited random) будет использовать пул энтропии для возврата случайных чисел, но если пул энтропии пуст, он будет генерировать данные, используя SHA, MD5 или любой другой алгоритм.

Это означает, что, в отличие от /dev/random, он не будет блокировать чтение и продолжит получать случайные числа, даже если случайности недостаточно.

Какой из них выбрать?

‘Random’ и ‘Urandom’ созданы для конкретных случаев.

Urandom используется тогда, когда есть постоянная потребность в случайных числах и их случайность не имеет большого значения.

В то время как Random подходит для задач, где безопасность является первостепенной задачей, поскольку он блокирует считывание, если случайность не соответствует требованиям.

Хотя случайность Urandom чуть слабее, чем Random, он по-прежнему используется во многих операциях, но я бы рекомендовал вам использовать Random (если вы настаиваете на высокой безопасности).

Бонус: Генерация случайного пароля с помощью Urandom

Чтобы сгенерировать случайный пароль с помощью Urandom, достаточно выполнить следующую команду:

sudo < /dev/urandom tr -dc A-Za-z0-9 | head -c14; echo

В данном примере команда tr позволит вам отфильтровать вывод от /dev/urandom, например, пароль от A до Z, от a до z и от 0 до 9.

Команда head сгенерирует строку из 14 символов (с помощью -c14).

Подведение итогов

В этом руководстве мы показали основы работы с /dev/random и /dev/urandom, включая необходимость случайности.

И если вам интересно, я использую Urandom для генерации паролей, так как считаю его надежным и менее склонным к ошибкам, с которыми вы можете столкнуться при использовании Random.

Я надеюсь, что это руководство будет вам полезно, а если у вас возникнут вопросы, дайте мне знать в комментариях.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий