TL;DR: Does anyone have a reference to a study, implementation of different algorithms or otherwise "truth" about which solution - a set of coordinate systems and algorithms that enables the fastest known Point multiplication for e.g. X25519 (Curve25519) (Montgomery curve) and secp256k1 (Not Montgomery)?
I am writing an Elliptic Curve Cryptography SDK in pure Swift, and currently I am only using Affine Point and simple Double-and-add. I am soon about to work on a faster solution.
I am asking for help with the fastest known ECC arithmetic. Of course, we have different types of curves, so the answer is probably that some solutions only apply to certain curves (e.g. for Montgomery Curves we can use "Montgomery ladder" which seems fast).
(This question itself probably contains some errors, misunderstandings or inaccuracies, I apologize for that I am quite new to this. Give comments about my question I will correct it and type which corrections I did in an edit.)
Different curves/forms?:
- Edwards
- Montgomery
- Weierstrass
- Hessian
Point multiplication algorithms:
The wikipedia page about Elliptic Curve Point Multiplication gives a good overview, listing some different algorithms:
- Double-and-add
- Windowed method
- Sliding-window method
- w-ary non-adjacent form (wNAF) method
- Montgomery ladder (Only for Montgomery curves?)
Coordinate system:
I know that I can use a combination of different coordinate systems:
- Affine
- Projective
- Jacobian (Weighted Projective)
- Modified Jacobian
- López–Dahab
- Chudnovsky Jacobian
Promising papers:
The paper Complete addition formulas for prime order elliptic curves by Renes et al from 2015 (download from iacr.org) lists many different algorithms some of which mixes different coordinates systems looks promising.
The paper Fast elliptic curve point multiplication for WSNs by Ravi Kodali from 2013 (download from researchgate.net) proposes a mixture between Projective and Jacobian coordinates in combination with w-ary non-adjacent form (wNAF) method. It shows some promising results.