پروتکل‌های ارتباطی سنتی معمولاً بر پایه تعامل رفتاری دوطرفه طراحی شده‌اند. هنگامی که یک بسته دریافتی دارای خطای ساختاری، پارامترهای نامعتبر یا گواهی‌های رمزنگاری ناشناخته باشد، پشته شبکه سرور پاسخی تشخیصی و صریح مخابره می‌کند. پشته TCP پرچم بازنشانی (RST) می‌فرستد، پورت‌های بسته UDP پیام خطای عدم دسترسی به مقصد (ICMP Type 3, Code 3) صادر می‌کنند و پروتکل‌های لایه کاربرد هشدارهای رد درخواست صادر می‌نمایند.

اگرچه این بازخورد برای خطایابی شبکه سودمند است، اما در برابر حسگرهای بازرسی و پایشگرهای خودکار نقصی بزرگ ایجاد می‌کند. ابزارهای اسکن همگانی مانند ZMap و Masscan از همین خطاهای تشخیصی برای شناسایی خدمات فعال در فضای IPv4 استفاده می‌کنند. فایروال‌های بازرسی عمیق بسته‌ها (DPI) از روش کاوش فعال (active probing) بهره می‌گیرند: با ردیابی ترافیک رمزگذاری‌شده مشکوک، فایروال بسته‌ای مشابه یا دستکاری‌شده به سوی سرور ارسال می‌کند. اگر سرور پاسخی مبنی بر رد درخواست بدهد، سامانه نظارتی فعالیت سرویس را تأیید کرده و آدرس سرور را مسدود می‌سازد.

وایرگارد با اتکا به یک اصل بنیادین این تهدید را خنثی می‌کند: بسته‌های احراز هویت‌نشده هیچ پاسخی دریافت نمی‌کنند (Zero-Response). به‌جای ارسال خطا، راه‌انداز هسته بسته نامعتبر را بدون تولید هیچ داده‌ای نادیده گرفته و حذف می‌کند.

+-----------------------------------------------------------------------------+
|                 مقایسه پاسخ به کاوش فعال: پروتکل‌های سنتی و وایرگارد         |
|                                                                             |
| [ سامانه کاوشگر یا فایروال نظارتی ]                                         |
|           |                                                                 |
|           | ۱. ارسال بسته دستکاری‌شده یا احراز هویت‌نشده                      |
|           v                                                                 |
|   +-------------------+                     +---------------------------+   |
|   |  پروتکل‌های سنتی  |                     |    وایرگارد / رایس‌گارد     |   |
|   | (OpenVPN / IPsec) |                     |    (فرآیند receive.c)     |   |
|   +-------------------+                     +---------------------------+   |
|           |                                               |                 |
|           | ارسال بسته هشدار خطا                          | حذف کاملاً بی‌صدا|
|           | (پیام TLS Alert یا ICMP)                      | (دستور goto drop)|
|           v                                               v                 |
| [ تأیید حضور سرور در شبکه ]                 [ غیرقابل تشخیص از درگاه بسته   |
|   => مسدودسازی فوری آدرس                       یا فایروال قطعی]             |
+-----------------------------------------------------------------------------+

تله بازخورد تشخیصی: افشای سرور در بسترهای سنتی

پروتکل‌های گذشته سازگاری و پیام‌های خطا را بر پنهان‌سازی اولویت دادند. در پروتکل IPsec IKEv2 (RFC 7296)، اگر کلاینت الگوریتمی پیشنهاد دهد که سرور پشتیبانی نمی‌کند، سرور پاسخی با شناسه NO_PROPOSAL_CHOSEN می‌فرستد. این پاسخ علت خطا را توضیح می‌دهد، اما همزمان برای فایروال نظارتی مشخص می‌سازد که یک سرویس فعال روی پورت UDP 500 در حال اجراست.

پروتکل OpenVPN نیز با چالش مشابهی روبروست. اگر تنظیمات بدون امضای پیش‌فرض tls-auth اجرا شود، با دریافت نخستین بسته، فرآیند TLS آغاز می‌گردد. در صورت بروز خطا، کتابخانه نرم‌افزاری پیام TLS Alert: Handshake Failure صادر می‌کند. سامانه‌های بازرسی با ارسال مجدد بسته‌ها به سرور و شنود این پیام هشدار، نوع سرویس را شناسایی می‌کنند.

همچنین فرآیندهای کاربردی در لینوکس بر فراخوان recvfrom() متکی هستند. اگر بسته‌ای به پورت اختصاص‌نیافته برسد، هسته لینوکس پیام ICMP Port Unreachable تولید می‌کند که به ابزارهای تحلیل شبکه امکان می‌دهد حضور سرور را تایید کنند.

پردازش بسته در سطح هسته: کدهای receive.c

وایرگارد با ادغام مستقیم در بخش شبکه هسته لینوکس (drivers/net/wireguard/receive.c) به رفتار کاملاً خاموش دست می‌یابد. بسته‌های UDP مستقیماً در صفوف سخت‌افزاری کارت شبکه و در سطح هسته ارزیابی می‌شوند و نیازی به جابجایی حافظه به لایه کاربری ندارند.

+-----------------------------------------------------------------------------+
|              مراحل ارزیابی و حذف بسته‌ها در هسته لینوکس                      |
|                                                                             |
| فریم ورودی UDP (ساختار sk_buff)                                             |
|           |                                                                 |
|           v                                                                 |
|   +-----------------------+   عدم تطابق اندازه                              |
|   |   بررسی طول بسته      | -------------------> [ حذف بی‌صدا در هسته ]     |
|   +-----------------------+                                                 |
|           | اندازه دقیق است                                                 |
|           v                                                                 |
|   +-----------------------+   کد اعتبارسنجی نامعتبر                         |
|   |  بررسی برچسب MAC1     | -------------------> [ حذف بی‌صدا در هسته ]     |
|   +-----------------------+                                                 |
|           | برچسب صحیح است                                                  |
|           v                                                                 |
|   +-----------------------+   بسته تکراری یا قدیمی                          |
|   | بررسی زمان‌سنج TAI64N | -------------------> [ حذف بی‌صدا در هسته ]     |
|   +-----------------------+                                                 |
|           | زمان همواره صعودی                                               |
|           v                                                                 |
|   +-----------------------+   نقطه نامعتبر روی منحنی                        |
|   | ضرب نقطه منحنی بیضوی  | -------------------> [ حذف بی‌صدا در هسته ]     |
|   +-----------------------+                                                 |
|           | تبادل کلید موفق                                                 |
|           v                                                                 |
|       تولید کلید نشست و ارسال پاسخ آغاز ارتباط معتبر                        |
+-----------------------------------------------------------------------------+

هنگام ورود بسته به تابع wg_receive()، بررسی‌ها در چهار مرحله انجام می‌گیرد:

۱. بررسی اندازه ثابت بسته: وایرگارد اندازه پیام‌ها را تثبیت کرده است. پیام آغازین دقیقاً ۱۴۸ بایت، پیام پاسخ ۹۲ بایت و پیام کوکی ۶۴ بایت است. در صورت هرگونه ناهماهنگی در ساختار، هسته بی‌درنگ به دستور goto drop می‌رود و حافظه بسته آزاد می‌شود بدون اینکه پاسخی فرستاده شود.

۲. بررسی امضای رمزنگاری اولیه (mac1): هر پیام آغازین دارای یک امضای ۱۶ بایتی است که با کلید عمومی سرور محاسبه شده است. اگر فرستنده‌ای بدون داشتن کلید عمومی سرور اقدام به ارسال بسته کند، بررسی mac1 رد می‌شود و هسته لینوکس بدون تخصیص حافظه پردازش را متوقف می‌سازد.

۳. بررسی برچسب زمانی TAI64N: برای پیشگیری از حملات بازپخش، که در آن نفوذگر بسته‌ای قدیمی را برای تحریک سرور به پاسخگویی مجدد می‌فرستد، وایرگارد زمان‌سنج ۱۲ بایتی را بررسی می‌کند. برچسب زمانی باید به‌طور اکید بزرگتر از آخرین مقدار ثبت‌شده باشد، در غیر این صورت بسته بدون پاسخ کنار گذاشته می‌شود.

۴. محاسبات با زمان ثابت بر منحنی بیضوی: در صورت تأیید مراحل اولیه، کلید موقت روی منحنی Curve25519 محاسبه می‌شود. در صورتی که نقطه ارائه‌شده ناهنجار باشد، الگوریتم به سرعت کار را بدون ارسال خطا خاتمه می‌دهد.

با این روش، هنگام اجرای دستور nmap -sU -p 51820 <آدرس> هیچ پاسخی بازنمی‌گردد و وضعیت درگاه به‌صورت open|filtered گزارش می‌شود که تفاوتی با یک سرور خاموش یا پورت مسدود ندارد.

یکنواخت‌سازی اندازه بسته و پراکندگی داده‌ها

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

مشخصه پروتکل پروتکل‌های سنتی (OpenVPN / IPsec) استاندارد هسته وایرگارد
طول بسته آغازین متغیر بر اساس گواهی‌ها و الگوریتم‌ها ثابت: دقیقاً ۱۴۸ بایت
طول بسته پاسخ متغیر بر اساس زنجیره گواهی سرور ثابت: دقیقاً ۹۲ بایت
بسته مهار ترافیک سنگین تبادل چندمرحله‌ای متغیر ثابت: دقیقاً ۶۴ بایت
پاسخ به کاوش غیرمجاز ارسال خطای TLS یا پیام ICMP حذف بی‌صدا (goto drop) با صفر بایت خروجی
هدر بسته‌های داده متغیر میان ۲۰ تا ۳۶ بایت ساختار یکپارچه ۳۲ بایت
ترازسازی طول محتوا متغیر بسته به تنظیمات بسته چینش مضرب‌های ۱۶ بایت با داده‌های تکمیلی

در وایرگارد، بایت‌های نخست نوع پیام را مشخص کرده و سپس شناسه‌های تصادفی و محتوای رمزگذاری‌شده قرار می‌گیرند که از نظر آماری کاملاً شبیه نویز تصادفی است. بسته‌های داده با فیلد تکمیلی (padding) تراز می‌شوند تا الگوهای طول بسته هنگام تبادل متن‌های کوتاه قابل شناسایی نباشند.

تنظیم فایروال سرور برای تثبیت سکوت ارتباطی

بهره‌گیری از یک پروتکل خاموش نیازمند هماهنگی سیستم‌عامل سرور است تا درگاه‌های جانبی پاسخی تولید نکنند. هسته لینوکس به‌طور پیش‌فرض در صورت دریافت بسته در پورت‌های غیرفعال، پیام ICMP Destination Unreachable ارسال می‌کند. اگر فایروال با دستور رد صریح (-j REJECT) بسته‌ها را پس بزند، ارسال پیام خطای ICMP موجب افشای حضور سرور می‌شود.

برای حفظ استتار، فایروال باید تمام ترافیک ناشناس را بدون پاسخ حذف کند (drop).

# نمونه پیکربندی nftables برای حفظ سکوت سرور
nft add table inet stealth_filter
nft add chain inet stealth_filter input { type filter hook input priority 0 \; policy drop \; }

# پذیرش نشست‌های از پیش برقرار شده
nft add rule inet stealth_filter input ct state established,related accept

# پذیرش ترافیک رابط داخلی لوپ‌بک
nft add rule inet stealth_filter input iif lo accept

# پذیرش پورت شنود پروتکل وایرگارد
nft add rule inet stealth_filter input udp dport 51820 accept

# حذف بدون پاسخ بسته‌ها بدون صدور پیام خطا
nft add rule inet stealth_filter input drop

در فایروال iptables نیز پیکربندی مشابهی اعمال می‌شود:

# دستورات iptables برای دفع بی‌صدای کاوش‌ها
iptables -A INPUT -p udp --dport 51820 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p udp --dport 51820 -j DROP
iptables -P INPUT DROP

تنظیم پارامترهای کنترل نرخ ICMP در هسته نیز به پایداری سیستم کمک می‌کند:

# مهار نرخ ارسال پیام‌های ICMP در هسته
sysctl -w net.ipv4.icmp_ratelimit=1000
sysctl -w net.ipv4.icmp_ratemask=6168

راهکارهای نوین در زیرساخت شبکه VPNRice

پاسداری از ارتباطات امن نیازمند هماهنگی میان سکوت هسته سیستم‌عامل و تحول پویای ترافیک است. زیرساخت شبکه VPNRice این اصول را در تمام لایه‌ها پیاده‌سازی می‌کند:

۱. درگاه‌های هسته رایس‌گارد با رفتار خاموش: سرورهای لبه‌ای شبکه بر پایه هسته وایرگارد بهینه‌سازی شده‌اند. بسته‌های فاقد اعتبار و ترافیک‌های کاوشگر بدون اختصاص حافظه در لایه سخت‌افزار دفع می‌شوند و زیرساخت از دید نرم‌افزارهای خودکار پایش شبکه پنهان می‌ماند.

۲. جابجایی پویای پورت (Dynamic Port Hopping): برای مهار الگوهای پایش بلندمدت که آدرس و پورت ثابت را هدف می‌گیرند، سامانه رایس‌گارد از تغییر پیوسته پورت استفاده می‌کند. جریان ارتباطی میان پورت‌های تصادفی جابجا شده و نشست رمزنگاری بدون اختلال فعال می‌ماند.

۳. پوشش‌دهی رمزنگاری پیش از آغاز: برای جلوگیری از شناسایی هدرهای آغازین توسط فیلترهای حساس به امضای بایت‌ها، رایس‌گارد بسته‌های اولیه را در پوشش‌های نویز رمزنگاری قرار می‌دهد. سامانه‌های نظارتی تنها داده‌های نامفهوم مشاهده می‌کنند و بسته‌های آزمایشی مهاجمان در هسته بی‌صدا ناپدید می‌شوند.

پیوند میان خاموشی پردازش در هسته و راهکارهای پویای پوشش ترافیک، سپری کارآمد برای حفظ امنیت و آرامش ارتباطی در دنیای دیجیتال فراهم می‌سازد.