Почему вы используете генератор случайных чисел / экстрактор? - PullRequest
3 голосов
/ 21 августа 2009

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

Ответы [ 5 ]

4 голосов
/ 21 августа 2009

Если вычислительное время не является объектом, то вы не ошибетесь с Blum Blum Shub (http://en.wikipedia.org/wiki/Blum_blum_shub). Неформально говоря, это по крайней мере так же безопасно (трудно предсказать), как целочисленная факторизация.

2 голосов
/ 21 августа 2009

Говорят, что ключи для шифрования телефонных разговоров между президентами США и СССР генерировались из космических лучей. Мы проверили это в физической лаборатории в нашем университете - их энергии дают истинное распределение Гаусса. ;-) Так что для лучшего шифрования вы должны использовать их, потому что такая случайная последовательность не может быть воспроизведена. Если, конечно, ваш противник тайно не построит ускоритель частиц рядом с генератором случайных чисел.

А ... о компьютерах ... Ну, получи поток, который исходит из чего-то физического, а не вычисленного. / dev / random - самое простое решение, но ваш ручной счетчик Гейгера, подключенный к USB, даст лучшую случайность за всю историю.

2 голосов
/ 21 августа 2009

dev/random или эквивалент на вашей платформе.

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

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

1 голос
/ 21 августа 2009

Для небольшого школьного проекта я бы использовал все, что предоставляет ОС для генерации случайных чисел.

Для серьезного приложения безопасности (например: COMSEC -уровневое шифрование) я использую аппаратный генератор случайных чисел. Чистые алгоритмы без аппаратного доступа по определению не дают случайных чисел.

0 голосов
/ 21 августа 2009
...