DNSSEC چیست؟ بررسی عملکرد، رکوردها و امنیت DNS
هر بار که مرورگر آدرس یک وبسایت را باز میکند، اطلاعات آن از طریق DNS دریافت میشود. اما اگر این اطلاعات تغییر کرده باشند، کاربر ممکن است به سایت جعلی هدایت شود. نبود امکان تشخیص اصالت پاسخ در DNS، حملاتی مانند DNS Spoofing و DNS Cache Poisoning را بهوجود آورد.
برای رفع این مشکل، استاندارد DNSSEC معرفی شد. این فناوری بدون تغییر ساختار اصلی DNS، پاسخها را اعتبارسنجی میکند و به Resolver اجازه میدهد اصالت اطلاعات را بررسی کند. این فناوری امروزه یکی از فناوریهای مهم امنیت زیرساخت اینترنت است.
DNSSEC چیست؟
DNSSEC برای رمزگذاری اطلاعات طراحی نشده است. هدف آن احراز اصالت (Authentication) و حفظ یکپارچگی (Integrity) دادههای DNS است. در DNS معمولی، Resolver هر پاسخی را که از سرور معتبر به نظر برسد، میپذیرد. اگر مهاجم بتواند پاسخ جعلی را زودتر ارسال کند یا حافظه Cache یک Resolver را آلوده کند، کاربر بدون اطلاع به مقصد اشتباه هدایت خواهد شد.
DNSSEC این مشکل را با استفاده از امضای دیجیتال حل میکند. Resolver تنها زمانی پاسخ را معتبر میداند که بتواند امضای آن را تا Root DNS بهصورت رمزنگاریشده اعتبارسنجی کند.

اهداف اصلی DNSSEC
DNSSEC چهار هدف اصلی را دنبال میکند:
- جلوگیری از جعل پاسخهای DNS و هدایت کاربران به مقصد اشتباه
- تضمین اصالت منبع اطلاعات DNS
- جلوگیری از تغییر اطلاعات در مسیر انتقال
- ایجاد زنجیره اعتماد از Root Zone تا دامنه مقصد
DNSSEC برای رمزگذاری اطلاعات طراحی نشده و رمزنگاری ترافیک DNS، مخفی کردن درخواستها یا جلوگیری از شنود شبکه را انجام نمیدهد. اعتبارسنجی پاسخها با استفاده از امضای دیجیتال و ایجاد زنجیره اعتماد تا Root DNS انجام میشود.
معماری DNSSEC چگونه است؟
اجزای اصلی عبارتاند از:
DNSKEY (رکورد کلید عمومی DNS)
رکورد DNSKEY شامل کلیدهای عمومی مورداستفاده در DNSSEC است. این کلیدها برای اعتبارسنجی امضاهای دیجیتال رکوردهای RRSIG به کار میروند. معمولاً دو نوع کلید برای این رکورد وجود دارد. ZSK (Zone Signing Key) برای امضای رکوردهای موجود در Zone استفاده میشود و KSK (Key Signing Key) وظیفه امضای رکورد DNSKEY را بر عهده دارد. Resolver با استفاده از کلیدهای عمومی موجود در این رکورد بررسی میکند که اطلاعات DNS پس از امضا شدن تغییر نکرده باشد.
RRSIG (رکورد امضای دیجیتال)
رکورد RRSIG امضای دیجیتال رکوردهای DNS را نگهداری میکند. این امضا با استفاده از کلید خصوصی مربوطه ایجاد میشود و Resolver آن را با کلید عمومی موجود در رکورد DNSKEY اعتبارسنجی میکند. در صورتی که امضا معتبر باشد، مشخص میشود که دادههای DNS دستکاری نشدهاند و پاسخ دریافتی از یک منبع معتبر منتشر شده است.
DS (رکورد Delegation Signer)
رکورد DS ارتباط امن میان دامنه والد (Parent Zone) و دامنه فرزند (Child Zone) را برقرار میکند. این رکورد شامل هش (Hash) کلید عمومی KSK دامنه فرزند است و در دامنه والد ذخیره میشود. وجود این رکورد باعث ایجاد زنجیره اعتماد (Chain of Trust) در DNSSEC میشود و Resolver میتواند اعتبار کلیدهای دامنه فرزند را تأیید کند.
NSEC (رکورد Next Secure)
رکورد NSEC برای اثبات عدم وجود یک دامنه یا یک نوع رکورد در DNS استفاده میشود. زمانی که کاربر رکوردی را درخواست میکند که وجود ندارد، سرور به جای ارسال یک پاسخ معمولی، رکورد NSEC را برمیگرداند تا بهصورت رمزنگاریشده ثابت کند که آن رکورد واقعاً در Zone وجود ندارد. یکی از نقاط ضعف این روش، امکان Zone Enumeration یا فهرستبرداری از تمامی نامهای موجود در Zone است.
NSEC3 (رکورد Next Secure Version 3)
رکورد NSEC3 نسخه بهبودیافته NSEC است که برای جلوگیری از Zone Enumeration طراحی شده است. در این روش، به جای نمایش نام واقعی رکوردها، از مقدار هش (Hash) آنها استفاده میشود. این ویژگی باعث میشود مهاجمان نتوانند بهراحتی تمامی نامهای موجود در Zone را استخراج کنند و امنیت DNSSEC افزایش یابد.
CDS (رکورد Child DS)
رکورد CDS به دامنه فرزند اجازه میدهد تغییرات موردنیاز برای رکورد DS را به دامنه والد اعلام کند. این قابلیت معمولاً هنگام Key Rollover یا تعویض کلید KSK استفاده میشود و فرایند بهروزرسانی رکورد DS را تا حد زیادی خودکار میکند. در نتیجه، مدیریت DNSSEC سادهتر شده و احتمال بروز خطاهای انسانی کاهش مییابد.
CDNSKEY (رکورد Child DNSKEY)
رکورد CDNSKEY نسخهای از رکورد DNSKEY است که توسط دامنه فرزند منتشر میشود تا دامنه والد از کلید عمومی جدید آن مطلع شود. رجیستری یا Registrar دامنه میتواند از اطلاعات این رکورد برای ایجاد بهروزرسانی رکورد DS استفاده کند. این مکانیزم نیز مانند CDS، فرایند Key Rollover را خودکار کرده و مدیریت کلیدهای DNSSEC را آسانتر و ایمنتر میکند.
برای مدیریت آسان رکوردهای DNS و بهرهمندی از زیرساخت امن و پایدار، از سرویس DNS ابری پویان آیتی استفاده کنید.
اعتبارسنجی DNSSEC در Resolver چگونه انجام میشود؟
برای درک بهتر عملکرد DNSSEC، در ادامه مراحل اعتبارسنجی پاسخهای DNS توسط Resolver را بررسی میکنیم.
- مراحل اعتبارسنجی DNSSEC در Resolver:
- ارسال درخواست DNSSEC: درخواست DNS را با فعال بودن قابلیت DNSSEC توسط Resolver ارسال میشود. در این حالت، علاوه بر رکوردهای معمول، رکوردهای امنیتی مانند DNSKEY، RRSIG و در صورت نیاز DS نیز دریافت میشوند.
- بررسی امضای دیجیتال (RRSIG): Resolver ابتدا رکورد RRSIG را دریافت کرده و با استفاده از کلید عمومی موجود در رکورد DNSKEY، امضای دیجیتال را بررسی میکند.
- اگر امضا معتبر باشد:
- دادهها تغییر نکردهاند و پاسخ واقعا توسط صاحب دامنه امضا شده است.
- اگر امضا نامعتبر باشد، پاسخ رد میشود.
- اعتبارسنجی رکورد DNSKEY:
- فقط داشتن یک DNSKEY کافی نیست، زیرا ممکن است یک مهاجم کلید جعلی ارسال کند.
- Resolver باید مطمئن شود که DNSKEY متعلق به همان دامنه است. برای این کار، از رکورد DS که در دامنه والد قرار دارد، استفاده میکند.
- بررسی رکورد DS:
- Resolver هش کلید KSK موجود در DNSKEY را محاسبه میکند.
- سپس این هش را با مقدار موجود در رکورد DS مقایسه میکند.
- اگر برابر باشند، کلید معتبر است و اگر متفاوت باشند، اعتبارسنجی شکست میخورد.
- ادامه زنجیره اعتماد (Chain of Trust):
- همین فرایند برای دامنه والد نیز تکرار میشود و Resolver این زنجیره را تا Root Zone دنبال میکند.
- استفاده از Trust Anchor:
- در انتهای زنجیره، Resolver به Trust Anchor میرسد که همان کلید عمومی Root DNS است و از قبل داخل Resolver ذخیره شده است.
- اگر تمام مراحل از Root تا دامنه مقصد بدون خطا اعتبارسنجی شوند، پاسخ معتبر (Secure) محسوب میشود.
- نتیجه اعتبارسنجی، در پایان، یکی از سه وضعیت زیر رخ میدهد:
- Secure: تمام امضاها معتبر هستند و زنجیره اعتماد کامل است.
- Bogus: امضا یا زنجیره اعتماد نامعتبر است و پاسخ رد میشود.
- Insecure: دامنه از DNSSEC استفاده نمیکند و پاسخ پذیرفته میشود، اما بدون تضمین امنیت DNSSEC.
Key Rollover چیست؟
Key Rollover به فرایند تعویض یا جایگزینی کلیدهای رمزنگاری DNSSEC گفته میشود. در این فرایند، کلیدهای قدیمی با کلیدهای جدید جایگزین میشوند، بدون اینکه اعتبارسنجی DNSSEC مختل شود یا کاربران با خطای DNS مواجه شوند. به بیان ساده، همانطور که رمز یک حساب کاربری را هر چند وقت یکبار تغییر میدهیم، کلیدهای DNSSEC نیز باید بهصورت دورهای تعویض شوند تا امنیت حفظ شود.
دو نوع اصلی: ZSK Rollover و KSK Rollover
تعویض KSK پیچیدهتر است، زیرا نیازمند بهروزرسانی DS در رجیسترار یا رجیستری است. در بسیاری از سرویسهای مدرن، رکوردهای CDS و CDNSKEY میتوانند این فرایند را تا حدی خودکار کنند، البته در صورتی که رجیسترار از RFC 8078 پشتیبانی کند.
چرا Key Rollover اهمیت دارد؟
- افزایش امنیت: اگر یک کلید خصوصی به هر دلیلی افشا شود، مهاجم میتواند پاسخهای DNS جعلی را امضا کند. با تعویض دورهای کلیدها، حتی اگر کلید قبلی به خطر افتاده باشد، مدتزمان سوءاستفاده از آن بسیار محدود خواهد بود.
- کاهش ریسک نشت کلید: کلیدهای رمزنگاری نباید برای مدت طولانی استفاده شوند. هرچه عمر یک کلید بیشتر باشد، احتمال افشا، سرقت یا سوءاستفاده بیشتر خواهد شد. به همین دلیل، استانداردهای امنیتی توصیه میکنند کلیدها بهصورت دورهای تعویض شوند.
- رعایت استانداردهای امنیتی: سازمانهایی مثل IETF و ICANN انجام Key Rollover را بهعنوان یکی از بهترین روشهای مدیریت DNSSEC معرفی کردهاند. بسیاری از رجیستریها و ارائهدهندگان DNS نیز این فرایند را بهصورت منظم انجام میدهند.
در نهایت
DNSSEC یکی از راهکارهای مهم برای افزایش امنیت DNS است که با استفاده از امضای دیجیتال، اصالت و یکپارچگی پاسخهای DNS را بررسی میکند. این فناوری با ایجاد زنجیره اعتماد از Root Zone تا دامنه مقصد، از حملاتی مانند DNS Spoofing و DNS Cache Poisoning جلوگیری میکند. همچنین مدیریت صحیح کلیدها و انجام Key Rollover برای حفظ امنیت و عملکرد صحیح DNSSEC اهمیت زیادی دارد.
سوالات متداول
Resolver هش DNSKEY مورد انتظار را از رکورد DS دریافت کرده و آن را با کلید ارائهشده توسط Zone فرزند مقایسه میکند. عدم تطابق باعث شکست اعتبارسنجی میشود.
اگر کلیدهای قدیمی و جدید، رکوردهای DS یا امضاهای مرتبط بهدرستی مدیریت نشوند، زنجیره اعتماد شکسته شده و Resolver ممکن است پاسخها را Bogus تشخیص دهد.
منابع
- https://www.cloudflare.com/learning/dns/dnssec/how-dnssec-works/
به این مقاله امتیاز دهید!
میانگین امتیاز 0 / 5. تعداد رأی ها : 0
هنوز هیچ رأیی داده نشده. اولین نفر باشید!


اولین دیدگاه را اضافه کنید.