<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 27, 2016 at 8:40 PM, Brian Smith <span dir="ltr"><<a href="mailto:brian@briansmith.org" target="_blank">brian@briansmith.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="gmail-">On Thu, Oct 27, 2016 at 7:44 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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, Oct 27, 2016 at 2:08 AM, Brian Smith <<a href="mailto:brian@briansmith.org" target="_blank">brian@briansmith.org</a>> wrote:<br></blockquote></span><span class="gmail-"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> In xeddsa_sign, why set:<br>
><br>
>       r = hash1(a || M || Z)<br>
><br>
> instead of one of:<br>
><br>
>       r = hash1(Z || a || m)<br>
>       r = hash1(a || Z || M)?<br>
><br>
> It seems like it would be better to incorporate the randomness into the<br>
> state of the hash function as early as possible to reduce risk of some<br>
> (non-timing) differential side-channel attacks on the hashing step.<br>
<br>
I don't think it matters much.<br>
<br>
But if an attacker could choose M to cause a collision between M1 and<br>
M2 or biased output, even with unknown/randomized prefix, then hashing<br>
Z at the end might be better [1]. </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">That's an unlikely scenario.  But hashing Z at the end also makes the<br>
design look like EdDSA a little more, as the first two inputs are<br>
secret key, then message, same as EdDSA.<br></blockquote><div><br></div></span><div><div>Consider this "best of both worlds" scheme:</div><div><br></div><div>     r = hash1(a || [first half of Z] || M || [second half of Z])</div><div><br></div><div>I believe this has the benefit of being like EdDSA but also protects against two different kinds of attacks.</div></div></div></div></div></blockquote><div><br></div><div>Sorry, I meant to share a link that gives some motivation for choosing a different construction by describing the other kind of attack, and specifically criticizes the EdDSA construction:</div><div><br></div><div><a href="https://dl.acm.org/purchase.cfm?id=2858932&CFID=686720127&CFTOKEN=45906669">https://dl.acm.org/purchase.cfm?id=2858932&CFID=686720127&CFTOKEN=45906669</a><br></div><div><br></div><div>Note that the alternative constructions I suggested above had approximately zero thought put into them. They're more intended to illustrate that it isn't obvious that the construct in the paper is the best one, and maybe it is worth considering different constructions with a clear justification for the construction finally chosen.</div><div><br></div><div>Cheers,<br></div><div>Brian</div><div><br></div></div>
</div></div>