0Pricing
Cryptology Academy · Lesson

The Noise Protocol Framework

Explore Noise — a framework for building bespoke cryptographic handshakes used in WireGuard, WhatsApp, and Lightning.

What Is the Noise Framework

The Noise Protocol Framework (Trevor Perrin, 2016; current revision 2018) is a framework for building secure channel protocols using a small set of primitives and a pattern language. Instead of specifying a single protocol, Noise defines a vocabulary of handshake patterns that describe the sequence of DH operations and their order. Any valid Noise pattern can be instantiated with concrete DH (Curve25519 or Curve448), cipher (AESGCM or ChaChaPoly), and hash (SHA-256, SHA-512, BLAKE2) functions. Noise is used in WireGuard, WhatsApp, Signal (as the basis of X3DH), Lightning Network, and I2P.

Noise Roles and Keys

Every Noise handshake has an initiator (I) and a responder (R). Each party may have two types of keys: static (long-term identity key, denoted s/S) and ephemeral (generated fresh per session, denoted e/E). Lowercase letters denote the local party's key; uppercase denotes the remote party's public key. A Noise pattern specifies which keys are sent (as plaintext or encrypted) and which DH operations are performed. For example, "e" means "send my ephemeral public key"; "es" means "perform DH(my_ephemeral, remote_static)". Each DH output is mixed into the handshake's running hash state.

All lessons in this course

  1. The Needham-Schroeder Protocol and Attacks
  2. Station-to-Station Protocol (STS)
  3. The Noise Protocol Framework
  4. Principles of Secure Protocol Design
← Back to Cryptology Academy