تور چیست و امنیتش چطوره؟ و نحوه کارکرد تور همیشه یکی از بحث‌های داغ بوده و هست، در این مطلب کمی به این موضوع می‌پردازم و امیدوارم برای همه مفید باشه.

تور چیست

تور (TOR-The Onion Routing) یک پروژه آزاد و یک پیاده سازی از مدل شبکه پیازی (Onion) هست. شبکه پیازی یک مدل از شبکه هست که طوری طراحی شده تا کاربر در اون ناشناس بمونه،‌ برای همین پروژه تور این مدل شبکه رو پیاده سازی کرد تا کمکی کرده باشه در این زمینه. توضیحی که لازمه بدم از این به بعد ما راجع به تور صحبت می‌کنیم نه شبکه پیازی، شما می‌تونید خودتون برای خودتون یه شبکه پیازی درست کنید با قواعدی کاملا متفاوت با قواعد تور.

توضیحی مختصر راجع به رمزگذاری ۲ کلیده

من خیلی مختصر توضیح می‌دم اگه دوست داشتید بیشتر راجع به این روش رمزگذاری بخونید، حتما راجع بهش جستجو کنید!

در رمزگذاری یک کلیده، من داده‌ی خودم رو رمزگذاری می‌کنم و اون رو با کلیدش به مقصدم می‌دم و اون می‌تونه با استفاده از کلید رمز داده من رو باز کنه! مشکل این روش اینه که کلید همراه داده ارسال می‌شه و هرکسی (از جمله سرورهای واسط (حکومت‌ها و isp ها و افراد سودجو و…)) می‌تونه اونا رو بگیره و با استفاده از کلید رمزش رو باز کنه.

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

شروع کار تور

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

پل چیست

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

یک سری از گره‌های تور هستند که به طور مستقیم در دسترس عموم قرار نمی‌گیرند، بلکه شما باید یا از سایت تور یا با ایمیل اون‌ها رو دریافت کنید و هر بار مثلا ۳ عدد پل به تصادف انتخاب و برای شما ارسال می‌شه، اینطوری حکومت‌ها نمی‌تونه همه‌ی پل‌های تور رو یکجا شناسایی و از دسترس خارج کنه! در واقع اگه بخواد چنین کاری کنه باید هزاران ایمیل به تور بزنه و خب تور هم بعد از مدتی دیگه بهش جواب نمی‌ده! چون خیلی زیاد داره درخواست دریافت پل می‌ده!

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

تشکیل زنجیره

از پوشه‌ی گره‌های تور که دانلود شد، به صورت تصادفی تعدادی سرور انتخاب می‌شوند (“حداقل” ۳ سرور) و به صورت تصادفی ترتیب گره‌ها مشخص می‌شود و در نهایت یک گره ورودی، یک گره خروجی و “حداقل” یک گره میانی خواهیم داشت. (از اینجا به بعد برای سادگی توضیح موضوع با این فرض پیش می‌رویم که دقیقا یک گره میانی داریم و نه بیشتر). به سرورهای انتخاب شده و مرتب شده اصطلاحا زنجیره یا chain یا circuit گفته می‌شود.

نحوه کار تور

حال اگر کامپیوتر ما بسته‌ای ارسال کند، قبل از ارسال با ۳ کلید عمومی (که از پوشه تور دانلود شده بود) به ترتیب خروجی، میانی، ورودی رمز می‌شود.

لایه لایه بودن رمزگذاری علت نام گذاری شبکه پیازی

سپس به گره ورودی ارسال می‌شود. گره ورودی با کلید خصوصی خود، اولین لایه از رمز را باز کرده و آن را به گره میانی می‌دهد. گره ورودی مبدا و گره میانی را می‌شناسد اما مقصد نهایی پیام و خود پیام را نمی‌بیند (چون پیام هنوز ۲ بار با کلیدهای گره‌های میانی و خروجی رمز شده است).

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

گره خروجی با کلید خصوصی خود سومین لایه از رمز را باز کرده و پیام ما را به مقصد نهایی می‌دهد. گره خروجی متن پیام را می‌بیند و مقصد نهایی و گره ماقبل خود را می‌شناسد. اما مبدا اصلی پیام را نمی‌شناسد.

ایراد گره خروجی در شبکه تور

سرورهای تور توسط افراد داوطلب به شبکه تور اهدا می‌شوند. در واقع ممکن است هر کسی از جمله حکومت‌ها و افراد سودجوی دیگر هم به این شبکه سرور اهدا کنند. البته اکثر سرورها با این هدف اهدا می‌شوند که شبکه تور پابرجا بماند و ما از وجود چنین سرویسی بی بهره نمانیم.

ایراد گره خروجی

گفتیم که گره خروجی متن پیام را می‌بیند! پس گره آخر (اگر گره خبیثی باشد) می‌تواند پیام‌های ما را شنود کند (هرچند ما را نمی‌شناسد اما ممکن است بتواند از روی متن پیام‌ها به هویت ما پی ببرد).

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

اما اگر ارتباط ما SSL نباشد، ما در معرض شنود گره خروجی قرار داریم. در این وضعیت در شبکه تور مکانیزمی در نظر گرفته شده که در هر ۱۰ دقیقه، زنجیره‌ای که استفاده می‌کردیم کنار گذاشته شود و یک زنجیره جدید ایجاد شود. در واقع گره‌های ورودی، میانی و خروجی همگی تغییر می‌کنند. با این مکانیزم، اگر حتی گره خروجی یک گره خبیث باشد، تنها می‌تواند ۱۰ دقیقه شما را شنود کند.

آیا ما با استفاده از تور از هر نظر امن هستیم؟

پاسخ این سوال یک “نه” بزرگ است.

امنیت یک موضوع بسیار وابسته به کاربر هست. اگر ما از تور استفاده کرده و در جایی خودمان خودمان را معرفی کنیم، این خود ما هستیم که داریم خودمان را از ناشناس بودن خارج می‌کنیم.

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

بگذارید یک مثال بزنم:

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

آیا تور یکی از امن‌ترین ابزارهاست؟

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

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

این سرور هم شما را می‌شناسد، هم مقصدتان را می‌شناسد، هم در صورت SSL نبودن ارتباط پیامتان را می‌بیند! در مقایسه با شبکه پیازی تور، سطح بسیار پایین امنیت در این نوع ارتباط بسیار مشهود است! فقط فرض کنید این سرور توسط افراد سودجو یا حکومت‌ها یا… کنترل می‌شود 🙂

البته این نکته هم دور از ذهن نمونه که تور یک پروژه آزاد هست و همین یعنی شما می‌تونید بیشتر بهش اعتماد کنید و ازش استفاده کنید چون می‌بینید توش چه خبره!

اما باز هم اینکه تور امن‌ترین ابزار باشد دلیل نمی‌شود که ما کاملا امن باشیم، به بخش قبل بسیار توجه کنید!

به زودی مطلبی رو هم درباره Hidden Service های تور و DeepNet و DarkNet می‌نویسم تا کمی از ترس و واهمه‌ی بیخود در این موارد هم کاسته بشه!


آپدیت ۱۳۹۵/۱۲/۱۳

مطلبی که قرار بود به زودی بذارم، یکم دیر شد شرمنده. بلاخره فرصت شد قرارش دادم 🙂

https://molaei.org/tor-hidden-services/


امیدوارم این مطلب کمک کرده باشه و اگر جایی مبهم هست و یا توضیح داده نشده حتما بهم بگید تا تصحیح کنم.

مطالب از:

https://www.torproject.org/about/overview.html.en

و همچنین ارائه‌ی خوب آقای عطائیان در لاگ مشهد

خوش و خرم باشید 🙂