<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div></div><div><span style="background-color: rgba(255, 255, 255, 0);"></span>Hi,</div><div><br></div><div><div><font color="#000000"><span style="caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);">On 28 Apr 2018, at 06:59, meejah <<a href="mailto:meejah@meejah.ca">meejah@meejah.ca</a>> wrote:<br><br></span></font></div></div><div><blockquote type="cite"><span style="background-color: rgba(255, 255, 255, 0);">After reading the spec diff and your mail, I'm still not sure I<br>understand the distinction -- if the x25519 is used to decrypt the<br>descriptor then:<br><br></span><blockquote type="cite"><font color="#000000"><span style="caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);">The spec says that the client must have both keys and use both to<br></span></font></blockquote><blockquote type="cite"><font color="#000000"><span style="caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);">authenticate, but, for me, these two things are quite independent. I<br></span></font></blockquote><blockquote type="cite"><font color="#000000"><span style="caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);">think they can be considered two different authentication types. The<br></span></font></blockquote><blockquote type="cite"><font color="#000000"><span style="caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);">service should be able to enable one and disable the other. For example,<br></span></font></blockquote><blockquote type="cite"><font color="#000000"><span style="caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);">If I disable the x25519 while I enable ed25519, I can add a new client<br></span></font></blockquote><blockquote type="cite"><font color="#000000"><span style="caret-color: rgb(0, 0, 0); background-color: rgba(255, 255, 255, 0);">immediately without the need to rotate the intro points.<br></span></font></blockquote><span style="background-color: rgba(255, 255, 255, 0);"><br>...how does this work? If the client doesn't have the x25519 key how can<br>it access the descriptor?</span></blockquote><br></div><div>If the service does not encrypt the descriptor with an <span style="background-color: rgba(255, 255, 255, 0);">x25519 key</span>, then the</div><div>client does not need a key to read it.</div><div><br></div><div><span style="background-color: rgba(255, 255, 255, 0);"><blockquote type="cite">The spec says that the client must have both keys and use both to<br>authenticate, but, for me, these two things are quite independent. I<br>think they can be considered two different authentication types. The<br>service should be able to enable one and disable the other. For example,<br>If I disable the x25519 while I enable ed25519, I can add a new client<br>immediately without the need to rotate the intro points.<br><br>If rotating intro points is not an issue and the only purpose of ed25519<br>is to have more fine-grained access control, the current spec is fine.<br>But if rotating intro points is an issue, we should rethink about this.<br><br>So, I created a PR for the change in torspec.<br><a href="https://github.com/torproject/torspec/pull/7" dir="ltr" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="1">https://github.com/torproject/torspec/pull/7</a><br>(in the PR, the x25519 auth is called 'basic' and the ed25519 auth is<br>called 'intro')</blockquote><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">Please use different words from v2 to avoid confusion.</span></div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">Please use words that describe what a thing *is*, not </span><span style="background-color: rgba(255, 255, 255, 0);">how secure it</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">is, or what it should be used for, or what </span>level of the design it is on.</div><div>(We made that mistake when naming "hidden services".)</div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">I would recommend:</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">* "descriptor" for descriptor auth</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">* "intro" for into auth</span></div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);"><blockquote type="cite">We need your opinions about this.<br>Should we let the service enable one while disable the other?<br></blockquote><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">Yes, they have different security properties.</span></div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">For example, a Ricochet-like peer to peer messaging protocol</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">would like to be able to revoke one contact (intro auth), without</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">disconnecting all the rest (descriptor auth).</span></div><br><blockquote type="cite">Or should we require the service to enable both for all clients?<br><br>If you want to let the service be able to enable one while disable the<br>other, do you have any opinion on how to configure the torrc?</blockquote><br></span></div><div>If someone doesn't understand client auth in detail, and just wants</div><div>to be more secure, we should give them a single option that enables</div><div>both kinds of client auth. (Security by default.)</div><div><br></div><div>OnionServiceClientAuthentication 1</div><div>(Default: 0)</div><div><br></div><div>If someone knows they only want a particular client auth method,</div><div>we should give them another option that contains a list of active</div><div>client auth methods. (Describe what you have, not what you don't</div><div>have, because negatives confuse humans.)</div><div><br></div><div><span style="background-color: rgba(255, 255, 255, 0);">OnionServiceClientAuthenticationMethods intro</span></div><div>(Default: descriptor, intro)</div><div><br></div><div>T</div></body></html>