[noise] Document structure (was: Mechanical definition of "fallback" modifier)

Jake McGinty me at jake.su
Mon Jun 12 01:15:53 PDT 2017

A specification structure proposal I’ve had floating around in my head for a bit:

1) Core

Definitions of the handshake and transport state machines (sections 1-8 in the current rev32 spec).

2) Appendices

Overview of security properties of the various handshake options (sections 7.4 and 7.5), as they’re convenient information but not a necessary part of a specification since it can be generated from the core spec.

3) Extensions

Currently this would be one document for each of {pskN, fallback, HFS, NewHope}, and perhaps we could have a standardized set of sections for extension papers so the documents don’t look totally different from each other.


To address Alex’s concern (which I share) about well-defined compliance, Noise implementations should consider the core spec to be the minimum requirement, and would simply include a list of which extensions are also supported.


> On Jun 11, 2017, at 10:02 PM, Alex <alex at centromere.net> wrote:
> On Sun, 11 Jun 2017 07:08:19 +0000
> Trevor Perrin <trevp at trevp.net> wrote:
>> On Sun, Jun 11, 2017 at 1:56 AM, Rhys Weatherley
>> <rhys.weatherley at gmail.com> wrote:
>>> Should the definition of the "fallback" modifier go into rev33 or
>>> into an extension document?  Perhaps Noise Pipes can be spun off
>>> completely into an extension now?  An important extension to be
>>> sure, but maybe no longer necessary in the core.  
>> Not sure.  I talked about that with Jason before revision 32 and he
>> convinced me this is complicated and needs more discussion:
>> * If we're going to divide things into separate documents (or
>> "chapters", or "layers"), what is the division based on?  Old vs new?
>> More-important vs less-important?  Modifiers vs non-modifiers?
> What is the very least a library author should have to do to consider
> their implementation compliant? If an author decides not to implement
> PSKs, are they violating the standard? If not, maybe section 9 should
> be in a separate document.
> Similarly it seems that fallback patterns (section 10) are completely
> optional *and* the spec only makes a recommendation for how to
> implement it. Additionally, the type fields in fallback patterns are
> explicitly designated as application responsibilities in section 13.
> This seems like a good candidate for something that can be moved in to
> another document.
>> * Are these decisions we're able to make now?
> I think so.
>> It would be great to hear thoughts about how these decisions would
>> affect people, e.g. would having separate documents make things easier
>> for library developers to focus on features they care about, or create
>> confusion and fragmentation?
> My biggest concern is that compliance is well defined. I want it to be
> completely unambiguous as to whether you are in or out of compliance.
> I suspect that a minimalist core spec with supporting documents for
> non-normative recommendations would make this challenge more tractable.
> -- 
> Alex
> _______________________________________________
> Noise mailing list
> Noise at moderncrypto.org
> https://moderncrypto.org/mailman/listinfo/noise

More information about the Noise mailing list