حریم خصوصی شهروندان

اینترنت باز نمی‌شود، مهندسی می‌شود

سه نشانه از مرحله تازه سانسور در ایران: سند امن‌افزار، بحث NAT و موج SNI Spoofing

تیم پژوهشی رازنت
تیم پژوهشی رازنتتحقیقات OSINT، فورنزیک دیجیتال، امنیت شبکه و تحلیل داده، زیرساخت‌ها، ابزارها و بازیگران نظارت و تهدیدهای دیجیتال را مستند می‌کند.
۹ اردیبهشت ۱۴۰۵
14 دقیقه مطالعه
اینترنت باز نمی‌شود، مهندسی می‌شود

در هفته‌های اخیر، سه بحث ظاهرا جداگانه در میان کاربران فنی، پژوهشگران اینترنت و ناظران سانسور در ایران همزمان بالا گرفته است: انتشار سندی منتسب به تیم تحقیقاتی رسول جلیلی و گروه فنی امن‌افزار گستر شریف، شایعه یا فرضیه انتقال بخش‌هایی از اتصال خارجی کاربران به پشت NAT یا gatewayهای متمرکز، و رواج ابزاری که در کامیونیتی فارسی به نام SNI Spoofing شناخته شد. این سه موضوع در سطح اول متفاوت به نظر می‌رسند.

اولی یک سند سیاستی و فنی درباره «گشایش کنترل‌شده» اینترنت است؛ دومی بحثی درباره ترجمه نشانی، مسیر ترافیک و قابلیت مشاهده بسته‌هاست؛ سومی روشی برای فریب سامانه‌های DPI از طریق دستکاری بسته‌های اولیه TCP و TLS. اما کنار هم گذاشتن آنها تصویر دقیق‌تری از وضعیت کنونی می‌دهد: جمهوری اسلامی به سمت مدلی حرکت می‌کند که در آن اینترنت نه یک سرویس عمومی، بلکه یک محیط طبقه‌بندی‌شده، قابل احراز هویت، قابل مانیتورینگ، قابل بازگشت و قابل انتساب به کاربر است.

نقطه مشترک این سه پرونده این است که میدان اصلی سانسور از «فیلتر کردن سایت‌ها» (Blacklist) به «کنترل مسیر و نشست» (Whitelist) منتقل شده است. در این مدل، مسئله فقط این نیست که یک دامنه یا IP بسته باشد. مسئله این است که کاربر از چه شبکه‌ای وصل شده، آیا هویت او احراز شده، آیا مقصد در فهرست مجاز قرار دارد، آیا DNS از مسیر ملی عبور می‌کند، آیا جریان TCP و TLS در چند بسته نخست قابل تشخیص است و آیا اگر کاربر از مسیر غیرمجاز عبور کرد، می‌توان او را در سطح فرد یا سازمان شناسایی کرد.

سند مدل گشایش مرحله‌ای کنترل‌شده

سند منتسب به امن‌افزار گستر شریف، اگر اصالتش به شکل مستقل تأیید شود، صریح‌ترین صورت‌بندی این منطق است. سند با عنوان «گزارش فنی کلیدهای حیاتی در طراحی و اجرای سانسور هوشمند و پایدار اینترنت» تهیه‌کننده را «تیم تحقیقاتی دکتر رسول جلیلی، گروه فنی امن‌افزار گستر شریف» معرفی می‌کند و رونوشت آن را برای دبیرخانه شورای عالی فضای مجازی و معاونت فنی شرکت ارتباطات زیرساخت درج کرده است. در چکیده سند، از «گشایش مرحله‌ای و کاملا کنترل‌شده» سخن گفته می‌شود و مدل چهارمرحله‌ای پیشنهادی شامل کاهش محدودیت‌ها در خدمات ملی، وایت‌لیست کردن سایت‌های حیاتی، گشایش کنترل‌شده پلتفرم‌های هوش مصنوعی و سپس گشایش محدود پروتکل‌های شبکه است.

اهمیت این سند در این نیست که فقط چند تکنیک فنی را فهرست می‌کند. اهمیت آن در زبان و منطق اجرایی سند است. در این متن، «گشایش» به معنای بازگشت اینترنت آزاد نیست؛ به معنای باز کردن محدود، مرحله‌ای و قابل برگشت مسیرهایی است که از قبل برای DPI، احراز هویت، امضای ترافیکی، اجبار DNS و شناسایی کاربر آماده شده‌اند. سند از اعمال DPI نسل سوم، امضاهای رفتاری و مبتنی بر payload، محدودسازی ارسال فایل در پیام‌رسان‌های داخلی، مسدودسازی DoH و DoT، مسدودسازی IPv6، UDP و ICMP به خارج، و حتی طراحی امضای اختصاصی برای WARP سخن می‌گوید. در بخشی دیگر پیشنهاد می‌شود گشایش سایت‌های حیاتی ابتدا روی شبکه‌های موبایل انجام شود تا در ۴۸ ساعت اول «امکان مانیتورینگ دقیق‌تر» و در صورت نیاز «شناسایی فرد متخلف» فراهم باشد. این نقطه، سند را از یک متن صرفا فنی به یک سند سیاسی تبدیل می‌کند.

انتقال ترافیک به پشت گیت‌وی‌های متمرکز

همزمان با این سند، خبرهای «Internet Pro» یا دسترسی محدود برای گروه‌های منتخب منتشر شد. در چنین زمینه‌ای، بحث NAT اهمیت پیدا می‌کند. در روزهای اخیر، برخی کاربران در شبکه‌های اجتماعی فنی این فرضیه را مطرح کردند که بخش‌هایی از اتصال خارجی کاربران به پشت NAT یا gatewayهای متمرکز برده شده‌است. در معنای عمومی، NAT یا ترجمه نشانی شبکه، فناوری عجیبی نیست. اپراتورها سال‌هاست برای مدیریت کمبود IPv4، کاربران متعدد را پشت یک نشانی عمومی یا مجموعه‌ای از نشانی‌های عمومی قرار می‌دهند.

در مورد صحت و دقت این ادعا، بحث‌هایی شده‌است (که در بخش بعدی بررسی می‌کنیم). RFC 3022، سند کلاسیک NAT، توضیح می‌دهد که NAT نشانی‌های داخلی را به نشانی‌های خارجی ترجمه می‌کند و در حالت NAPT، ترجمه شامل پورت‌های TCP و UDP نیز می‌شود. همین سند تصریح می‌کند که در بسته‌های TCP و UDP، تغییرات NAT مستلزم به‌روزرسانی checksum است، چون checksum این پروتکل‌ها pseudo header شامل نشانی‌های مبدا و مقصد را هم پوشش می‌دهد.

بنابراین بخش فنی ادعای مطرح‌شده درباره NAT یک هسته معتبر دارد: اگر ترافیک از NAT یا gateway میانی عبور کند، برخی فیلدهای بسته، از جمله نشانی، پورت و checksum، ممکن است تغییر کند یا دوباره محاسبه شود. این موضوع می‌تواند برخی روش‌های تشخیص یا دور زدن فیلترینگ را که بر مشاهده مستقیم رفتار بسته از داخل به خارج تکیه دارند، مختل کند. اما از این واقعیت نمی‌توان بی‌درنگ نتیجه گرفت که «کل اینترنت ایران پشت NAT رفته» یا یک ساختار واحد سراسری برای همه کاربران فعال شده است. چنین ادعایی نیازمند داده‌های مستقل، اندازه‌گیری شبکه‌ای، مقایسه traceroute، تحلیل TTL، مشاهده تغییرات مسیر در چند اپراتور، داده‌های RIPE Atlas یا captureهای قابل راستی‌آزمایی است.

نکته مهم‌تر این است که NAT در این بحث، اگر به عنوان بخشی از سانسور مطرح شود، دیگر فقط ابزار صرفه‌جویی در نشانی IP نیست. NAT می‌تواند بخشی از زنجیره کنترل مسیر باشد؛ زنجیره‌ای که در آن ترافیک کاربران از gatewayهای متمرکز، policy engineها، DPI و سامانه‌های لاگ‌برداری عبور می‌کند. در این حالت باید میان NAT ساده، CGNAT اپراتوری، transparent proxy، TCP proxy و middleboxهای stateful تفاوت گذاشت. اگر دستگاه میانی فقط نشانی و پورت را ترجمه کند، با NAT یا CGNAT روبه‌رو هستیم. اما اگر نشست TCP را terminate کند، جریان را دوباره بسازد، payload را بررسی کند یا رفتار پروتکل را نرمال‌سازی کند، دیگر مسئله NAT ساده نیست؛ با یک سامانه کنترل نشست روبه‌رو هستیم.

همین جاست که بحث NAT به سند امن‌افزار وصل می‌شود. سند منتسب به امن‌افزار از مسدودسازی کامل IPv6، UDP و ICMP به سمت خارج، اعمال DPI، اجبار DNS به resolver ملی و گشایش granular بر اساس FQDN، پیشوند IP و پورت سخن می‌گوید. چنین مدلی برای اجرا به چیزی بیش از فیلترینگ مقصد نیاز دارد. این مدل نیازمند کنترل مسیر، نگهداری state، تحلیل رفتاری بسته‌ها و اعمال سیاست در gatewayهای شبکه است. به بیان ساده، اگر اینترنت طبقاتی قرار است در مقیاس ملی اجرا شود، باید جایی در شبکه وجود داشته باشد که تصمیم بگیرد چه کسی، به کجا، از چه پروتکلی، در چه زمانی و با چه سطحی از نظارت وصل شود.

فناوری SNI Spoofing

سومین قطعه این پازل، موج SNI Spoofing است. پروژه GitHub با نام patterniha/SNI Spoofing خود را با عبارت «Bypass DPI with IP/TCP Header manipulation» معرفی می‌کند.

برای فهم این روش باید به نقش SNI در TLS نگاه کرد. SNI یا Server Name Indication افزونه‌ای در TLS است که به کلاینت اجازه می‌دهد در ClientHello نام دامنه مورد نظر را به سرور اعلام کند تا سرور بتواند گواهی مناسب یا سیاست امنیتی مناسب را انتخاب کند. RFC 6066 توضیح می‌دهد که سرور می‌تواند از اطلاعات افزونه server_name در ClientHello برای انتخاب certificate یا جنبه‌های دیگر سیاست امنیتی استفاده کند. همین ویژگی برای فیلترینگ نیز مهم است، چون در TLS سنتی، SNI معمولا پیش از رمزگذاری کامل محتوای ارتباط قابل مشاهده است و سامانه DPI می‌تواند بر اساس آن تصمیم بگیرد اتصال را ببندد یا عبور دهد.

روش موسوم به SNI Spoofing دقیقا به همین نقطه حمله می‌کند. کلاینت ابتدا یک اتصال TCP با مقصد برقرار می‌کند. سپس یک TLS ClientHello جعلی می‌فرستد که در آن SNI مربوط به یک دامنه مجاز یا وایت‌لیست‌شده است، اما sequence number بسته عمدا نامعتبر انتخاب می‌شود. DPI کنار مسیر، اگر state TCP را دقیق بررسی نکند، این بسته را می‌بیند و ممکن است جریان را به عنوان اتصال مجاز علامت‌گذاری کند. اما سرور واقعی، چون sequence number بسته خارج از پنجره معتبر TCP است، آن را نمی‌پذیرد. سپس کلاینت در همان اتصال، ClientHello واقعی را با sequence number معتبر و SNI مقصد اصلی می‌فرستد. اگر سامانه فیلترینگ بعد از دیدن بسته اول دیگر جریان را بررسی نکند، اتصال واقعی برقرار می‌شود.

اهمیت sequence number در TCP بنیادی است. RFC 9293 توضیح می‌دهد که پیاده‌سازی TCP برای پردازش داده‌های دریافتی باید بررسی کند segment دریافتی در فضای sequence معتبر و در پنجره دریافت قرار می‌گیرد یا نه. همین سند تصریح می‌کند segmentهایی که sequence number آنها کاملا بیرون از محدوده پنجره دریافت است، به عنوان duplicate یا injection attack در نظر گرفته شده و discarded می‌شوند. به همین دلیل، در این روش بسته جعلی برای DPI قابل مشاهده است، اما برای سرور واقعی معتبر نیست. فریب اصلی علیه سرور نیست؛ علیه سامانه فیلترینگ است.

این نکته بسیار مهم است: اصطلاح SNI Spoofing می‌تواند مخاطب را به اشتباه بیندازد. در اینجا SNI واقعی در سطح سرور spoof نمی‌شود. سرور واقعی بسته جعلی را نمی‌پذیرد. نام دقیق‌تر این روش «تزریق ClientHello جعلی با SNI مجاز و sequence number نامعتبر» است. یا در زبان رسانه‌ای‌تر: «فریب DPI با SNI جعلی در بسته‌ای که سرور واقعی نمی‌پذیرد».

این روش همچنین نشان می‌دهد چرا سانسورگر به سمت DPI stateful، نگهداری دقیق state و حتی proxyهای پیچیده‌تر رانده می‌شود. اگر DPI فقط اولین ClientHello قابل مشاهده را ببیند و بر اساس آن تصمیم بگیرد، چنین روش‌هایی می‌توانند آن را فریب دهند. اما اگر فیلترینگ sequence number را اعتبارسنجی کند، پنجره TCP را دنبال کند، ServerHello را ببیند و تا زمانی که وضعیت واقعی اتصال روشن نشده تصمیم نهایی نگیرد، این روش دشوارتر می‌شود. البته چنین کاری هزینه محاسباتی، حافظه، پیچیدگی و احتمال خطای بیشتری دارد. به همین دلیل، مقابله با SNI Spoofing فقط یک اصلاح کوچک نیست؛ نشانه‌ای از حرکت سانسور از فیلترینگ سبک‌تر به کنترل عمیق‌تر نشست است.

از DPI تا Transparent Proxy؛ پاسخ احتمالی به نقض پروتکل

نشانه‌های این گذار را باید از زمان جنگ دوازده روزه نیز عقب‌تر دنبال کرد. در آن دوره، قطع اینترنت دیگر صرفا به شکل یک خاموشی کلاسیک در سطح BGP دیده نمی‌شد؛ بلکه الگوی اختلال نشان می‌داد که با مدلی مهندسی‌شده‌تر، برنامه‌ریزی‌شده‌تر و آماده‌تر برای تفکیک مسیرها و سطوح دسترسی روبه‌رو هستیم. به بیان دیگر، از همان مقطع روشن شد که مسئله فقط حذف routeها یا قطع خام ارتباطات خارجی نیست؛ بلکه مدیریت هدفمند جریان‌ها، نگه داشتن بخشی از دسترسی‌های داخلی یا منتخب، و کنترل دقیق‌تر مسیرهای خروجی در دستور کار قرار گرفته است.

در این چارچوب، ترتیب رخدادها اهمیت دارد. ابتدا، مدل DPI محور توانست از نگاه حکومت تا حدی کار کند: دسترسی خارجی محدود شد، مسیرهای منتخب باز ماند، و سامانه‌های فیلترینگ توانستند بخش قابل توجهی از تلاش‌های دور زدن را بر اساس تشخیص دامنه، پروتکل، امضای ترافیکی یا رفتار اولیه اتصال مهار کنند. اما این مدل زمانی دچار فشار شد که ابزارهای تازه ضدسانسور، به جای تلاش برای پنهان کردن مقصد، به سراغ سوءاستفاده از شکاف‌های پروتکلی رفتند. روش موسوم به SNI Spoofing نمونه روشن همین تغییر بود: ابزاری که با ارسال ClientHello جعلی و sequence number نامعتبر، تلاش می‌کرد میان آنچه DPI می‌بیند و آنچه سرور واقعی در TCP می‌پذیرد، شکاف ایجاد کند.

اگر فرضیه فعال شدن NAT یا gatewayهای متمرکز پس از موج SNI Spoofing درست باشد، توضیح محتمل‌تر این است که بخشی از ترافیک نه صرفا پشت NAT ساده، بلکه پشت transparent proxy یا middleboxهای stateful قرار گرفته است. تفاوت مهم اینجاست: NAT معمولی فقط نشانی و پورت را ترجمه می‌کند، اما transparent proxy می‌تواند اتصال TCP کاربر را terminate کند و سپس از طرف خود یک اتصال جدید به مقصد واقعی بسازد. در چنین وضعیتی، کاربر دیگر یک اتصال مستقیم end to end با سرور مقصد ندارد؛ اتصال او در عمل در یک middlebox متوقف و بازسازی می‌شود. نتیجه فنی این تغییر این است که روش‌هایی که بر پایه نقض رفتار TCP، ارسال sequence number نامعتبر، یا فریب DPI با بسته‌ای طراحی شده‌اند که سرور واقعی نباید بپذیرد، در کوتاه‌مدت بی‌اثر می‌شوند. چون پیش از رسیدن بسته به مقصد، middlebox اتصال را بازنویسی، نرمال‌سازی یا از نو برقرار می‌کند.

مکانیزم سانسور و نظارت اینترنت در جمهوری اسلامی ایران

در مدل قدیمی‌تر سانسور، پرسش اصلی این بود: آیا این سایت بسته است یا باز؟ در مدل جدید، پرسش‌های بیشتری مطرح است: آیا این کاربر در طبقه مجاز قرار دارد؟ آیا اتصال از شبکه موبایل آمده یا ثابت؟ آیا DNS از resolver ملی عبور کرده؟ آیا مقصد در فهرست حیاتی است؟ آیا SNI با مقصد واقعی تطبیق دارد؟ آیا checksum پس از NAT بازنویسی شده؟ آیا sequence number بسته‌ای که DPI دیده برای سرور واقعی معتبر بوده؟ آیا flow پس از دیدن نخستین ClientHello قانونی علامت‌گذاری شده یا دوباره بررسی می‌شود؟

این تغییر از نظر حقوق دیجیتال خطرناک‌تر از فیلترینگ کلاسیک است. فیلترینگ کلاسیک دسترسی را می‌بست؛ فیلترینگ جدید دسترسی را شرطی می‌کند. کاربر منتخب، شرکت منتخب یا نهاد منتخب می‌تواند کمی بیشتر وصل شود، اما همین دسترسی بیشتر او را در مسیر احراز هویت، لاگ‌برداری و انتساب قرار می‌دهد. عموم مردم پشت محدودیت عمومی باقی می‌مانند، در حالی که گروه‌های تاییدشده، با دسترسی محدود، قابل کنترل و قابل بازگشت، از اینترنت استفاده می‌کنند. این همان چیزی است که در زبان سیاستی ممکن است «گشایش کنترل‌شده» خوانده شود، اما در عمل شکل پیشرفته‌تری از تبعیض زیرساختی است.

در چنین مدلی، اینترنت باز نمی‌شود؛ مهندسی می‌شود. بازگشت تدریجی برخی سرویس‌ها، فعال شدن بسته‌های خاص، دسترسی محدود به app storeها یا ابزارهای کاری، و ارائه IPهای خاص به کسب‌وکارهای منتخب نباید با رفع فیلترینگ اشتباه گرفته شود. اینها می‌توانند بخشی از معماری جدید باشند: اینترنتی که برای هر طبقه کاربر، هر نوع سرویس و هر سطح اعتماد، مسیر متفاوتی تعریف می‌کند.

جمع‌بندی این سه پرونده یک گزاره روشن است: جمهوری اسلامی در حال عبور از سانسور مقصد محور به کنترل نشست محور است. سند منتسب به امن‌افزار زبان برنامه‌ریزی این گذار را نشان می‌دهد. بحث NAT و gatewayهای متمرکز زیرساخت احتمالی کنترل مسیر را برجسته می‌کند. SNI Spoofing نیز نشان می‌دهد مقاومت فنی کاربران از کجا به این معماری ضربه می‌زند: از همان چند بسته نخست، جایی که DPI می‌خواهد تصمیم بگیرد اتصال قانونی است یا نه.

برای همین، ارزش خبری این سه موضوع صرفا در افشای یک سند، یک شایعه فنی یا یک ابزار GitHub نیست. ارزش آنها در کنار هم است. این سه نشانه می‌گویند اینترنت در ایران وارد مرحله‌ای شده که در آن دسترسی، هویت، مسیر، پروتکل و قابلیت انتساب به هم گره خورده‌اند. در چنین مرحله‌ای، هر «گشایش» را باید با این پرسش سنجید: چه کسی وصل می‌شود، از چه مسیری، با چه سطحی از نظارت، و با چه امکان شناسایی؟

اشتراک‌گذاری: