Imagine controlling both ends of a connection and knowing exactly which cryptographic features you need. Noise replaces TLS’s branching handshake with a fixed message sequence chosen during protocol design, reducing runtime complexity while giving up flexibility. section 9.5 section 9.6
Designing a Noise-based protocol means deciding:
- Which cryptographic algorithms the instantiation uses. section 9.5
- Which side, if either, is authenticated and whether a pre-shared key is included. section 9.5
- Which handshake pattern determines the exact messages and operations, with no runtime attempt to choose another pattern. section 9.5.1
Reading the NN pattern
The NN pattern provides a deliberately simple example, but authenticates neither participant. The client sends an ephemeral public key with `-> e`; the server sends its ephemeral public key with `<- e, ee` and both sides perform a Diffie-Hellman exchange. The `s` token denotes a static, long-term key, while `es` denotes a Diffie-Hellman exchange between the client’s ephemeral key and the server’s static key. Each message pattern can also carry a payload. section 9.5.1
The framework’s strength is predictability: once an instantiation is selected, the connection follows a rigid linear protocol. Its warning label is equally important: changing that protocol later can complicate backward compatibility with devices that cannot be updated. section 9.5 section 9.6
