# Project : tanc

## Section: Scientific Foundations

Keywords : Cryptology, arithmetic.

### Scientific Foundations

Once considered as beautiful and 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 was enough when traffic was low, or when the
principals could meet prior to communication.

It is clear that modern networks are too large for this to be 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\left(E\right(m\left)\right)=m$) and in such a way 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 the encrypted message to him, without asking
for this use beforehand. Though simplified and somewhat idealized,
this is the heart of asymmetric cryptology. Apart from confidentiality,
modern cryptography gives good solutions to the signature problem, as
well as some solutions for identifying all parties in protocols, thus
enabling products to be usable on 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* with *E* alone must be done only in exponential time
(say), without some secret knowledge.

Now, where do difficult problems come from? Lattice theory is one point, though the resulting cryptosystems turned out to be too weak. Arithmetic is the next available field of problems. There we find the integer factoring problem, the discrete logarithm problem, 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.