Intereting Posts

Как загружается mt_rand PHP?

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

Так насколько это плохо? Какие источники случайности используют mt_rand для посева? Существуют ли другие проблемы безопасности с mt_rand для криптографических приложений?

В PHP 5.4, если mt_rand автоматически высевается при первом использовании ( источник PHP ). Начальное значение является функцией текущей временной метки, ПИД-процесса процесса PHP и значения, созданного внутренним LCG-модулем PHP. Я не проверял источник для предыдущих версий PHP, но в документации подразумевается, что этот алгоритм сеяния использовался начиная с PHP 5.2.1.

Алгоритмом RNG за mt_rand является Mersenne Twister . На самом деле не имеет смысла говорить о том, «как это плохо», потому что это явно документировано (а не на странице документов PHP, к сожалению), что оно совершенно непригодно для криптографических приложений . Если вы хотите случайную криптопрочность, используйте задокументированный генератор криптопрочности.

Обновление: вы также можете просмотреть этот вопрос с crypto.SE.