Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% ont trouvé ce document utile (0 vote)
172 vues21 pages

Crypto Cour4

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 21

RSA

Cryptographie asymétrique

La cryptographie symétrique consiste à chiffrer puis déchiffrer un message


en utilisant la même clé et le même algorithme.

La distribution des clés a été le point faible des systèmes de cryptographie


symétrique, d’où la proposition des algorithmes à clés publiques
(algorithmes asymétriques)

La cryptographie asymétrique (à clés publiques) exige que chacun des


correspondants possède une clé publiée dans un annuaire utilisée par tout le
monde pour chiffrer des messages destinés à un individu particulier, et
l’autre privée que cet individu est seul à détenir et qui lui permet de
déchiffrer les messages qu’il reçoit.

Etant donné les avantages potentiels de la cryptographie à clé publique les


chercheurs se sont attelés à la tache et quelques algorithmes ont été publiés.
RSA, Diffie Hellman, El Gamal, ….
Principe du chiffrement à clé publique
Principe du chiffrement/déchiffrement asymétrique
Omar chiffre avec la clé publique d’Ali . Ali le déchiffre avec sa
clé privée Clé publique
Clé privée d’Ali
d’Ali

Omar
Ali

Message
Chiffré
Principe du chiffrement/déchiffrement asymétrique

Afin de permettre à ses correspondants de lui envoyer des


messages cryptés, Ali doit préparer sa clé publique qu’il
diffusera à tous le monde dans un annuaire, il prépare
également sa clé privée qu’il sera seul à connaitre.

Pour chiffrer un message destiné à Ali, Omar doit récupérer la


clé d’Ali publiée dans l’annuaire.

Grace à sa clé privée, Ali peut déchiffrer et lire le message que


Bob a envoyé.
Background mathématique

Nombres premiers
Un nombre premier p est un nombre différent de 1 qui n’admet
pas d’autres diviseurs que 1 et lui-même.
Un nombre qui n’est pas premier est appelé nombre composé.

On a les résultats suivants :

 Tout nombre admet au moins un facteur premier.


 L’ensemble des nombres premiers est infini.
 Tout entier peut se décomposer en produit de facteurs premiers.

Le problème de la factorisation en nombres premiers est un


problème difficile qui nous le verrons a permis de mettre en
place des systèmes cryptographiques presque inviolable.
Background mathématique

a et b sont premiers entre eux si : pgcd (a,b)=1.


Relation de Bézout : u , v  z; au + bv = 1

Congruence dans Z
Les entiers relatifs a et b sont congrus modulo n s’ils ont même
reste par la division par n. Il revient au même de dire que b-a
est multiple de n.
On note : a  bn  ou a  b(mod n )

x  x' n xy  x' y ' n

y  y ' n x + y  x'+ y ' n


Algorithme d’Euclide

Cet algorithme permet de calculer le pgcd de deux entiers a


et b en effectuant un nombre fini de divisions
euclidiennes.
Exemple
pgcd(84,30) =?
 84=2x30 + 24
 30=1x24 + 6
 24=4x6 + 0

pgcd(84,30) =6
Algorithme d’Euclide étendu
L’algorithme d’Euclide étendu permet de déterminer d = pgcd(a,b)
ainsi que deux entier u et v vérifiant : d = au + bv

Exemple
a=172 ; b=31 1=3-2
 172=5x31 + 17 1 = 3 – (14 - 4x3)
 31=1x17 + 14 1 = -14 + 5x3
 17= 1x14 + 3 1 = -14 +5(17 – 14)
 14=4x3 + 2 1 = 5x17 - 6x14
 3=1x2 + 1 1 = 5x17 – 6(31 – 17)
 2=2x1 + 0 1 = -6x31 + 11x17
1 = -6x31 + 11(172 – 5x31)
1 = 11x172 -61x31
pgcd(172,31) =1 u = 11 ; v= -61
Théorèmes de Fermat et d’Euler

Petit théorème de Fermat (Pierre de Fermat, 1601-1665) :


Etant donné un nombre premier p et un entier , a  z on a :

a p  a (mod p )

Indicatrice d’Euler : Soit n un entier positif, l’indicatrice d’Euler de n, notée  (n)


est définie comme étant égal au nombre des entiers k vérifiant
(1  k  n) et ( p gcd(k , n) = 1).
c’est-à-dire : k et n sont premiers entre eux
Notons que pour tout entier positif n, on a pgcd (1, n) = 1, ce qui fait que  (n)  1

Théorème d’Euler : Soit n un entier positif, et soit a  z un entier premier avec


n ; alors :
a ( n )  1(mod n)
Théorèmes de Fermat et d’Euler

Petit théorème de Fermat a p  a(mod p) ou a p −1  1(mod p )


Exemple p=7, a=2 , 3 ….
2 7 = 2 mod 7 37 = 3 mod 7
Théorème d’Euler a ( n )  1(mod n)
 Exemple n=15 , a=2
(seuls 1 2 4 7 8 11 13 14 sont premiers avec 15)
 (n) =  (15) = 8
 On vérifie facilement que 28 = 1 mod 15
 Remarque : si n=pq (p et q premiers) alors :  (n) = ( p − 1)(q − 1)
 (35) = (7 − 1)(5 − 1) = 24  (77) = (11 − 1)(7 − 1) = 60
Algorithme RSA
L’algorithme RSA est sans doute le plus utilisé des systèmes à clé
publique actuellement ; il a été présenté en 1977 par Rivest,
Shamir, et Adleman. Il nécessite des clés d’au moins 1024 bits
pour obtenir une sécurisation satisfaisante.
Principe de fonctionnement du RSA
 Etape 1: Création des clés

Ali choisit au hasard deux nombres premiers p et q et calcule :

n = pq et  (n) = ( p − 1)(q − 1)

Il choisit au hasard e tel que :



1  e  (n) = ( p −1)(q −1)



 p gcd(e, (n)) =1

Ali calcule l'entier d pour inverser la fonction de chiffrement tel que

1  d  (n)



ed = 1 mod

 (n)
La clé publique d’Ali est (n,e) et sa clé secrète est (n,d ).
Principe de fonctionnement du RSA
Etape 2: Chiffrement du message
Omar récupère la clé publique (n,e) d’Ali et souhaite lui envoyer la version
cryptée d'un texte en clair, représenté par la donnée d'un entier m tel que :

Omar calcule :
c = me mod n
Etape 3: Déchiffrement du message

Lorsque Ali reçoit c , il calcule cd , et récupère ainsi le message m puisque :


m = cd mod n
Ce qu’est en rouge sont des nombres privée d’Ali.
Chiffrement
Le message m de Bob doit être un nombre inférieur à n
(si besoin il le découpe en morceaux...)
(par exemple m = 5 )
Bob calcule 𝑚𝑒 ( 53 = 125 )
Il calcule ensuite m' : le reste quand on divise le résultat par n.
(125 : 33, il reste 26 donc m' = 26 )
Puis, il envoie m' à Alice.
Déchiffrement
Grâce à sa connaissance de p et q, Alice peut calculer
l'exposant de déchiffrement d.
(dans notre exemple d =7 )
Alice calcule (𝑚′𝑑 = 267 = 8031810176)
puis le reste de ce résultat dans la division par n. Elle obtient
alors m.
(8031810176 = 243388187 × 33 + 5 donc m = 5 )
Utilisation
RSA est l'algorithme de chiffrement à clé publique le plus utilisé au
monde, il y a des milliards de clé en circulation, voici un exemple:
e = 65537
n=
2543723672617036404984298533552303801343485434657609491236272414180
0994646777475437951418768539334747693335542224118691038557506019023
0983811198655239748133820379688750291342359212902269832105311044880
9044555831032513028375943210667652247737235579107002597108279356788
4626493566709557942625314511960369798704710138177179751196034939710
0831259240138273067227528425115698161694006834217096371915681805690
0287183577183207871476538332347086697327005423425332242085706856835
5521351754756954627591585033004508819126102258985127289641085633316
4705886963299294229080168950589300735601190721120830002392784227775
47566486382051
On peut montrer que si on obtient d, (ce qui signifie que l'on a
réussi la cryptanalyse totale de RSA), on peut factoriser n.
Or, il semble que la factorisation est un problème difficile à
résoudre
(= impossible pour les grands nombres).
Donc, si cette hypothèse est vraie, on ne peut pas réussir la
cryptanalyse totale de RSA !
Voici le challenge RSA-1024 (1024 bits = 309 chiffres)

13506641086599522334960321627880596993888147560566
70275244851438515265106048595338339402871505719094
41798207282164471551373680419703964191743046496589
274256239341020864383202110372958725762358509643110
56407350150818751067659462920556368552947521350085
287941637732853390610975054433499981115005697723689
0927563
Jusqu'en 2007, factoriser ce nombre valait 100 000 $, il
n'est toujours pas factorisé en 2013. Cependant, on semble
proche d'y arriver, il est désormais recommandé d'utiliser
RSA-2048 …
Exercice
 Prenons p = 29; q = 31 et e = 13: Utilise le protocole RSA
pour chiffrer et déchiffrer M = 123
Solution
Les variables étant données, p = 29; q = 31; e = 13;m = 123;
Nous calculons : n = p q = 899
(p - 1) (q - 1) = 840
d = 517 car e.d = 13 . 517 = 8.840 + 1
Pour chiffrer,
c = 123^13 mod 899 = 402
Et pour déchiffrer,
m = 402^517 mod 899 = 123

Vous aimerez peut-être aussi