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

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





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



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

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

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



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



Истинные случайные числа | генератор случайных чисел

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

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



Изображение профиля в Steam, файл не выбран

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



В качестве более повседневного примера компьютер может полагаться на атмосферный шум или просто использовать точное время нажатия клавиш на клавиатуре в качестве источника непредсказуемых данных или энтропии. Например, ваш компьютер может заметить, что вы нажали клавишу ровно через 0,23423523 секунды после 14:00. Возьмите достаточно времени, связанного с этими нажатиями клавиш, и у вас будет источник энтропии, который вы можете использовать для генерации правда случайное число. Вы непредсказуемая машина. Таким образом, злоумышленник не может угадать точный момент нажатия этих клавиш. Устройство / dev / random в Linux, которое генерирует случайные числа, блоки и не возвращает результат, пока не наберет достаточно энтропии, чтобы вернуть действительно случайное число.

Псевдослучайные числа | генератор случайных чисел

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

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

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

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

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

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

samsung s7 edge драйвер

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

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

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

Заключение

Хорошо, это были все люди! Надеюсь, вам понравилась эта статья о генераторе случайных чисел, и вы сочтете ее полезной. Поделитесь с нами своим мнением. Также, если вы хотите задать дополнительные вопросы, связанные с этим. Тогда дайте нам знать в разделе комментариев ниже. Мы скоро к тебе вернемся.

Хорошего дня!

Также см: NSFW: значение и как это работает