シーケンスが指定されている場合、疑似乱数ジェネレータの初期値をどのように決定できますか?


10

乱数列が線形合同生成器によって生成されることを知っていたとします。あれは、

バツ+1=aバツ+cモッドメートル

期間全体(または少なくともその連続する大きなサブシーケンス)が与えられた場合このシーケンスを生成したパラメーターa、c、macメートルおよびバツ0をどのように再構築できますか?疑似乱数ジェネレータがわかっている場合に、初期パラメータを決定できる一般的な方法を探しています。


正確には何が知られていますか?連続したサブシーケンスからは、項目がシーケンスでインデックス付けされていない限り、シーケンスがx_0のどこから始まったかはわかりませんバツ0メートルがわかっていれば、acはすぐに見つかります。
hardmath

回答:


10

論文「線形合同生成器をクラックする方法」、Haldir(「リバースエンジニアリングチーム」、2004年12月):

このホワイトペーパーでは、PRNG出力の6つ以上の連続した数値で、係数を含むLCGのすべての値を解決する方法を紹介します。

このペーパーには、ビクターショープのNTLを使用して拡張精度演算を行うC言語で記述された「概念実証」ソースコードが含まれています。


それは素晴らしい論文でした!:)線形合同法だけでなく、他の乱数ジェネレータに適用できるより一般的な方法を知っていますか?
ポール

@Paul:もちろん、十分な出力データからパラメータについて簡単に「解決」されるRNGを見つけることができますが(逆問題)、RNGが優れている(出力の外観がランダムである)ほど、その逆が難しくなるようです。問題になります。LCGケースの解決策は、よく知られている特定の次元クラスタリング効果に関連しており、生成された値のペアを不均一に分散させます。詳細については、線形的に生成されたシーケンスを変換することにより暗号学的に強力なジェネレーター
hardmath
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.