VPN WireGuard در شاخه net-next پذیرفته شده است و برای گنجاندن در هسته Linux 5.6 برنامه ریزی شده است.

دیوید میلر (دیوید اس. میلر)، مسئول زیرسیستم شبکه هسته لینوکس، پذیرفته شده به شعبه نت بعدی تکه ها با پیاده سازی رابط VPN از پروژه WireGuard. در اوایل سال آینده، تغییرات انباشته شده در شاخه net-next، مبنای انتشار هسته لینوکس 5.6 خواهد بود.

تلاش‌هایی برای فشار دادن کد WireGuard به هسته اصلی در چند سال گذشته انجام شده است، اما به دلیل مرتبط بودن با پیاده‌سازی اختصاصی توابع رمزنگاری که برای بهبود عملکرد استفاده می‌شوند، ناموفق باقی مانده است. در ابتدا، این توابع بودند پیشنهاد شده برای هسته به عنوان یک API سطح پایین روی اضافی، که در نهایت می تواند جایگزین API استاندارد Crypto شود.

پس از بحث و گفتگو در کنفرانس Kernel Recipes، سازندگان WireGuard در ماه سپتامبر تصمیم سازش گرفت وصله های خود را برای استفاده از Crypto API موجود در هسته انتقال دهید، که توسعه دهندگان WireGuard در زمینه عملکرد و امنیت عمومی شکایت دارند. تصمیم گرفته شد که توسعه API روی، اما به عنوان یک پروژه جداگانه ادامه یابد.

در نوامبر، توسعه دهندگان هسته رفت در پاسخ به مصالحه و با انتقال بخشی از کد از Zinc به هسته اصلی موافقت کرد. در اصل، برخی از اجزای روی به هسته منتقل می شوند، اما نه به عنوان یک API جداگانه، بلکه به عنوان بخشی از زیرسیستم Crypto API. به عنوان مثال، Crypto API در حال حاضر مشمول پیاده سازی سریع الگوریتم های ChaCha20 و Poly1305 که در WireGuard آماده شده است.

در ارتباط با تحویل آینده WireGuard در هسته اصلی، بنیانگذار پروژه اعلام کرد در مورد بازسازی مخزن برای ساده سازی توسعه، مخزن یکپارچه "WireGuard.git" که برای وجود مجزا طراحی شده بود، با سه مخزن جداگانه جایگزین می شود که برای سازماندهی کار با کد در هسته اصلی مناسب تر است:

  • wireguard-linux.git - یک درخت کرنل کامل با تغییرات پروژه Wireguard، وصله‌هایی که از آن برای گنجاندن در هسته بررسی می‌شوند و مرتباً به شاخه‌های net/net-next منتقل می‌شوند.
  • wireguard-tools.git - یک مخزن برای ابزارها و اسکریپت ها که در فضای کاربر اجرا می شوند، مانند wg و wg-quick. از مخزن می توان برای ایجاد بسته هایی برای توزیع ها استفاده کرد.
  • wireguard-linux-compat.git - یک مخزن با یک نوع ماژول، که به طور جداگانه از هسته و شامل لایه compat.h برای اطمینان از سازگاری با کرنل‌های قدیمی‌تر عرضه می‌شود. توسعه اصلی در مخزن wireguard-linux.git انجام خواهد شد، اما تا زمانی که در بین کاربران فرصت و نیاز وجود داشته باشد، نسخه جداگانه‌ای از وصله‌ها نیز به صورت کاری پشتیبانی می‌شود.

یادآوری می کنیم که VPN WireGuard بر اساس روش های رمزگذاری مدرن پیاده سازی شده است، عملکرد بسیار بالایی را ارائه می دهد، استفاده آسان، عاری از عوارض است و خود را در تعدادی از استقرارهای بزرگ که حجم زیادی از ترافیک را پردازش می کنند، ثابت کرده است. این پروژه از سال 2015 در حال توسعه است، ممیزی شده است و تایید رسمی روش های رمزگذاری مورد استفاده پشتیبانی WireGuard قبلاً در NetworkManager و systemd یکپارچه شده است و وصله های هسته در توزیع های پایه گنجانده شده است. دبیان ناپایدار است, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, زیرگرافی и ALT.

WireGuard از مفهوم مسیریابی کلید رمزگذاری استفاده می کند که شامل اتصال یک کلید خصوصی به هر رابط شبکه و استفاده از آن برای اتصال کلیدهای عمومی است. کلیدهای عمومی برای برقراری ارتباط به روشی مشابه SSH رد و بدل می شوند. برای مذاکره با کلیدها و اتصال بدون اجرای دیمون جداگانه در فضای کاربر، مکانیسم Noise_IK از چارچوب پروتکل نویزشبیه به نگهداری authorized_keys در SSH. انتقال داده ها از طریق کپسوله سازی در بسته های UDP انجام می شود. از تغییر آدرس IP سرور VPN (رومینگ) بدون قطع اتصال و پیکربندی مجدد خودکار مشتری پشتیبانی می کند.

برای رمزگذاری استفاده می شود رمز جریان چاچا20 و الگوریتم احراز هویت پیام (MAC) Poly1305طراحی شده توسط دانیل برنشتاین (دانیل جی. برنشتاین) تانیا لانگ
(تانجا لانگ) و پیتر شوابه. ChaCha20 و Poly1305 به‌عنوان آنالوگ‌های سریع‌تر و ایمن‌تر AES-256-CTR و HMAC قرار می‌گیرند که اجرای نرم‌افزاری آن‌ها امکان دستیابی به زمان اجرای ثابت را بدون استفاده از پشتیبانی سخت‌افزاری خاص فراهم می‌کند. برای تولید یک کلید مخفی مشترک، از پروتکل Diffie-Hellman منحنی بیضوی در پیاده سازی استفاده می شود. منحنی 25519، همچنین توسط دانیل برنشتاین پیشنهاد شده است. الگوریتم مورد استفاده برای هش کردن است BLAKE2s (RFC7693).

در آزمایش کردن Performance WireGuard در مقایسه با OpenVPN (AES 3.9 بیتی با HMAC-SHA3.8-256) 2 برابر توان عملیاتی و 256 برابر پاسخگویی بالاتر را نشان داد. در مقایسه با IPsec (256 بیت ChaCha20 + Poly1305 و AES-256-GCM-128)، WireGuard بهبود عملکرد جزئی (13-18٪) و تاخیر کمتر (21-23٪) را نشان می دهد. آزمایش‌ها با استفاده از پیاده‌سازی سریع الگوریتم‌های رمزگذاری توسعه‌یافته توسط پروژه انجام شد - انتقال به API استاندارد کرنل ممکن است منجر به عملکرد بدتر شود.

VPN WireGuard در شاخه net-next پذیرفته شده است و برای گنجاندن در هسته Linux 5.6 برنامه ریزی شده است.

منبع: opennet.ru

اضافه کردن نظر