اجرای جدید VPN WireGuard به پایگاه کد FreeBSD اضافه شد

درخت منبع FreeBSD با پیاده سازی جدیدی از VPN WireGuard، بر اساس کد ماژول هسته که به طور مشترک توسط تیم های اصلی توسعه FreeBSD و WireGuard با مشارکت Jason A. Donenfeld، نویسنده VPN WireGuard، و John H. Baldwin تولید شده است، به روز شده است. یک توسعه دهنده معروف GDB و FreeBSD که در اوایل دهه 2000 پشتیبانی از SMP و NUMA را در هسته FreeBSD پیاده سازی کرد. پس از پذیرش درایور در FreeBSD (sys/dev/wg)، توسعه و نگهداری آن از این پس در مخزن FreeBSD انجام خواهد شد.

قبل از پذیرش کد، یک بررسی کامل از تغییرات با پشتیبانی بنیاد FreeBSD انجام شد که طی آن تعامل درایور با بقیه زیرسیستم‌های هسته نیز مورد تجزیه و تحلیل قرار گرفت و امکان استفاده از رمزنگاری‌های اولیه ارائه شده توسط کرنل وجود داشت. ارزیابی شده.

برای استفاده از الگوریتم‌های رمزنگاری مورد نیاز درایور، API زیرسیستم کریپتو کرنل FreeBSD گسترش یافت، که به آن یک مهار اضافه شد که امکان استفاده از الگوریتم‌هایی را که در FreeBSD پشتیبانی نمی‌شوند از طریق API استاندارد رمزنگاری، با استفاده از پیاده‌سازی الگوریتم های لازم از کتابخانه لیب سدیم از الگوریتم های تعبیه شده در درایور، تنها کد محاسبه هش Blake2 باقی مانده است، زیرا اجرای این الگوریتم ارائه شده در FreeBSD به یک اندازه هش ثابت گره خورده است.

علاوه بر این، در طول فرآیند بررسی، بهینه‌سازی کد انجام شد که باعث افزایش کارایی توزیع بار در CPUهای چند هسته‌ای شد (تعادل یکنواخت انتساب وظایف رمزگذاری و رمزگشایی بسته به هسته‌های CPU تضمین شد). در نتیجه، سربار هنگام پردازش بسته‌ها نزدیک به اجرای درایور لینوکس بود. این کد همچنین امکان استفاده از درایور ossl را برای سرعت بخشیدن به عملیات رمزگذاری فراهم می کند.

برخلاف تلاش قبلی برای ادغام WireGuard در FreeBSD، پیاده سازی جدید از ابزار استاندارد wg به جای نسخه اصلاح شده ifconfig استفاده می کند که امکان یکسان سازی پیکربندی را در لینوکس و FreeBSD فراهم می کند. ابزار wg و همچنین درایور در کد منبع FreeBSD گنجانده شده است که با تغییر مجوز کد wg امکان پذیر شد (کد اکنون تحت مجوز MIT و GPL در دسترس است). آخرین تلاش برای گنجاندن WireGuard در FreeBSD در سال 2020 انجام شد، اما با رسوایی به پایان رسید، در نتیجه کد اضافه شده قبلی به دلیل کیفیت پایین، کار بی دقت با بافرها، استفاده از خرد به جای چک، اجرای ناقص حذف شد. پروتکل و نقض مجوز GPL.

به یاد بیاورید که VPN WireGuard بر اساس روش های رمزگذاری مدرن پیاده سازی شده است، عملکرد بسیار بالایی را ارائه می دهد، استفاده از آن آسان است، عاری از پیچیدگی است و خود را در تعدادی از پیاده سازی های بزرگ که حجم زیادی از ترافیک را پردازش می کنند، ثابت کرده است. این پروژه از سال 2015 در حال توسعه است، ممیزی و تأیید رسمی روش های رمزگذاری مورد استفاده را پشت سر گذاشته است. WireGuard از مفهوم مسیریابی کلید رمزگذاری استفاده می کند که شامل اتصال یک کلید خصوصی به هر رابط شبکه و استفاده از کلیدهای عمومی برای اتصال است.

مبادله کلیدهای عمومی برای برقراری ارتباط مشابه SSH است. برای مذاکره با کلیدها و اتصال بدون اجرای شبح فضای کاربر جداگانه، مکانیسم Noise_IK از Noise Protocol Framework استفاده می‌شود، شبیه به حفظ autorized_keys در SSH. انتقال داده ها از طریق کپسوله سازی در بسته های UDP انجام می شود. از تغییر آدرس IP سرور VPN (رومینگ) بدون قطع اتصال با پیکربندی مجدد مشتری خودکار پشتیبانی می کند.

رمزگذاری از رمزگذاری جریان ChaCha20 و الگوریتم تأیید اعتبار پیام Poly1305 (MAC) استفاده می‌کند که توسط Daniel J. Bernstein، Tanja Lange و Peter Schwabe توسعه یافته است. ChaCha20 و Poly1305 به‌عنوان آنالوگ‌های سریع‌تر و ایمن‌تر AES-256-CTR و HMAC قرار می‌گیرند که اجرای نرم‌افزاری آن‌ها امکان دستیابی به زمان اجرای ثابت را بدون نیاز به پشتیبانی سخت‌افزاری خاص می‌دهد. برای تولید یک کلید مخفی مشترک، از پروتکل منحنی بیضوی Diffie-Hellman در پیاده سازی Curve25519، که توسط دانیل برنشتاین نیز پیشنهاد شده است، استفاده شده است. برای هش از الگوریتم BLAKE2s (RFC7693) استفاده می شود.

منبع: opennet.ru

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