Как мы используем случайные числа в обычной жизни?
Ответ: Если у вас есть машина, возраст которой не превышает 10 лет, то она наверняка запирается с помощью электронного ключа. Чтобы открыть или закрыть двери, вам достаточно просто нажать на кнопку. А вы когда-нибудь задумывались, как работают эти устройства?
Для блокировки или разблокировки дверей автомобиля электронный ключ передает радиоволны на 20-30 м. Именно поэтому вам не нужно вытаскивать его из кармана, чтобы открыть машину. В радиоволны каждого ключа вшит специальный код, который подходит только для одного автомобиля. Но как производители добиваются того, что код каждой машины уникален? И можно ли перехватить этот код с помощью радиопередатчика и угнать чужой автомобиль?
Если кто-то убеждает вас, что есть способ скопировать коды электронных ключей и с их помощью украсть машину, не верьте ни единому слову. Подобную аферу невозможно провернуть: каждый раз, когда вы открываете двери автомобиля, код генерируется случайным образом. Поэтому даже если вор сумел перехватить сигнал вашего ключа, он не сможет его использовать: система воспримет этот код как неверный.
Но если каждый код – последовательность случайных чисел, каким образом система отличает «своё» случайное число от «чужих»? Почему код, который передает ваш ключ, совпадает с кодом системы блокировки машины? Дело в том, что эти «случайные» числа создаются генератором псевдослучайных чисел. Генератор способен порождать потоки кодов, последовательность цифр в которых зависит от начального числа или исходного состояния системы. Значит, если вам известен алгоритм, который используется в вашем генераторе, и его начальные числа, вы сможете составить точно такой же код. Однако для стороннего наблюдателя эти последовательности символов будут казаться действительно случайными.
Кроме того, при действительно случайной генерации создание чисел не подчиняется какой-либо схеме или модели. У генератора псевдослучайных чисел количество кодов ограничено. К примеру, алгоритм способен создать 15 последовательностей; на шестнадцатый раз он вновь использует первый код, на семнадцатый – второй и так далее. Поэтому гипотетически вашу машину всё же можно украсть, если перехватить все коды системы блокировки и выяснить частоту, с которой они повторяются. Но на практике это почти невозможно, ведь данные коды генерируются с помощью Вихря Мерсенна. А чтобы выяснить частоту их повторения, вам придется открывать и закрывать машину по 10 000 раз в день и записывать сгенерированные коды. Вся процедура займет столько же времени, сколько дорога до самой крайней точки наблюдаемой Вселенной и обратно, и не один-два, а множество раз (столько же, сколько частиц во всей Вселенной).
Конечно, есть и другой способ: вы можете постараться вычислить алгоритм генератора и создать систему оптимизированного перебора. Для этого постройте 32-мерное пространство, расположите в нем коды, проанализируйте их последовательность с помощью представления многообразия меньшей размерности (здесь вам поможет метод последовательных приближений Пикара) и смоделируйте динамику изменений кодов, используя некоторые алгоритмы аппроксимации метода Монте-Карло (что значительно повысит ваши шансы на успех).
Ну или просто выбейте стекло машины и откройте дверь изнутри.

