Skip to content

CONCEPT Cited by 1 source

Noise Protocol Framework

The Noise Protocol Framework is Trevor Perrin's specification framework for cryptographic handshake protocols built out of Diffie-Hellman, AEAD ciphers, and hash functions. Website: noiseprotocol.org.

Why it shows up in the wiki

Noise is the handshake layer underneath WireGuard. "WireGuard is based on Trevor Perrin's Noise Protocol Framework." (Source: sources/2024-03-12-flyio-jit-wireguard-peers)

For systems design purposes the load-bearing property Noise adds is identity-hiding during handshakes:

"Noise goes way out of its way to hide identities during handshakes." (Source: sources/2024-03-12-flyio-jit-wireguard-peers)

I.e. the initiator's static public key — the key that names who is connecting — is encrypted by the handshake, not shipped in plaintext. An observer on the wire sees only ephemeral keys and ciphertext; passive capture does not reveal the initiator's identity.

Consequences for infrastructure design

  • Wire-capture-based identification doesn't work. A middlebox that wants to know which of its peers is connecting cannot just parse the handshake initiation; it must run the handshake crypto itself.
  • The server needs its own private key to identify the initiator. Specifically, the first leg of the Noise handshake uses the server's static DH secret to unlock the encrypted initiator public key. At Fly.io's WireGuard gateways that private key is obtained via a Netlink query (privileged process only), and the Noise unwrap is ~200 lines of code. (Source: sources/2024-03-12-flyio-jit-wireguard-peers)
  • Per-handshake cost. Not free, but cheap enough that Fly.io runs it on every inbound connection as part of their JIT provisioning flow.

Seen in

Last updated · 200 distilled / 1,178 read