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

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


person Trimack    schedule 20.08.2009    source источник
comment
Уже есть куча вопросов по ГПСЧ. Что отличает этот от других?   -  person dmckee --- ex-moderator kitten    schedule 21.08.2009
comment
stackoverflow .com / questions / 1266261 / stackoverflow.com/questions/167735/ stackoverflow.com/questions/1247129/ и так далее. Попробуйте этот поиск: stackoverflow.com/questions/tagged/random-number-generator   -  person dmckee --- ex-moderator kitten    schedule 21.08.2009
comment
Ни один из этих трех так называемых дубликатов не требует безопасного ГПСЧ. В первом прямо говорится, что это не криптовалюта, в третьем - для моделирования Монте-Карло, а в среднем - для создания ландшафтов. Проблемы совершенно разные.   -  person Steve Jessop    schedule 21.08.2009
comment
Это другой вопрос, потому что я хочу знать, почему вы выбрали такого генератора. Меня не интересует сумма легкодоступных реализаций. Я хочу знать, выберете ли вы один из них, исходя из их теоретических свойств или только потому, что его легко найти / использовать.   -  person Trimack    schedule 21.08.2009


Ответы (5)


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

person Thom Smith    schedule 20.08.2009

dev/random или аналогичный на вашей платформе.

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

Если вам нужен криптографически безопасный ГПСЧ, то обычно лучше всего использовать повторное применение безопасного хэша к большому начальному массиву. Однако не изобретайте свой собственный алгоритм, выберите версию Fortuna или что-то еще достаточно хорошо рассмотренное.

person Steve Jessop    schedule 20.08.2009

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

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

person P Shved    schedule 20.08.2009

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

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

person T.E.D.    schedule 20.08.2009

HotBits.

person JSBձոգչ    schedule 20.08.2009
comment
Вы знаете, что когда эта ссылка умрет, этот ответ будет совершенно бесполезен. - person tvanfosson; 21.08.2009
comment
Это сервер, который дает вам биты. Если ссылка умирает, сервер пропадает, поэтому, конечно, ответ будет бесполезен. - person Steve Jessop; 21.08.2009