<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>