Le projet choisit : RSA (Ronald Rivest, Adi Shamir et Leonard Adleman):
L’algorithme RSA est un algorithme de cryptage asymétrique qui se base sur les clefs
publique (e, n) et privée (d, n), afin de trouver ces clefs deux utilisateurs négocie le p et le q
qui seront des nombres premiers positive, âpres on calculera le n = p * q et le phi(n) = p-1 * q-
1
-La clé publique e est choisit selon les conditions suivantes : 3<e<phi(n) et pgcd(e,
phi(n))=1
-La clé prive d est choisit si on aura un inverse de e mod phi(n) e*d = 1 mod (phi(n))
- Pour chiffrer C = C e mod (n)
-Pour déchiffrer M = Md mod(n)
Question 1 : Donner l’algorithme de cryptage et de décryptage RSA d’un message M sachant
les clés.
//Var global
Entier p ;
Entier q ;
Entier n ;
Entier t ; //phi(n)
Grand Entier e [50] ; //pour avoir le choix de clefs à prendre
Grand Entier d [50] ;
Entier msg [5000000] ;
Entier cipher [5000000] ;
Entier cipher_tmp [5000000] ;
Entier m [5000000] ;
Entier cle ; //indice de la cle à prendre
Entier i ;
Entier j ;
//fonctions et procédures
Entier mod (entier) ;
Entier pgcd (entier) ;
Procédure key_e ;
Procédure key_d ;
Cryptage
Prod encrypt ()
Entier tmp ;
Entier C ;
i = 0 ;
tant que (msg[i] != \0’ )
tmp=msg[i] ;
tmp=tmp-96 ;
C= 1 ;
pour (j=0 jusqu’à e [cle] ; j++)
C =C*tmp ;
C =C % n ;
cipher_tmp[i] = C ;
tmp = C + 96 ;
cipher[i] = tmp ;
i++ ;
cipher[i] = -1 ; //marquer la fin
écrire (‘votre message cryptée : ’) ;
pour (i=0 ;cipher[i] != -1 ;i++)
écrire (cipher[i]) ;
Décryptage
prod decrypt ()
Entier tmp ;
Entier M ;
i=0 ;
tant que (cipher[i] != -1)
tmp= cipher_tmp[i] ;
M = 1 ;
pour (j=0 jusqu’à d [cle] ; j++)
M =M*tmp ;
M =M % n ;
tmp = M + 96 ;
cipher[i] = tmp ;
i++ ;
m [i] = -1 ; //marquer la fin
écrire (‘votre message décryptée : ’) ;
Pour (i=0 jusqu’à m[i] != -1 ; i++)
écrire (m[i]) ;
Question 2 : Préciser les structures de données nécessaires
-des entiers exemples : i, j, tmp
-des tableaux (list) de chaine de caractères exemples : msg, cipher, cipher_tmp, m
-des tableaux d’entier exemples : e et d
Question 3: Identifier les paramètres clés des algorithmes qui vont directement ou
indirectement influer sur la complexité
Direct :
-la taille du message à chiffrer et ensuite déchiffrer va influer sur la complexité temporaire et
spatiale.
-les clefs publique et privée qu’on utilise vont influez sur la complexité temporaire
Indirect :
Comme le choix des clefs e et d est dépend de phi(n) qui est a son tour dépend de p et q on
pourra déduire que les variables suivantes vont influer sur la complexité de façon indirect :
-phi (n) sur la complexité temporaire.
-p sur la complexité temporaire.
-q sur la complexité temporaire.
p et q peuvent influer un petit peu sur la complexité spatial car la taille des clefs varie de 4 à
32 oct dépendamment de la grandeur de p et q
Question 4 : Analyse et calculer la complexité temporelles et spatiales des algorithmes.
Cryptage
Complexité Temporaire :
La complexité temporaire dépend de la taille du message et de la taille de la cle publique de cryptage
(e) comme on la vu dans la question précédente.
On peut voir dans la procédure de cryptage que la boucle (pour j=0 à e [cle]) de taille dépendante de
e est imbrique dans la boucle (tant que msg[i] != ‘\0’) dépendante de la taille du message ‘length’.
hors pour chaque itération de la 2eme boucle qui dépend de la taille du message on effectue un
nombre d’opération qui sera variable de la taille de la cle publique e
Alors la complexité temporaire de cette algorithme est d’ordre O(e*length)
Complexité Spatiale:
On a comme information que :
Int 4oct
Char 1oct
Tableau (taille du type de son élément)* taille du tableau
tmp 4oct
C 4oct
i 4 oct
msg 1 oct *5000000=5 000 000oct
j 4oct
e 32 oct * 50 = 1600 oct
n 4 oct
Cipher_tmp 1 oct *5 000 000=5 000 000oct
Cipher 1 oct *5 000 000=5 000 000oct
Alors on aura besoin de 15 001 620 oct pour faire fonctionner notre procédure qui est de 15 MO
Si les tableaux msg, cipher_tmp… auront une allocation dynamique. Alors la complexité spatiale de
cet algorithme sera d’ordre O (length) mais comme ce n’est pas notre cas alors on aura la valeur 15
MO
Décryptage
Complexité Temporaire :
Comme dans l’algorithme de cryptage on aura 2 boucles imbriquées, la première qui dépend
de la taille du message chiffrée de taille ‘length’ et l’autre qui dépendra de la taille de la cle
privée de déchiffrement d.
Alors la complexité temporaire sera d’ordre O (length * d)
Complexité Spatiale:
tmp 4oct
m 4oct
Cipher 5 000 000oct
Cipher_tmp 5 000 000oct
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !