Die Codebasis von FreeBSD hat eine neue Implementierung des VPN WireGuard erhalten.

In den Quellbaum der FreeBSD-Editionen wurden Änderungen mit einer neuen Implementierung des VPN WireGuard übernommen, die auf dem Code des Kernelmoduls basiert. Diese wurde gemeinsam von den Hauptentwicklerteams von FreeBSD und WireGuard unter der Mitwirkung von Jason A. Donenfeld, dem Autor des VPN WireGuard, sowie John H. Baldwin, einem bekannten Entwickler von GDB und FreeBSD, der in den frühen 2000er Jahren die Unterstützung von SMP und NUMA im FreeBSD-Kernel implementierte, vorbereitet. Nach der Übernahme des Treibers in FreeBSD (sys/dev/wg) wird seine Entwicklung und Wartung nun im FreeBSD-Repository fortgesetzt.

Vor der Annahme des Codes fand unter der Unterstützung der FreeBSD Foundation eine umfassende Überprüfung der Änderungen statt, bei der auch die Interaktion des Treibers mit anderen Teilsystemen des Kernels analysiert und die Möglichkeiten zur Nutzung der vom Kernel bereitgestellten kryptografischen Primitiven bewertet wurden.

Um die benötigten Treiber für kryptografische Algorithmen zu verwenden, wurde die API der Kryptosysteme des FreeBSD-Kernels erweitert. Eine Schnittstelle wurde hinzugefügt, die es ermöglicht, über die Standard-Krypto-API Algorithmen zu nutzen, die in FreeBSD nicht unterstützt werden, indem die erforderlichen Algorithmen aus der Bibliothek libsodium implementiert werden. Von den im Treiber integrierten Algorithmen blieb lediglich der Code zur Berechnung von Blake2-Hashes erhalten, da die in FreeBSD bereitgestellte Implementierung dieses Algorithmus auf eine feste Hash-Größe angewiesen ist.

Darüber hinaus wurde im Rahmen der Überprüfung eine Code-Optimierung durchgeführt, die die Effizienz der Lastverteilung auf Mehrkern-CPUs erhöht hat (eine gleichmäßige Balance der Aufgabenbindung für die Verschlüsselung und Entschlüsselung von Paketen auf die CPU-Kerne wurde sichergestellt). Infolgedessen wurden die Kosten bei der Verarbeitung von Paketen nahezu an die Implementierung des Treibers für Linux angeglichen. Im Code wurde auch die Möglichkeit integriert, den Treiber ossl zu verwenden, um die Verschlüsselungsoperationen zu beschleunigen.

Im Gegensatz zu dem vorherigen Versuch, WireGuard in FreeBSD zu integrieren, wird in der neuen Implementierung das Standard-Tool wg verwendet, anstelle einer modifizierten Version von ifconfig. Dies ermöglicht eine einheitliche Konfiguration sowohl unter Linux als auch unter FreeBSD. Das Tool wg ist zusammen mit dem Treiber in den Quelltexten von FreeBSD enthalten, was durch die Änderung der Lizenz für den wg-Code (der jetzt unter den MIT- und GPL-Lizenzen verfügbar ist) ermöglicht wurde. Der frühere Versuch, WireGuard in FreeBSD zu integrieren, wurde 2020 unternommen, endete jedoch in einem Skandal, bei dem der bereits hinzugefügte Code aufgrund von mangelhafter Qualität, Nachlässigkeit im Umgang mit Buffern, der Verwendung von Platzhaltern anstelle von Überprüfungen, unvollständiger Implementierung des Protokolls und Verletzung der GPL-Lizenz entfernt wurde.

Wir erinnern daran, dass VPN WireGuard basiert auf modernen Verschlüsselungsmethoden, bietet eine sehr hohe Leistung, ist benutzerfreundlich, unkompliziert und hat sich in mehreren großen Implementierungen, die große Datenmengen verarbeiten, bewährt. Das Projekt wird seit 2015 weiterentwickelt und hat eine Prüfung sowie eine formale Verifizierung der verwendeten Verschlüsselungsmethoden durchlaufen. Bei WireGuard kommt das Konzept der Schlüssel-basierten Routing an, welches jeden Netzwerkinterface mit einem privaten Schlüssel verknüpft und zur Verbindung der öffentlichen Schlüssel verwendet.

Der Austausch von öffentlichen Schlüsseln zur Verbindungsherstellung erfolgt analog zu SSH. Um die Schlüssel zu vereinbaren und eine Verbindung ohne den Start eines separaten Daemons im Benutzerspace herzustellen, wird der Noise_IK-Mechanismus aus dem Noise Protocol Framework verwendet, der der Handhabung von authorized_keys in SSH ähnelt. Die Datenübertragung erfolgt durch Kapselung in UDP-Paketen. Es wird ein Wechsel unterstützt. IP-Adressen VPN-Server (Roaming) mit unterbrechungsfreier Verbindung und automatischer Neukonfiguration des Clients.

Zur Verschlüsselung kommen der Stream-Cipher ChaCha20 und der Nachrichten-Authentifizierungsalgorithmus (MAC) Poly1305 zum Einsatz. Diese wurden von Daniel J. Bernstein, Tanja Lange und Peter Schwabe entwickelt. ChaCha20 und Poly1305 bieten eine schnellere und sicherere Alternative zu AES-256-CTR und HMAC, wobei die Software-Implementierung eine konstante Ausführungszeit ohne spezielle Hardwareunterstützung ermöglicht. Zur Generierung des gemeinsamen geheimen Schlüssels verwendet man das elliptische Diffie-Hellman-Protokoll in der Implementierung Curve25519, das ebenfalls von Daniel Bernstein vorgeschlagen wurde. Für das Hashing wird der Algorithmus BLAKE2s (RFC7693) eingesetzt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster