Chapitre 2 10.04.04 Exercice 12 RSA Exercice 12 : Etude du système de chiffrement à clé publique RSA On rappelle l'algorithme du MIT ( Rivest, Shamir, Adleman, 1978). 1- Choisir deux nombres p et q premiers et grands (p, q > 10 100) 2 - Calculer n: = p * q z: = (p - 1) * (q - 1) 3 - Soit d un nombre premier avec z (z et d sont premiers entre eux). Z ne doit pas être divisible par D. 4 - Déterminer un entier e tel que e * d = 1 mod z . Soit A un message binaire. Découper A en blocs de k bits tel que k soit le plus grand entier tel que 2k < n. Soit P un bloc de k bits, le codage de P est donné par : C = E(P) = Pe (mod n) Le déchiffage d'un message crypté C est donné par: P= D(C) = Cd (mod n) Rappel : RSA (Algorithme à clé publique) - - Chiffrement public o La clé est un couple d’entier K=(e,n) o Chiffrement Ck(M)=Memodn Déchiffrement o K’=(d,n) d’entiers o Dk’(M)=Mdmodn Les 3 règles de Diffie et Aldeman 1- Dk’(Ck(M))=M Dk’ : Algorithme de déchiffrage Ck : fonction de chiffrement k : clé publique k’ : clé privée 2- Il est excessivement difficile de déduire Dk’ de Ck. 3- C ne peut pas être cassé par une attaque "Texte en Clair" M : Message en clair Exemple : Ck peut être public. K<>k’ cryptosystème asymétrique (ou clé publique) A ka B kb Algorithme de chiffrement C connu, ka et kb clés publiques. B Ckb(M) ; Dk’bn(Ckb(M))=M Envoie Message A M Ckb(M) : Crypté par A, reçu par B Dk’bn(Ckb(M))=M : Décrypté par B avec la clé privée. 1)- On donne les valeurs numériques suivantes : p = 3, q = 11 (trop petites en pratique, mais traitable en exercice). Calculer les valeurs des nombres d et e vérifiant les conditions de l'algorithme du MlT. Pour avoir un couple unique on prend la plus petite valeur possible de d et pour cette valeur la plus petite valeur possible de e. Quelle est la clé publique et quelle est la clé secrète? On utilise l’algorithme du MIT pour résoudre le problème. Point 1 de l’algorithme : p=3 q=11 Point 2 de l’algorithme : n=3*11=33 z=(3-1)*(11-1)=2*10=20 Point 3 de l’algorithme : On recherche d le nombre premier qui ne divise pas z. 1 2 3 5 7 11 Donc, nous prenons d=3 Point 4 de l’algorithme : e*d=1mod20; 3*e=1 mod20; 1 mod20=21; => 3*e=21; On constate que 7 et 20 n’ont pas de facteur commun. Clé publique (e,n) = (7,33) Cl é privée (d,n)=(3,33) e=21/3=7; Chapitre 2 10.04.04 Exercice 12 RSA 2) - Soit le message de 3 chiffres 1, 6, 15 soit par blocs de 5 bits la configuration de bits suivante : 00001 00110 01111 Coder ce message en utilisant les paramètres de chiffrement RSA précédents. 2k<n => P1 = 00001 P2=00110 P3=01111 Le message binaire est à découper en blocs de k bits tels que 2k<n et k doit être le plus grand possible. 2k<33; 25=32; => k=5; 25<33; n=33; Le codage d’un bloc Cx=E(Px)=P exmodn C1=P1emodn=17mod33=1mod33 C2=P2emodn=67mod33=30mod33 C3=P3emodn=157mod33=27mod33 Coder un nombre mod33 combien de bits ? 0..32 Codage : 1 30 000001 011110 => 6 Bits 27 011011 Vérification du chiffrage : Dx=D(Cx)=Cdx modn D1=13 mod33 =1 mod33 D2=303mod33=27000mod33=6mod33 D3=273mod33=19683mod33=15mod33 3) - On reçoit le message suivant par blocs de 6bits (4 , 14 , 24): 000100 001110 011000 Donner la valeur initiale du message (texte en clair), en prenant les mêmes valeurs pour d, e et k qu'à la question 2. Déchiffrage : Dx=D(Px)=Pdx modn D1=43 mod33 =64mod33=31 mod33 D2=143mod33=2744mod33=5mod33 D3=243mod33=13824mod33=30mod33 Message en clair sur 32Bits : 31 5 11111 00101 30 11110 4) - Pourquoi ne peut-on prendre p et q petits ? Cela serait trop simple, nous pourrions factoriser n. - Que se passe-t-il lorsque p et q sont de l'ordre de l0l0 ?