[noise] NLS?

Trevor Perrin trevp at trevp.net
Sun Mar 4 22:48:57 PST 2018


Hi all,

I've created a draft spec for an "NLS" framework that adds a
negotiation language ("NoiseLingo") on top of NoiseSocket (hence
"NoiseLingoSocket").  This is based on ideas from [1].

This needs a tweaked NoiseSocket draft, with modifications from [2]
(renaming a couple things, and changing the prologue calculation to
differentiate the "retry" case, and to add an application prologue):

https://github.com/noiseprotocol/nls_spec/blob/master/output/nls.pdf
https://github.com/noiseprotocol/noisesocket_spec/blob/master/output/noisesocket.pdf


The NLS draft also defines some "basic profiles", which are intended
as high-level protocols usable by application developers:
  - NoiseLink  (1-RTT handshake)
  - NoiseZeroLink  (0-RTT handshake)
  - NoiseShortLink  (for low-end embedded)
  - NoiseAnonBox  (public-key encryption)
  - NoseAuthBox  (public-key encryption + sender auth)

The idea is that NoiseLingo and NLS give you a menu of negotiation
fields that are easy to choose from to create profiles.  Also, these
profiles will have a lot of similarity and thus potential for interop
(e.g. a NoiseZeroLink client can talk to a NoiseLink server, by
falling back to 1-RTT).  And if you start with something simple like
NoiseLink, it's easy to add new NLS fields and negotiation options as
you discover new needs.

Anyways, let me know what you think!


Trevor

[1] https://moderncrypto.org/mail-archive/noise/2018/001473.html
[2] https://moderncrypto.org/mail-archive/noise/2017/001274.html


More information about the Noise mailing list