Noise Protocol Framework

P2P Protocol

Cryptographic meta-framework for constructing secure two-party handshake and channel protocols based on Diffie-Hellman key exchange. Provides a pattern language for composing authenticated key establishment (AKE) protocols supporting mutual/optional authentication, identity hiding, forward secrecy, and zero round-trip encryption. Not a full protocol itself — a framework other protocols implement at the session/crypto layer. Widely adopted: WhatsApp, WireGuard, Lightning Network, I2P.

Community

Details

License Public domain specification; open source implementations in C, C#, Go, Haskell, Java, JavaScript, Python, Rust
Dev Status 🔨 WIP
Dev Status Detail Stable / Mature — specification at revision 34 (2018); post-quantum extensions in development
Owner Trevor Perrin (independent cryptographer)
Country USA
Start Year 2014
Stack Language-agnostic specification; implementations in C, Rust, Go, JavaScript, Python, Haskell, Java
Funding None (independent research)
Last Investigated Jan 15, 2026

Affordances

Contextual disclosure

P2P Protocol Attributes

Origins Reaction to complexity and error-proneness of hand-crafted AKE protocols; inspired by Signal Protocol and NaCl Cryptobox philosophy of simple, composable cryptographic primitives
Database N/A
Query Language N/A
Data Formats Binary (handshake message sequences); no defined application data format
Collaborative Live Editing No
Rich Text Editing No
Mobile Support Yes (via adopters: WireGuard mobile, WhatsApp mobile)
Web Support Yes (via adopters: WhatsApp web, Lightning web)
Native Apps Yes (via adopters)
Terms Public domain
Funds N/A
Based On Signal Protocol (design philosophy); NaCl Cryptobox; Diffie-Hellman key exchange
P2P Architecture Two-party session establishment — provides authenticated key establishment for any P2P or client-server architecture; does not define a network topology
Overlay Network N/A — session/handshake layer only
Content Addressing No
Local-First N/A — session-layer primitive
E2EE Yes — mutual authentication, identity hiding, forward secrecy, zero-RTT encryption
CRDTs Lib N/A
Byzantine Fault Tolerance N/A — no network-layer BFT; session security only
Signature Yes — ECDH-based static and ephemeral key exchange; ed25519 / X25519
Permissions Key-based (static public key as capability; PSK extension available for pre-shared key layer)
Semantic Web Compatibility No
Smart Contract No
Protocol Stack Position Session/crypto layer — operates below application protocols and above transport; provides authenticated key establishment for any P2P session
Asset / Value Embedding None — cryptographic session framework only; no value or asset transmission
Protocol Maturity / Standardization Mature / De Facto Standard — specification stable since revision 34 (2018); adopted by WhatsApp, WireGuard, Lightning Network, I2P; academic security proofs published; not submitted to formal standards body