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¶
- sources/2024-03-12-flyio-jit-wireguard-peers — canonical wiki instance; the identity-hiding property of Noise is the design constraint the JIT gateway has to engineer around.
Related¶
- systems/wireguard — the Noise-based protocol the wiki covers.
- concepts/identity-hiding-handshake — the specific property Noise provides.
- concepts/wireguard-handshake — the concrete wire format Noise produces in WireGuard.
- concepts/jit-peer-provisioning — the pattern that has to work around Noise.
- patterns/jit-provisioning-on-first-packet — the reusable pattern this concept interacts with.