PMNS for Efficient Arithmetic and Small Memory Cost
Résumé
The Polynomial Modular Number System (PMNS) is an integer number system which aims to speed up arithmetic operations modulo a prime p. Such a system is defined by a tuple (p, n, γ, ρ, E), where p, n, γ and ρ are positive integers, E ∈ Z[X], with E(γ) ≡ 0 (mod p). In [15] conditions required to build efficient AMNS (PMNS with E(X) = X n − λ, where λ ∈ Z \ {0}) are provided. In this paper, we generalise their approach for any monic polynomial E ∈ Z[X] of degree n. We present new bounds and highlight a set of polynomials E for very efficient operations in the PMNS and low memory requirement. We also provide AMNS and PMNS modular multiplication implementations, for a prime of size 256 bits, in classic C. We also provide, for the same prime, the first implementation taking advantage of the SIMD AVX512 instruction set. The AVX512 PMNS is 72 % faster than its AMNS counterpart (classical C version). This version presents a more than 60 % speed-up in comparison with the state-of-the-art Montgomery-CIOS modular multiplication of the GMP library.
Domaines
Cryptographie et sécurité [cs.CR]Origine | Fichiers produits par l'(les) auteur(s) |
---|