Hit*_*ten 6 python security random mersenne-twister
我在堆栈溢出上遇到了这个问题: 如何从 Python 中的列表中随机选择项目 ,他们提到它不适合加密/安全目的。
所以,我在官方文档中找到了这个页面:random - Generate pseudorandom numbers
它提到他们使用梅森扭曲器来生成随机数。
Mersenne twiner 不应该是一个相当不错的随机生成器(至少这是我在课堂上被告知的)?那么为什么不能将它用于安全目的呢?
梅森扭曲器在模仿随机性的统计特性(*)方面做得不错,但它是一种确定性算法。如果两个副本设置为相同的状态,它们将在同步中产生相同的结果。这意味着对于加密/安全应用程序,如果攻击者可以确定您的初始状态,那么您的安全性就会受到影响。我读到,对于 MT,这可以由知识渊博的人在六百次连续观察后完成。
底线 - 将其用于蒙特卡罗采样或随机模型,但不适用于加密。
(*) - 事实上,Pierre L'Ecuyer被认为是伪随机数生成领域最重要的研究人员之一,但他并不喜欢 MT,即使是蒙特卡罗的使用也是如此。他表明,虽然整个周期是均匀分布的,但内部状态中的零往往是持久的,并且生成器可能会在非均匀子序列中的相当大的子周期内“卡住”。他与 Mersenne Twister 的创建者合作解决了WELL 生成器中的这些问题。