Как (если вообще) сделать генератор предсказуемых случайных чисел более безопасным после того, как SHA-1 выдал его выходные данные?

В этой статье говорится, что

Несмотря на то, что Mersenne Twister является чрезвычайно хорошим генератором псевдослучайных чисел, он сам по себе не является криптографически безопасным по очень простой причине. Можно определить все будущие состояния генератора по состоянию, которое генератор имеет в любой момент времени, и для обеспечения этого состояния достаточно либо 624 32-битных выходных данных, либо 19 937 однобитовых выходов. Использование криптографически защищенной хеш-функции, такой как SHA-1, на выходе Mersenne Twister было рекомендовано как один из способов получения потока ключей, полезных в криптографии.

Но нет никаких ссылок на то, почему переваривание вывода может сделать это более безопасно. И, честно говоря, я не понимаю, почему так должно быть. Мерсенн Твистер имеет период 2 ^ 19937-1, но я думаю, что мои рассуждения также применимы к любому периодическому ГПСЧ, например. Также линейные конгруэнтные генераторы. Из-за свойств защищенной односторонней функции h можно рассматривать h как инъективную функцию (в противном случае мы могли бы вызвать коллизии), таким образом просто отображая значения из ее домена в ее диапазон взаимно однозначным образом.

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

Я предполагаю, что это связано с тем же принципом, который применяется в шифровании на основе пароля ( PKCS # 5 ) - поскольку домен паролей не обеспечивает достаточной энтропии, простое хеширование паролей не добавляет никакой дополнительной энтропии - вот почему вам нужно солить пароли перед их хешированием. Я думаю, что здесь применяется точно такой же принцип.

Один простой пример, который окончательно убедил меня: предположим, у вас очень плохой ГПСЧ, который всегда будет давать «случайное число» 1. Тогда даже если SHA-1 будет идеальным односторонняя функция, применение SHA-1 к выводу всегда будет давать одно и то же значение, что делает вывод не менее предсказуемым, чем раньше.

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

9
задан emboss 8 July 2011 в 00:55
поделиться