พารามิเตอร์เซ็นเซอร์ตัวเลขสุ่มระบุอะไร เซ็นเซอร์ตัวเลขสุ่ม การรับและการแปลงตัวเลขสุ่ม
PRNG ที่กำหนด
ไม่มีอัลกอริธึมที่กำหนดขึ้นเองสามารถสร้างตัวเลขสุ่มได้อย่างสมบูรณ์ แต่สามารถประมาณคุณสมบัติของตัวเลขสุ่มได้เพียงบางส่วนเท่านั้น ดังที่จอห์น ฟอน นอยมันน์กล่าวไว้ว่า " ใครก็ตามที่มีจุดอ่อนสำหรับวิธีการทางคณิตศาสตร์ในการรับตัวเลขสุ่มถือเป็นบาปอย่างไม่ต้องสงสัย».
PRNG ใดๆ ที่มีทรัพยากรจำกัดไม่ช้าก็เร็วจะต้องเป็นวงจร - PRNG จะเริ่มทำซ้ำลำดับตัวเลขเดียวกัน ความยาวของรอบ PRNG ขึ้นอยู่กับตัวสร้างเองและค่าเฉลี่ยประมาณ 2n/2 โดยที่ n คือขนาดของสถานะภายในเป็นบิต แม้ว่าตัวสร้างเชิงเส้นตรงและตัวกำเนิด LFSR จะมีรอบสูงสุดในลำดับที่ 2n หาก PRNG สามารถมาบรรจบกันเป็นรอบที่สั้นเกินไป PRNG จะสามารถคาดเดาได้และใช้งานไม่ได้
เครื่องกำเนิดเลขคณิตอย่างง่ายที่สุด แม้ว่าจะเร็วมาก แต่ก็มีข้อเสียร้ายแรงหลายประการ:
- ระยะเวลา/ระยะเวลาสั้นเกินไป
- ค่าที่ต่อเนื่องกันไม่เป็นอิสระ
- บิตบางบิต "สุ่มน้อยกว่า" มากกว่าบิตอื่น ๆ
- การกระจายมิติเดียวไม่สม่ำเสมอ
- การย้อนกลับได้
โดยเฉพาะอย่างยิ่งอัลกอริทึมของเมนเฟรมกลับกลายเป็นว่าแย่มาก ซึ่งทำให้เกิดข้อสงสัยเกี่ยวกับความถูกต้องของผลลัพธ์ของการศึกษาจำนวนมากที่ใช้อัลกอริทึมนี้
PRNG พร้อมแหล่งเอนโทรปีหรือ RNG
เช่นเดียวกับที่มีความจำเป็นในการสร้างลำดับตัวเลขสุ่มที่ทำซ้ำได้ง่าย ก็มีความจำเป็นในการสร้างตัวเลขที่คาดเดาไม่ได้โดยสิ้นเชิงหรือเพียงแค่สุ่มทั้งหมดเช่นกัน เครื่องกำเนิดไฟฟ้าดังกล่าวเรียกว่า เครื่องกำเนิดตัวเลขสุ่ม(RNG - อังกฤษ) เครื่องกำเนิดตัวเลขสุ่ม RNG). เนื่องจากเครื่องกำเนิดไฟฟ้าดังกล่าวมักใช้เพื่อสร้างคีย์สมมาตรและไม่สมมาตรเฉพาะสำหรับการเข้ารหัส พวกมันจึงมักถูกสร้างขึ้นจากการรวมกันของ PRNG ที่แข็งแกร่งในการเข้ารหัสและแหล่งเอนโทรปีภายนอก (และแน่นอนว่าการรวมกันนี้ที่ปัจจุบันเข้าใจกันทั่วไปว่าเป็น รงจ.)
ผู้ผลิตชิปรายใหญ่เกือบทุกรายจัดหา RNG ฮาร์ดแวร์ด้วยแหล่งเอนโทรปีต่างๆ โดยใช้วิธีการต่างๆ เพื่อชำระล้างสิ่งที่คาดเดาไม่ได้อย่างหลีกเลี่ยงไม่ได้ อย่างไรก็ตาม ในขณะนี้ ความเร็วที่ไมโครชิปที่มีอยู่ทั้งหมดรวบรวมตัวเลขสุ่ม (หลายพันบิตต่อวินาที) ไม่สอดคล้องกับความเร็วของโปรเซสเซอร์สมัยใหม่
ในคอมพิวเตอร์ส่วนบุคคล ซอฟต์แวร์ที่เขียน RNG จะใช้แหล่งที่มาของเอนโทรปีที่เร็วกว่ามาก เช่น สัญญาณรบกวนของการ์ดเสียง หรือตัวนับรอบสัญญาณนาฬิกาของโปรเซสเซอร์ ก่อนที่จะสามารถอ่านค่าตัวนับนาฬิกาได้ การรวบรวมเอนโทรปีเป็นจุดอ่อนที่สุดของ RNG ปัญหานี้ยังไม่ได้รับการแก้ไขอย่างสมบูรณ์ในอุปกรณ์จำนวนมาก (เช่น สมาร์ทการ์ด) ซึ่งยังคงมีความเสี่ยงอยู่ RNG จำนวนมากยังคงใช้วิธีการดั้งเดิม (ล้าสมัย) ในการรวบรวมเอนโทรปี เช่น การวัดปฏิกิริยาของผู้ใช้ (การเคลื่อนไหวของเมาส์ ฯลฯ) เช่นใน หรือการโต้ตอบระหว่างเธรด เช่นใน Java ที่ปลอดภัยแบบสุ่ม
ตัวอย่างของ RNG และแหล่งเอนโทรปี
ตัวอย่างบางส่วนของ RNG ที่มีแหล่งที่มาและตัวสร้างเอนโทรปี:
แหล่งที่มาของเอนโทรปี | PRNG | ข้อดี | ข้อบกพร่อง | |
---|---|---|---|---|
/dev/random บน Linux | ตัวนับนาฬิกา CPU จะรวบรวมเฉพาะระหว่างการขัดจังหวะฮาร์ดแวร์เท่านั้น | LFSR โดยมีเอาต์พุตแฮชผ่าน | มัน “ร้อนขึ้น” เป็นเวลานานมาก “ติดขัด” เป็นเวลานานได้ หรือทำงานเหมือนกับ PRNG ( /dev/urandom) | |
ยาร์โรว์โดยบรูซ ชไนเออร์ | วิธีการแบบดั้งเดิม (ล้าสมัย) | AES-256 และ | การออกแบบที่ทนทานต่อการเข้ารหัสที่ยืดหยุ่น | ใช้เวลานานในการ "ร้อนขึ้น" ซึ่งเป็นสถานะภายในที่เล็กมาก ขึ้นอยู่กับความแข็งแกร่งของการเข้ารหัสของอัลกอริธึมที่เลือกมากเกินไป ช้า ใช้ได้กับการสร้างคีย์โดยเฉพาะ |
เครื่องกำเนิดโดย Leonid Yuryev | เสียงการ์ดเสียง | ? | น่าจะเป็นแหล่งเอนโทรปีที่ดีและรวดเร็ว | ไม่มี PRNG ที่แข็งแกร่งในการเข้ารหัสลับที่เป็นอิสระและเป็นที่รู้จัก มีเฉพาะใน Windows เท่านั้น |
ไมโครซอฟต์ | ติดตั้งใน Windows ไม่ติดขัด | สภาพภายในเล็ก ทำนายง่าย | ||
การสื่อสารระหว่างเธรด | ยังไม่มีทางเลือกอื่นใน Java แต่มีสถานะภายในขนาดใหญ่ | การรวบรวมเอนโทรปีช้า | ||
ความโกลาหลโดย Ruptor | ตัวนับนาฬิกาโปรเซสเซอร์ที่รวบรวมอย่างต่อเนื่อง | การแฮชสถานะภายใน 4096 บิตโดยอิงตามตัวแปรที่ไม่ใช่เชิงเส้นของเครื่องกำเนิด Marsaglia | จนเร็วที่สุดคือสภาพภายในใหญ่ “ติด” | |
RRAND จากรัปเตอร์ | ตัวนับวงจรซีพียู | การเข้ารหัสสถานะภายในด้วยรหัสสตรีม | รวดเร็วมาก มีสถานะภายในให้เลือกตามขนาดที่ต้องการ ไม่มี “ติดขัด” |
PRNG ในการเข้ารหัส
PRNG ประเภทหนึ่งคือ PRBG ซึ่งเป็นตัวกำเนิดบิตสุ่มหลอก รวมถึงรหัสสตรีมต่างๆ PRNG เช่นเดียวกับรหัสสตรีมประกอบด้วยสถานะภายใน (โดยปกติจะมีขนาดตั้งแต่ 16 บิตไปจนถึงหลายเมกะไบต์) ฟังก์ชันในการเริ่มต้นสถานะภายในด้วยคีย์หรือ เมล็ดพันธุ์(ภาษาอังกฤษ) เมล็ดพันธุ์) ฟังก์ชันการอัพเดตสถานะภายใน และฟังก์ชันเอาต์พุต PRNG แบ่งออกเป็นเลขคณิตอย่างง่าย การเข้ารหัสแบบแตกหัก และการเข้ารหัสที่แข็งแกร่ง วัตถุประสงค์ทั่วไปคือเพื่อสร้างลำดับของตัวเลขที่ไม่สามารถแยกความแตกต่างจากการสุ่มด้วยวิธีการคำนวณได้
แม้ว่า PRNG หรือรหัสสตรีมที่แข็งแกร่งจำนวนมากจะให้ตัวเลข "สุ่ม" มากกว่ามาก แต่ตัวสร้างดังกล่าวช้ากว่าตัวสร้างเลขคณิตทั่วไปมากและอาจไม่เหมาะสำหรับการวิจัยประเภทใดก็ตามที่ต้องใช้ตัวประมวลผลว่างเพื่อการคำนวณที่มีประโยชน์มากขึ้น
เพื่อวัตถุประสงค์ทางการทหารและในสภาพสนาม จะใช้เฉพาะ PRNG ที่แข็งแกร่งในการเข้ารหัสแบบซิงโครนัสแบบลับเท่านั้น (รหัสสตรีม) เท่านั้น ไม่ใช้รหัสบล็อก ตัวอย่างของ PRNG ที่แข็งแกร่งในการเข้ารหัสที่รู้จักกันดี ได้แก่ ISAAC, SEAL, Snow ซึ่งเป็นอัลกอริธึมทางทฤษฎีที่ช้ามากของ Bloom, Bloom และ Shub รวมถึงตัวนับที่มีฟังก์ชันแฮชการเข้ารหัสหรือบล็อกไซเฟอร์ที่รัดกุมแทนที่จะเป็นฟังก์ชันเอาท์พุต
ฮาร์ดแวร์ PRNG
นอกเหนือจากมรดกดั้งเดิมแล้ว เครื่องกำเนิด LFSR ที่รู้จักกันดีซึ่งใช้กันอย่างแพร่หลายเป็น PRNG ฮาร์ดแวร์ในศตวรรษที่ 20 น่าเสียดายที่ไม่ค่อยมีใครรู้จัก PRNG ฮาร์ดแวร์สมัยใหม่ (รหัสสตรีม) เนื่องจากส่วนใหญ่ได้รับการพัฒนาเพื่อวัตถุประสงค์ทางการทหารและถูกเก็บเป็นความลับ . PRNG ฮาร์ดแวร์เชิงพาณิชย์ที่มีอยู่เกือบทั้งหมดได้รับการจดสิทธิบัตรและยังเก็บเป็นความลับอีกด้วย PRNG ของฮาร์ดแวร์ถูกจำกัดด้วยข้อกำหนดที่เข้มงวดสำหรับหน่วยความจำสิ้นเปลือง (โดยส่วนใหญ่แล้วห้ามใช้หน่วยความจำ) ความเร็ว (1-2 รอบนาฬิกา) และพื้นที่ (หลายร้อย FPGA - หรือ
เนื่องจากขาด PRNG ฮาร์ดแวร์ที่ดี ผู้ผลิตจึงถูกบังคับให้ใช้บล็อกไซเฟอร์ที่ช้ากว่ามาก แต่มีบล็อคไซเฟอร์ที่รู้จักกันดีอยู่ในมือ (รีวิวคอมพิวเตอร์หมายเลข 29 (2003)
บทเรียนที่ 15. โอกาสคือจิตวิญญาณของเกม
คุณได้สอนเต่ามากมายแล้ว แต่เธอยังมีความเป็นไปได้อื่น ๆ ที่ซ่อนอยู่อีกด้วย เต่าสามารถทำอะไรด้วยตัวเองที่จะทำให้คุณประหลาดใจได้หรือไม่?
ปรากฎว่าใช่! มีเต่าอยู่ในรายการเซ็นเซอร์ เซ็นเซอร์ตัวเลขสุ่ม:
สุ่ม
เรามักจะพบกับตัวเลขสุ่ม: เมื่อโยนลูกเต๋าในเกมของเด็ก ฟังนกกาเหว่าหมอดูในป่า หรือเพียงแค่ "ทายตัวเลขใดๆ" เซ็นเซอร์ตัวเลขสุ่มใน LogoWorlds สามารถรับค่าของจำนวนเต็มบวกใดๆ ตั้งแต่ 0 ถึงขีดจำกัดค่าที่ระบุเป็นพารามิเตอร์
ตัวเลขที่ระบุเป็นพารามิเตอร์ของเซ็นเซอร์ตัวเลขสุ่มจะไม่ปรากฏเลย
ตัวอย่างเช่น เซ็นเซอร์สุ่ม 20 อาจเป็นจำนวนเต็มใดๆ ตั้งแต่ 0 ถึง 19 รวมทั้ง 19 เซ็นเซอร์สุ่ม 1000 อาจเป็นจำนวนเต็มใดๆ ตั้งแต่ 0 ถึง 999 รวมทั้ง 999
คุณอาจสงสัยว่าเกมนี้อยู่ที่ไหน - แค่ตัวเลข แต่อย่าลืมว่าใน LogoWorlds คุณสามารถใช้ตัวเลขเพื่อกำหนดรูปร่างของเต่า ความหนาของปากกา ขนาด สี และอื่นๆ อีกมากมาย สิ่งสำคัญคือการเลือกขีดจำกัดของค่าที่เหมาะสม ขีดจำกัดของการเปลี่ยนแปลงในพารามิเตอร์พื้นฐานของเต่าแสดงอยู่ในตาราง
ตัวสร้างตัวเลขสุ่มสามารถใช้เป็นพารามิเตอร์สำหรับคำสั่งใดๆ ได้ เป็นต้น ซึ่งไปข้างหน้า, ขวาและอื่น ๆ
ภารกิจที่ 24การใช้เซ็นเซอร์ตัวเลขสุ่ม
จัดระเบียบหนึ่งในเกมที่แนะนำด้านล่างโดยใช้เซ็นเซอร์ตัวเลขสุ่มแล้วปล่อยเต่า
เกมที่ 1: หน้าจอสีสันสดใส
1. วางเต่าไว้ตรงกลางหน้าจอ
2. ป้อนคำสั่งใน Backpack และตั้งค่าโหมด หลายครั้ง:
new_color สุ่ม 140 สี รอ 10
ทีม สีดำเนินการเช่นเดียวกับเครื่องมือเติมในตัวแก้ไขกราฟิก
3. พูดโครงเรื่อง
เกมที่ 2: “จิตรกรผู้ร่าเริง” 1. ปรับเปลี่ยนเกม #1 โดยการวาดเส้นบนหน้าจอไปยังพื้นที่สุ่มที่มีขอบเขตต่อเนื่องกัน:
2. ทำตามคำแนะนำใน Turtle Backpack โดยหมุนและเคลื่อนที่แบบสุ่ม:
สุ่มขวา 360
สุ่มส่งต่อ 150
ตั้งคำแนะนำในกระเป๋าเป้สะพายหลังเพื่อย้ายเต่า ( ข้างหน้า 60) โดยมีปลายปากกาสีสุ่มหนา 60 อัน (0-139) ลดลงที่มุมเล็กน้อย ( ใหม่_คอร์ส 10).
เกมที่ 4: "ล่า"
พัฒนาโครงเรื่องที่เต่าแดงล่าเต่าดำ เต่าดำเคลื่อนที่ไปตามวิถีแบบสุ่ม และทิศทางการเคลื่อนที่ของเต่าแดงนั้นถูกควบคุมโดยแถบเลื่อน
คำถามเพื่อการควบคุมตนเอง
1. เครื่องกำเนิดตัวเลขสุ่มคืออะไร?
2. พารามิเตอร์ของเซ็นเซอร์ตัวเลขสุ่มคืออะไร?
3. ขีดจำกัดมูลค่าหมายถึงอะไร?
4. หมายเลขที่ระบุเป็นพารามิเตอร์เคยเกิดขึ้นหรือไม่?
PRNG ที่กำหนด
ไม่มีอัลกอริธึมที่กำหนดขึ้นเองสามารถสร้างตัวเลขสุ่มได้อย่างสมบูรณ์ แต่สามารถประมาณคุณสมบัติของตัวเลขสุ่มได้เพียงบางส่วนเท่านั้น ดังที่จอห์น ฟอน นอยมันน์กล่าวไว้ว่า " ใครก็ตามที่มีจุดอ่อนสำหรับวิธีการทางคณิตศาสตร์ในการรับตัวเลขสุ่มถือเป็นบาปอย่างไม่ต้องสงสัย».
PRNG ใดๆ ที่มีทรัพยากรจำกัดไม่ช้าก็เร็วจะต้องเป็นวงจร - PRNG จะเริ่มทำซ้ำลำดับตัวเลขเดียวกัน ความยาวของรอบ PRNG ขึ้นอยู่กับตัวสร้างเองและค่าเฉลี่ยประมาณ 2n/2 โดยที่ n คือขนาดของสถานะภายในเป็นบิต แม้ว่าตัวสร้างเชิงเส้นตรงและตัวกำเนิด LFSR จะมีรอบสูงสุดในลำดับที่ 2n หาก PRNG สามารถมาบรรจบกันเป็นรอบที่สั้นเกินไป PRNG จะสามารถคาดเดาได้และใช้งานไม่ได้
เครื่องกำเนิดเลขคณิตอย่างง่ายที่สุด แม้ว่าจะเร็วมาก แต่ก็มีข้อเสียร้ายแรงหลายประการ:
- ระยะเวลา/ระยะเวลาสั้นเกินไป
- ค่าที่ต่อเนื่องกันไม่เป็นอิสระ
- บิตบางบิต "สุ่มน้อยกว่า" มากกว่าบิตอื่น ๆ
- การกระจายมิติเดียวไม่สม่ำเสมอ
- การย้อนกลับได้
โดยเฉพาะอย่างยิ่งอัลกอริทึมของเมนเฟรมกลับกลายเป็นว่าแย่มาก ซึ่งทำให้เกิดข้อสงสัยเกี่ยวกับความถูกต้องของผลลัพธ์ของการศึกษาจำนวนมากที่ใช้อัลกอริทึมนี้
PRNG พร้อมแหล่งเอนโทรปีหรือ RNG
เช่นเดียวกับที่มีความจำเป็นในการสร้างลำดับตัวเลขสุ่มที่ทำซ้ำได้ง่าย ก็มีความจำเป็นในการสร้างตัวเลขที่คาดเดาไม่ได้โดยสิ้นเชิงหรือเพียงแค่สุ่มทั้งหมดเช่นกัน เครื่องกำเนิดไฟฟ้าดังกล่าวเรียกว่า เครื่องกำเนิดตัวเลขสุ่ม(RNG - อังกฤษ) เครื่องกำเนิดตัวเลขสุ่ม RNG). เนื่องจากเครื่องกำเนิดไฟฟ้าดังกล่าวมักใช้เพื่อสร้างคีย์สมมาตรและไม่สมมาตรเฉพาะสำหรับการเข้ารหัส พวกมันจึงมักถูกสร้างขึ้นจากการรวมกันของ PRNG ที่แข็งแกร่งในการเข้ารหัสและแหล่งเอนโทรปีภายนอก (และแน่นอนว่าการรวมกันนี้ที่ปัจจุบันเข้าใจกันทั่วไปว่าเป็น รงจ.)
ผู้ผลิตชิปรายใหญ่เกือบทุกรายจัดหา RNG ฮาร์ดแวร์ด้วยแหล่งเอนโทรปีต่างๆ โดยใช้วิธีการต่างๆ เพื่อชำระล้างสิ่งที่คาดเดาไม่ได้อย่างหลีกเลี่ยงไม่ได้ อย่างไรก็ตาม ในขณะนี้ ความเร็วที่ไมโครชิปที่มีอยู่ทั้งหมดรวบรวมตัวเลขสุ่ม (หลายพันบิตต่อวินาที) ไม่สอดคล้องกับความเร็วของโปรเซสเซอร์สมัยใหม่
ในคอมพิวเตอร์ส่วนบุคคล ซอฟต์แวร์ที่เขียน RNG จะใช้แหล่งที่มาของเอนโทรปีที่เร็วกว่ามาก เช่น สัญญาณรบกวนของการ์ดเสียง หรือตัวนับรอบสัญญาณนาฬิกาของโปรเซสเซอร์ ก่อนที่จะสามารถอ่านค่าตัวนับนาฬิกาได้ การรวบรวมเอนโทรปีเป็นจุดอ่อนที่สุดของ RNG ปัญหานี้ยังไม่ได้รับการแก้ไขอย่างสมบูรณ์ในอุปกรณ์จำนวนมาก (เช่น สมาร์ทการ์ด) ซึ่งยังคงมีความเสี่ยงอยู่ RNG จำนวนมากยังคงใช้วิธีการดั้งเดิม (ล้าสมัย) ในการรวบรวมเอนโทรปี เช่น การวัดปฏิกิริยาของผู้ใช้ (การเคลื่อนไหวของเมาส์ ฯลฯ) เช่นใน หรือการโต้ตอบระหว่างเธรด เช่นใน Java ที่ปลอดภัยแบบสุ่ม
ตัวอย่างของ RNG และแหล่งเอนโทรปี
ตัวอย่างบางส่วนของ RNG ที่มีแหล่งที่มาและตัวสร้างเอนโทรปี:
แหล่งที่มาของเอนโทรปี | PRNG | ข้อดี | ข้อบกพร่อง | |
---|---|---|---|---|
/dev/random บน Linux | ตัวนับนาฬิกา CPU จะรวบรวมเฉพาะระหว่างการขัดจังหวะฮาร์ดแวร์เท่านั้น | LFSR โดยมีเอาต์พุตแฮชผ่าน | มัน “ร้อนขึ้น” เป็นเวลานานมาก “ติดขัด” เป็นเวลานานได้ หรือทำงานเหมือนกับ PRNG ( /dev/urandom) | |
ยาร์โรว์โดยบรูซ ชไนเออร์ | วิธีการแบบดั้งเดิม (ล้าสมัย) | AES-256 และ | การออกแบบที่ทนทานต่อการเข้ารหัสที่ยืดหยุ่น | ใช้เวลานานในการ "ร้อนขึ้น" ซึ่งเป็นสถานะภายในที่เล็กมาก ขึ้นอยู่กับความแข็งแกร่งของการเข้ารหัสของอัลกอริธึมที่เลือกมากเกินไป ช้า ใช้ได้กับการสร้างคีย์โดยเฉพาะ |
เครื่องกำเนิดโดย Leonid Yuryev | เสียงการ์ดเสียง | ? | น่าจะเป็นแหล่งเอนโทรปีที่ดีและรวดเร็ว | ไม่มี PRNG ที่แข็งแกร่งในการเข้ารหัสลับที่เป็นอิสระและเป็นที่รู้จัก มีเฉพาะใน Windows เท่านั้น |
ไมโครซอฟต์ | ติดตั้งใน Windows ไม่ติดขัด | สภาพภายในเล็ก ทำนายง่าย | ||
การสื่อสารระหว่างเธรด | ยังไม่มีทางเลือกอื่นใน Java แต่มีสถานะภายในขนาดใหญ่ | การรวบรวมเอนโทรปีช้า | ||
ความโกลาหลโดย Ruptor | ตัวนับนาฬิกาโปรเซสเซอร์ที่รวบรวมอย่างต่อเนื่อง | การแฮชสถานะภายใน 4096 บิตโดยอิงตามตัวแปรที่ไม่ใช่เชิงเส้นของเครื่องกำเนิด Marsaglia | จนเร็วที่สุดคือสภาพภายในใหญ่ “ติด” | |
RRAND จากรัปเตอร์ | ตัวนับวงจรซีพียู | การเข้ารหัสสถานะภายในด้วยรหัสสตรีม | รวดเร็วมาก มีสถานะภายในให้เลือกตามขนาดที่ต้องการ ไม่มี “ติดขัด” |
PRNG ในการเข้ารหัส
PRNG ประเภทหนึ่งคือ PRBG ซึ่งเป็นตัวกำเนิดบิตสุ่มหลอก รวมถึงรหัสสตรีมต่างๆ PRNG เช่นเดียวกับรหัสสตรีมประกอบด้วยสถานะภายใน (โดยปกติจะมีขนาดตั้งแต่ 16 บิตไปจนถึงหลายเมกะไบต์) ฟังก์ชันในการเริ่มต้นสถานะภายในด้วยคีย์หรือ เมล็ดพันธุ์(ภาษาอังกฤษ) เมล็ดพันธุ์) ฟังก์ชันการอัพเดตสถานะภายใน และฟังก์ชันเอาต์พุต PRNG แบ่งออกเป็นเลขคณิตอย่างง่าย การเข้ารหัสแบบแตกหัก และการเข้ารหัสที่แข็งแกร่ง วัตถุประสงค์ทั่วไปคือเพื่อสร้างลำดับของตัวเลขที่ไม่สามารถแยกความแตกต่างจากการสุ่มด้วยวิธีการคำนวณได้
แม้ว่า PRNG หรือรหัสสตรีมที่แข็งแกร่งจำนวนมากจะให้ตัวเลข "สุ่ม" มากกว่ามาก แต่ตัวสร้างดังกล่าวช้ากว่าตัวสร้างเลขคณิตทั่วไปมากและอาจไม่เหมาะสำหรับการวิจัยประเภทใดก็ตามที่ต้องใช้ตัวประมวลผลว่างเพื่อการคำนวณที่มีประโยชน์มากขึ้น
เพื่อวัตถุประสงค์ทางการทหารและในสภาพสนาม จะใช้เฉพาะ PRNG ที่แข็งแกร่งในการเข้ารหัสแบบซิงโครนัสแบบลับเท่านั้น (รหัสสตรีม) เท่านั้น ไม่ใช้รหัสบล็อก ตัวอย่างของ PRNG ที่แข็งแกร่งในการเข้ารหัสที่รู้จักกันดี ได้แก่ ISAAC, SEAL, Snow ซึ่งเป็นอัลกอริธึมทางทฤษฎีที่ช้ามากของ Bloom, Bloom และ Shub รวมถึงตัวนับที่มีฟังก์ชันแฮชการเข้ารหัสหรือบล็อกไซเฟอร์ที่รัดกุมแทนที่จะเป็นฟังก์ชันเอาท์พุต
ฮาร์ดแวร์ PRNG
นอกเหนือจากมรดกดั้งเดิมแล้ว เครื่องกำเนิด LFSR ที่รู้จักกันดีซึ่งใช้กันอย่างแพร่หลายเป็น PRNG ฮาร์ดแวร์ในศตวรรษที่ 20 น่าเสียดายที่ไม่ค่อยมีใครรู้จัก PRNG ฮาร์ดแวร์สมัยใหม่ (รหัสสตรีม) เนื่องจากส่วนใหญ่ได้รับการพัฒนาเพื่อวัตถุประสงค์ทางการทหารและถูกเก็บเป็นความลับ . PRNG ฮาร์ดแวร์เชิงพาณิชย์ที่มีอยู่เกือบทั้งหมดได้รับการจดสิทธิบัตรและยังเก็บเป็นความลับอีกด้วย PRNG ของฮาร์ดแวร์ถูกจำกัดด้วยข้อกำหนดที่เข้มงวดสำหรับหน่วยความจำสิ้นเปลือง (โดยส่วนใหญ่แล้วห้ามใช้หน่วยความจำ) ความเร็ว (1-2 รอบนาฬิกา) และพื้นที่ (หลายร้อย FPGA - หรือ
เนื่องจากขาด PRNG ฮาร์ดแวร์ที่ดี ผู้ผลิตจึงถูกบังคับให้ใช้บล็อกไซเฟอร์ที่ช้ากว่ามาก แต่มีบล็อคไซเฟอร์ที่รู้จักกันดีอยู่ในมือ (รีวิวคอมพิวเตอร์หมายเลข 29 (2003)
19/09/2017 อังคาร 13:18 น. เวลามอสโก , ข้อความ: Valeria Shmyrova
บริษัท Security Code ซึ่งเป็นผู้พัฒนาระบบเข้ารหัส Continent ได้รับสิทธิบัตรสำหรับเซ็นเซอร์ตัวเลขสุ่มทางชีววิทยา นี่เป็นเซ็นเซอร์ทางชีววิทยาที่แม่นยำ เนื่องจากการสุ่มนั้นขึ้นอยู่กับปฏิกิริยาของผู้ใช้ต่อรูปภาพที่แสดงให้เขาเห็น บริษัทรับรองว่าเทคโนโลยีดังกล่าวไม่เคยได้รับการจดสิทธิบัตรในโลกมาก่อน
การได้รับสิทธิบัตร
บริษัท Security Code ได้รับสิทธิบัตรสำหรับเทคโนโลยีเซ็นเซอร์เลขสุ่มทางชีววิทยา ตามที่นักพัฒนาระบุว่าเมื่อสร้างเทคโนโลยีได้ใช้ "แนวทางใหม่ในการแก้ปัญหาการสร้างตัวเลขสุ่มโดยใช้คอมพิวเตอร์และบุคคล" การพัฒนาดังกล่าวได้นำไปใช้แล้วในผลิตภัณฑ์จำนวนหนึ่ง รวมถึง Continent-AP, Secret Net Studio, Continent TLS และ Jinn รวมถึงในไลบรารีการเข้ารหัส SCrypt
ตามที่ตัวแทนของบริษัทอธิบายกับ CNews งานเกี่ยวกับเซ็นเซอร์ดำเนินมาเป็นเวลาสามปีแล้ว ประกอบด้วยส่วนทางวิทยาศาสตร์ ส่วนปฏิบัติ และส่วนทดลอง สามคนรับผิดชอบในส่วนทางวิทยาศาสตร์ของ บริษัท ทีมโปรแกรมเมอร์ทั้งหมดมีส่วนร่วมในการพัฒนาและทีมงานทั้งหมดทำการทดสอบและทดลองซึ่งมีคนหลายร้อยคน
ความสามารถด้านเทคโนโลยี
เซ็นเซอร์ใหม่สามารถสร้างลำดับแบบสุ่มบนอุปกรณ์ส่วนบุคคล โดยไม่จำเป็นต้องใช้อุปกรณ์เพิ่มเติมหรือส่วนเสริมฮาร์ดแวร์ สามารถใช้ในการเข้ารหัสข้อมูลและในพื้นที่ใดๆ ที่จำเป็นต้องมีลำดับไบนารีแบบสุ่ม ตามที่นักพัฒนาระบุว่าจะช่วยสร้างคีย์เข้ารหัสบนอุปกรณ์มือถือได้เร็วขึ้นมาก คุณสมบัตินี้สามารถใช้เพื่อเข้ารหัสข้อมูลหรือสร้างลายเซ็นอิเล็กทรอนิกส์ได้
ตามที่อธิบายไว้ อลิสา โคเรเนวาซึ่งเป็นนักวิเคราะห์ระบบ "รหัสความปลอดภัย" เซ็นเซอร์ของบริษัทจะสร้างลำดับแบบสุ่มตามความเร็วและความแม่นยำของการตอบสนองของมือผู้ใช้ต่อการเปลี่ยนแปลงของภาพบนหน้าจอพีซีหรือแท็บเล็ต ใช้เมาส์หรือหน้าจอสัมผัสสำหรับการป้อนข้อมูล ดูเหมือนว่า: วงกลมจะเคลื่อนที่อย่างวุ่นวายไปทั่วหน้าจอ พารามิเตอร์บางตัวจะเปลี่ยนไปตามเวลา ในบางช่วงเวลา ผู้ใช้จะตอบสนองต่อการเปลี่ยนแปลงในภาพ เมื่อคำนึงถึงลักษณะเฉพาะของทักษะยนต์ของเขา สิ่งนี้สะท้อนให้เห็นในมวลบิตแบบสุ่ม
คุณสามารถสร้างลำดับตัวเลขสุ่มตามปฏิกิริยาของมนุษย์ที่เกิดขึ้นเองได้
นอกเหนือจากการเข้ารหัสแล้ว เซ็นเซอร์ยังสามารถใช้เพื่อสร้างตัวเลขสุ่มในเกมคอมพิวเตอร์หรือเพื่อเลือกผู้ชนะการแข่งขันได้
ความแปลกใหม่ทางวิทยาศาสตร์
ตามที่บริษัทอธิบายให้ CNews ทราบ วิธีการต่างๆ มากมายในการสร้างเซ็นเซอร์ตัวเลขสุ่มนั้นขึ้นอยู่กับกฎทางกายภาพและปรากฏการณ์ หรือตามอัลกอริธึมที่กำหนด สามารถสร้างลำดับได้โดยใช้คอมพิวเตอร์ - ในกรณีนี้ความไม่แน่นอนของบางส่วนของคอมพิวเตอร์และความไม่แน่นอนของการรบกวนของฮาร์ดแวร์จะถือเป็นพื้นฐานสำหรับการสุ่ม
ความแปลกใหม่ของเทคโนโลยีรหัสรักษาความปลอดภัยอยู่ที่แหล่งที่มาของการสุ่มคือปฏิกิริยาของบุคคลต่อภาพที่เปลี่ยนแปลงซึ่งแสดงบนหน้าจอของอุปกรณ์ ด้วยเหตุนี้ชื่อของสิ่งประดิษฐ์จึงมีคำว่า "ชีวภาพ" บริษัท รายงานว่าทั้ง Rospatent และ Rospatent ไม่พบอะนาล็อกที่ได้รับการจดสิทธิบัตรของเทคโนโลยีในรัสเซียหรือในโลก อย่างไรก็ตาม โดยทั่วไปเทคนิคดังกล่าวเป็นที่ทราบกันดีอยู่แล้ว ตัวอย่างเช่น ลำดับสามารถสร้างขึ้นได้จากการกระทำของผู้ใช้ เช่น การคลิกหรือการเคลื่อนไหวของเมาส์ หรือการกดแป้นพิมพ์บนแป้นพิมพ์
จากข้อมูลของ Koreneva ทีมพัฒนาได้วิเคราะห์วิธีต่างๆ ในการสร้างลำดับแบบสุ่ม ปรากฎว่า ในหลายกรณี ไม่มีการประมาณการที่สมเหตุสมผลของประสิทธิภาพการสร้าง หรือคุณสมบัติทางสถิติของลำดับที่สร้างขึ้น หรือทั้งสองอย่าง นี่เป็นเพราะความยากลำบากในการพิสูจน์เทคโนโลยีที่ประดิษฐ์ขึ้นแล้ว รหัสความปลอดภัยอ้างว่าการวิจัยได้ประมาณการอัตราการสร้างที่สมเหตุสมผล สามารถพิสูจน์ลักษณะความน่าจะเป็นที่ดีและคุณสมบัติทางสถิติได้ และได้ประมาณค่าเอนโทรปีที่เกิดจากการกระทำของมนุษย์
ผลิตภัณฑ์ที่ใช้เทคโนโลยี
"ทวีป" เป็นฮาร์ดแวร์และซอฟต์แวร์ที่ซับซ้อนที่ออกแบบมาเพื่อการเข้ารหัสข้อมูล ใช้ในภาครัฐของรัสเซีย เช่น ในกระทรวงการคลัง ประกอบด้วยไฟร์วอลล์และเครื่องมือสำหรับสร้าง VPN ถูกสร้างขึ้นโดยบริษัท NIP Informzashita และขณะนี้กำลังได้รับการพัฒนาโดย Security Code LLC
โดยเฉพาะอย่างยิ่ง เซิร์ฟเวอร์การเข้าถึง "ทวีป" และระบบป้องกันการเข้ารหัสข้อมูล "Continent-AP" เป็นโมดูลสำหรับการเข้าถึงระยะไกลอย่างปลอดภัยโดยใช้อัลกอริทึม GOST และ "Continent TLS VPN" เป็นระบบสำหรับให้การเข้าถึงระยะไกลที่ปลอดภัยไปยังเว็บแอปพลิเคชันโดยใช้ GOST อัลกอริธึมการเข้ารหัส
Secret Net Studio เป็นโซลูชันที่ครอบคลุมสำหรับการปกป้องเวิร์กสเตชันและเซิร์ฟเวอร์ในระดับข้อมูล แอปพลิเคชัน เครือข่าย ระบบปฏิบัติการ และอุปกรณ์ต่อพ่วง ซึ่งพัฒนา "รหัสความปลอดภัย" ด้วย Jinn-Client ได้รับการออกแบบมาเพื่อการปกป้องข้อมูลด้วยการเข้ารหัสสำหรับการสร้างลายเซ็นอิเล็กทรอนิกส์และการแสดงภาพเอกสารที่เชื่อถือได้ และ Jinn-Server คือซอฟต์แวร์และฮาร์ดแวร์ที่ซับซ้อนสำหรับการสร้างระบบการจัดการเอกสารอิเล็กทรอนิกส์ที่มีความสำคัญทางกฎหมาย
ไลบรารีการเข้ารหัส SCrypt ซึ่งใช้เซ็นเซอร์ใหม่นี้ได้รับการพัฒนาโดย Security Code เพื่อให้ง่ายต่อการใช้อัลกอริธึมการเข้ารหัสในผลิตภัณฑ์ต่างๆ นี่เป็นรหัสโปรแกรมเดียวที่ได้รับการตรวจสอบข้อผิดพลาดแล้ว ไลบรารีรองรับการเข้ารหัสลับ ลายเซ็นอิเล็กทรอนิกส์ และอัลกอริธึมการเข้ารหัส
“รหัสความปลอดภัย” ทำหน้าที่อะไร?
"รหัสความปลอดภัย" เป็นบริษัทรัสเซียที่พัฒนาซอฟต์แวร์และฮาร์ดแวร์ ก่อตั้งขึ้นในปี พ.ศ. 2551 ขอบเขตของผลิตภัณฑ์คือการปกป้องระบบข้อมูลและนำไปสู่การปฏิบัติตามมาตรฐานสากลและมาตรฐานอุตสาหกรรมรวมถึงการปกป้องข้อมูลที่เป็นความลับรวมถึงความลับของรัฐ “รหัสความปลอดภัย” มีใบอนุญาตเก้าฉบับจาก Federal Service for Technical and Export Control (FSTEK) ของรัสเซีย, Federal Security Service (FSB) ของรัสเซีย และกระทรวงกลาโหม
พนักงานของบริษัทประกอบด้วยผู้เชี่ยวชาญประมาณ 300 คน ผลิตภัณฑ์ที่จำหน่ายโดยพันธมิตรที่ได้รับอนุญาต 900 รายในทุกภูมิภาคของรัสเซียและกลุ่มประเทศ CIS ฐานลูกค้ารหัสรักษาความปลอดภัยประกอบด้วยองค์กรภาครัฐและองค์กรการค้าประมาณ 32,000 แห่ง
ซอฟต์แวร์ของคอมพิวเตอร์เกือบทุกเครื่องมีฟังก์ชันในตัวสำหรับสร้างลำดับของตัวเลขที่แจกแจงแบบกึ่งสุ่มเทียมแบบสุ่ม อย่างไรก็ตาม สำหรับการสร้างแบบจำลองทางสถิติ ข้อกำหนดที่เพิ่มขึ้นจะอยู่ที่การสร้างตัวเลขสุ่ม คุณภาพของผลลัพธ์ของการสร้างแบบจำลองดังกล่าวโดยตรงขึ้นอยู่กับคุณภาพของตัวสร้างตัวเลขสุ่มที่กระจายสม่ำเสมอเพราะว่า ตัวเลขเหล่านี้ยังเป็นแหล่งที่มา (ข้อมูลเริ่มต้น) สำหรับการรับตัวแปรสุ่มอื่นๆ ตามกฎการแจกแจงที่กำหนด
น่าเสียดายที่ไม่มีเครื่องกำเนิดในอุดมคติและรายการคุณสมบัติที่ทราบนั้นเต็มไปด้วยรายการข้อเสีย สิ่งนี้นำไปสู่ความเสี่ยงในการใช้ตัวสร้างที่ไม่ดีในการทดลองทางคอมพิวเตอร์ ดังนั้น ก่อนที่จะทำการทดลองทางคอมพิวเตอร์ จำเป็นต้องประเมินคุณภาพของฟังก์ชันการสร้างตัวเลขสุ่มที่มีอยู่ในคอมพิวเตอร์ หรือเลือกอัลกอริธึมการสร้างตัวเลขสุ่มที่เหมาะสม
เพื่อใช้ในฟิสิกส์เชิงคำนวณ เครื่องกำเนิดจะต้องมีคุณสมบัติดังต่อไปนี้:
ประสิทธิภาพการคำนวณคือเวลาในการคำนวณที่สั้นที่สุดที่เป็นไปได้สำหรับรอบถัดไปและจำนวนหน่วยความจำสำหรับการรันเครื่องกำเนิดไฟฟ้า
ความยาวขนาดใหญ่ L ลำดับตัวเลขสุ่ม ช่วงเวลานี้ต้องมีชุดตัวเลขสุ่มที่จำเป็นสำหรับการทดลองทางสถิติเป็นอย่างน้อย นอกจากนี้ แม้จะเข้าใกล้จุดสิ้นสุดของ L ก็ก่อให้เกิดอันตราย ซึ่งอาจนำไปสู่ผลลัพธ์ที่ไม่ถูกต้องของการทดสอบทางสถิติได้
เกณฑ์สำหรับความยาวที่เพียงพอของลำดับสุ่มเทียมนั้นถูกเลือกจากข้อควรพิจารณาต่อไปนี้ วิธีมอนติคาร์โลประกอบด้วยการคำนวณซ้ำของพารามิเตอร์เอาต์พุตของระบบจำลองภายใต้อิทธิพลของพารามิเตอร์อินพุตที่ผันผวนตามกฎการกระจายที่กำหนด พื้นฐานสำหรับการใช้วิธีการนี้คือการสร้างตัวเลขสุ่มด้วย เครื่องแบบการแจกแจงในช่วงเวลาที่เกิดตัวเลขสุ่มด้วยกฎการแจกแจงที่กำหนด ถัดไป ความน่าจะเป็นของเหตุการณ์จำลองจะคำนวณเป็นอัตราส่วนของจำนวนการทำซ้ำของการทดลองแบบจำลองที่มีผลสำเร็จต่อจำนวนการเกิดซ้ำทั้งหมดของการทดลองภายใต้เงื่อนไขเริ่มต้นที่กำหนด (พารามิเตอร์) ของแบบจำลอง
สำหรับการคำนวณความน่าจะเป็นนี้ในแง่สถิติที่เชื่อถือได้ จำนวนการทำซ้ำของการทดสอบสามารถประมาณได้โดยใช้สูตร:
ที่ไหน
- ฟังก์ชันผกผันกับฟังก์ชันการแจกแจงแบบปกติ - ความน่าจะเป็นของความเชื่อมั่นของข้อผิดพลาด การวัดความน่าจะเป็น
ดังนั้นเพื่อไม่ให้เกิดข้อผิดพลาดเกินช่วงความเชื่อมั่น ด้วยความน่าจะเป็นของความเชื่อมั่น เป็นต้น =0.95 จำนวนครั้งของการทดลองซ้ำต้องไม่น้อยกว่า:
(2.2)
ตัวอย่างเช่น สำหรับข้อผิดพลาด 10% (
=0.1) เราได้
และสำหรับข้อผิดพลาด 3% (
=0.03) เราได้มาแล้ว
.
สำหรับเงื่อนไขเริ่มต้นอื่นๆ ของแบบจำลอง ควรทำการทดลองซ้ำชุดใหม่โดยใช้ลำดับสุ่มเทียมที่แตกต่างกัน ดังนั้น ฟังก์ชันการสร้างลำดับแบบสุ่มหลอกจะต้องมีพารามิเตอร์ที่เปลี่ยนแปลง (เช่น R 0 ) หรือความยาวต้องมีอย่างน้อย:
ที่ไหน เค - จำนวนเงื่อนไขเริ่มต้น (จุดบนเส้นโค้งที่กำหนดโดยวิธีมอนติคาร์โล) เอ็น - จำนวนการทำซ้ำของการทดลองแบบจำลองภายใต้เงื่อนไขเริ่มต้นที่กำหนด ล - ความยาวของลำดับการสุ่มเทียม
แล้วแต่ละซีรีย์ของ เอ็น การทำซ้ำของการทดลองแต่ละครั้งจะดำเนินการในส่วนของตัวเองของลำดับสุ่มเทียม
ความสามารถในการทำซ้ำ ตามที่ระบุไว้ข้างต้น เป็นที่พึงปรารถนาที่จะมีพารามิเตอร์ที่เปลี่ยนแปลงการสร้างตัวเลขสุ่มหลอก โดยปกติแล้วนี่คือ R 0 . ดังนั้นจึงเป็นเรื่องสำคัญมากที่การเปลี่ยนแปลง 0 ไม่ทำให้คุณภาพ (เช่น พารามิเตอร์ทางสถิติ) ของเครื่องกำเนิดตัวเลขสุ่มเสียไป
คุณสมบัติทางสถิติที่ดี นี่เป็นตัวบ่งชี้ที่สำคัญที่สุดเกี่ยวกับคุณภาพของเครื่องกำเนิดตัวเลขสุ่ม อย่างไรก็ตามไม่สามารถประเมินด้วยเกณฑ์หรือการทดสอบใดเกณฑ์หนึ่งได้เนื่องจาก ไม่มีเกณฑ์ที่จำเป็นและเพียงพอสำหรับการสุ่มลำดับจำนวนจำกัด สิ่งที่สามารถพูดได้มากที่สุดเกี่ยวกับลำดับตัวเลขแบบสุ่มเทียมก็คือว่ามัน "ดู" แบบสุ่ม ไม่มีการทดสอบทางสถิติใดที่สามารถบ่งชี้ความแม่นยำที่เชื่อถือได้ อย่างน้อยที่สุด คุณจำเป็นต้องใช้การทดสอบหลายอย่างที่สะท้อนถึงแง่มุมที่สำคัญที่สุดของคุณภาพของตัวสร้างตัวเลขสุ่ม เช่น ระดับของการประมาณค่าของเครื่องกำเนิดในอุดมคติ
ดังนั้น นอกเหนือจากการทดสอบเครื่องกำเนิดไฟฟ้าแล้ว สิ่งที่สำคัญอย่างยิ่งคือต้องทดสอบโดยใช้ปัญหามาตรฐานที่ช่วยให้สามารถประเมินผลลัพธ์โดยอิสระด้วยวิธีการวิเคราะห์หรือเชิงตัวเลข
อาจกล่าวได้ว่าแนวคิดเรื่องความน่าเชื่อถือของตัวเลขสุ่มหลอกนั้นถูกสร้างขึ้นในกระบวนการใช้งาน โดยตรวจสอบผลลัพธ์อย่างระมัดระวังทุกครั้งที่เป็นไปได้