Home » DNSSEC: DNS Security Extensions และ Chain of Trust
DNSSEC: DNS Security Extensions และ Chain of Trust
DNSSEC: DNS Security Extensions และ Chain of Trust
DNSSEC (DNS Security Extensions) เป็นชุด extensions สำหรับ DNS ที่เพิ่ม authentication และ integrity ให้กับ DNS responses โดยใช้ digital signatures ป้องกัน DNS spoofing และ cache poisoning attacks ที่ attacker ปลอม DNS response เพื่อ redirect users ไปยัง malicious sites
DNS ถูกออกแบบมาโดย ไม่มี security — client ไม่มีทางรู้ว่า DNS response ที่ได้รับเป็นของจริงหรือถูกปลอมแปลง DNSSEC แก้ปัญหานี้โดยให้ DNS server sign responses ด้วย cryptographic keys ทำให้ client verify ได้ว่า data มาจาก authoritative source จริง
DNS Threats ที่ DNSSEC ป้องกัน
| Threat |
วิธีโจมตี |
DNSSEC ป้องกัน? |
| DNS Cache Poisoning |
ส่ง fake DNS response ไปยัง resolver → cache ผิด |
ใช่ (signature verification) |
| DNS Spoofing |
ปลอม DNS response ระหว่างทาง (MITM) |
ใช่ (integrity check) |
| DNS Hijacking |
เปลี่ยน DNS settings ที่ router/device |
ไม่ (ต้องใช้วิธีอื่น) |
| DDoS on DNS |
Flood DNS server ด้วย requests |
ไม่ (ต้องใช้ DDoS protection) |
| DNS Tunneling |
ส่ง data ผ่าน DNS queries |
ไม่ (ต้องใช้ DNS monitoring) |
DNSSEC Components
| Component |
ความหมาย |
| RRSIG (Resource Record Signature) |
Digital signature สำหรับ DNS record set |
| DNSKEY |
Public key ที่ใช้ verify RRSIG |
| DS (Delegation Signer) |
Hash ของ child zone’s DNSKEY (ใน parent zone) |
| NSEC/NSEC3 |
Authenticated denial of existence (ยืนยันว่า record ไม่มีจริง) |
| KSK (Key Signing Key) |
Key ที่ sign DNSKEY records (trust anchor) |
| ZSK (Zone Signing Key) |
Key ที่ sign zone data (RRsets) |
Chain of Trust
| Level |
Trust Anchor |
วิธี Verify |
| Root Zone (.) |
Root KSK (pre-configured ใน resolvers) |
Resolver trust root KSK โดยตรง |
| TLD (.com, .th) |
DS record ใน root zone |
Root DNSKEY → verify TLD DS → verify TLD DNSKEY |
| Domain (example.com) |
DS record ใน TLD zone |
TLD DNSKEY → verify domain DS → verify domain DNSKEY |
| Records (www.example.com) |
Domain DNSKEY |
Domain ZSK → verify RRSIG → verify A/AAAA records |
KSK vs ZSK
| Feature |
KSK (Key Signing Key) |
ZSK (Zone Signing Key) |
| Signs |
DNSKEY RRset เท่านั้น |
ทุก RRsets อื่นใน zone |
| Key Size |
ใหญ่กว่า (2048-4096 bit RSA) |
เล็กกว่า (1024-2048 bit RSA) |
| Rollover |
นานๆ ครั้ง (1-2 ปี) |
บ่อยกว่า (1-3 เดือน) |
| DS Record |
Hash ของ KSK อยู่ใน parent zone |
ไม่มี DS (ไม่ link กับ parent) |
| Trust Chain |
เป็น trust anchor (link parent → child) |
Sign actual data |
DNSSEC Validation Process
| Step |
Action |
| 1 |
Resolver query www.example.com A record |
| 2 |
ได้ A record + RRSIG (signed by ZSK) |
| 3 |
ได้ DNSKEY ของ example.com (ZSK + KSK) |
| 4 |
Verify RRSIG ด้วย ZSK → data integrity OK |
| 5 |
ได้ DS record จาก .com zone (hash ของ KSK) |
| 6 |
Verify KSK matches DS → chain to parent OK |
| 7 |
ทำซ้ำขึ้นไปจนถึง root (trusted anchor) |
| 8 |
ถ้า chain ครบ → SECURE, ถ้าไม่ → BOGUS/INSECURE |
NSEC vs NSEC3
| Feature |
NSEC |
NSEC3 |
| Purpose |
Prove non-existence ของ record |
เหมือน NSEC แต่ป้องกัน zone walking |
| Zone Walking |
เปิดเผย ทำให้ enumerate ทุก records ได้ |
ใช้ hashed names (ไม่เปิดเผย actual names) |
| Recommended |
สำหรับ zones ที่ไม่ sensitive |
สำหรับ zones ที่ต้องการ privacy |
DNSSEC Deployment Status
| Zone/Domain |
DNSSEC Status |
| Root Zone (.) |
Signed ตั้งแต่ 2010 |
| .com, .net, .org |
Signed |
| .th (Thailand) |
Signed |
| Overall domains |
~5-10% ของ domains ทั้งหมด signed |
| Validating resolvers |
~30% ของ resolvers ทำ DNSSEC validation |
Best Practices
| Practice |
รายละเอียด |
| ใช้ managed DNSSEC |
ใช้ DNS providers ที่ manage DNSSEC ให้ (Cloudflare, Route 53, Google) |
| Algorithm |
ใช้ ECDSA P-256 (Algorithm 13) — เล็กกว่าและเร็วกว่า RSA |
| Automate key rollover |
ZSK rollover ทุก 90 วัน (automated) |
| Monitor validation |
ใช้ dnsviz.net ตรวจ chain of trust |
| Enable validation |
Enable DNSSEC validation บน recursive resolvers |
| Test before deploy |
ทดสอบ signing ใน staging ก่อน production |
ทิ้งท้าย: DNSSEC = DNS Authentication
DNSSEC เพิ่ม digital signatures ให้ DNS responses Chain of Trust: Root → TLD → Domain → Records KSK = trust anchor, ZSK = sign data, DS = link parent-child ป้องกัน cache poisoning + spoofing (ไม่ป้องกัน DDoS/tunneling) ใช้ managed DNSSEC + ECDSA P-256 + automated key rollover
อ่านเพิ่มเติมเกี่ยวกับ SSL TLS Certificates และ DDoS Protection ที่ siamlancard.com หรือจาก icafeforex.com และ siam2r.com