WireGuard: ChaCha20 and Curve25519 VPN
Explore WireGuard's minimal cryptographic design using ChaCha20-Poly1305, Curve25519, and BLAKE2.
WireGuard Design Philosophy
WireGuard was designed with radical simplicity as a primary goal. Its codebase is approximately 4,000 lines, compared to 70,000 for OpenVPN and over 400,000 for strongSwan IPsec. Fewer lines mean fewer potential vulnerabilities and an audit surface small enough for a single engineer to review thoroughly. This simplicity is a deliberate security choice, not a feature limitation.
Fixed Cryptographic Primitives
Unlike OpenVPN and IPsec, WireGuard does not negotiate cryptographic algorithms. Every WireGuard connection uses the same fixed set of primitives: Curve25519 for ECDH, ChaCha20-Poly1305 for authenticated encryption, BLAKE2s for hashing, and SipHash-2-4 for hashtable security. This eliminates cipher negotiation, which removes an entire class of downgrade attacks.
All lessons in this course
- IPsec: IKEv2, ESP, and AH Protocols
- WireGuard: ChaCha20 and Curve25519 VPN
- OpenVPN: TLS-Based VPN Architecture
- Comparing VPN Protocols: Security and Performance