ความคิดของฉันยาวเกินไปสำหรับการแสดงความคิดเห็นดังนั้นฉันจะสรุปเป็นคำตอบ ...
มีบางประเด็นที่ร้ายแรงกับคำตอบอีกสองข้อ ถึงขนาดที่พวกเราบางคนตีความหมายผิดว่าการทดสอบแบบสุ่มคืออะไร ดังหัวข้อย่อย:-
1.
"ไม่ไว้วางใจอัลกอริทึมการเข้ารหัสใด ๆ ที่มาจาก NIST". ไม่มีอัลกอริทึมที่สร้างโดย NIST ใน FIPS แน่นอนว่าไม่มีความซับซ้อนของ Dual_EC_DRBG การทดสอบรันและโป๊กเกอร์ไม่ใช่อัลกอริทึมที่เป็นกรรมสิทธิ์ของกระทรวงพาณิชย์สหรัฐฯ (NIST) เป็นลักษณะทางคณิตศาสตร์ของการแจกแจงแบบสุ่มอย่างสม่ำเสมอ ถ้าฉันวางตัวว่าจำนวนที่คาดไว้ควรอยู่ที่ ~50% นั่นทำให้ฉันถูกโค่นล้มหรือไม่? ไม่ขยายค่าเฉลี่ยของ 0.5 ด้วย $n$ ส่วนเบี่ยงเบนมาตรฐาน $\mathcal{N}(\mu, \sigma^2)$ เป็นแบบฟอร์มมาตรฐานสำหรับการแจกแจงนั้น และฉันจะไม่คาดหวังสิ่งที่ไม่สมบูรณ์น้อยกว่านี้ การตรวจสอบบล็อกเอาต์พุตซ้ำ (การทดสอบตัวสร้างตัวเลขสุ่มอย่างต่อเนื่อง) ไม่ใช่การโค่นล้ม เป็นเรื่องปกติ
2.
ฉันสามารถเสนอการทดสอบ FIPS นี้เป็นหลักฐานได้หรือไม่:-
$cat /dev/urandom | ทดสอบ
rngtest 5
ลิขสิทธิ์ (c) 2004 โดย Henrique de Moraes Holschuh
นี่เป็นซอฟต์แวร์ฟรี ดูแหล่งที่มาสำหรับเงื่อนไขการคัดลอก ไม่มีการรับประกัน ไม่แม้แต่สำหรับการค้าหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ
rngtest: กำลังเริ่มการทดสอบ FIPS...
rngtest: บิตที่ได้รับจากอินพุต: 8310580032
rngtest: FIPS 140-2 สำเร็จ: 415198
rngtest: FIPS 140-2 ล้มเหลว: 331
rngtest: FIPS 140-2(2001-10-10) Monobit: 41
rngtest: FIPS 140-2(2001-10-10) โป๊กเกอร์: 53
rngtest: FIPS 140-2(2001-10-10) เรียกใช้: 123
rngtest: FIPS 140-2(2001-10-10) ระยะยาว: 115
rngtest: FIPS 140-2(2001-10-10) รันต่อเนื่อง: 0
rngtest: ความเร็วช่องอินพุต: (ต่ำสุด=10.703; เฉลี่ย=1976.720; สูงสุด=19073.486)Mibits/s
rngtest: FIPS ทดสอบความเร็ว: (min=75.092; avg=199.723; max=209.599)Mibits/s
rngtest: เวลารันโปรแกรม: 43724402 ไมโครวินาที
อัตราความล้มเหลวคือ p=0.0008 ซึ่งเทียบได้กับเกณฑ์ p=0.001 ในชุดทดสอบ SP800 STS และของ Dieharder:-
หมายเหตุ: การประเมินสำหรับ rngs อาจสมบูรณ์
ไม่ถูกต้องหรือทำให้เข้าใจผิด โดยเฉพาะอย่างยิ่ง ค่า p 'อ่อนแอ' ควรเกิดขึ้น
หนึ่งการทดสอบในหนึ่งร้อย และค่า p ที่ 'ล้มเหลว' ควรเกิดขึ้นหนึ่งการทดสอบใน
หนึ่งพัน -- นั่นคือสิ่งที่ p หมายถึง ใช้พวกเขาด้วยความเสี่ยงของคุณเอง! เตือน!
เห็นได้ชัดว่าไม่ขัดแย้ง
3.
"ไม่ได้ระบุว่าการทดสอบเหล่านี้ควรรันบนแหล่งเอนโทรปีที่ไม่มีเงื่อนไข". ไม่แน่นอน ถูกต้อง. ไม่มีใครมีลักษณะทางสถิติสำหรับการแจกแจงแหล่งที่มาของเอนโทรปีที่ไม่มีเงื่อนไข พวกมันมาในทุกรูปแบบและทุกสถานที่ บางคนไม่มีชื่อทางคณิตศาสตร์ด้วยซ้ำ (ตัวอย่างสองครั้งของบันทึกปกติ, MOD ของอ่างอาบน้ำ $x$ ฯลฯ) เราสามารถเรียกใช้การทดสอบทางสถิติที่เป็นมาตรฐานกับผลลัพธ์สุดท้ายที่มีเงื่อนไขเท่านั้น
4.
"เป็นไปไม่ได้ที่จะตรวจจับตัวสร้างแบ็คดอร์ที่เก่งกาจจากเอาต์พุตเพียงอย่างเดียว". อีกครั้งแน่นอน นั่นไม่ใช่ความตั้งใจของเช่น การทดสอบการเริ่มต้น FIPS คุณต้องมีโปรแกรมเมอร์และนักเข้ารหัสสำหรับสิ่งนั้น FIPS ทำการทดสอบการสุ่มโดยอัตโนมัติและกำหนดแนวทางสำหรับการเขียนโปรแกรมความปลอดภัยขั้นพื้นฐาน เช่น ไม่มีสตริงตามตัวอักษรสำหรับการควบคุม และรหัสที่ย้ายตำแหน่งได้ ทุกอย่างปกติมาก
ดังนั้น FIPS 140 จึงไม่ใช่เรื่องที่ถกเถียงกัน การพูดเช่นนั้นเท่ากับว่า NIST ทำการแจกแจงแบบปกติลับๆ หรือมิจฉาทิฐินั้นไร้ประโยชน์ FIPS ทำได้ไม่ดีนักในบางสิ่ง และการทดสอบบล็อก 20,000 บิตพอดีกับส่วนท้ายด้านล่างสุดของมาตราส่วนสำหรับการทดสอบแบบสุ่มด้านล่าง เอน
(500,000 บิต)