1. Главная
  2. Наш блог
  3. Как компьютеры генерируют случайные числа?

Как компьютеры генерируют случайные числа?

Компьютеры генерируют случайные числа для всего: от криптографии до видеоигр и азартных игр. Существуют две категории случайных чисел – «истинные» случайные числа и псевдослучайные числа – и эта разница важна для безопасности систем шифрования.

случайные числа

Для чего используются случайные числа

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

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

Криптография требует чисел, которые злоумышленники не могут угадать. Мы не можем просто использовать одни и те же числа снова и снова. Мы хотим генерировать эти числа очень непредсказуемым образом, чтобы злоумышленники не могли их угадать. Эти случайные числа важны для безопасного шифрования, независимо от того, шифруете ли вы свои собственные файлы или просто используете веб-сайт HTTPS в Интернете.

Истинные случайные числа

Вы можете быть удивлены, как компьютер может генерировать случайное число. Откуда эта «случайность»? Если это всего лишь кусок компьютерного кода, разве не возможно, что числа, которые генерирует компьютер, могут быть предсказуемыми?

Обычно мы группируем случайные числа, которые генерируют компьютеры, в два типа, в зависимости от того, как они генерируются: «истинные» случайные числа и псевдослучайные числа.

Чтобы сгенерировать «истинное» случайное число, компьютер измеряет некоторый тип физического явления, которое происходит за пределами компьютера. Например, компьютер может измерять радиоактивный распад атома. Согласно квантовой теории, нет никакого способа точно знать, когда произойдет радиоактивный распад, так что это, по сути, «чистая случайность» Вселенной. Злоумышленник не сможет предсказать, когда произойдет радиоактивный распад, поэтому он не будет знать случайное значение.

Например, компьютер может полагаться на атмосферный шум или просто использовать точное время нажатия клавиш на клавиатуре в качестве источника непредсказуемых данных или энтропии. Например, ваш компьютер может заметить, что вы нажали клавишу ровно через 0,23423523 секунды после 14:00. Соберите достаточно данных, связанных с этими нажатиями клавиш, и вы получите источник энтропии, который вы можете использовать для генерации «истинного» случайного числа. Вы не предсказуемая машина, поэтому злоумышленник не может угадать точный момент, когда вы нажимаете эти клавиши.

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

Псевдослучайные числа

Псевдослучайные числа являются альтернативой «истинным» случайным числам. Компьютер может использовать начальное значение и алгоритм для генерации чисел, которые кажутся случайными, но на самом деле предсказуемы. Компьютер не собирает случайные данные из окружающей среды.

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

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

Подытожим

Чтобы генерировать «истинные» случайные числа, генераторы случайных чисел собирают «энтропию» или, казалось бы, случайные данные из окружающего их физического мира.

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

Отключить рекламу на сайте на 5 минут для проведения розыгрыша.

Меню