Почему нельзя генерировать пароли через random в Python: разбор на практике

Wait 5 sec.

Вы уверены, что ваш “случайный” пароль действительно случайный?Я тоже так думал — пока не полез разбираться, как Python на самом деле генерирует случайные значения. Оказалось, что привычный random — это не про безопасность вообще. Это генератор, который только выглядит случайным, но при определённых условиях может быть воспроизведён. Что даст нам возможность предсказать все будущие пароли и прошлые.В статье я последовательно разбираю: • почему классическая “энтропия пароля” часто вводит в заблуждение; • как устроен Mersenne Twister и в чём его фундаментальная проблема; • почему даже хороший seed (через os.urandom) не делает random безопасным; • и что на практике можно (и нельзя) восстановить, имея время генерации, код и несколько паролей. Я попытался воспроизвести реальную атаку: восстановить seed по временной метке и набору сгенерированных паролей. Спойлер — всё оказалось сложнее, чем кажется.Отдельно показываю, где проходит граница между «кажется надёжным» и «действительно криптостойким», и почему secrets — это не просто «рекомендованный модуль», а принципиально другой класс генерации. Читать далее