<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>After thinking longer about it, and re-reading the psk section of the spec, I realized I don't understand the intended usage of psk(s). My thought was "It is a way to skip the key agreement and go right to the session" but given that it still uses an ephemeral
 key (instead of a nonce) to generate a unique ck, I don't know why I would use it over Noise_{K,X}.</p>
<p><br>
</p>
<p>My use case is that I have a multi party chat, Semaphor, that uses a shared symmetric channel key. Right now we use a home grown protocol build on top of libsodium but I am hoping that we can switch to noise. I would actually like to switch to shared public
 channel key ( all parties know the private key ) but I am concerned with decryption time when back filling history.  (Under the assumption that some phones can only handle ~1k DH operations/s)</p>
<p><br>
</p>
<div id="x_Signature">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Arial,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<p></p>
<p style="font-family:"Times New Roman""><b><span style="font-family:Helvetica,sans-serif; font-size:12pt">Jonathan Moore, CTO</span></b></p>
<span style="font-family:Helvetica,sans-serif"></span><span style="font-size:11pt"></span><span style="font-family:Arial,Helvetica,sans-serif"></span><span style="font-size:11pt"></span><span style="font-family:Helvetica,sans-serif"></span>
<p style="font-family:"Times New Roman""><span style="font-family:Helvetica,sans-serif; font-size:11pt">SpiderOak</span></p>
<span style="font-family:Helvetica,sans-serif"></span><span style="font-size:11pt"></span><span style="font-family:Arial,Helvetica,sans-serif"></span><span style="font-size:11pt"></span><span style="font-family:Helvetica,sans-serif"></span>
<p style="font-family:"Times New Roman""><span style="font-family:Helvetica,sans-serif; font-size:11pt">415.425.5495</span></p>
<span style="font-family:Helvetica,sans-serif"></span><span style="font-size:11pt"></span><span style="font-family:Arial,Helvetica,sans-serif"></span><span style="font-size:11pt"></span><span style="font-family:Helvetica,sans-serif"></span>
<p style="font-family:"Times New Roman""><span style="color:rgb(0,111,201); font-family:Helvetica,sans-serif; font-size:11pt">>ENCRYPT EVERYTHING</span></p>
<span style="font-family:Helvetica,sans-serif"></span><br>
<p></p>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Trevor Perrin <trevp@trevp.net><br>
<b>Sent:</b> Wednesday, June 7, 2017 4:30:06 PM<br>
<b>To:</b> Jonathan Moore<br>
<b>Cc:</b> noise@moderncrypto.org<br>
<b>Subject:</b> [EXT] Re: [noise] Multi party psk</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On Wed, Jun 7, 2017 at 10:00 PM, Jonathan Moore<br>
<jmoore@spideroak-inc.com> wrote:<br>
><br>
> Would it be safe to take a shared s and do an HKDF( s, pubkey_n ) = s_n to<br>
> create a unique s for each sender in a multi party channel?<br>
<br>
<br>
Hi Jonathan,<br>
<br>
Interesting question!<br>
<br>
(Small note on terminology: "s" isn't the best name here, because<br>
Noise uses that for a static key pair or static public key.)<br>
<br>
If a server has a master symmetric key and wants to derive a shared<br>
PSK with clients based on HKDF or just HMAC(master_key, client_ID)<br>
that seems fine.  Client_ID could be anything, including the client's<br>
public key.<br>
<br>
I guess this could be a way to authenticate clients without the server<br>
having to store a database of all Client IDs?  For example, a pattern<br>
like NKpsk2 could allow the client send its ID in the first payload,<br>
and then the server mixes the derived PSK in when responding.<br>
<br>
<br>
Trevor<br>
</div>
</span></font>
</body>
</html>