پرش به مطلب اصلی

ObfuscatorClient

📖 معرفی کلی

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

این نود با رمزنگاری تفاوت دارد؛ رمزنگاری چیزی است که امنیت کامل داشته باشد مثل TLS که اگر یک مهاجم هم داده‌ها را ببیند، نتواند محتوای آن را استخراج کند هرچقدر هم تلاش کند.

ولی کار این نود مخفی‌کردن داده‌ها است به طوری که فایروال و سیستم‌های میانی نتوانند الگوهای مشخص داخل داده‌ها را شناسایی کنند.

اگر یک تیم تحقیقاتی وقت بگذارد، شاید بتواند یک پکت را به داده‌های اولیه‌اش برگرداند که البته اصلاً مهم نیست چون هدف این نود رمزنگاری نیست.

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

ویژگیمقدارتوضیح
نوع نودTunnel (دوجهته)جهت برایش معنی ندارد و از هر دو جهت پشتیبانی می‌کند
لایه شبکهلایه ۴کار با داده‌ها بدون دستکاری سایز
موقعیت در زنجیروسط زنجیرفقط در وسط زنجیر قابل استفاده است
وابستگینیاز به نود قبل و بعد دارد که زنجیر معنا داشته باشدبرای دریافت داده‌ها ضروری است

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

این یعنی هیچ نوع هدری به پکت اضافه نشود (اینجا منظور از هدر چیز دیگری است، با http اشتباه نگیرید).

این نود اولین الگوریتم خود که XOR است، با استفاده از AVX2 توانایی پردازش ۳۲ بایت در کلاک را دارد.

درصورتی که AVX2 موجود نباشد از SSE3 و در غیر این صورت از ۸ یا ۴ byte alignment استفاده می‌کند تا حداکثر سرعت را ارائه دهد.

خلاصه اینکه اصلاً مصرف CPU خاصی اضافه نمی‌شود و از این بابت جای نگرانی نیست.

عملکرد

این نود یک نود Client است.

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

اگر الگوریتم XOR باشد، هر داده‌ای که با یک کلید ۲ بار XOR شود به داده‌های اولیه برمی‌گردد.

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

این نکته زمانی صحیح است که الگوریتم XOR باشد.

ممکن است در آینده الگوریتم‌های جدیدی به این نود اضافه کنیم که این ویژگی دوجهته بودن را نداشته باشند که برایشان توضیحات خواهم نوشت.


⚙️ راهنمای پیکربندی

{
"name": "obfs_client",
"type": "ObfuscatorClient",
"settings": {
// تنظیمات اجباری
"method": "",


},
"next": "next_node_name"
}

در حال حاضر در تنظیمات بخش method فقط مقدار "xor" می‌توانید قرار دهید که الگوریتم را تعیین می‌کند.

وقتی از متد XOR استفاده می‌کنید، مقدار زیر را باید تعیین کنید:

"xor_key": 123

این باید عددی بین صفر تا ۲۵۵ باشد که همان معنی کلید را می‌دهد؛ برای برگرداندن داده‌ها به حالت اول در ObfuscatorServer به این کلید نیاز خواهید داشت.


مثال کامل

{
"name": "obfs_client",
"type": "ObfuscatorClient",
"settings": {
"method": "xor",
"xor_key": 123
},
"next": "next_node_name"
}

داده‌ها بعد از عبور از این نود مخفی‌کاری شده و باید در سرور خارج یا جایی یک ObfuscatorServer بگذارید با همین تنظیمات و کلید تا داده‌ها به حالت عادی برگردند.

توجه

شما حق ندارید پکت های لایه ۳ رو از این نود رد کنید مگه اینکه واقعا بدونید دارید چی کار می کنید

وقتی پکت از این نود رد بشه تمام دیتا از جمله ip header رمز شده ؛ بعدش دیگه پکت رو نمیتونید تزریق کنید یا استفاده کنید مگه اینکه از رمز خارج کنید

ایده اولیه استفاده از این نود برای دیتای udp بوده؛ اگه حالا میخواید پکت باهاش رمز کنید از نود های تبدیل لایه ۳ به ۴ استفاده کنید و بعد

به سرور مقصد کانکشن tcp یا udp بزنید و دیتا رو منتقل کنید.