Playfair Cipher
Payfair cipher เป็น Block Cipher ตัวแรกเกิดขึ้นในปี ค.ศ. 1854 โดย Sir Charles Wheatstone ซึ่งเล่าให้ Baron Playfair ฟัง แล้วจากนั้นก็ถูกเล่าต่อให้ Albert และ Load Palmerston ฟังบนโต๊ะอาหารเย็น Playfair cipher ถูกใช้ในกองกำลังทางประเทศสหราชอาณาจักรในสงครามโลกครั้งที่ 1 มีกระบวนการทำงานของอัลกอริทึม ดังนี้
1. สร้างตาราง Key ขนาด 5x5 = 25 แบบสุ่มโดยตัดตัว Q ออก ตัวอย่าง Key ขาด 5x5
รูปที่ 4 สร้างตาราง Key ของ Playfair Cipher
2. แบ่งตัวอักษร Plain Text ต้นฉบับออกมาเป็นคู่ ๆ หากมีตัวอักษรที่ติดกันให้เอา X คั่นกลาง และหากตัวสุดท้ายไม่ ครบคู่ให้ใส่ Z เข้าไปแทนเช่น ต้องการเข้ารหัสข้อความว่า "Hide the gold in the tree stump" ก็สามารถจัดตัวอักษร เป็นคู่ ๆ ได้ ดังนี้
HI DE TH EG OL DI NT HE TR EX ES TU MP
^
ใส่ X เข้าไปเนื่องจากมีตัว E สองตัวติดกัน
3. ถ้าไม่อยู่ในแถวและ Column เดียวกัน ให้แทนที่ตัวอักษรแบบไขว้กัน เช่น HI ในข้อความต้นฉบับ (H ไม่ได้อยู่แถว เดียวกันกับ I และ H ก็ไม่ได้อยู่ใน Column เดียวกันกับ I) จะกลายเป็น BM (H กลายเป็น I และ B กลายเป็น M)
4. ถ้า 2 ตัวอักษรอยู่ Column เดียวกัน ให้เอาตัวอักษรที่อยู่ข้างล่างติดกันมาแทนที่ โดยทำทีละตัว (หากตัวอักษรนั้นอยู่ ล่างสุดให้เอาตัวบนสุดมาแทนที่) เช่น DE ในข้อความต้นฉบับ จะกลายเป็น ND เนื่องจาก D ถูกแทนที่ด้วย N ส่วน E ถูกแทนที่ด้วย D
5. ถ้า 2 ตัวอักษรอยู่แถวเดียวกัน ให้เอาตัวอักษรที่อยู่ขวามือมาแทนที่ โดยทำทีละตัว (หากตัวอักษรนั้นอยู่ขวาสุดให้ เอาตัวซ้ายสุดมาแทนที่) เช่น TU ในข้อความต้นฉบับ จะกลายเป็น UV เนื่องจาก T ถูกแทนที่ด้วย U ส่วน U ถูกแทนที่ ด้วย V
หากทำการเข้ารหัสแล้วจะได้ดังนี้
Plain Text: HI DE TH EG OL DI NT HE TR EX ES TU MP
Cipher Text: BM ND ZB XD KY BE JV DM UI XM MN UV IF
การเข้ารหัสในยุค Modern
DES (Data Encryption Standard)
DES เป็นการเข้ารหัสแบบ Block cipher ที่พัฒนามาจากอัลกอริทึม Lucifer ของ IBM โดยLucifer ได้รับการพัฒนาเพิ่มความสามารและเปลี่ยนชื่อเป็น DES แล้วได้รับการนำเสนอ US NIST (US National Institute of Standards and Technology) ให้กลายเป็นมาตรฐานของการเข้ารหัส
การเข้ารหัสข้อมูลแบบ DES เป็นการเข้ารหัสโดยกระทำกับกลุ่มของข้อมูลขนาด 64 บิต (ดังรูปที่ 5) ลำดับแรกข้อมูล 64 บิต นี้จะถูกกลับตำแหน่ง (สลับบิต) จากนั้นจะถูกแบ่งเป็น 2 ส่วน ได้แก่ ส่วนทางซ้ายและส่วนทางขวา (ส่วนละ 32 บิต) ขั้นตอนต่อไปจะใช้ฟังก์ชั่นทางคณิตศาสตร์ (ฟังก์ชั่น 0 ข้อมูลจากส่วนซ้ายหรือขวาจะถูกนำมารวมกันกับ Key โดยจะทำซ้ำกันอย่างนี้เป็นจำนวนทั้งสิ้น 16 รอบ เมื่อเสร็จสิ้นขั้นตอนนี้ (รอบที่ 16) ผลลัพธ์ที่ได้จากทั้งส่วนทางซ้ายและขวาก็จะถูกนำมารวมกันเป็นข้อมูลขนาด 64 บิตอีกครั้งหนึ่ง และนำไปสลับตำแหน่งในขั้นตอนสุดท้าย
การทำงานของฟังก์ชั่น 1 ในแต่ละรอบ จะเป็นการเลื่อนบิตของ Key ซึ่งจะเลือกใช้เพียง 46 บิต จากทั้งสิ้น 56 บิต ข้อมูลในส่วนทางขวา (32 บิต) จะถูกขยายให้กลายเป็นข้อมูลขนาด 48 บิต (ดังรูที่ 6) จากนั้นจะนำมารวมกับกุญแจขนาด 48 บิต (ที่เลือกมา) การรวมกันในขั้นตอนจะใช้การ XOR ผลลัพธ์ขนาด 48 บิต ที่ได้จะถูกนำไปแทนที่อีก 8 ครั้ง ผลลัพธ์จากการแทนที่จะเหลือข้อมูลเพียง 32 บิต เท่านั้นหลักจากนั้นก็จะต้องสลับตำแหน่งอีกครั้งหนึ่ง
รูปที่ 5 กระบวนการทำงานของ DES
หนึ่งรอบของการทำฟังก์ชั่น F จะประกอบด้วยกระบวนการข้างต้น 4 ครั้ง ข้อมูลในส่วนทางซ้ายจะต้องผ่านกระบวนการเดียวกัน ผลลัพธ์ที่ได้จากทั้งส่วนทางซ้ายและขวาจะถูกนำมารวมกันแบบ XOR เมื่อเสร็จสิ้นขั้นตอนนี้แล้ว ผลลัพธ์ที่ได้จะถูกใช้เป็นข้อมูลส่วนทางขวาของรอบใหม่ และข้อมูลของส่วนทางขวาเดิมก็จะกลายเป็นข้อมูลส่วนซ้ายของวงรอบใหม่
บริษัทแห่งหนึ่งต้องการเบรก DES เพื่อสร้างความแข็งแกร่งให้กับ RSA จึงจัดการประกวดการเบรกขึ้นโดยให้รางวัล 10,000 US$ สำหรับผู้ชนะในแต่ละรอบ บริษัท Distribution.net ใช้เวลา 41 วัน ก็ทำการเบรก DES ได้สำเร็จ บริษัท EFF สามารถเบรกได้ภายในเวลา 56 ชั่วโมง จากนั้นบริษัท Distribution.net และบริษัท EFF ก็จับมือกันและใช้คอมพิวเตอร์กว่า 100,000 เครื่องทั่วโลกมาแคร็ก DES ซึ่งก็สามารถทำได้ในเวลา 22 ชั่วโมง 15 นาที เป็นต้นเหตุทำให้มีการขยาย Key ของ DES จาก 64 บิต ให้เป็น 128 บิต เพื่อจะได้ใช้เวลาในการแคร็กนานขึ้น
ปัจจุบัน DES แบ่งออกเป็น DES 64 บิต และ DES 128 บิต แต่ถึงแม้ว่าจะใช้ 128 บิต ก็ตาม DES ก็ยังสามารถถูกแคร็กได้ จึงได้มีการพัฒนาให้มี Tripple-DES (3DES) ที่มีความปลอดภัยสูงขึ้น
Tripple-DES (3DES)
Tripple-DES เป็นการเข้ารหัสที่ถูกสร้างมาเพื่อแก้ปัญหาความอ่อนแอของ DES โดย Tripple-DES ช่วยเสริมความปลอดภัยให้การเข้ารหัสมีความปลอดภัยมากขึ้นโดยการใช้อัลกอริทึม DES เป็นจำนวนสามครั้งเพื่อเข้ารหัส โดยในแต่ละครั้งจะใช้กุญแจในการเข้ารหัสที่แตกต่างกันออกไป ดังนั้นจำนวนกุญแจที่ใช้ใน Tripple-DES จึงมีทั้งสิ้น 3 ดอก (ความยามดอกละ 56 บิต) ด้วยความแข็งแกร่งนี้จึงทำให้ Tripple-DES เป็นอีกหนึ่งในมาตรฐานในการเข้ารหัสในปัจจุบัน
รูปที่ 6 กระบวนการทำงานของ Tripple - DES