การเข้ารหัสอย่างง่ายด้วยการสุ่ม

การเข้ารหัสอย่างง่ายด้วยการสุ่ม

19-11-2021
การเข้ารหัสอย่างง่ายด้วยการสุ่ม

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

สมมุติว่าข้อมูลของเราเขียนเป็น สายธารของเลข 0 กับ 1 แต่เราไม่อยากให้ทุกคนที่ได้ข้อมูลไปมีความสามารถในการอ่านข้อมูลเรา เราอาจใช้วิธีการสร้างกฎเกณฑ์ในการสลับ 0 กับ 1 ที่เฉพาะคนที่เราบอกกฎเท่านั้นสามารถแปลงสายธารของตัวเลขที่ถูกเข้ารหัสเหล่านี้กลับไปเป็นตัวเลขเดิมได้ ตัวอย่างเช่น เราอยากส่ง 0011 ไปและเราเปลี่ยนมันเป็น 1100 แต่เราบอกคนที่เราอนุญาติให้อ่านว่าถ้าได้เลขมา เปลี่ยน 0 เป็น 1  และเปลี่ยน 1 เป็น 0 นะ วิธีง่ายๆ แบบนี้ ก็อาจจะช่วยเราได้

แต่ถ้าเราใช้วิธีที่ง่ายเกินไปแบบนี้ไปสักพัก ไม่นานคนที่อยากอ่านข้อมูลที่น่าจะฉลาดไม่แพ้เรา ก็คงสามารถเข้าใจได้ว่าแค่สลับก็อ่านได้เป็นแน่แท้ เราจึงมีอีกวิธีหนึ่งที่ซับซ้อนขึ้นมาอีกหน่อย คือ การใช้ logical operator XOR โดย XOR หรือ exclusive or นำตัวเลขสองตัวที่เป็น 0 กับ 1 มาเทียบกัน ถ้า มี 1 เพียงตัวเดียว ได้ค่าเป็น 1 ถ้ามีตัวเลขซ้ำ ได้ค่าเป็น 0 ดังนั้นเราจะได้ว่า

1 XOR 1 = 0, 0 XOR 0 = 0

1 XOR 0 = 1, 0 XOR 1 = 1

และเห็นว่าถ้าข้อมูลของเราเป็น A กับตัวเลขอะไรก็ได้ B เราจะได้ว่า (A XOR B) XOR B = A

B จึงอาจทำตัวเสมือนกุญแจ โดยที่ เราส่งข้อมูล ออกไปเป็น A XOR B และ เราให้ B กับคนที่เราอนุญาตให้อ่านได้ เพื่อทำการถอดรหัส ด้วยการนำข้อมูลที่ได้ XOR กับกุญแจ B เพื่อให้ได้ข้อมูล A กลับมา ทีนี้ตัวเลข B จะทำหน้าทีเป็นกุญแจที่ดีได้ก็ต่อเมื่อ เราไม่สามารถคาดเดา B ได้ และ B มีโอกาสเป็น 0 และ 1 พอๆ กัน ซึ่งก็คือสมบัติของตัวเลขสุ่มแท้จริงนั้นเอง ตัวเลขสุ่มจึงมีคุณค่าอย่างมากโดยเฉพาะในวงการ การเข้าและถอดรหัสด้วยประการฉะนี้แล

 

เรียบเรียง: ฐิติ สิริธนากร
ตรวจทาน: ธานี หลินลาโพธิ์
กองวิชาการเทคโนโลยีและนวัตกรรม สำนักวิชาการพิพิธภัณฑ์วิทยาศาสตร์ องค์การพิพิธภัณฑ์วิทยาศาสตร์แห่งชาติ

ข่าวสารที่่คล้ายกัน