جیسون ای. داننفلد، نویسنده WireGuard VPN، اولین نسخه اصلی نرمافزار کلاینت WireGuard را برای ویندوز ۱.۰ و همچنین درایورهای WireGuardNT 1.0 با پورت را منتشر کرده است. VPN WireGuard برای هسته ویندوز ۱۰ و ۱۱، با پشتیبانی از معماریهای AMD64، x86 و ARM64. کد کامپوننت هسته ویندوز تحت مجوز GPLv2 و نرمافزار کلاینت تحت مجوز MIT است.
این پورت بر اساس کدبیس پیادهسازی اصلی WireGuard برای هسته لینوکس است که برای استفاده از موجودیتهای هسته ویندوز و پشته شبکه NDIS تبدیل شده است. در مقایسه با پیادهسازی wireguard-go که در فضای کاربر اجرا میشود و از رابط شبکه Wintun استفاده میکند، WireGuardNT با حذف سوئیچهای زمینه و کپی کردن محتوای بسته از هسته به فضای کاربر، بهبودهای قابل توجهی در عملکرد ارائه میدهد. مشابه پیادهسازیهای لینوکس، OpenBSD و FreeBSD، تمام منطق پردازش پروتکل در WireGuardNT مستقیماً در سطح پشته شبکه اجرا میشود.
نسخه ۱.۰ به عنوان یک نقطه عطف مشخص شد که نشاندهنده حل تعدادی از مشکلات و انجام وظایف مورد نظر بود، مانند: استفاده از تابع NdisWdfGetAdapterContextFromAdapterHandle() به جای ذخیرهسازی ناامنتر وضعیت درایور در فیلد Reserved و استفاده از آفستهای مستند نشده؛ ردیابی صحیح و سریع اندازه MTU (حداکثر واحد انتقال) از طریق رهگیری فراخوانیهای سیستم؛ استفاده از استاندارد C23 در کد.
به عنوان یادآوری، WireGuard VPN مبتنی بر روشهای رمزگذاری مدرن است، عملکرد فوقالعادهای ارائه میدهد، استفاده از آن آسان است، بدون پیچیدگی است و خود را در تعدادی از استقرارهای بزرگ که حجم زیادی از ترافیک را مدیریت میکنند، ثابت کرده است. این پروژه از سال ۲۰۱۵ در حال توسعه بوده و تحت ممیزی و تأیید رسمی روشهای رمزگذاری خود قرار گرفته است. WireGuard از یک مفهوم مسیریابی رمزگذاری مبتنی بر کلید استفاده میکند که شامل اتصال یک کلید خصوصی به هر رابط شبکه و استفاده از کلیدهای عمومی برای اتصال کلید است.
تبادل کلیدهای عمومی برای ایجاد اتصال مشابه SSH است. برای مذاکره در مورد کلیدها و اتصال بدون اجرای یک سرویس جداگانه در فضای کاربر، از مکانیزم Noise_IK از چارچوب پروتکل Noise استفاده میشود، مشابه نگهداری authorized_keys در SSH. انتقال دادهها از طریق کپسولهسازی در بستههای UDP انجام میشود. تغییر پشتیبانی میشود. آدرس های IP سرورهای VPN (رومینگ) بدون وقفه در اتصال با پیکربندی مجدد خودکار کلاینت.
رمز جریانی ChaCha20 و الگوریتم احراز هویت پیام Poly1305 (MAC) که توسط دنیل جی. برنشتاین، تانجا لانگه و پیتر شواب توسعه داده شدهاند، برای رمزگذاری استفاده میشوند. ChaCha20 و Poly1305 به عنوان جایگزینهای سریعتر و امنتر برای AES-256-CTR و HMAC به بازار عرضه میشوند که پیادهسازی نرمافزاری آنها امکان اجرای با زمان ثابت را بدون نیاز به پشتیبانی سختافزاری ویژه فراهم میکند. کلید مخفی مشترک با استفاده از پروتکل منحنی بیضوی دیفی-هلمن در پیادهسازی Curve25519 که آن هم توسط دنیل برنشتاین پیشنهاد شده است، تولید میشود. الگوریتم BLAKE2s (RFC7693) برای هش کردن استفاده میشود.
منبع: opennet.ru
