การรักษาความปลอดภัยข้อมูล ตอนที่ 1
การเข้ารหัสแบบคีย์เดียว
การรักษาความปลอดภัยข้อมูล ตอนที่ 1
1. เกริ่นนำการรักษาความปลอดภัยข้อมูล
เรารักษาความปลอดภัยข้อมูลเนื่องจากเจ้าของข้อมูลไม่ต้องการให้ผู้อื่นที่ไม่ใช่เป้าหมายได้รับข้อมูลที่ตนเองเผยแพร่ไป
หรือแม้ว่าจะได้รับข้อมูลแต่ก็ไม่สามารถเข้าใจเนื้อความในข้อมูลนั้นได้
ดังนั้นวิธีง่ายๆเลยคือนำข้อมูลมาเข้ารหัสบางอย่างไว้
แม้ว่าผู้รับสารจะไม่ใช่ผู้รับตัวจริงแต่เค้าก็ย่อมไม่เข้าใจเนื้อความในข้อมูลนั้นเนื่องจากแปลความไม่ออก
คำว่าข้อมูลในที่นี้อาจจะเป็นได้ทั้ง ตัวอักษรข้อความ ภาพ หรือ วิดีโอที่มีทั้งเสียงและภาพก็ได้
ไม่ว่าจะอยู่ในรูปแบบไหนเมื่อเข้ารหัสแล้ว เป้าหมายก็คือ
จะต้องเป็นผู้รับเท่านั้นที่จะสามารถเข้าใจเนื้อความของข้อมูลที่ผู้ส่งส่งไปนั้นได้
2. การจู่โจมโดยผู้สอดแนม (Man-in-the-Middle Attack)
คำว่าผู้สอดแนม (เรียกแบบไทยๆง่ายๆว่า Middle
Man Attack ก็น่าจะพอได้ครับ) ในที่นี้
หมายถึงใครก็ได้ที่อยู่ตรงกลางระหว่างผู้ส่งกับผู้รับ
เค้ามีโอกาสได้รับสารที่ผู้ส่งส่งไปอาจจะด้วยวิธีการลักขโมยมา
หรือว่าเป็นบุรุษเดินสารก็ได้ ในภาพต่อไปนี้แสดงให้เห็นการส่งสารระหว่างอลิซ (Alice)
กับบ็อบ (Bob) (เนื่องจากในวิชา Security
ทั่วไปนิยมใช้ชื่อ 3 ชื่อนี้มากๆ คือ Alice,
Bob และ Eve เราเรียนตามก็ใช้ตามเค้าแล้วกันครับ)
ในภาพข้างต้นจะเห็นว่าอลิซเป็นผู้ส่งสาร
ข่าวสารข้อมูลไหลผ่านช่องทางสื่อสาร ใช้คำว่าแชนแนลแทนช่องทางสื่อสาร
และใช้คำว่าเมสเสจทับศัพท์แทนคำว่าข่าวสารในภาษาไทย
ส่วนผู้รับคือบ็อบเป็นผู้รอรับเมสเสจทางแชนแนลที่กำหนดไว้ ในภาพด้านบนจะเห็นว่า
อลิซสามารถส่งเมสเสจไปยังบ็อบได้โดยยังไม่ใครมาสอดแนม
ในภาพด้านล่าง
จะเห็นว่าอีฟทำหน้าที่เป็นผู้สอดแนม ภาษาอังกฤษเรียกวิธีการจู่โจมแบบนี้ว่า Man-in-the-middle
หรือย่อๆว่า MITM (อ่านว่ามิ้ม)
อีฟสอดแนมที่แชนแนลและรับเมสเสจที่อลิซส่งมาก่อนที่จะไปถึงบ็อบ
อีฟอ่านเมสเสจนั้นเข้าใจเนื้อความว่าอลิซต้องการบอกอะไรแก่บ็อบ
หลังจากนั้นอีฟอาจจะแก้ไขเมสเสจและส่งคืนกลับไปให้บ็อบ
ในขั้นตอนนี้อีฟทำเพื่อไม่ให้บ็อบสงสัยว่ามีผู้สอดแนม
ในกรณีที่อีฟรู้ว่าบ็อบจะไม่คุยกับอลิซเพื่อยืนยันเนื้อความกันอีก
อีฟอาจจะแก้ไขเนื้อความให้ผิดไปจากต้นฉบับเดิมก็ได้ (แบบที่ภาษาบ้านเราเรียกว่า
ฤาษีแปลงสาร ไงครับ ในที่นี้จะแปลงให้ดีให้ร้ายได้ทั้งนั้น)
แต่ถ้าอีฟรู้ว่าบ็อบอาจจะมีการยืนยันเนื้อความกับอลิซ อีฟอาจจะไม่แก้ไขเนื้อหาใดๆ
เอาแค่ว่ารู้ว่าอลิซกำลังคุยอะไรกับบ็อบอยู่ก็พอ
จะเห็นว่าการจู่โจมโดยผู้สอดแนมนี้
สามารถแก้ไขได้ด้วย 2 วิธี วิธีแรกคือ
ถ้าแชนแนลที่อลิซใช้ส่งข่าวให้บ็อบเป็นแชนแนลที่ปลอดภัย (Secure Channel) อลิซย่อมไม่สามารถเข้าถึงและสอดแนมได้ อีกวิธีนึงคือ
ถ้าเนื้อหาข่าวสารที่อลิซส่งไปให้บ็อบผ่านการเข้ารหัสไว้และอีฟไม่รู้ว่าจะถอดรหัสอย่างไร
แม้ว่าอีฟจะเข้าถึงแชนแนลและได้ข้อมูลไปก็ย่อมไม่เข้าใจสิ่งที่อลิซต้องการคุยกับบ็อบ
นั่นก็คือสอดแนมไม่สำเร็จและข้อมูลมีความมั่นคงปลอดภัยนั่นเอง
3. การเข้ารหัสแบบคีย์เดียว (Symmetric Key)
เป็นวิธีการเข้ารหัสข้อมูลโดยใช้คีย์
(ผู้เขียนขอใช้ทับศัพท์คำว่า Key ว่าคีย์
แทนการใช้คำว่ากุญแจซึ่งฟังแล้วรู้สึกเข้าใจยาก)
คีย์ในที่นี้เหมือนกับกุญแจบ้านทั่วไป คือก่อนเราจะออกจากบ้านถ้าไม่ต้องการให้ขโมยเข้าบ้านเราก็เอาแม่กุญแจล็อคประตูบ้านเอาไว้
ขโมยที่ไม่มีลูกกุญแจ (เปรียบลูกกุญแจนี่ก็คือคีย์นั่นเอง)
ย่อมไม่สามารถบิดเปิดแม่กุญแจแล้วเข้าบ้านเราได้ (ไม่นับวิธีการอื่นนะครับ
ขโมยจริงๆอาจจะไม่ใช้ลูกกุญแจงัดเข้าบ้านก็ได้ครับ)
ทีนี้เรามีลูกกุญแจเดียวถ้าต้องการให้พี่น้องเราเข้าบ้านได้ด้วยเราก็ต้องเอากุญแจไปก็อปปี้ใช่มั้ยครับ
กุญแจที่ก็อปมาได้ก็แจกจ่ายกันไปให้กับพี่น้องที่เราไว้ใจและอนุญาตให้เข้าบ้านเรา
ซึ่งจะเห็นว่าพี่น้องที่ได้กุญแจเราไปจะได้กุญแจแบบเดียวกับตัวต้นฉบับเลย
เรียกว่าไม่ผิดเพี้ยนกัน
วิธีการเข้ารหัสข้อมูลแบบคีย์เดียว
ใช้วิธีการเดียวกันกับตัวอย่างลูกกุญแจข้างต้นคือให้ผู้ส่งข้อมูลกำหนดรหัสขึ้นมาเป็นคีย์
และส่งรหัสนั้นไปให้กับผู้รับข้อมูล เมื่อถึงจังหวะที่จะส่งข้อมูลไปให้ผู้รับ
ก็ให้ผู้ส่งใช้คีย์ที่ตกลงกันไว้นี้เข้ารหัสข้อมูลแล้วส่งข้อมูลที่เข้ารหัสแล้วไปให้ผู้รับปลายทาง
เมื่อผู้รับปลายทางได้รับข้อมูลแล้วก็จะเอาคีย์ที่ตกลงกันไว้ถอดรหัสและได้ข้อมูลต้นฉบับกลับออกมา
สามารถแสดงขั้นตอนได้ดังภาพต่อไปนี้
ในภาพข้างต้นสามารถอธิบายในแต่ละขั้นตอนได้ดังนี้
1. สร้างคีย์ อลิซเป็นผู้ส่ง
ก่อนจะส่งจะสร้างคีย์ขึ้นมาเตรียมไว้
2. ข้อมูลไม่ปกปิด ข้อมูลที่ไม่เข้ารหัสไว้เราเรียกว่าเพลนเท็กซ์
(Plain) หรือเคลียร์เท็กซ์ (Clear) เป็นข้อมูลที่ต้องการส่งไปให้ผู้รับ
3. เข้ารหัส อลิซใช้คีย์ที่สร้างขึ้นเข้ารหัสข้อมูลไม่ปกปิดด้วยกรรมวิธีบางอย่าง
เราเรียกว่าเป็นอัลกอริธึมการเข้ารหัสแบบคีย์เดียว (Symmetric Key
Algorithm) ตัวอย่างของอัลกอริธึมยอดนิยมในสายนี้คือ DES
(Data Encryption Standard) หรือ AES (Advance Encryption Standard) เมื่อเข้ารหัสแล้วจะได้ออกมาเป็นข้อมูลปกปิด
เรียกว่าเป็นไซเฟอร์เท็กซ์ (Cipher Text) ซึ่งใครก็ตามที่ไม่มีคีย์สำหรับถอดรหัสจะไม่สามารถเข้าใจเนื้อความได้
4. ส่งคีย์ อลิซจะต้องหาทางส่งคีย์ไปให้กับบ็อบ
(เปรียบเทียบกับลูกกุญแจก็คือเอาไปก็อปปี้ให้นั่นเอง)
ถ้าคิดภาพคีย์ไม่ออกก็เช่นรหัสผ่าน (Password) ที่เราใช้กันนั่นแหละครับ
นั่นคืออลิซต้องหาทางส่งรหัสผ่านไปให้กับบ็อบ ขั้นนี้จะเห็นว่ามีจุดอ่อนอยู่
เดี๋ยวเราค่อยว่ากันทีหลังครับ สมมุติว่าบ็อบได้รับคีย์แล้ว
5. ส่งรับข้อมูลและถอดรหัส อลิซจะส่งข้อมูลที่เข้ารหัสไปให้กับบ็อบโดยไม่สนใจว่าแชนแนลปลอดภัยหรือไม่
เพราะถือว่าใครได้ไปก็ถอดไม่ได้อยู่ดี
เมื่อบ็อบได้ข้อมูลมาบ็อบจะถอดรหัสด้วยคีย์ที่รับมาก่อนหน้านั้นด้วยอัลกอริธึมเดียวกันกับที่ใช้ในการเข้ารหัส
ก็จะทำให้ได้รับข้อมูลเดิมต้นฉบับกลับมาและเข้าใจเนื้อความได้
6. ถ้าถูกสอดแนม สมมุติว่าถ้าอีฟสอดแนมและได้ข้อมูลมาระหว่างทาง
อีฟย่อมไม่สามารถเข้าใจเนื้อความได้เนื่องจากไม่มีคีย์ในการถอดรหัสนั่นเอง
จะเห็นว่าวิธีการนี้ปลอดภัยระดับหนึ่ง
แต่มีจุดอ่อนอยู่ 2 อย่าง อย่างแรกคือขั้นที่ 4 ตอนส่งคีย์ ถ้าในขั้นตอนส่งคีย์นั้นอีฟสอดแนมและได้รับคีย์ไป
ก็ย่อมสามารถถอดรหัสได้ และจุดอ่อนอีกข้อก็คือถ้าคีย์เป็นคีย์ที่ไม่แข็งแรง
เช่นถ้าเป็นรหัสผ่านก็เป็นคำที่เดาได้ง่าย
ผู้สอดแนมย่อมสามารถคาดเดาคีย์และถอดรหัสได้เช่นกัน
สิ่งที่คนทั่วไปมักเข้าใจผิดก็คือ
เข้าใจว่าอัลกอริธึมที่ใช้เข้ารหัสควรจะต้องถูกปกปิดด้วย
ในทางอุดมคติถือว่าอัลกอริธึมที่ใช้เข้ารหัสสามารถเปิดเผยให้คนทั่วไปรับรู้วิธีการได้
อัลกอริธึมที่ดีจะไม่ซับซ้อนมากนัก (เพราะถ้าซับซ้อนมากจะกินแรงคอมพิวเตอร์สูง)
ใช้เวลาเข้ารหัสและถอดรหัสไม่นาน
แต่สำหรับผู้ที่ไม่มีคีย์ที่ถูกต้องจะต้องใช้เวลานานมากมายมหาศาลในการถอดรหัสให้สำเร็จ
ตัวอย่างเช่น ถ้าใช้อัลกอริธึม AES ที่มีคีย์ยาว 256 บิตเข้ารหัสข้อมูล และใช้วิธีการถอดรหัสแบบ Brute-Force คือไล่คีย์ไปเรื่อยๆโดยไม่เดาหาคีย์ถูก
จะต้องทดลองคีย์ถอดรหัสไปเรื่อยๆนานถึง 9.1732631e50[1]
ปี (แบบคนทั่วไปเข้าใจคือประมาณ 9 x 10^50 หรือ
9 แล้วต่อท้ายด้วยเลขศูนย์ 0 อีก 50
ตัว)
ซึ่งถือว่าต้องใช้เวลานานมากกว่าอายุของจักรวาลนับตั้งแต่กำเนิดมาเสียอีก
[1]
อ่านเพิ่มเติมได้ที่ https://www.reddit.com/r/theydidthemath/comments/1x50xl/time_and_energy_required_to_bruteforce_a_aes256/
ความคิดเห็น
แสดงความคิดเห็น