0144 | Enigma code และช่องโหว่ของมัน

บังเอิญเจอคลิปจาก channel numberphile ใน youtube มาครับ (เป็น subscriber ของ channel นี้อยู่ ดูเพลินดี) พอดีเค้าอัพคลิปเรื่องเครื่อง Enigma นี้ขึ้นมาพอดี ก็เลยเอามาแปะกันครับ

เกริ่นคร่าวๆ ก่อน เจ้าเครื่อง Enigma นี่เป็นเครื่องที่เกิดขึ้นมาในสมัยสงครามโลกครับ ด้วยความที่ต้องป้องกันการถูกดักฟัง ข้อความทั้งหมดที่ส่งกันไปส่งกันมาก็เลยต้องเข้ารหัส ทีนี้ก็มีการเข้ารหัสหลายๆ วิธีเกิดขึ้นมา ศาสตร์แห่งการเข้ารหัสก็พัฒนาอย่างมากกันในช่วงนี้แหละครับ ไอ้อะไรหลายๆ อย่างที่เราใช้เข้ารหัสกันทุกวันนี้บางส่วนก็ยังคงเป็นมรดกตกทอดจากยุคสงครามโลกอยู่เลยก็มี

เข้าเรื่อง ไอ้เครื่อง Enigma นี่มันจะไว้เข้ารหัสโดยการแทนที่ตัวอักษรแบบผันแปรครับ คือตัวอักษรเดิม ถ้าเรากดซ้ำๆ ข้อความที่ได้จะเปลี่ยนไปเรื่อยๆ เช่นข้อความต้นแบบคือ aaaaa เวลาเข้ารหัสแล้วอาจออกมาเป็น iudgh อะไรแบบนี้ (อันนี้มั่วมานะ) โดยใช้ jumper ในการเชื่อมสลับคู่ตัวอักษรทั้ง 26 ตัว และแกนหมุน 3 หลักที่ช่วยให้ตัวอักษรหมุนเวียนไปไม่ซ้ำกันเพื่อให้ถอดรหัสได้ยากถ้าไม่รู้การตั้งค่าเริ่มต้นที่ถูกต้องทั้งหมด

พูดไปอาจจะนึกไม่ออก ลองดูคลิปนี้เลยดีกว่าครับ

ทีนี้ ปัญหาของ enigma code นี่มันคือ การที่ตัวอักษรต้นฉบับตัวเดิม จะไม่ได้ถูกแทนที่ด้วยตัวอักษรปลายทางเดิมเสมอเนี่ย มันมีช่องโหว่ว่า มันจะไม่มีวันแทนที่กลับมาเป็นตัวเองโดยเด็ดขาด ถ้ารู้ข้อความต้นฉบับเพียงบางส่วน (อาจจะแค่ 7-8 ตัวอักษร) ก็จะสามารถคำนวณหาค่าตั้งต้นสำหรับชุดคำนั้นได้โดยการทาบข้อความต้นฉบับกับข้อความที่เข้ารหัสแล้ว แล้วไล่ไปเรื่อยๆ ครับ ดูคลิปเลยดีกว่า

ในคลิปมีพูดถึงบุคคลสำคัญของคนที่ทำงานสายคอมพิวเตอร์โปรแกรมมิ่งอยู่ด้วยคนนึงครับ เค้าคือ Alan Turing … ประวัติเป็นไงไปอ่านต่อใน wikipedia ละกันนะครับ (ตึ่ง!)