CafeMagazineAfterhourClass-ExamLinksCamp-Excursion

 

วิทยาการรหัสลับ  (ตอนที่ 2): ประเภทของระบบรหัสลับ

มาว่ากันต่อจากฉบับที่แล้วนะครับ (ถ้าท่านผู้อ่านอ่านๆไปแล้วไม่รู้ว่าผมพูดถึงอะไร   ก็อาจจะลองกลับไปอ่านทวนฉบับที่แล้วดูนะครับ ) คราวนี้เราจะมาแยกประเภทของระบบรหัสลับกัน ระบบรหัสลับในปัจจุบันสามารถแยกได้เป็นสองประเภทครับ  มาดูกันว่าแต่ละประเภทต่างกันอย่างไร มีข้อดีข้อเสียยังไง

ประเภทแรกเรียกว่าระบบรหัสลับแบบสมมาตร (symmetric cryptosystem) หรือ ระบบรหัสลับแบบกุญแจล่วนตัว (private-key cryptosystem, secret-key cryptosystem) เออ...ทำไมถึงมีชื่อแปลกๆอย่างนั้นหนอ มาดูกันว่ามันทำงานอย่างไร  แล้วท่านก็จะรู้ว่าทำไมถึงมีชื่ออย่างนั้น ผมจะใช้เหตุการณ์สมมุติอธิบายหลักการทำงานของระบบแบบนี้นะครับ จะได้เห็นภาพชัดเจน (ดูรูปประกอบ จำได้ไหมใครเอ่ย อิๆ)

สมมุติว่านายปีเตอร์ต้องการส่งข้อความลับไปให้น.ส.นิโคลโดยใช้ private-key cryptosystem แล้วนายดอนพยายามที่จะดักฟังว่าสองคนนั้นส่งข้อความอะไรกัน (โดยธรรมเนียมของ cryptology แล้ว เขาจะใช้ชื่อ Bob และ Alice เป็นผู้สื่อสาร และ Oscar เป็นผู้ดักฟัง แต่เราใช้ตัวละครของเราดีกว่า ดูเหมือนนิยายน้ำเน่าดี แหะๆ)  ก่อนอื่นนายปีเตอร์กับน.ส.นิโคลจะต้องทำการตกลงเกี่ยวกับกุญแจที่จะใช้ก่อน ซึ่งอาจจะทำได้โดยนายปีเตอร์เลือกกุญแจมาอันนึงแล้วส่งไปให้น.ส.นิโคลผ่านทาง secure channel ทำให้นายดอนไม่รู้ว่ากุญแจที่ใช้นั้นคืออะไร

ทบทวน ท่านผู้อ่านลองยกตัวอย่างซิว่านายปีเตอร์จะส่งกุญแจไปให้น.ส.นิโคลด้วยวิธีไหนได้บ้าง
หลังจากที่มีการส่งผ่านกุญแจแล้ว นายปีเตอร์กะน.ส.นิโคลก็สามารถสื่อสารข้อความลับกันได้ผ่านทาง insecure channel โดยใช้กุญแจที่มีอยู่ในการ encrypt และ decrypt ข้อมูล ถึงแม้ว่านายดอนจะดักฟัง ciphertext มาได้ นายดอนก็ไม่มีทางรู้ว่าข้อความที่ซ่อนอยู่คืออะไร เพราะนายดอนไม่มีกุญแจไขข้อมูล (ดูสิ นายปีเตอร์กะน.ส.นิโคลหัวเราะเยาะดีใจใหญ่เลย นายดอนถึงแม้จะงงๆกับข้อมูลที่ได้มา แต่ก็ยังยิ้มสู้กล้อง)

Private-Key Cryptosystem Diagram

หลักการทำงานของ private-key cryptosystem

กุญแจแปลงข้อมูลและกุญแจไขข้อมูลของระบบรหัสลับแบบนี้อาจจะเป็นอันเดียวกัน หรือ ต่างกันก็ได้ ถ้ากุญแจทั้งสองต่างกัน เราก็สามารถคำนวณหากุญแจอันนึงจากอีกอันนึงได้ อย่างนี้ไงล่ะเค้าถึงเรียกว่า symmetric cryptosystem ถ้ากุญแจอันใดอันหนึ่งรั่วไหลไป ระบบก็ถูกโจมตีได้ทันที ดังนั้นเราจึงต้องรักษากุญแจทั้งสองเป็นความลับสุดยอด ระบบแบบนี้เลยได้อีกชื่อมาว่า private-key cryptosystem ตัวอย่างของระบบนี้ได้แก่ DES และ IDEA (แล้ววันหลังจะเล่าถึงระบบเหล่านี้ให้ฟังในรายละเอียด)

ประเภทที่สองเรียกว่าระบบรหัสลับแบบกุญแจสาธารณะ (public-key cryptosystem) ฟังชื่อแล้วก็คงพอจะรู้ตะหงิดๆแล้วใช่ไหมล่ะ ว่าต้องมีกุญแจอันใดอันหนึ่งที่ไม่ต้องเก็บเป็นความลับ เออ ก็คงต้องเป็นกุญแจแปลงข้อมูลสินะ
เพราะถ้าเปิดเผยกุญแจไขข้อมูลก็เจ๊งกันพอดี มาดูกันว่ามันทำงานยังไง

เอาล่ะ เรากลับมาหานายปีเตอร์กับน.ส.นิโคลใหม่ สมมุติว่าคราวนี้นายปีเตอร์จะส่งข้อมูลลับไปหาน.ส.นิโคลโดยใช้ public-key cryptosystem ล่ะ ก่อนอื่นน.ส.นิโคลต้อง สร้างกุญแจขึ้นมาสองอัน คือ กุญแจแปลงข้อมูล (encryption key) และกุญแจไขข้อมูล (decryption key)  กุญแจทั้งสองไม่เหมือนกัน ในระบบนี้เราไม่สามารถใช้ encryption key เพื่อคำนวณหา decryption key ได้ (หรือถ้าได้ก็คำนวณได้ยากมาก อย่างเช่น อาจจะต้องใช้เวลาเป็นล้านๆปีในการคำนวณโดยใช้คอมพิวเตอร์ที่เร็วที่สุดที่มีอยู่) น.ส.นิโคลส่ง encryption key ไปตีพิมพ์ลงในสมุดโทรศัพท์(หรืออะไรทำนองนั้น) ส่วน decryption key นั้นเก็บเป็นความลับไว้กับตัวเอง ด้วยเหตุนี้ encryption key จึงถูกเรียกว่า public key (กุญแจสาธารณะ --ใครจะมาดู หรือเอาไปทำอะไรก็ได้) และ decryption key ก็ถูกเรียกว่า private key (กุญแจส่วนตัว -- ส่วนตั๊ว ส่วนตัว บอกใครม่ายด๊ายค่าาา) ทีนี้ถ้าใครอยากจะส่งข้อความลับไปให้น.ส.นิโคล เขาก็ต้องไปค้นหา public key ของน.ส.นิโคลจากสมุดโทรศัพท์แล้วใช้ public key อันนั้นเพื่อ encrypt ข้อมูลแล้วส่งไปให้น.ส.นิโคล คนที่จะไขข้อมูลกลับมาก็มีแต่น.ส.นิโคลเท่านั้น เพราะน.ส.นิโคลเป็นคนเดียวที่รู้ private key (นายปีเตอร์เองก็ม่ายรู้ค่าาา)  นายดอนซึ่งจดๆจ้องๆคอยดักฟังอยู่แม้จะได้ ciphertext ที่นายปีเตอร์ส่งให้น.ส.นิโคลกับ public key ของน.ส.นิโคลมา ก็ทำอะไรไม่ได้อยู่ดี  (ดูสิ นายปีเตอร์กับน.ส.นิโคลหัวเราะเยาะดีใจอีกแล้ว น่าหมั่นไส้จริงๆ นายดอนต้องนั่งกุมขมับไปพักใหญ่ไม่รู้จะทำไงกับข้อมูลที่ได้มา ทำให้หน้าแก่ไปอีกสองปี)

Public-Key Cryptosystem Diagram

หลักการทำงานของ public-key cryptosystem

เนื่องจากกุญแจแปลงข้อมูลกับกุญแจไขข้อมูลไม่เหมือนกัน แถมใช้คำนวณหากันและกันไม่ได้อีกต่างหาก ระบบแบบนี้จึงได้อีกชื่อนึงมาว่า asymmetric cryptosystem (ระบบรหัสลับแบบไม่สมมารถ -- จะได้เข้าคู่กับ symmetric cryptosystem ไง) ตัวอย่างของระบบแบบนี้ได้แก่ RSA และ Diffie-Hellman (เดี๋ยววันหลังเรามาว่ากันถึงรายละเอียดของระบบเหล่านี้กัน) RSA เป็นระบบที่ใช้กันแพร่หลายมาก (อย่าไปมั่วนิ่มกับอาร์ซีเอนะ คนละเรื่องกัน)
 

ทบทวน ท่านผู้อ่านคิดว่า Ceasar Shift Cipher ที่พูดถึงในฉบับที่แล้วจัดอยู่ในประเภทใด

ท่านผู้อ่านคิดว่าระหว่าง private-key cryptosystem กับ public-key cryptosystem แบบไหนดีกว่ากัน ลองคิดดูละกันว่า ถ้าน.ส.นิโคลใช้ private-key cryptosystem กับนายปีเตอร์ น.ส.นิโคลต้องใช้ secure channel ในการแลกเปลี่ยนกุญแจ(ซึ่งอาจทำได้ด้วยการพบปะตัวต่อตัว อืม...นายปีเตอร์อยู่ข้างบ้านนี่เอง ไม่ยุ่งยากเท่าไหร่หรอกค่าาา) ถ้าน.ส.นิโคลต้องการสื่อความลับกับเพื่อนๆพี่ๆน้องๆญาติๆ โดยการใช้ private-key cryptosystem น.ส.นิโคลต้องแลกเปลี่ยนกุญแจกับคนเหล่านั้นทุกคน (ซึ่งอาจหมายถึงต้องไปพบตัวต่อตัวกับทุกคน ถ้าคนนั้นอยู่ทวีปโน้น คนนั้นอยู่ประเทศนี้ นิโคลคงต้องเดินทางหน้ามืดเลยค่าาาา)  แต่ถ้าใช้ public-key cryptosystem น.ส.นิโคลไม่ต้องใช้ secure channel ในการส่งผ่านข้อมูลเลย การสื่อสารก็น่าจะทำได้อย่างสะดวกรวดเร็ว    ดังนั้น public-key cryptosystem น่าจะดีกว่าใช่ไหมล่ะ หลักการมันดีก็จริง แต่ในความเป็นจริงแล้ว public-key cryptosystem ค่อนข้างจะมีขั้นตอนมากมายในการ encrypt/decrypt ข้อมูล ทำให้ทำงานได้ช้าเมื่อเทียบกับ private-key cryptosystem ถ้าข้อมูลยิ่งเยอะก็ยิ่งทำงานได้ช้าอย่างเห็นได้ชัด (ลองนึกภาพว่าถ้าต้องส่งข้อมูลวีดีโอลับผ่านอินเตอร์เนตโดยใช้ public-key cryptosystem ในการ encrypt ข้อมูลแล้วก็จะได้ภาพเดินๆหยุดๆน่าหงุดหงิดรำคาญ เพราะคอมพิวเตอร์ต้องใช้เวลานานในการ encrypt/decrypt ข้อมูล ในขณะที่ถ้าใช้ private-key cryptosystem แล้วภาพจะเดินราบเรียบ น่าดูชม)

และแล้วก็มีคนหัวใสพยายามเอาทั้งสองระบบมาผสมกันออกมาเป็นลูกผสม  (แหม ยังกะเพาะพันธุ์สุนัขอย่างนั้นแหละ) โดยหวังที่จะให้ได้ประโยชน์จากทั้งสองระบบ หลักการก็คือ ใช้ public-key cryptosystem ในการแลกเปลี่ยน secret key ของระบบ private-key cryptosystem แล้วใช้ private-key cryptosystem อันนี้แหละในการ encrypt/decrypt ข้อมูลลับ เห็นมะ ไม่ต้องใช้ secure channel แถม encrypt/decrypt ได้รวดเร็วอีกด้วย  ระบบรหัสลับบนเว็บซึ่ง
ใช้ SSL (Secure Sockets Layer) protocol (อย่างเช่นตอนส่งข้อมูลเครดิตการ์ดเพื่อซื้อของ) ก็ใช้ระบบลูกผสมนี้เหมือนกัน ผมจะใช้เหตุการณ์สมมุติเพื่ออธิบายว่า SSL ทำงานอย่างไร (SSL ได้รับการออกแบบและพัฒนาโดยบริษัท  Netscape Communications Corporation )

สมมุติว่าน.ส.นิโคลกำลังใช้โปรแกรม Netscape เพื่อจะสั่งซี้อไมโครโฟนฝังเพชรจากเว็บไซท์แห่งหนึ่ง(เอ เอาไปทำอะไรหวา)โดยใช้ secure connection (การติดต่อที่ต้องมีการ encrypt/decrypt ข้อมูล)  โปรแกรม Netscape ต้องส่งคำร้องไปยัง secure server (เครื่องคอมพิวเตอร์ที่ต้องการจะส่งข้อมูลเครดิตการ์ดไปให้) ของเว็บไซท์อันนั้น ว่าต้องการจะติดต่อด้วย พอ server ได้คำร้องแล้วก็จะส่ง digital certificate (ใบรับรองอิเล็กทรอนิกส์ -- เพื่อยีนยันว่าเป็น secure server ของจริงถูกกฏหมาย) มาให้โปรแกรม Netscape พร้อมกับบอกมาด้วยว่าจะใช้ (private-key) cryptosystem อันไหนในการรับส่งข้อมูล (ซึ่งอาจจะเป็น DES, IDEA, ฯลฯ)  digital certificate ที่ได้จะมีข้อมูลเกี่ยวกับ ชื่อของ secure server, public-key ของ server เพื่อใช้กับ RSA,  ช่วงเวลาที่ใบรับรองมีผลใช้ได้ (valid), แล้วก็ชื่อของหน่วยงานที่ออกใบรับรองซึ่งเราเรียกว่า Certification Authority (CA) ใบรับรองนั้นได้รับการลงชื่อกำกับโดยลายเซ็นอิเล็กทรอนิกส์ (digital signature) ของ CA ทำให้โปรแกรม Netscape สามารถตรวจสอบได้ว่าเป็นใบรับรองของจริงหรือเปล่า (เรื่องของการตรวจสอบ digital signature ก็ใช้หลักการของ public-key cryptosystem เหมือนกัน รายละเอียดเอาไว้วันหลังนะ) ถ้านายดอนสวมรอยมาเป็น secure server และส่งใบรับรองเก๊มาหรือใบรับรองที่ถูกดัดแปลงมา โปรแกรม Netscape ก็จะรู้ทันทีจากการตรวจสอบ digital signature นี่แหละ ซึ่งถ้าเกิดขึ้นแล้ว โปรแกรม Netscape จะหยุดการติดต่อกับ server อันนั้นทันที (เสียใจด้วยนะนายดอน)

ถ้าการตรวจสอบใบรับรองผ่านไปด้วยดี โปรแกรม Netscape ก็จะสุ่มกุญแจขึ้นมาอันหนึ่งเรียกว่า session key ซึ่งเป็นกุญแจที่ใช้เฉพาะการติดต่อคราวนั้นเท่านั้น (ถ้ามีการติดต่อครั้งใหม่ก็จะสุ่มขึ้นมาใหม่) จากนั้นโปรแกรม Netscape ก็จะ encrypt ข้อมูล session key ด้วย public key ที่มากับใบรับรองโดยใช้ RSA แล้วส่งไปให้ secure server อันนั้น secure server ก็ทำการ decrypt ข้อมูลแล้วได้ session key กลับมา ตอนนี้ทั้งโปรแกรม Netscape และ secure server มี session key อันเดียวกัน และก็รู้ด้วยว่าจะใช้ private-key cryptosystem อันไหน ทีนี้ทั้งโปรแกรม Netscape และ secure server ก็สามารถรับส่งข้อมูลลับได้อย่างสบายโดยใช้ session key เป็น secret key ของ private-key cryptosystem ที่ใช้อยู่ พอทำธุระกันเสร็จ session key นั้นก็ทิ้งไป

เหตุการณ์ทั้งหมดที่พูดถึงข้างบนนี้เกิดขึ้นใช้เวลาเพียงเสี้ยววินาที น.ส.นิโคลแทบไม่รู้สึกเลยว่า มีอะไรเกิดขึ้นมากมายในระหว่างที่เธอส่งหมายเลขเครดิตการ์ดผ่านทางอินเตอร์เนตโดยใช้ secure connection

ฉบับนี้พอแค่นี้ก่อนนะครับ เดี๋ยวว่ากันต่อฉบับหน้าครับ



What'sNew SiteMap Search Home Guide Afterhour Webboard Exambank Magazine


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

email: vcharkarn@vcharkarn.com

Copyright 2001, Vcharkarn.com. All rights reserved.

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