Vous êtes sur la page 1sur 4

Chapitre 2

Cryptographie asymétrique :
RSA et ElGamal

� La cryptographie asymétrique (appelée aussi cryptographie à clé publique) uti-


lise deux clés ; la clé publique pour chiffrer et la clé privée pour déchiffrer.

� La cryptographie à clé publique a été créée principalement pour surmonter le problème


de distribution de clés secrètes des cryptosystèmes symétriques.

� Les cryptosystèmes asymétriques sont basés sur la dureté de certains problèmes mathématiques.

2.1 Préliminaires Mathématiques


2.2 RSA
RSA est le premier cryptosystème pratique de cryptographie à clé publique. Le cryp-
tosystème a été publié en 1978 et breveté en 1983 par ses inventeurs Rivest, Shamir et
Adleman.
RSA est un cryptosystème déterministe et sa sécurité est basée sur le problème de la
factorisation des grands nombres entiers composites.
9
CHAPITRE 2. CRYPTOGRAPHIE ASYMÉTRIQUE :
RSA ET ELGAMAL 10
Exercice 2.1
Soit n = 68563388770589888728334212322276116962302758707731144794964382966236505852251,
développer un programme en Python qui permet de :
− déterminer les facteurs premiers de n.
− calculer le temps d’exécution de ce programme.

Le cryptosystème RSA se compose d’algorithmes de génération de clés, de chiffrement


et de déchiffrement.

2.2.1 Algorithmes

Algorithm 4 : Génération de clés


Entrée: Deux nombres premiers distincts p et q des mêmes nombres de bits.
1: Calculer n = pq.
2: Calculer φ(n) = (p − 1)(q − 1).
3: Choisir un entier positif e tel que pgcd(e, φ(n)) = 1.
4: Calculer d ≡ e−1 (mod φ(n)).
Sortie: Clé publique Kpub = (n, e) et clé privée Kpr = (n, d).

Algorithm 5 : Chiffrement
Entrée: Message m < n et Kpub = (n, e).
1: Calculer c ≡ me (mod n).
Sortie: c

Algorithm 6 : Déchiffrement
Entrée: c et Kpr = (n, d).
1: Calculer m ≡ cd (mod n).
Sortie: m

Exercice 2.2
Correctness proof of RSA.

Exercice 2.3
Développer un programme en Python qui permet de :
− générer la clé publique et privée de RSA, avec p et q de taille 512 bits.
− convertir une chaı̂ne de caractères en entier.
CHAPITRE 2. CRYPTOGRAPHIE ASYMÉTRIQUE :
RSA ET ELGAMAL 11

− chiffrer.
− déchiffrer.
− calculer le temps d’exécution de chaque algorithme.

De nombreux efforts ont été faits pour accélérer les algorithmes de RSA. En 2012, le
dernier standard RSA a été proposé. RSA standard utilise n = p1 × · · · × pk , pour k ≥ 2,
et utilise le CRT pour déchiffrer.

Exercice 2.4
Redévelopper Exercice 2.3 en utilisant RSA standard.

2.3 ElGamal
Le cryptosystème ElGamal a été proposé par Taher ElGamal en 1985. ElGamal est
déterministe et sa sécurité repose sur la difficulté du problème du logarithme discret.
Les algorithmes 7, 8 et 9 représentent les algorithmes de génération de clés, de chiffre-
ment et de déchiffrement d’ElGamal cryptosystème, respectivement.

Algorithm 7 : Génération de clés


Entrée: un nombre premier p.
1: Trouver un générateur g du groupe multiplicatif Z ∗ p .
2: Choisir au hasard un entier a tel que 2 ≤ a ≤ p − 2.
3: Calculer β ≡ g a (mod p)
Sortie: Clé publique Kpub = (p, g, β) et clé privée Kpr = (a).

Algorithm 8 : Chiffrement
Entrée: Message m ∈ Z ∗ p et Kpub = (p, g, β).
1: Choisir au hasard un entier k ∈ {2, · · · , p − 2}.
2: Calculer c1 = g k (mod p) et c2 = m × β k (mod p).
Sortie: c = (c1 , c2 ).
CHAPITRE 2. CRYPTOGRAPHIE ASYMÉTRIQUE :
RSA ET ELGAMAL 12

Algorithm 9 : Déchiffrement
Entrée: c = (c1 , c2 ) et Kpr = (a).
1: Calculer m ≡ c−a1 × c2 (mod p).
Sortie: m

Exercice 2.5
Correctness proof of ElGamal.

Exercice 2.6
Développer un programme en Python qui permet de :
− générer la clé publique et privée de ElGamal, avec p de taille 1024 bits.
− chiffrer.
− déchiffrer.
− calculer le temps d’exécution de chaque algorithme.

Vous aimerez peut-être aussi