CafeMagazineAfterhourClass-ExamLinksCamp-Excursion

 

 

เพลย์แฟร์ไซเฟอร์

สวัสดีปีใหม่ครับ คิดเงินให้ได้เงิน คิดทองให้ได้ทอง ปีนี้เค้าว่าเป็นปีดี ใครๆก็นิยมแต่งงานกัน แหม เห็นมีคู่แล้วน่าอิจฉา

บทความฉบับนี้ออกจะฉุกละหุกไปหน่อย เพราะผมมาเขียนเอาตอนปลายเทอม ซึ่งเป็นช่วงที่ดินที่พอกหางไว้เริ่มทำพิษ แหะๆ แถมสอบเสร็จแล้วยังต้องเตรียมตัวเดินทางอีก ผมมาเริ่มเขียนบนเครื่องบินเลยนะนี่

ฉบับนี้จะขอแนะนำระบบรหัสลับง่ายๆอันหนึ่งซึ่งมีชื่อว่า เพลย์แฟร์ไซเฟอร์ (Playfair Cipher) คนที่คิดระบบนี้ขึ้นมาก็คือเซอร์ ชาลส์ วีทสโตน (Sir Charles Wheatstone) ที่ระบบนี้มีชื่อนี้ก็เพราะว่า คนที่ทำให้ระบบนี้ได้รับความนิยมขึ้นมาก็คือ ลีออน เพลย์แฟร ์ (Lyon Playfair)

ระบบรหัสลับตัวนี้จะคล้ายระบบรหัสลับแบบสับเปลี่ยน แต่แทนที่จะสับเปลี่ยนตัวอักษรทีละตัวใน plaintext เราก็สับเปลี่ยนตัวอักษรทีละคู่ด้วยคู่ตัวอักษรคู่อื่นเพื่อให้กลายเป็น ciphertext  การสร้างตารางสับเปลี่ยนก็ง่ายมาครับ ก่อนอื่นเราต้องตั้ง keyword ขึ้นมาก่อน ซึ่ง keyword ตัวนี้จะรู้กันเฉพาะผู้รับและผู้ส่ง สมมุติว่า keyword ของเราคือ GOLDENDRAGON จากนั้นเราก็เอาตัวอักษรที่ซ้ำกันในคำนั้นออก เราก็จะได้ GOLDENRA จากนั้นเราก็จับคำนี้มาใส่ตารางขนาด 5 x 5 เติมตารางให้เต็มด้วยตัวอักษรที่ไม่ได้ใช้ในคำนั้น ตามลำดับตัวอักษร โดยรวมตัวอักษร I และ J ไว้ในช่องเดียวกัน จากนั้นเราก็จะได้ตารางต่อไปนี้
 

G O L D E
N R A B C
F H I/J K M
P Q S T U
V W X Y Z

เสร็จแล้วครับสำหรับตารางสับเปลี่ยน แต่จะใช้ยังไงนั้นเดี๋ยวมาดูกัน สมมุติว่า plaintext ของเราคือ  Happy new year from vcharkarn.com. (อะแฮ่ม จะพูด  happy new year กันทีก็ต้องมีลวดลายกันหน่อย) จากนั้นเราก็แตก plaintext ให้เป็นคู่ตัวอักษร ตัวอักษรแต่ละคู่ควรมีอักษรไม่ซ้ำกัน ถ้าเกิดมันซ้ำกันขึ้นมาก็เติมตัวอักษรอื่นที่ทำให้ไม่ซ้ำ ถ้าแตก plaintext แล้วตัวอักษรสุดท้ายไม่ครบคู่ เราก็เติมตัวอักษรตัวอื่นลงไปที่ไม่ซ้ำกับตัวอักษรตัวนั้น (จะใช้ตัวอักษรใดในการเติมนั้น ก็แล้วแต่ศรัทธาครับ และควรจะตกลงกันก่อนระหว่างผู้รับและผู้ส่ง โดยทั่วไปแล้วใช้ตัวอักษร x ) สมมุติว่าเราใช้ตัวอักษร x ในการเติม เราก็จะแตก plaintext ของเราได้ดังนี้
ha-px-py-ne-wy-ea-rf-ro-mv-ch-ar-ka-rn-co-mx

ทีนี้เราก็พร้อมจะ encrypt แล้วครับ ตัวอักษรแต่ละคู่ที่เราได้มานั้น เมื่อเอามาเทียบกับตารางข้างบนแล้ว สามารถแยกเป็นสามกรณี คือ

  1. ตัวอักษรทั้งคู่อยู่แถวเดียวกัน
  2. ตัวอักษรทั้งคู่อยู่หลักเดียวกัน
  3. ไม่ใช่ทั้งสองกรณีข้างบน
ถ้าเป็นกรณีแรก ตัวอักษรแต่ละตัวในคู่นั้นจะถูกแทนที่ด้วยตัวอักษรที่ถัดมาทางขวาในตาราง (ยกตัวอย่างเช่น wy จะถูกแทนที่ด้วย XZ) ถ้าตัวอักษรตัวใดตัวหนึ่งเป็นตัวสุดท้ายของแถว ตัวอักษรตัวนั้นก็จะถูกแทนด้วยตัวอักษรที่อยู่หัวแถว (ยกตัวอย่างเช่น im จะถูกแทนที่ด้วย  KF)

ถ้าเป็นกรณีที่สอง เราจะใช้วิธีคล้ายๆกับกรณีแรกแต่ใช้หลักแทนแถว นั่นคือตัวอักษรแต่ละตัวในคู่นั้นจะถูกแทนที่ด้วยตัวอักษรที่ถัดมาข้างล่างในตาราง (ยกตัวอย่างเช่น aj จะถูกแทนที่ด้วย IS) ถ้าตัวอักษรตัวใดตัวหนึ่งเป็นตัวสุดท้ายของหลัก ตัวอักษรตัวนั้นก็จะถูกแทนด้วยตัวอักษรที่เป็นตัวแรกของหลัก (ยกตัวอย่างเช่น ky จะถูกแทนที่ด้วย  TD)

ถ้าเป็นกรณีที่สาม เราจะใช้วีธีที่ต่างไปจากสองวิธีข้างบน กล่าวคือในการ encrypt ตัวอักษรตัวแรก เราจะมองหาแถวที่มีตัวอักษรตัวแรก แล้วหาดูหลักที่มีตัวอักษรที่สอง แถวและหลักที่ได้นั้นตัดกันได้ตัวอักษรตัวไหนก็แทนด้วยอักษรตัวนั้น  ในการ encrypt ตัวอักษรตัวที่สอง ก็ทำคล้ายๆกันครับ คือมองหาแถวที่มีตัวอักษรที่สอง และหลักที่มีตัวอักษรตัวแรก แถวและหลักที่ได้ตัดกันได้ตัวอักษรตัวไหนก็แทนด้วยอักษรตัวนั้น (ยกตัวอย่างเช่น  ha จะถูกแทนด้วย IR)

ดังนั้น plaintext ข้างบนของเราก็จะกลายเป็น IR-SV-TV-CG-XZ-LC-NH-HR-FZ-RM-BA-IB-AR-RE-IZ เวลา decrypt ก็ทำทุกอย่างย้อนกลับ

ลองมาคิดกันดูนะครับว่า เราจะโจมตีระบบนี้ได้อย่างไร การวิเคราะห์ความถี่จะช่วยเราได้ไหมในกรณีนี้

แล้วมาเจอกันใหม่ครับ


ติดตามอ่านเรื่องราวตอนที่แล้วๆ ของวิทยาการรหัสลับได้ที่นี่ครับ

 

   

สนับสนุน
โดย สสวท.
หน้าหลัก   V คาเฟ่   V แมกกาซีน    บทเรียนข้อสอบ   บันเทิง   วิชาการไกด์
เรือนไทย   ข่าววิชาการ   ข่าวประชาสัมพันธ์   ปรับปรุงใหม่ๆ   ทีมงาน

email: vcharkarn@vcharkarn.com


สมัครสมาชิก วิชาการ.คอม ใส่ email ในช่องนี้ค่ะ :

Copyright 2000, Vcharkarn.com. All rights reserved.

พสวท. เพื่อ
วิทยาศาสตร์ไทย