Le chiffrement asymétrique Pr Belkhir Abdelkader 08/04/2017 Pr BELKHIR Abdelkader
Cryptographie asymétrique Le chiffrement par clé publique Merkle-Hellman RSA : Rivest - Shamir - Adleman El Gamal Comparaisons 08/04/2017 Pr BELKHIR Abdelkader
Chiffrement asymétrique La clé de chiffrement publique est pk La clé sk reste privée et sert au déchiffrement uniquement Sk clé privée Ma clé publique = pk c m E D m Algorithme de chiffrement Algorithme de déchiffrement La clé public ne permet pas de déchiffrer (en particulier, elle ne permet pas de retrouver la clé privée 08/04/2017 Pr BELKHIR Abdelkader
Définition formelle Un chiffrement à clé publique se compose de trois algorithmes: Algorithme de génération de clés: KG(l)=(pk, sk); il produit un couple (clé publique, clé privée) Algorithme de chiffrement: E(m,pk)=c utilise la clé publique pk pour chiffrer un message m Algorithme de déchiffrement: D(c,sk)=m : utilise la clé privée sk pour retrouver m 08/04/2017 Pr BELKHIR Abdelkader
Restes Chinois Comment travailler avec plusieurs modules ? Théorème Si m et n sont premiers entre eux alors la condition : est équivalente à : a b (mn) Preuve: Si a b (mn) les deux relations a b (m) et a b (n) ont bien lieu. Réciproquement si ces deux relations ont lieu alors il existe k1 et k2 tels que : a - b = k1m = k2n On voit alors que m divise k2n et comme il est premier avec n il divise k2. Si bien que : a - b = k3mn 08/04/2017 Pr BELKHIR Abdelkader
Restes Chinois : un exemple numérique Résoudre z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 z mod 3 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 z mod 5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 Le couple (2; 3) correspond à z = 8 Comment résoudre le problème sans calculer le tableau ? 08/04/2017 Pr BELKHIR Abdelkader
Restes Chinois : un exemple numérique Soient m et n premiers entre eux. On cherche toutes les solutions entières de : Théorème des restes chinois Soit u et v deux entiers tels que un + vm = 1. L'entier c défini par l'égalité c = aun + bvm est solution puisque c = a(1 − vm) + bvm = a + vm(b − a) a (mod m), c = aun + b(1 − un) = b + un(a − b) b (mod n). Il est facile de vérifier que pour tout entier k Z, l'entier x = c + kmn est aussi solution 08/04/2017 Pr BELKHIR Abdelkader
Preuve du théorème Par un calcul direct on vérifie que x = bum + avn est bien une solution. On vérifie alors que pour tout entier k, x + kmn est aussi une solution. Si maintenant x et y sont deux solutions, par différence on obtient : ce qui nous permet de conclure : y = x + kmn grâce au théorème précédent Remarque: Il y a donc une solution unique y vérifiant 0≤y<mn; ce qui peut s’exprimer encore en disant qu’il y a une unique solution dans Z/mnZ. 08/04/2017 Pr BELKHIR Abdelkader
Généralisation Théorème Si les entiers n1,n2,..,nk sont deux à deux premiers entre eux, alors le système : a une solution unique modulo n = n1n2...nk. 08/04/2017 Pr BELKHIR Abdelkader
Le subset sum problem 08/04/2017 Pr BELKHIR Abdelkader
Séquence super-croissante 08/04/2017 Pr BELKHIR Abdelkader
Les séquences super-croissantes Une séquence de nombres est un séquence supercroissante (super-increasing sequence) si chaque nombre de cette séquence est plus grand ou égal à la somme des éléments qui le précédent dans la séquence. Le problème de la somme des sous-ensembles (subset sum problem) se résout en une complexité polynomiale pour les séquences super-croissantes. 08/04/2017 Pr BELKHIR Abdelkader
Subset sum problem (exemple 1) Soit la séquence super-croissante suivante : E = {6, 15, 37, 83, 190, 386, 781, 1580}. Existe-t-il un sous- ensemble de E tel que la somme des éléments de sous ensemble donne s = 1221 ? L’algorithme évolue ainsi : Quand la boucle de l’algorithme se termine s vaut toujours 2 (et non 0), cela indique qu’il n’y a pas de sous-ensemble de valeurs de E telles que leur somme égale s. En effet, si nous prenons les éléments de E correspondant au xi qui valent 1, nous avons : 781+386+37+15 = 1219 1221. 08/04/2017 Pr BELKHIR Abdelkader
Subset sum problem (exemple 2) Si avec la même séquence E : E = {6, 15, 37, 83, 190, 386, 781, 1580}, nous cherchons un sous-ensemble dont la somme serait s = 619, alors nous avons : Quand la boucle de l’algorithme se termine s vaut 0 ce qui signifie que nous avons trouvé un sous-ensemble de valeurs de E telles que leur somme égale s. Si nous prenons les éléments de E correspondant au xi qui valent 1, nous avons : 386+190+37+6 = 619. 08/04/2017 Pr BELKHIR Abdelkader
Merkle-Hellman Génération des clés Un entier n est fixé comme paramètre commun choisir une séquence super-croissante de n éléments bi et un modulus M tels que : M > b1 +. . .+bn choisir un entier W ∈ [1,M − 1] tel que W soit premier avec M calculer ∀i ∈ [1, n] : ai = W · bi mod M La clé publique est (a1, . . . , an) La clé secrète est (M,W, b1, . . . , bn) 08/04/2017 Pr BELKHIR Abdelkader
Merkle-Hellman (suite) Chiffrement Soit x un message à chiffrer de n bits Calculer y = x1 · a1 +. . .+xn · an Déchiffrement calculer d = W−1 · y mod M résoudre le « subset sum problem» sur la séquence des bi avec la somme égale à d le message clair x est tel que d = x1 · b1 +. . .+xn · bn 08/04/2017 Pr BELKHIR Abdelkader
Merkle-Hellman (exemple) 08/04/2017 Pr BELKHIR Abdelkader
Fonction d’Euler Définition La fonction d’Euler (n) représente le nombre d’éléments dans Zn* (n) est le nombre d’éléments de {0, …,n} qui sont premiers avec n (1) = 1 car Z1*= {0} 08/04/2017 Pr BELKHIR Abdelkader
Fonction d’Euler Théorème: 08/04/2017 Pr BELKHIR Abdelkader
Théorème d’Euler Pour tout a et n, si pgcd(a; n) = 1 alors 08/04/2017 Pr BELKHIR Abdelkader
Le chiffrement RSA Génération des clés choisir aléatoirement deux grands premiers distincts p et q approximativement de la même taille calculer n = p*q et (n) = (p − 1)(q − 1) choisir un entier e aléatoire ∈]1, (n)[ tel que pgcd(e, (n))=1 calculer l’unique d ∈ ]1, (n)[ tel que e · d ≡ 1 (mod (n)) La clé publique est (n, e) La clé secrète est d 08/04/2017 Pr BELKHIR Abdelkader
RSA (suite) Chiffrement Soit le message x ∈ Zn à chiffrer. Calculer : y = xe mod n Déchiffrement y est déchiffré en calculant : x = yd mod n 08/04/2017 Pr BELKHIR Abdelkader
Déchiffrement de RSA Preuve : par définition et propriétés des opérations modulo n, on a : Dk(Ek(M)) = ((M)e mod n)d mod n = (Me)d mod n = Me∗d mod n Et donc : Me∗d = Mk∗(n)+1 = Mk∗(n).M mod n = 1.M mod n = M mod n 08/04/2017 Pr BELKHIR Abdelkader
RSA - Exemple (suite) Lorsqu’Alice veut envoyer un message x = 10010111111110 (=9726 en décimal) à Bob à qui appartient la clé publique ci-dessus, elle calcule : y = xe mod n = 97263533 mod 11413 = 5761 Bob déchiffre le message chiffré y en calculant : x = yd mod n = 57616597 mod 11413 = 9726 08/04/2017 Pr BELKHIR Abdelkader
RSA - Exemple Soient p = 101, q = 113 Donc n = p · q = 11413 Et (n) = 100 · 112 = 11200 (= 26 · 52 · 7) Soit e = 3533, nous avons bien (e, (n)) = 1 Alors d = 6597 qui vérifie e · d ≡ 1 (mod (n)) La clé publique est (e, n) = (3533, 11413) La clé privée est d = 6597 08/04/2017 Pr BELKHIR Abdelkader
RSA: Exemple 08/04/2017 Pr BELKHIR Abdelkader
Contrainte sur l’usage des clés Théorème : Connaissant une clé publique (e, n) et la clé privée associée d, nous pouvons factoriser n Preuve : Nous avons ed ≡ 1 (mod (n)) Pour n’importe quel entier a ∈ Zn∗ nous avons : aed−1 ≡ 1 (mod n) Nous pouvons écrire ed−1 = 2st avec t entier impair Si est une racine carrée triviale de 1 modulo n on choisit un autre entier a Sinon (avec z qui est une racine carrée non triviale de 1 modulo n) nous avons z2 ≡ 1 (mod n) et n divise z2 − 1, donc n divise (z − 1)(z +1) 08/04/2017 Pr BELKHIR Abdelkader
Contrainte sur l’usage des clés (suite) Que valent (z − 1, n) et (z +1, n) ? Ces deux plus grands commun diviseur ne peuvent prendre comme valeurs que 1, p, q ou n Aucun des deux pgcd ne peut valoir n. En effet, si (z − 1,n) = n alors z − 1 est un multiple de n, donc z ≡ 1 (mod n) et z est une racine carrée triviale de 1. Le raisonnement est le même si (z +1, n) = n De même, les deux pgcd ne peuvent être simultanément égaux à 1, car si (z−1, n) = 1 et (z+1, n) = 1 alors n ne divise pas z2 − 1 Conclusion : au moins un des deux pgcd vaut p ou q Corollaire : Deux utilisateurs ne peuvent avoir le même n dans leur clé publique 08/04/2017 Pr BELKHIR Abdelkader
Attaque cyclique Soit Alice qui envoie à Bob un message y chiffré avec sa clé RSA (e, n) Oscar intercepte ce message y qu’il sait être à destination de Bob et « surchiffre » itérativement ce message chiffré. Il calcule ainsi : 08/04/2017 Pr BELKHIR Abdelkader
Définition -L’ordre du groupe, |G|, est le nombre d’éléments dans G Définition -L’ordre du groupe, |G|, est le nombre d’éléments dans G. -L’ordre d’un élément a d’un groupe G est le plus petit t > 0 tel que at=e (élément neutre). Notation Ord(a;G) ou Ord(a) 08/04/2017 Pr BELKHIR Abdelkader
El Gamal Génération des clés choisir aléatoirement un grand premier p trouver un générateur du groupe multiplicatif Z∗p choisir aléatoirement un entier a ∈ [1, p − 2] calculer = a mod p La clé publique est (p, , ) La clé secrète est a 08/04/2017 Pr BELKHIR Abdelkader
El Gamal Soit un entier premier p très grand et p − 1 doit avoir un grand facteur premier. On produit : – une clé secrète s, telle que s ∈ (1...p − 2), – une clé publique reposant sur l’entier p, un entier a premier avec p, et l’entier P tel que P = as mod p Le nombre a est pris tel que a ∈ (0...p − 1) et ∀ k ∈ (1...p − 2) : ak 1 mod p 08/04/2017 Pr BELKHIR Abdelkader
El Gamal (suite) Chiffrement Soit un message M, avec M < p. On détermine un nombre aléatoire k qui n’est connu que de celui qui chiffre et différent à chaque message. On calcule alors C1 = ak mod p C2 = M.Pk mod p On obtient alors le message chiffré C = (C1,C2) Déchiffrement Soient (C1, C2) représentant le chiffré : M = C1−s · C2 mod p 08/04/2017 Pr BELKHIR Abdelkader
El Gamal - Exemple Soient p = 2579, a = 2, s = 765. Il vient – Clé privée Sk = (765) – Clé publique Pk = (2579, 2, 949) car 2765 mod 2579 = 949 Pour chiffrer M = 1299, on choisit k = 853. Il vient C1 = 2853 mod 2579 = 435 C2 = 1299 ∗ 949853 mod 2579 = 2396 On peut effectivement vérifier que 2396/(435765) mod 2579 = 1299. 08/04/2017 Pr BELKHIR Abdelkader
Comparaison 08/04/2017 Pr BELKHIR Abdelkader