Article

WireGuard vs. AmneziaWG: What's the Difference Between the Protocols

HamikVPN, like a number of other services, uses the AmneziaWG protocol — but what does that actually mean? A different encryption algorithm, or something else entirely? Here's a technical look at exactly what changes compared to plain WireGuard, and what stays the same.

WireGuard: a compact protocol with a recognizable signature

WireGuard became popular precisely because of its simplicity: a small codebase, modern cryptography with no choice between dozens of algorithms, and high speed compared to older protocols. The flip side of that simplicity is predictability at the level of individual packets. According to the AmneziaWG technical documentation, standard WireGuard's handshake-initiation packet is always exactly 148 bytes long, its response packet is 92 bytes, and its cookie packet is 64 bytes. Such fixed, repeating sizes and headers form a stable "fingerprint" that traffic-analysis equipment along the connection path can use to recognize the fact that WireGuard is being used at all, even without being able to read the encrypted data itself.

This isn't a theoretical weakness in the encryption — the content of the traffic stays protected. It's about metadata: which protocol you're using is visible from the shape of the packets, even when their content is unreadable. And networks that apply traffic analysis and shaping — from individual mobile carriers to corporate and hotel networks — sometimes handle recognized VPN traffic differently from ordinary traffic, which can affect connection stability.

What AmneziaWG changes: transport-layer obfuscation

AmneziaWG is a fork of the WireGuard-Go implementation that removes exactly this predictability, without touching the cryptographic core. According to the project's official documentation, a few groups of parameters are responsible for this:

  • Jc, Jmin, Jmax — before the main handshake, Jc "junk" packets of a random size between Jmin and Jmax bytes are sent. The recipient doesn't parse or validate them — to an outside observer, they look like neutral UDP noise that blurs the characteristic timing and size of a session's start.
  • S1–S2 — pseudo-random prefixes (0–32/64 bytes) added to each packet type, making their length variable instead of fixed.
  • H1–H4 — WireGuard's predictable header identifiers are replaced with random values from a configured range, so different clients end up with different headers — meaning no single universal detection rule can be written to cover them all.

An important detail: all of these parameters are configured on the server side and must match on the client side, or the tunnel simply won't establish — a regular WireGuard client won't understand such a server, and vice versa.

What stays the same: the cryptographic core

Obfuscation works only at the transport layer — the shape and timing of packets. It doesn't replace or weaken the cryptography itself. As the official WireGuard protocol documentation states, key exchange is built on the Curve25519 elliptic curve, data encryption runs on ChaCha20 paired with the Poly1305 authentication code, and hashing uses BLAKE2s. AmneziaWG inherits this exact set of algorithms unchanged: its developers deliberately left the cryptographic code — already reviewed by independent researchers — untouched, limiting their changes to headers and service packets. From the standpoint of protecting traffic content, there's no difference between WireGuard and AmneziaWG.

What this means in practice

For everyday use, the difference boils down to two things. First, the app and the server need to use the same set of obfuscation parameters — you don't need to configure this by hand as long as both ends use a compatible client, such as the AmneziaVPN app or HamikVPN. Second, the first phase of setting up the connection takes slightly longer because of the junk packets, but that doesn't affect the throughput of an already-established tunnel. If you're comparing services by protocol, it's worth looking not at marketing labels but at the cryptography actually stated in the documentation — the general criteria are covered in our article on how to choose a privacy service.

Want to try AmneziaWG in practice?
3 days free, no card required
Try it free

Frequently asked questions

Is AmneziaWG a separate encryption protocol, or just a WireGuard configuration?
Technically it's a fork of the WireGuard-Go implementation: the cryptographic core — key exchange on Curve25519, ChaCha20-Poly1305 encryption, BLAKE2s hashing — is fully preserved, unchanged. What changes is the header format and packet structure at the transport level: how the tunnel looks from the outside, not how it protects data on the inside.
Does AmneziaWG's obfuscation slow down the connection?
Yes, but only marginally: junk packets add a small amount of overhead traffic before the connection is established, not throughout the entire session. In practice, the difference in throughput after the tunnel is set up usually isn't noticeable — the more noticeable part can be a slightly longer initial connection phase.
Can a regular WireGuard client connect to an AmneziaWG server?
No: if the Jc, Jmin, Jmax, S1–S2 and H1–H4 parameters on the server are set to non-zero values, a regular WireGuard client won't understand the packet format and the connection won't establish. You need a client that supports the same parameters — for example, the AmneziaVPN app or HamikVPN with the matching node settings.
Does having more parameters mean AmneziaWG has a larger attack surface?
The extra parameters only affect the transport layer — how headers and service packets are formed, not the cryptographic primitives. The actual data encryption is still the same WireGuard code that's been through independent cryptographic review, not something rewritten from scratch.