วันพฤหัสบดีที่ 10 กันยายน พ.ศ. 2552

เทคโนโลยีการเข้ารหัสลับ Cryptography

เทคโนโลยีการเข้ารหัสลับหรือวิทยาการการเข้ารหัสลับนั้นเริ่มเป็นที่รู้จักกันมาตั้งแต่สมัยโรมัน พัฒนาจากแนวคิดเกี่ยวกับ พื้นฐานในการรักษาความปลอดภัยของข้อมูลอิเล็กทรอนิกส์และพัฒนาเรื่อยมาจนถึงปัจจุบัน ซึ่งกลายเป็นกระบวนการทางคณิตศาสตร์ ในการเข้ารหัสลับ (Cryptographic Algorithms) โดยการสร้างสิ่งที่อยู่ในรูปตัวอักษร อักขระ ตัวเลข หรือสัญลักษณ์ใดๆ ขึ้นมา และเรียกสิ่งนั้นว่า “กุญแจ (key)” และใช้ “กุญแจ (key)” นั้นเอง เป็นกลไกสำคัญในการ “เข้ารหัส” และ “ถอดรหัส”

คำศัพท์สำคัญพื้นฐานในการทำความเข้าใจวิทยาการการเข้ารหัส
ในการทำความเข้าใจพื้นฐานของวิทยาการในการเข้ารหัสนั้น จำเป็นต้องทำความเข้าใจคำศัพท์หลายคำเช่นกันซึ่งมีความสำคัญต่อขั้นตอนวิธีในการเข้าและถอดรหัส อันได้แก่

“การเข้ารหัส (encryption)” และ “การถอดรหัส (decryption)”
“การเข้ารหัส” หมายถึง การแปลงข้อความหรือข้อมูลอิเล็กทรอนิกส์รูปหนึ่งที่อ่านได้ (plaintext) ให้อยู่ในอีกรูปแบบหนึ่ง ที่เปลี่ยนแปลงไปจากเดิมซึ่งอ่านไม่ได้ (ciphertext) ส่วน “การถอดรหัส” หมายถึงการแปลงข้อมูลอิเล็กทรอนิกส์จากรูปแบบที่เปลี่ยนแปลงไปจากเดิม (ciphertext) นั้น ให้กลับไปอยู่ในรูปของข้อความหรือข้อมูลอิเล็กทรอนิกส์รูปแบบเดิมก่อนการเปลี่ยนแปลง (plaintext)

Source: Secure Electronic Commerce,
Warwick Ford and Michael S. Baum, Prentice Hall PTR, 1997

สำหรับกระบวนการข้างต้นในการแปลงข้อมูลอิเล็กทรอนิกส์ที่อ่านได้เป็นข้อมูลอิเล็กทรอนิกส์ที่อ่านไม่ได้จะนี้เรียกว่า “การเข้ารหัส (Encryption) และการแปลงข้อมูลอิเล็กทรอนิกส์กลับให้อยู่ในรูปของข้อมูลอิเล็กทรอนิกส์ที่อ่านได้เรียกว่า “การถอดรหัส (Decryption)”
“กุญแจ (key)”
คำว่า “กุญแจ (key)” ซึ่งเป็นกลไกสำคัญในการเข้ารหัสหรือถอดรหัสนั้น จะสร้างขึ้นด้วยกระบวนการทางคณิตศาสตร์ที่คำนวณโดยอัตโนมัติ และได้ผลลัพธ์ซึ่งอาจจะอยู่ในรูปของ อักษร อักขระ ตัวเลข หรือสัญลักษณ์ใดๆ ก็ได้ เช่น

D3K7EF8C9FE98A4B58CB2A57FD814BF78BC3D98B15FE8A
4FA8EB33C2F5D569FFB4A0012CF16EDA45CEF79AA5F1D3
AF7D9B46CF711CE84DEA011BF8A2D75F9CA701AD4B8A9F


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

“กุญแจคู่ (key pairs)”
“กุญแจคู่” จะประกอบด้วยกุญแจสองข้างที่สร้างขึ้นมาพร้อมกันด้วยกระบวนการทางคณิตศาสตร์ที่เรียกว่า “ระบบรหัสแบบอสมมาตร” โดยกุญแจข้างหนึ่งเรียกว่า “กุญแจส่วนตัว (private key)” ส่วนอีกข้างเรียกว่า “กุญแจสาธารณะ (public key)” เหตุที่เรียกต่างกันเพราะลักษณะการทำงานของกุญแจทั้งสองข้างที่ต่างกัน กล่าวคือ “กุญแจส่วนตัว” นั้น ใช้ในการสร้างลายมือชื่อดิจิทัลเพื่อระบุหรือยืนยันตัวบุคคล ส่วน “กุญแจสาธารณะ” นั้นใช้ในการตรวจสอบลายมือชื่อ ดิจิทัล กุญแจทั้งสองข้างซึ่งสร้างขึ้นมาพร้อมกันนี้จึงเป็นกุญแจที่มีความสัมพันธ์กันในเชิงตรรกะซึ่งต้องใช้ควบคู่กันเสมอ7

“กุญแจส่วนตัว (private key)” หมายความถึง กุญแจที่ใช้ในการสร้างลายมือชื่อดิจิทัล

“กุญแจสาธารณะ (public key)” หมายความถึง กุญแจที่ใช้ในการตรวจสอบลายมือชื่อดิจิทัล

ประเภทระบบการเข้ารหัส
อย่างไรก็ตาม วิทยาการการเข้ารหัสนั้นสัมพันธ์อย่างยิ่งกับกลไกการทำงานของ “กุญแจ” ที่สร้างขึ้นให้อยู่ในรูปของข้อมูลอิเล็กทรอนิกส์เพราะในการเข้ารหัสแต่ละครั้งอาจใช้กุญแจเพียงแค่ข้างเดียวหรือหลายข้างต่างวัตถุประสงค์กันไป จึงทำให้สามารถแยกประเภทของการเข้ารหัสตามจำนวนกุญแจที่นำมาใช้ได้ ดังนี้

ระบบการเข้ารหัสแบบกุญแจสมมาตร (Symmetric Key Cryptosystem)

รูปการเข้ารหัสแบบ Secret Key Encryption

การเข้ารหัสแบบสมมาตรนี้อาจจะเป็นการเข้ารหัสอย่างง่าย เช่น กำหนดเพียงให้เลื่อนพยัญชนะออกไปอีก 1 ตำแหน่งกล่าวคือคำว่า “กฎหมาย” หากเลื่อนตำแหน่งพยัญชนะไป 1 ตัว ก็จะปรากฎเป็นดังนี้ “ขฏฬาย” แทนคำว่า “กฎหมาย”จะเป็นการนำข้อมูลอิเล็กทรอนิกส์แบบธรรมดาเข้ารหัสโดยการแปลงข้อมูลนั้นให้อยู่ในรูป ที่ไม่สามารถอ่านได้ด้วยการใช้กุญแจดอกเดียวกันหรือสูตรเดียวกันผ่านกระบวนการทางคณิตศาสตร์ทั้งในการเข้ารหัสและถอดรหัสเพื่อ แปลงข้อมูลอิเล็กทรอนิกส์ที่อ่านไม่ได้ให้เป็นข้อมูล อิเล็กทรอนิกส์ที่อ่านได้ ดังนั้นเมื่อใช้กุญแจในการเข้ารหัสแล้วก็ต้องส่งมอบกุญแจนั้นให้กับผู้รับ อีกฝ่ายซึ่งต้องใช้กุญแจดอกเดียวกันในการถอดรหัส และต้องมีการเก็บรายละเอียดเกี่ยวกับกุญแจไว้เป็นความลับเพื่อความปลอดภัยของข้อมูลอิเล็กทรอนิกส์ กรณีที่ไม่ประสงค์ ให้บุคคลที่สามหรือบุคคลอื่นได้ล่วงรู้อันอาจนำกุญแจไปใช้ในทางมิชอบโดยการเปิดเผยข้อมูลให้สาธารณะชนได้รับรู้ อย่างไรก็ตาม ระบบการเข้ารหัสแบบสมมาตรมีข้อดี คือ อาจตกลงให้มีการเข้ารหัสแบบง่ายๆ เช่น การเลื่อนพยัญชนะ หรือกรณีที่มีการใช้เทคโนโลยีซับซ้อนขึ้น การเข้ารหัสแบบนี้ก็จะช่วยให้สามารถเข้ารหัสและถอดรหัสได้รวดเร็ว แต่ก็มีข้อเสียเพราะข้อตกลงให้มีการเข้ารหัสแบบง่ายๆ อาจทำให้บุคคลอื่นล่วงรู้ได้ง่าย และในกรณีที่มีการใช้ระบบกุญแจก็จะประสบปัญหาในด้านการบริหารจัดการกุญแจเพราะในการใช้กุญแจเพื่อเข้ารหัสและถอดรหัสนั้นจะต้องใช้กุญแจอันเดียวกัน ผู้สร้างกุญแจจึงต้องแจ้งให้บุคคลอื่นทราบเพื่อใช้ในการถอดรหัส ซึ่งการจะทำสำเนาให้บุคคลหลายคนเพื่อใช้ร่วมกันก็อาจจะก่อให้เกิดปัญหาในการระบุตัวบุคคล การแสดงความผูกพันหรือความรับผิดที่เกิดขึ้นจากการทำธุรกรรมในครั้งนั้น ดังนั้น โดยทั่วไปในการใช้กุญแจในระบบสมมาตรจึงมักมีการสร้างกุญแจขึ้นแบบสำหรับคนสองคนใช้ร่วมกัน ดังนั้นหากมีหลายคน ถ้าไม่ต้องการให้กุญแจซ้ำกันก็ต้องให้กุญแจหลายดอก เป็นจำนวนมากเพื่อความคล่องตัวและสะดวกในการใช้งานสำหรับกรณีที่ต้องติดต่อสื่อสารกับคนเป็นจำนวนมาก เช่น คนสี่คนติดต่อกัน จะต้องใช้กุญแจคนละ 3แบบ รวมทั้งสิ้นมีคู่กรณีได้ 6 คู่ รวมกุญแจทั้งสิ้น 6 แบบ ถ้าคน 100 คนจะต้องใช้กุญแจจำนวนมากซึ่งก็จะ เกิดปัญหามากมายติดตามมาเช่นกันในการบริหารจัดการกุญแจซึ่งมีเป็นจำนวนมาก

ระบบการเข้ารหัสแบบกุญแจอสมมาตร (Asymmetric Key Cryptosystem)

รูปการเข้ารหัสแบบ Public Key Encryption

ระบบการเข้ารหัสแบบอสมมาตรเป็นการเข้าและถอดรหัสโดยใช้กุญแจสองดอก กุญแจข้างหนึ่งใช้เข้ารหัส อีกข้างหนึ่งหรืออีกดอกหนึ่งใช้ในการถอดรหัส ข้างที่ใช้ในการเข้ารหัสต้องเก็บไว้เป็นความลับ ส่วนข้างที่ใช้ในการถอดรหัสไม่จำต้องเก็บไว้เป็นความลับแต่อย่างใด (หรือจะใช้กลับกันก็ได้แล้วแต่วัตถุประสงค์)
กุญแจที่สร้างขึ้นจะสร้างขึ้นพร้อมกันเรียกว่า “กุญแจคู่ (Key Pair)” ข้างที่ใช้ในการเข้ารหัสเรียกว่า “กุญแจส่วนตัว(Private Key)” ส่วนอีกข้างใช้ในการถอดรหัสเรียกว่า “กุญแจสาธารณะ (Public Key)” และโดยทั่วไปกุญแจทั้งสองข้างแม้สร้างขึ้นมาพร้อมกันแต่ก็จะมีลักษณะไม่เหมือนกัน ยิ่งไปกว่านั้น การเข้ารหัสและถอดรหัส หากใช้กุญแจข้างเดียวกัน จะไม่ได้ผลต้องใช้อีก ข้างหนึ่งซึ่งสร้างขึ้นมาพร้อมกันเท่านั้นจึงจะบรรลุวัตถุประสงค์ในการนำไปใช้

ข้อดีของการเข้ารหัสแบบสมมาตร
1. การเข้ารหัสและถอดรหัสข้อมูลใช้เวลาน้อย เพราะว่าอัลกอริทึมที่ใช้ไม่ได้สลับซับซ้อน
2. ขนาดของข้อมูลหลังจากทำการเข้ารหัสแล้ว มีการเปลี่ยนแปลงไม่มาก หรือพูดอีกนัยหนึ่งว่า ข้อมูลหลังจากทำการเข้ารหัสแล้ว จะมีขนาดไม่ใหญ่ไปกว่าเดิมมากนัก

ข้อด้อยของการเข้ารหัสแบบสมมาตร
1. การจัดการกับกุญแจลับที่ยุ่งยาก เพราะ Mr. A ต้องจำให้ได้ด้วยว่า ถ้าจะติดต่อกับ Mr. B ต้องใช้กุญแจลับดอกไหน หรือติดต่อกับนายขาวต้องใช้กุญแจลับดอกไหน
2. การกระจายกุญแจลับ เนื่องจากการเข้ารหัสวิธีนี้ต้องใช้กุญแจลับ 1 ดอกต่อผู้รับ 1 คน ดังนั้นถ้า Mr. A ต้องติดต่อกับคนมากๆ Mr. A ก็ต้องส่งกุญแจลับที่ใช้ไปให้กับทุกคน

ที่มา

http://www.ecommerce.or.th/ictlaw/et/explain/chapter2-2-3.html

http://www.nextproject.net/contents/default.aspx?00044

http://www.vcharkarn.com/va2/index.php/my/show/17025/article