Μια νέα εφαρμογή VPN, το WireGuard, προστέθηκε στη βάση κώδικα του FreeBSD.

Το δέντρο πηγής του 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). Ως αποτέλεσμα, τα γενικά έξοδα κατά την επεξεργασία πακέτων ήταν κοντά σε αυτά της υλοποίησης του προγράμματος οδήγησης Linux. Ο κώδικας παρέχει επίσης τη δυνατότητα χρήσης του προγράμματος οδήγησης ossl για την επιτάχυνση των λειτουργιών κρυπτογράφησης.

Σε αντίθεση με την προηγούμενη προσπάθεια ενσωμάτωσης του WireGuard στο FreeBSD, η νέα υλοποίηση χρησιμοποιεί το τυπικό βοηθητικό πρόγραμμα wg, αντί για μια τροποποιημένη έκδοση του ifconfig, που καθιστά δυνατή την ενοποίηση της διαμόρφωσης σε Linux και FreeBSD. Το βοηθητικό πρόγραμμα wg, καθώς και το πρόγραμμα οδήγησης, περιλαμβάνονται στον πηγαίο κώδικα του FreeBSD, κάτι που κατέστη δυνατό με την αλλαγή της άδειας χρήσης για τον κώδικα wg (ο κώδικας είναι πλέον διαθέσιμος με τις άδειες MIT και GPL). Η τελευταία προσπάθεια συμπερίληψης του WireGuard στο FreeBSD έγινε το 2020, αλλά κατέληξε σε σκάνδαλο, με αποτέλεσμα να αφαιρεθεί ο ήδη προστιθέμενος κώδικας λόγω χαμηλής ποιότητας, απρόσεκτης εργασίας με buffers, χρήσης stubs αντί επιταγών, ατελούς υλοποίησης του πρωτοκόλλου και παραβίαση της άδειας 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

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