2012-05-04 4 views
2

Из того, что я понимаю, PRNG использует семя, которое генерирует последовательность чисел, которая не является по-настоящему случайной. Можно ли создать генератор поистине случайных чисел, повторно используя PRNG снова и снова с разными семенами каждый раз, когда он используется. Семя может быть извлечено из dev/random или текущего времени или такта. Если нет, то есть ли в программном обеспечении действительно генератор случайных чисел?Истинно генератор случайных чисел

Благодаря

ответ

3

Если вы повторно семени ГСЧ каждый раз, когда вам нужно случайное число, вы можете просто вырезать средний человек и использовать семена непосредственно в качестве случайных чисел.

Но то, о чем вы говорите, сделано на практике. Это так называемые криптографически безопасные PRNG, и они используются во многих операционных системах для предоставления случайных чисел для криптографических приложений. Они часто заново посеяны из энтропийного пула и сконструированы таким образом, что вычислительно сложно определить следующий номер из знания прошлых (что-то, что очень сложно сделать для LCG, например), а также выяснить прошлое числа от текущего.

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

+0

Hi Joey, CSPRNG все еще находится в непосредственной близости от PRNG, есть ли такая вещь, как действительно случайная? Почему CSPRNG действительно действительно случайный? Из объяснения мне кажется, что это действительно случайно на основе этого энтропийного пула. –

+0

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

1

Часы не очень случайны, но/dev/random имеет некоторую случайность - на самом деле это как ведро случайности, которое вы можете истощить в зависимости от скорости производства и потребления случайности. Если вы используете dev/random, тогда вы не используете RNG. Сеяние RNG из/dev/random является избыточным.

2

Простой ответ заключается в том, что такой реализации нет, поскольку, насколько я знаю, это просто невозможно. Для генерации действительно случайных чисел вам нужен внешний источник энтропии, например, hardware random number generator.

0

Intel is working на что-то, что может быть поистине революционным, если оно работает как рекламируемое. Это фактически обеспечило бы избыточность аппаратных PRNG.

Смежные вопросы