Является ли задержка пользователя между случайными дублями хорошим улучшением для PRNG? - PullRequest
0 голосов
/ 30 января 2011

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

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

Спасибо

Ответы [ 3 ]

2 голосов
/ 30 января 2011

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

Может ли пользователь когда-либо обнаруживать шаблон в дорожках, выбранных LCG? Какой бы ни была ваша платформа, вполне вероятно, что ее встроенная функция random() будет достаточно хорошей (то есть она будет казаться полностью случайной для пользователя).

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

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

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

1 голос
/ 30 января 2011

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

В любом случае, вы должны прочитать об источниках энтропии PRNG.

0 голосов
/ 07 сентября 2012

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

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