Première partie
Cryptographie et complexité algorithmique
1 Le chiffrement RSA
1.1 Historique
Dans les années soixante-dix,Withfield Diffie et Martin Hellman veulent résoudre le
problème de l’échange des clefs dans le but de s’envoyer des messages cryptés. Ils sont
persuadés de l’existence d’une solution à ce problème. En effet, imaginons le scénario
suivant :
Alice envoie à Bob une clef placée dans un coffre en fer verouillé avec son
cadenas. Bob lui renvoie la boîte en y ajoutant son propre cadenas. Alice enlève
son cadenas et renvoie à Bob la boîte qu’il peut enfin ouvrir. Et Eve n’a pas pu
intercepter leur clef.
C’est le concept du chiffre asymétrique. Le problème est de trouver des fonctions
mathématiques permettant un tel codage. En 1976, après deux ans de recherches, Hellman
trouve enfin une solution utilisant l’arithmétique modulaire.
Alice et Bob choisissent deux nombres premiers pet q.
Par exemple, p= 23 et q= 3
– Alice choisit un nombre secret a= 6
– Alice envoie à Bob la valeur 36≡16 (mod 23)
– Bob choisit à son tour un nombre secret b= 15
– Bob envoie à Alice la valeur 315 ≡12 (mod 23)
– Alice peut maintenant calculer la clé secrète : 126≡9 (mod 23)
– Bob fait de même et obtient la même clef qu’Alice : 1615 ≡9 (mod 23)
En 1975, Ronald Rivest, Adi Shamir et Leonard Adleman, la curiosité éveillée par les
idées de Diffie et Hellman se mirent eux aussi à la recherche de telles fonctions. En 1977,
après une fête, Rivest trouve enfin une solution : C’est la naissance du code RSA (Rivest
Shamir Adleman), c’est la naissance de la cryptograhie à clef publique.
Selon le gouvernement anglais, ce système de cryptographie à clef publique aurait déjà été
inventé en 1970 au GCHQ (Government Communications Headquarters). L’idée de clef
publique était venue de James Ellis ( ”chiffrement non secret” selon sa propre nomencla-
ture). Il chercha pendant trois ans sans trouver de fonctions mathématiques répondant à
tant de contraintes. En 1973 arrive un mathématicien spécialiste en théorie des nombres :
Clifford Cocks. On lui expose le problème, une demi-heure plus tard, il trouve une solu-
tion ; c’est la même que celle de Rivest.
1.2 Le chiffrement
Ce chiffrement utilise l’arithmétique de Z/nZoù nest le produit de deux nombres pre-
miers distincts (habituellement grands) pet q. Pour cet entier n, on a ϕ(n) = (p−1)(q−1) ;
où ϕest la fonction d’Euler. La description d’un tel système est :
Chiffrement 1.1 : le chiffrement RSA
1. On pose n=pq où pet qsont premiers
4