Для чего нужен генератор случайных чисел и как он работает
В компьютерных системах есть такой процесс, который носит общее название «генератор случайных чисел». Получение случайных чисел нужно для самых различных задач — от компьютерных игр до обычных приложений. Например, чтобы показывать случайный рекламный блок на сайте, система как раз пользуется генератором случайного числа, чтобы отобразить рандомный баннер. В криптографии, чтобы сделать уникальный шифр или ключ, также используются случайные числа.
Генераторы бывают двух видов: аппаратные и программные. Самые крутые — аппаратные. Такой генератор представляет собой сложное устройство, которое использует самые различные способы получения рандомной цепочки. В большинстве случаях мы пользуемся программными методами.
Дело в том, что программные решения хоть и производят случайные числа, но они являются псевдослучайными. Причина проста — зная алгоритм построения чисел можно воспроизвести комбинацию. Данный способ не подходит для криптографии — ведь порядок, в теории, можно повторить. Поэтому важные системы используют аппаратные генераторы случайных чисел. Кстати, есть варианты устройств, которые подключаются к ПК по USB.
Как происходит аппаратная генерация случайных чисел? Способов много, рассмотрим несколько:
► Самый дорогой способ основан на радиоактивном распаде атомов. При распаде атомы излучают шум, из которого и берутся случайные биты. Распад каждого атома явление уникальное и не может быть предсказано. Только вот скоростью такой генератор похвастаться не может;
► Использование генерации дробового шума. Простыми словами — электрические цепи в процессе работы издают шум, который потом используют для получения случайных бит. Вместо электрических цепей можно использовать также оптопару и фотодатчиком снимать частоту, которую можно использовать для получение шума;
► Генерация с помощью триггеров внутри микросхем. При отключении питания от триггера, его последнее положение будет случайным, потому что зависит от быстродействия триггера. Микросхема построена так, что все триггеры не могут сработать одновременно;
► С помощью теплового шума от резистора при нагреве;
► С помощью атмосферного шума земли, который можно услышать с помощью радиоприемного устройства;
► Могут быть использованы различные аналого-цифровые преобразователи.
Но такие способы, как правило, очень дорогие и медленные.
В обычном ПК для достижения более менее непредсказуемой цепочки случайных чисел может быть использована клавиатура или мышь. Например, когда генерируешь ключ доступа для сервера через Putty, система просит водить курсором мыши по пустому полю:
Это нужно, чтобы добавить случайности в полученный результат. Также может быть использована клавиатура, фоновый шум с микрофона или даже измерение времени пакетов, которые приходят через подключение к Wi-Fi роутеру. Но эти способы генерации все равно относят к псевдослучайным программным методам.
Постарался максимально просто, без терминов. Не утомил? Продолжать в том же духе? Напишите в комментариях 👇
Мы используем cookie-файлы, чтобы улучшить сервисы для вас. Если ваш возраст менее 13 лет, настроить cookie-файлы должен ваш законный представитель. Больше информации
Нет комментариев