Я столкнулся с этим вопросом при переполнении стека: Как случайным образом выбрать элемент из списка в Python и они упомянули, что это не подходит для целей криптографии/безопасности.
Итак, я нашел эту страницу в официальной документации: random - генерировать псевдослучайные числа
В нем упоминается, что они используют твистер Мерсенна для генерации случайных чисел.
Разве твистер Мерсенна не должен быть довольно приличным генератором случайных чисел (по крайней мере, так мне сказали в классе)? Так почему же вы не можете использовать его в целях безопасности?
Но разве начальное число для случайного генератора не генерируется случайным образом с использованием библиотеки ОС (если она существует) или системных часов? Даже если бы это было не так, как с помощью библиотеки безопасности (которую они предлагают) преодолеть это?
Целью модуля random является предоставление пригодных для использования случайных чисел для общих целей. Но если вы начнете использовать эти случайные числа для шифрования, возможно, найдется кто-то, готовый приложить усилия для взлома вашего шифрования, а это то, чему random не предназначен. В этом случае используйте вместо этого модуль secrets. См. PEP 506, чтобы узнать, почему вы должны это сделать.
Это не моя точка зрения, вы можете получить начальное значение (самоанализ), и как только вы его получите, вы сможете предсказать все будущие числа. Что очень плохо с точки зрения безопасности.
Использование «довольно приличного генератора случайных чисел» в целях безопасности действительно не подходит. Очень легко взламывается решительными злоумышленниками. Хорошая безопасность — это очень, очень сложно, поэтому я согласен с @BenoîtPilatte, не пытайтесь справиться с этим самостоятельно.
Хорошо, это имеет смысл! Большое спасибо за ваши комментарии! Кстати, я не пытался написать свою собственную безопасность, я просто был сбит с толку...






Твистер Мерсенна неплохо имитирует статистические свойства (*) случайности, но это детерминированный алгоритм. Если две копии находятся в одном и том же состоянии, они будут давать одинаковые результаты при синхронизации. Это означает, что для криптографических/безопасных приложений ваша безопасность будет нарушена, если злоумышленник сможет определить ваше начальное состояние. Я читал, что для МТ это могут сделать знающие люди после шестисот с лишним последовательных наблюдений.
Итог — используйте его для выборки Монте-Карло или стохастических моделей, но не для криптографии.
(*) - На самом деле, Пьер Л'Экюйе, который считается одним из ведущих исследователей в области генерации псевдослучайных чисел, не является поклонником МП даже для использования Монте-Карло. Он показал, что, хотя полный цикл распределен равномерно, нули во внутреннем состоянии имеют тенденцию сохраняться, и генератор может «застрять» на значительные подпериоды в неравномерных подпоследовательностях. Он сотрудничал с создателем Mersenne Twister, чтобы исправить эти проблемы в НУ генератор.
Вы не должны заниматься безопасностью самостоятельно (особенно на языке программирования, который вы можете проанализировать, чтобы найти семя: o)