[noise] NLS?

Gerardo Di Giacomo gedigi at live.com
Wed Mar 7 20:50:32 PST 2018


> From: Noise <noise-bounces at moderncrypto.org> on behalf of Trevor Perrin <trevp at trevp.net>
> Sent: Sunday, March 4, 2018 10:48:57 PM
> To: noise
> Subject: [noise] NLS?
>  
> 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
Thanks again for sharing this Trevor. I’ve started some experiment in integrating NLS (NoiseLink/NoiseZeroLink) to the existing implementation of NoiseSocket. I’ll share updates as I make progress.

As I was initially reading the spec, I though whether, for sake of simplicity, would it make sense to merge NoiseLink and NoiseZeroLink in a single profile (ZeroLink)? They both share the same negotiation fields, so it might be easier from an implementation/interop standpoint to have a single profile that offers both 0 and 1 RTT.

Gerardo


More information about the Noise mailing list