VPN WireGuard در هسته لینوکس 5.6 موجود است

امروز لینوس شعبه net-next را با رابط های VPN به خودش منتقل کرد WireGuard. درباره این رویداد сообщили در لیست پستی WireGuard.

VPN WireGuard در هسته لینوکس 5.6 موجود است

جمع آوری کد برای هسته جدید لینوکس 5.6 در حال حاضر ادامه دارد. WireGuard یک VPN سریع نسل بعدی است که رمزنگاری مدرن را پیاده سازی می کند. در ابتدا به عنوان یک جایگزین ساده تر و راحت تر برای VPN های موجود توسعه داده شد. نویسنده، کارشناس امنیت اطلاعات کانادایی، Jason A. Donenfeld است. در آگوست 2018، WireGuard مورد ستایش قرار گرفت توسط لینوس توروالدز در همان زمان، کار برای گنجاندن VPN در هسته لینوکس آغاز شد. پروسه کمی بیشتر طول کشید.

لینوس در 2 آگوست 2018 نوشت: "من می بینم که جیسون یک درخواست کشش برای گنجاندن WireGuard در هسته ارائه کرده است." - آیا می توانم یک بار دیگر عشق خود را به این VPN اعلام کنم و به زودی ادغام شود؟ کد ممکن است کامل نباشد، اما من به آن نگاه کردم و در مقایسه با وحشت OpenVPN و IPSec، یک اثر هنری واقعی است.

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

سرانجام، در 9 دسامبر 2019، دیوید اس. میلر، مسئول زیرسیستم شبکه هسته لینوکس، پذیرفته شده به شعبه نت بعدی تکه ها با اجرای یک رابط VPN از پروژه WireGuard.

و امروز، 29 ژانویه 2020، تغییرات به لینوس برای درج در هسته رفت.

VPN WireGuard در هسته لینوکس 5.6 موجود است

مزایای ادعا شده WireGuard نسبت به سایر راه حل های VPN:

  • آسان برای استفاده.
  • از رمزنگاری مدرن استفاده می کند: چارچوب پروتکل نویز، Curve25519، ChaCha20، Poly1305، BLAKE2، SipHash24، HKDF و غیره.
  • کد فشرده، قابل خواندن، آسان تر برای بررسی آسیب پذیری ها.
  • عملکرد بالا
  • واضح و مفصل مشخصات.

تمام منطق اصلی WireGuard کمتر از 4000 خط کد را اشغال می کند، در حالی که OpenVPN و IPSec به صدها هزار خط نیاز دارند.

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

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

یافته ها تست های عملکرد از وب سایت رسمی:

پهنای باند (مگابیت بر ثانیه)
VPN WireGuard در هسته لینوکس 5.6 موجود است

پینگ (ms)
VPN WireGuard در هسته لینوکس 5.6 موجود است

پیکربندی تست:

  • Intel Core i7-3820QM و Intel Core i7-5200U
  • کارت های گیگابیتی Intel 82579LM و Intel I218LM
  • لینوکس 4.6.1
  • پیکربندی WireGuard: 256 بیتی ChaCha20 با Poly1305 برای MAC
  • اولین پیکربندی IPsec: 256 بیتی ChaCha20 با Poly1305 برای MAC
  • دومین پیکربندی IPsec: AES-256-GCM-128 (با AES-NI)
  • پیکربندی OpenVPN: مجموعه رمز معادل 256 بیتی AES با HMAC-SHA2-256، حالت UDP
  • عملکرد با استفاده از iperf3، میانگین نتیجه را در 30 دقیقه نشان می دهد.

در تئوری، هنگامی که WireGuard در پشته شبکه یکپارچه شود، باید حتی سریعتر کار کند. اما در واقعیت به دلیل انتقال به توابع رمزنگاری Crypto API که در هسته تعبیه شده است، لزوماً چنین نخواهد بود. شاید همه آنها هنوز به سطح عملکرد WireGuard بومی بهینه نشده باشند.

"از دیدگاه من، WireGuard به طور کلی برای کاربر ایده آل است. تمام تصمیمات سطح پایین در مشخصات گرفته می شود، بنابراین فرآیند آماده سازی یک زیرساخت VPN معمولی تنها چند دقیقه طول می کشد. به هم ریختن پیکربندی تقریبا غیرممکن است - писали در هابره در سال 2018. - فرآیند نصب به تفصیل شرح داده شده است در وب سایت رسمی، من می خواهم به طور جداگانه به موارد عالی اشاره کنم پشتیبانی از OpenWRT. این سهولت استفاده و فشرده بودن پایه کد با حذف توزیع کلیدها به دست آمد. هیچ سیستم گواهی پیچیده و این همه وحشت شرکتی وجود ندارد؛ کلیدهای رمزگذاری کوتاه بسیار شبیه کلیدهای SSH توزیع می شوند.

پروژه WireGuard از سال 2015 در حال توسعه است، ممیزی شده است و تایید رسمی. پشتیبانی WireGuard در NetworkManager و systemd یکپارچه شده است و وصله های هسته در توزیع های پایه Debian Unstable، Mageia، Alpine، Arch، Gentoo، OpenWrt، NixOS، Subgraph و ALT گنجانده شده است.

منبع: www.habr.com

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