Monoalphabetic Ciper
การเข้ารหัสข้อมูลแบบ Manoalphabetic Cipher (หรือเรียกว่า Monoalphabetic substitution ciphers) คิดค้นโดยชาวอาหรับ โดยใช้วิธีการแทนที่ตัวอักษรแบบ 1 ต่อ 1 (ไม่ใช่การเลื่อน) ตัวอย่างของ Monoalphabetic ciphers ในยุคแรกๆคือ การเข้ารหัสข้อมูลแบบ Atbash ใช้ในการแทนที่ตัว A ด้วยตัว Z แทนที่ตัว B ด้วยตัว Y และแทนที่ตัว C ด้วยตัว X เป็นต้น
Plain : abcdefghijklmnopqrstuvwxyz
Cipher : zyxwvutsrqponmlkjihgfedcba
หากทำการวิเคราะห์อัลกอริทึมของการเข้ารหัสแบบ Atbash ดูก็จะพบว่ามีรูปแบบ (Pattern) คือ ใช้ตัวสุดท้ายแทนตัวแรก ใช้ตัวรองสุดท้ายแทนตัวที่สอง และใช้ตัวที่สามจากสุดท้ายแทนตัวที่สามไปเรื่อยๆตามลำดับ ดังนั้น Monoalphabetic ciphers ในยุคต่อมาจึงใช้การกำหนดการจับคู่ของตัวอักษรที่ไม่เป็น pattern เช่น
Plain : abcdefghijklmnopqrstuvwxyz
Cipher : rfigzvpxasqehowkcuynjtlbmd
การเบรค Monoalphabetic ciphers จะทำได้ยากกว่าการเบรค Caesar cipher เนื่องจากมีคู่ที่เป็นไปได้อยู่ 26 ยกกำลัง 26 คู่ การเบรคจะต้องใช้การสุ่มไปเรื่อยๆจนกว่าจะสำเร็จ ซึ่งจะต้องใช้จำนวนครั้งในการคำนวณ 26! ครั้ง (26! = 26x25x24x23x…x1)
การเบรค Monoalphabetic ciphers สามารถทำได้อีกวิธีหนึ่ง คือการวิเคราะห์ความถี่ของตัวอักษรที่ปรากฏ (Frequency analysis) ตัวอย่างเช่น ตัวอักษร e กับ t จะเกิดบ่อยที่สุดในข้อความภาษาอังกฤษ โดยอักษร e มีอัตราการเกิดบ่อยถึง 13% ส่วนอักษร t มีอัตราการเกิดบ่อยถึง 9% ดังรูปที่ 2
รูปที่ 2 ความถี่ของอักษรที่ปรากฎ
ตัวอักษรที่พบได้บ่อยมากได้แก่ e, t, a, o, I, n, s, h, r, d และ 1 ตามลำดับ หากนำมาเรียงตามลำดับจากการพบได้มาก ไปจนถึงการพบได้น้อยจะได้ดังรูปที่ 3 การนำตัวอักษรที่ใช้บ่อยไปใช้เพื่อถอดรหัสแบบ Monoalphabetic ciphers จะสามารถทำให้เดาและถอดรหัสได้เร็วขึ้น เช่น หากพิจารณาข้อมูลที่เข้ารหัสด้วย Monoalphabetic ciphers แล้วพบว่ามีตัวอักษรตัวหนึ่งที่พบได้บ่อยที่สุด ก็อาจสันนิษฐานได้ว่าเป็นตัวอักษร e เป็นต้น
รูปที่ 3 ความถี่ของตัวอักษรที่ปรากฎ
นักศึกษาทบทวนความเข้าในเรื่องการเข้ารหัสและถอดรหัส Monoalphabetic จากไฟล์ด้วยล่างนี้เพื่อความเข้าใจและมองเห็นภาพการทำงานมากยิ่งขึ้น
การเข้ารหัสและถอดรหัสแบบ Momoalphabetic (คลิ๊กเม้าส์ที่เมนูเพื่อดูการทำงาน)
Polyalphabetic Encryption
Polyalphabetic Encryption คิดค้นโดย Blaise De Vignere ชาวฝรั่งเศสเมื่อประมาณ 500 ปีที่แล้ว อัลกอริทึ่มนี้ใช้เทคนิคที่ประกอบไปด้วย Multiple Monoalpha Cipher คือมี Monoalphabetic ciphers หลายๆตัวประกอบกัน ซึ่งจะมีการกำหนดระยะห่างให้กับตัวอักษรก่อนโดยระยะห่างในแต่ละช่วงจะไม่เท่ากันตัวอย่างเช่น n = 7 ให้เป็น C1 และ n = 15 ให้เป็น C2 หลังจากนั้นกำหนด รูปแบบ (Pattern) ในการใส่ข้อมูล เช่น C1,C2,C2,C1,C2 เป็นต้น
เทคนิคนี้จะใช้ในช่วงสงครามโลกครั้งที่ 1 และยากที่จะถอดรหัสด้วยมือเปล่า แต่ถ้าใช้คอมพิวเตอร์จะสามารถถอดรหัสได้ง่าย นอกจากนั้นหากต้องการจะเบรคโดยใช้คอมพิวเตอร์ก็จะทำการเบรคได้ง่ายเช่นกัน ผู้ที่เบรค Polyalphabetic Encryption ได้ เป็นชาวรัสเซียชื่อ Friedrich Kasiski เบรคได้ในปี 1863 โดยให้ข้อสังเกตว่าถ้าได้ Cipher Text ที่มีความยาวมากพอ Pattern จะเริ่มซ้ำและสามารถที่จะเห็นความเหมือนของ Cipher text โดยดูที่ Frequency Analysis ตัวอักษรแต่ละลัวปรากฏบ่อยแค่ไหน