<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 31, 2017 at 11:40 AM, Trevor Perrin <span dir="ltr"><<a href="mailto:trevp@trevp.net" target="_blank">trevp@trevp.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Made a pass on the Noise spec, and got in almost everything I think we<br>
want in next revision. No changes or incompatibilities, but some<br>
additions.<br>
<br>
Hopefully this doc can be frozen soon, as it's getting pretty stuffed.<br>
I'm thinking of starting an extensions doc to cover more complicated<br>
uses of Noise (hybrid forward secrecy, PSK and semiephemeral<br>
resumption, pattern transformations and combining them, etc.).<br>
<br>
<a href="https://github.com/noiseprotocol/noise_spec/blob/rev32/output/noise.pdf" rel="noreferrer" target="_blank">https://github.com/<wbr>noiseprotocol/noise_spec/blob/<wbr>rev32/output/noise.pdf</a><br>
<a href="https://github.com/noiseprotocol/noise_spec/blob/rev32/noise.md" rel="noreferrer" target="_blank">https://github.com/<wbr>noiseprotocol/noise_spec/blob/<wbr>rev32/noise.md</a><br>
<br>
Additions:<br>
<br>
* Limit of 255 bytes to protocol names<br>
<br>
* Rekey capability:<br>
- Encryption with MAXNONCE is used to rekey by default, though we<br>
allow definition of a more specialized rekey for ciphers like<br>
AESGCM-SIV where we'd rather use the cipher key directly with AES,<br>
instead of going through the whole key-derivation / SIV process.<br>
- Up to application if/when/how to use this.<br>
- Would still like to analyze more, but this is probably good [1].<br></blockquote><div><br></div><div>Rekey() looks good. The only nitpick I have is with "returns a new 32-byte<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
* Strict vs non-strict DH functions:<br>
- Allows a DH function to be defined with an error return (e.g.<br>
secp256k1 or other DH encodings that use compressed points and<br>
decompression).<br>
- Could also be used to define a 25519strict (or whatever you'd<br>
name it) that checks for zero output, if one really wanted that.<br>
- Would still like to think more about handling null public keys,<br>
right now this is a recommendation to define them, perhaps we leave it<br>
at that? [2].<br>
<br>
* Channel-bindings UNCHANGED:<br>
- I was thinking of doing HASH(h || label) or HMAC(h, label) to<br>
extract labelled channel-binding values. But on further thought, if a<br>
higher-level protocol is using the channel-binding plus its own keys<br>
so sloppily that the output can be transferred between different<br>
contexts (i.e. cross-protocol attacks) that's the protocol's problem,<br>
not ours, so better to keep this simple.<br>
<br>
* Pattern transformations and "noidh" removed. I think things like<br>
this should go in an "extensions" doc discussing transformations and<br>
extensions like:<br>
- "noidh" (identity-hiding)<br>
- "hfs" (hybrid forward-secrecy)<br>
- PSK and semi-ephemeral 0-RTT<br>
- maybe extensions for altering when the PSK is applied (an idea of Jason's)<br>
- extensions for adding/removing ss, or deferring DHs, etc.<br>
<br>
* "Fallback patterns" instead of "dependent" patterns:<br>
- The only case where initiator ephemerals are used as pre-messages<br>
is for fallback, so I overhauled the text to be more specific and I<br>
think clearer about this (see: Sections 8 and 9.1).<br>
- Section 9 rewritten to be clearer (hopefully?) about all this.<br>
- Roles don't change during fallback, so fallback patterns are<br>
written more nicely:<br>
<br>
Noise_XX(s, rs):<br>
-> e<br>
<- e, ee, s, es<br>
-> s, se<br>
<br>
Noise_XXfallback(e, s, rs):<br>
-> e<br>
...<br>
<- e, ee, s, es<br>
-> s, se<br>
<br>
* Fixed the indistinguishable handshakes section, since it's not<br>
actually possible to use XX there.<br>
<br>
This is a slew of new text, so feedback appreciated!<br>
<br>
Trevor<br>
<br>
[1] <a href="https://moderncrypto.org/mail-archive/noise/2017/000944.html" rel="noreferrer" target="_blank">https://moderncrypto.org/mail-<wbr>archive/noise/2017/000944.html</a><br>
[2] [2] <a href="https://moderncrypto.org/mail-archive/noise/2017/000867.html" rel="noreferrer" target="_blank">https://moderncrypto.org/mail-<wbr>archive/noise/2017/000867.html</a><br>
______________________________<wbr>_________________<br>
Noise mailing list<br>
<a href="mailto:Noise@moderncrypto.org">Noise@moderncrypto.org</a><br>
<a href="https://moderncrypto.org/mailman/listinfo/noise" rel="noreferrer" target="_blank">https://moderncrypto.org/<wbr>mailman/listinfo/noise</a><br>
</blockquote></div><br></div></div>