فیلترنت: خلاصهای از روش فیلترینگ SNI در HTTPS
این نوشته اولین پست از مجموعه مقالاتی میباشد برای افراد حاضر در ایران که میخواهند روشهای اساسی دخالت در دسترسی به اینترنت را بیاموزند؛ منتشر شده است.
بیشتر کاربران اینترنت با استفاده از مرورگرهای وب، مانند Firefox, Chrome از اینترنت استفاده میکنند. پروتکل اصلی در ارتباطات وب، HTTP است. در دهه گذشته، HTTPS به عنوان پروتکل اولیه در ارتباطات وب جایگزین HTTP شده است. HTTPS در واقع HTTP است که با یک لایه امنیتی و رمزنگاری محافظت میشود.
HTTPS با استفاده از پروتکل TLS، یک ارتباط امن و رمزنگاری شده بین مرورگر کاربر و سرور وب ایجاد میکند. این ارتباط امن باعث میشود که اطلاعات حساس مثل رمز کاربر در طول انتقال میان مرورگر تا سرور، از دسترسیهای غیرمجاز و تغییرات احتمالی محافظت شود.
پروتکل TLS یا همان Transport Layer Security، یک پروتکل رمزنگاری شده است که ارتباطی امن میان سرور و کاربر برای انتقال دادهها در شبکه اینترنت ایجاد میکند.
هر چند هدف اصلی TLS ایجاد ارتباط امن و محافظت از اطلاعات است، با این حال برخی جنبههای این پروتکل همچنان بخشی از اطلاعات را قابل رصد میکند. یکی از این موارد فیلد SNI است.
فیلد Server Name Indication) SNI) در پروتکل TLS به سرورهای وب کمک میکند تا با استفاده از یک آدرس IP مشترک، به چندین دامنه خدمات رسانی کنند. به عنوان مثال، فرض کنید یک شرکت میزبانی وب (مانند example.com) تصمیم میگیرد برای دو مشتری خود (customer1.com و customer2.com) سرویس ارائه دهد. بدون استفاده از SNI، شرکتی که میزبانی وب انجام میدهد برای هر دامنه نیاز به یک آدرس IP منحصر به فرد دارد. اما با استفاده از SNI، هر دو دامنه میتوانند از یک آدرس IP استفاده کنند. در فرآیند اتصال به سرور و ایجاد یک ارتباط امن، مرورگر کاربر نام دامنه مورد نظر را در فیلد SNI ارسال میکند. بر اساس اطلاعات دریافتی از SNI، سرور میزبانی وب تصمیم میگیرد که کدام گواهینامه SSL را برای ایجاد ارتباط امن ارائه دهد.
به این ترتیب، شرکت میزبانی وب میتواند با استفاده از SNI و یک آدرس IP مشترک، همزمان به دو دامنه متفاوت خدمات ارائه کند. این کار باعث کاهش هزینهها و مصرف منابع میشود. فرآیند TLS Handshake یک روند تعاملی بین مرورگر کاربر (کلاینت) و سرور است تا پارامترهای امنیتی مشترک برای ارتباط امن تعیین شوند. در ابتدای این فرآیند، کلاینت پیامی به نام “Client Hello” به سرور ارسال میکند که شامل نسخه TLS مورد پشتیبانی، لیست رمزنگاریهای مورد توافق و فیلد SNI است.
پس از آشنایی با فیلد SNI که نحوه عملکرد آن در ارتباطات امن توضیح داده شد، اکنون به بررسی تکنیک DPI میپردازیم که چگونه میتوان این اطلاعات را برای مقاصد سانسور و کنترل دسترسی به وبسایتها استفاده کرد.
با استفاده از Deep Packet Inspection) DPI) در دستگاههای سانسور (middlebox)، ممکن است دسترسی به وبسایتها بر اساس فیلد SNI فیلتر شود. هنگامی که یک کاربر از طریق پروتکل TLS به یک سایت متصل میشود، مرورگر کاربر فرآیند handshake را آغاز میکند و نام دامنهی مورد نظر را در فیلد SNI ارسال میکند.
دستگاههای سانسور میتوانند به بستههای TLS دسترسی داشته باشند و اطلاعات موجود در فیلد SNI را مشاهده کنند. با توجه به اینکه این اطلاعات در بسته ارسالی قابل خواندن هستند و رمزنگاری نشدهاند، سیستمهای سانسور میتوانند این اطلاعات را بررسی و در صورت مشاهده نام دامنهای که در فهرست ممنوعهها قرار دارد، ارتباط را قطع کنند.
این روش از سانسور بر اساس SNI کارآمد و رایج است، چرا که به سرویسدهندگان و کنترلکنندههای اینترنت امکان میدهد تا به سادگی دسترسی به وبسایتهایی که به دلایل مختلف قابل دسترسی نیستند را کنترل کنند.
در نتیجه، سانسور اینترنت با استفاده از تکنیک DPI برای بررسی فیلد SNI در پروتکل TLS بسیار موثر است و تقریباً همیشه کاربران اینترنت نیاز به استفاده از ابزارهایی مانند VPNها و پروکسیها برای دور زدن آن دارند. این روش تنها یکی از استراتژیهایی است که در کشورهایی مانند ایران به کار گرفته شده است تا دسترسی کاربران به اطلاعات و منابع مختلف اینترنت را محدود و کنترل کنند.