يتم قبول VPN WireGuard في فرع net-next ومن المقرر إدراجه في Linux 5.6 kernel

ديفيد ميلر (ديفيد اس ميلر) ، وهو المسؤول عن النظام الفرعي للشبكة في Linux kernel ، أخذت إلى فرع net-next بقع مع تنفيذ واجهة VPN من المشروع WireGuard. في أوائل العام المقبل ، ستشكل التغييرات المتراكمة في فرع net-next أساس إصدار Linux 5.6 kernel.

تم إجراء محاولات لترقية رمز WireGuard إلى النواة الرئيسية على مدار السنوات القليلة الماضية ، ولكنها لم تنجح نظرًا لربطها بالتطبيقات الأصلية لوظائف التشفير التي تم استخدامها لتحسين الأداء. في البداية ، كانت هذه الوظائف مقترح للنواة باعتبارها واجهة برمجة تطبيقات Zinc إضافية منخفضة المستوى ، والتي يمكن بمرور الوقت أن تحل محل Crypto API العادي.

بعد مفاوضات في مؤتمر Kernel Recipes ، مبتكرو WireGuard في سبتمبر قدم حل وسط نقل تصحيحاتهم لاستخدام Crypto API المتوفرة في جوهرها ، والتي يطالب بها مطورو WireGuard في مجال الأداء والأمان العام. تقرر الاستمرار في تطوير Zinc API ، ولكن كمشروع منفصل.

في نوفمبر ، مطوري النواة لنذهب من أجل حل وسط متبادل ووافق على نقل جزء من الكود من الزنك إلى النواة الرئيسية. في الواقع ، سيتم نقل بعض مكونات الزنك إلى النواة ، ليس كواجهة برمجة تطبيقات منفصلة ، ولكن كجزء من نظام Crypto API الفرعي. على سبيل المثال ، في Crypto API بالفعل متضمن تطبيقات سريعة لخوارزميات ChaCha20 و Poly1305 المعدة في WireGuard.

فيما يتعلق بالتسليم القادم لـ WireGuard في التكوين الرئيسي للنواة ، مؤسس المشروع объявил حول إعادة هيكلة المستودع. لتبسيط عملية التطوير ، سيتم استبدال مستودع "WireGuard.git" الأحادي ، والذي تم تصميمه ليكون منعزلاً ، بثلاثة مستودعات منفصلة ، مناسبة بشكل أفضل لتنظيم العمل مع الكود في النواة الرئيسية:

  • wireguard-linux.git - شجرة نواة كاملة مع تغييرات من مشروع Wireguard ، ستتم مراجعة التصحيحات منها لتضمينها في النواة ونقلها بانتظام إلى الشبكة / الفروع التالية.
  • Wireguard-tools.git هو مستودع للأدوات المساعدة والبرامج النصية التي تديرها مساحة المستخدمين مثل wg و wg-quick. يمكن استخدام المستودع لإنشاء حزم للتوزيعات.
  • wireguard-linux-Compatible.git - مستودع به متغير وحدة يتم شحنه بشكل منفصل عن النواة ويتضمن الطبقة المتوافقة لضمان التوافق مع النواة القديمة. سيتم تنفيذ التطوير الرئيسي في مستودع wireguard-linux.git ، ولكن طالما أن هناك فرصة وحاجة للمستخدمين ، فسيتم أيضًا دعم إصدار منفصل من التصحيحات في شكل عمل.

تذكر أن تطبيق VPN WireGuard يتم تنفيذه على أساس أساليب التشفير الحديثة ، ويوفر أداءً عاليًا للغاية ، وسهل الاستخدام ، وخالي من التعقيدات ، وقد أثبت نفسه في عدد من التطبيقات الكبيرة التي تعالج كميات كبيرة من حركة المرور. تم تطوير المشروع منذ عام 2015 ، واجتاز التدقيق و التحقق الرسمي طرق التشفير المستخدمة. تم دمج دعم WireGuard بالفعل في NetworkManager و systemd ، ويتم تضمين تصحيحات kernel في التوزيعات الأساسية ديبيان غير مستقر، Mageia ، Alpine ، Arch ، Gentoo ، OpenWrt ، NixOS ، رسم بياني ثانوي и ALT.

يستخدم WireGuard مفهوم توجيه مفتاح التشفير ، والذي يتضمن ربط مفتاح خاص بكل واجهة شبكة واستخدام المفاتيح العامة للربط. تبادل المفاتيح العامة لإنشاء اتصال مشابه لـ SSH. للتفاوض على المفاتيح والاتصال بدون تشغيل برنامج مساحة مستخدم منفصل ، آلية Noise_IK من إطار بروتوكول الضوضاء، على غرار الاحتفاظ بالمفاتيح المصرح بها في SSH. يتم نقل البيانات من خلال التغليف في حزم UDP. وهو يدعم تغيير عنوان IP لخادم VPN (التجوال) دون قطع الاتصال وإعادة تكوين العميل تلقائيًا.

للتشفير تستخدم تيار الشفرات ChaCha20 وخوارزمية مصادقة الرسائل (MAC) Poly1305، صممه دانيال بيرنشتاين (دانيال بيرنشتاين) ، تانيا لانج
(تانيا لانج) وبيتر شواب (بيتر شوابي). يتم وضع ChaCha20 و Poly1305 كنظيرتين أسرع وأكثر أمانًا من AES-256-CTR و HMAC ، حيث يتيح تطبيق البرنامج تحقيق وقت تنفيذ ثابت دون الحاجة إلى دعم خاص للأجهزة. لإنشاء مفتاح سري مشترك ، يتم استخدام بروتوكول Diffie-Hellman على المنحنيات الناقصية في التنفيذ Curve25519، اقترحه أيضًا دانيال بيرنشتاين. الخوارزمية المستخدمة للتجزئة بليك2s (RFC7693).

في اختبارات أظهر WireGuard إنتاجية أعلى بمقدار 3.9 مرة واستجابة أعلى بمقدار 3.8 مرة من OpenVPN (256 بت AES مع HMAC-SHA2-256). مقارنة بـ IPsec (256 بت ChaCha20 + Poly1305 و AES-256-GCM-128) ، يتمتع WireGuard بميزة أداء طفيفة (13-18٪) وتقليل زمن الوصول (21-23٪). تم إجراء الاختبارات باستخدام التطبيقات السريعة لخوارزميات التشفير التي طورها المشروع - قد يؤدي التبديل إلى Crypto API العادي للنواة إلى تدهور الأداء.

يتم قبول VPN WireGuard في فرع net-next ومن المقرر إدراجه في Linux 5.6 kernel

المصدر: opennet.ru

إضافة تعليق