Мои мысли слишком длинны для комментариев, поэтому я завершу их как ответ...
Есть некоторые серьезные проблемы с двумя другими ответами, поскольку некоторые из нас неверно истолковали, что такое тест случайности. По пунктам: -
1.
«не доверяйте любым криптоалгоритмам, разработанным NIST». В FIPS нет алгоритмов, созданных NIST. Конечно, никакой сложности Dual_EC_DRBG. Прогоны и покерные тесты не являются проприетарными алгоритмами Министерства торговли США (NIST). Это математические характеристики равномерно случайного распределения. Если я утверждаю, что ожидаемое количество единиц должно быть ~ 50%, делает ли это меня подрывником? Также не расширяется среднее значение 0,5 с $n$ Стандартное отклонение. $\mathcal{N}(\mu, \sigma^2)$ является стандартизированной формой для этого дистрибутива, и я не ожидаю ничего менее неполного. Проверка повторяющихся выходных блоков (тест непрерывного генератора случайных чисел) — это не подрывная деятельность, а здравый смысл.
2.
Могу ли я предложить этот тест FIPS в качестве доказательства: -
$cat /dev/urandom | рангтест
тест 5
Copyright (c) 2004 Энрике де Мораес Хольшух
Это бесплатное программное обеспечение; см. источник условий копирования. НЕТ гарантии; даже не для КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.
rngtest: запуск тестов FIPS...
rngtest: биты, полученные с ввода: 8310580032
rngtest: FIPS 140-2 успешно: 415198
rngtest: сбои FIPS 140-2: 331
rngtest: FIPS 140-2 (2001-10-10) Монобит: 41
rngtest: FIPS 140-2 (2001-10-10) Покер: 53
rngtest: FIPS 140-2 (2001-10-10) Прогоны: 123
rngtest: FIPS 140-2 (2001-10-10) Длительный период: 115
rngtest: FIPS 140-2 (2001-10-10) Непрерывная работа: 0
rngtest: скорость входного канала: (min=10,703; avg=1976,720; max=19073,486) Мбит/с
rngtest: Скорость тестов FIPS: (минимум = 75,092; средняя = 199,723; максимальная = 209,599) Мбит/с
rngtest: Время выполнения программы: 43724402 микросекунды
Частота отказов составляет p = 0,0008. Это очень сравнимо с порогом p = 0,001 в наборе тестов SP800 STS, а также с твердолобым:
ВНИМАНИЕ: оценка(и) для рангов может быть фактически полностью
неверным или вводящим в заблуждение. В частности, должны встречаться «слабые» значения p.
один тест из ста, а значения p «Неудачные» должны встречаться в одном тесте из
тысяча -- вот что ЗНАЧИТ p. Используйте их на свой страх и риск! Имейте в виду!
Так что вроде не спорно.
3.
«Не указано, что эти тесты должны выполняться на безусловном источнике энтропии».. Конечно нет. Правильно. Ни у кого нет статистических характеристик для безусловного распределения источников энтропии. Они бывают всех форм и мест. Некоторые из них не имеют даже математических названий (двойная выборка логнормального, ванна МОД $х$ и т.д.) Мы можем запускать только стандартизированные статистические тесты на кондиционированном конечном выводе.
4.
«Невозможно обнаружить грамотно замаскированный генератор только по его выходу». Опять же, конечно. Это не намерение, например. Стартовое тестирование FIPS. Для этого вам нужны программисты и криптографы. FIPS просто автоматизирует тестирование на случайность и устанавливает рекомендации для базового программирования безопасности, такие как отсутствие строковых литералов для управления и перемещаемый код. Все очень нормально.
Поэтому FIPS 140 не так уж и спорен. Сказать так все равно что сказать, что NIST заблокировал нормальное распределение или что твердолобый бесполезен. FIPS просто не хорош в некоторых вещах. А тестирование 20 000-битных блоков аккуратно вписывается в нижнюю часть шкалы тестирования случайности, чуть ниже энт
(500 000 бит).