Το δέντρο πηγαίου κώδικα του FreeBSD έχει ενημερωθεί με μια νέα υλοποίηση VPN. WireGuard, βασισμένο στον κώδικα της ενότητας πυρήνα που προετοιμάστηκε από κοινού από τις ομάδες ανάπτυξης του πυρήνα του FreeBSD και WireGuard με τον Jason A. Donenfeld, συγγραφέα του VPN WireGuard, και ο John H. Baldwin, ένας διάσημος προγραμματιστής GDB και FreeBSD που υλοποίησε υποστήριξη SMP και NUMA στον πυρήνα του FreeBSD στις αρχές της δεκαετίας του 2000. Μετά την αποδοχή του προγράμματος οδήγησης στο FreeBSD (sys/dev/wg), η ανάπτυξη και η συντήρησή του θα πραγματοποιούνται πλέον στο αποθετήριο του FreeBSD.
Πριν γίνει αποδεκτός ο κώδικας, πραγματοποιήθηκε πλήρης ανασκόπηση των αλλαγών με την υποστήριξη του FreeBSD Foundation, κατά την οποία αναλύθηκε επίσης η αλληλεπίδραση του προγράμματος οδήγησης με τα υπόλοιπα υποσυστήματα του πυρήνα και η δυνατότητα χρήσης κρυπτογραφικών πρωτόγονων που παρέχονται από τον πυρήνα. αξιολογήθηκε.
Για τη χρήση των κρυπτογραφικών αλγορίθμων που απαιτούνται από το πρόγραμμα οδήγησης, επεκτάθηκε το API του κρυπτογραφικού υποσυστήματος πυρήνα του FreeBSD, στο οποίο προστέθηκε μια πλεξούδα που επιτρέπει τη χρήση αλγορίθμων που δεν υποστηρίζονται στο FreeBSD μέσω του τυπικού κρυπτο-API, χρησιμοποιώντας την υλοποίηση του απαραίτητους αλγόριθμους από τη βιβλιοθήκη του libsodium. Από τους αλγόριθμους που είναι ενσωματωμένοι στο πρόγραμμα οδήγησης, έχει απομείνει μόνο ο κώδικας για τον υπολογισμό των κατακερματισμών Blake2, καθώς η υλοποίηση αυτού του αλγορίθμου που παρέχεται στο FreeBSD συνδέεται με ένα σταθερό μέγεθος κατακερματισμού.
Επιπλέον, κατά τη διάρκεια της διαδικασίας αξιολόγησης, πραγματοποιήθηκαν βελτιστοποιήσεις κώδικα για τη βελτίωση της αποτελεσματικότητας της κατανομής φορτίου σε πολυπύρηνες CPU (εξασφαλίζοντας ομοιόμορφη εξισορρόπηση των εργασιών κρυπτογράφησης και αποκρυπτογράφησης πακέτων σε όλους τους πυρήνες της CPU). Ως αποτέλεσμα, το overhead επεξεργασίας πακέτων πλησίασε εκείνο της υλοποίησης του προγράμματος οδήγησης. LinuxΟ κώδικας παρέχει επίσης τη δυνατότητα χρήσης του προγράμματος οδήγησης ossl για την επιτάχυνση των λειτουργιών κρυπτογράφησης.
Σε αντίθεση με την προηγούμενη προσπάθεια ενσωμάτωσης WireGuard Στο FreeBSD, η νέα υλοποίηση χρησιμοποιεί το τυπικό βοηθητικό πρόγραμμα wg, αντί για μια τροποποιημένη έκδοση του ifconfig, η οποία κατέστησε δυνατή την ενοποίηση της διαμόρφωσης στο Linux και FreeBSD. Το βοηθητικό πρόγραμμα wg, όπως και το πρόγραμμα οδήγησης, περιλαμβάνεται στον πηγαίο κώδικα του FreeBSD, κάτι που κατέστη δυνατό με την αλλαγή της άδειας χρήσης κώδικα wg (ο κώδικας είναι πλέον διαθέσιμος με τις άδειες MIT και GPL). Μια προηγούμενη προσπάθεια συμπερίληψης WireGuard Μια προσπάθεια συγχώνευσης με το FreeBSD έγινε το 2020, αλλά κατέληξε σε διαμάχη, με τον κώδικα που είχε ήδη προστεθεί να αφαιρείται λόγω κακής ποιότητας, κακής διαχείρισης buffer, χρήσης stubs αντί για checks, ελλιπούς υλοποίησης πρωτοκόλλου και παραβιάσεων άδειας GPL.
Υπενθυμίζουμε ότι VPN WireGuard Υλοποιημένο με σύγχρονες μεθόδους κρυπτογράφησης, παρέχει πολύ υψηλή απόδοση, είναι εύχρηστο, δεν παρουσιάζει επιπλοκές και έχει αποδειχθεί αποτελεσματικό σε μια σειρά από μεγάλης κλίμακας αναπτύξεις που χειρίζονται μεγάλους όγκους κίνησης. Το έργο βρίσκεται σε ανάπτυξη από το 2015 και έχει υποβληθεί σε έλεγχο και επίσημη επαλήθευση των μεθόδων κρυπτογράφησης. WireGuard Χρησιμοποιείται η έννοια της δρομολόγησης βάσει κλειδιού, η οποία περιλαμβάνει τη σύνδεση ενός ιδιωτικού κλειδιού σε κάθε διεπαφή δικτύου και τη χρήση δημόσιων κλειδιών για τη σύνδεση.
Η ανταλλαγή δημόσιων κλειδιών για τη δημιουργία μιας σύνδεσης είναι παρόμοια με το SSH. Για τη διαπραγμάτευση κλειδιών και τη σύνδεση χωρίς την εκτέλεση ξεχωριστού δαίμονα στον χώρο χρήστη, χρησιμοποιείται ο μηχανισμός Noise_IK από το Noise Protocol Framework, παρόμοιος με τη διατήρηση των authorized_keys στο SSH. Η μεταφορά δεδομένων πραγματοποιείται μέσω ενθυλάκωσης σε πακέτα UDP. Υποστηρίζεται η αλλαγή. διευθύνσεις IP Διακομιστές VPN (περιαγωγής) χωρίς διακοπή σύνδεσης με αυτόματη αναδιαμόρφωση πελάτη.
Η κρυπτογράφηση χρησιμοποιεί τον κρυπτογράφηση ροής ChaCha20 και τον αλγόριθμο ελέγχου ταυτότητας μηνυμάτων Poly1305 (MAC) που αναπτύχθηκε από τους Daniel J. Bernstein, Tanja Lange και Peter Schwabe. Τα ChaCha20 και Poly1305 τοποθετούνται ως ταχύτερα και πιο ασφαλή ανάλογα των AES-256-CTR και HMAC, η εφαρμογή λογισμικού των οποίων επιτρέπει την επίτευξη σταθερού χρόνου εκτέλεσης χωρίς να απαιτείται ειδική υποστήριξη υλικού. Για τη δημιουργία ενός κοινόχρηστου μυστικού κλειδιού, χρησιμοποιείται το πρωτόκολλο Diffie-Hellman της ελλειπτικής καμπύλης στην υλοποίηση Curve25519, που προτάθηκε επίσης από τον Daniel Bernstein. Για κατακερματισμό, χρησιμοποιείται ο αλγόριθμος BLAKE2s (RFC7693).
Πηγή: opennet.ru
