پروتکل DNS over HTTPS و تاثیر آن روی امنیت درخواستهای اینترنتی
براساس سوالهای متعددی که از سوی کاربران پسکوچه در خصوص نحوه کار اپلیکشنهایی مثل Intra یا ۱.۱.۱.۱ پرسیده شده، تیم پسکوچه این مطلب آموزشی را برای شما آماده کرده است. امیدواریم که با خواندن این مطلب درک بهتری از نوع عملکرد این برنامهها پیدا کنید.
قبل از اینکه وارد جزئیات این پروتکل شویم نیاز داره که چند مفهوم کلیدی را تعریف کنیم.
دیاناس (DNS) چیست؟
سامانه «نام دامنه» یکی از اولین تکنولوژیهای اصلی زیرساخت شبکه جهانی اینترنت است که در سال ۱۹۸۷ ثبت شد. در آن زمان با توجه به گسترده نبودن تهدیدهای امنیتی هیچ گونه اقداماتی در خصوص امنیت این سامانه انجام نشده بود و در چند سال اخیر بحث امنیت دیاناس مورد توجه قرار گرفته است.
شما در دفترچه خود فهرستی از نامها و شماره تلفنها و اطلاعات دیگری چون نشانی را دارید. وقتی نام را انتخاب میکنید، شماره مرتبط به آن گرفته میشود. سامانه نام دامنه هم به این شکل عمل میکند. شما نشانی سایت را جستجو میکنید اما این نشانی به یک سرور خاص روی شبکه وصل میشود. برای اطلاعات بیشتر در مورد مفهوم دیاناس به اینجا بروید.
در واقع دیاناس، با ترجمه اسم وبسایت به آدرس اینترنتی، روند به خاطر سپردن آدرس وبسایتها را آسانتر میکند.
پشت پرده DNS چه میگذرد؟
میدانیم که کار DNS آسان کردن روند به خاطر سپردن دسترسی به یک وبسایت است. حال سوال اینجا است که چگونه این فرآیند توسط مرورگر انجام میشود؟
اولین چیزی که به آن میتوان اشاره کرد یک لیست بسیار بلند و جامع از نام تمام وبسایتها به همراه نشانی اینترنتی (IP) آنها است. اما وقتی که روزانه صدها سایت باید به این لیست اضافه یا حذف شوند، بهروز نگهداشتن این لیست کار بسیار دشواری خواهد بود.
در نتیجه بجای داشتن یک لیست کلی میتوان از چند لیست که به یک طریقی با هم مرتبط هستند، استفاده کرد. در این صورت هر کدام از این لیستها میتوانند به صورت مستقل کار کنند و بهروزرسانی شوند.
برای مثال سایت outline.paskoocheh.com را در نظر بگیرید. این آدرس را میتوان به سه بخش تقسیم کرد
-
Outline -> SubDomain
-
Paskoocheh -> Second Level Domain
-
org -> top-level Domain
وقتی که شما سایتی را درخواست میکنید، باید به یک شکل نشانی اینترنتی آن سایت کشف شود. یک ابزار مهم که کار آن کشف آدرسهای اینترنتی میباشد «تابع تحلیلگر نام» یا DNS resolver است. وظیفه اصلی این ابزار پیدا کردن آدرس اینترنتی مورد نظر است. مراحلی که تابع تحلیلگر دامنه طی میکند تا دامنه outline.paskoocheh.com را به آدرس اینترنتی 54.192.102.244 ارتباط دهد به شرح زیر میباشد.
- وقتی دامنه وارد مرورگر میشود، درخواست به سرور تابع تحلیلگر نام (DNS resolver) میرود.
- سپس سرور تابع تحلیلگر نام درخواست را برای سرور Root میفرستد و از آن میخواهد که به لیست آدرسهایی که در حوزه .com هستند دسترسی پیدا کند.
- سرور Root با جستجویی سریع نشانی سروری که دامنههای .com را شامل میشود، میفرستد.
-
سپس سرور که دامنههای .com را دارد (top-level domain (TLD به تمام آدرسهایی از جمله paskoocheh.com دسترسی دارد. این سرور به تابع تحلیلگر نام میگوید که برای پیدا کرده نشانی outline.paskoocheh.com باید با سرور paskoocheh مطابقت داده شود. به یاد داشته باشید که هنوز از این سرور آدرس اینترنتی outline.paskoocheh.com را نمیشود دریافت کرد.
-
سرور paskoocheh آدرس اینترنتی تمام زیردامنههای مرتبط را دارد.
باید به خاطر داشته باشید وقتی یک درخواست DNS انجام میدهید، مثلا رفتن به سایت paskoocheh.com، این درخواست در مسیر خود از چندین دستگاه به شکل متن ساده میگذرد تا نشانی اصلی سرور پیدا شود. در این میان چند تهدید امنیتی وجود دارد:
- تمام دستگاههای موجود در مسیر میتوانند ببیند که شما به چه وبسایتهایی سر زدید. این امکان را ایجاد میکند یک پروفایل اینترنتی از تمام فعالیتهای آنلاین شما درست کنند.
- کلاهبرداران یا سانسورچیها بین راه میتوانند نشانی اصلی (ip) وبسایت را به آدرس دیگر تغییر بدهند. که این موجب قطع دسترسی کاربر به وبسایت اصلی میشود.
پروتکل (HTTP(s چیست؟
HTTP یک زبان ارتباطی است که مرورگرها و اپلیکیشنها برای ارتباط و انتقال دادهها با سرورهای میزبان خود استفاده میکنند. برای درک بهتر به تصویر زیر نگاه کنید.
فراموش نکنید که مرورگر شما به طور مستقیم به وبسایت مورد نظر متصل نمیشود. معمولا سرور میزبان هزاران کیلومتر با دستگاه شما فاصله دارد. در نتیجه تمام درخواستهای انجام شده برای رسیدن به مقصد خود از چندین دستگاه دیگر که به آنها رهیاب گفته میشود عبور میکنند تا به مقصد خود برسند و به همان ترتیب هم برگشت داده میشوند. درست مثل اینکه یک دانش آموز در کلاس به همکلاسی خود که چند میز دورتر نشسته است، نامهای را دست به دست میفرستد. به طبع تمام افرادی که مسئول دست به دست کردن این نامه هستند میتوانند نامه را باز کنند و محتوای آن را بخوانند.
از کجا میتوان مطمئن شد که دادههای فرستاده شده دستکاری نشده است؟
برای جلوگیری از دستکاری شدن دادهها و اطلاعاتی که از مرورگر به سرور میزبان ارسال میشود، باید از یک نوع رمزنگاری استفاده کرد که فقط مرورگر و سرور میزبان امکان رمزگشایی آن را داشته باشند . از همین رو نسخه رمزنگاری شده پروتکل http به نام https توسعه یافته است.
پروتکل https تمام فعالیتهای آنلاین که از طریق مرورگر یا یک اپلیکیشن انجام میشود را رمزگذاری میکند به طوری که فقط مرورگر و سرور میزبان امکان رمزگشایی آن را دارند.
« وقتی در سایتهایی مثل توییتر - که از شیوهی رمزگذاری HTTPS استفاده میکنند - فعالیت میکنم، ISP من چه اطلاعاتی از فعالیتهایم را میبیند؟ »
همانطور که در تصویر بالا میبینید فقط وبسایت مورد نظر بدون اینکه رمزنگاری شود برای سرور میزبان فرستاده میشود. بنابراین اسم وبسایت از سوی سرویس دهنده اینترنت و هر کسی دیگر که شبکه را نظرات میکند، مشخص خواهد بود.
چرا بخش اول لینک رمزنگاری نمیشود؟
برای درک بهتر این موضوع باید نگاهی کوتاهی به شکل مذاکره بین مرورگر و سرور میزبان داشته باشیم. تصویر زیر این مذاکره را نشان میدهد. این مذاکره هر بار که شما به وبسایتی که HTTPS را پشتیبانی میکند مراجعه میکنید، انجام میشود.
اولین پیغامی (ClientHello) که از سوی مرورگر به سرور میزبان فرستاده میشود صرفا برای شروع یک نوع ارتباط رمزنگاری شده انجام میشود که معمولا به شکل نوشته ساده (Plain text) فرستاده میشود.
پیغام اولیه شامل چند قرارداد از جمله نسخه پروتکل، الگوریتم رمزنگاری، ... و آدرس وبسایت (server_name) مورد نظر میشود. سپس سرور میزبان با دانستن این اطلاعات گواهی مورد نظر را که SSL Certificate نام دارد برای مرورگر ارسال میکند.
وجود server_name در پیغام اولیه باعث میشود یک سرور با یک آدرس اینترنتی (IP) بتواند میزبان چند وبسایت یا دامنههای مختلف باشد. در شرایطی که این پیغام اولیه رمزنگاری شود و سرور میزبان چند وبسایت مختلف باشد، انتخاب گواهی مورد نظر امکان پذیر نخواهد بود. با این حساب سرویس دهنده اینترنت و هر کس دیگر که شبکه را نظارت میکند این امکان را دارد که ببیند که کاربر به وبسایت مثلا twitter وصل شده و همینطور بتواند دسترسی به وبسایت را محدود کند.
ولی چندی طول نکشید که شرکت Cloudfare توانست راهکاری برای رمزگذاری server_name به نام ecnrypted SNI پیدا کند.
یک تشبیه میتواند به ما اینجا کمک کند. وقتی یک نامه از طریق پست برای کسی فرستاده میشود، شامل آدرس و کدپستی گیرنده است. اگر گیرنده در ساختمان مسکونی ۱۰۰ واحدی زندگی میکند، آدرس پستی بدون شماره واحد باعث میشود که نامه به دست گیرنده اصلی نرسد. در اینجا شماره واحد درست نقش SNI یا server name را بازی میکند. وقتی یک سرور میزبان چندین وبسایت است، آدرس اینترنتی (IP) نقش آدرس پستی سرور را دارد و server name نقش نشانی اصلی را بازی میکند.
حالا که درک بهتری از مفهوم DNS و HTTPS پیدا کردیم داستان DNS Over HTTPS چیست؟
همانطوری که در بالا اشاره کردیم درخواستهای DNS معمولا بطور متن ساده در شبکه عبور میکند. یعنی این درخواستها رمزنگاری نمیشوند. کاری که DNS over HTTPS انجام میدهد تمام درخواستهای DNS بطور سرتاسری از دستگاه کاربر تا سرور تابع تحلیلگر نام از طریق پروتکل HTTPS رمزنگاری شود. این باعث میشد که هیچ دستگاهی بین راه نتواند ببیند که شما چه وبسایتی را درخواست کردید. تنها دستگاهی میتواند اطلاعات را مشاهده کند که سرور تابع تحلیلگر نام درخواست (resolver) است. بنابراین بسیار مهم است که شما به این سرور اعتماد داشته باشید.
DNS-over-HTTPS از جعل DNS و حملات میانی جلوگیری میکند. به عبارت دیگر، از آنجا که تبادل اطلاعات موقت بین مرورگر و سرور DNS رمزنگاری شده است، هیچ کس نمیتواند درخواستها را تغییر دهد تا مرورگر کاربر را به سمت یک وب سایت جعلی هدایت کند. شایان ذکر است که برای کارکرد این پروتکل، هم مرورگر و هم سرور DNS باید از DNS-over-HTTPS پشتیبانی کنند.
یکی از ویژگیهای مهم DNS-over-HTTPS این است که فعالیتهای آنلاین کاربران را از آیاسپیها مخفی میکند، زیرا ISP بهطور پیش فرض به درخواست های DNS شما رسیدگی میکند. اگر از DNS-over-HTTPS با سرور DNS ISP خود استفاده کنید، ترافیک شما از آنها پنهان نمیشود. دلیلش این است که سرور DNS برای دیدن محتوای دیاناس باید درخواست DNS را رمزگشایی کند، در این مرحله سرور میتواند درخواست را ثبت کند و از هویت شما مطلع شود.
راه حل رفع این مشکل این است که درخواست های DNS را به شخص ثالث منتقل کنید. و در مورد مثال آیاسپی، شخص ثالث، مرورگری است که شما استفاده میکنید. اکنون تقریبا همه مرورگرها پروتکل را پیاده سازی کردهاند. برای حذف نقش ISP از سرور دیاناس، رمزنگاری DNS-over-HTTPS را در مرورگر خود فعال کنید.
این پروتکل جدید انتقادات و نگرانیهایی را هم به همراه داشته است. نگرانی هایی از جمله اینکه DNS-over-HTTPS بیشتر دادههای DNS را در گوگل متمرکز میکند که به طور بالقوه امکان کنترل مسیریابی ترافیک اینترنت و دسترسی به مقادیر زیادی از دادههای مصرفکننده و رقیبان را در اختیار گوگل میگذارد.
DoH اگر چه روشی برای افزایش امنیت و حفظ حریم خصوصی افراد به شمار میرود اما در مواردی نیز خود می تواند موجب بروز مشکل در اقدامات امنیتی شود. برای مثال گاهی اوقات شرکت ها درخواست های DNS را برای مسدود کردن دسترسی به سایتهای مخرب بررسی می کنند. همچنین گاهی اوقات میتوان از نظارت DNS برای شناسایی بدافزارها استفاده کرد. از آنجایی که DoH درخواستهای تبادل اطلاعات را رمزنگاری میکند، یک نقطه کور امنیتی ایجاد میکند.