پروتکلی وجود ندارد که هکرها اقدام به نفوذ و حمله به آن نکرده باشند. از پروتکلهایی مانند TSL و HTTP گرفته تا شبکه مبتنی بر دامنه مانند DNS که کار اتصال دامنه به هاست را انجام میدهد. [شبکه DNS] که به عنوان یک وصله بین دامنه و هاست عمل میکند، نیز میتواند ابزار بسیار خوبی برای سرقت اطلاعات کاربران و حتی کلاهبرداری از آنها باشد. هکرها با هک کردن DNS، میتوانند دامنه مرتبط با آن را به یک هاست دیگر متصل کنند و تا با وارد کردن آدرس دامنه در مرورگر، کاربر وارد یک صفحه جعلی شود.
این صفحه جعلی میتواند کاربر را کاملاً فریب دهد و از آنجا که کاربر به آدرس دامنه و حتی پیشوند https اطمینان دارد، براحتی اطلاعات حیاتی خود را در اختیار این صفحه جعلی قرار میدهد. از سمت دیگر متخصصان امنیت نیز بیکار ننشستند و پروتکل DNSSEC را برای بالا بردن امنیت DNS توسعه دادند. در این مقاله به «بررسی پروتکل DNSSEC» و چگونگی عملکرد آن خواهیم پرداخت.
DNS چیست؟ آشنایی با نحوه آدرسدهی دامنه و ارتباط آن با سرویسدهنده
DNSSEC چیست؟
DNS که ضمیمههای امنیتی سامانه نام دامنه نیز نامیده میشود، نقش دفترچه تلفن اینترنت را ایفا میکند و آدرس دامنه را به آدرس IP سرور ترجمه میکند. با این حال، DNS به طور ذاتی امن نیست و در برابر حملات مختلف مانند جعل DNS و مسمومیت DNS آسیبپذیر است. DNSSEC مخفف عبارت Domain Name System Security Extensions است و در زبان انگلیسی چنینی تعریف میشود: suite of IETF specifications for securing certain kinds of information provided by DNS؛ که مجموعهای از پروتکلها را برای افزایش امنیت سیستم نام دامنه (DNS) ارائه میدهد. DNSSEC با استفاده از امضاهای دیجیتال و رمزنگاری، به حل این مشکل میپردازد. در این روش رکوردهای DNS با استفاده از کلیدهای رمزنگاری امضا میشوند. این امضاها صحت و اصالت دادههای DNS را تأیید میکنند و از دستکاری یا جعل آنها توسط مهاجمان جلوگیری میکنند. این امر از رهگیری و خواندن دادههای DNS توسط افراد غیرمجاز جلوگیری میکند.
DNSSEC چگونه کار میکند؟
در اولین مرحله حفاظت از یک Zone، باید رکوردهای مختص آن با نوع (type) یکسان داخل یک RRset قرار گیرد. برای مثال اگر در یک Zone چهار NS Record وجود داشته باشد، همهی آنها در یک RRset قرار میگیرند.در نتیجه بجای امضای جداگانه رکوردهای DNS ، محتوای RRset آن رمزنگاری میشوند. به همین شکل، زمان اعتبارسنجی یک رکورد، همه رکوردهای مشابه آن، که درون RRset قرار دارند نیز، تایید اعتبار میشوند. در نتیجه هنگامی که کاربری نام دامنهای را در مرورگر خود وارد میکند، فرآیند زیر برای یافتن آدرس IP سرور مربوطه انجام میشود:
-
ارسال درخواست : مرورگر کاربر یک درخواست DNS به سرور DNS محلی ارسال میکند.
-
تأیید اعتبار : سرور DNS محلی امضای دیجیتال رکوردهای DNS را تأیید میکند. اگر امضاها معتبر باشند، به این معنی است که رکوردها دستکاری نشدهاند و میتوان به آنها اعتماد کرد.
-
رمزگشایی : اگر رکوردهای DNS رمزگذاری شده باشند، سرور DNS محلی آنها را با استفاده از کلید رمزنگاری مناسب رمزگشایی میکند.
-
ارسال پاسخ : سرور DNS محلی آدرس IP مربوطه را به مرورگر کاربر ارسال میکند.
چگونگی رمزنگاری DNSSEC
یکی از متداول ترین راههای بالابردن امنیت اطلاعات در اینترنت، ایجاد لایههای امنبیتی به کمک رمزنگاری اطلاعات است. در این روش رکوردهای DNS یک لایه رمزنگاری میشوند. در این حالت اگر حتی هکرها بتوانند این رکورد رمزنگاری شده را به دست آورند، با قدرتمندترین کامپیوترها نیز ماهها طول میکشد تا بتوانند این لایه رمزنگاری را بشکنند و به رکوردهای اصلی برسند و این یعنی عملاً راهی نیست که هکرها بتوانند رکوردهای DNSSEC را بدست آورند و یا آنها را تغییر دهند. زیرا قبل از هرچیز هکرها باید با این رکوردها در شبکه DNS احراز هویت کنند. این لایه امنیتی دقیقاً مشابه لایه امنیتی SSL در پروتکل HTTPS عمل میکند، با این تفاوت که دارای جفت کلید است و کاربرد دیگری دارد.
SSL چیست و چگونه کار می کند؟ مزایا و انواع آن
امضای دیجیتال چیست؟
رکوردهای DNS با استفاده از کلیدهای رمزنگاری امضا میشوند. این امضاها به تأیید صحت و اصالت دادههای DNS کمک میکنند و از دستکاری یا جعل آنها توسط مهاجمان جلوگیری میکنند. روند احراز هویت رکوردهای DNS به وسیله یک جفت کلید امنیتی Public Key و Private Key انجام میشود که مانند نام کاربری و کلمه عبور برای ربات DNSSEC عمل میکنند. در واقع اطلاعات رکوردهای DNSSEC به کمک این جفت کلید رمزنگاری میشوند.
اصطلاحات کلیدی در DNSSEC
-
RRset: مجموعهای از رکوردهای DNS با نام، نوع و کلاس یکسان. به عنوان مثال، تمام رکوردهای NS برای یک دامنه در یک RRset قرار میگیرند.
-
RRSIG: رکوردی که حاوی امضای دیجیتال یک RRset است.
-
DNSKEY: رکوردی که شامل کلید عمومی ZSK یا KSK است.
-
ZSK: کلید امضای منطقه (Zone Signing Key) که وظیفه امضای رکوردهای DNS به جز رکوردهای DNSKEY مربوط به یک دامنه را بر عهده دارد.
-
DS: رکوردی که شامل هش (hash) کلید عمومی KSK موجود در رکورد DNSKEY است. از رکوردهای DS برای ساخت زنجیرهای از اعتبارسنجی در سلسله مراتب DNS استفاده میشود.
-
KSK: کلید امضای ریشه (Key Signing Key) که وظیفه امضای رکوردهای DNSKEY مربوط به یک دامنه را بر عهده دارد.
Zone Signing Key (ZSK)
در DNSSEC برای هر دامنه (Zone) یک جفت کلید رمزنگاری به نام ZSK وجود دارد. کلید خصوصی ZSK برای امضای رکوردهای DNS (RRset) و کلید عمومی ZSK برای تأیید این امضاها استفاده میشود. امضای هر RRset در یک رکورد به نام RRSIG ذخیره میشود. Resolver های بازگشتی (مانند Recursive Resolver) برای تأیید صحت امضا و دسترسی به اطلاعات رکوردها، به کلید عمومی ZSK نیاز دارند. این کلید در رکوردهای DNSKEY ذخیره و برای Resolver ها ارسال میشود. هنگامی که Resolver درخواست رکورد خاصی را میدهد، سرور نام (Name Server) رکورد مربوطه و RRSIG آن را ارسال میکند.
Resolver سپس رکورد DNSKEY را برای تأیید اعتبار کلید عمومی ZSK درخواست میکند. مجموع RRset، RRSIG و رکوردهای DNSKEY یک پاسخ معتبر را تشکیل میدهند. تأیید اعتبار Public ZSK در یک DNSKEY Record به معنای تأیید تمام رکوردهای آن دامنه (Zone) است. برای تأیید اعتبار Public ZSK نیاز به روشهای دیگری مانند زنجیره امضا (DS Record) است. ZSK نقشی اساسی در امنیت DNS ایفا میکند و از جعل و دستکاری اطلاعات DNS جلوگیری میکند.
Key Signing Key (KSK)
KSK (Key Signing Key) در DNSSEC وظیفهی مهم امن کردن رکوردهای DNSKEY حاوی Public ZSK را بر عهده دارد. KSK نیز مانند ZSK یک جفت کلید شامل Private KSK و Public KSK است. Public KSK ها مشابه Public ZSK ها در رکوردهای DNSKEY ذخیره میشوند.
مراحل تأیید اعتبار در DNSSEC
درخواست رکورد: Resolver (مانند Recursive Resolver) برای دریافت رکورد مورد نظر، به سرور نام (Name Server) درخواست ارسال میکند.
ارسال رکورد و امضا: سرور نام در پاسخ به درخواست Resolver، رکورد مورد نظر به همراه رکورد RRSIG مربوط به آن را ارسال میکند.
تأیید اعتبار امضا: Resolver برای تأیید اعتبار امضای RRSIG، به کلیدهای عمومی نیاز دارد.
درخواست رکورد DNSKEY :Resolver برای دریافت Public ZSK و Public KSK به سرور نام درخواست ارسال میکند.
ارسال رکورد DNSKEY و امضا: سرور نام رکورد DNSKEY را به همراه رکورد RRSIG مربوط به آن برای Resolver ارسال میکند.
تأیید اعتبار RRSIG DNSKEY :Resolver با استفاده از Public KSK اعتبار RRSIG مربوط به رکوردهای DNSKEY را بررسی میکند.
تأیید اعتبار Public ZSK: در صورت تأیید اعتبار RRSIG DNSKEY، اعتبار Public ZSK نیز تأیید میشود.
تأیید اعتبار RRSIG نهایی: Resolver در نهایت با استفاده از Public ZSK اعتبار RRSIG مربوط به رکورد درخواست شده را بررسی میکند.
تأیید اعتبار Public KSK
همانطور که گفته شد، برای تأیید اعتبار Public ZSK نیاز به Public KSK است. این موضوع یک چالش دایرهای ایجاد میکند. DNSSEC برای حل این مشکل از رکورد DS (Delegation Signer) استفاده میکند. رکورد DS شامل هش (Hash) Public KSK است که در رکورد DNSKEY ذخیره شده است. با استفاده از زنجیرهای از رکوردهای DS میتوان Public KSK را در سلسله مراتب DNS تأیید اعتبار کرد.
رکورد DS (Delegation Signer) و زنجیره اعتماد در DNSSEC
رکورد DS (Delegation Signer) نقشی اساسی در DNSSEC ایفا میکند و به تأیید اعتبار Public KSK در دامنههای فرعی (Child Zone) و ایجاد زنجیره اعتماد در سلسله مراتب DNS کمک میکند. به این نکته نیز باید توجه داشت که در هر مرحله از زنجیره تأیید اعتبار، اگر اعتبار کلید تأیید نشود، کل فرآیند تأیید اعتبار با شکست مواجه میشود.
نحوه عملکرد DS
-
دریافت DS از Parent Zone: هرگاه Resolver قصد دسترسی به یک دامنه فرعی (Child Zone) را داشته باشد، سرور نام (Name Server) مربوط به دامنه اصلی (Parent Zone) یک رکورد DS را به آن ارسال میکند.
-
استخراج هش Public KSK : رکورد DS شامل هش (Hash) Public KSK است که در رکورد DNSKEY دامنه فرعی ذخیره شده است.
-
مقایسه هش : Resolver هش Public KSK را از رکورد DNSKEY استخراج و با محتوای رکورد DS مقایسه میکند.
-
تأیید اعتبار : اگر دو هش با یکدیگر مطابقت داشته باشند، به معنای معتبر بودن Public KSK و در نتیجه تأیید اعتبار تمام رکوردهای دامنه فرعی است.
مزایای DS
-
ایجاد زنجیره اعتماد : DS با ایجاد زنجیرهای از اعتماد، از جعل Public KSK و دستکاری رکوردهای DNS در دامنههای فرعی جلوگیری میکند.
-
کاهش بار پردازشی Resolver ها : به جای ذخیرهسازی میلیونها Public Key، Resolverها فقط زنجیرهای از رکوردهای DS را ذخیره میکنند که این امر به طور قابل توجهی بار پردازشی و پیچیدگی تأیید اعتبار DNSSEC را کاهش میدهد.
زنجیره وابستگی KSK و DS
KSK و رکورد DS به شدت به یکدیگر وابسته هستند. هر گونه تغییر در KSK نیازمند تغییر در رکورد DS مربوط به دامنه اصلی (Parent Zone) است. این تغییر یک فرآیند چند مرحلهای است که در صورت عدم انجام صحیح، میتواند منجر به جدایی دامنه فرعی شود. به همین دلیل، تغییر ZSK بسیار سادهتر از KSK است.
تأیید اعتبار DS
رکورد DS نیز مانند سایر رکوردها امضا میشود و دارای رکورد RRSIG خاص خود است. برای تأیید اعتبار DS نیاز به تأیید اعتبار Public KSK از دامنه اصلی (Parent Zone) است. این فرآیند شامل تکرار مراحل تأیید اعتبار تا زمانی که Public KSK از Parent دریافت شود، است.
تأیید اعتبار root DNS Server
در بالاترین سطح سلسله مراتب DNS، root DNS Serverها قرار دارند. برای تأیید اعتبار Public KSK مربوط به root DNS Serverها، از مراسمی به نام Root Signing (یا Root Signing Ceremony) استفاده میشود. در این مراسم، ICANN رکورد DNSKEY RRset مربوط به root DNS Serverها را امضا میکند و یک رکورد RRSIG تولید میشود که با استفاده از آن میتوان Public KSK و Public ZSK مربوط به root Name Server را تأیید اعتبار کرد.
نقطه ضعف
DNSSEC با وجود مزایای فراوان، در برابر حملههای Man-In-The-Middle آسیبپذیر است. در این نوع حملات، مهاجم میتواند در زنجیره تأیید اعتبار اخلال ایجاد کند و باعث شود Resolver رکوردهای جعلی را معتبر تلقی کند.
مزایای DNSSEC
استفاده از DNSSEC مزایای متعددی را به همراه دارد، از جمله آنها میتوان به موارد زیر اشاره کرد :
-
جلوگیری از جعل DNS: از جعل آدرسهای IP توسط مهاجمان برای هدایت کاربران به وبسایتهای جعلی جلوگیری میکند.
-
جلوگیری از مسمومیت DNS: از تزریق اطلاعات نادرست به رکوردهای DNS توسط مهاجمان جلوگیری میکند.
-
محرمانگی: از رهگیری و خواندن دادههای DNS توسط افراد غیرمجاز جلوگیری میکند.
-
اصل عدم انکار: به کاربران اطمینان میدهد که پاسخهای DNS که دریافت میکنند از سرورهای DNS معتبر آمدهاند.
محدودیتهای DNSSEC
با وجود مزایای متعددی که دارد، DNSSEC دارای برخی محدودیتها نیز هست که کار با آن را کمی دشوار میکند :
-
پیچیدگی: پیادهسازی و مدیریت DNSSEC میتواند پیچیده باشد.
-
سازگاری: همه سرورهای DNS از DNSSEC پشتیبانی نمیکنند اگرچه با توجه به بروزرسانیها در سالهای اخیر، کمتر شاهد این مورد هستیم.
-
عملکرد: DNSSEC میتواند کمی بر عملکرد DNS تأثیر بگذارد.
سخن پایانی
DNSSEC ابزاری مهم برای افزایش امنیت سیستم نام دامنه DNS است. با استفاده از امضاهای دیجیتال و رمزنگاری بر روی DNS توسط DNSSEC میتوان از حملات مختلف مانند جعل DNS و مسمومیت DNS جلوگیری کرد. با اینکه، DNSSEC دارای برخی محدودیتها مانند پیچیدگی، عدم سازگاری و تاثیر بر عملکرد است، اما پیش بینی میشود طی سالهای آینده با بروزرسانیهای سخت افزاری سرورها و توسعه DNSSEC ، این مشکلات نیز حل شوند. روند پیشرفت پروتکلهای امنیتی همیشه به همین شکل بوده؛ حتی پروتکلهایی مانند SSL و SSH هم همین روند را برای رسیدن به یک ثبات طی کردهاند. با این حال استفاده از DNSSEC توصیه میشود؛ به خصوص برای سازمانها و وبسایتهایی که به امنیت دادههای خود اهمیت میدهند.