รหัสลับยุค Classic
ถ้าพูดถึงการถอดรหัสมักได้ยินคำว่า Cryptography ซึ่งมาจากคำว่า Crypto และ Graph ซึ่งคำว่า Crypto แปลว่า การซ่อน ผนวกกับคำว่า Graph แปลว่า การเขียน ซึ่งแปลได้ว่า การเขียนเพื่อซ่อนข้อมูล
ผู้เข้าชมรวม
1,464
ผู้เข้าชมเดือนนี้
3
ผู้เข้าชมรวม
ถ้าพูดถึงการถอดรหัสมักได้ยินคำว่า Cryptography ซึ่งมาจากคำว่า Crypto และ Graph
ซึ่งคำว่า Crypto แปลว่า การซ่อน ผนวกกับคำว่า Graph แปลว่า การเขียน ซึ่งแปลได้ว่า การเขียนเพื่อซ่อนข้อมูล จุดประสงค์ก็เพื่อป้องกันข้อความมิให้ผู้ใดอ่านได้ นอกจากเราและผู้ที่เราต้องการให้อ่านเท่านั้น
ซึ่งกระบวนการของ Cryptography แบ่งได้ 2 อย่างคือ Data Encryption และ Data Decryption ซึ่งหมายถึงการเข้ารหัส และการถอดรหัสตามลำดับข้อมูล โดยประโยชน์ของ Cryptography นั้นคือการเก็บรักษาความลับของข้อมูล
ทีนี้มาเข้าเรื่อง Cryptography นั้นแบ่งออกเป็น 2 ยุค คือ ยุค Classic และยุค Modern หรือแปลเป็นไทยคือ ยุคประวัติศาสตร์ และยุคปัจจุบัน ซึ่งในครั้งนี้ผมจะพูดถึง Cryptography ยุค Classic ซึ่งเข้าใจได้ง่ายกว่ายุค Modern มากโขอยู่ทีเดียว
เนื้อเรื่อง
คุณแน่ใจว่าต้องการคืนค่าการตั้งค่าทั้งหมด ?
รหัสลับยุค Classic
ถ้าพูดถึงการถอดรหัสมักได้ยินคำว่า Cryptography ซึ่งมาจากคำว่า Crypto และ Graph
ซึ่งคำว่า Crypto แปลว่า “การซ่อน” ผนวกกับคำว่า Graph แปลว่า “การเขียน” ซึ่งแปลได้ว่า “การเขียนเพื่อซ่อนข้อมูล” จุดประสงค์ก็เพื่อป้องกันข้อความมิให้ผู้ใดอ่านได้ นอกจากเราและผู้ที่เราต้องการให้อ่านเท่านั้น
ซึ่งกระบวนการของ Cryptography แบ่งได้ 2 อย่างคือ Data Encryption และ Data Decryption ซึ่งหมายถึงการเข้ารหัส และการถอดรหัสตามลำดับข้อมูล โดยประโยชน์ของ Cryptography นั้นคือการเก็บรักษาความลับของข้อมูล
ทีนี้มาเข้าเรื่อง Cryptography นั้นแบ่งออกเป็น 2 ยุค คือ ยุค Classic และยุค Modern หรือแปลเป็นไทยคือ ยุคประวัติศาสตร์ และยุคปัจจุบัน ซึ่งในครั้งนี้ผมจะพูดถึง Cryptography ยุค Classic ซึ่งเข้าใจได้ง่ายกว่ายุค Modern มากโขอยู่ทีเดียว
การเข้ารหัสยุค Classic
Caesar cipher
การเข้ารหัสแบบนี้ คิดค้นโดยกษัตริย์แห่งโรมันพระนามว่า Julius Caesar เพื่อใช้ในการสื่อสารระหว่างการศึกสงคราม เพื่อป้องกันไม่ให้ศัตรูไม่อาจอ่านข้อความลับนั้นได้หากถูกแย่งชิงไปได้ โดยใช้วิธีแทนที่อักษรต้นฉบับด้วยอักษรที่อยู่ถัดไปข้างหน้าสามตัวอักษร อย่างเช่นแทนที่ตัว A ด้วยตัว D และแทนที่ตัว B ด้วยตัว E ดังนั้นจึงเป็นการเลื่อนตัวอักษรโดยจำนวนครั้งของการเลื่อนเท่ากับสาม (Shiftment, n=3)
การแม็ปอักษรในการเข้ารหัสแบบ Caesar cipher สามารถเขียนได้ดังนี้
Plain (ข้อความ): ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher (รหัสที่ได้): DEFGHIJKLMNOPQRSTUVWXYZABC
และถ้าลองนำมาเทียบกับ Fox Code ซึ่งเป็นประโยคสั้นๆที่มีอักษรภาษาอังกฤษอันบริสุทธิ์ครบทั้ง 26 ตัว จะได้ดังนี้
Plain: the quick brown fox jumps over the lazy dog
Cipher: WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ
ต่อมานั้น Augustus ซึ่งเป็น Caesar องค์ที่สองจากทั้งหมด 12 Caesar ซึ่งเป็นหลานของ Julius Caesar ได้เปลี่ยนจากสูตรโดยการแทนที่ตัว A ด้วยตัว C และแทนที่ตัว B ด้วยตัว D ดังนั้นจึงเป็นการเลื่อนตัวอักษรโดยจำนวนครั้งของการเลื่อนเท่ากับสอง (Shiftment, n=2) แต่การเข้ารหัสทั้งสองวิธีนี้สามารถถูกเบรก (Break) ได้โดยง่าย (การเบรก คือการถอดข้อมูลออกมาได้ แม้จะไม่ทราบวิธีการเข้ารหัส)
การเบรกการเข้ารหัสข้อมูลแบบ Caesar cipher นั้น ทำได้โดยการทดลองเลื่อนตัวอักษรทุกตัว โดยเลื่อนด้วยจำนวน Shiftment ที่ต่างกัน คือ n = 1, n = 2, n = 3, n = 4, n = 5 ... ไปจนถึง
n = 26 ซึ่งเป็นจำนวนครั้งในการทดสอบสูงสุดของภาษาอังกฤษ
Monoalphabetic cipher
การเข้ารหัสข้อมูลแบบ Monoalphabetic cipher คิดค้นโดยชาวอาหรับ โดยใช้วิธีการแทนที่ตัวอักษร 1 ต่อ 1 อย่างเช่น การเข้ารหัสแบบนี้ในยุคแรกๆ เรียกว่า การเข้าข้อมูลแบบ Atbash โดยการแทนที่ตัว A ด้วยตัว Z แทนที่ตัว B ด้วยตัว Y เป็นต้น
Cipher: ZYXWVUTSRQPONMLKJIHGFEDCBA
และถ้าใช้ Fox Code จะได้ดังนี้
Plain: the quick brown fox jumps over the lazy dog
Cipher: GHV JFRXP YILDM ULC QFNKI REVO GHV OZAB WLT
การเข้าข้อมูลแบบ Atbash นี้จะพบว่ามีรูปแบบที่แน่นอน คือ ใช้ตัวสุดท้ายแทนตัวแรก และใช้ตัวรองสุดท้ายแทนตัวที่สองไปเรื่อยๆตามลำดับ ดังนั้น Monoalphabetic cipher ยุคต่อมาจะใช้การกำหนดคู่ที่ไม่เป็นรูปแบบ เช่น
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher: RFIGZVPXASQEHOWKCUYNJTLBMD
การเบรก Monoalphabetic cipher นั้นทำได้ยากกว่าการเบรก Caesar cipher เนื่องจากมีคู่ที่เป็นไปได้อยู่ 26 คู่ ยกกำลัง 26 คู่ การเบรกจะต้องสุ่มไปเรื่อยๆจนกว่าจะสำเร็จ ซึ่งใช้จำนวนครั้งในการคำนวณเพียงแค่ 403,291,461,126,605,635,584,000,000 ครั้งเท่านั้นเอง
One-Time Pad
One-Time Pad นี้คิดค้นโดยชาวอังกฤษที่ชื่อ Gilbert Vemam สงครามโลกครั้งที่ 1 เป็นโดยใช้การแม็ป 1 ตัวอักษรให้สามารถเป็นไปได้หลายตัวอักษร มีวิธีการดังนี้
· กำหนด key เพื่อใช้ในการถอดรหัสอย่างไรก็ได้ แต่ขอให้มีขนาดเท่ากับ Plain Text
· นำลำดับของตัวอักษรตัวนั้นๆ มาบวกกับค่าของลำดับของตัวอักษรที่ใช้เป็น key
อย่างเช่น H ซึ่งตัวอักษรตัวที่ 7 นี้คือ Plain text และ B ซึ่งตัวอักษรตัวที่ 2 คือ Key ดังนั้นก็ต้องนำ 7+2=9 ตัวอักษรลำดับที่ 9 คือตัว I และตัว I ก็คือ Cipher ที่เราคำนวณได้
· และถ้าบวกกันแล้วได้มากกว่า 26 น้อยก็นำจำนวนนั้นมาลบ 26 อย่างเช่น ถ้า X เป็นข้อความ และ Z คือ Key บวกกันก็จะได้ 50 ซึ่งไม่มีตัวอักษรตัวที่ 50 ดังนั้นจึงต้องนำ 26 ซึ่งป็นจำนวนตัวอักษรทั้งหมดของภาษาอังกฤษมาลบ ก็จะได้ 24 ก็คือตัว X นั้นเอง
· และถ้าหากลบกันแล้ว(การลบใช้ในการถอดรหัส) ได้น้อยกว่า 1 ก็ให้นำ 26 มาบวก
ตัวอย่างการเข้ารหัสโดยวิธี One-Time Pad
+ 20 (T) 7 (H) 1 (A) 9 (I) 12 (L) Key
= 27 11 12 20 26 ข้อความ+Key
= 1 (A) 11 (K) 12 (L) 20 (T) 26 (Z) Cipher Text
สรุปได้ดังนี้
Plain Text : H E L L O
Key : T H A I L
Cipher Text: A K L T Z
การถอดรหัส
1 (A) 11 (K) 12 (L) 20 (T) 26 (Z) Cipher Text
- 20 (T) 7 (H) 1 (A) 9 (I) 12 (L) Key
= -19 4 11 11 14 Cipher Text - Key
= 7 (H) 4 (E) 11 (L) 11 (L) 14 (O) Plain Text
แต่การเข้ารหัสแบบนี้มีข้อเสียอยู่อย่างคือการ ที่ Key ที่มีขนาดเท่ากับข้อความทำให้ส่งข้อความยาวๆได้ยากมาก และก็เวลาเราจะส่งข้อความไปก็ต้องส่งไปพร้อมกับ Key ซึ่งมีความเสี่ยงต่อการถูกขโมยมาก
Playfair cipher
Playfair cipher ถูกคิดค้นโดย Sir Charles Wheatstone และถูกใช่ในกองกำลังทางประเทศสหราชอาณาจักรในสงครามโลกครั้งที่ 1 มีวิธีการดังนี้
1. สร้างตาราง Key ขนาด 5 X 5 = 25 แบบสุ่มโดยตัด Q ออก
ดังตัวอย่าง(Key ไม่จำเป็นต้องเหมือนในตัวอย่าง สามารถสุ่มเอาเองได้ แต่ขอให้รู้กันในกลุ่มเท่านั้น)
ตัวอย่างตาราง Key
(Key ไม่จำเป็นต้องเหมือนในตัวอย่าง สามารถสุ่มเอาเองได้ แต่ขอให้รู้กันในกลุ่มเท่านั้น)
I B O D G
A K C M E
J R L W N
T Y V Z X
2. แบ่งข้อความออกเป็นคู่ๆ หากมีตัวอักษรที่เหมือนกันติดกันให้เอา X คั่นกลาง และหากตัวสุดท้ายไม่ครบคู่ก็ให้ใส่ Z แทน เช่น หากต้องการเข้ารหัสคำว่า “the gold is under the tree” ก็สามารถจัดเป็นคู่ๆได้ดังนี้
3. ถ้าตัวอักษรไม่อยู่ในแถว หรือคอลัมน์เดียวกัน ให้แทนที่ตัวอักษรแบบไขว้กัน เช่น TH ในข้อความต้นฉบับ (จากตาราง T และ H ไม่ได้อยู่แถวหรือคอลัมน์เดียวกัน) จะกลายเป็น YS (T กลายเป็น Y และ H กลายเป็น S)
4. หากตัวอักษรทั้ง 2 ตัว อยู่คอลัมน์เดียวกันให้เอาตัวอักษรที่อยู่ข้างล่างติดกันมาแทน (หากตัวอักษรนั้นอยู่ล่างสุดให้ใช้ตัวบนสุดมาแทน) เช่น EG ก็จะกลายเป็น NE
5. ถ้าตัวอักษรทั้ง 2 ตัวอยู่แถวเดียวกัน ก็ให้นำตัวอักษรที่อยู่ขวามือมาแทนที่ (หากตัวอักษรนั้นอยู่ด้านขวาสุดให้นำตัวอักษรทางด้านซ้ายสุดมาแทนที่) เช่น DI ก็จะกลายเป็น GB
เข้ารหัสได้ดังนี้
และหลังจากนี้ก็จะเข้าสู่ยุค Modern ซึ่งผมจะไม่พูดถึง เนื่องจากเข้าใจยาก และต้องใช้โปรแกรมคอมพิวเตอร์ในการคำนวณ
ผมหวังว่าท่านผู้อ่านทั้งหลายอาจได้ประโยชน์ไม่มากก็น้อยจากผม บางท่านอาจจะใช้ส่งข้อความหากิ๊กก็ได้ เพื่อเวลาแฟนเรามาตรวจจะได้ไม่รู้...
ผลงานอื่นๆ ของ teramat40 ดูทั้งหมด
ผลงานอื่นๆ ของ teramat40
ความคิดเห็น