วันพุธที่ 19 สิงหาคม พ.ศ. 2552

การป้องกันโดยการเข้ารหัสและถอดรหัส พร้อมการใช้งานจริง

การเข้ารหัสและการถอดรหัสข้อมูล
พื้นฐานการเข้ารหัสข้อมูล
• Cryptography หมายถึงศาสตร์การรักษาความลับข้อของความด้วยวิธีการเข้ารหัส (Encryption)
• การเข้ารหัส (Encryption) เป็นกรรมวิธีที่ใช้แปลงข้อมูลธรรมดาที่เราสามารถอ่านได้ให้อยู่ในรูปสุ่มที่ไม่
สามารถอ่านได้
• Plain Text : ข้อมูลที่สามารถอ่านได้ เรียกอีกอย่างว่า Clear Text
• Cipher Text : ข้อมูลที่ถูกเข้ารหัสเอาไว้ไม่สามารถอ่านได้
• Encryption : ขบวนการเข้ารหัสข้อมูลโดยอาศัย Encryption Key ทำให้ Plain Text เปลี่ยนเป็น
Cipher Text เพื่อไม่ให้อ่านข้อมูลได้ ดังนั้นหากผู้ส่งข้อมูลทำการเข้ารหัสข้อมูลเพื่อทำให้เป็น Cipher
Text แล้วถึงส่งข้อมูลไปให้ฝั่งรับ ถึงแม้มีการขโมยข้อมูล ผู้ที่ขโมยข้อมูลก็ไม่สามารถอ่านข้อมูลได้
• Decryption : ขบวนการถอดรหัสข้อมูลโดยอาศัย Decryption Key ทำการแปลง Cipher Text
กลับมาเป็น Plain Text ที่สามารถอ่านได้
รูปแบบวิธีการเข้ารหัสข้อมูล
• Caesar Substitution Ciphers
• Monoalphabetic Substitution Ciphers
• Transposition Ciphers
• Secret Key Encryption
• Public Key Encryption
• DES : Data Encryption Standard
• RSA
Caesar Substitution Ciphers
• เป็นการแทนค่าแต่ละตัวอักษรด้วยสัญลักษณ์เพียงตัวเดียว เป็นวิธีทีง่ายที่สุด ใช้มาตั้งแต่สมัยจูเลียส ซี
ซาร์ ในการเข้ารหัสเนื้อความจดหมายส่งไปให้ทัพทหารระหว่างการรบ
• ตัวอย่าง ใช้ความสัมพันธ์ของอักษรในภาษาอังกฤษ 26 ตัว โดยที่ ตัวอักษรใน Cipher Text จะได้
จาก Plain Text + ไปยัง 3 ลำดับของตัวอักษรในภาษาอังกฤษ ในทางกลับกัน Plain Text จะเท่ากับ
Cipher Text - ไปยัง 3 ลำดับของตัวอักษรในภาษาอังกฤษ
Plain Text : a b c d e f g h I j k l m n o p q r s t u v w x y z
Cipher Text : d e f g h I j k l m n o p q r s t u v w x y z a b c
เช่น Love You ---> 0ryh brx


• วิธีนี้เมื่อมีการขโมย Cipher Text สามารถถอดได้ไม่ยากนัก เนื่องจากมีคำตอบที่เป็นไปทั้งหมด 25
คำตอบ
• โดยทดสอบการแทนที่ตัวอักษรไปเรื่อยๆ ก็จะเจอข้อความที่สามารถอ่านได้
• การถอดรหัสข้อมูล 0ryh brx
ลำดับตัวอักษร a b c d e f g h I j k l m n o p q r s t u v w x y z
เลื่อนกลับ 1 ตำแหน่ง : nqxq aqw
เลื่อนกลับ 2 ตำแหน่ง : mpwf zpv
เลื่อนกลับ 3 ตำแหน่ง : love you ◊ จะเจอคำที่สามารถอ่านได้
Monoalphabetic Substitution Ciphers
• เป็นการแทนค่าแต่ละตัวอักษรด้วยสัญลักษณ์เพียงตัวเดียวเช่นกัน แต่เป็นอย่างอิสระหรือไม่มีเหตุผลว่า
ทำไมต้องเป็นแบบนี้
• ตัวอย่าง มีการกำหนดตัวอักษรในการเข้ารหัสแทนที่ ตามแป้น
Plain Text :
Cipher Text:
เช่น Love You ---> sgct ngx
• ในการเข้ารหัสข้อมูลและถอดรหัสข้อมูลทั้งสองฝ่ายจะต้องมี ตารางที่ใช้สำหรับการแทนที่ตัวอักษร
และจะต้องเก็บตารางดังกล่าวไว้เป็นอย่างดี
• แบบนี้เมื่อมีการขโมย Cipher Text สามารถถอดได้ยากกว่าแบบแรก เนื่องจากแต่ละตัวมีอักษรที่จะ
สามารถเป็นไปได้ 26 ตัวอักษรดังนั้นคำตอบที่จะเป็นไปได้ทั้งหมดมี 26! ถ้าการถอดรหัสทำได้โดยใช้
อักษรแทนลงที่ละตัวต้องใช้เวลานานมากกว่าจะถอดได้
• วิธีถอดรหัสอีกวิธีหนึ่งคืออาศัยสถิติความถี่ของตัวอักษรมาช่วย
• จากสถิติตัวอักษรที่พบบ่อย เรียงจากมาก --> น้อย คือ
หากเราแทนตัวอักษรตัวที่มี
จำนวนมากที่สุดด้วย e และแทน
ตัวถัดไปด้วย t แล้วพบเจอรูป
ประโยค tYe จะได้ Y คือ h
a b c d e f g h i j k l m n o p q r s t u v w x y z
q w e r t y u i o p a s d f g h j k l z x c v b n m
ตัวอักษร 1 ตัว : e, t, o, a, n, I
ตัวอักษร 2 ตัว : th, in, er, re, an
ตัวอักษร 3 ตัว : the, ing, and, ion



Transposition Ciphers
• แบบไม่ใช้ Key: ไม่มีการสลับลำดับของหลัก
ตัวอย่าง Plain Text : this is a message for you และใช้ 5 หลัก
Transposition : เปลี่ยนแถวในเป็นหลักเปลี่ยนหลักให้เป็นแถว
Cipher Text : TSSOHAARIMGYSEEOISFU
Transposition Ciphers
• แบบใช้ Key ช่วย :มีการจัดลำดับหลักตาม key เช่น MEGABUCK
ตัวอย่าง Plain Text : this is a message for you


• การถอดรหัส
Cipher Text : SAUIGAAFCHSYISOMODTER
Plain Text : คืออะไร ... ทำเป็นการบ้าน ?
• วิธีนี้เมื่อมีการขโมย Cipher Text จะถอดรหัสได้ยากเนื่องจาก ต้องทำการเดาจำนวนหลักทั้งหมดที่ใช้
และ ลำดับในการเรียงหลักดังกล่าวด้วย
เทคโนโลยีการเข้ารหัส
• กรณีที่ Encryption Key = Decryption Key เราเรียกขบวนการเข้ารหัสถอดรหัสนี้ว่า Symmetric-
Key Encryption เช่น การเข้ารหัสแบบ Secret Key Encryption
• กรณีที่ Encryption Key ไม่เท่ากับ Decryption Key เราเรียกว่าขบวนการเข้ารหัสถอดรหัสนี้ว่า
Asymmetric-Key Encryption เช่น การเข้ารหัสแบบ Public Key Encryption
การเข้ารหัสแบบ Secret Key Encryption
• การเข้ารหัสแบบนี้จะอาศัยกุญแจเข้ารหัสเพียงอันเดียวในการเข้ารหัสและถอดรหัสข้อมูล ซึ่งทั้งผู้รับ
และผู้ส่งข้อความจะใช้คีย์เดียวกัน ดังนั้นกุญแจดังกล่าวจึงต้องเก็บเป็นความลับ
• วิธีนี้มีข้อเสียที่ทั้งสองฝ่ายต้องใช้รหัสลับร่วมกัน ดังนั้นถ้ามีการติดต่อระหว่างคน n คน จะต้องใช้คีย์
เดียวกันหมด ทำให้แต่ละคนสามารถอ่านข้อความของกันได้


การเข้ารหัสแบบ Public Key Encryption
• กุญแจ Public Key สามารถแจกจ่ายให้ผู้อื่นที่อยู่ในระบบได้และถูกใช้ในการเข้ารหัสข้อมูล
• กุญแจ Secret Key จะถูกเก็บไว้เป็นความลับเพื่อใช้ในการถอดรหัสข้อมูล
• การเข้ารหัสแบบนี้จะอาศัยคู่ของกุญแจ Public Key - Secret Key ใช้ในการเข้ารหัสและถอดรหัสข้อมูล
ผู้ใช้แต่ละคนควรมีกุญแจ Public Key - Secret Key คนละคู่


• ในการส่งข้อมูลจาก A ไปหา B นั้น ข้อมูลที่ต้องการส่งจะผ่านขบวนการเข้ารหัสข้อมูลโดยใช้ Public
key ของB จะได้ Cipher Text ส่งไปยัง B
• เมื่อข้อมูล Cipher ส่งมาถึง B แล้ว จะผ่านขบวนการถอดรหัสข้อมูลโดยใช้ Secret key ของ B จะได้
Plain Text ที่ A ต้องการส่งถึง B
• วิธีนี้สามารถใช้ในการยืนยันตัวบุคคล (Authentication)ได้ด้วย เป็นการตรวจสอบว่าบุคคลที่ส่งมานั้น
เป็นผู้ส่งคนนั้นจริง ทำได้โดยให้ผู้ส่งส่งข้อมูลโดยใช้ Secret key ของผู้ส่งเอง ซึ่งจะมีผู้ส่งเพียงคน
เดียวเท่านั้นที่ทราบ Secret key ดังกล่าว และเมื่อข้อมูลดังกล่าวส่งมาถึงผู้รับ ผู้รับจะใช้ Public key
ของผู้ส่งในการถอดรหัสเพื่ออ่านข้อความ ถ้าสามารถเปิดอ่านได้แสดงว่าเป็นผู้ส่งคนนั้นจริงๆ
• โดยสรุปแล้วแบบ Public Key มีประโยชน์ 2 ทางคือ
1. เพื่อใช้ในการรักษาความลับของข้อมูล
2. เพื่อตรวจสอบยืนยันตัวบุคคล (Authentication)


มาตรฐานการเข้ารหัสข้อมูล DES
• DES : Data Encryption Standard คือ อัลกอริทึมของการเข้ารหัสข้อมูลแบบ Private key ที่
นำมาใช้เป็นมาตรฐานในการป้องกันข้อมูลที่สำคัญ นิยมใช้ในวงการค้าและข้อมูลการเงิน
• คุณสมบัติโดยทั่วไปคือ
1. ใช้คีย์ 56 บิต
2. เป็นการเข้ารหัสแบบSymmetric Key
3. ถูกออกแบบให้ทำงานบนฮาร์ดแวร์
4. ใช้จัดการกับ Plain Text 64 bit ---> Cipher Text 64 bit
DES : Data Encryption Standard
การแปลง Key 56 bit --> 48 bit
• Transposition 56 bit เพื่อเป็น Key
• แบ่งออกเป็น 2 ส่วน ส่วนละ 28 bit
• ทำการ Rotate ทางซ้าย ตามครั้งที่ Iteration (1,2,..16)
• Transposition
• ทำการเลือก 48 บิตขึ้นมาเป็น Key จาก 56 บิต
การเข้ารหัส Fiestel Cipher


Function มี 4 step
• หา E 48 bit โดยใช้ทำ Transposition 32 bit ของกลุ่มทางขวาและ Duplication rule เพื่อให้มีขนาด
48 bit
• นำ E มา Xor กับ Key 48 bit
• แบ่งเป็น 6 bit จำนวน 8 กลุ่ม
• นำ 6 bit ผ่าน S box ได้ 4 บิต รวมเป็น 32 บิต
การนำ DES ไปใช้งาน มีมาตรฐานที่นิยมใช้กับอยู่ 3 ลักษณะ
1. ECB Mode : Electronic Code Book
• เนื่องจาก DES ใช้กับPlain Text 64 bit ---> Cipher Text 64 bit หากมีข้อมูลที่ต้องการเข้ารหัสเกิน
กว่า 64 บิต จะต้องทำการแบ่งเป็นส่วนๆ ส่วนละ 64 บิต แล้วทำการเข้ารหัส
1. ในการถอดรหัสข้อมูลก็ต้องทำการถอดรหัสที่ละ 64 บิตเช่นกัน นั้นคือ เอา Cipher Text 64 bit ของแต่
ละกลุ่ม มาผ่านการ Decryption จะได้เป็น Plain Text 64 bit ของแต่ละกลุ่ม
2. CBC Mode : Cipher Block Chaining
• จะต้องทำการแบ่งข้อมูลที่ต้องการเข้ารหัส เป็นส่วนๆ ส่วนละ 64 บิต ในครั้งแรกจะมีการ Random Key
64 bit เพื่อนำมาใช้ในการ XOR กับ Plain Text 64 bit กลุ่มแรก แล้วถึงผ่านขบวนการเข้ารหัสข้อมูล
จะได้ Cipher Text 64 bit ในชุดแรกออกมา
• และเอา Cipher Text 64 bit ที่ได้ในชุดแรก มาเป็น Key ในกลุ่มถัดไป


• ในการถอดรหัสจะนำ Cipher Text 64 bit มาผ่านขบวนการถอดรหัส และผลลัพธ์ที่ได้จะนำมา XOR
กับ Key 64 bit จะได้เป็น Plain Text 64 bit ออกมา
• ในการถอดรหัสจะใช้ Cipher Text ของชุดที่แล้วมาเป็น Key ยกเว้นในรอบแรก จะใช้ Random Key