<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">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"><span class="">Brian Smith <<a href="mailto:brian@briansmith.org">brian@briansmith.org</a>> wrote:<br></span><span class="">> 3. To what extent does calculating hash3(a || V || Z) reduce security<br>
> compared to hash3(a || M || Z) when Z is the output of a broken PRNG? In<br>
> other words, how much worse is it to hash V instead of M?<br>
<br>
</span>If an attacker can find messages M1 and M2 which are a colliding pair<br>
for hash2, and the RNG repeats, then the private key will probably<br>
leak since M1 and M2 probably won't collide hash4.<br>
<br>
VXEdDSA is broken as a VRF if you can collide hash2, because after<br>
seeing VRF(M1) you can predict VRF(M2).  But you still might care<br>
about signature forgery, or the key might be shared with something<br>
else.<br>
<br>
So I could see an argument for just hashing the message three times -<br>
it's more consistent with XEdDSA, for typical small messages it's not<br>
a big time difference, and if hashing time does matter the caller<br>
could do their own pre-hashing.<br></blockquote><div><br></div><div>Right.</div><div><br></div><div>Also, (X)EdDSA has been argued to secure even if the hash function isn't fully collision-resistant; hashing V instead of M breaks that as you describe above. Also, IIUC, hash_to_point is strictly less collision-resistant than SHA-512 alone, but I'm too lazy to try to figure out exactly how much less.</div><div><br></div><div>I think when you wrote "typical small messages" you meant that the messages are typically small, in which case I think hashing the message three times makes the most sense.</div><div><br></div><div>Since the VRF functionality fundamentally depends on hash_to_point, it seems like collision resistance of the hash function and of hash_to_point are required for the VRF functionality, even if it wouldn't be required for the security of the signature functionality. I'm not sure what difference it would make since I don't know much about VRFs.</div><div><br></div><div>At the very least, this stuff would be good to mention in the security considerations.<br></div><div><br></div><div>Cheers,<br>Brian</div></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><a href="https://briansmith.org/" target="_blank">https://briansmith.org/</a></div><div><br></div></div></div></div></div></div></div>
</div></div>