วิทยาการรหัสลับ (ตอนที่ 1)
เมื่อพูดถึงวิทยาการรหัสลับ ผมเองรู้สึกว่าชื่อมันเก๋มากเลย
เพราะฟังดูแล้วเหมือนกับเป็นชื่อหนัง ประเภท sci-fi ปนๆกับสายลับอะไรประมาณนั้น
ในความเป็นจริงวิทยาการรหัสลับ ก็มีการใช้ในหมู่สายลับ แต่คนธรรมดาๆอย่างพวกเราก็ใช้มันเหมือนกัน
เพียงแต่ว่าเราอาจจะนึกไม่ถึงกันเท่านั้นเอง อย่างเช่นเวลาท่านผู้อ่านจะ
log on เพื่อเปิดอ่านอีเมล หรือตอนที่เรากด ATM เพื่อเอาตังค์ ล้วนแต่เกี่ยวข้องกับวิทยาการรหัสลับทั้งนั้น
ทำไมต้องมีวิทยาการรหัสลับ เอาล่ะ สมมุติว่าเรามีข้อมูลอยู่อันหนึ่ง
ต้องการจะส่งให้เพื่อน จะส่งกันอย่างไร ไม่ว่าจะส่งวิธีไหน เราสามารถแยกวิธีทั้งหมดออกได้เป็นสองกลุ่ม
กลุ่มแรกก็คือ ส่งโดยผ่านช่องสื่อสารที่ไม่เป็นความลับ (insecure channel)
ช่องสื่อสารดังกล่าวได้แก่ โทรศัพท์ โทรสาร วิทยุสื่อสาร หรือ อินเตอร์เนต
เป็นต้น การที่ช่องสื่อสารดังกล่าว ไม่เป็นความลับก็เป็นเพราะว่า คนอื่นสามารถที่จะ
"ดักฟัง" ข้อมูลจากช่องสื่อสารดังกล่าวได้ อีกกลุ่มก็คือ ส่งผ่านช่องสื่อสารที่เป็นความลับ
(secure channel) อย่างเช่น การพบปะกันตัวต่อตัว ระหว่างตัวเรากับเพื่อน
หรือการใช้ผู้นำสารที่เชื่อถือได้ บางคนอาจจะเถียงว่า ถึงจะพบกันตัวต่อตัว
หรือใช้ผู้นำสาร เราก็ส่งเจมส์ บอนด์ พยัคฆ์ร้าย 007 ไปปล้นข้อมูลมาก็ได้
(แหม บ้าหนังเหมือนกันแฮะ) แล้วจะเรียกว่าเป็นช่องสื่อสาร ที่เป็นความลับได้อย่างไร
ตัวผมเองก็ยอมรับว่าสิ่งเหล่านี้เกิดขึ้นได้ แต่มันอยู่เหนือขอบเขตของวิทยาการรหัสลับ
ดังนั้นเราจะไม่พูดถึง (ไม่อาว ไม่พูด ไม่พูด) ทีนี้ถ้าข้อมูลของเราเป็นเรื่องลับสุดยอด
(อย่างเช่น ฉันเป็นมนุษย์ต่างดาวปลอมตัวเป็นมาเป็นมนุษย์ แหะๆ) เราก็คงอยากจะส่งข้อมูลผ่านทาง
ช่องสื่อสารที่เป็นความลับ เพราะถ้าส่งทางช่องสื่อสารที่ไม่เป็นความลับ
เดี็๋ยวความลับแตก (เดี๋ยวเขาจับไปออกงานวัด เดี๋ยวคนมาขูดขอหวย โอ๊ย!
ไม่เอาหรอก) แต่เอ๊ะ! ถ้าเพื่อนอยู่ประเทศซิมบับเว แต่ตัวเราอยู่เมืองไทย
จะพบกันตัวต่อตัวก็คงไม่สะดวก จะใช้ผู้นำสารก็คงจะแพงแสนแพง หรือไม่ก็ชักช้าไม่ทันการณ์
ถ้าใช้โทรศัพท์หรืออินเตอร์เนต ส่งข้อมูลลับอันนี้ได้ก็ดีสินะ เพราะว่าถูก
สะดวก และรวดเร็ว ความจริงแล้วเราทำได้ โดยอาศัยวิทยาการรหัสลับนี่แหละ
แล้วอะไรคือวิทยาการรหัสลับ คำว่า วิทยาการรหัสลับ ในภาษาอังกฤษเขาใช้คำว่า
cryptography เกิดจากรากศัพท์สองคำคือ crypt ซึ่งแปลว่า หลบหรือซ่อน กับคำว่า
graph ซึ่งหมายถึงข้อความหรือรูปวาด คำว่า cryptography เองหมายถึง ศาสตร์ในการออกแบบระบบรหัสลับ
(cryptosystem) เพื่อใช้ในการส่งข้อมูลที่เป็นความลับผ่านช่องสื่อสารที่ไม่เป็นความลับ
(insecure channel) ระบบรหัสลับ (cryptosystem, cipher) นั้นคือระบบที่จะทำการ"ซ่อน"
(encrypt) ข้อมูลของเรา (plaintext) เข้าไปในข้อความที่เป็นรหัสลับ (ciphertext)
โดยใช้กุญแจแปลงข้อมูล (encryption key) ก่อนที่จะถูกส่งออกไป และเฉพาะผู้รับที่เราตั้งใจจะส่งข้อมูลให้เท่านั้น
ที่จะสามารถไขข้อมูล (decrypt) ที่ถูกซ่อนได้ การที่ผู้รับจะอ่านข้อมูลได้เขาจะต้องมีกุญแจเพื่อไขข้อมูล
(decryption key) (ดูรูปประกอบ)
หลักการทำงานโดยทั่วไปของระบบรหัสลับ (cryptosystem)
อีกคำที่ฟังดูคล้ายๆ cryptography ก็คือ cryptanalysis
ซึ่งหมายถึง ศาสตร์ในการไขข้อมูลลับ (plaintext) จากข้อความที่เป็นรหัสลับ
(ciphertext) โดยที่ไม่มีกุญแจที่ใช้ไขข้อมูล (decryption key) พวก
cryptanalyst นี้ดูแล้วเหมือนจะคล้ายๆ พวกหัวขโมยที่พยายาม ขโมยข้อมูลลับโดยการตีรหัสลับให้แตก
(attack, break) แต่จริงๆแล้ว พวก cryptographer ก็มักจะเป็น cryptanalyst
ด้วยเพราะว่าเมื่อ cryptographer ออกแบบระบบรหัสลับ (cryptosystem) ขึ้นมาอันหนึ่ง
พวกเขาก็ต้องลอง attack ระบบรหัสลับของตัวเองด้วย เพื่อให้แน่ใจว่า ระบบที่ออกแบบนั้นปลอดภัย
จากพวกแอบฟัง (eavesdropper) ทั้ง cryptography และ cryptanalysis เป็นสองสาขาใหญ่ของ
cryptology (วิชาที่ว่าด้วยรหัสลับ) ดังนั้นนักเขียนบางคนอาจจะใช้
cryptography, cryptanalysis, cryptology เพื่อหมายถึงสิ่งเดียวกัน
เอาล่ะ ท่านผู้อ่านจำศัพท์ภาษาอังกฤษ ข้างบนนี้ให้ดีนะครับ
เพราะต่อไปนี้บางคำผมจะใช้ทับศัพท์ล่ะ (ใช้ภาษาไทยแล้วมันยาว และฟังทะแม่งๆ
บางคำก็ไม่รู้ว่า เขาใช้คำภาษาไทย ที่กระชับว่าอย่างไร) หา! ลืมไปแล้วเหรอ
เนี่ยผลเสียของการไม่กินผักผลไม้นะเนี่ย ไม่เป็นไร ทบทวนกันหน่อยว่าศัพท์ต่อไปนี้หมายถึงอะไร
cryptography, cryptosystem, cipher, encrypt, decrypt, plaintext, ciphertext,
cryptanalysis, cryptology, attack, eavesdropper, cryptographer, cryptanalyst,
secure/insecure channel, decryption key, encryption key
แล้วมีตัวอย่างของระบบรหัสลับที่เขาใช้กันไหม
มีสิ มีเยอะด้วย แต่สำหรับตอนนี้เอาอันง่ายๆไปก่อนนะ จะได้พอรู้ว่าระบบรหัสลับทำงานอย่างไร
เอาล่ะ สมมุติว่่า plaintext ของเราเป็นอย่างนี้
I am an alien from Mars.
(ฉันเป็นมนุษย์ต่างดาวจากดาวอังคาร)
ถ้าเอาช่องว่างและเครื่องหมายต่างๆ(punctuation marks)ออกให้หมด แล้วทำตัวพิมพ์เล็กให้เป็นตัวพิมพ์ใหญ่ให้หมด
แล้วจะได้
IAMANALIENFROMMARS
ยัง ยังไม่เสร็จ ทีนี้เลือกตัวเลข
e ตั้งแต่ 1 - 26 มาตัวหนึ่ง สมมุติว่าเป็น e =12
นะ แล้วเราก็แทนตัวอักษรทุกตัวในข้อความข้างบน ด้วยตัวอักษรที่ห่างมันออกไป
e ตำแหน่ง อย่างเช่นแทน A ด้วย M แทน B ด้วย N ไปเรื่อยๆ
ถ้าตำแหน่่งมันเลยตัว Z ไปก็วนมาที่ตัว A ใหม่ ดังตารางต่อไปนี้
| A |
B |
C |
D |
.... |
Y |
Z |
| M |
N |
O |
P |
.... |
K |
L |
เมื่อแทนเข้าไปแล้วจะได้ว่า
UMYMZMXUQZRDAYYMDE
ข้อความอันเนี้ยเป็นข้อความที่ถูก encrypt แล้ว เรียกว่า
ciphertext คนข้างนอกมาดูก็ไม่รู้ว่าเราเขียนอะไรมา เพราะข้อความของเราถูกซ่อนอยู่
เลข e = 12 ทำหน้าที่เป็น encryption key ทีนี้ถ้าเราจะไขข้อมูลเดิมกลับมา
(decrypt) ก็ต้องเลื่อนตัวอักษรทุกตัวไป d = 14 ตำแหน่ง คือทำเหมือนข้างบนนั่นแหละ
แต่แทนที่จะใช้เลข 12 ก็ใช้เลข 14 แทน ลองทำดูแล้วเราจะได้ข้อความเดิม
(plaintext) กลับมา (เอ...ทำไมละเออ) เลข d = 14 ทำหน้าที่เป็น
decryption key ถ้าเรากับเพื่อนที่ซิมบับเวตกลงกันก่อนหน้านี้ว่าจะใช้เลข
12 กับ 14 เป็น encryption key e กับ decryption key
d เราก็ส่งข้อความ UMYMZMXUQZRDAYYMDE ไปหาเพื่อนได้โดยไม่ต้องกลัวว่าความลับจะแตก
เพราะคนอื่นเขาไม่รู้ e กับ d ของเราคืออะไร
| ลับสมอง |
โดยวิธีที่ผมให้มาข้างบนนี้
ถ้าเราทราบว่า e = 6 ท่านผู้อ่านจะหา d ได้ไหมครับ
และ จะเขียนสูตรความสัมพันธ์ระหว่าง e กับ d
ได้อย่างไร |
ระบบรหัสลับที่ผมเพิ่งกล่าวถึงไปมีชื่อว่า
Caesar shift cipher ที่เรียกชื่อนี้ก็เพราะว่า จูเลียส ซีซาร์ (Julius
Caesar) เป็นคนที่เริ่มใช้มันในการสื่อสารทางการทหาร แต่ระบบนี้ง่ายต่อการถูกโจมตี
(attack) อย่างมาก (ทำยังไงละเออ)
| ลับสมอง |
ลอง attack ข้อความลับนี้ดูสิว่า
ผมเขียนอะไรถึงน้องแพรว X3 Supergang อิๆ ถ้ารู้แล้วอย่าไปบอกใครนะ
ผมเขิลลล.... :-)
IEXTLXEXGWFXLHFXFHGXRBTFUKHDX |
เดี๋ยวฉบับหน้ามาว่ากันต่อ มีอะไรตื่นเต้นน่าสนุกอีกเยอะเลย
Cool Toy!!! Caesar Encryption Machine
with Java
Plug-in 1.1.2(for most platforms) or with
Java Plug-in 1.3(for MS Windows)