시퀀스가 주어진 경우 의사 난수 생성기의 초기 값을 어떻게 확인할 수 있습니까?


10

선형 합동 생성기에 의해 난수 시퀀스가 ​​생성되었다는 것을 알고 있다고 가정합니다. 그건,

xn+1=(aXn+c)modm

전체 기간 (또는 적어도 연속 된 하위 시퀀스)이 주어지면 이 시퀀스를 생성 한 매개 변수 a,c,mx0 을 어떻게 재구성 할 수 있습니까? 의사 난수 생성기가 알려진 경우 초기 매개 변수를 결정할 수있는 일반적인 방법을 찾고 있습니다.


정확히 알려진 것은 무엇입니까? 연속 된 서브 시퀀스 에서 항목이 순서대로 색인화되지 않으면 순서가 x_0으로 시작된 위치를 알 수 없습니다 x0. m 이 알려 지면 ac 가 쉽게 발견됩니다.
hardmath

답변:


10

선형 합동 발생기 , Haldir ( "Reverse Engineering Team", 2004 년 12 월)을 분해 하는 방법을 참조하십시오 .

이 논문에서는 6 개 이상의 연속적인 PRNG 출력을 가진 계수를 포함하여 LCG의 모든 값을 해결하는 방법을 제시 할 것이다.

이 논문에는 확장 된 정밀 산술을 위해 Victor Shoup의 NTL을 사용하여 C로 작성된 "개념 증명"소스 코드가 포함되어 있습니다.


좋은 종이였습니다! :) 선형 합동 성뿐만 아니라 다른 난수 생성기에 적용 할 수있는보다 일반적인 방법을 알고 있습니까?
Paul

@Paul : 물론 충분한 출력 데이터 (역 문제)에서 매개 변수에 대해 쉽게 "해결"된 RNG를 찾을 수 있지만 RNG가 더 좋을수록 (출력의 모양이 더 무작위 일수록) 그 반대는 더 어려워 보입니다. 문제가 될 것입니다. LCG 사례의 솔루션은 잘 알려진 특정 차원 군집 효과와 관련되어 생성 된 값 쌍이 불균일하게 분산됩니다. 자세한 내용은 선형으로 생성 된 시퀀스를 변환하여 암호화 적으로 강력한 생성기 설계
hardmath
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.