ฉันกำลังใช้รีจิสเตอร์กะข้อเสนอแนะเชิงเส้น (LFSR) ในไฟล์ สแครมเบลอร์ การกำหนดค่าเป็นตัวแยกการสุ่มสำหรับแหล่งสุ่มที่อ่อนแอ แหล่งที่มานี้เป็นแบบกึ่งสุ่ม (aka. ที่มา Santha-Vazirani): บิตคือ สัมพันธ์กันและลำเอียง (ด้วยค่าเอนโทรปีขั้นต่ำ ~0.5 ต่อบิต) นี่คือตัวอย่างของ LFSR ในการกำหนดค่า scrambler (อันนี้เป็น 12 บิตในขณะที่ฉันใช้รีจิสเตอร์ 32 บิต) ด้วยดาวน์แซมเปลอร์:
แหล่งที่มาของเอนโทรปีแบบสุ่มอย่างอ่อนจะป้อน LFSR scrambler โดยตรง และเอาต์พุตจะถูกลดตัวอย่างลงอย่างมาก (ใช้บิตเอาต์พุตหนึ่งบิตสำหรับทุกๆ 1,000 บิตที่อ่อนแอ) วิธีนี้ได้รับ เสนอที่นี่. อย่างไรก็ตาม ฉันไม่พบตัวอย่างที่ใช้ LFSR scrambler เป็นตัวแยกการสุ่ม ดังนั้นฉันมีคำถามดังต่อไปนี้:
- การใช้ scrambler สำหรับการสุ่มแยกข้อมูลกึ่งสุ่มเป็นการใช้งานที่ถูกต้องหรือไม่? เปรียบเทียบกับเครื่องสกัดอื่นๆ อย่างไร? ตัวอย่างเช่น เครื่องแยกข้อมูล von Neumann เหมาะสำหรับอินพุตที่มีอคติ เป็นอิสระ (ไม่สัมพันธ์กัน) และเป็นเวลาเชิงเส้นเท่านั้น
- จะคำนวณได้อย่างไรว่าต้องการการสุ่มตัวอย่าง / การลดลงเท่าใดที่เอาต์พุตของ LSFR เพื่อให้เอาต์พุตนั้นเหมาะสมสำหรับการใช้การเข้ารหัส (โดยการประมาณค่าอินพุต min-entropy)
- การลงทะเบียนทั้งหมดในคราวเดียวมีความหมายอย่างไร (เช่น เอาต์พุต 32 บิตทุกๆ 32,000 อินพุตที่อ่อนแอ) แทนที่จะเป็น 1 บิตทุกๆ 1,000 อินพุต
บริบท: LFSR ใช้ใน TRNG ต่อไปนี้: