<div dir="ltr">Thanks for reporting, Michael!<br><br>For the record, the Edwards module is still experimental code written by Tobias Markmann and not fully integrated with the rest of the library. I plan to help with this and perform a partial rewrite of the library in July (no classes) to reduce complexity. Constant-time behavior will be one of the goals. <span style="line-height:1.5">I wish I was more aware of side channels in 2007 when I started coding, but I guess that's the way things are.</span><div><div><br></div><div>Best,</div><div>--</div><div>Diego Aranha</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jun 18, 2015 at 3:53 PM Michael Hamburg <<a href="mailto:mike@shiftleft.org">mike@shiftleft.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Ah.  Also RELIC implements hashing to the curve, but probably not the way you want.  For prime-order curves they use hunt-and-pack, which works but isn’t constant time.  For Edwards curves they use g^hash, which is going to outright break most protocols that use this primitive.  I’m filing a bug against that.</div><div><br></div><div>— Mike</div></div><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On Jun 18, 2015, at 11:45 AM, Michael Hamburg <<a href="mailto:mike@shiftleft.org" target="_blank">mike@shiftleft.org</a>> wrote:</div><br><div><div style="word-wrap:break-word"><div>Hi Frank,</div><div><br></div><div>My library supports hashing to the curve, as do Snowshoe [*] and Libelligator [+], and not much else that I’m aware of.  Especially if you want it to be constant time and/or fast.  I’d bet that some of the other fancy libraries like PBC and MIRACL have it though.</div><div><br></div><div>I somehow misread your original message as “hashing points”.</div><div><br></div><div>Cheers,</div><div>— Mike</div><div><br></div><div>[*] <a href="https://github.com/catid/snowshoe" target="_blank">https://github.com/catid/snowshoe</a> by Christopher A Taylor</div><div><br></div><div>It’s pretty fast and uses a 254-bit field.  It doesn’t export point operations, but since it’s an Edwards curve it should be reasonably safe to use the internal APIs.</div><div><br></div><div>[+] <a href="https://github.com/Yawning/libelligator" target="_blank">https://github.com/Yawning/libelligator</a></div><div><br></div><div>I found this by Googling.  It looks to be based on Donna.</div><br><div><blockquote type="cite"><div>On Jun 18, 2015, at 11:01 AM, Frank Wang <<a href="mailto:frankw@mit.edu" target="_blank">frankw@mit.edu</a>> wrote:</div><br><div><div dir="ltr">Hi Mike, <div><br></div><div>Well, I want a way to translate a n-bit message to a point on the curve. My understanding is that it's easiest to hash it to the curve, but I could just be confused. </div><div><br></div><div>Does your library not support hashing to the curve?</div><div><br></div><div>Frank</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 18, 2015 at 1:50 PM, Mike Hamburg <span dir="ltr"><<a href="mailto:mike@shiftleft.org" target="_blank">mike@shiftleft.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><span></span></div><div><div>Wait, do you want to hash messages to the curve, or just be able to hash curve points?  The former is kind of a niche feature, though you could implement it yourself if the library doesn't support it. <br><br>Sent from my phone.  Please excuse brevity and typos.<div><div><div><br>On Jun 18, 2015, at 10:38, Frank Wang <<a href="mailto:frankw@mit.edu" target="_blank">frankw@mit.edu</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr">Hi Thomas,<div><br>Yes. Sorry, my goal right now is that I have a key revocation scheme that I want to implement, involving elliptic curve addition, subtraction, and scalar multiplication (as well as hashing messages to the curve). I would like reasonable performance (so C does seem good) because I'm benchmarking it against AES. However, I'm willing to trade off some performance for ease of use.</div><div><br></div><div>TweetNacl seems to be designed primarily for ECDH and EC signatures rather than a general purpose elliptic curve library. I'm exploring alternatives.</div><div><br></div><div>Frank</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 18, 2015 at 1:34 PM, Thomas DuBuisson <span dir="ltr"><<a href="mailto:thomas.dubuisson@gmail.com" target="_blank">thomas.dubuisson@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Frank,<br>
A lot of recommendations are pouring in about C and Java libraries, on<br>
top of which I'm tempted to recommend my own in Cryptol or one of the<br>
Sage version out there, but none of us have heard about your actual<br>
goal and needs.  Could you say more about how this code will be used<br>
and what you hope to achieve?<br>
<span><font color="#888888"><br>
Thomas<br>
</font></span><span><br>
On Wed, Jun 17, 2015 at 2:16 PM, Frank Wang <<a href="mailto:frankw@mit.edu" target="_blank">frankw@mit.edu</a>> wrote:<br>
</span><div><div>> Hi,<br>
><br>
> I am working on a research project at MIT, and I need to use elliptic curves<br>
> (or a group where DDH is hard, but elliptic curves seem like the best way to<br>
> go) to implement a cryptographic scheme. I've been trying to search for<br>
> general Curve25519 and Ed25519 libraries where I can just do add and scalar<br>
> multiply as well as hash messages to points. The best library I've come<br>
> across so far is tweetnacl, which has the add and scalar multiply operation<br>
> for Ed25519, but it's a bit difficult to use, and I end up modifying the<br>
> library to do subtraction of points.<br>
><br>
> I have yet to find a good library that allows me to just do operations on<br>
> Ed25519 or Curve25519. Does such a library exist? If not, any tips on what I<br>
> should do? Should I just use another curve library that is better supported?<br>
> If so, any suggestions?<br>
><br>
> Thanks,<br>
> Frank<br>
><br>
</div></div><div><div>> _______________________________________________<br>
> Curves mailing list<br>
> <a href="mailto:Curves@moderncrypto.org" target="_blank">Curves@moderncrypto.org</a><br>
> <a href="https://moderncrypto.org/mailman/listinfo/curves" rel="noreferrer" target="_blank">https://moderncrypto.org/mailman/listinfo/curves</a><br>
><br>
</div></div></blockquote></div><br></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Curves mailing list</span><br><span><a href="mailto:Curves@moderncrypto.org" target="_blank">Curves@moderncrypto.org</a></span><br><span><a href="https://moderncrypto.org/mailman/listinfo/curves" target="_blank">https://moderncrypto.org/mailman/listinfo/curves</a></span><br></div></blockquote></div></div></div></div></div></blockquote></div><br></div>
</div></blockquote></div><br></div>_______________________________________________<br>Curves mailing list<br><a href="mailto:Curves@moderncrypto.org" target="_blank">Curves@moderncrypto.org</a><br><a href="https://moderncrypto.org/mailman/listinfo/curves" target="_blank">https://moderncrypto.org/mailman/listinfo/curves</a><br></div></blockquote></div><br></div>_______________________________________________<br>
Curves mailing list<br>
<a href="mailto:Curves@moderncrypto.org" target="_blank">Curves@moderncrypto.org</a><br>
<a href="https://moderncrypto.org/mailman/listinfo/curves" rel="noreferrer" target="_blank">https://moderncrypto.org/mailman/listinfo/curves</a><br>
</blockquote></div>