سرویسهای مخفی tor
خیلی در گفتگوها چیزهایی میشنوم راجع به دارک وب و دیپ وب و اشتباه گرفتن این دو موضوع با هم. اینها در واقع سرویسهای مخفی تور هستند.
تصمیم گرفتم یک بار برای همیشه این دو موضوع رو از هم تفکیک کنم و راجع به خودشون و نحوه کارکردشون یه توضیحاتی بدم و مخصوصا از شایعاتی بگم که همه شنیدین
این مطلب در ادامهی تور چیست و چگونه کار میکند هست. پس اگر این مطلب رو نخوندید اول بخونیدش.
برای داشتن سایتی که کسی ندونه کیه و کجاست! باید سرورمون ناشناس بمونه! چون شبکه تور داره این سرویس رو بهمون میده پس سایتی که ما ایجاد میکنیم، فقط از طریق شبکه تور قابل دسترسی هست و آدرس سایتمون هم یه چیزی شبیه: abcdefghijklmnop.onion میشه. (که جلوتر میگم چطوری این آدرس تولید میشه).
پروتکل rendezvous
خب سوالی که برای همه پیش میاد اینه که، اگه من ندونم طرف مقابلم کجاست و کیه، و طرف مقابل هم ندونه من کی هستم! خب چطوری از هم اطلاعات بگیریم؟ راه حل قرار ملاقات گذاشتن هست!
برای این کار ما به یک سرور نیاز داریم که ارتباط بین ما رو برقرار کنه، طوری که نه من بفهمم طرف مقابل کیه و نه طرف مقابل بدونه من کی هستم!
مرحله معرفی کردن
فرض کنیم من سروری هستم که قراره سایت روش باشه، در واقع من میخوام یه Hidden Service ایجاد کنم. من ۳ گره تور رو انتخاب میکنم به صورت تصادفی، و ازشون میپرسم که آیا تمایل دارند که گره معرف من باشن؟ اگر قبول کردن، من کلید عمومی خودم رو به اونها میدم. چیزی که مهمه اینه که اون گرههایی که به عنوان گره معرف انتخاب میشن، نمیدونن من کی هستم و سرورم کجاست، چرا؟ چون من برای ارتباط با اونها همه مراحلی رو که توی مطلب قبل توضیح دادم رو گذروندم، در واقع از طریق ۳ گره دیگه به اونها رسیدم!
از این به بعد همیشه در ارتباطها خودتون پیشفرض اون ۳ گره (TOR Chain) رو در نظر بگیرید، چه در عکسها چه در متن!
در واقع در این عکس، سرور اصلی که سرویس مخفی رو ارائه میده Bob هست و فلشهای سبز رنگی که نشون داده شده رو شما ارتباط امن از طریق ۳ سرور که در مطلب پیش بود (زنجیره یا chain یا circuit)، در نظر بگیرید!
حالا من باید چیزی بسازم به اسم Hidden Service Descriptor که شامل مشخصات گرههای معرف و کلید عمومی سرور است. حالا باید این بسته رو به Destributed Hash Table بدهم.
یک دیتابیس کلید-مقداری است، که مقدارها در آن همان Hidden Service Descriptor هست و کلید آن آدرس ۱۶ کارکتری هست که آدرس Hidden Service ما خواهد بود. ما با دادن کلید به این دیتابیس، میتونیم از اون مقدار بگیریم.
نحوه ساخت آدرس
کلید عمومی سرور با الگوریتم SHA-1 هش کرده، سپس ۱۰ کارکتر اول (۸۰ بیت) هش به دست آمده رو با الگوریتم Base32 هش میکنیم، یک رشته ۱۶ کارکتری ایجاد میشود که همان آدرس سرویس ماست
ما Descriptor رو به سروری که Destributed Hash Table روشه میدیم و بازم دقت کنید که اون سرور ما رو نخواهد شناخت (به علت Tor Chain) و سرویس ما ایجاد شده!
نحوه استفاده
چون این آدرسها توسط موتورهای جستجو قابل جستجو نیستند… و در واقع اصلا .onion چیزی نیست که در اینترنت شناخته بشه، یه چیز داخلیه توی شبکه تور… کسی که بخواد از سرویس ما استفاده کنه (کلاینت) باید آدرس سرویس ما رو داشته باشه! کلاینت با دادن آدرس به Destributed Hash Table مقدار اون آدرس یعنی در واقع آدرس گرههای معرف و کلید عمومی سرور ما رو داره! حالا کلاینت یک کلید یکبار مصرف تولید کرده، و سپس یک گره را به عنوان گره قرار ملاقات (rendezvous point) انتخاب کرده و کلید یکبار مصرف را به آن میدهد. این کلید در گره ملاقات میمونه و بعدا ازش استفاده میشه.
حالا کلاینت یه introduce message میسازه که شامل کلید آدرس گره ملاقات و کلید یکبار مصرف هست. این پیام رو با کلید عمومی سرویس هش میکنه (که فقط سرویس میتونه اون رو با کلید خصوصیش باز کنه) و اون رو به یکی از گرههای معرف میفرسته تا به سرویس مخفی برسوننش.
حالا سرور سرویس مخفی ما با کلید خصوصیش، پیامی که از کلاینت گرفته رو رمزگشایی میکنه و آدرس گره ملاقات و کلید یکبار مصرف رو به دست میاره! حالا سرور سرویس مخفی کلید یکبار مصرف رو به گره ملاقات میفرسته. حالا گره ملاقات به کلاینت میگه که ارتباط با موفقیت ایجاد شد!
از این به بعد ارتباط بین سرور سرویس مخفی و کلاینت از طریق گره ملاقات برقرار میشه. دقت کنید که ارتباط بین کلاینت و سرور سرویس مخفی حداقل از ۷ سرور (۳+۱+۳) میگذره. در نتیجه هیچکدوم به هیچ عنوان هم دیگه رو نمیشناسن.
چرا باید آدرس سرویس مخفی انقدر بی معنی باشه؟
دلیلش اینه که کلید سرور برای هر سرور یک چیز یکتاست و وقتی ما با یک الگوریتم از اون کلید به یه آدرس ۱۶ کارکتری میرسیم، برای هر سرور به یه آدرس یکتا میرسیم. در واقع این کمک میکنه که اگر کسی این آدرس رو زد، ما مطمئن باشیم به ما میرسه و کسی نمیتونه خودش رو به جای ما جا بزنه! در واقع تولید دوباره این آدرس برای کسی که کلید ما رو نداره و میخواد خودش رو جای ما جا بزنه تقریبا غیرممکنه!
یک اتفاق جالب
ما تا اینجا گفتیم آدرس توسط هش کردن SHA1 و Base32 کلید عمومی سرور به دست میاد و کاملا یک چیز شانسی و غیر قابل پیشبینی هست! ولی! فیسبوک در شبکه تور این آدرس رو ایجاد کرد. facebookcorewwwi.onion و خیلیا فکر کردن که ئه پس چی شد؟؟ چطوری تونستن؟ نکنه تور باگ داره؟ نکنه همه تو خطر باشن و…
ولی در نهایت نتیجه این بود که فیسبوک بسیار خوششانس بود که تونست این آدرس رو تولید کنه. کاری که فیسبوک کرده بود این بود که به طور شانسی کلید عمومی و خصوصی تولید کرده بود و آدرس ساخته بود با همون الگوریتم و دیده بود به درد میخوره یا نه! یعنی دقیقا روش آزمایش و خطا، با این تفاوت که در الگوریتم SHA1 شما اگر یک بیت رو عوض کنید چیزی شبیه هش قبلی نمیگیرید، چیزی میگیرید کاملا غیرقابل پیشبینی و حدس!
این کار احتمالا چندین ماه از فیسبوک زمان گرفته و خیلی خوششانس بوده که این چندین ماه، به چندین سال نکشیده
تولید آدرس دلخواه
ابزارهایی هستن که شما میتونید با داشتن زمان کافی باهاشون کلیدی تولید کنید که آدرس تولیدی از اون کلید، آدرس دلخواه شما بشه (حالا یا همهاش یا قسمتی ازش، بسته به زمان کافیتون!)
- Shallot
- Scallian
- Eschalot
این ابزارا همه با آزمایش و خطا کار میکنن!
ابزار دوم از قدرت پردازش کارت گرافیک هم برای تست استفاده میکنه تا سرعت بیشتری داشته باشه.
ابزار سوم چند کلمه کلیدی از کاربر میگیره و هروقت آدرس این کلمات رو داشت به کاربر میگه!
دیپ وب یا وب عمیق
عدهای از سایتها میان از این ناشناسی و امنیت برای امن کردن کلاینتهاشون استفاده میکنن! تا اونها با اطمینان بیشتری از سرویسشون استفاده کنن! همچنین مثلا اگه زمانی دولت از اونا اطلاعات کاربراشون رو خواست! بگن ما کاربرامون رو نمیشناسیم!! این سایتها آدرس onionشون رو در درسترس همه قرار میدن به صورت عمومی! از جمله، سایت ThePirateBay که اگه بازش کنید پایینش یه لینک داره به اسم TOR که آدرس onion خودشون هست. یا سایت WikiLeaks و…
به این قسمت میگن دیپوب. چرا؟ چون وب معمولی نیست! ولی در اینترنت معمولی هم دیده نمیشه و برای دیدنش باید از تور استفاده کنید!
دارک وب یا وب تاریک
عدهای از این امنیت استفاده میکنن تا کارهای غیرقانونی خودشون رو از دید حکومتها مخفی کنن! یا کسایی که میخوان اطلاعاتی رو به روشی بسیار امن با عدهای خاص به اشتراک بذارن! این مدل سایتها معمولا آدرسشون رو به صورت عمومی منتشر نمیکنن و چون موتور جستجویی وجود نداره از دید همه پنهان هستن (دلیل تاریک گفته شدن به این بخش). اینها آدرسشون رو فقط به مشتریهاشون میدن. از جمله سایتهایی که در دارک وب پیدا میشن:
- شبکههای قتل در ازای دریافت پول (Hitman Network)
- شبکههای فروش مواد مخدر
- کانالهای گروههای سیاسی با تفکرات رادیکال
- هک
- پورنوگرافی کودکان
- فروش انواع چیزهایی که در مغازه فروخته نمیشوند مثلا اسلحه، تانک!
- دانلود غیرقانونی نرمافزار
- و…
بات نت شدن؟؟
حتما شما هم شنیدید این جملهها رو که:
با تور کار نکنید، دارک نت نرید، بات نت میشید!
این جملات خیلی غلط هستن! این که شما به بدافزار آلوده بشید یا نشید، کاملا به خودتون بستگی داره، نه به جایی که میرید.
این چیزها کاملا به کاربر بستگی داره. کاربر میتونه در اینترنت معمولی هم روی لینک نامطمئن کلیک کنه، نرمافزار رو از جای نامطمئن نصب کنه، نکات امنیتی رو رعایت نکنه و آلوده بشه. این موضوع اصلا ربطی به عمیق یا تاریک یا روشن بودن وب نداره! تنها چیزی که هست اینه که دارک وب پاتوق آدمای خلافکاری هست که تقریبا ترسی از شناسایی شدن ندارن! پس اگه از اونجاها رد میشید، هوای خودتون رو داشته باشید! نه این که بتریسد! نکات امنیتی رو رعایت کنید، هیچ بلایی سرتون نمیاد
آیا سرویس مخفی کاملا امن هست؟
معلومه که نه! همون طوری که در مطلب قبلی گفتم امنیت یک چیز یک فاکتوره نیست! علاوه بر اینکه ممکنه شبکه تور یا مرورگر تور یا هر چیز دیگهای که ازش استفاده میکنید باگ داشته باشه! ممکنه خود شما هم خیلی از فاکتورهای امنیتی رو زیر پا له کنید و حواستون نباشه! کاری که مدیران SilkRoad یک و دو انجام دادن و دستگیر شدند! یا خیلی از سایتهایی که امروزه دیده میشه توسط FBI هک میشن!
این مطلب در ادامهی تور چیست و چگونه کار میکند هست.