بررسی سیستم ضدسانسور تلگرام

«کلیه‌ی اطلاعات زیر از تحلیل سورس کد تلگرام بدست اومده، پس ممکنه کاملاً درست نباشه.»

اپلیکیشن تلگرام در هر بار اجرا یک کانفیگ (فایل حاوی تنظیمات) از دیتاسنتر های خودش دریافت میکنه. این کانفیگ شامل مواردیه که لازمه از طریق سرور دریافت بشه. مثلاً دریافت مقدار محدودیت زمانی برای ویرایش پیام‌ها، تعداد محدودیت اعضا در سوپرگروه‌ها که این عدد در حال حاضر ۲۰۰ هزار نفره یا محدودیت تعداد چت‌های پین شده. با این روش میشه بعضی از مقادیر و محدودیت‌ها رو بدون نیاز به انتشار آپدیت و فقط با تغییر مقدار ارسالی به اپلیکیشن تغییر داد. یکی از مقادیری که داخل این کانفیگ موجوده امکان فعال کردن یا غیرفعال کردن سیستم ضدسانسور تلگرامه. این سیستم فعلاً فقط برای کشور روسیه فعال شده به همین دلیل وقتی با وی‌پی‌ان سرور روسیه به تلگرام متصل بشید، دیتاسنتر تلگرام متوجه میشه که درخواست از کشور روسیه ارسال شده و داخل کانفیگ ارسالی به اپلیکیشن، با تغییر یک متغیر سیستم ضدسانسور رو فعال میکنه. دلیل اینکه بعد از قطع کردن وی‌پی‌ان این سیستم غیرفعال میشه هم اینه که اپلیکیشن، کانفیگ دریافتی رو طی بازه‌های زمانی آپدیت میکنه.
(با قطع کردن وی‌پی‌ان دیتاسنتر متوجه میشه درخواست دریافت کانفیگ از روسیه ارسال نشده بنابراین متغیر مربوط به سیستم ضدسانسور رو توی کانفیگ ارسالی غیرفعال میکنه.)

این سیستم چطور کار میکنه ؟

بعد از فعال شدن این سیستم تلگرام به جای استفاده از آدرس آی‌پی و پورت دیتاسنتر های پیش فرض خودش سعی می‌کنه از آدرس های جدید و غیر پابلیک استفاده کنه. برای دریافت این آدرس‌ها چند تا راه داخل برنامه قرار داده شده:

۱- استفاده از سیستم فایربیس گوگل

۲- استفاده از Dns Resolver های گوگل و کلودفلیر

فایربیس گوگل یه سرویسه که گوگل برای برنامه نویس‌ها ارائه میکنه و با استفاده از اون برنامه نویس میتونه یه سری اطلاعات رو به اپلیکیشن خودش بفرسته و همچنین دریافت کنه. (این فقط یکی از استفاده های این سرویسه.)
تلگرام در اولین تلاش از این سرویس برای ارسال آدرس دیتاسنتر های غیرپابلیک خودش به اپلیکیشن استفاده میکنه. اگه به هر دلیلی مثل مسدود بودن این سرویس در کشور موردنظر، امکان دریافت اطلاعات وجود نداشته باشه میره سراغ روش دوم.

توی روش دوم اپلیکیشن سعی میکنه با Resolve کردن آدرس زیر، اطلاعات رو دریافت کنه.
آدرس زیر فیکه ولی شما همچین چیزی رو در نظر بگیرید:

Telegram Dns domain (Fake) :

https://Dns.telegram.me

برای این کار از آدرس های زیر استفاده میکنه:

Google Dns resolver :

https://dns.google.com/resolve?name=t.me

Cloudflare Dns resolver :

https://mozilla.cloudflare-dns.com/dns-query?name=t.me

ساده‌ترین استفاده‌ از Dns resolver ها تبدیل آدرس سایت به آی‌پی آدرسه، مثلا اگه با وی‌پی‌ان آدرس زیر رو باز کنید میبینید که توی بخش مشخص شده آدرس آی‌پی سایت مورد نظر نوشته شده:

Answer >> data : "IP address"

https://dns.google.com/resolve?name=t.me&type=A

خوبی این روش اینه که حتی اگه آدرس سایت موردنظر فیلتر شده باشه بازم اطلاعات دریافت میشه چون Dns resolver ها مثل واسطه عمل میکنن.

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

این روش قابل مسدود شدنه ؟

بله، راه سختش اینه که سرویس فایربیس گوگل و «تحلیلگر های DNS» مورد استفاده‌ی برنامه فیلتر بشن. راه سخت‌تر اینه که دیتاسنتر های جدیدی که با این روش دریافت میشن فیلتر بشن که این روشِ مسدودسازی یه سری مشکلات داره
(روسیه از این روش استفاده کرد و ۱۵ میلیون آی‌پی رو مسدود کرد):

اطلاعات (آی‌پی و پورت) دیتاسنتر‌ های دریافت شده با روش‌های ذکر شده، به صورت رمزنگاری شده دریافت و داخل برنامه رمزگشایی میشن، این یه نمونه از اطلاعاته:

D9vu7bvtX9tvYpVzn08mZg2V4L/qHrrJdAG5XzeeeK60f/2E6WDNOXs4VVWr1n7WXqcQiWXEgMtZC9sIMdcg9RtrcWGQ==

پس رمزنگاری سرور‌ها کار فیلترینگ رو سخت میکنه.

یکی از مشکلات این سیستم محدود بودن تعداد دیتاسنتر های تلگرامه‌.
تا هفته‌ی اول فیلترینگ در روسیه این سیستم خیلی خوب کار میکرد (اینجا هم بهش اشاره شده) ولی با گذشت زمان و تشدید فیلترینگ سرور های جدید هم مدام فیلتر میشن و کاربرای روس تا همین اواخر از پراکسی برای اتصال استفاده میکردن.
How to Save Live Photo as Video