EP 8: Columnar Transposition Cipher

EP 8: Columnar Transposition Cipher

ใน EP นี้เราจะพาทุกคนเข้าสนามรบ (อีกแล้ว :rofl:) การเข้ารหัสนี้เกิดขึ้นในสนามรบเยอะมากจริง ๆ แต่นั่นก็เป็นเรื่องที่เข้าใจได้ เพราะในสนามจะต้องมีข้อมูลสำคัญกันทั้งนั้น ใช่มั้ยล่ะ

หากย้อนกลับไปในช่วงสงครามโลกครั้งที่ 1 กองทัพของเยอรมนี จะใช้การเข้ารหัสลับที่รู้จักกันในนาม “übchi” หรือในภายหลังมีชื่อว่า “Double Transposition Cipher” หรือ “Double Columnar Transposition”

แต่เราจะพาทุกคนไปทดลองเข้ารหัสแบบ “Columnar Transposition Cipher” แบบธรรมดากันก่อน เพราะว่าหากทุกคนเข้ารหัส Columnar Transposition Cipher แบบธรรมดาได้แล้ว การเข้ารหัสแบบ Double Transposition Cipher ก็สามารถทำได้ไม่ยาก เพราะว่า การเข้ารหัสแบบ Double Transposition Cipher ก็คือการทำ Columnar Transposition Cipher 2 ครั้ง โดยใช้คีย์ที่ต่างกันไปนั่นเอง

การเข้ารหัสแบบ “Columnar Transposition Cipher” คือการเข้ารหัสโดยวิธีสร้างตารางจากคีย์ที่กำหนดขึ้น จากคำภาษาอังกฤษ เหมือนกับการกำหนดคีย์ในการเข้ารหัสแบบ Substitution Ciphers (การเข้ารหัสโดยการแทนที่ตัวอักษร) ร่วมกับการสับเปลี่ยนคอลัมน์ ไปตามลำดับตัวอักษรของคีย์ เพื่อให้ได้รหัสลับออกมา

ทุกคนสามารถ คลิกรูปภาพด้านล่าง เพื่อศึกษาวิธีการเข้ารหัสแบบ Columnar Transposition Cipher

  1. กำหนดข้อความที่ต้องการเข้ารหัส คือ “THE CENTRAL INTELLIGENCE AGENCY.”(28 ตัวอักษร)

  2. กำหนดคีย์จากคำภาษาอังกฤษ คือ “ANALYST” (7 ตัวอักษร) และนำตัวอักษรในคำมาเรียงตามลำดับของตัวอักษรภาษาอังกฤษ(Alphabetical Order : A-Z) จะได้ A=1, N=4, A=2, L=3, Y=7, S=5, T=6

  3. สร้างตาราง โดยขนาดของตารางสามารถคำนวณได้จากจำนวนของตัวอักษรในข้อความหารด้วยจำนวนของตัวอักษรในคีย์ เช่น ถ้าข้อความมี 28 ตัวอักษร เเละคีย์มี 7 ตัวอักษร เป็น 28/7 = 4 จะได้ ตารางแบบ 7x4 หรือ 7 คอลัมน์ 4 แถว และถ้าหากข้อความไม่สามารถคำนวณได้ลงตัว สามารถเว้นว่างไว้ หรือใส่ตัวอักษรอื่นที่ไม่ส่งผลทำให้ความหมายของข้อความเดิมผิดเพี้ยนไป เช่น X เป็นต้น

  4. นำคีย์ “ANALYST” ไปใส่ไว้ที่คอลัมน์บนหัวตาราง (ใส่ลำดับตัวอักษรของคีย์แต่ละตัวไว้ใต้คีย์) จากนั้นเขียนข้อความ “THE CENTRAL INTELLIGENCE AGENCY.” ลงในแถวใต้คอลัมน์คีย์เรียงจากซ้ายไปขวาจนครบทุกแถว ดังรูปที่ 1

  5. นำตัวอักษรที่อยู่ในเเถวใต้คอลัมน์คีย์ออกมาเขียนเป็นรหัสลับ โดยจะต้องเรียงตามลำดับตัวอักษรของคีย์ จะได้เป็น
    แถวที่ 1 จากคอลัมน์ A =1 คือ TRLE
    แถวที่ 2 จากคอลัมน์ A=2 คือ ELIG
    แถวที่ 3 จากคอลัมน์ L=3 คือ CIGE
    แถวที่ 4 จากคอลัมน์ N=4 คือ HALA
    แถวที่ 5 จากคอลัมน์ S=5 คือ NTNC
    แถวที่ 6 จากคอลัมน์ T=6 คือ TECY
    แถวที่ 7 จากคอลัมน์ Y=7 คือ ENEN

  6. ในการเข้ารหัสลับ เราสามารถเขียนรหัสเรียงติดกัน โดยไม่ต้องเว้นช่องว่างได้ แต่เพื่อให้ง่ายต่อการจำและการเขียน ส่วนใหญ่ จึงนิยมเขียนเป็นกลุ่มตัวอักษร กลุ่มละ 5 ตัว โดยที่จำนวนกลุ่มตัวอักษรจะขึ้นอยู่กับจำนวนตัวอักษรทั้งหมด (n/5) จะได้เป็น “TRLEE LIGCI GEHAL ANTNC TECYE NEN”

เมื่อคุณได้รับรหัสลับ “TRLEE LIGCI GEHAL ANTNC TECYE NEN” สามารถทำตามขั้นตอนด้านล่างเพื่อถอดรหัส ดังนี้

  1. เราจะต้องทราบรหัสลับและคีย์ที่จะใช้ในการถอดรหัส ในตัวอย่างนี้คือ
    รหัสลับ = “TRLEE LIGCI GEHAL ANTNC TECYE NEN”
    คีย์ = “ANALYST”

  2. สร้างตาราง โดยขนาดของตารางสามารถคำนวณได้จากจำนวนของตัวอักษรในข้อความหารด้วยจำนวนของตัวอักษรในคีย์ เช่น ถ้าข้อความมี 28 ตัวอักษร เเละคีย์มี 7 ตัวอักษร เป็น 28/7 = 4 จะได้ ตารางแบบ 7x4 หรือ 7 คอลัมน์ 4 แถว และถ้าหากข้อความไม่สามารถคำนวณได้ลงตัว สามารถเว้นว่างไว้ หรือใส่ตัวอักษรอื่นที่ไม่ส่งผลทำให้ความหมายของข้อความเดิมผิดเพี้ยนไป เช่น X เป็นต้น

  3. นำคีย์ “ANALYST” ที่ได้ไปเขียนลงในคอลัมน์หัวตารางตามลำดับตัวอักษร “AALNSTY” จากนั้นใส่รหัสลับ “TRLEE LIGCI GEHAL ANTNC TECYE NEN” ลงในเเถวใต้คอลัมน์คีย์ เรียงจากบนลงล่างทีละเเถวจนครบ หลังจากนั้นเมื่อทำการสลับตำแหน่งของคีย์ให้เป็นคำตามคีย์ที่ได้รับมาคือคำว่า “ANALYST” ก็จะได้ดังรูปที่ 2

  4. นำตัวอักษรในเเถวมาเรียงต่อกันจากซ้ายไปขวา จะได้เป็นข้อความว่า “THE CENTRAL INTELLIGENCE AGENCY” (หน่วยข่าวกรอง)

เป็นอย่างไรกันบ้าง สำหรับการเข้ารหัสแบบ Columnar Transposition Cipher ที่เรานำมาเล่ากันใน EP นี้

หากทุกคนอยากทดลองเข้ารหัสแบบกองทัพเยอรมนีหรือ “Double Transposition Cipher” ก็สามารถทำได้เลย เพียงแค่เข้ารหัสแบบ Columnar Transposition Cipher ก่อนหนึ่งครั้ง เพื่อให้ได้รหัสลับออกมา จากนั้นนำรหัสลับจากครั้งที่ 1 ไปเข้ารหัสอีกครั้ง โดยเปลี่ยนคีย์ตัวใหม่ ก็จะสามารถเข้ารหัสแบบที่ใช้จริง ๆ ในสงครามโลกครั้งที่ 1 ได้แล้วนั่นเอง

References

@Namtan

  1. 28/7=4

จาก

  1. @Pantitas ขอธีมสงครามโลกครั้งที่ 1
  2. @Namtan ตอนขึ้นต้นหัวเรื่องให้เล่าถึง Double Transposition Cipher ไปเลยดีไหม แล้วก็อธิบายว่ามันคือ Columnar Transposition Cipher 2 รอบ แล้วก็มาสอน Columnar Transposition Cipher ต่อ… จะได้เข้าธีมสงครามโลกครั้งที่ 1 ไปหาต่อได้ไหมครับว่าประเทศอะไรเป็นคนใช้ มันจะได้ดูสนุกยิ่งขึ้นครับพออิงกับประวัติศาสตร์