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

Оглавление:

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

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

Видео: Как компьютеры генерируют случайные числа
Видео: Google Chromecast: установка и настройка. Трансляция с телефона на телевизор без SMART TV по Wi-Fi. - YouTube 2024, Май
Anonim
Компьютеры генерируют случайное число для всего: от криптографии до видеоигр и азартных игр. Существует две категории случайных чисел - «истинные» случайные числа и псевдослучайные числа, а разница важна для безопасности систем шифрования.
Компьютеры генерируют случайное число для всего: от криптографии до видеоигр и азартных игр. Существует две категории случайных чисел - «истинные» случайные числа и псевдослучайные числа, а разница важна для безопасности систем шифрования.

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

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

Какие случайные числа используются для

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

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

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

Image
Image

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

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

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

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

Для более изо дня в день компьютер может опираться на атмосферный шум или просто использовать точное время нажатия клавиш на клавиатуре в качестве источника непредсказуемых данных или энтропии. Например, ваш компьютер может заметить, что вы нажали клавишу ровно через 0,23423523 секунды после 2 часов. Захватите достаточно времени, связанного с этими нажатиями клавиш, и у вас будет источник энтропии, который вы можете использовать для создания «истинного» случайного число. Вы не предсказуемая машина, поэтому злоумышленник не может угадать точный момент, когда вы нажимаете эти клавиши. / Dev / random device в Linux, которое генерирует случайные числа, «блокирует» и не возвращает результат, пока не соберет достаточную энтропию, чтобы вернуть действительно случайное число.

Image
Image

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

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

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

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

NSA и аппаратный генератор случайных чисел Intel

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

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

Это вызывает серьезную озабоченность. В декабре 2013 года разработчики FreeBSD удалили поддержку использования RdRand напрямую в качестве источника случайности, заявив, что не могут доверять ему. [Источник] Выход устройства RdRand будет передаваться в другой алгоритм, который добавляет дополнительную энтропию, гарантируя, что любые бэкдоры в генераторе случайных чисел не будут иметь значения. Linux уже работал таким образом, в дальнейшем рандомизация случайных данных, поступающих из RdRand, так что это было бы не предсказуемо, даже если бы был бэкдор. [Источник] В недавнем AMA («Ask Me Anything») в Reddit генеральный директор Intel Брайан Кржанич не ответил на вопросы об этих проблемах. [Источник]

Конечно, это, скорее всего, не просто проблема с чипами Intel. Разработчики FreeBSD также назвали чипы Via по имени. Это противоречие показывает, почему генерация случайных чисел, которые действительно случайны и не предсказуемы, настолько важна.

Image
Image

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

Рекомендуемые: