แนวคิด
หากกล่าวถึงการเข้ารหัสและถอดรหัสมักจะได้ยินคำว่า “Cryptography” คำว่า Cryptography นี้มาจากคำว่า Crypto ที่แปลว่า “การซ่อน” ผนวกกับคำว่า Graph ที่แปลว่า “การเขียน” ดังนั้น Cryptography จึงมีความหมายว่า “การเขียนเพื่อซ่อนข้อมูล” โดยมีจุดประสงค์เพื่อป้องกันไม่ให้ผู้อื่นสามารถอ่านข้อมูลได้ ยกเว้นผู้ที่เราต้องการให้อ่านได้เท่านั้น ซึ่งผู้ที่เราต้องการให้อ่านได้จะต้องทราบวิธีการถอดรหัสข้อมูลที่ซ่อนไว้ หากแบ่ง Cryptography ตามยุคสมัยแล้วเราสามารถที่จะแบ่งได้เป็น 2 ยุคคือ ยุคประวัติศาสตร์ (หรือที่เรียกว่ายุค Classic) และยุคปัจจุบัน (Modern) กระบวนการของ Cryptography มี 2 อย่างคือ Data Encryption และ Data Decryption ซึ่งหมายถึงการเข้ารหัสข้อมูล และการถอดรหัสข้อมูลตามลำดับ ส่วนประโยชน์ของ Cryptography คือ การรักษาความลับของข้อมูล เนื้อหาในส่วนนี้ผู้จัดทำได้รับความอนุเคราะห์ข้อมูลจาก อาจารย์ ดร.สมนึก พ่วงพรพิทักษ์ และ ผศ.ธวัชชัย ชมศิริ ให้มาใช้ประกอบการสอน ต้องขอบคุณมา ณ โอกาสนี้
วัตถุประสงค์
1. เพื่อให้เข้าใจหลักการของการเข้ารหัสทั้งแบบดั้งเดิมและแบบสมัยใหม่
2. เพื่อเป็นแนวทางในการสร้างวิธีการเข้ารหัสข้อมูล
3. เพื่อให้เข้าใจกลไกลของการพิสูจน์ทราบตัวตน
การเข้ารหัสในยุค Classic
จากหลักฐานทางประวัติศาสตร์ที่อาจจะตีความได้ไม่ชัดเจนมากนัก บ้างก็เชื่อว่าการเข้ารหัสเกิดขึ้นโดยชาวอียิปต์เมื่อประมาณ 4,500 ปีมาแล้ว บ้างก็เชื่อว่าคิดค้นโดยชาวอาหรับเมื่อประมาณ 500-600 ปีก่อนคริสตกาล วิธีการเข้ารหัสที่สำคัญในยุคก่อนๆมีหลายวิธีการ เช่น Monoalphabetic cipher, Polyalphabetic ciphers และ Caesar cipher เป็นต้น
การเข้ารหัสแบบ Caesar
การเข้ารหัสข้อมูลแบบ Caesar cipher มีขึ้นในราว 50-70 ปีก่อนคริสตกาล ได้รับการคิดค้นโดย กษัตริย์ Julius Caesar แห่งโรมัน เพื่อใช้เข้ารหัสข้อความในสารที่ส่งในระหว่างการทำศึกสงครามเพื่อ ป้องกันไม่ให้ศัตรูสามารถอ่านข้อความในสารนั้นได้หากสารนั้นถูกแย่งชิงไป การเข้ารหัสแบบ Caesar cipher จะใช้วิธีการแทนที่ตัวอักษรที่อยู่ห่างออกไปข้างหน้าสามตัว เช่น แทนที่ตัว A ด้วยตัว D และแทนที่ตัว B ด้วยตัว E เป็นต้น ดังรูปที่ 1 ดังนั้นการเข้ารหัสแบบ Caesar cipher จึงเป็นการเลื่อนตัวอักษรโดย จำนวนครั้งของการเลื่อนเท่ากับ 3 (Shipment, n = 3)
รูปที่ 1 การเข้ารหัสแบบ Caesar Cipher
การแม็ปของตัวอักษรในการเข้ารหัสแบบ Caesar cipher สามารถเขียนได้ ดังนี้
Plain : ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher : DEFGHIJKLMNOPQRSTUVWXYZABC
หากใช้การเข้ารหัสข้อมูลแบบ Caesar cipher เข้ารหัส Fox Code จะได้ ดังนี้
Plainertext : the quick brown fox jumps over the lazy dog
Ciphertext : WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ
(Fox Code คือประโยค “The quick brown fox jumps over the lazy dog” ซึ่งเป็นประโยคสั้นๆที่มีตัวอักษรภาษาอังกฤษครบทั้ง 26 ตัว) ต่อมา Augustus (ผู้เป็น Caesar องค์ที่สองจากทั้งหมด 12 Caesar) ซึ่งเป็นหลานของ Julius Caesar ได้เปลี่ยนสูตรให้แทนที่ตัว A ด้วยตัว C และแทนที่ตัว B ด้วยตัว D ดังนั้นจึงกลายเป็นการเลื่อนตัวอักษรที่มีจำนวน ครั้งของการเลื่อนเท่ากับสอง (Shiftment, n=2) อย่างไรก็ตามการเข้ารหัสทั้งสองวิธีนี้สามารถถูกเบรค (Break) ได้โดยง่าย (การเบรคในที่นี้หมายถึงการถอดรหัสข้อมูลออกมาได้ ถึงแม้จะไม่ทราบวิธีการเข้ารหัสและไม่มีกุญแจที่ใช้ถอดรหัสก็ตาม) การเบรคการเข้ารหัสข้อมูลแบบ Caesar cipher ทำได้โดยการทดลองทำการเลื่อนตัวอักษรทุกตัว โดยทดลองเลื่อนด้วยจำนวน Shiftment ที่ต่างกันคือ n = 1, n = 2, n = 3, … ไปจนถึง n = 26 ซึ่งจะใช้การจำนวนครั้งในการทดสอบสูงสุดเพียง 26 ครั้ง ก็จะสามารถทำการเบรคได้ในที่สุด
ตัวอย่างการเข้าและถอดรหัสแบบ Caesar Cipher (คลิ๊กเม้าส์ที่คำว่า Start เพื่อดูการทำงาน)