Der Kernel des Betriebssystems DragonFly BSD hat etwa 100 Änderungen erhalten, die mit der Implementierung der Unterstützung für das VPN WireGuard verbunden sind. Der "wg"-Treiber mit Unterstützung für das WireGuard-Protokoll wurde von FreeBSD übernommen, während der Code der kryptografischen Funktionen, der Netzwerkschnittstelle und der ioctl API (zur Steuerung aus dem Benutzerraum) von OpenBSD entlehnt wurde. Änderungen an dem Tool ifconfig, die zur Konfiguration des VPN erforderlich sind, wurden ebenfalls von OpenBSD übertragen. Die Implementierung ist mit allen offiziellen WireGuard-Clients für Linux, Windows, macOS, *BSD, iOS und Android kompatibel. DragonFly BSD ist das fünfte offene Betriebssystem nach Linux, OpenBSD, NetBSD und FreeBSD mit integrierter Unterstützung für WireGuard.
WireGuard verwendet das Konzept der Schlüsselverschlüsselung für die Routing, das eine Zuordnung eines privaten Schlüssels zu jeder Netzwerkschnittstelle und die Verwendung zur Verknüpfung öffentlicher Schlüssel bedeutet. Zur Aushandlung von Schlüsseln und zur Verbindung, ohne einen separaten Daemon im Benutzerraum zu starten, wird der Noise_IK-Mechanismus aus dem Noise Protocol Framework eingesetzt, ähnlich wie das Verwalten von authorized_keys in SSH. Die Datenübertragung erfolgt durch Kapselung in UDP-Pakete. Es wird ein Wechsel der IP-Adresse des Servers (Roaming) ohne Unterbrechung der Verbindung mit automatischer Neukonfiguration des Clients unterstützt. VPN-server (Roaming) ohne Unterbrechung der Verbindung mit automatischer Neukonfiguration des Clients.
Für die Verschlüsselung wird der Stream-Chiffrieralgorithmus ChaCha20 und der Algorithmus für die Nachrichtenauthentifizierung (MAC) Poly1305 verwendet, die von Daniel J. Bernstein, Tanja Lange und Peter Schwabe entwickelt wurden. ChaCha20 und Poly1305 werden als schnellere und sicherere Alternativen zu AES-256-CTR und HMAC positioniert, deren Software-Implementierung eine konstante Ausführungszeit ohne spezielle Hardwareunterstützung ermöglicht. Für die Generierung des gemeinsamen geheimen Schlüssels wird das Diffie-Hellman-Protokoll auf elliptischen Kurven in der Implementierung Curve25519 verwendet, das ebenfalls von Daniel J. Bernstein vorgeschlagen wurde. Zum Hashen wird der Algorithmus BLAKE2s (RFC7693) verwendet.
Quelle: opennet.ru
