Score:1

Endianness มีความสำคัญในการทดสอบ NIST SP800-22 หรือไม่

ธง cn

ฉันสงสัยเกี่ยวกับชุดทดสอบความสุ่ม

หนึ่งในชุดทดสอบการสุ่มที่มีชื่อเสียง ดีฮาร์ดเดอร์กล่าวว่า Endianness ไม่สำคัญสำหรับเครื่องกำเนิดแบบสุ่มที่ "ดี"

โปรดทราบว่านี่ไม่เหมือนกับการเขียนตัวเลขทศนิยมดิบ (ซึ่งจะไม่เป็นแบบสุ่มเลยเหมือนบิตสตรีม) และ "endianness" ของ uints ไม่ควรมีความสำคัญต่อสมมติฐานว่างของตัวสร้าง "ดี" เนื่องจากเป็นไบต์สุ่ม จะสุ่มในลำดับใดก็ได้

แค่เดาคร่าวๆ ฉันคิดว่าไม่มีความแตกต่างระหว่าง Big-endian และ Little-endian ในการทดสอบ Randomness เพราะ Randomness test นั้นเกี่ยวกับการนับจำนวน 0 หรือ 1 การตรวจสอบรูปแบบของ bitstream เป็นต้น (ผมอ่านทั้งบทความ NIST SP800-22 การแก้ไข 1a.)

แต่ไม่มีเอกสารที่เป็นลายลักษณ์อักษรใน NIST SP800-22 ว่า "Endianness ไม่ส่งผลกระทบต่อจุดประสงค์ของการทดสอบ Randomness"

คำถาม.

  1. มีส่วนใดขาดหายไปที่ระบุว่า "ความสิ้นหวังไม่สำคัญ" ในเอกสาร NIST SP800-22 หรือไม่

  2. ฉันสามารถทดสอบ Randomness โดยไม่คิดถึง Endianness ได้หรือไม่?

ทำไมฉันถึงได้รับคำถามนี้

มีตัวอย่างที่ดีของ ไฟล์อินพุต Dieharder และไฟล์อินพุต NIST SP800-22 ใน ข้อมูล/data.pi ด้วยอักขระ ASCII

และฉันยังพบว่า Dieharder อ่านไฟล์ (ASCII) เป็น Little-Endian และ NIST อ่านไฟล์ (ASCII) เป็น Big-Endian คุณสามารถดูได้ใน stackoverflow ว่าฉันรู้ได้อย่างไร.

อย่างไรก็ตาม เนื่องจาก Endianness ฉันต้องทำไฟล์เอาต์พุตสองไฟล์ หนึ่งคือ Big-Endian และอีกอันคือ Little-Endian นี่อาจทำให้เสียเวลาและความจำ ดังนั้นฉันจึงสงสัยว่า "Endianness มีความสำคัญในชุดทดสอบ NIST SP800-22 หรือไม่"

Score:1
ธง ng

Endianness¹ สามารถส่งผลต่อผลลัพธ์ของการทดสอบการสุ่ม และเปลี่ยนผลลัพธ์จากผ่านเป็นไม่ผ่าน หรือในทางกลับกัน (การขว้างเครื่องกำเนิดไฟฟ้าที่แตกต่างกันอาจให้ผลเช่นเดียวกัน ในระดับที่ค่อนข้างน้อยกว่า) อย่างไรก็ตามหากความสิ้นหวัง อย่างมีนัยสำคัญ มีผลกับผลการทดสอบนั้น (โดยถือว่า การทดสอบถูกต้องและใช้ถูกต้อง)

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

คำแนะนำของฉันคือให้เพิกเฉยต่อปัญหาความสิ้นหวังในการป้อนการทดสอบแบบสุ่ม

แต่ให้ตั้งคำถามถึงแรงจูงใจในการใช้งาน Dieharder หรือ NIST SP800-22 เป็นเรื่องปกติในเอกสารเข้ารหัสลับที่ไม่ได้มาตรฐาน โดยเฉพาะอย่างยิ่งเอกสารที่แสดงให้เห็นภาพว่าการเข้ารหัสทำเพื่ออะไร ลีนา. แต่ความสำเร็จของการทดสอบดังกล่าวไม่ใช่ข้อโต้แย้งหรือ (เป็นการพิสูจน์/สาธิตที่แย่กว่านั้น) ของคุณภาพของการเข้ารหัสบางอย่าง หรือ PRNG หรือ TRNG ที่รวมสถานะการประมวลผลภายหลัง ด้วยเหตุนี้การวิเคราะห์ของ กระบวนการ ใช้ในการเข้ารหัส PRNG หรือซอร์ส+การประมวลผลภายหลังของ TRNG เป็นสิ่งที่จำเป็น


¹ นั่นคือสิ่งที่ยิ่งใหญ่-เอนเดียน, little-endian หรือ endian ลำดับอื่น ๆ ของบิตเป็นไบต์ คำหรือจำนวนเต็มที่เอาต์พุตของตัวสร้างที่ทดสอบ และ/หรือที่อินพุตของโปรแกรมทดสอบ ตัวอย่างเช่น ฟังก์ชันของ NIST Statistical Test Suite แปลงToBits (ไฟล์ src/utilities.c ที่นี่) แปลงไบต์เป็นบิตตามแบบแผน big-endian (ตรงกันข้ามกับลำดับทั่วไปใน การสื่อสารแบบอะซิงโครนัสแบบอนุกรม). ที่สำคัญ ในทางทฤษฎี หากมีการใช้ตัวสร้างที่กำหนดทางคณิตศาสตร์เพื่อส่งออกบิตสตรีม (เช่น A5-1) มีการผลิตผ่านการทดสอบนั้นในโหมดไบต์เพื่อประสิทธิภาพ

TyeolRik avatar
cn flag
ขอบคุณคำแนะนำของคุณ ```อย่าสนใจประเด็นเรื่องความสิ้นหวัง``` ฉันเห็นด้วยกับ "การวิเคราะห์วิธีการ PRNG จำเป็น" :)
Paul Uszak avatar
cn flag
แนะนำให้ลบ/แก้ไขบิต _"TRNG"_ การประมวลผลภายหลังอาจเป็น vN extractor, CRC-16 หรือการคูณเมทริกซ์อย่างง่าย ไม่จำเป็นต้องใช้ crypto ดั้งเดิมและอันตรายอย่างยิ่ง การทดสอบแบบสุ่มจึงเป็นตัวชี้ขาดขั้นสูงสุดและขั้นสุดท้ายสำหรับการดำเนินการที่ถูกต้อง ฉันแนะนำว่าเอกสาร TRNG ที่ต่ำกว่ามาตรฐานเพียงอย่างเดียวคือเอกสารที่ไม่มีการทดสอบการสุ่มขั้นสุดท้าย นั่นเป็นเหตุผลที่เอกสารที่ดีทั้งหมดมีไว้ท้ายสุด
Paul Uszak avatar
cn flag
ไม่สามารถส่งผลกระทบต่อชุดเฉพาะนี้ได้เนื่องจาก SP800-22 ไม่ใช้คำ
fgrieu avatar
ng flag
@Paul Uszak: ดูบันทึกใหม่ ¹ เขียนตามความคิดเห็นล่าสุดของคุณ
Paul Uszak avatar
cn flag
เอ่อ ยังไม่ค่อยเห็นประเด็นของคุณ การทดสอบผ่านจะเกิดขึ้นพร้อมกับการกระจายชุดของบิตที่เหมือนกันในทุกไบต์ โดยไม่คำนึงถึงความสมบูรณ์ของบิต การทดสอบข้อมูลที่ส่งผ่าน RS-232 จะมีลักษณะเหมือนกับเอาต์พุต `\dev\urandom`...
Score:0
ธง cn

ไม่ได้อย่างแน่นอน.

ฉันขอแนะนำให้คุณเขียนไบนารี [sic] ใน Little-Endian

นั่นไม่เกี่ยวข้องกับชุด 800-22 คุณต้องพิจารณาว่า endianness หมายถึงอะไร Endianness คือลำดับหรือลำดับของไบต์ของ a คำ ของข้อมูลดิจิทัล ชุดนี้ไม่ใช้คำพูด มันใช้ออคเต็ต

ส่วนที่เกี่ยวข้องของเอกสารการทดสอบคือ:-

5.4.1 การป้อนข้อมูล การป้อนข้อมูลอาจทำได้ด้วยวิธีใดวิธีหนึ่งจากสองวิธี หากผู้ใช้มีโปรแกรมหรืออุปกรณ์ฮาร์ดแวร์แบบสแตนด์อโลน ใช้ RNG ผู้ใช้อาจต้องการสร้างไฟล์จำนวนมาก ความยาวโดยพลการตามที่ต้องการ ไฟล์ควรมีลำดับไบนารี เก็บเป็นอักขระ ASCII ที่ประกอบด้วยเลขศูนย์และเลขหนึ่ง หรือ เป็นข้อมูลไบนารีที่แต่ละไบต์ประกอบด้วยแปดบิตที่มีค่าเท่ากับ 0âs และ 1–s. ชุดทดสอบทางสถิติของ NIST สามารถตรวจสอบได้อย่างอิสระ ไฟล์เหล่านี้

และจากชุดทดสอบเอง:-

   รูปแบบไฟล์อินพุต:
    [0] ASCII - ลำดับของ ASCII 0 และ 1
    [1] ไบนารี - แต่ละไบต์ในไฟล์ข้อมูลมีข้อมูล 8 บิต

   เลือกโหมดอินพุต:  

ดังนั้นคุณจึงเห็นว่าความสิ้นหวังไม่มีความเกี่ยวข้อง ไม่คาดหวังจำนวนเต็มสั้น/ยาวหรือเลขทศนิยม ห้องชุดอื่นอาจแม้ว่า คุณป้อนข้อมูล ASCII หนึ่งไบต์สำหรับ 0 และ 1หรือคุณป้อน (หวังว่าจะ) กระจายบิตอย่างสม่ำเสมอภายในออคเต็ต


หมายเหตุ: ไม่ใช่ผู้เชี่ยวชาญในการเข้ารหัส UTF แต่คุณสามารถสร้างอักขระ ASCII ด้วยการบังคับการเข้ารหัสที่ไม่ใช่ UTF-8 นั่นอาจทำให้การทดสอบทั้งหมดด้วยรูปแบบไฟล์อินพุต: [0] ASCII ที่จะล้มเหลว.

TyeolRik avatar
cn flag
ฉันไม่คิดอย่างนั้น คำตอบของคุณเกี่ยวกับ ASCII แต่ Endianness นั้นแตกต่างกับ ASCII อย่างที่คุณเห็นในชุดการทดสอบ NIST มีไฟล์ ```data/data.pi``` ซึ่งยกตัวอย่าง และมี 0 และ 1 ไบนารีรหัส ASCII แต่เมื่อคุณแปลงข้อมูลนี้เป็น Bytes (ไฟล์ไบนารี) ข้อมูลควรแตกต่างออกไป เพราะ Endianness เป็นเรื่องเกี่ยวกับ "วิธีการเขียนไบนารี" ฉันเกรงว่าคำตอบของคุณจะไม่เกี่ยวข้อง แต่ขอบคุณสำหรับความสนใจและการสนทนาของคุณ :)
Paul Uszak avatar
cn flag
@TyeolRik คุณรู้ไหมว่าบรรทัดของ `data/data.pi` ไม่ใช่จำนวนเต็ม? มีเพียงเลขศูนย์และเลขหนึ่ง โดยมีการขึ้นบรรทัดใหม่เพื่อให้ดูสวยงาม ดังนั้นคำตอบของฉัน (ในความคิดของฉัน) จึงตรงประเด็น
TyeolRik avatar
cn flag
// ฉันกลัว แต่ ```data/data.pi``` ไม่ใช่จำนวนเต็ม ตาม [หน้านี้](https://www.exploringbinary.com/pi-and-e-in-binary/) ค่า PI, 3.142592...., คือ ```11.00100100001111...``` ใน ไบนารี่. และไฟล์ ```data/data.pi``` ก็เป็น ```11.00100100001111...``` เช่นกัน ดังนั้น ฉันเดาว่าไบนารีใน ```data/data.pi``` เป็นเพียง PI ไม่ใช่จำนวนเต็ม :)
TyeolRik avatar
cn flag
อ๊ะ. ขอโทษที่เข้าใจผิดคำพูดของคุณ (เนื่องจากภาษาอังกฤษผมสั้น) เราอยู่ในเพจ ขอบคุณสำหรับคำแนะนำของคุณที่เพิ่มเข้ามา ``` การเขียนไบนารีใน Little-Endian```

โพสต์คำตอบ

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