DNS & DNSSEC
วันนี้มาด้วยเรื่องหนักๆ เกี่ยวกับ ความปลอดภัยของระบบชื่อโดเมน โดยจะเริ่มอธิบายเกี่ยวกับ Domain Name System กันก่อนนะคะ
การทำงานของระบบ Domain Name System (DNS) คือการจับคู่โดเมนกับ IP address เพื่อให้เครื่องหรืออุปกรณ์บนเครือข่ายอินเทอร์เน็ตส่งข้อมูลหากันได้โดยใช้ IP address ในขณะที่มนุษย์จดจำและใช้ชื่อโดเมนแทน IP Address โดยข้อมูลของชื่อโดเมนและ IP Address จะถูกเก็บเป็น text ไฟล์ซึ่งเราเรียกว่า zone file
DNS นั้นเป็นระบบศักดินาคือมีการแบ่งลำดับชั้น โดยชั้นบนสุดเรียกว่า root และในลำดับต่อจาก root ลงมาคือ Top Level Domains และลำดับถัดลงไปอีกเป็น Second Level → Third Level → Forth Level ต่อๆไป เช่นเดียวกับต้นไม้ที่มีราก และมีลำต้นเติบโตแตกกิ่งก้านสาขาออกไป เพียงแต่ว่าสำหรับ DNS นั้นจะเป็นภาพต้นไม้หัวกลับ คือมี root อยู่ด้านบน และกิ่งก้านแตกออกมาด้านล่างนั่นเอง การที่มีลำดับชั้นทำให้เรามีชื่อโดเมนให้เลือกใช้มากมาย
สำหรับชื่อโดเมนในระดับบนสุด หรือ Top Level Domains (TLDs) นั้นแบ่งออกได้เป็นสองประเภทคือ
-
Generic Top Level Domains (gTLDs) โดเมนระดับบนสุดแบบทั่วไป เช่น .com .net .org .asia .travel .info .biz เป็นต้น ในปัจจุบันมีทั้งหมด 21 โดเมน
-
Country Code Top Level Domains (ccTLDs) หรือ โดเมนระดับบนสุดแบบชื่อย่อรหัสประเทศ เช่น .th .jp .my .me .la .tv .cn .cc เป็นต้น ในปัจจุบันมีทั้งหมด 252 โดเมน
และในอนาคตอันใกล้นี้เราจะได้มีโอกาสเห็น TLDs ใหม่ๆ ทั้งที่ใช้ตัวหนังสือภาษาอังกฤษในแบบปัจจุบัน และใช้ตัวหนังสือภาษาท้องถิ่นของหลายๆประเทศ
DNS เป็นระบบฐานข้อมูลแบบกระจาย คือ zone file ของแต่ละ TLD จะอยู่ในความรับผิดชอบของหน่วยงานที่ได้รับมอบหมาย (registry) เช่น .com .net มีบริษัท VeriSign เป็นผู้ดูแล ในขณะที่ .asia มีหน่วยงานชื่อ DotAsia เป็นผู้ดูแลฐานข้อมูล เป็นต้น การกระจายฐานข้อมูลออกไปนี้ ทำให้ระบบอินเทอร์เน็ตเสถียรกว่าการรวมฐานข้อมูลไว้ที่ใดที่หนึ่ง
เครื่องที่เก็บ zone file หรือที่เราเรียกว่า name server (NS) จะทำหน้าที่ตอบคำถามเมื่อมีการถามหา IP Address ของโดเมนที่ NS นั้นๆ มีข้อมูลอยู่
TLDs มีตั้งมากมาย ทำอย่างไรเครื่องทุกเครื่องบนอินเทอร์เน็ตจึงจะรู้ว่า ฐานข้อมูลของแต่ละ TLD อยู่ที่ไหนเพื่อที่จะไปดึงข้อมูลที่ต้องการมาได้ ระบบ DNS จึงต้องมีข้อมูลของ NS ของแต่ละ TLD เก็บไว้ที่ root เพื่อให้เครื่องทุกเครื่องเข้ามาดูข้อมูลและรู้ว่าจะไปสอบถามข้อมูลโดเมนภายใต้แต่ละ TLD ได้ที่ไหน
ระบบ DNS ถูกออกแบบมาให้สามารถ delegate โดเมนใดๆ ไปให้เครื่อง NS อื่นจัดเก็บข้อมูลของโดเมนที่เกิดใหม่ได้ เช่น เมื่อมีจดทะเบียนโดเมน dotarai.com จะมีชื่อ dotarai ปรากฏใน zone file ของ .com ซึ่งถ้าผู้ที่ถือครองโดเมนต้องการใช้ NS ของตนเองจัดเก็บและตอบคำถามเกี่ยวกับโดเมน dotarai.com ก็สามารถกำหนด NS ของโดเมนและแจ้งข้อมูลไปยัง VeriSign ได้ เมื่อต้องการใช้ชื่อเว็บไซต์ ก็สามารถสร้างข้อมูลใน zone file บนเครื่อง NS ของโดเมน dotarai.com เพื่อบอกว่า www.dotarai.com มี IP address อะไรได้
เช่นเดียวกับสังคมทั่วไป สังคมบนอินเทอร์เน็ตก็มีผู้ที่จ้องจะหาผลประโยชน์โดยไม่คำนึงถึงความถูกต้อง อาชญกรรมบนอินเทอร์เน็ตเกิดขึ้นมากมาย เทคนิคของจอมโจรบนไซเบอร์มีหลากหลาย หนึ่งในนั้นคือการปลอมเป็น NS ของโดเมนและให้ข้อมูล IP Address ผิดเพื่อให้เหยื่อหลงเข้าไปยังเครื่องของจอมโจรเหล่านั้นแทนการเข้าไปใช้งานเครื่องจริง ในหลายกรณีเหยื่อเข้าใจผิดและกรอกข้อมูลความลับของตน ทำให้โจรใช้ข้อมูลที่ได้มาไปหาประโยชน์ ซึ่งในหลายๆครั้งเหยื่อสูญเสียทรัพย์สินจำนวนมากไปกับการกระทำเหล่านั้น
ทำอย่างไรเราจึงจะรู้ว่าข้อมูล IP address ของชื่อโดเมนที่ต้องการเป็นข้อมูลที่ถูกต้อง นักพัฒนาจึงได้คิดค้น DNS Security Extensions (DNSSEC) ขึ้นเพื่อเพิ่มความปลอดภัยให้กับระบบ DNS โดยจะมีการ Sign (เซ็นสลัก) zone file และเมื่อมีการอ้างถึงข้อมูลใน zone จะต้องมีการเช็คกลับไปว่าเป็นข้อมูลที่ได้เป็นข้อมูลที่ถูกต้องหรือไม่ การ sign zone นั้นจะทำแค่ในระดับโดเมนที่มีการ delegate เพียงอย่างเดียวนั้นไม่ถือว่ามีความปลอดภัยเพียงพอ การ sign ตั้งแต่ root ไล่ลงมาที่ TLD ทุกขั้นตามลำดับจึงจะมีความปลอดภัยมากที่สุด ถ้าท่านไหนสนใจรายละเอียดเพิ่มเติมเกี่ยวกับ DNSSEC สามารถศึกษาได้จาก http://en.wikipedia.org/wiki/DNSSEC
ขอจบเนื้อหาของวันนี้เพียงเท่านี้ก่อน และมาติดตามเรืองราวของ DNSSEC กับ ROOT และ TLDs กันในตอนต่อไปค่ะ
เพ็ญศรี
