## Section: Scientific Foundations

Keywords : Cryptology, arithmetic.

### General overview

Once considered beautiful but useless, arithmetic has proven
incredibly efficient when asked to assist the creation of a new
paradigm in cryptography. Old cryptography was mainly concerned with
*symmetric techniques* : two principals wishing to communicate
secretly had to share a common secret beforehand and this same secret
was used both for encrypting the message and for decrypting it. This
way of communication is efficient enough when traffic is low, or when the
principals can meet prior to communication.

It is clear that modern networks are too large for this to remain efficient any longer. Hence the need for cryptography without first contact. In theory, this is easy. Find two algorithms E and D that are reciprocal (i.e., D(E(m)) = m ) and such that the knowledge of E does not help in computing D. Then E is dubbed a public key available to anyone, and D is the secret key, reserved to a user. When Alice wants to send an email to Bob, she uses his public key and can send him the encrypted message, without agreeing on a common key beforehand. Though simplified and somewhat idealized, this is the heart of asymmetric cryptology. Apart from confidentiality, modern cryptography provides good solutions to the signature problem, as well as some solutions for identifying all parties in protocols, thus enabling products to be usable on the Internet (ssh, ssl/tls, etc.).

Of course, everything has to be presented in the modern language of complexity theory: computing E and D must be doable in polynomial time; finding D from E alone should be possible only in, say, exponential time, without some secret knowledge.

Now, where do difficult problems come from? Mostly from arithmetical problems. There we find the integer factoring problem, the discrete logarithm problem, etc. Varying the groups appears to be important, since this provides some bio-diversity which is the key of the resistance to attacks from crypto-analysts. Among the groups proposed: finite fields, modular integers, algebraic curves, class groups, etc. All these now form cryptographic primitives that need to be assembled in protocols, and finally in commercial products.

Our activity is concerned with the beginning of this process: we are interested in difficult problems arising in computational number theory and the efficient construction of these primitives. TANC concentrates on modular arithmetic, finite fields and algebraic curves.

We have a strong well-known reputation of breaking records whatever the subject is: constructing systems or breaking them, including primality proving, class polynomials, modular equations, computing cardinalities of algebraic curves, discrete logs, etc. This means writing programs and putting in all the work needed to make them run for weeks or months. An important part of our task is now to transform record programs into ones that can solve everyday life problems for current sizes of the parameters.

Efficiency is not our single concern. Certificates are again another one. By
this, we mean that we provide proofs of the properties of the
objects we build. The traditional example is that of prime
numbers, where certificates were introduced by Pratt in 1974. These
certificates might be difficult to build, yet they are easy to check
(by customers, say). We know how to do this for elliptic curves, with
the aim of establishing what we call an **identity card** for a curve,
including its cardinality together with the proof of its
factorization, its group structure (with proven generators),
discriminant (and factorization), class number of the associated
order. The theory is ready for this, algorithms not out of reach. This
must be extended to other curves, and in several cases, the theory is
almost ready or not at all, and algorithms still to be found. This is
one of the main problems we have to tackle in TANC .

It is clear that more and more complex mathematics will be used in cryptology (see the recent algorithms that use p-adic approaches). These cannot live if we do not implement them, and this is where we need more and more evolved algorithms, that are for the moment present in very rare mathematical systems, like Magma that we use for this. It should be noted that some of our programs (an old version of ECPP, some parts of discrete log computations, cardinality of curves) are now included in this system, as a result of our collaboration with the Sydney group. Once the algorithms work in Magma , it is customary to rewrite them in C or C++ to gain speed.