[Cryptech Tech] Storage of curve parameters for ECDSA

Pavel Shatov meisterpaul1 at yandex.ru
Thu Jan 14 16:09:41 UTC 2016


On 14.01.2016 16:54, Rob Austein wrote:
> At Thu, 14 Jan 2016 11:01:38 +0300, Pavel Shatov wrote:
>>
>> Rob, could you please dump "rho" for all the three curves in
>> ecdsa_curves.h? I have a feeling, that "rho" will always be just 1 (one).
>
> Ah.  Hadn't noticed that, I'm just calling libtfm setup function:
>
>    sw/thirdparty/libtfm/tomsfastmath/src/mont/fp_montgomery_setup.c
>
> but you're correct that the computed value is one for all three of
> those curves.

That's what I thought. Well, the "trick" of Montgomery reduction is to 
shift the temporary product to the right after every iteration to 
prevent bit width growth. This can only be done if lower bits are 
zeroes. Lower bits can be zeroed out by adding multiples of the modulus.

Now if reduction is done bit-by-bit, then one modulus is added to the 
temporary result, if its lowest bit is set (given that the modulus must 
be odd, adding it to an odd temporary result will produce an even number 
with the lowest bit set to zero). This lowest zero bit can then be 
safely shifted away.

Reduction can also be done word-by-word, which is much faster. That's 
how FPGA (and apparently libtfm) works. In that sense "fp_digit" is 
actually a 32-bit number, so the algorithm zeroes out 32 bits a time. To 
do this one needs a special speed-up factor, that depends on lower 32 
bits of the modulus. Btw, that's why you have to toggle the init bit of 
ModExpS6 core after you change modulus -- the core has to pre-calculate 
the new speed-up factor. I guess setup function in libtfm does the same.

NIST primes all have their lower 32 bits set to ones, so the speed-up 
factor becomes just 1, there's no need for FPGA to calculate it at all. 
Since I'm trying to write ECDSA core, not general-purpose EC math core, 
I thought, that it would make sense to take advantage of the fact and 
get rid of that redundant coefficient.


-- 
With best regards,
Pavel Shatov



More information about the Tech mailing list