EP 7: ทุกคนสามารถ คลิกรูปภาพด้านล่าง เพื่อศึกษาวิธีการเข้ารหัสแบบ Homophonic Substitution Cipher
ไม่รู้ทุกคนจะจำได้กันหรือเปล่าว่าใน EP 4 เราได้พาทุกคนไปเข้ารหัสแบบ Simple Substitution Cipher กันมาแล้ว หากใครจำไม่ได้สามารถย้อนกลับไปอ่านกันก่อนได้เลย เพราะว่าใน EP นี้ การเข้ารหัสที่เรานำมาให้ทุกคนได้ทดลองทำกันนั้น เป็นการเข้ารหัสแบบ Substitution Cipher (การเข้ารหัสโดยการแทนที่ตัวอักษร) เช่นกัน แต่เป็นการเข้ารหัสที่มีการเพิ่มตัวอักษรแทนที่ (Cipher Text Alphabet) ให้มากขึ้น! และยากขึ้น! อีกด้วย
ไปเริ่มกันเลย
การเข้ารหัสใน EP นี้ก็คือ “Homophonic Substitution Cipher” เป็นการเข้ารหัส โดยการเเทนที่ตัวอักษรด้วยตัวอักษรหรือตัวเลข ซึ่งไม่ใช่การแทนที่อย่างง่ายแบบ 1 ต่อ 1 แต่เป็นการแทนที่ ที่มีการสร้างตัวอักษรแทนที่ (Cipher Text Alphabet) ให้มากขึ้น โดยสามารถคำนวณจำนวนตัวอักษรแทนที่ได้จากตัวอักษรในข้อความ เช่น ถ้าในข้อความของเรา มีตัว E คิดเป็นร้อยละ 3 ของข้อความทั้งหมดเราสามารถสร้างตัวอักษรแทนที่ E ได้ ทั้งหมด 3 ตัวขึ้นไปได้ หรืออาจจะสร้างตัวอักษรแทนที่ให้ E มากกว่าตัวอักษรธรรมดาอื่นๆ ตามจำนวนที่ต้องการได้ แต่ไม่ควรใช้ ตัวอักษรเพียงตัวเดียวในการแทนที่ E ทั้งหมด เนื่องจากว่า ถ้าเราใช้ตัวอักษรแทนที่ (Cipher Text Alphabet) ตัวเดียวในการแทนที่ตัว E ทั้งหมดในข้อความ จะส่งผลให้มีการใช้ตัวอักษรแทนที่ตัวนั้นเยอะเกินไปในรหัสลับ (ความถี่ในการใช้งานสูง) ทำให้ฝั่งตรงข้ามสามารถคาดเดารูปแบบการเข้ารหัสของเราได้ง่ายขึ้น ดังนั้นเราจึงต้องสร้างตัวอักษรแทนที่ (Cipher Text Alphabet) ให้กับ E มากขึ้น เพื่อหลีกเลี่ยงปัญหานี้
นอกจากนั้นในการเข้ารหัสแบบ Homophonic Substitution Cipher ยังสามารถใช้หลักการ Frequency Analysis มากำหนดเงื่อนไขในการสร้างตาราง Cipher Text Alphabet ได้ โดยการเลือกตัวอักษรที่ถูกใช้งานบ่อย ๆ ในภาษาอังกฤษ อย่าง E, T, A, O, I, N, S, H, R, D, L, U ขึ้นมาเพื่อสร้างตัวอักษรแทนที่ (Cipher Text Alphabet) ให้มากกว่าตัวอักษรธรรมดาอื่น ๆ ใน Plain Text Alphabet
ทีนี้มาถึงตรงนี้หลายคน คงอาจจะสงสัยแล้วว่า ให้ตายเถอะ เงื่อนไขในการสร้างตาราง (Cipher Text Alphabet) เยอะแยะขนาดนี้ เราจะส่งให้คู่สนทนาของเรายังไงหมด และถ้าส่งไปแล้วมันเกิดโดนขโมยล่ะ จะทำยังไง
คำตอบ ก็คือ ก่อนที่ทั้งฝั่งผู้รับและผู้ส่งจะออกปฏิบัติภารกิจ พวกเขาจะต้องมีการตกลงเงื่อนไขในการสร้างตาราง Cipher Text Alphabet กันให้เรียบร้อยก่อน เพื่อให้ทั้งสองฝั่งเข้าใจตรงกัน อย่างเช่น ถ้าในคีย์มีตัวเลข จะให้ตัวเลขที่เหลือต่อจากคีย์ อยู่ในบรรทัดที่ 2 ก่อนตัวอักษรอื่น ๆ เป็นต้น หรือหากในกรณีที่ยังไม่ได้ตกลงเงื่อนไขต่าง ๆ กันให้เรียบร้อย ทางฝั่งที่เข้ารหัส จะสามารถส่งเงื่อนไขต่าง ๆ มาพร้อมกับรหัสลับและคีย์ได้ แต่ !!! ในสงครามจริง เขาคงไม่เขียนเงื่อนไขกันไปแบบโต้ง ๆ บอกหมดหรอกนะ แต่อาจจะมีการส่งไปในรูปแบบของรหัสมอร์ส หรือคลื่นวิทยุ ไปนั่นเอง
เกริ่นมาซะยาวขนาดนี้ ทุกคนอาจจะเบื่อแล้ว เราไปเข้ารหัสกันเถอะ
ทุกคนสามารถ คลิกรูปภาพด้านล่าง เพื่อศึกษาวิธีการเข้ารหัสแบบ Homophonic Substitution Cipher
-
กำหนดข้อความที่ต้องการเข้ารหัส คือ “THIS IS A SECRET MESSAGE.”
-
กำหนดคีย์ที่จะใช้ในการเข้ารหัส โดยสามารถกำหนดได้ทั้งตัวอักษรและตัวเลข คือคำว่า “BACKGROUND56789” จากนั้นสร้างตาราง Plain Text Alphabet ขึ้นมาโดยตารางนี้ภายในจะเป็นการเรียงตัวอักษร A-Z ตามลำดับ
-
สร้างตาราง Cipher Text Alphabet โดยนำคีย์ไว้ที่ตอนต้นของตาราง ดังรูปที่ 1
เมื่อเราใส่คีย์ลงในตารางเรียบร้อยแล้ว ให้ใส่ตัวอักษรภาษาอังกฤษที่เหลือลงไปในตารางตามลำดับเดิม (Alphabetical Order : A-Z) โดยที่ตัดตัวอักษรที่มีอยู่แล้วในคีย์ออก ตัวอย่างเช่น จากตารางรูปที่ 1 หลังจากคีย์ คำว่า BACKGROUND56789 ตัวอักษรถัดมาคือ E เนื่องจาก A, B, C, D เป็นตัวอักษรที่มีอยู่แล้วในคีย์ เป็นต้น
นอกจากนั้น ในตารางรูปที่ 1 จะเห็นว่าเราจะให้ ตัวเลข 0- 4 มาแทรกโดยเป็นการขึ้นแถวใหม่ของตาราง Cipher Text Alphabet (สามารถนำตัวเลขที่เหลือแทรกที่ช่องใดก็ได้ตามเงื่อนไขที่ตกลงกันในตอนแรก ) และตัวอักษรแทนที่ในแถวที่ 3 ของตาราง Cipher Text Alphabet จะอยู่ในคอลัมน์ของ ตัวอักษรอย่าง A, E, I, S, T ซึ่งกำหนดเงื่อนไขในการเพิ่มตัวอักษรแทนที่ จากการนับจำนวนตัวอักษรที่มีอยู่ในข้อความธรรมดาถ้าตัวใดมีจำนวนเกิน 2 ตัวขึ้นไปจะกำหนดตัวอักษรแทนที่เพิ่มให้อีก 2 ตัว รวมทั้งหมดเป็น 3 ตัว
*** รูปแบบการสร้าง Cipher Text Alphabet สามารถกำหนดได้ตามต้องการไม่มีกฏตายตัว แต่จำเป็นที่จะต้องตกลงเงื่อนไขในการสร้างให้ชัดเจน และทั้งฝั่งผู้รับและผู้ส่งจะต้องเข้าใจตรงกัน เพราะคุณจะไม่สามารถถอดรหัสออกมาได้เลยถ้า ตาราง Cipher Text Alphabet ของทั้งสองฝั่งไม่ตรงกัน เหมือนคุณพูดคนละภาษาที่มีทางเข้าใจกันได้นั่นเอง ***
- นำตาราง Plain Text Alphabet และ Cipher Text Alphabet มาสร้างรหัสลับ โดยเราจะใช้ตัวอักษรที่อยู่ในตำแหน่งเดียวกันของทั้งสองตารางมาเขียนเป็นรหัสลับ เช่น “T” ให้เขียนเป็น “J” ส่วนตัวอักษรที่มีตัวอักษรแทนที่หลายตัว ให้ใช้เรียงกันไปตามลำดับ เช่น “A” ตัวแรกในข้อความ ให้เขียนเป็น “B” และ “A” ตัวที่สองของข้อความ ให้เขียนเป็น “0” เป็นต้น
เมื่อเขียนจนครบเราจะได้ข้อความใหม่ เป็นข้อความที่ถูกเข้ารหัสแล้ว คือ “JUNI2 3BYGC H147W I30OG”
- ในการเข้ารหัสลับ เราสามารถเขียนรหัสเรียงติดกัน โดยไม่ต้องเว้นช่องว่างได้ แต่เพื่อให้ง่ายต่อการจำและการเขียน ส่วนใหญ่จึงเขียนเป็นกลุ่มตัวอักษร กลุ่มละ 5 ตัว จำนวนกลุ่มขึ้นอยู่กับจำนวนของตัวอักษรทั้งหมด (n/5)
รีบส่งรหัสลับพร้อมกับคีย์ให้กับกองทัพของคุณโดยเร็ว
เมื่อกองทัพของคุณได้รับรหัสลับ “JUNI2 3BYGC H147W I30OG” และคีย์แล้วสามารถทำตามขั้นตอนด้านล่างเพื่อถอดรหัส ดังนี้
-
เราจะต้องทราบคีย์ที่ใช้ในการถอดรหัส ในตัวอย่างนี้คือ “BACKGROUND56789” และที่สำคัญคือจะต้องทราบรูปแบบการสร้างตาราง Cipher Text Alphabet ที่ตรงกับฝั่งผู้เข้ารหัสทุกประการ
-
สร้างตาราง Plain Text Alphabet ขึ้นมา โดยวิธีการสร้างจะเหมือนกับขั้นตอนที่ 2 ของการเข้ารหัส
-
นำคีย์ไปสร้างตาราง Cipher Text Alphabet โดยให้นำคีย์ไปใส่ไว้ในตอนต้นของตาราง ดังรูปที่ 3 (เงื่อนไขเช่นเดียวกับขั้นตอนที่ 3 ของการเข้ารหัส)
- นำรหัส “JUNI2 3BYGC H147W I30OG” ไปเทียบกับ Cipher Text Alphabet แล้วเทียบกับ Plain Text Alphabet จะได้ข้อความก่อนที่จะทำการเข้ารหัสออกมา ดังรูปที่ 4
- ถอดรหัสและเรียงข้อความออกมาได้เป็น “THIS IS A SECRET MESSAGE.”
เป็นอย่างไรกันบ้าง สำหรับการเข้ารหัสแบบ Homophonic Substitution Cipher ที่เรานำมาเล่ากันใน EP นี้
การเข้ารหัสแบบ Homophonic Substitution Cipher มีความซับซ้อนมากใช่มั้ยล่ะ เพราะเราสามารถออกแบบการเข้ารหัสได้แทบจะทุกขั้นตอนกันเลยทีเดียว แบบนี้เวลาที่จะใช้งานจริง ๆ คงต้องตกลงกับคู่สนทนาของคุณให้ชัดเจน ไม่งั้นคงได้ถอดรหัสกันไม่ถูกแน่นอน แต่ถ้ามีโจรขโมยรหัสลับของเราไป คราวนี้ก็คงแก้ได้ยากมาก ๆ แน่นอนเลย
References