آدرس Onion یا پیازی؟ (قسمت3 سرویس‌های مخفی)

«آدرس Onion یا پیازی؟ مسئله این است.» «قسمت ۳»

میر سامان تاجبخش

دانشجوی ترم آخر دکتری فناوری اطلاعات دانشگاه ارومیه، ارومیه، ایران

s.tajbakhsh@chmail.ir

ms.tajbakhsh@urmia.ac.ir

https://mstajbakhsh.ir

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

با توجه به مطالب اشاره شده در پست‌های قبلی، Alice برای برقراری ارتباط با یک سرور مانند facebook.com‌ می‌بایست درخواست خود را با سه کلید به ترتیب با کلیدهای Exit Relay و سپس با کلید Middle Relay و در نهایت با کلید مشترکش با Entry Guard رمز کند.

اگر سرویسی نیز بخواهد آدرسش نامعلوم باشد، باید به همین ترتیب عمل کند یعنی از لیست کسانی که در شبکه TOR فعالیت‌ می‌کنند، برای خود Entry Guard, Middle Relay, Exit Relay انتخاب کند تا بسته‌های دریافتی و ارسالی را با سه کلید مشترک بین خود و تک تک اعضای Circuit خود، رمز نمایی/گشایی کند.

در نگاه اول برای ارتباط یک کاربر با یک سرویس مخفی[1]، هم کاربر و هم سرویس مخفی باید برای خود یک Circuit داشته باشد و برای متصل شدن کاربر به سرویس مخفی نیاز است که این دو Circuit به یکدیگر متصل شوند.

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

 اتصال کاربر به سرویس مخفی در شبکه TOR
شکل 1: اتصال کاربر به سرویس مخفی در شبکه TOR

آدرس دهی در شبکه TOR

بر خلاف شبکه اینترنت معمولی که از سیستم Domain Name Service برای تبدیل نام دامنه به آدرس IP مورد استفاده قرار می‌گیرد، شبکه TOR برای آدرس‌دهی سرویس‌های مخفی نمی‌تواند از DNS استفاده کند. چراکه در سیستم DNS بحث حقوقی نام و ثبت کردن نام مطرح است. چنانچه برای ثبت دامنه‌ها در هر سایتی مانند nic.ir بایستی اطلاعاتی فردی و حقوقی دخیل شوند. علاوه بر مسائل حقوقی، دامنه بایستی به آدرس IP تبدیل شود که این مورد برخلاف علت وجودی شبکه‌های گمنام سازی است.

راهکار شبکه TOR استفاده از آدرس‌های پیازی[2] است. آدرس‌های پیازی در حقیقت قسمتی از یک Hash‌ می‌باشد. هر کسی که بخواهد سرویس مخفی راه اندازی کند، برنامه TOR در سیستم ایشان یک کلید عمومی/خصوصی ایجاد می‌کند. سپس برنامه TOR از کلید عمومی با استفاده از الگوریتم SHA-1 درهم سازی کرده و Hash را بدست می‌آورد. ۸۰ بیت اول از SHA-1 Hash را بصورت Base32 انکود کرده و آدرس پیازی تشکیل می‌شود. Base32 مبنای عددی است که از ۳۲ حالت برای هر رقم تشکیل شده است. این ارقام می‌توانند از a تا z (۲۶ حالت) و از ۲ تا ۷ (۶ حالت) که در مجموع ۳۲ حالت می‌شود، تشکیل شوند. همچنین با توجه به اینکه هر رقم از Hash بصورت Base32 آدرس پیازی از ۵ بیت تشکیل شده است (هر رقم ۳۲ حالت دارد)، بنابراین کل آدرس پیازی شامل ۱۶ رقم است. بنابراین هر آدرس پیازی ۱۶ کاراکتر دارد که هر کاراکترش از a تا z و یا از ۲ تا ۷ است. اگر به آخر آدرس عبارت .onion نیز اضافه شود، در صورت موجود بودن سرویس مخفی، کاربر می‌توان به آن سرویس متصل گردد. در شکل ۲، تصویر سرویس مخفی مربوط به سایت Facebook قابل مشاهده است.

به بیان دیگر در TOR برخلاف اینترنت عادی، آدرسهای دامنه بصورت ثاب با 16 کارکتر هستند. یعنی  فردی که میخواهد سرویس مخفی راه اندازی کند، آدرس دسترسی به سرویس مخفی با 16کاراکتر مشخص خواهد شد. آدرس Tor در واقع درهمسازی شده با یک کلید عمومی است. برنامه tor رادی که سرویس مخفی راه اندازی میکنند، یک کلید خصوصی و عمومی ایجاد می کند. برای استخراج آدرس پیازی از آنها ابتداعا از کلید عمومی با الگوریتم SHA1 در هم سازی و هش بدست می آید. سپس 80 بیت اول آن هش به صورت Base32 انکود شده و آدرس پیازی تشکیل میشود. گفتنی است دامنه کاراکترها در Base32 از a تا z و اعدادِ از 2 تا 7  میباشد که در مجموع 32کاراکتر را تشکیل میدهد. نابراین آدرسهای پیازی میتواند از aaaaaaaaaaaaaaaa تا 7777777777777777 با پسوند onion باشد. 16 کاراکتری بودن این آدرسها و این که هر خانه از آدرس میتوان 32 حالت ختلف داشته باشد،در مجموع 3216 یا 280 یا 12۹۸۰2۸۵1۶۹1۶۴2۹1۶۰۷۴۷1۶۷ حالت برای آدرسهای پیازی موجود است.

 سرویس مخفی سایت Facebook
سرویس مخفی سایت Facebook

نکته قابل ذکر در ارتباط با آدرس‌های پیازی این است که برخلاف سیستم DNS‌ که با پرسش از Name Serverهای لایه اول[3] می‌توان تمامی آدرس‌ها را بدست آورد (بطور مثال با پرسش از سرویس دهنده نام .com می‌توان تمامی آدرس‌های ثبت شده در .com را بدست آورد)، در سیستم TOR‌ چنین امکانی وجود ندارد. این مورد در مقاله دیگری که توسط نویسنده در کنفرانس آپا ۳ پذیرش شده است توضیح داده شده، که پس از ارائه، منتشر خواهد شد.

برای بدست آوردن تمامی آدرس‌های شبکه TOR پروژه‌ای با نام Onion Harvester توسط نویسنده توسعه داده شده است که جزئیات و سورس برنامه از لینک‌های زیر قابل دریافت است.

http://onionharvester.com/

https://mstajbakhsh.ir/projects/onion-harvester/

https://github.com/mirsamantajbakhsh/OnionHarvester

نحوه اتصال به سرویس مخفی

در ابتدا فرض می‌شود که سرویسی مانند وب در کامپیوتر سرور وجود دارد و در پورت ۸۰ در حال گوش دادن است. با اجرا و کانفیگ برنامه TOR در آن کامپیوتر، برای سرور دو فایل ایجاد می‌شود که یکی کلید عمومی/خصوصی است و دیگری SHA-1 و آدرس Onion مربوط به سرویس. البته برای تولید این کلید و ثبت شدن آن در سرورهای TOR اتفاقات دیگری نیز رخ می‌دهد که در زیر شرح داده شده است:

1- ابتداعا سرور برای خود نقاط اتصال را مشخص می‌کند. این همان گامی است که کلاینت نیز برای ایجاد Circuit بر می‌داشت. سرور با EG, MR, ER اتصال برقرار می‌کند که در شکل ۳ دیده می‌شود.

برقراری اتصال سرور با شبکه TOR
شکل 3- برقراری اتصال سرور با شبکه TOR

2- سرور مشخصات خود را که شامل کلید عمومی و Hash کلید عمومی (آدرس Onion) را به سرورهای نگهداری آدرس اعلان می‌کند. سرورهای نگهداری آدرس با نام Hidden Service Directory شناخته می‌شوند و یک پایگاه داده توزیع شده[4] بین کامپیوترهای مختلف است. در شکل ۴ HSDir با نام DB‌ آورده شده است.

اعلان مشخصات سرویس مخفی به HSDir
شکل 4- اعلان مشخصات سرویس مخفی به HSDir

3- سپس کاربر با وارد کردن آدرس Onion در سیستم فعال TOR در کامپیوتر خود، از دیتابیس توزیع شده سوال می‌کند که آیا این آدرس موجود است یا خیر؟ در صورت ثبت شدن آدرس Onion در یکی از HSDirها، کلید عمومی و نقطه متصل شدن به سرویس مخفی در دست کاربر قرار خواهد گرفت. چنانچه در شکل ۵ مشخص است، Alice (کاربر) با در دست داشتن کلید عمومی باب (سرویس مخفی) و نقاط شروع اتصال به سرویس مخفی (IP1-3) می‌تواند درخواستش را ارسال کند. همچنین در این مرحله Alice یک محل قرار[5] نیز مشخص می‌کند تا بتواند تبادل کلید با Bob داشته باشد.

آماده سازی درخواست از سمت کاربر (Alice)
شکل 5- آماده سازی درخواست از سمت کاربر (Alice)

4- در این مرحله کاربر (Alice) آدرس محل قرار را به همراه کلید رمزنگاری پیغام به یکی از نقاط ورود به سرویس مخفی Bob ارسال می‌کند. طبعا این پیغام با کلید عمومی Bob رمز شده تا هیچیک از افراد میانی نتوانند محتوای داخل آن را ببینند.

ارسال پیغام شروع از طرف کاربر به سرویس مخفی
شکل 6- ارسال پیغام شروع از طرف کاربر به سرویس مخفی

5- در این مرحله سرویس مخفی (Bob) به محل قرار که توسط کاربر (Alice) مشخص شده است، متصل شده و او نیز کلید تبادل داده را به Alice ارسال می‌کند.

ارسال کلید توسط سرویس مخفی به کاربر
شکل 7- ارسال کلید توسط سرویس مخفی به کاربر

6- در این مرحله تمامی موارد لازم برای اتصال کاربر و سرویس مخفی آماده شده است. کاربر سه روتر برای اتصال به سرویس مخفی دارد و سرویس مخفی نیز سه روتر دارد. به عبارت دیگر مجموعا ۶ روتر در مسیر ارسال درخواست از کاربر به سرویس مخفی و بالعکس در پنهان کردن آدرس IP هر دو سمت (کاربر و سرویس مخفی) به مسیر درخواست اضافه می‌شوند. لازم به ذکر است که ER مربوط به کاربر (Alice) همان نقطه قرار (یا Rendezvous Point) می‌باشد.

ارسال داده از کاربر به سرویس مخفی و بالعکس
شکل 8- ارسال داده از کاربر به سرویس مخفی و بالعکس

مجموعه این عملیات در شکل ۹ به نمایش گذاشته شده است.

کلیات اتصال کاربر به سرویس مخفی در شبکه گمنام سازی TOR
شکل 9- کلیات اتصال کاربر به سرویس مخفی در شبکه گمنام سازی TOR

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

[1] سرویسی که برای دسترسی نیاز به شبکه گمنام سازی دارد

[2] Onion Addresses

[3] Top Level Domains (TLD)

[4] Distributef Hash Table

[5] Rendezvous Point

Visits: 4908

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