تور چیست و چگونه کار می‌کند

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

تور چیست

تور (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

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

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

44 دیدگاه در “تور چیست و چگونه کار می‌کند”

  1. سلام
    خیلی ممنونم از نوشته مفیدت… و همچنین مطلبت برای دور زدن تحریم‌‌ها
    منتظر مطلبت در مورد darkNet هستم.
    سپاس

  2. چنتا سوال داشتم
    ۱_ ایا لیست این سرورها در جایی ثبت شده است؟
    ۲_برای رسیدن یک پیام به مقصد چندبار آی پی عوض میشود و آیا آی پی ها هم برای سرورهای دست چندم مخفی میمانند؟
    ۳_تعداد گره ها آیا همواره ۳ تا است یا بیشتر هم میشود و آیا مقصد پیام برای گره اول مشخص است؟
    ۴_ تا چه حد امکان دارد که این یک شبکه ساخته شده از طرف بعضی دولتها بخصوص روسیه نباشد؟

    1. ۱. آره دیگه، کلاینت تور شما اونا رو از سرورای تور دانلود می‌کنه
      ۲. حداقل ۳ بار، آره مخفی می‌مونه، کسی که پیام رو میگیره فقط کسی رو میشناسه (آی پی ش رو میدونه) که ازش پیام رو گرفته و نفر قبلش رو نمیشناسه
      ۳. تعداد گره‌ها طبق گفته سایت تور حداقل ۳تاست و می‌تونه بیشتر هم باشه، مقصد نهایی مشخص نیست، گره اول فقط میدونه گره بعدی کیه، نمیدونه در نهایت پیام به کی میرسه
      ۴. احتمالش صفر هست، چون تور یه پروژه آزاد هست و دولتی پشتش نیست، در واقع پشت هیچ پروژه آزادی دولتی قرار نداره، ممکنه دولت‌ها حمایت کنن از پروژه ولی دخالت نه، نمیتونن توش در پشتی بذارن برای خودشون چون پروژه متن‌باز هست و تغییرات توسط ملیون‌ها نفر دیده می‌شه، تنها کاری که دولت‌ها می‌نونن انجام بدن اینه که سرور به شبکه اضافه کنن و سعی کنن شنود کنن، که اونم فقط در صورتی میتونن که سرورشون گره خروجی باشه و همونطور که گفتم فقط ۱۰ دقیقه می‌تونن این کار رو انجام بدن چون بعد از ۱۰ دقیقه زنجیره عوض میشه! برای همین خیلی مهمه که اگه کار حساسی هست، توی اطلاعاتتون هم خودتون رو لو ندید، چون اگه شنود هم بشید، بازم اون شنود کننده شما رو نمیشناسه چون بینتون ۲ تا سرور دیگه هست هنوز! اما اگه شما توی پیامتون داد زده باشید من فلانی هستم از فلان جا، خب خودتون خودتون رو لو دادید!

  3. سلام . کارتون عالیه . ولی چند سوال این وسط باقی می مونه !
    ۱-پیامی که به ما می رسه (برعکس قضیه بالا) رمز گذاری شده است؟ جریانش چجوریه ؟
    ۲-هر سرور از کجا باید بفهمه که کدوم پیامی که دریافت کرده باید به کدوم سرور بره ؟
    ۳-از کجا معلوم بیشتر سرور های تور خبیث نباشن و دستشون تو یک کاسه نباشه ؟
    ممنون ! 🙂

    1. ببخشید که دیر جواب میدم
      ۱. آره رمز گذاری شده… اون الگریتمش یکم فرق داره
      https://svn.torproject.org/svn/projects/design-paper/tor-design.html#subsubsec:constructing-a-circuit
      https://tor.stackexchange.com/questions/12439/why-does-tor-use-diffie-hellman-to-set-up-the-session-key
      https://fa.wikipedia.org/wiki/%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84_%D8%AA%D8%A8%D8%A7%D8%AF%D9%84_%DA%A9%D9%84%DB%8C%D8%AF_%D8%AF%DB%8C%D9%81%DB%8C-%D9%87%D9%84%D9%85%D9%86
      این لینکا شاید کمک کنن، تشکر هم بکنم از دوستم فرید که وقت گذاشت و این قضیه رو چند وقت پیش ته و توش رو در آورد ?
      ۲. هر سرور سرور قبل و بعد خودش رو میشناسه دیگه
      ۳. از اونجا که تو پروژه‌های آزاد اکثر افراد اینطوری نیستن، پروژه تور یه پروژه آزاد هست، و توسط کسانی که ازش استفاده می‌کنن که من و شمای داوطلب هستیم اداره میشه و بهش سرور اضافه میشه، حالا اگر دولت‌ها بیشتر از ما سرور بدن به سیستم، شانسشون توی اون ۱۰ دقیقه‌هایی که نود آخر هستن و ارتباط ssl نیست بیشتر می‌شه، ولی با این حال، احتمال این که ssl نباشه ارتباط و کسی رو که شانسی ۱۰ دقیقه شنود می‌کنی، کسی باشه که میخوای (دولت می‌خواد) خیلی کمه!

  4. درود
    ۱-در شبکه تور(آی اس پی) ما آدرس سایت های بازدیدشده توسط مارو ثبت میکنه،منتها به جای اصل حروف سایت های باز دید شده، یک سری رمز (اعدادوحروف)ناخوانا رو میبینه.این نظر درسته؟
    ۲-یا isp کلا هیچ آدرس بازدیده شده ای رو حتی رمز شده ثبت نخواهد کرد؟
    ۳-isp اصولا میفهمه ما از تور استفاده می کنیم؟
    ۴- آنلاین شدن ما در شبکه تور برای isp مان قابل مشخص شدن هست؟
    باتشکر از حوصله تون

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

  5. باسلام
    تشکر از مطالب مفیدتون
    یک سوال داشتم درمورد شبکه تور:
    اولا:آیا isp (محتوای) فایل های دانلود شده یا آپلود شده کاربرشبکه ی تور رو میتونه تشخیص بده؟ثانیا اگر نمیتونه محتوا رو تشخیص بده ،پس چرا در صورت دانلود یا آپلود حجم خریداری شده کاربر روکم میکنه؟
    آیا در کل (آی اس پی) میتونه بفهمه کابر چه فایلی رو دانلود یا آپلود کرده؟ولو به صورت رمز شده هم باشه؟
    سپاس فراوان

    1. ۱. خیر
      ۲. شما یه گاوصندوق قفل شده رو با پست می‌فرستی برای دوستت، پست می‌تونه داخل گاوصندوق رو ببینه؟؟! ولی می‌تونه وزنش کنه!
      ۳. بستگی داره به استفاده شدن یا نشدن از تور و رمز بودن یا نبودن ارتباط (ssl)

  6. سلام
    ۱-چگونه کل سیستم رو با تور تونل کنیم؟
    ۲-کدوم برنامه ی تور(مثل اور فاکس،ربات پیازی و…) جستجوهای مارو در گوشی “ناشناس” میکنه؟
    ممنون از راهنمایی تون

    1. ۱. کار خوبی نیست این کار به دلایل امنیتی،‌ ولی اگه میخواید باید پروکسی سیستم رو تنظیم کنید دیگه، بسته به میزکار فرق می‌کنه روندش
      ۲. برنامه‌هایی که گفتید با هم کار می‌کنن،‌orfox مرورگریه که به صورت دیفالت تنظیم شده تا از orbot استفاده کنه، در واقع orbot میشه تور در گوشی

  7. سلام
    باتوجه به اینکه با استفاده ازپل از نوع(obfs4) در زنجیره تشکیل شده ،مدار،آی پی پل رو نشون نمیده.پس (isp) چه آی پی ای رو می بینه؟لازم به ذکره که کلاینت خانگی توربه جای آی پی پل فقط(obfs4)رونشون میده.البته آی پی گره میانی وخروجی رو نشان میده.
    واگر آی پی پل برای isp ناشناخته است،اصولا چگونه ما به اینترنت ازطریق پل وصل میشیم؟

    1. سلام، اشتباه نکنید، پل توی زنجیرست… فقط چون isp سرورهای ورودی شناخته شده رو مسدود کرده، ما میایم از پل که سروریه که شناخته نشده (و با ایمیل و درخواست بهمون ۳ تا میدن هر چند وقت) استفاده می‌کنیم و مسدود کردن isp رو دور میزنیم، ما هنوزم از طریق isp به پل وصل میشیم، منتها isp پل رو مسدود نکرده، چون نمیدونه پل ئه! مثل اینکه من به شما بگم این بسته رو بده به رضا، بعد شما بگی نمیدم، میگم اوکی، توی بسته برای سارا پیام می‌نویسم که این بسته رو بده به رضا، رمزش می‌کنم، میدم به شما، این بار به شما میگم بدش به سارا، و این بار شما میدیش بهش ?

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

          1. اما عجیب اینه که در حالتobfs4 من هم حتی آی پی پل رو نمیبینم در حالیکه آی پی نودهای وسطی وخروجی رو میبینم؟

  8. سلام آقای مولایی.
    ممنون از مطلب خوبتون.
    سوالم این هست که برای اینکه نخوایم دولت و isp متوجه بشن ما داریم از تور استفاده میکنیم آیا به جز استفاده از پل استفاده یک vpn قبل از تور فایده ای دارد یا نه؟
    یعنی اول به vpn وصل بشیم و بعد به تور.

    اگر هم امکانشش هست چند تا vpn رایگان که از نظر شما امن هست رو معرفی کنید به من.

    ممنون از شما.

  9. سلام و خسته نباشید
    ۱فرق اینکه من داده تو اینستاگرام اپلود کنم بدون تور و با تور چیه تا اونجایی من میدونم خود مثلا اینستا اپلود من رو رمزگذاری میکنه تا isp نفهمه چی اپلود کردم
    ۲ فرض کنیم من پیج اینستا گرام دارم به اسم Hamid آیا هر بار که بدون تور من پیجم میرم چیزی اپلود یا دانلود میکنم،
    آیا isp هر بار که من به پیجم سر میزنم
    میتونه تشخیص بده اسم پیج منو یا آدرس پیج منو، چنین چیزی امکان پذیر است؟

    1. سلام
      ۱. تقریبا فرقی نداره چون توی شبکه اجتماعی معمولا اطلاعات شخصیتون هست، فقط اون سرور نمیفهمه شما دقیقا کجا هستید
      ۲. آی‌اس‌پی هنوز ممکنه از طریق dns بفهمه شما رفتید اینستاگرام، که برای جلوگیری ازش باید dns رو هم encrypt کنید

  10. سلام ممنون از مطلب خوبتون میخواستم بدونم وقتی از پل استفاده کنیم در واقع داریم از چهار گره عبور میکنیم تا به مقصدمون برسیم؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *