ความลับของตัวเลขสุ่ม: ทำไมบาง “เลขสุ่ม” ถึงไม่ปลอดภัยในโลกไซเบอร์?

ความลับของตัวเลขสุ่ม: ทำไมบาง “เลขสุ่ม” ถึงไม่ปลอดภัยในโลกไซเบอร์?

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

แต่เคยสงสัยไหมว่า ตัวเลขที่คอมพิวเตอร์สร้างขึ้นมา “สุ่ม” จริงหรือเปล่า? และทำไมบางครั้ง “เลขสุ่ม” เหล่านั้นถึงกลายเป็นจุดอ่อนด้านความปลอดภัยได้?

ตัวเลข “สุ่ม” มีสองแบบ: สุ่มจริง กับ สุ่มเทียม

ความเข้าใจแรกที่ต้องมีคือ ตัวเลข “สุ่ม” ของคอมพิวเตอร์นั้นมีอยู่สองประเภทหลักๆ ที่ต่างกันลิบลับ

ตัวสร้างเลขสุ่มแท้ (TRNGs)

TRNGs ย่อมาจาก True Random Number Generators เป็นตัวสร้างเลขสุ่มที่อาศัยปรากฏการณ์ทางกายภาพในโลกแห่งความจริงที่ คาดเดาไม่ได้ โดยธรรมชาติ เช่น เสียงรบกวนในวงจรไฟฟ้า หรือการเปลี่ยนแปลงของอุณหภูมิ

แหล่งที่มาของความ ไม่แน่นอน เหล่านี้ถูกนำมาแปลงเป็นตัวเลข ทำให้ตัวเลขที่ได้นั้นเป็น สุ่มแท้ ยากที่จะคาดเดาได้โดยสิ้นเชิง ไม่ว่าใครจะรู้เงื่อนไขเริ่มต้นก็ตาม

ตัวสร้างเลขสุ่มเทียม (PRNGs)

PRNGs หรือ Pseudo-Random Number Generators สร้างตัวเลขสุ่มขึ้นมาด้วย สูตรทางคณิตศาสตร์ ที่กำหนดไว้

การทำงานเริ่มต้นจากค่าที่เราเรียกว่า seed (เมล็ดพันธุ์) จากนั้นอัลกอริทึมก็จะนำ seed นี้ไปประมวลผล เพื่อสร้างลำดับของตัวเลขที่ดูเหมือนสุ่มออกมา

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

เปรียบง่ายๆ เหมือนคุณสับไพ่ด้วยวิธีเดิมทุกครั้ง ผลลัพธ์ก็จะเป็นชุดไพ่เรียงตามแพทเทิร์นเดิมนั่นเอง

ทำไม PRNG ถึง “ไม่ปลอดภัย” ในบริบทความมั่นคง?

เมื่อพูดถึง “ความปลอดภัย” คำว่า “คาดเดาไม่ได้” คือหัวใจสำคัญ

สำหรับ PRNGs จุดอ่อนอยู่ที่ seed และการทำงานที่เป็นระบบระเบียบของอัลกอริทึม

ถ้าผู้ไม่หวังดีสามารถ เดา หรือ ล่วงรู้ ค่า seed ที่ใช้เริ่มต้นได้ หรือแม้กระทั่งรู้ สถานะปัจจุบัน ของ PRNG พวกเขาก็จะสามารถ คาดเดา ลำดับตัวเลข “สุ่ม” ถัดไปที่จะถูกสร้างขึ้นมาได้อย่างแม่นยำ

ลองนึกภาพว่ารหัสผ่านของคุณถูกสร้างด้วย PRNG ที่มี seed ที่คาดเดาได้ หรือคีย์เข้ารหัสข้อมูลลับของคุณถูกสร้างในลักษณะเดียวกัน

มันจะเหมือนกับการมอบกุญแจห้องนิรภัยให้กับผู้ร้ายไปฟรีๆ

นี่คือความเสี่ยงใหญ่หลวงที่ทำให้ PRNG ธรรมดา ไม่เหมาะสม กับการใช้งานที่ต้องการ ความมั่นคงปลอดภัยสูง เช่น การเข้ารหัส หรือการสร้างโทเคนทางการเงิน

ทางออกคือ CSPRNGs: ตัวสร้างเลขสุ่มที่ถูกออกแบบมาเพื่อความปลอดภัย

เพื่อแก้ไขปัญหาด้านความปลอดภัยของ PRNGs ทั่วไป จึงได้สร้าง CSPRNGs หรือ Cryptographically Secure Pseudo-Random Number Generators ขึ้นมา

CSPRNGs คือ PRNGs ที่ถูกออกแบบมาเป็นพิเศษ ให้มีคุณสมบัติที่แข็งแกร่งในการต่อต้านการคาดเดา:

  • ใช้ seed ที่คาดเดายาก: CSPRNGs จะดึงค่า entropy (ความไม่แน่นอน) จากแหล่งต่างๆ เช่น TRNGs เพื่อสร้าง seed ที่ยากต่อการเดามากที่สุด
  • ความซับซ้อนของอัลกอริทึม: อัลกอริทึมของ CSPRNGs มีความซับซ้อนสูง ทำให้ยากที่จะย้อนกลับไปหา seed หรือ สถานะ เดิม
  • การ “re-seed” อย่างต่อเนื่อง: CSPRNGs มักจะมีการอัปเดตหรือเปลี่ยน seed อยู่ตลอดเวลา เพื่อป้องกันไม่ให้ผู้โจมตีสามารถคาดเดาสถานะในอนาคตได้

ในงานด้าน ความปลอดภัยไซเบอร์ ทั้งหมด ไม่ว่าจะเป็นการสร้าง คีย์เข้ารหัส SSL/TLS หรือการสร้าง session ID ที่ปลอดภัย จะต้องใช้ CSPRNGs เป็นหลัก เพื่อให้มั่นใจได้ว่าตัวเลข “สุ่ม” เหล่านั้นจะ คาดเดาไม่ได้จริง และเป็นรากฐานที่แข็งแกร่งให้กับระบบป้องกันภัย

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