Skip to main content
Log in

Constructing multidimensional differential addition chains and their applications

  • Regular Paper
  • Published:
Journal of Cryptographic Engineering Aims and scope Submit manuscript

Abstract

We propose new algorithms for constructing multidimensional differential addition chains and for performing multidimensional scalar point multiplication based on these chains. Our algorithms work in any dimension and offer some key efficiency and security features. In particular, our scalar point multiplication algorithm is uniform, it can be parallelized, and differential addition formulas can be deployed. It also allows trading speed for precomputation cost and storage requirements. These key features and our theoretical estimates indicate that this new algorithm may offer some performance advantages over the existing point multiplication algorithms in practice. We also report some experimental results and verify some of our theoretical findings, and a simplistic Magma implementation is provided.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Notes

  1. Accurate analysis of algorithms should consider varying length inputs \(a_i\) because certain properties (correctness, runtime, etc.) should ideally be independent of the input size. We do consider this general case in the paper when necessary.

  2. As we pointed out before, this is a fairly reasonable assumption when d is small (\(d\le 8\)) and P is fixed, or when \(\mathbb {G}\) is an (hyper)elliptic curve with efficiently computable endomorphisms.

  3. Precomputation cost and storage requirements can be reduced by half at an expense of computing the inverse of points.

  4. This is based on a heuristic estimate with small variance in practice; see [2].

References

  1. Antipa, A., Brown, D., Gallant, R., Lambert, R., Struik, R., Vanstone, S.: Accelerated verification of ECDSA signatures. In: Selected Areas in Cryptography, SAC 2005, Lecture Notes in Computer Science, vol. 3897, pp. 307–318 (2005)

  2. Azarderakhsh, R., Karabina, K.: A new double point multiplication algorithm and its application to binary elliptic curves with endomorphisms. IEEE Trans. Comput. 63, 2614–2619 (2014)

    Article  MathSciNet  MATH  Google Scholar 

  3. Azarderakhsh, R., Karabina, K.: Efficient algorithms and architectures for double point multiplication on elliptic curves. In: Proceedings of the Third Workshop on Cryptography and Security in Computing Systems—CS2 2016. (2016)

  4. Bernstein, D.: Differential Addition Chains. Technical Report (2006). http://cr.yp.to/ecdh/diffchain-20060219.pdf

  5. Bernstein, D., Lange, T.: Explicit-formulas database. http://hyperelliptic.org/EFD/

  6. Bos, J., Costello, C., Hisil, H., Lauter, K.: High-performance scalar multiplication using 8-dimensional GLV/GLS decomposition. In: Cryptographic Hardware and Embedded Systems—CHES 2013, Lecture Notes in Computer Science, vol. 8086, pp. 331–348 (2013)

  7. Brown, D.: Multi-Dimensional Montgomery Ladders for Elliptic Curves. ePrint Archive: Report 2006/220. http://eprint.iacr.org/2006/220

  8. Costello, C., Longa, P.: FourQ: Four-dimensional decompositions on a \(Q\)-curve over the Mersenne prime. In: Advances in Cryptology ASIACRYPT 2015, Lecture Notes in Computer Science, vol. 9452, pp. 214–235 (2015)

  9. Faz-Hernandez, A., Longa, P., Sanchez, A.: Efficient and secure algorithms for GLV-based scalar multiplication and their implementation on GLV–GLS curves. In: Topics in Cryptology CT-RSA 2014, Lecture Notes in Computer Science, vol. 8366, pp. 1–27 (2014)

  10. Feng, M., Zhu, B., Zhao, C., Li, S.: Signed MSB-set comb method for elliptic curve point multiplication. In: Information Security Practice and Experience—ISPEC 2006, Lecture Notes in Computer Science, vol. 3903, pp. 13–24 (2006)

  11. Galbraith, D., Lin, X., Scott, M.: Endomorphisms for faster elliptic curve cryptography on a large class of curves. J. Cryptol. 24, 446–469 (2011)

  12. Gallant, R., Lambert, R., Vanstone, S.: Faster point multiplication on elliptic curves with efficient endomorphisms. In: Advances in Cryptology—CRYPTO 2011, LNCS, vol. 2139, pp. 190–200 (2001)

  13. Guillevic, A., Ionica, S.: Four-dimensional GLV via the Weil restriction. In: Advances in Cryptology, ASIACRYPT 2013, Lecture Notes in Computer Science, vol. 8269, pp. 79–96 (2013)

  14. Hankerson, D., Karabina, K., Menezes, A.: Analyzing the Galbraith–Lin–Scott point multiplication method for elliptic curves over binary fields. IEEE Trans. Comput. 58, 1411–1420 (2009)

    Article  MathSciNet  MATH  Google Scholar 

  15. Hedabou, M., Pinel, P., Beneteau, L.: Countermeasures for preventing comb method against SCA attacks. Inf. Secur. Pract. Exp. ISPEC 2005(3439), 85–96 (2005)

    MATH  Google Scholar 

  16. Hisil, H., Wong, K., Carter, G., Dawson, E.: Twisted Edwards curves revisited. In: Advances in Cryptology—ASIACRYPT 2008, Lecture Notes in Computer Science, vol. 5350, pp. 326–343 (2008)

  17. Joye, M., Tunstall, M.: Exponent recoding and regular exponentiation algorithms. Lecture Notes in Computer Science, AFRICACRYPT 2009(5580), 334–349 (2009)

  18. Lim, C., Lee, P.: More flexible exponentiation with precomputation. In: Advances in Cryptology CRYPTO 94, Lecture Notes in Computer Science, vol. 839, pp. 95–107 (1994)

  19. Longa, P., Sica, F.: Four-dimensional Gallant–Lambert–Vanstone scalar multiplication. In: Advances in Cryptology, ASIACRYPT 2012, Lecture Notes in Computer Science, vol. 7658, pp. 718–739 (2012)

  20. Menezes, A., van Oorschot, P., Vanstone, S.: Handbook of Applied Cryptography. New York (1996)

  21. Möller, B.: Algorithms for multi-exponentiation. In: Selected Areas in Computer Science SAC 2001, LNCS, 2259, pp. 165–180 (2001)

  22. Montgomery, P.: Evaluating recurrences of form \({X}_{m+n} = f({X}_m, {X}_n, {X}_{m-n})\) via Lucas chains. https://cr.yp.to/bib/1992/montgomery-lucas.ps (1983)

  23. Montgomery, P.: Speeding the Pollard and elliptic curve methods of factorization. Math. Comput. 48, 243–264 (1987)

    Article  MathSciNet  MATH  Google Scholar 

  24. Okamoto, T.: Provably secure and practical identification schemes and corresponding signature schemes. In: Advances in Cryptology CRYPTO 92, Lecture Notes in Computer Science, vol. 740, pp. 31–53 (1993)

  25. Okeya, K., Takagi, T.: The width-w NAF method provides small memory and fast elliptic scalar multiplications secure against side channel attacks. In: Topics in Cryptology—CT-RSA 2003, Lecture Notes in Computer Science, vol. 2612, pp. 328–343 (2003)

  26. Rao, S.R.S.: Three dimensional montgomery ladder, differential point tripling on montgomery curves and point quintupling on Weierstrass and Edwards curves. In: Progress in Cryptology AFRICACRYPT 2016, Lecture Notes in Computer Science, vol. 9646, pp. 84–106 (2016)

  27. Shoup, V.: Ntl: A Library for doing number theory. http://www.shoup.net/ntl/

  28. Stam, M.: Speeding up Subgroup Cryptosystems. PhD Thesis, Technische Universiteit Eindhoven (2003)

  29. Zhou, Z., Hu, Z., Xu, M., Song, W.: Efficient 3-dimensional GLV method for faster point multiplication on some GLS elliptic curves. Inf. Process. Lett. 110, 1003–1006 (2010)

    Article  MathSciNet  MATH  Google Scholar 

Download references

Acknowledgements

The authors would like to thank reviewers for their comments and corrections. Research reported in this paper was supported by the Army Research Office under award number W911NF-17-1-0311. The content is solely the responsibility of the authors and does not necessarily represent the official views of the Army Research Office.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Koray Karabina.

Appendices

Appendix A: A toy example

Suppose we wish to compute the point \(10P_1 + 14 P_2 + 9 P_3 + 11 P_4\) using Algorithm 3.

We are first to run Algorithm 1. There are two odd coefficients, and so \(A_{3} = \begin{bmatrix} 10&14&9&11 \end{bmatrix}\). Now we add or subtract 1 to the coefficients one at a time, ensuring that we end up with all evens in \(A_1\) and all odds in \(A_5\). Making random choices for whether to add or subtract, suppose we arrive at the matrix

$$\begin{aligned} A^{(1)} = \begin{bmatrix} 10&14&10&12 \\ 10&14&10&11 \\ 10&14&9&11 \\ 10&15&9&11 \\ 11&15&9&11 \end{bmatrix} \end{aligned}$$

as the output of A1.

For A3(2), we have \(k=1\) and \(h=2\).

Now we arrive at the loop, A3(3). We run A2 with the matrix \(A^{(1)}\) above as input. To compute \(\sigma \), we look at consecutive rows of \(A^{(1)}\). The change between rows \(A_1^{(1)}\) and \(A_2^{(1)}\) occurs at column 4, and so \(\sigma (2) = 4\). The change from \(A_2^{(1)}\) to \(A_3^{(1)}\) occurs at column 3, and so \(\sigma (3) = 3\). Continuing in this fashion, we have \(\sigma (4) = 2\) and \(\sigma (5) = 1\). To define the \(c_i\)’s, just subtract the first row of \(A^{(1)}\) from the final row to get \(\begin{bmatrix} 1&1&-1&-1 \end{bmatrix}\), which tells us \(c_1 = 1, c_2 = 1, c_3 = -1, c_4 = -1\).

To begin building B, halve the top row of \(A^{(1)}\) to get the numbers 5, 7, 5, 6. There are three odds here, and so \(B_4 = \begin{bmatrix} 5&7&5&6 \end{bmatrix}\). In A2(6), we initialize D as

figure d

We construct the remaining rows of B iteratively in A2(7) by inspecting the successive rows of \(A^{(1)}\).

The change in row \(A^{(1)}_2\) occurs in column 4 (already noted by \(\sigma (2) = 4\)) in which the 12 in row 1 decreased to 11. In order to make 11, we need a 5 to go with the 6 already placed in \(B_4\). Since 6 is even we define the new row of B to be placed below the current rows, consisting of the same numbers as \(B_4\) but changing the 6 to a 5:

$$\begin{aligned} B = \begin{bmatrix}&&\\&&\\&&\\ 5&7&5&6 \\ 5&7&5&5 \end{bmatrix} \qquad A^{(1)} = \begin{bmatrix} 10&14&10&12 \\ 10&14&10&11 \\ 10&14&9&11 \\ 10&15&9&11 \\ 11&15&9&11 \end{bmatrix} \end{aligned}$$

These are our results after executing A2(11) in the first iteration (\(k=2\)). This definition of the newly constructed row of B allows us to satisfy \(A^{(1)}_2 = B_4 + B_5\). The difference \(B_4 - B_5 = \begin{bmatrix} 0&0&0&1 \end{bmatrix}\) becomes the new R, and we append the column on to D with this information in A2(15):

figure e

We look at row 3 of \(A^{(1)}\). The change occurs at column 3 when 10 decreased to 9 (given by \(\sigma (3) = 3\) and \(c_3 = -1\)). In order to make 9, we need a 4 to go with the 5 in column 3 of B. Since 5 is odd we define the new row of B to be placed above the current rows, consisting of the same numbers as \(B_4\) but changing the 5 to a 4:

$$\begin{aligned} B = \begin{bmatrix}&&\\&&\\ 5&7&4&6 \\ 5&7&5&6 \\ 5&7&5&5 \end{bmatrix} \qquad A^{(1)} = \begin{bmatrix} 10&14&10&12 \\ 10&14&10&11 \\ 10&14&9&11 \\ 10&15&9&11 \\ 11&15&9&11 \end{bmatrix} \end{aligned}$$

The above is matrix B after the second iteration of A2(7) (\(k = 3\)). Again the definition of this new row ensures that \(B_3 + B_5 = A^{(1)}_3\). The row numbers and the difference \(B_3 - B_5 = \begin{bmatrix} 0&0&-1&1 \end{bmatrix}\) are stored into D:

figure f

We continue in this way, going down the rows of \(A^{(1)}\). The change in \(A^{(1)}_4\) occurs in column 2, where we need an 8 to go with our 7 in B. 7 is odd, so we append a row at the top of B (and a column onto D, shown further below):

$$\begin{aligned} B = \begin{bmatrix}&&\\ 5&8&4&6 \\ 5&7&4&6 \\ 5&7&5&6 \\ 5&7&5&5 \end{bmatrix} \qquad A^{(1)} = \begin{bmatrix} 10&14&10&12 \\ 10&14&10&11 \\ 10&14&9&11 \\ 10&15&9&11 \\ 11&15&9&11 \end{bmatrix} \end{aligned}$$

Finally, the last change occurs in column 1. We need a 6 with our current 5 in B in order to make 11, and since 5 is odd, we append at the top once more. This will finish the loop, and we will rename the matrix B to be \(A^{(2)}\):

$$\begin{aligned} A^{(2)} = B = \begin{bmatrix} 6&8&4&6 \\ 5&8&4&6 \\ 5&7&4&6 \\ 5&7&5&6 \\ 5&7&5&5 \end{bmatrix} \quad A^{(1)} = \begin{bmatrix} 10&14&10&12 \\ 10&14&10&11 \\ 10&14&9&11 \\ 10&15&9&11 \\ 11&15&9&11 \end{bmatrix} \end{aligned}$$
figure g

Assigning \(k=2\), this finishes the first iteration of the loop in A3(3). We continue iterating through this loop, constructing a sequence of matrices and arrays just as we did above. We construct the final matrix when \(k=4\) (however, the loop increments once more before exiting to leave us with \(k=5\)). In total, we now have:

figure h

The arrays \(D^{(i)}\) give us a road map for how to compute our desired \(A_3^{(1)}\) in terms of the rows of \(A^{(5)}\), which are particularly simple. We compute \(Q^{(5)}_i := A^{(5)}_i \cdot \begin{bmatrix} P_1&P_2&P_3&P_4 \end{bmatrix}^T\) for \(1 \le i \le 5\), as stated in A3(7):

$$\begin{aligned} Q^{(5)}_1&= 0 \\ Q^{(5)}_2&= P_2 \\ Q^{(5)}_3&= P_2 + P_4 \\ Q^{(5)}_4&= P_1 + P_2 + P_4 \\ Q^{(5)}_5&= P_1 + P_2 + P_3 + P_4 \end{aligned}$$

Proceeding into the loop in A3(9), we then compute the rows of \(A^{(4)}\) listed in the first row of \(D^{(4)}\) in terms of the above 5 points:

$$\begin{aligned} Q^{(4)}_1&= 2Q^{(5)}_5 = 2P_1 + 2P_2 + 2P_3 + 2P_4 \\ Q^{(4)}_2&= Q^{(5)}_4 + Q^{(5)}_5 = 2P_1 + 2P_2 + P_3 + 2P_4 \\ Q^{(4)}_3&= Q^{(5)}_3 + Q^{(5)}_5 = P_1 + 2P_2 + P_3 + 2P_4 \\ Q^{(4)}_4&= Q^{(5)}_2 + Q^{(5)}_5 = P_1 + 2P_2 + P_3 + P_4 \\ Q^{(4)}_5&= Q^{(5)}_1 + Q^{(5)}_5 = P_1 + P_1 + P_3 + P_4 \end{aligned}$$

Next, compute the rows of \(A^{(3)}\) listed in the first row of \(D^{(3)}\) using the above points:

$$\begin{aligned} Q^{(3)}_1&= 2Q^{(4)}_4 = 2P_1 + 4P_2 + 2P_3 + 2P_4 \\ Q^{(3)}_2&= Q^{(4)}_3 + Q^{(4)}_4 = 2P_1 + 4P_2 + 2P_3 + 3P_4 \\ Q^{(3)}_3&= Q^{(4)}_2 + Q^{(4)}_4 = 3P_1 + 4P_2 + 2P_3 + 3P_4 \\ Q^{(3)}_4&= Q^{(4)}_2 + Q^{(4)}_5 = 3P_1 + 3P_2 + 2P_3 + 3P_4 \\ Q^{(3)}_5&= Q^{(4)}_1 + Q^{(4)}_5 = 3P_1 + 3P_2 + 3P_3 + 3P_4 \end{aligned}$$

Compute the rows of \(A^{(2)}\) using \(D^{(2)}\) and the above points:

$$\begin{aligned} Q^{(2)}_1&= 2Q^{(3)}_3 = 6P_1 + 8P_2 + 4P_3 + 6P_4 \\ Q^{(2)}_2&= Q^{(3)}_2 + Q^{(3)}_3 = 5P_1 + 8P_2 + 4P_3 + 6P_4 \\ Q^{(2)}_3&= Q^{(3)}_2 + Q^{(3)}_4 = 5P_1 + 7P_2 + 4P_3 + 6P_4 \\ Q^{(2)}_4&= Q^{(3)}_2 + Q^{(3)}_5 = 5P_1 + 7P_2 + 5P_3 + 6P_4 \\ Q^{(2)}_5&= Q^{(3)}_1 + Q^{(3)}_5 = 5P_1 + 7P_2 + 5P_3 + 5P_4 \end{aligned}$$

And finally, compute the rows of \(A^{(1)}\) using \(D^{(1)}\) and the above points:

$$\begin{aligned} Q^{(1)}_1&= 2 Q^{(2)}_4 = 10P_1 + 14P_2 + 10P_3 + 12P_4 \\ Q^{(1)}_2&= Q^{(2)}_4 + Q^{(2)}_5 = 10P_1 + 14P_2 + 10P_3 + 11P_4 \\ Q^{(1)}_3&= Q^{(2)}_3 + Q^{(2)}_5 = 10P_1 + 14P_2 + 9P_3 + 11P_4 \\ Q^{(1)}_4&= Q^{(2)}_2 + Q^{(2)}_5 = 10P_1 + 15P_2 + 9P_3 + 11P_4 \\ Q^{(1)}_5&= Q^{(2)}_1 + Q^{(2)}_5 = 11P_1 + 15P_2 + 9P_3 + 11P_4 \end{aligned}$$

As we wanted to compute row 3 of \(A^{(1)}\), we output \(Q_3^{(1)}\).

Appendix B: Magma implementation

We provide Magma code below, which was written for the purpose of simplicity and ease of understanding and does not attempt to optimize the algorithm or make any additional security modifications outside of what is stated in this paper. Structure, notation, and indexing were matched with that of the algorithms presented in Sect. 3 as much as possible. The code following comments ”// i //” indicates the implementation of line i in the respective algorithm.

figure i
figure j
figure k
figure l

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Hutchinson, A., Karabina, K. Constructing multidimensional differential addition chains and their applications. J Cryptogr Eng 9, 1–19 (2019). https://doi.org/10.1007/s13389-017-0177-2

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s13389-017-0177-2

Keywords

Mathematics Subject Classification

Navigation