В чем разница между незащищенным генератором случайных чисел и безопасным генератором случайных чисел?

Как следует из заголовка: В чем разница между незащищенным генератором случайных чисел и безопасным генератором случайных чисел?

7 ответов

Решение

Никакой вычислительно выполнимый алгоритм не должен:

  • вернуть семя или
  • предсказать "следующий бит"

для безопасного генератора случайных чисел.

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

Обратите внимание, что числа не случайны. "Случайность" просто не является свойством какого-либо числа (даже когда XKCD говорит вам иначе).

Только процесс генерирования чисел может быть оценен по "случайности". Прочитайте, какого цвета ваши биты для обсуждения этой темы.

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

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

Просто "случайное число" обычно означает псевдослучайное число. Поскольку это псевдослучайное число, злоумышленник может легко предсказать его.

Безопасное случайное число - это случайное число из действительно случайного источника данных, т.е. с участием энтропийного пула некоторых видов.

Согласитесь с Purfiedeas. Есть также хорошая статья об этом, которая называется Cheat Online Poker.

Случайное число, вероятно, будет означать псевдослучайное число, возвращаемое алгоритмом с использованием "семени".

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

Это как разница между AES и ROT13.

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

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

Другие вопросы по тегам