Introduction à la Cryptographie
TP4 : Diffie-Hellman / RSA

But du TP en utilisant la bibliothèque GMP pour manipuler les grans entiers.

Protocole d'échanges de clés
On dispose d'un entier premier p et g un générateur de Zp*, les données p et g sont publiques
Si Alice et Bob désire partager une clé secrète K.
Alice choisit un entier a (1<= a <= p-2) et transmet (g^a modulo p) à Bob
Bob choisit un entier b
(1<= b <= p-2) et transmet (g^b modulo p) à Alice
La clé partagée K est g^{ab} modulo p

Pour établir une clé secrète vous disposez d'un entier p de 1023 bits
p=DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF5449C221CB
g=2

  1. En utilisant la librairie GMP pour faire les calculs sur les grands entiers, établir une clé secrète avec un interlocuteur.
Echange de données chiffrées
  1. Echanger des messages chiffrés avec l'AES 128 bits avec l'interlocuteur avec qui vous avez convenu d'une clé secrète
Système de chiffrement à clé publique : RSA
  1. Ecrire la fonction qui permet de générer la clé publique (n,e) et la clé privée (p,q,d) du cryptosystème RSA. Le modulo n est de taille au moins 1024 bits, il est le produit de deux entiers premiers p et q de taille au moins 512 bits. L'exposant e est un entier (1<e<phi(n)) où phi(n) est l'indicatrice d'Euler de n (phi(n)=phi(pq)=(p-1)(q-1)).  L'exposant d est l'inverse de e modulo phi(n).
  2. Ecrire les fonctions de chiffrement et déchiffrement d'un clair x (x<n) avec ce cryptosystème.
  3. Chiffrer et déchiffrer des messages vaec RSA 1024 bits ou plus.