Score:2

เกิดอะไรขึ้นกับ Middle Square PRNG

ธง tf
Tom

ตามบทความ:

https://www.pcg-random.org/posts/too-big-to-fail.html

เมื่อ N ของ Middle Square คือ $2^{128}$ เราสามารถคาดหวังที่จะผลิต $2^{64.3}$ ตัวเลขก่อนที่เราจะเริ่มเห็นการทำซ้ำในตัวสร้าง เพียงพอสำหรับข้อมูลสุ่ม 320 exabytes ซึ่งมากเกินกว่าที่การทดสอบ PractRand ใดๆ จะใช้

นี่เป็นขนาดของเส้นทางที่เพียงพอในการไปถึงวัฏจักรและวัฏจักร มันผ่านการทดสอบแบบสุ่มและอาจจะค่อนข้างเร็ว มีบางอย่างผิดปกติกับ Middle Square ที่ใหญ่พอหรือไม่? โดยเฉพาะอย่างยิ่งหากเราจะไม่บ่นเกี่ยวกับความเร็วและข้อกำหนดของคณิตศาสตร์ 256 บิต

Mellisa O'Neil เขียนว่าหากตัวสร้างเป็นแผนที่แบบสุ่ม จะมีความเสี่ยงที่จะเกิดสถานะไม่ดีและวงจรสั้น แต่ความน่าจะเป็นในกรณีนี้คืออะไร? ดูเหมือนจะเล็กมาก ยังไงก็พิสูจน์ไม่ได้

fgrieu avatar
ng flag
คุณภาพของ PRNG สี่เหลี่ยมตรงกลางที่มีสถานะ $n$ บิตจะขึ้นอยู่กับว่าเอาต์พุตถูกกำหนดให้เป็นฟังก์ชันของสถานะนั้นอย่างไร และขึ้นอยู่กับระดับที่น้อยกว่าว่ามันเริ่มต้นจากคีย์ของมันอย่างไรคุณได้ตัดสินแล้วหรือยัง? อย่างอิสระ; $2^{64.3}$ ขนาดรอบที่คาดไว้ดูเหมือนว่าจะได้มาจาก _assuming_ ที่ฟังก์ชันวนซ้ำจะทำงานเหมือนฟังก์ชันสุ่มหลอกจากและไปยังชุดบิตสตริง 128 บิต จึงทำให้ข้อสรุปเกี่ยวกับคุณภาพของตารางตรงกลาง PRNG จากตัวเลขนั้นเป็นอาร์กิวเมนต์แบบวงกลมเป็นส่วนใหญ่ อาหารสำหรับความคิด: มีกี่สิ่งที่มาก่อนของศูนย์?
Tom avatar
tf flag
Tom
@fgrieu แต่การโต้แย้งแบบวงกลมนี้มีอยู่ในกรณีของเครื่องกำเนิด PRNG ทุกตัว แน่นอนว่าในเครื่องกำเนิดไฟฟ้าส่วนใหญ่ เราทราบช่วงเวลาดังกล่าว แต่เราไม่สามารถพิสูจน์ได้ว่าเครื่องกำเนิดไฟฟ้าจะทำงานได้ดีด้วยข้อมูลหลายเทราไบต์ เราต้องเชื่อในพฤติกรรมที่ดี และเราเชื่อว่า เช่นเดียวกัน หากเราพิสูจน์พฤติกรรมที่ดีของ Middle Square สำหรับข้อมูลเทราไบต์แรก ก็ไม่มีเหตุผลที่ดีที่จะต้องกลัวว่าจะล้มเหลวด้วยข้อมูลจำนวนมากและจะมีระยะเวลาสั้น เนื่องจากเราทำให้คุณภาพของตัวสร้างอื่นถูกต้องตามความเชื่อสำหรับข้อมูลจำนวนมาก ทำไมไม่ทำเพื่อความยาววงจรของ Middle Square
cn flag
@Tom คุณยืนยันหรือไม่ว่า "การโต้แย้งแบบวงกลม" ประเภทนี้ใช้กับ "ตัวสร้าง PRNG ทุกตัว" ตามความเข้าใจทางคณิตศาสตร์หรือตามความเห็นส่วนตัวของคุณเกี่ยวกับสิ่งที่อาจเกิดขึ้น แน่นอนว่ามีเครื่องกำเนิด PNRG ที่น่ากลัว * บางตัว * แต่ "บางตัว" ไม่เหมือนกับ "ทั้งหมด"
Score:6
ธง ru

ข้อความ "เราคาดว่าจะผลิต $2^{64.3}$ ตัวเลขก่อนที่เราจะเริ่มทำซ้ำ" จะเป็นจริงก็ต่อเมื่อเราเชื่อว่า Middle Square แบบ 128 บิตทำงานเหมือนการแมปแบบสุ่มบน $\{0,1\}^{128}$. อย่างไรก็ตาม เราสามารถแสดงได้ว่ามีคุณสมบัติที่ไม่น่าเป็นไปได้สูงสำหรับการแมปแบบสุ่ม

จำได้ว่า Middle Square 128 บิตรักษาสถานะ 128 บิต $S_t$. การอัปเดตทำได้อย่างมีประสิทธิภาพโดยการยกกำลังสอง $S_t$และรับบิต 64-191 เป็นของใหม่ $S_{t+1}$ เช่น. $$S_{t+1}=(S_t^2>>64)\%2^{128}.$$

รัฐ $S_t=0$ แสดงถึงจุดคงที่ แม้ว่าการแมปแบบสุ่มมีจุดคงที่ด้วยความน่าจะเป็นคร่าวๆ $(1-1/ครั้ง)$นี่เป็นเรื่องผิดปกติเนื่องจากมีภาพพรีอิมเมจจำนวนมาก หมายเลขใดก็ได้ $S<2^{32}$ จะจับคู่กับ 0 เช่นเดียวกับจำนวนใดๆ $S$ หารด้วย $2^{96}$. ภาพรวมเหล่านี้เพียงอย่างเดียว (อาจมีอื่น ๆ อีก) ทั้งหมด $2^{33}$ เมื่อสำหรับแผนที่สุ่มขนาดใหญ่ เราคาดว่าจำนวนภาพล่วงหน้าจะกระจายปัวซอง(1) ยิ่งกว่านั้นหากเราพิจารณารุ่นก่อนหน้า จำนวนใดๆ $S<2^{64}$ จะจับคู่กับจำนวนที่น้อยกว่าและจำนวนที่น้อยกว่า $2^{63}$ จะถึง 0 ในเวลาน้อยกว่า 6 ขั้นตอน ในทำนองเดียวกันสำหรับจำนวนที่หารด้วย $2^{65}$. สิ่งนี้ให้อย่างน้อย $2^{64}$ สถานะก่อนหน้าเป็น 0 เมื่อแผนที่สุ่มคาดหวัง $2^{64}\sqrt{\pi/8}$ (โดยมีเวลารวมตัวกันไล่เลี่ยกัน). จำนวนสถานะก่อนหน้ายังคงเพิ่มขึ้นเมื่อเราพิจารณาถึงสถานะก่อนหน้าที่เป็นไปได้ของการรับประกันของเรา $2^{64}$ รัฐบรรพบุรุษหากแต่ละคนมี $2^{64}\sqrt{\pi/8}$ รุ่นก่อนเราอาจเห็นสัดส่วนบวกของพื้นที่ของเราเสื่อมลงเป็นสถานะ 0

นอกจากนี้ยังมีพื้นที่ย่อยที่สงวนไว้ของจำนวนที่หารด้วย $2^{64}$ (พื้นที่นี้มีขนาด $2^{63}$) ซึ่งเราอาจคาดหวังให้แสดงสถิติการแมปแบบสุ่มสำหรับพื้นที่ขนาดเล็กกว่า (เช่นความยาวรอบของ $2^{31.5}\sqrt{\pi/8}$). จากนั้นเราจะพิจารณาสิ่งก่อนหน้าสำหรับพื้นที่ย่อยนี้และสร้างความคาดหวังที่แตกต่างอย่างมากจากการแมปแบบสุ่มทั้งหมด

โครงสร้างทั้งหมดนี้ผิดปรกติอย่างมากของการทำแผนที่แบบสุ่ม และเราควรสรุปได้ว่าการทำแผนที่แบบสุ่มไม่ใช่แบบจำลองที่ดีในกรณีนี้

Tom avatar
tf flag
Tom
ตกลง ข้อสงสัยส่วนใหญ่ของฉันเกี่ยวกับ - ถ้าสิ่งนี้ใกล้เคียงกับการทำแผนที่แบบสุ่ม มีอะไรผิดปกติ ตอนนี้ฉันเข้าใจดีขึ้นแล้วว่าเรามีความเบี่ยงเบนจากการแมปแบบสุ่ม และแม้ว่ามันจะทำงานเหมือนการแมปแบบสุ่ม เราก็ยังมีอาร์กิวเมนต์แบบวงกลมอยู่ตรงนี้
fgrieu avatar
ng flag
เร็วที่สุดเท่าที่ [ENIAC](https://en.wikipedia.org/wiki/ENIAC) เป็นที่ทราบกันว่าคุณสมบัติของวิธีการกำลังสองตรงกลางของ Von Neumann ที่วิเคราะห์ในคำตอบนี้ทำให้เกิดวัฏจักรสั้นเมื่อทำซ้ำ TAOCP เล่มที่ 2 ของ Knuth ระบุว่า _"ลำดับมีแนวโน้มที่จะเข้าสู่ร่อง ซึ่งเป็นวงจรสั้นๆ ของการทำซ้ำองค์ประกอบ (â¦) การทดสอบที่กว้างขวางมากขึ้นดำเนินการโดย N. Metropolis ซึ่งส่วนใหญ่อยู่ในระบบเลขฐานสอง เขาแสดงให้เห็นว่าเมื่อ กำลังใช้ตัวเลข 20 บิต มี 13 รอบที่แตกต่างกันซึ่งลำดับสี่เหลี่ยมตรงกลางอาจเสื่อมลง รอบที่ยาวที่สุดมีความยาว 142"_
Score:4
ธง ng

การอ่านหน้าที่เชื่อมโยงในคำถาม: รับทราบว่าวิธีสี่เหลี่ยมจัตุรัสกลางพื้นฐานนำไปสู่วัฏจักรสั้น อธิบายว่าทำไม (เช่นเดียวกับสิ่งนี้ คำตอบอื่น ๆ) และเสนอรูปแบบ "จัตุรัสกลาง" แทน ซึ่งวนซ้ำ $x\mapsto g(x):=2^n-1-\left\floor x^2/2^{\left\floor n/2\right\rfloor}\right\rfloor\bmod 2^n$ แทน $x\mapsto f(x):=\left\floor x^2/2^{\left\floor n/2\right\rfloor}\right\rfloor\bmod 2^n$.

รูปแบบนี้จะลบจุดตายตัวที่เห็นได้ชัดออกไป และที่สำคัญกว่านั้นคือจุดที่มีคลาสขนาดใหญ่ที่เห็นได้ชัดซึ่งถูกผูกมัดให้ตกอยู่ในวัฏจักรสั้นๆ อย่างรวดเร็ว นี่คือการปรับปรุง อย่างไรก็ตาม:

  • หากเราส่งออกสถานะทั้งหมดของตัวสร้างในแต่ละขั้นตอน มันจะค่อนข้างมีประสิทธิภาพ (สำหรับการใช้งานที่มีความสามารถบนเครื่องที่มีตัวคูณที่รวดเร็ว) แต่สามารถคาดเดาได้เล็กน้อยจากเอาต์พุตที่ผ่านมา ดังนั้นจึงไม่ปลอดภัยในการเข้ารหัส ฉันพบว่าคำกล่าวอ้างของบทความนี้น่าเชื่อถือมากว่า (for $n=128$) Meddle Square ผ่านการทดสอบมาตรฐานทางสถิติทั้งหมด นี่เป็นภาพประกอบว่าการทดสอบทางสถิติมาตรฐานในเอาต์พุตของ PRNG นั้นไม่มีจุดหมายเมื่อพูดถึงการโต้แย้งว่าเป็น CSPRNG และอันที่จริง บทความนี้ดูเหมือนจะแนะนำ Meddle Square อย่างแม่นยำเพื่อแสดงให้เห็นว่าการมีสถานะขนาดใหญ่ที่ไม่มีจุดตายตัวที่ชัดเจนหรือวัฏจักรการดูดซับ และการผ่านการทดสอบนั้นไม่ใช่เกณฑ์ความปลอดภัยที่ถูกต้องสำหรับ CSPRNG
  • ถ้าเราส่งออกบิตเดียว สี่เหลี่ยมจัตุรัสกลางและการเปลี่ยนแปลงคือ $n$ มีประสิทธิภาพน้อยกว่าหลายเท่า และเรายังไม่มีข้อโต้แย้งที่ชัดเจนว่าเป็น CSPRNG ความจริงก็คือ เราสามารถประดิษฐ์ PRNG วนซ้ำฟังก์ชันที่เปลี่ยนสถานะขนาดใหญ่ได้อย่างง่ายดาย โดยส่งออกสถานะนั้นทีละบิตในแต่ละขั้นตอน ผ่านการทดสอบมาตรฐานทั้งหมด แต่ท้ายที่สุดก็รั่วไหลสถานะทั้งหมดและทำให้ไม่ปลอดภัยในการเข้ารหัส
  • เราสามารถหาจุดกึ่งกลางได้ เช่น สถานะ 256 บิต ซึ่งมีเอาต์พุต 64 บิตในแต่ละสเตจ ที่สามารถฟื้นประสิทธิภาพได้มาก แต่ถ้าไม่ได้ลอง ชาช่า; และฉันอยากจะบอกว่ามันยากกว่ามากที่จะได้รับสิทธิ์การใช้งานที่มีประสิทธิภาพ
  • เนื่องจากตัวสร้างใดๆ ที่อาศัยการวนซ้ำของฟังก์ชันหลอกเทียม จึงเป็นไปไม่ได้ที่จะกรอตัวสร้างไปข้างหน้าอย่างรวดเร็ว ซึ่งทำให้ไม่เหมาะกับแอปพลิเคชันจำนวนมาก (เช่น รหัสสตรีมสำหรับข้อมูลจำนวนมากที่สนับสนุนการเข้าถึงการอ่านแบบสุ่ม*).

สรุปแล้ว Middle Square PRNG และแม้แต่ Meddle Square ที่ปรับปรุงแล้วก็ยังผิดเพราะ:

  1. พวกเขาขาดข้อโต้แย้งด้านความปลอดภัยที่ดีไม่ว่าจะในรูปแบบใดก็ตาม ก็น่าจะเพียงพอแล้ว
  2. พวกเขาไม่ปลอดภัยเล็กน้อยเมื่อเราแสดงสถานะเต็มในแต่ละขั้นตอน
  3. เมื่อเราส่งออกสถานะของพวกมันน้อยลง พวกมันก็จะมีประสิทธิภาพน้อยลง
  4. ไม่มีการเข้าถึงโดยตรง* ไปยังสตรีมที่สร้างขึ้น ซึ่งเป็นคุณสมบัติที่มีประโยชน์ของ CSPRNG จำนวนมาก

* นั่นคือความสามารถในการคำนวณได้อย่างมีประสิทธิภาพ $j^\text{th}$ เอาต์พุตของเครื่องกำเนิดไฟฟ้าขนาดใหญ่ $เจ$ด้วยความพยายามเป็นหลักโดยไม่ขึ้นกับขนาด $เจ$ เป็น. สิ่งนี้มีประโยชน์เมื่อ $เจ$ เป็นดัชนีในภาพยนตร์ขนาดใหญ่ที่เข้ารหัสโดย XOR พร้อมเอาต์พุตของตัวสร้าง และเราต้องการเริ่มดูภาพยนตร์สามตอนสุดท้าย

Tom avatar
tf flag
Tom
การเข้าถึงโดยตรงไปยังสตรีมที่สร้างขึ้นคืออะไร?
fgrieu avatar
ng flag
@Tom: ดู * ในคำตอบที่อัปเดต

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา