Το VPN WireGuard έχει γίνει αποδεκτό στον κλάδο net-next και πρόκειται να συμπεριληφθεί στον πυρήνα Linux 5.6

Ντέιβιντ Μίλερ (David S. Miller), υπεύθυνος για το υποσύστημα δικτύωσης του πυρήνα Linux, δέχτηκε το στον επόμενο κλάδο μπαλώματα με την υλοποίηση της διεπαφής VPN από το έργο WireGuard. Στις αρχές του επόμενου έτους, οι αλλαγές που συσσωρεύονται στον κλάδο net-next θα αποτελέσουν τη βάση για την κυκλοφορία του πυρήνα Linux 5.6.

Προσπάθειες ώθησης του κώδικα WireGuard στον κύριο πυρήνα έχουν γίνει τα τελευταία χρόνια, αλλά παρέμειναν ανεπιτυχείς λόγω της σύνδεσης με ιδιόκτητες υλοποιήσεις κρυπτογραφικών συναρτήσεων που χρησιμοποιήθηκαν για τη βελτίωση της απόδοσης. Αρχικά, αυτές οι λειτουργίες ήταν προτείνεται για τον πυρήνα ως πρόσθετο API ψευδαργύρου χαμηλού επιπέδου, το οποίο θα μπορούσε τελικά να αντικαταστήσει το τυπικό Crypto API.

Μετά από συζητήσεις στο συνέδριο Kernel Recipes, οι δημιουργοί του WireGuard τον Σεπτέμβριο πήρε μια συμβιβαστική απόφαση μεταφέρετε τις ενημερώσεις κώδικα για να χρησιμοποιήσετε το Crypto API που είναι διαθέσιμο στον πυρήνα, για το οποίο οι προγραμματιστές του WireGuard έχουν παράπονα στον τομέα της απόδοσης και της γενικής ασφάλειας. Αποφασίστηκε να συνεχιστεί η ανάπτυξη του Zinc 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 -ompat.git - ένα αποθετήριο με μια παραλλαγή της ενότητας, που παρέχεται χωριστά από τον πυρήνα και περιλαμβάνει το επίπεδο compat.h για να διασφαλιστεί η συμβατότητα με παλαιότερους πυρήνες. Η κύρια ανάπτυξη θα πραγματοποιηθεί στο αποθετήριο wireguard-linux.git, αλλά εφόσον υπάρχει ευκαιρία και ανάγκη μεταξύ των χρηστών, θα υποστηρίζεται και μια ξεχωριστή έκδοση των ενημερώσεων κώδικα σε μορφή εργασίας.

Να σας υπενθυμίσουμε ότι το VPN WireGuard υλοποιείται βάσει σύγχρονων μεθόδων κρυπτογράφησης, παρέχει πολύ υψηλές επιδόσεις, είναι εύκολο στη χρήση, χωρίς επιπλοκές και έχει αποδειχθεί σε μια σειρά από μεγάλες αναπτύξεις που επεξεργάζονται μεγάλους όγκους κίνησης. Το έργο αναπτύσσεται από το 2015, έχει ελεγχθεί και επίσημη επαλήθευση χρησιμοποιούμενες μεθόδους κρυπτογράφησης. Η υποστήριξη WireGuard είναι ήδη ενσωματωμένη στο NetworkManager και στο systemd και οι ενημερώσεις κώδικα του πυρήνα περιλαμβάνονται στις βασικές διανομές Debian ασταθές, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph и ALT.

Το WireGuard χρησιμοποιεί την έννοια της δρομολόγησης κλειδιού κρυπτογράφησης, η οποία περιλαμβάνει την προσάρτηση ενός ιδιωτικού κλειδιού σε κάθε διεπαφή δικτύου και τη χρήση του για τη δέσμευση των δημόσιων κλειδιών. Τα δημόσια κλειδιά ανταλλάσσονται για να δημιουργηθεί μια σύνδεση με παρόμοιο τρόπο με το SSH. Για να διαπραγματευτείτε κλειδιά και να συνδεθείτε χωρίς να εκτελείτε ξεχωριστό δαίμονα στο χώρο χρήστη, ο μηχανισμός Noise_IK από Πλαίσιο πρωτοκόλλου θορύβουπαρόμοια με τη διατήρηση των authorized_keys στο SSH. Η μετάδοση δεδομένων πραγματοποιείται μέσω ενθυλάκωσης σε πακέτα UDP. Υποστηρίζει την αλλαγή της διεύθυνσης IP του διακομιστή VPN (περιαγωγή) χωρίς αποσύνδεση της σύνδεσης και αυτόματη επαναδιαμόρφωση του πελάτη.

Για κρυπτογράφηση χρησιμοποιούνται κρυπτογράφηση ροής ChaCha20 και αλγόριθμος ελέγχου ταυτότητας μηνυμάτων (MAC) Poly1305, σχεδιασμένο από τον Daniel Bernstein (Ντάνιελ Τ. Μπερνστάιν), Τάνια Λανγκ
(Tanja Lange) και Peter Schwabe. Τα ChaCha20 και Poly1305 τοποθετούνται ως ταχύτερα και ασφαλέστερα ανάλογα των AES-256-CTR και HMAC, η εφαρμογή λογισμικού των οποίων επιτρέπει την επίτευξη σταθερού χρόνου εκτέλεσης χωρίς τη χρήση ειδικής υποστήριξης υλικού. Για τη δημιουργία ενός κοινόχρηστου μυστικού κλειδιού, το πρωτόκολλο Diffie-Hellman της ελλειπτικής καμπύλης χρησιμοποιείται στην υλοποίηση Curve25519, που προτάθηκε επίσης από τον Daniel Bernstein. Ο αλγόριθμος που χρησιμοποιείται για τον κατακερματισμό είναι BLAKE2s (RFC7693).

Στο δοκιμή Το Performance WireGuard επέδειξε 3.9 φορές υψηλότερη απόδοση και 3.8 φορές υψηλότερη απόκριση σε σύγκριση με το OpenVPN (256-bit AES με HMAC-SHA2-256). Σε σύγκριση με το IPsec (256-bit ChaCha20+Poly1305 και AES-256-GCM-128), το WireGuard παρουσιάζει ελαφρά βελτίωση απόδοσης (13-18%) και χαμηλότερη καθυστέρηση (21-23%). Οι δοκιμές πραγματοποιήθηκαν χρησιμοποιώντας γρήγορες υλοποιήσεις αλγορίθμων κρυπτογράφησης που αναπτύχθηκαν από το έργο - η μεταφορά στο τυπικό Crypto API του πυρήνα μπορεί να οδηγήσει σε χειρότερη απόδοση.

Το VPN WireGuard έχει γίνει αποδεκτό στον κλάδο net-next και πρόκειται να συμπεριληφθεί στον πυρήνα Linux 5.6

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο