Section: Software
Finite fields
Participants : Pierrick Gaudry, Emmanuel Thomé [ contact ] .
mp is (yet another) library for computing in finite fields. The purpose
of mp
is not to provide a software layer for accessing finite fields
determined at runtime within a computer algebra system like Magma, but
rather to give a very efficient, optimized code for computing in finite
fields precisely known at compile time . mp
is not restricted to a
finite field in particular, and can adapt to finite fields of any
characteristic and any extension degree. However, one of the targets being
the use in cryptology, mp
somehow focuses on prime fields and
on fields of characteristic two.
mp 's ability to generate specialized code for desired finite fields
differentiates this library from its competitors. The performance
achieved is far superior. For example, mp
can be readily used
to assess the throughput of an efficient software
implementation of a given cryptosystem. Such an evaluation is the
purpose of the “EBats” benchmarking
tool(http://www.ecrypt.eu.org/ebats/ ).
mp
entered this trend in 2007, establishing reference marks for fast
elliptic curve cryptography: the authors improved over the
fastest examples of key-sharing software in genus 1 and 2, both over
binary fields and prime fields. These timings are now comparison
references for other implementations [29] .
The library's purpose being the generation of code rather than its
execution, the working core of mp consists of roughly 18,000 lines
of Perl code, which generate most of the C code. Some part of
mp
is distributed at http://mpfq.gforge.inria.fr/ .
In 2009, some experimental code for polynomials over prime fields has
been added to mp . Although not yet distributed it has been used for
the record in genus 2 point counting (see below).