ฉันจะกำหนดค่าเริ่มต้นของตัวสร้างตัวเลขสุ่มหลอกได้หากมีการให้ลำดับหรือไม่


10

สมมติว่าฉันรู้ว่าหมายเลขลำดับสุ่มถูกสร้างขึ้นโดยเครื่องกำเนิดเชิงเส้นเชิงเส้นตรง นั่นคือ,

xn+1=(aXn+c)modm

หากฉันได้รับตลอดช่วงเวลา (หรืออย่างน้อยก็มีองค์ประกอบที่ต่อเนื่องกันจำนวนมาก) ฉันจะสร้างพารามิเตอร์a,c,mและx0ที่สร้างลำดับนี้ได้อย่างไร ฉันกำลังมองหาวิธีการทั่วไปที่จะสามารถกำหนดพารามิเตอร์เริ่มต้นได้หากรู้จักตัวสร้างตัวเลขแบบหลอกเทียม


สิ่งที่เป็นที่รู้จักกันอย่างแม่นยำ? จาก subseqence ที่ต่อเนื่องกันคุณไม่สามารถบอกได้ว่าลำดับนั้นเริ่มต้นที่ใดx0ยกเว้นว่ารายการจะถูกจัดทำดัชนีตามลำดับ หากmเป็นที่รู้จักจะมีการค้นพบaและc
hardmath

คำตอบ:


11

ดูบทความวิธีการถอดรหัสเครื่องกำเนิดเชิงเส้นเชิงเส้นฮัลเดียร์ ("ทีมวิศวกรรมย้อนกลับ", ธ.ค. 2004):

ในบทความนี้ฉันจะนำเสนอวิธีการที่จะแก้ปัญหาค่าทั้งหมดของ LCG รวมถึงโมดูลัสที่มีเอาต์พุต PRNG หกหรือมากกว่าติดต่อกัน

กระดาษประกอบด้วยรหัสที่มา "พิสูจน์แนวคิด" ที่เขียนใน C โดยใช้ NTL ของ Victor Shoup สำหรับการคำนวณทางคณิตศาสตร์ที่มีความแม่นยำสูง


นั่นเป็นกระดาษที่ยอดเยี่ยม! :) คุณรู้วิธีทั่วไปที่สามารถนำไปใช้กับเครื่องกำเนิดเลขสุ่มอื่น ๆ ได้หรือไม่?
พอล

@ พอล: แน่นอนหนึ่งสามารถหา RNGs ที่ "แก้ไข" ได้ง่ายสำหรับพารามิเตอร์ของพวกเขาจากข้อมูลที่เพียงพอ (ปัญหาผกผัน) แต่มันดูเหมือนว่า RNG ที่ดีกว่า (สุ่มลักษณะที่ปรากฏของเอาท์พุท) ยิ่งยากขึ้น ปัญหาจะเป็น วิธีการแก้ปัญหาของกรณี LCG เกี่ยวข้องกับผลกระทบของการจัดกลุ่มมิติที่รู้จักกันดีทำให้คู่ของค่าที่สร้างขึ้นไม่กระจายแบบไม่สม่ำเสมอ สำหรับข้อมูลเพิ่มเติมดูการออกแบบของเครื่องกำเนิดที่แข็งแกร่ง Cryptographically โดยการแปลงลำดับที่สร้าง
เชิงเส้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.