วันอังคารที่ 23 กรกฎาคม พ.ศ. 2556

Cryptography คืออะไรกันแน่

Cryptography นั้นคืออะไรบอกหน่อยได้ไหม

Cryptography คือ การเข้ารหัสในปัจจุบันนี้ การติดต่อสื่อสารกับคนอื่น เป็นสิ่งที่เกิดขึ้นอยู่ตลอดเวลา โดยเราใช้ คําพูด หรือ ข้อความ ในการติดต่อสื่อสาร ซึ่งบางทีเราก็ไม่อยากให้ผู้อื่น นอกเหนือจากคู่สนทนา รู้สิ่งที่อยู่ในข้อความนั้น เราจึงเกิด ข้อความลับ(CipherText) ขึ้นมา หรือหมายถึงการเข้ารหัสข้อความเพื่อไม่ให้ ผู้ที่ไม่ใช่คู่สนทนาของเรารู้ถึงข้อความในนั้นได้.

การเข้ารหัสนั้นเราคิดกันได้ตั้งแต่ในสมัย จูเลียส ซีซาร์ แล้วครับ ซึ่งในสมัยนั้น การเข้ารหัส ได้ถูกมาใช้ในการทหาร เนื่องจากสมัยนั้นยังไม่มีเทคโนโลยีอย่างในปัจจุบัน เค้าเลยใช้การแปลงอย่างง่ายๆๆ เช่น สมมุติข้อความว่า “HELLO” แล้วก็เขียนให้มันมีการสลับตัวอักษรไปอีก 2 ตําแหน่งก็จะกลายเป็น “JGNNQ” ซึ่งถ้าข้อความไปตกอยู่ในมือคนอื่น เค้าก็จะไม่สามารถข้อความนี้ ซึ่งเป็นการเข้ารหัสอย่างง่ายๆๆ (ซึ่งส่วนใหญ่ในมหาลัย จะมีการสอน หรือ ให้ฝึกเขียนโปรแกรมเกี่ยวกับการเข้ารหัสแบบนี้ด้วย)

ตัวอย่างการเข้ารหัสสมัยก่อน (Classic cryptography)

ที่เห็นอยู่ข้างๆนี้เค้าเรียกกันว่า Scytale ซึ่งเป็นอุปกรณ์ที่ทำขึ้นจากไม้ที่มีด้านสมมาตรเท่ากันทุกด้าน ในสมัยที่ยังไม่มีคอมพิวเตอร์เค้าได้ใช้เจ้าสิ่งนี้ในการ เข้ารหัส และ ถอดรหัสลับกัน
ซึ่งวิธีการเข้ารหัสก็ คือ เค้าจะนํากระดาษมาพันรอบ Scytale แล้วก็เขียนข้อความลับตามแนวนอน ขนานกับไม้ไป แล้วหลังจากนั้นก็นํากระดาษนี้ไปส่งให้กับผู้รับ ซึ่งถ้าระหว่างทาง ข้อความลับ (CipherText) โดนแย่งไป คนที่แย่งไปถ้าไม่มี Scytale ที่มีขนาดเดียวกันกับ ที่ใช้เขียนขึ้นมาก็จะไม่สามารถอ่านข้อความนั้นได้
ส่วนวิธีการถอดรหัส ก็ไม่ต่างกันคือ ผู้รับจําเป็นจะต้องมีตัว Scytale ที่สามารถถอดรหัสได้ (Scytale แบบเดียวกัน) แต่วิธีการก็จะเหมือนกับการเข้ารหัส โดยการนํากระดาษมาพันรอบ Scytale แล้วหลังจากนั้นก็อ่านตามแนวนอน ก็จะได้ ข้อความปกติ (PlainText) ออกมา ตัวอย่างตามรูปด้านล่างเลยครับ
_____________________________________________________________
       |   |   |   |   |   |  |
       | H | E | L | P | M |  |
     __| E | I | A | M | U |__|
    |  | N | D | E | R | A |
    |  | T | T | A | C | K |
    |  |   |   |   |   |   |
_____________________________________________________________
จากตัวอย่างข้างบน ถ้าเราอ่านตามแนวนอนจะได้เป็น “Help me I am under attack” ครับ. (ตัวอย่างนี้รู้สึกจะในสมัยของ  Spartan กันเลยทีเดียว: ถ้าใครไม่รู้จักลองไปหาหนังเรื่อง 300 มาดูได้ครับ)
แต่พอเข้าสู่ยุคของคอมพิวเตอร์สิ่งต่างๆเปลี่ยนไป เราสามารถ encryption อะไรก็ได้ที่อยู่ในรูปแบบของ Binary เช่น ภาพ,เสียง อื่นๆๆ ไม่จําเป็นต้องเป็นตัวอักษรเหมือนในสมัยก่อน  ซึ่งประสิทธ์ภาพของ การเข้ารหัส ก็ขึ้นอยู่กับหลายๆๆอย่างๆเช่น CPU ของคอมพิวเตอร์,หน่วยความจํา และ ความซับซ้อนของตัวการเข้ารหัสเอง
ซึ่งการเข้ารหัสต่างๆได้เริ่มมีการคิดค้นขึ้นในช่วงปี 1970:  ซึ่ง 1 ใน ผู้เริ่มต้นคิดค้นคือ บริษัท IBM (ตอนนี้บริษัทมีอายุถึง 100 ปีละ ก่อตั้งเมื่อปี 1911 ) ซึ่งการเข้ารหัสที่ IBM คิดค้นขึ้นคือ Data Encryption Standard (DES) ซึ่งตอนนี้เป็นมาตราฐานการเข้ารหัสของ สหรัฐอเมริกาเลย ตอนนี้มีอีกตัวนึงที่ใช้กันอย่างกว้างขวาง  คือ Advanced Encryption Standard (AES) ซึ่งรัฐบาลสหรัฐก็นํามาใช้เป็นมาตราฐานเหมือนกัน
การเข้ารหัสสมัยใหม่ (Modern cryptography)
Symmetric-key cryptography
การเข้ารหัสสมัยใหม่มีเรื่องของ กุญแจ( key) เข้ามาเกี่ยวข้อง ตัวอย่างการเข้ารหัสแบบ symmetricซึ่ง กุญแจ( key) ที่ว่านี่หมายถึง ชุดตัวเลข หรือ ตัวอักษร กลุ่มนึงที่ถูก ‘สุ่ม’ ขึ้นมาเพื่อใช้ในการ เข้ารหัส หรือ ถอดรหัส เป็นต้นซึ่ง กุญแจ (Key) สามารถแบ่งออกเป็น 2 แบบคือ
  1. Symmetric-key cryptography
  2. Asymmetric-key cryptography or Public-key cryptography

Symmetric-key cryptography
หมายถึง กระบวนการเข้ารหัสแบบที่ผู้ส่งกับผู้รับ ใช้กุญแจ (key) ร่วมกัน โดยวิธีการนี้ผู้รับกับผู้ส่งต้องตกลงกันก่อนว่าจะใช้ กุญแจ (key) อะไรในการเข้ารหัสและถอดรหัส หรือ อาจจะเป็นชุดคีย์เดียวกันเลยก็ได้ เช่น ผู้ส่ง ส่งข้อความลับ (CipherText) ไปให้ ผู้รับ โดยมี กุญแจ (Key) เป็น “12345″ ซึ่งผู้รับก็ต้องรู้ว่ากุญแจคืออะไรถึงจะสามารถแปลง ข้อความลับ (CipherText) เป็น ข้อความปกติได้ (PlainText)หรืออีกแบบถ้าไม่ได้ใช้กรณีที่ กุญแจ (Key) เป็นชุดเดียวกัน ก็อาจจะเป็น กระบวนการเดียวกันเช่น การจะเปิดอ่านข้อความลับ ที่ส่งมาต้องเลื่อนตัวอักษรทุกตัวไปอีก 8 ตัวอักษรถึงจะอ่านได้ นี่ก็ถือเป็น กุญแจ (key) อีกแบบนึงเหมือนกัน
Asymmetric-key cryptography or Public-key cryptography
Asymmetric-key cryptography or Public-key cryptography
ตัวอย่างการเข้ารหัสแบบ asymmetricหมายถึง กระบวนการเข้ารหัสแบบที่ ผู้ส่ง กับ ผู้รับ มีกุญแจกันคนละชุดที่เกี่ยวข้องกัน (เป็นคู่กัน pair of keys) ซึ่งเรียก public และ private key
ซึ่งในการเข้ารหัสแบบนี้ public key ( public key สามารถมีได้หลายคน ) จะใช้ในการ encryption ข้อความ (plainText) เป็น ข้อความลับ (CipherText) ส่วน private key (private key ต้องมีคนเดียว) จะใช้ในการ decryption แปลงข้อความลับ กลับเป็น ข้อความปกติ
Asymmetric-key เนี่ยเป็นการเข้ารหัสแบบ one-way functions ซึ่งหมายถึง เป็น functionที่ ใครก็สามารถทําได้แค่มี public key แต่..ยากที่จะทําย้อนกลับ (invert) โดยไม่มีข้อมูลครบถ้วน (ไม่มี private key)


ไม่มีความคิดเห็น:

แสดงความคิดเห็น