Опишите устройство генератора случайных чисел Mersenne Twister в стандартном модуле random. Почему его нельзя использовать для генерации токенов сессий или паролей и как устроен модуль secrets на уровне системных вызовов ОС, например getrandom?

Mersenne Twister — детерминированный PRNG с большим периодом, но предсказуемым состоянием. Для секретов используют secrets, который получает криптографически стойкую случайность от ОС.

Короткий ответ

Что ответить на собеседовании

Mersenne Twister — детерминированный PRNG с большим периодом, но предсказуемым состоянием. Для секретов используют secrets, который получает криптографически стойкую случайность от ОС.

Подробный разбор

Ответ с пояснениями

Mersenne Twister — детерминированный PRNG с большим периодом, но предсказуемым состоянием. Для секретов используют secrets, который получает криптографически стойкую случайность от ОС.

MT19937 преобразует внутреннее состояние и применяет tempering к выходу; достаточное число наблюдений позволяет восстановить состояние, поэтому длинный период не обеспечивает секретность. secrets опирается на SystemRandom и системный источник случайности; в Linux Python может использовать getrandom. Для токена задайте явное число байтов, например secrets.token_urlsafe(32), и не заменяйте его seed временем.

Источник: docs.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее