You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently scalar multiplication is using the raw canonical bigEndian representation of the scalar (a.k.a. octet string).
Depending on 0 or 1 bit, after the mandatory doubling, we either do nothing or add the original point.
On average, for scalars that are non-differentiable from a random oracle (which is the case for all private keys) we do an addition half the time.
Each integer has a unique Non-Adjacent-Form, that uses a ternary vase {-1 0 1}https://en.wikipedia.org/wiki/Non-adjacent_form with the interesting property that non-zero-values cannot be adjacent.
This form can be used to double and add-or-substract with an upper-bound of 1/3 addition/substraction.
The most interesting part for a constant-time implementation is that it allows using bigger window sizes for the same storage requirement as the binary representation since we have redundancy:
"-1 0 1 0" and "0 0 0 0" and "1 0 -1 0" ... can lookup in the same table slot
Current speed with window sizes effect:
The text was updated successfully, but these errors were encountered:
Currently scalar multiplication is using the raw canonical bigEndian representation of the scalar (a.k.a. octet string).
Depending on 0 or 1 bit, after the mandatory doubling, we either do nothing or add the original point.
On average, for scalars that are non-differentiable from a random oracle (which is the case for all private keys) we do an addition half the time.
Each integer has a unique Non-Adjacent-Form, that uses a ternary vase
{-1 0 1}
https://en.wikipedia.org/wiki/Non-adjacent_form with the interesting property that non-zero-values cannot be adjacent.This form can be used to double and add-or-substract with an upper-bound of 1/3 addition/substraction.
The most interesting part for a constant-time implementation is that it allows using bigger window sizes for the same storage requirement as the binary representation since we have redundancy:
Current speed with window sizes effect:
The text was updated successfully, but these errors were encountered: