[noise] Protocol Names

Trevor Perrin trevp at trevp.net
Mon May 29 22:23:42 PDT 2017


On Tue, May 30, 2017 at 2:09 AM, Alex <alex at centromere.net> wrote:
> On Tue, 30 May 2017 00:26:21 +0000
> Trevor Perrin <trevp at trevp.net> wrote:
>>
>> At that point, we could simplify the test vector format by removing
>> the redundant "dh", "cipher", "hash" etc parameters from the test
>> vectors, since the test code could just parse the name.  Make sense?
>>
>
> I understand your idea, but I am not in favor of it. Compiling a
> structured format (JSON) to a final handshake name seems so much easier
> to me than parsing a string (and less error prone).

For the library running the tests, parsing a protocol name doesn't
seem like much more effort than JSON.

Here are some benefits to having a single representation for a Noise
protocol, instead of two:

 * We don't have to maintain two grammars, one for JSON and one for
protocol names.  For example, consider the current JSON for test
vectors:

https://github.com/noiseprotocol/noise_wiki/wiki/Test-vectors

We'd have to extend this for additional modifiers, e.g. for "noidh",
or "sig", and depending on how we do that, the library might have to
figure out the order of modifiers itself.

That seems like a lot of redundant specification effort, considering
we're encoding this information unambiguously in the protocol name.


 * Focusing on the protocol name I think would encourage an ecosystem
of interoperable tools (like code generators, test generators,
security analyzers), since people would be steered towards a single
format for describing Noise protocols, instead of having to convert
between multiple formats.

So I'm not sure what costs you're seeing that would outweigh these benefits?

Trevor


More information about the Noise mailing list