如果给出了序列,如何确定伪随机数生成器的初始值?


10

假设我知道线性同余生成器生成了一个随机数序列。那是,

xn+1=(aXn+c)modm

如果给了我整个周期(或至少是一个较大的连续子序列),我该如何重建产生该序列的参数和?我正在寻找一种通用方法,如果已知伪随机数生成器,该方法将能够确定初始参数。a,c,mx0


确切知道什么?从连续的子序列中,您无法确定序列从开始的位置,除非按顺序对项目进行索引。如果是已知的,则很容易发现和。x0mac
hardmath 2012年

Answers:


10

参见论文《如何破解线性同余生成器》,Haldir(“逆向工程团队”,2004年12月):

在本文中,我将介绍一种方法,该方法将解决具有六个或更多连续数量PRNG输出的LCG的所有值,包括模量。

本文包括用Victor Shoup的NTL进行扩展的精确算术,用C编写的“概念证明”源代码。


那是一篇很棒的论文!:)您知道一种更通用的方法可以应用于其他随机数生成器,而不仅是线性同余的吗?
保罗

@Paul:当然可以从足够的输出数据中找到可以轻松“解析”其参数的RNG(逆问题),但似乎RNG越好(输出的外观越随机),逆就越困难问题将会是。LCG案例的解决方案与众所周知的某些维数聚类效果有关,这会使生成的值对不均匀地分布。有关更多信息,请参见通过变换线性生成的序列来设计具有加密功能的强生成器
hardmath 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.