> On Jul 28, 2017, at 8:50 AM, Björn Haase <bjoern.m.ha...@web.de> wrote:
> 
> Hi Trevor,
> 
>> * Did you give any thought to FourQ, which claims similar speedups
>> with respect to 25519 but also a similar security level? [1]
> 
> Not so far. Actually I have more closely looked at FourQ only this week after 
> a discussion with Diego Aranha.
> My (very preliminary) assessment after 3h of reading is, that the field 
> arithmetic for the extension field
> should be somewhat slower than for Curve25519's prime field (at least on 
> small microcontrollers).
> The main benefit that I did identify is that by using the curve endomorphisms 
> allows for speedups on the DH algorithm level.
> 
> Regarding FourQ: Most efficient PAKE protocols, I am aware of want an 
> efficient mapping algorithm. I didn't yet assess whether Elligator or 
> Elligator2 may be applied also to the FourQ point group. Finally it seems 
> also be constructed over an Edwards curve, so one of the two reptiles might 
> very well be available?

Elligator 2 works for any elliptic curve (over a field of odd characteristic 
IIRC) with at least one point of order 2.  So you can use it on FourQ.

Elligator 1 works on a strict subset of these curves and is more complicated, 
so as far as I’m concerned it should never be used.

In addition to FourQ and Curve19119, other fast-ish options include 
2^252-2^232-1 (but maybe not on tiny micros); NIST’s 2^192-2^64-1 (but again 
maybe not on the M0?); and the Goldi-like 2^216-2^108-1.  But I agree that you 
should stick with Curve25519 if you can afford it.

> Apart of that: I feel quite save using Curve25519 for production use. For 
> FourQ on the other hand, my gut feeling is that FourQ might not be 
> sufficiently well-established and mature for using it in production code. At 
> least we would probably be facing many questions from external 
> security-reviewers and/or customers.
> 
> * For the PAKE, since you have Elligator, did you consider anything
> like the "SPAKE2-Elligator Edition" approach of [2] - basically,
> DH-EKE where the DH public values are masked by adding
> Elligator(password)?
> 
> EKE used to be patented until this year, IIRC. This had scared us away from 
> using EKE and EKE variants so far. When comparing SPAKE2 with our PACE 
> variant, I believe that our implementation has slightly better execution time 
> and a smaller memory-footprint as a trade-off for more message exchanges.

> Note that for SPAKE2 you would need either point compression or point 
> verification IIUC, which we also tried to avoid due to patent issues: One 
> nice feature of our PACE variant is that we could operate on a 
> X-Coordinate-only ladder on a montgomery ladder and curve which is not the 
> case with SPAKE2-Elligator Edition. The Hisil-Wong-Dawson formulas actually 
> are also very fast, however we would probably need some table-based 
> precomputation (IIUC) in order to reach the same efficiency level as for, 
> e.g. x-coordinate-only X25519. On our resource-constrained target table-based 
> precomputation is not a good idea in my opinion (both regarding RAM 
> consumption, fault injection and side-channel issues).

I realized at some point that “SPAKE2-EE” is actually an existing protocol 
called “PAK”, which is why I didn’t ever write it up.

On a constrained device, a SPEKE variant (like PACE) is a faster and simpler 
choice.  Also I thought the SPEKE patent expired, so why not use that?  SPAKE2 
(-EE and otherwise) has a stronger security proof, supports augmentation, and 
is potentially faster with precomputation. I don’t know if there is an 
augmented version of SPEKE.

> I found an interresting aspect in the 2015 thread about SPAKE2 EE that I did 
> not consider yet: We actually don't need to generate an affine point with the 
> elligator, but for PACE and SPAKE2 EE we might have a more efficient solution 
> when taking it in projective coordinates. Maybe we could get rid of one of 
> the exponentiations in the elligator calculation (v, epsilon) at the cost of 
> slightly less optimal differential addition formulas for the montgomery 
> ladder with a projective difference point x0 ... Don't know yet which variant 
> would come out faster.

It is possible to compute Elligator straight to affine with only one 
exponentiation, using the inverse square root trick.

You want x = -A/(1+ur^2), or -A-that, so you need to simultaneously divide by 
1+ur^2 and compute the Legendre symbol of the putative y^2 = x(x^2+Ax+1).  If 
you compute that projectively to get y^2 = a/b, then L(a/b) = L(ab), so you 
don’t need to do the division first.  Let c=ab, d=1+ur^2.  Then you can compute

s := (cd^2) ^ ((p-3)/2)

Then (s^2 * cd^2) = (cd^2)^(p-2) = 1/cd^2, so that 1/d = (s^2 * cd^2) * cd 
unless c=0 or d=0.  But if c=0 then the point is (0,0) or infinity, and if d=0 
then it’s infinity, so in either case you should return 0 anyway.  At the same 
time, (s * cd^2) = (cd^2)^((p-1)/2) = L(cd^2) = L(c) unless d=0.  So that gives 
you the inverse and Legendre symbol at the same time.  A similar trick with 
(cd^2)^((p-5)/8) can give you the square root, but you don’t actually need that 
here if you’re using an x-only ladder.

If you don’t do this, then compared to dividing, the projective ladder requires 
one more register (Z0) and is slower if you have a dedicated squaring 
algorithm.  It’s faster if you’re using multiply as square.

> Yours,
> 
> Björn.

Cheers,
— Mike


> Am 28.07.2017 um 00:32 schrieb Trevor Perrin:
>> On Thu, Jul 27, 2017 at 4:27 PM, Björn Haase <bjoern.m.ha...@web.de> wrote:
>>> "Making Password Authenticated Key Exchange Suitable For
>>> Resource-Constrained Industrial Control Devices"
>>> https://eprint.iacr.org/2017/562
>>> 
>>> We observe a speedup factor of roughly 1.9 in comparison to our X25519
>>> implementation on a Cortex M0+ microcontroller.
>> 
>> Hi Björn,
>> 
>> Thanks, that's a good read.  Couple Qs:
>> 
>>  * Did you give any thought to FourQ, which claims similar speedups
>> with respect to 25519 but also a similar security level? [1]
>> 
>>  * For the PAKE, since you have Elligator, did you consider anything
>> like the "SPAKE2-Elligator Edition" approach of [2] - basically,
>> DH-EKE where the DH public values are masked by adding
>> Elligator(password)?
>> 
>> Trevor
>> 
>> [1] https://eprint.iacr.org/2017/434.pdf
>> 
>> [2]
>> https://moderncrypto.org/mail-archive/curves/2015/000424.html
>> https://www.di.ens.fr/~mabdalla/papers/AbPo05a-letter.pdf
>> 
> 
> _______________________________________________
> Curves mailing list
> Curves@moderncrypto.org
> https://moderncrypto.org/mailman/listinfo/curves

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Curves mailing list
Curves@moderncrypto.org
https://moderncrypto.org/mailman/listinfo/curves

Reply via email to