GLV Decomposition
Splitting a scalar multiplication into 2 and reducing count of double operations
Last updated
Splitting a scalar multiplication into 2 and reducing count of double operations
Last updated
Note 1. The elliptic curve in use should have efficiently-computable
Note 2. The elliptic curve in use must have the , where
We attempt to calculate the following elliptic curve point-scalar multiplication:
...where is the scalar and point is .
...that satisfies the following:
will be a cubic root of the base field or in other words for a base field we have
As is a 3rd root of unity, the elliptic curve equation (with ) holds:
TODO: Explain how to find
...where and are around half the bits of .
This means, by definition, the following is true:
By this description, we can conclude that GLV severely decreases the total number of point doubles, but can slightly increase the number of point additions.
The separation of one scalar multiplication into smaller parts introduces the possibility for running parallelization.
Memory for intermediate computations can be shared by first calculating and . After calculations are finished, can be simply multiplied to 's result.
Note that the property of is used for this process.
In the , they mention their algorithm reduces the number of double operations by around half in comparison to other algorithms due to the decomposed scalar. However, determining the exact cost benefit of GLV proves quite difficult. The authors of GLV state the following in their (which has been paraphrased for simplicity):
Whereas a current "" that uses exponent recoding and a sliding window algorithm costs 157 point doubles and 24 point additions for 160-bit scalar multiplication, with GLV, it costs around 79 point doubles and 38 point additions. If a point double costs 8 field multiplications and a point addition costs 11 field multiplications (per ), then GLV has a run time of around 66% the "highly efficient algorithm." With an increase in bit length, the comparative run time percentage gets better. For example, 512-bit scalar multiplication reduces with percentage to 62%.
GLV is essential for optimization of as it can be used to decompose MSM multiplications before running separate MSM's on the smaller parts. Moreover, when utilizing a bucket optimization technique (like ) for MSM, if GLV is used before , the number of buckets required per window is reduced to of the original number.
Written by and of A41