Paper 2025/467
PMNS arithmetic for elliptic curve cryptography
Abstract
We show that using a polynomial representation of prime field elements (PMNS) can be relevant for real-world cryptographic applications even in terms of performance. More specifically, we consider elliptic curves for cryptography when pseudo-Mersenne primes cannot be used to define the base field (e.g. Brainpool standardized curves, JubJub curves in the zkSNARK context, pairing-friendly curves). All these primitives make massive use of the Montgomery reduction algorithm and well-known libraries such as GMP or OpenSSL for base field arithmetic. We show how this arithmetic can be advantageously replaced by a polynomial representation of the number that can be easily parallelized, avoids carry propagation, and allows randomization process. We provide good PMNS basis in the cryptographic context mentioned above, together with a C-implementation that is competitive or faster than GMP and OpenSSL for performing basic operations in the base fields considered. We also integrate this arithmetic into the Rust reference implementation of elliptic curve scalar multiplication for Zero-knowledge applications, and achieve better practical performances for such protocols. This shows that PMNS is an attractive alternative for the base field arithmetic layer in cryptographic primitives using elliptic curves or pairings.
Metadata
- Available format(s)
-
PDF
- Category
- Implementation
- Publication info
- Preprint.
- Keywords
- Polynomial Modular Number SystemCryptographyElliptic curvesPairingsBrainpoolJubJub
- Contact author(s)
-
fanganyssouf dosso @ emse fr
sylvain duquesne @ univ-rennes fr
nadia el-mrabet @ emse fr
25 emma gautier @ gmail com - History
- 2025-03-13: approved
- 2025-03-12: received
- See all versions
- Short URL
- https://ia.cr/2025/467
- License
-
CC BY
BibTeX
@misc{cryptoeprint:2025/467, author = {Fangan Yssouf Dosso and Sylvain Duquesne and Nadia El Mrabet and Emma Gautier}, title = {{PMNS} arithmetic for elliptic curve cryptography}, howpublished = {Cryptology {ePrint} Archive, Paper 2025/467}, year = {2025}, url = {https://eprint.iacr.org/2025/467} }