
รหัสลับคลาสสิก: Caesar, ROT13, Atbash และ Affine
รหัสลับ Caesar, ROT13, Atbash, Affine และ keyword ทำงานอย่างไร วิธีถอดรหัสด้วยการนับตัวอักษร และเหตุใดปัจจุบันจึงไม่มีรหัสใดปลอดภัย
ผู้คนซ่อนข้อความให้เห็นอยู่ตรงหน้าเป็นเวลากว่าสองพันปีแล้ว กลเม็ดแรก ๆ คือการแทนที่ตัวอักษรแต่ละตัวด้วยตัวอื่นตามกฎตายตัว วิธีเหล่านี้สนุกและเป็นจุดเริ่มต้นที่ดีเยี่ยมสำหรับวิทยาการเข้ารหัสลับ แต่แต่ละวิธีก็พ่ายแพ้ให้ผู้โจมตีที่ใจเย็นและมีดินสอได้ บทความนี้จะแสดงวิธีทำงานของรหัสลับคลาสสิกห้าแบบ และเหตุใดปัจจุบันจึงไม่มีแบบใดปกป้องคุณได้
ข้อความต้นฉบับ ข้อความเข้ารหัส และกุญแจ
ข้อความต้นฉบับคือ ข้อความตัวอักษรล้วน ส่วนเวอร์ชันที่ถูกสลับคือ ข้อความเข้ารหัส รหัสลับ คือกฎที่เปลี่ยนข้อความหนึ่งให้เป็นอีกข้อความหนึ่ง และ กุญแจ คือรายละเอียดลับที่ใช้เลือกวิธีสลับข้อความโดยเฉพาะ
แนวคิดที่ดีซึ่งมีมาตั้งแต่ยุค 1800s คือให้สมมติว่าศัตรูรู้วิธีการของรหัสลับ และมีเพียงกุญแจเท่านั้นที่เป็นความลับ ทุกอย่างต่อไปนี้ควรประเมินตามมาตรฐานนั้น: หากมีคนรู้ว่าคุณทำอะไร แต่ไม่รู้กุญแจของคุณ เขาจะยังอ่านข้อความของคุณได้หรือไม่?
การเลื่อนแบบ Caesar: เลื่อนตัวอักษรในอักษร
การเลื่อนแบบซีซาร์ จะเลื่อนตัวอักษรแต่ละตัวไปข้างหน้าตามจำนวนที่กำหนดไว้ตายตัว ใช้การเลื่อน 3 ตำแหน่ง โดยเขียน A เป็น D, B เป็น E และเมื่อถึง Z จะวนกลับไปเป็น C นักเขียนชาวโรมันชื่อซูเอโทนิอุสบันทึกไว้ว่า จูเลียส ซีซาร์ใช้วิธีนี้กับจดหมายทางทหาร
จำนวนตำแหน่งที่เลื่อนคือกุญแจ ใครก็ตามที่รู้จำนวนนี้ก็สามารถเลื่อนกลับได้ ปัญหาคือมีกุญแจให้ลองน้อยมาก โดยมีการเลื่อนที่ใช้ได้จริงเพียง 25 แบบ ผู้โจมตีจึงลองได้ทุกแบบ นี่คือการค้นหาแบบ ลองทุกความเป็นไปได้ ซึ่งใช้เวลาประมาณหนึ่งนาทีหากลองด้วยมือ และแทบไม่ต้องใช้เวลาเลยเมื่อทำบนคอมพิวเตอร์
ROT13
ROT13 กำหนดให้การเลื่อนแบบซีซาร์เลื่อนไป 13 ตำแหน่ง เนื่องจากตัวอักษรมีทั้งหมด 26 ตัว การเลื่อน 13 สองครั้งจะพากลับไปยังจุดเริ่มต้น การเข้ารหัสและการถอดรหัสจึงเป็นการดำเนินการแบบเดียวกัน ฟอรัมต่าง ๆ เคยใช้วิธีนี้เพื่อซ่อนเนื้อหาที่เปิดเผยเนื้อเรื่องสำคัญ เพราะมันช่วยป้องกันการเหลือบมองโดยไม่ได้ตั้งใจเท่านั้น ไม่ใช่เพราะมันปกป้องข้อมูลได้จริง
Atbash: ตัวอักษรที่สะท้อนเป็นเงา
Atbash เขียนตัวอักษรเรียงย้อนกลับไว้ข้างใต้ตัวเอง ดังนั้น A จับคู่กับ Z, B จับคู่กับ Y, C จับคู่กับ X และต่อไปเรื่อย ๆ วิธีนี้มาจากตัวอักษรฮีบรู และปรากฏอยู่ในคัมภีร์โบราณบางฉบับ
เช่นเดียวกับ ROT13 วิธีนี้ ไม่มีกุญแจเลย และย้อนกลับตัวเองได้: สะท้อนภาพสะท้อนอีกครั้งก็จะกลับมาเหมือนเดิม นั่นทำให้มันเป็นปริศนา ไม่ใช่กลอนล็อก เมื่อใครก็ตามมองเห็นรูปแบบแล้ว ข้อความทุกข้อความที่เคยเขียนด้วยวิธีนี้ก็จะถูกเปิดอ่านได้
รหัสลับ Affine: คูณแล้วเลื่อน
กำหนดให้ตัวอักษรแต่ละตัวมีจำนวน โดย A = 0 ไปจนถึง Z = 25 รหัสลับ affine จะนำจำนวนนั้นมาคูณด้วย a แล้วบวก b จากนั้นวนกลับเมื่อถึง 26:
E(x) = (a·x + b) mod 26
กำหนดให้ a = 1 แล้วคุณจะได้การเลื่อนแบบ Caesar ธรรมดา การคูณจะทำให้ตัวอักษรที่อยู่ใกล้กันกระจายห่างออกจากกันมากขึ้น จึงดูสับสนยิ่งกว่าเดิม
แต่ก็มีข้อจำกัด สำหรับการถอดรหัส ตัวอักษรรหัสลับแต่ละตัวต้องมาจากตัวอักษรต้นฉบับเพียงตัวเดียวเท่านั้น สิ่งนี้จะเกิดขึ้นก็ต่อเมื่อ a ไม่มีตัวประกอบร่วมกับ 26 ดังนั้น a = 3 และ a = 5 จึงใช้ได้ แต่ a = 2 หรือ a = 13 ใช้ไม่ได้ เพราะจะทำให้ตัวอักษรสองตัวที่ต่างกันถูกส่งไปยังตำแหน่งเดียวกัน มีค่า a ที่อนุญาตเพียง 12 ค่า และเมื่อรวมกับค่า b 26 ค่า จะได้กุญแจทั้งหมด 312 แบบ ดีกว่า 25 แบบ แต่ก็ยังน้อยมากสำหรับคอมพิวเตอร์
การแทนที่ด้วยคีย์เวิร์ด: สับเปลี่ยนได้ทุกรูปแบบ
ทำไมต้องเลื่อนตัวอักษรทุกตัวตามกฎด้วย? การเข้ารหัสแบบแทนที่ ทำให้กุญแจเป็นชุดตัวอักษรใด ๆ ที่สลับลำดับได้ เพื่อให้จำชุดที่สลับแล้วได้ง่าย ให้เขียนคีย์เวิร์ดก่อน ลบตัวอักษรที่ซ้ำกัน แล้วเติมตัวอักษรที่ยังไม่ได้ใช้ตามลำดับ คีย์เวิร์ด ZEBRAS จะได้ชุดตัวอักษรกุญแจ ZEBRASCDFGHIJKLMNOPQTUVWXY ดังนั้น A จะกลายเป็น Z, B เป็น E, C เป็น B และตัวอื่น ๆ ก็เช่นเดียวกัน
จำนวนชุดที่สลับได้มี 26 แฟกทอเรียล หรือประมาณ 4 × 10²⁶ แบบ การลองทั้งหมดเป็นไปไม่ได้ จึงดูเหมือนว่าการเข้ารหัสแบบแทนที่จะแกะไม่ได้มานานหลายศตวรรษ แต่จริง ๆ แล้วไม่ใช่
ทำไมวิธีเหล่านี้จึงไม่ปลอดภัยในปัจจุบัน
การเข้ารหัสแบบแทนที่มีจุดอ่อนร้ายแรง: ตัวอักษรหนึ่งตัวจะกลายเป็นตัวอักษรเดิมเสมอ ดังนั้น รูปแบบ ของภาษาจึงยังคงอยู่ ในภาษาอังกฤษ E ปรากฏบ่อยที่สุด ตามด้วย T, A และ O ส่วน Q และ Z พบได้น้อย นักวิชาการในโลกอิสลามอธิบาย การวิเคราะห์ความถี่ ไว้ราวศตวรรษที่ 9: ให้นับตัวอักษรในข้อความที่เข้ารหัส จับคู่ตัวที่พบบ่อยที่สุดกับ E แล้วใช้รูปแบบของคำ (คำที่มีตัวอักษรเดียวอาจเป็น A หรือ I) เพื่อเติมส่วนที่เหลือ
ข้อความที่ยาวขึ้นจะให้สถิติที่แม่นยำกว่า ดังนั้นแม้จะมีจำนวนกุญแจที่เป็นไปได้มหาศาลก็ไม่ได้ช่วย การเข้ารหัสสมัยใหม่ถูกออกแบบให้ข้อความที่เข้ารหัสไม่แสดงรูปแบบเช่นนี้ และความปลอดภัยก็อาศัยกุญแจที่มีขนาดใหญ่เกินกว่าจะเดาได้ สำหรับสิ่งที่ต้องใช้จริง ให้ใช้เครื่องมือสมัยใหม่ที่ผ่านการทดสอบอย่างดี และอย่าสร้างวิธีของคุณเอง
สำรวจเรื่องนี้ในห้องทดลองได้อย่างไร
The Codes & Ciphers Lab gives you a cipher wheel you can turn, plus tools to count letters and test guesses. A good order through the free first world:
- Start with The Caesar shift and try breaking one.
- See self-inverse behaviour in ROT13, then Atbash.
- Test which multipliers work in Affine: multiply, then shift.
- Build a shuffled key in Keyword substitution.
This is a simplified teaching model of historical ciphers. It is meant to build intuition about keys and attacks, not to protect real messages.
- กุญแจเป็นตัวกำหนดการสลับลำดับ ส่วนผู้โจมตีให้ถือว่ารู้วิธีการ
- Caesar มีกุญแจที่ใช้ได้เพียง 25 แบบ ส่วน ROT13 และ Atbash ไม่มีกุญแจลับ
- ตัวคูณของ affine ต้องไม่มีตัวประกอบร่วมกับ 26 จึงเหลือค่าที่ใช้ได้ 12 ค่า
- การแทนที่ด้วยคีย์เวิร์ดมีจำนวนกุญแจที่เป็นไปได้มหาศาล แต่ก็พ่ายแพ้ต่อการวิเคราะห์ความถี่ของตัวอักษร
การเลื่อนแบบซีซาร์
ตัวอักษรทุกตัวเลื่อนไปเป็นระยะทางเท่ากัน. ใช้เวลาประมาณ 6 นาที ฟรี ไม่ต้องมีบัญชี และใช้งานได้ในเบราว์เซอร์
บทเรียนฟรีเพิ่มเติมจากคู่มือนี้
การจำลองสถานการณ์บน Novareka เป็นแบบจำลองเพื่อการเรียนรู้ที่ตั้งใจทำให้เรียบง่ายขึ้น แสดงให้เห็นว่าแนวคิดหนึ่ง ๆ ทำงานอย่างไร แต่ไม่สามารถใช้แทนคำแนะนำจากผู้เชี่ยวชาญด้านวิชาชีพ การแพทย์ หรือวิศวกรรมได้
อ่านต่อ
ดูบทความทั้งหมด →
บทความอธิบาย
บทความอธิบาย
บทความอธิบาย
