Hubbry Logo
logo
WireGuard
Community hub

WireGuard

logo
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Contribute something to knowledge base
Hub AI

WireGuard AI simulator

(@WireGuard_simulator)

WireGuard

WireGuard is a communication protocol and free and open-source software that implements encrypted virtual private networks (VPNs). It aims to be lighter and better performing than IPsec and OpenVPN, two common tunneling protocols. The WireGuard protocol passes traffic over UDP.

In March 2020, the Linux version of the software reached a stable production release and was incorporated into the Linux 5.6 kernel, and backported to earlier Linux kernels in some Linux distributions. The Linux kernel components are licensed under the GNU General Public License (GPL) version 2; other implementations are under GPLv2 or other free/open-source licenses.

The WireGuard protocol is a variant of the Noise Protocol Framework IK handshake pattern, as illustrated by the choice of Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s for the value of the Construction string listed on p10 of the Whitepaper.

The key exchange, or handshake, combines long-term and ephemeral Diffie-Hellman values using Curve25519. Each pair generates a set of public and private key pairs using Curve 25519, the public keys are exchanged, with each pair then assigned an IP address (generally RFC 1918) to utilize with the WireGuard tunnel. Once the keys have been confirmed by both peers, the Noise Protocol is used to generate a shared ChaCha20 session key for symmetric encryption authenticated with Poly1305. SipHash24 is used for hashtable keys while BLAKE2s cryptographic hash functions, a faster and more compact version of SHA-3, are incorporated. Key derivation functions are handled using HKDF and Base64-encoded private keys, public keys and preshared keys.

WireGuard’s proof starts by modeling its two-message Noise-based handshake (plus optional PSK) in CryptoVerif’s calculus of cryptographic games, abstracting ChaCha20-Poly1305, Curve25519, HKDF, the hash chain, and related primitives under standard IND-CPA/INT-CTXT and random-oracle assumptions. From that model, CryptoVerif’s automated game hops show, across unlimited parallel sessions, that the protocol guarantees mutual authentication, IND-CCA session-key secrecy, forward secrecy and post-compromise security even if long-term keys later leak and state is wiped. In May 2019, researchers from INRIA published a machine-checked proof of the WireGuard protocol, produced using the CryptoVerif proof assistant.

WireGuard supports pre-shared symmetric key mode, which provides an additional layer of symmetric encryption to mitigate future advances in quantum computing. This addresses the risk that traffic may be stored until quantum computers are capable of breaking Curve25519, at which point traffic could be decrypted. Pre-shared keys are "usually troublesome from a key management perspective and might be more likely stolen", but in the shorter term, if the symmetric key is compromised, the Curve25519 keys still provide more than sufficient protection.

WireGuard uses only UDP, due to the potential disadvantages of TCP-over-TCP. Tunneling TCP over a TCP-based connection is known as "TCP-over-TCP", and doing so can induce a dramatic loss in transmission performance due to the TCP meltdown problem.

Its default server port is UDP 51820.

See all
User Avatar
No comments yet.