Рейтинг:1

Is it possible that PracRand did not detect looping of the generator?

флаг tf
Tom

I'm testing my own PRNG generator which should has period $2^{38}$ bytes. So after exactly $2^{38}$ bytes it should start repeat. But PractRand find no anomalies after $2^{39}$ bytes.

Could it be that PractRand wouldn't detect this, or I had miscount something and the generator does not loop after that number of bytes?

Paul Uszak avatar
флаг cn
Вы запускали его на 500 Гб?
Tom avatar
флаг tf
Tom
Нет, вы можете использовать номера из своей программы и перенаправить их прямо в PractRand в консоли. Пример: python3 Mygenerator.py | ./RNG_test стандартный ввод. Затем PractRand запускается и проводит испытания до тех пор, пока не выйдет из строя.
Paul Uszak avatar
флаг cn
Но вы прогнали его более чем на $2^{39}$ байт?
Tom avatar
флаг tf
Tom
@PaulUszak Да, знаю. Работает уже почти 3 дня и до сих пор не подвела. Что, конечно, не является необычным, многие генераторы могут это делать.
Рейтинг:1
флаг cn

Я не могу говорить за ваш генератор, так как я его не видел. Является ли он криптографически безопасным (поскольку это немного сложно написать, и только потому, что вы не можете восстановить начальное число, ни на один момент не означает, что другие не могут).

Меня совсем не удивляет, что PractRand не обнаруживает петлю при >275 ГБ (см. примечания). У меня нет непосредственного опыта работы с PractRand, но, несмотря на его низкую родословную, все «стандартные» тесты имеют проблемы. STS NIST имеет очень узкий набор внутренней статистики, что сильно ограничивает допустимые размеры выборки.У несгибаемого есть печально известный тест сумм и другие слабые тесты. Недавно было обнаружено, что у твердолобых есть погрешности теста Колмогорова-Смирнова (~ 8 выборок ТБ). И это ограничено ~ 250 ГБ данных. ent полностью отсутствует несколько значений p. FIPS 140 довольно слабый. Тест U01 должен выполняться с параметрами, которые можно настроить (почему?). PractRand ничем не отличается, особенно если учесть, что над ним работает ограниченное количество разработчиков.

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


Примечания:

Для тестирования тестов PractRand просто сгенерируйте 100 ГБ из /dev/urandom, скопируйте их и объедините, чтобы сформировать пролонгацию. Посмотрите, что произойдет для вас.

Я только что закрепил объединенный файл размером 2 x 10 ГБ из /dev/urandom, и он прошел с двумя WEAK: -

   sts_serial| 6| 100000| 100|0,99995833| СЛАБЫЙ
  несгибаемая_дна| 0| 2097152| 100|0,99637872| СЛАБЫЙ

Такова жизнь.

Tom avatar
флаг tf
Tom
Таким образом, можно обмануть этот вид инструмента тестирования. Я подожду, если генератор не пройдет тесты после 2^40 байт. Это означало бы, что вся последовательность была зациклена 4 раза. В любом случае это выглядит так, что его можно зацикливать много раз, пока вся последовательность имеет идеальные статистические свойства, она может зацикливаться несколько раз, прежде чем будут обнаружены статистические отклонения.
Paul Uszak avatar
флаг cn
@ Том Да, похоже. Но это, пожалуй, не удивительно. Окно сканирования в этих тестах просто недостаточно велико для таких массивных выборок данных, как у вас. Также учтите, что `dieharder` перематывает файлы данных, если они меньше ~250 ГБ. Мой пример выше (2 x 10 ГБ) был перемотан 11 раз, но прошел. Итак, это окно сканирования
Tom avatar
флаг tf
Tom
Да, я забыл о том, что перематывает - это правда. Также отметил прохождение тестов с повторениями в dieharder. Так что в PractRand может быть то же самое. Я протестирую генератор с меньшим состоянием, чтобы оценить, когда он может выйти из строя.
Tom avatar
флаг tf
Tom
После тестирования 8-битного генератора с периодом $2^{20}$ он не прошел в PractRand после того, как $2^{24}$ протестировал 8-битные числа.Таким образом, поток несколько раз зацикливался, прежде чем были обнаружены проблемы. То же самое можно ожидать и от тестируемого мной 16-битного генератора. Я думал, что это программное обеспечение имеет встроенные детекторы петель, но это не так.

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

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