ไม่สามารถ แม้ว่าไม่รู้ว่า "Enocoro-128_v2 Pseudo-Random Number Generator" ทำงานอย่างไร เนื่องจาก PRNG จะมี $H_{ออก} < H_{ใน}$
ดูเหมือนว่าคุณมีแหล่งเอนโทรปีที่น่าจะสร้างตัวอย่างสุ่มของ Kolmogorov สิ่งเหล่านี้มีการแจกแจงแบบไม่สม่ำเสมอซึ่งคุณจะสามารถดูได้จากฟังก์ชันมวล/ฮิสโตแกรมของความน่าจะเป็น และมันล้มเหลว SP 800-22 และอาจสัมพันธ์กันโดยอัตโนมัติ นั่นหมายความว่า $H_{\infty} \ll 1$ บิต/บิต เรียกใช้ 800 90b ของ NIST ea_iid
ทดสอบเพื่อยืนยัน
การละเลง PRNG ที่ด้านบนเพียงปกปิดเอนโทรปีของ Kolmogorov พื้นฐานด้วยเอนโทรปีหลอกที่คาดเดาได้ ($H_{\infty} =0 $ จากมุมมองของ TRNG) บางคนมีลักษณะการก่อสร้างเช่นก ฮาร์ดแวร์ PRNG. อย่างไรก็ตาม สำหรับ TRNG ใด ๆ ที่จะคู่ควรกับชื่อนั้น จะต้องเป็นไปตามลักษณะที่สำคัญที่สุดของการออกแบบ TRNG กล่าวคือ เอนโทรปีที่สร้าง > ความยาวเอาต์พุต เป็นทางการมากขึ้น: $H_{ออก} \ngtr H_{ใน}$.
ด้วยการเหลวไหลของ PRNG เล็กน้อย แหล่งเอนโทรปีใดๆ สามารถสร้างเอนโทรปีเอาต์พุตในอัตราที่แทบไม่สิ้นสุด ตัวอย่างเช่น Intel on-chip TRNG (RDRAND) ถูกกล่าวหาว่าผลิตได้เกือบ 2 Gb/s อย่างชัดเจน ขยะ & บัลเดอร์แดช. ชิปนี้มีอย่างชัดเจน $H_{ออก} \gg H_{ใน}$.
ดังนั้นการสกัดภายหลังจึงเป็นแหล่งสุ่มที่อ่อนแอ ดูเหมือนว่า ที่จะเกิดขึ้นด้วยความสุ่มที่ดีกว่ามากและมีความลำเอียงจากความสมบูรณ์แบบที่ล้อมรอบด้วย Hash Lemma ที่เหลือ:-
$$ \epsilon = 2^{-(sn-k)/2} $$
ที่เรามี $n$ = บิตอินพุตที่ $s$ บิต/บิตของเอนโทรปีดิบจากแหล่งที่มา $k$ คือจำนวนบิตเอาต์พุตจากตัวแยก (และ $<n$). $\epsilon$ เป็นความลำเอียงที่ห่างไกลจากเครื่องแบบที่สมบูรณ์แบบ $k$ สตริงความยาวบิต เช่น $H(k) = 1 - \epsilon$ บิต/บิต NIST ยอมรับว่า $\epsilon < 2^{-64}$ สำหรับแอปพลิเคชันเข้ารหัส
อย่างไรก็ตาม, $\epsilon$ สามารถทำให้เล็กลงได้อย่างง่ายดาย ฉันตั้งเป้าไว้ $2^{-128}$. สำหรับเครื่องแยกกาก คุณสามารถใช้ SHA-512 ($k=512$) เพื่อลดการสูญเสียเอนโทรปี คุณสามารถดู $n/k$ อัตราส่วนและประสิทธิภาพสัมพัทธ์ในแผนภูมิเหล่านี้:-
โดยสรุปแล้ว คุณไม่จำเป็นต้อง/ไม่ควรใช้ PRNG บนยอดแหล่งเอนโทรปีของคุณ หากคุณกำลังสร้าง TRNG ให้ทำ TRNG ที่เหมาะสม ความเร็วไม่ใช่สิ่งสำคัญทั้งหมด
ท้ายที่สุดคุณจะทำอะไรกับของ Kolmogorov ทั้งหมดได้บ้าง