10 乱数列が線形合同生成器によって生成されることを知っていたとします。あれは、 バツn + 1= (Xん+ c )mod mバツん+1=(aバツん+c)モッドメートル 期間全体(または少なくともその連続する大きなサブシーケンス)が与えられた場合、このシーケンスを生成したパラメーターa、c、ma 、c 、ma、c、メートルおよびバツ0バツ0をどのように再構築できますか?疑似乱数ジェネレータがわかっている場合に、初期パラメータを決定できる一般的な方法を探しています。 random-number-generation inverse-problem — ポール ソース 正確には何が知られていますか?連続したサブシーケンスからは、項目がシーケンスでインデックス付けされていない限り、シーケンスがx_0のどこから始まったかはわかりませんバツ0バツ0。メートルメートルがわかっていれば、aaとccはすぐに見つかります。 — hardmath
10 論文「線形合同生成器をクラックする方法」、Haldir(「リバースエンジニアリングチーム」、2004年12月): このホワイトペーパーでは、PRNG出力の6つ以上の連続した数値で、係数を含むLCGのすべての値を解決する方法を紹介します。 このペーパーには、ビクターショープのNTLを使用して拡張精度演算を行うC言語で記述された「概念実証」ソースコードが含まれています。 — Hardmath ソース それは素晴らしい論文でした!:)線形合同法だけでなく、他の乱数ジェネレータに適用できるより一般的な方法を知っていますか? — ポール @Paul:もちろん、十分な出力データからパラメータについて簡単に「解決」されるRNGを見つけることができますが(逆問題)、RNGが優れている(出力の外観がランダムである)ほど、その逆が難しくなるようです。問題になります。LCGケースの解決策は、よく知られている特定の次元クラスタリング効果に関連しており、生成された値のペアを不均一に分散させます。詳細については、線形的に生成されたシーケンスを変換することにより暗号学的に強力なジェネレーター — hardmath