[curves] Balancing reduced-radix and full-radix performance for extra-strength primes

D. J. Bernstein djb at cr.yp.to
Mon Jan 19 19:03:32 PST 2015

http://bench.cr.yp.to/impl-scalarmult/curve25519.html compares speeds of
various Curve25519 implementations on various platforms. Longa was
presenting a small extract from this data.

For "64-bit" platforms the best non-vectorized radix is sometimes 2^64,
sometimes 2^51, for reasons explained in the Ed25519 paper. Vectorized
speed records---e.g., speed records on typical smartphones---typically
use radix 2^25.5.

Longa seemed to be trying to mislead people into believing that this
platform variation in _implementation_ techniques creates a platform
variation in _prime_ choices. It should be obvious that these data
points say nothing about prime choice: they're all for one prime.

A closer study of implementation techniques shows that choosing mediocre
primes such as 2^256-189

   * doesn't hurt typical full-radix implementations but
   * hurts typical reduced-radix implementations.

In other words, switching to mediocre primes hurts some platforms and
doesn't help others. To avoid seeing this damage, one has to ignore all
the reduced-radix implementations and ignore all the platforms where
those implementations are best---and even within these blinders there's
no advantage to the mediocre primes. Not A Tough Decision(tm).

I'm not saying that at _every_ security level there's a unique standout
cross-platform prime; I'm just saying that Longa wasn't looking at the
right data for the decision that he claimed to be interested in.

> 2) Full-radix may be safer and easier to implement, since
> reduced-radix requires "Bound analysis" to prevent inadvertent word
> spilling, thus is "error prone, errors are more difficult to catch".

There's a long history of hard-to-catch errors in full-radix software.
https://cryptojedi.org/papers/#verify25519 is the first step towards
confidently getting out of this mess---and it's significantly _easier_
for reduced-radix software than for full-radix software.


More information about the Curves mailing list