<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 11, 2015 at 3:18 AM, Daniel Kahn Gillmor <span dir="ltr"><<a href="mailto:dkg@fifthhorseman.net" target="_blank">dkg@fifthhorseman.net</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">One risk here is that you end up re-using the same key on each<br>
connection, and in each direction.</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
If the AE algorithm you're using has any limit on the number of<br>
different messages you can safely encrypt under the same key</blockquote><div><br></div><div>I do use a random 12 byte nonce (chacha20poly1305 construction), but still - you raise a good point.</div><div>So -- what if I mix a public salt of considerable size into the mix during key derivation?</div><div><div><br></div><div>1. client -> server:<br>   salt = random_bytes(32)</div><div>   key1 = HKDF(client longterm private key * server longterm public key, salt)</div><div>   salt | AUTHENTICATED_ENCRYPTION(client ephemeral public key, key1)</div><div>2. server -> client:</div>   salt = random_bytes(32)<div>   key2 = HKDF(server longterm private key * client longterm public key, salt)</div><div>   salt | AUTHENTICATED_ENCRYPTION(server ephemeral public key, key2)</div></div><div><br></div><div><br></div><div>Also - is this general approach a *valid* way of avoiding needing Ed25519 signatures?</div><div><br></div></div>
</div></div>