0Pricing
Cryptology Academy · บทเรียน

ความสุ่มแท้จริงกับความสุ่มเทียม

แยกแยะแหล่งเอนโทรปีจากฮาร์ดแวร์กับ PRNG จากซอฟต์แวร์

ความสุ่มแท้จริงกับความสุ่มเทียม เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดความสุ่มจึงสำคัญ

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

เครื่องสร้างตัวเลขสุ่มแท้จริง (TRNG)

TRNG รวบรวมเอนโทรปีทางกายภาพ เช่น สัญญาณรบกวนความร้อนในตัวต้านทาน สัญญาณรบกวนช็อตในไดโอดที่มีไบแอสย้อนกลับ การสลายตัวของสารกัมมันตรังสี การเคลื่อนเมาส์ ช่วงเวลาการกดแป้น และเวลาแฝงในการค้นหาของดิสก์ สิ่งเหล่านี้เป็นปรากฏการณ์ทางกายภาพที่คาดเดาไม่ได้จริง

แหล่งรวมเอนโทรปี

OS รักษาแหล่งรวมเอนโทรปี ซึ่งเป็นชุดตัวอย่างสัญญาณรบกวนทางกายภาพที่นำมา XOR และแฮชรวมกัน Linux: /dev/random และ /dev/urandom ดึงข้อมูลจากแหล่งรวมนี้ แหล่งรวมจะถูกเติมอย่างต่อเนื่องขณะที่ระบบทำงาน

เครื่องสร้างตัวเลขเสมือนสุ่ม (PRNG)

PRNG (หรือเรียกอีกอย่างว่า RNG แบบกำหนดแน่นอน / DRNG) ขยายค่าเริ่มต้นสั้น ๆ ให้เป็นกระแสไบต์เสมือนสุ่มขนาดยาวโดยใช้อัลกอริทึมแบบกำหนดแน่นอน เมื่อใช้ค่าเริ่มต้นเดียวกัน จะให้ผลลัพธ์เหมือนกัน ไม่เหมาะสำหรับการเข้ารหัส เว้นแต่จะเริ่มต้นด้วยเอนโทรปีแท้จริง

PRNG เทียบกับ CSPRNG

PRNG อาจมีอคติทางสถิติที่ตรวจจับได้ หรืออาจคาดเดาได้จากผลลัพธ์ที่สังเกตเห็น PRNG ที่ปลอดภัยเชิงเข้ารหัส (CSPRNG) เพิ่มคุณสมบัติสองประการ ได้แก่ (1) การรักษาความลับไปข้างหน้า ซึ่งผลลัพธ์ในอดีตไม่สามารถคาดเดาได้จากสถานะปัจจุบัน และ (2) ความต้านทานการไล่ย้อนกลับ ซึ่งผลลัพธ์ในอนาคตไม่สามารถคาดเดาได้จากผลลัพธ์ในอดีต

การทดสอบการจำแนก

PRNG จะปลอดภัยเชิงเข้ารหัส หากไม่มีอัลกอริทึมเวลาพหุนามใดสามารถแยกแยะผลลัพธ์ของมันออกจากลำดับสุ่มแท้จริงได้ด้วยความน่าจะเป็นที่ดีกว่า 1/2 อย่างมีนัยสำคัญ นี่คือเกณฑ์การคาดเดาบิตถัดไปไม่ได้

แหล่งเอนโทรปีบนแพลตฟอร์มต่าง ๆ

Linux: /dev/urandom (ไม่บล็อกหลังการเริ่มต้นด้วยค่าเริ่มต้นครั้งแรก), การเรียกระบบ getrandom() Windows: CryptGenRandom(), BCryptGenRandom() macOS/iOS: SecRandomCopyBytes() เบราว์เซอร์: window.crypto.getRandomValues() ทั้งหมดป้อนข้อมูลเข้าสู่แหล่งรวมเอนโทรปีของ OS

การทดสอบทางสถิติ

NIST SP 800-22 มีการทดสอบทางสถิติ 15 รายการสำหรับความสุ่ม ได้แก่ ความถี่ ความถี่ของบล็อก การเรียงต่อกัน การทดสอบสากลของ Maurer ความซับซ้อนเชิงเส้น และอื่น ๆ การผ่านการทดสอบทางสถิติไม่ได้พิสูจน์ความปลอดภัยเชิงเข้ารหัส แต่เพียงแสดงว่าไม่มีอคติที่เห็นได้ชัด

คุณภาพของค่าเริ่มต้น

CSPRNG ที่เริ่มต้นด้วยเอนโทรปีอ่อนแอ เช่น เวลาปัจจุบันในหน่วยวินาที จะสามารถคาดเดาได้ ผู้โจมตีที่ทราบค่าเริ่มต้นจะสร้างผลลัพธ์ทั้งหมดขึ้นใหม่ได้ ควรเริ่มต้นจากเอนโทรปีของ OS เสมอ โดยใช้ os.urandom(32) ใน Python ไม่ใช่ time.time() หรือ random.random()

เครื่องสร้างตัวเลขสุ่มฮาร์ดแวร์

Intel RDRAND (คำสั่ง x86) คืนค่าไบต์สุ่มที่สร้างด้วยฮาร์ดแวร์จาก TRNG บนชิป นอกจากนี้ยังมีฮาร์ดแวร์เทียบเท่าจาก AMD และ ARM Linux ผสม RDRAND ลงใน /dev/urandom ใช้เป็นเอนโทรปีเสริม ไม่ใช่แหล่งเดียว เนื่องจากข้อกังวลด้านความน่าเชื่อถือ

เครื่องสร้างตัวเลขสุ่มเชิงควอนตัม

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

แบบทดสอบสั้น ๆ

คุณสมบัติใดทำให้ CSPRNG แตกต่างจาก PRNG ทั่วไป

สรุปทบทวน

TRNG รวบรวมเอนโทรปีทางกายภาพ PRNG ขยายค่าเริ่มต้นแบบกำหนดแน่นอน และ CSPRNG แยกไม่ออกจากความสุ่มแท้จริง แหล่งรวมเอนโทรปีของ OS ผสานทั้งสองประเภทเข้าด้วยกัน ต่อไป: การออกแบบ CSPRNG เฉพาะที่ใช้จริง

คำถามที่พบบ่อย

บทเรียน “ความสุ่มแท้จริงกับความสุ่มเทียม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ความสุ่มแท้จริงกับความสุ่มเทียม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ความสุ่มแท้จริงกับความสุ่มเทียม”

แยกแยะแหล่งเอนโทรปีจากฮาร์ดแวร์กับ PRNG จากซอฟต์แวร์ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ความสุ่มแท้จริงกับความสุ่มเทียม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ความสุ่มแท้จริงกับความสุ่มเทียม
  2. PRNG ที่ปลอดภัยทางการเข้ารหัส
  3. เอนโทรปีไม่เพียงพอและข้อผิดพลาดจากคีย์อ่อนแอ
  4. การสร้างคีย์ นอนซ์ และ IV อย่างปลอดภัย
← กลับไปที่ Cryptology Academy