ObfuscatorServer
📖 معرفی کلی
گره ObfuscatorServer شامل مجموعهای از الگوریتمها میباشد که جهت مخفیکاری پکتها استفاده میشوند.
این نود با رمزنگاری تفاوت دارد؛ رمزنگاری چیزی است که امنیت کامل داشته باشد مثل TLS که اگر یک مهاجم هم دادهها را ببیند، نتواند محتوای آن را استخراج کند هرچقدر هم تلاش کند.
ولی کار این نود مخفیکردن دادهها است به طوری که فایروال و سیستمهای میانی نتوانند الگوهای مشخص داخل دادهها را شناسایی کنند.
اگر یک تیم تحقیقاتی وقت بگذارد، شاید بتواند یک پکت را به دادههای اولیهاش برگرداند که البته اصلاً مهم نیست چون هدف این نود رمزنگاری نیست.
هدف این نود مخفیکاری پکتها است تا فایروال نتواند الگوهای مشخص را پیدا کند.
ویژگی | مقدار | توضیح |
---|---|---|
نوع نود | Tunnel (دوجهته) | جهت برایش معنی ندارد و از هر دو جهت پشتیبانی میکند |
لایه شبکه | لایه ۴ | کار با دادهها بدون دستکاری سایز |
موقعیت در زنجیر | وسط زنجیر | فقط در وسط زنجیر قابل استفاده است |
وابستگی | نیاز به نود قبل و بعد دارد که زنجیر معنا داشته باشد | برای دریافت دادهها ضروری است |
در این نود سعی شده الگوریتمهایی که وجود دارد یا چیزهایی که بعداً اضافه میشود، هیچ تغییری در سایز پکتها اعمال نکنند.
این یعنی هیچ نوع هدری به پکت اضافه نشود (اینجا منظور از هدر چیز دیگری است، با http اشتباه نگیرید).
این نود اولین الگوریتم خود که XOR است، با استفاده از AVX2 توانایی پردازش ۳۲ بایت در کلاک را دارد.
درصورتی که AVX2 موجود نباشد از SSE3 و در غیر این صورت از ۸ یا ۴ byte alignment استفاده میکند تا حداکثر سرعت را ارائه دهد.
خلاصه اینکه اصلاً مصرف CPU خاصی اضافه نمیشود و از این بابت جای نگرانی نیست.
عملکرد
این نود یک نود Server است.
دوجهته است به خاطر اینکه الگوریتم XOR دوجهته است؛ این نود صرفنظر از جهت دادهها، چه از بالا به پایین و چه از پایین به بالا، وقتی داده از آن رد شود، الگوریتم مخفیکاری را بر روی آن اجرا میکند.
اگر الگوریتم XOR باشد، هر دادهای که با یک کلید ۲ بار XOR شود به دادههای اولیه برمیگردد.
پس شما حتی میتوانید این نود را به جای نود ObfuscatorClient
نیز استفاده کنید، ولی این کار اصلاً خوب نیست و باعث میشود کانفیگ شما خوانا و منطقی نباشد.
این نکته زمانی صحیح است که الگوریتم XOR باشد.
ممکن است در آینده الگوریتمهای جدیدی به این نود اضافه کنیم که این ویژگی دوجهته بودن را نداشته باشند که برایشان توضیحات خواهم نوشت.
⚙️ راهنمای پیکربندی
{
"name": "obfs_client",
"type": "ObfuscatorServer",
"settings": {
// تنظیمات اجباری
"method": "",
},
"next": "next_node_name"
}
در حال حاضر در تنظیمات بخش method فقط مقدار "xor" میتوانید قرار دهید که الگوریتم را تعیین میکند.
وقتی از متد XOR استفاده میکنید، مقدار زیر را باید تعیین کنید:
"xor_key": 123
این باید عددی بین صفر تا ۲۵۵ باشد که همان معنی کلید را میدهد؛ برای برگرداندن دادهها به حالت اول در ObfuscatorClient به این کلید نیاز خواهید داشت.
مثال کامل
{
"name": "obfs_client",
"type": "ObfuscatorServer",
"settings": {
"method": "xor",
"xor_key": 123
},
"next": "next_node_name"
}
در حالت کلی و منطقی شما قبلا دیتا رو از ObfuscatorClient .عبور دادید و با این نود دیتا رو از حالت رمز شده خارج می کنید و استفاده می کنید
شما حق ندارید پکت های لایه ۳ رو از این نود رد کنید مگه اینکه واقعا بدونید دارید چی کار می کنید
وقتی پکت از این نود رد بشه تمام دیتا از جمله ip header رمز شده ؛ بعدش دیگه پکت رو نمیتونید تزریق کنید یا استفاده کنید مگه اینکه از رمز خارج کنید
ایده اولیه استفاده از این نود برای دیتای udp بوده؛ اگه حالا میخواید پکت باهاش رمز کنید از نود های تبدیل لایه ۳ به ۴ استفاده کنید و بعد
به سرور مقصد کانکشن tcp یا udp بزنید و دیتا رو منتقل کنید.