Рейтинг:2

Что не так с PRNG на средней площади?

флаг tf
Tom

Согласно статье:

https://www.pcg-random.org/posts/too-big-to-fail.html

Когда N средней площади $2^{128}$ мы можем рассчитывать на производство $2^{64.3}$ числа, прежде чем мы начнем видеть повторы в генераторе. Этого достаточно для 320 экзабайт случайных данных, что намного больше, чем может когда-либо потреблять любой тест PractRand.

Этого размера пути достаточно, чтобы добраться до цикла и самого цикла. Он проходит тесты на случайность и, вероятно, довольно быстр. Что-то не так с достаточно большой Миддл-сквер? Особенно если не жаловаться на скорость и требование 256-битной математики.

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

fgrieu avatar
флаг ng
Качество среднего квадрата PRNG с состоянием $n$ битов будет во многом зависеть от того, как его вывод определяется как функция его состояния, и в меньшей степени от того, как он инициализируется из своего ключа.Вы определились с этим? Независимо; ожидаемый размер цикла $2^{64,3}$, по-видимому, получен из _предположения_, что итерируемая функция ведет себя как псевдослучайная случайная функция из и в набор 128-битных битовых строк; таким образом, делать выводы о качестве среднего квадрата PRNG из этого числа в значительной степени является круговым аргументом. Пища для размышлений: сколько предшественников нуля?
Tom avatar
флаг tf
Tom
@fgrieu, но этот круговой аргумент присутствует в каждом генераторе PRNG. Конечно, в большинстве генераторов мы знаем период, но у нас нет доказательств того, что они будут вести себя хорошо на многих терабайтах данных. Нам нужно верить в хорошее поведение. И мы верим. Точно так же, если мы докажем хорошее поведение Middle Square на первых терабайтах данных, нет веских причин опасаться, что он выйдет из строя с большим объемом данных и будет иметь короткий период. Поскольку мы узакониваем качество других генераторов верой для больших объемов данных, почему бы не сделать это для длины цикла Middle Square.
флаг cn
@Tom Ваше утверждение о том, что такой «круговой аргумент» применим к «каждому генератору PRNG», основано на понимании математики или на вашем личном мнении о том, что может произойти? Конечно, есть *некоторые* ужасные генераторы PNRG, но «некоторые» — это не то же самое, что «все».
Рейтинг:6
флаг ru

Заявление «мы рассчитываем произвести $2^{64.3}$ чисел до того, как мы начнем повторять», верно только в том случае, если мы считаем, что 128-битный средний квадрат ведет себя как случайное отображение на $\{0,1\}^{128}$. Однако мы можем показать, что оно обладает свойствами, маловероятными для случайного отображения.

Напомним, что 128-битный средний квадрат поддерживает 128-битное состояние. $S_t$. Обновления эффективно выполняются путем возведения в квадрат $S_t$, и взяв биты 64-191 как новые $S_{t+1}$ то есть $$S_{t+1}=(S_t^2>>64)\%2^{128}.$$

Штат $S_t=0$ представляет фиксированную точку. Хотя случайные отображения имеют фиксированные точки с вероятностью примерно $(1-1/e)$, это необычно, так как имеет большое количество прообразов. Любой номер $С<2^{32}$ будет отображаться в 0, как и любое число $S$ делится на $2^{96}$. Одни только эти прообразы (могут быть и другие) в сумме $2^{33}$ когда для большой случайной карты мы ожидаем, что количество прообразов будет распределено Пуассоном (1). Более того, если мы рассмотрим предшественников, любое количество $С<2^{64}$ будет отображаться на меньшее число и число меньше, чем $2^{63}$ достигнет 0 менее чем за 6 шагов. Аналогично для чисел, делящихся на $2^{65}$. Это дает по крайней мере $2^{64}$ предшествующие состояния для 0, когда случайная карта ожидала бы $2^{64}\sqrt{\pi/8}$ (при этом время коалесценции примерно такое же). Число состояний-предшественников еще более возрастает, если мы рассматриваем возможных предшественников наших гарантированных состояний. $2^{64}$ государства-предшественники, если каждый из них имеет $2^{64}\sqrt{\pi/8}$ предшественников, мы могли бы увидеть положительную долю нашего пространства, вырождающегося в состояние 0.

Существует также сохранившееся числовое подпространство, которое точно делится на $2^{64}$ (это пространство размером $2^{63}$), которые, как мы могли бы ожидать, будут демонстрировать случайную статистику отображения для меньшего пространства (например,длина цикла $2^{31,5}\sqrt{\pi/8}$). Затем мы рассматриваем предшественников для этого подпространства и получаем ожидания, значительно отличающиеся от полного случайного отображения.

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

Tom avatar
флаг tf
Tom
Хорошо, большинство моих сомнений было о том, что если это так близко к случайному отображению, что не так. Теперь я лучше понимаю, что у нас есть отклонения от случайного отображения, и даже если бы оно работало как случайное отображение, у нас все еще есть своего рода круговой аргумент.
fgrieu avatar
флаг ng
Еще в [ENIAC] (https://en.wikipedia.org/wiki/ENIAC) было известно, что свойства метода среднего квадрата фон Неймана, проанализированные в этом ответе, приводят к коротким циклам при повторении. Во втором томе TAOCP Кнута говорится: «Последовательность имеет тенденцию входить в колею, короткий цикл повторяющихся элементов. (…) Более обширные тесты были проведены Н. Метрополисом, в основном в двоичной системе счисления. Он показал, что, когда Используются 20-битные числа, имеется 13 различных циклов, в которые может вырождаться последовательность средних квадратов, самый длинный из которых имеет период длины 142"_.
Рейтинг:4
флаг ng

Чтение страницы, связанной с вопросом: она признает, что основной метод среднего квадрата приводит к коротким циклам, объясняет, почему (как и это другой ответ), и вместо этого предлагает вариант «квадрата вмешаться», который итерирует $x\mapsto g(x):=2^n-1-\left\lfloor x^2/2^{\left\lfloor n/2\right\rfloor}\right\rfloor\bmod 2^n$ вместо $x\mapsto f(x):=\left\lfloor x^2/2^{\left\lfloor n/2\right\rfloor}\right\rfloor\bmod 2^n$.

Этот вариант удаляет любую очевидную фиксированную точку и, что более важно, любой очевидный большой класс точек, которые быстро попадают в короткий цикл. Это улучшение. Однако:

  • Если мы выводим полное состояние генератора на каждом шаге, это достаточно эффективно (для грамотной реализации на машине с быстрым множителем), но тривиально предсказуемо из прошлого вывода, поэтому криптографически небезопасно. Я нахожу очень правдоподобным утверждение статьи о том, что (для $n=128$) Meddle Square проходит все стандартные статистические тесты. Это иллюстрация того, что стандартные статистические тесты на выходе PRNG бессмысленны, когда дело доходит до аргумента, что это CSPRNG. И действительно, статья, кажется, вводит квадрат Вмешательства именно для того, чтобы проиллюстрировать, что наличие большого состояния без очевидной фиксированной точки или поглощающего цикла и прохождение тестов не является действительным критерием безопасности для CSPRNG.
  • Если мы выводим один бит, средний квадрат и вариации $n$ раз менее эффективен, и у нас до сих пор нет веского аргумента, что это CSPRNG. Дело в том, что мы можем довольно легко создать PRNG, итерирующий функцию, изменяющую свое большое состояние, которая выводит один бит этого состояния на каждом шаге, проходит все стандартные тесты, но в конечном итоге раскрывает свое полное состояние и, следовательно, криптографически небезопасна.
  • Мы могли бы согласиться на золотую середину, например, на 256-битное состояние, из которого 64 бита выводятся на каждом этапе. Это может восстановить большую эффективность, но, не пытаясь, я не уверен в том, как пропускная способность сравнивается, например, с. чача; и я бы сказал, что гораздо сложнее правильно реализовать эффективную реализацию.
  • Как и любой генератор, основанный на итерации псевдослучайной функции, генератор невозможно перемотать вперед, что делает его непригодным для многих приложений (например, поточный шифр для большого объема данных, поддерживающий произвольный доступ для чтения).*).

Подводя итог: ГПСЧ со средним квадратом и даже его улучшенный вариант, Meddle Square, неверны, потому что:

  1. Им не хватает надежного аргумента безопасности, в любом варианте. Этого должно быть достаточно.
  2. Они тривиально небезопасны, когда мы выводим их полное состояние на каждом шаге.
  3. Когда мы выводим меньше информации об их состоянии, они становятся менее эффективными.
  4. Нет прямого доступа* в сгенерированный поток, полезное свойство многих CSPRNG.

* То есть способность эффективно вычислять $j^\text{th}$ мощность генератора для больших $j$, с усилием, практически не зависящим от величины $j$ является. Это удобно, когда $j$ — это индекс в огромном фильме, зашифрованный XOR с выходом генератора, и мы хотим начать просмотр последней трети фильма.

Tom avatar
флаг tf
Tom
Что такое прямой доступ к сгенерированному потоку?
fgrieu avatar
флаг ng
@Tom: см. * в обновленном ответе.

Ответить или комментировать

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