Document

publicité
LES GARDIENS DES CLES
Partie 6 :
Le code RSA
Les congruences
Congruences
On considère la division par un nombre appelé le modulo.
Si deux nombres donnent le même reste par une telle division, on dit
qu’ils sont congrus pour ce modulo :
23 ÷ 7 = 3 reste 2
37 ÷ 7 = 5 reste 2
alors 23 et 37 sont congrus modulo 7.
On écrit :
23 37 mod 7
Dans ce cas, la différence entre ces deux nombres est un multiple du
modulo.
Ici,
37 – 23 = 14
est un multiple de 7.
Exercice :
Vérifier que 136 et 2656 sont congrus modulo 12.
136= 12×11 + 4
2656 = 12×221 + 4
Operations sur les congruences
La relation de congruence est compatible avec l’addition et la multiplication :
a a' mod n
Si
b b ' mod n
et
alors
et
a b a ' b'
a b a ' b'
Exemple : 23
5
37
40
mod n
mod n
mod 7
mod 7
et
28= (4×7) + 0
77=(11×7) + 0
and
115=(16×7) + 3
1480=(211×7) + 3
alors
then
23 5 37 40
23 5 37 40
mod 7
mod 7
L’indicateur d’Euler
La fonction indicatrice d’Euler
•
Définition
On appelle indicateur d’Euler noté φ(n) le nombre
d’éléments inversibles pour la multiplication dans Z
nZ
C’est-à-dire que l’indicateur d’Euler correspond à la quantité
de nombres inférieurs à n et premiers avec n.
•
Remarque : Lorsque p est un nombre premier, φ(p) = p – 1 .
•
Indicateur d’Euler d’une puissance de nombre premier :
Soit p un nombre premier et s >0 un entier, alors on a :
s
(p )
p
s
p
s 1
p 1
p
p
s
Preuve : Soit m = ps , φ(m) est le nombre d’entiers inférieurs à ps qui ne sont
pas divisibles par p.
Notons ci-dessous les multiples de p inférieurs ou égaux à ps :
p×1 , p×2 , p×3 , p×4 , … , p×ps-1
On dénombre ps-1 nombres. Nous pouvons retirer ces multiples des ps premiers
entiers pour obtenir la réponse. Donc φ(ps ) = ps – ps-1 .
Une conséquence du Théorème Chinois pour
l’indicateur d’Euler
Propriété :
Si
PGCD(p,q)=1
alors
φ(p×q) = φ(p) × φ(q) .
Exemple : PGCD(12,25)=1
φ(12)= 4
φ(25)= 20
liste : 1, 5, 7, 11
liste : 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 23, 24
φ(300) = φ(12×25) = φ(12)×φ(25) = 4×20 = 80
Euler
Leonhard Euler (1707-1783) fût un grand
mathématicien et physicien suisse. Il fît
d’importantes
découvertes
dans
des
domaines aussi divers que le calcul
infinitésimal et la théorie des graphes. Il
introduisit aussi l’essentiel des notations et de
la terminologie moderne des mathématiques
dans le domaine de l’analyse. Il est aussi
reconnu pour ses travaux dans les domaines
de la mécanique, de la dynamique des
fluides, de l’optique, et de l’astronomie.
Euler développa quelques idées de Fermat, et
recusa quelques unes de ses conjectures. Les
travaux d’Euler dans le domaine de
l’arithmétique ont préparé la voie aux travaux
à venir de Carl Friedrich Gauss.
Propriétés de l’indicateur d’Euler
• En utilisant la décomposition en produit de facteurs premiers :
Considérons un entier n avec sa décomposition ci-dessous :
n
Alors
( n)
p1 1
1
n 1
p2 2
1
p1
1
p3 3
1
1
p1 1 p2 2 p3 3
... pk k
... pk k 1 ( p1 1)( p2 1)( p3 1) ... ( pk 1)
1
p2
1
1
p3
...
1
1
pk
Propriétés de l’indicateur d’Euler
• En utilisant la décomposition en produit de facteurs premiers :
Considérons un entier n avec sa décomposition ci-dessous :
n
Alors
( n)
p1 1
1
n 1
p2 2
1
p1
1
p3 3
1
1
p1 1 p2 2 p3 3
... pk k
... pk k 1 ( p1 1)( p2 1)( p3 1) ... ( pk 1)
1
p2
1
1
p3
...
1
1
pk
Preuve : La conséquence du Théorème Chinois nous donne :
(n )
p1 1
p2 2 p3 3 ... pk k
p1 1
p2 2
p3 3
... pk k
p1 1
p2 2
p3 3
...
pk k
On peut alors exploiter l’indicateur d’Euler d’une puissance de
nombre premier :
(n) p1 1 1 p1 1 p2 2 1 p2 1 p3 3 1 p3 1 ... pk k 1 pk 1
• En utilisant la liste des diviseurs :
Considérons un entier m>1 , et la liste de ses diviseurs :
d 1 , d2 , d 3 , … , dk
On a alors :
m = φ(d1) + φ(d2) + φ(d3) + … + φ(dk)
Preuve : Considérons les nombres 1 , 2 , 3 , 4 , … , m–2 , m–1 , and m
listés dans l’ordre numérique de leur PGCD avec m.
Considérons un PGCD noté k. Ce nombre k est un diviseur de m.
Pour tout entier x on a donc :
x m
PGCD ,
1
k k
PGCD x, m k
qui est équivalent à
x m
1 x m
1
k k
m
Donc une quantité
des nombres 1 , 2 , 3 , 4 , … , m-1 , et m
k
admettent le nombre k pour PGCD avec m.
Alors
m
km
Car les nombres
m
k
m
k
(d )
dm
décrivent tous les diviseurs de m.
• Theorème : ordre d’un élément du groupe multiplicatif modulo n.
Soit un entier positif m premier avec un entier a.
Il existe un entier positif t , appelé ordre de a modulo m, tel que la
série des restes modulo m des nombres 1 , a , a2 , a3 , a4 , … , ak , …
soit périodique de période t .
• Remarque :
*Dans ce cas, a génère un sous-groupe multiplicatif modulo m qui
contient t éléments. Ceci en raison d’une évidente stabilité, et du
fait que l’inverse de a est at-1 .
* ( a n 1 modm ) est équivalent à ( t est un diviseur de n )
• Définition :
Lorsque a génère l’ensemble du groupe multiplicatif modulo m ,
on a : t=φ(m) .
On dit alors que a est une racine primitive modulo m.
Exemples :
• m = 13 ,
φ(13) = 12
a
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14
a15
2
4
-5
3
6
-1
-2
-4
5
-3
-6
1
2
4
-5
On obtient t = 12 pour période. Donc 2 est une racine primitive modulo 13.
a
a2
a3
a4
a5
a6
a7
a8
a9
3
9
1
3
9
1
3
9
1
a10
a11
a12
a13
a14
a15
On obtient t = 3 pour période. (3 n’est donc pas une racine primitive modulo 13)
• m = 15 , φ(15) = (3-1)(5-1) = 8
a
a2
a3
a4
a5
a6
a7
a8
a9
2
4
8
1
2
4
8
1
2
a10
a11
a12
a13
a14
a15
On obtient t = 4 pour période. (2 n’est donc pas une racine primitive modulo 15)
• m = 17 , φ(17) = 16
a
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
2
4
8
-1
-2
-4
-8
1
2
4
8
-1
a13
a14
a15
On obtient t = 8 pour période. (2 n’est donc pas une racine primitive modulo 17
Le Théorème d’Euler
Les exemples précédents nous permettent de penser
que l’ordre d’un élément est un diviseur de l’indicateur
d’Euler.
Considérons deux entiers a et m premiers entre eux
avec m>0, alors
a ( m) 1 modm
Preuve:
Si t = φ(m) , la propriété est établie. Considérons donc t < φ(m), alors il
existe un entier b vérifiant PGCD(b,m)=1, et tel que b ne soit congru
modulo m à aucun nombre de la suite 1 , a , a2 , a3 , … , at-2 , at-1 .
Les nombres b , ba , ba2 , ba3 , … , bat-2 , bat-1 n’ont aucun diviseur
commun avec m. Ils sont incongrus deux à deux ( car bak bal
signifierait a k al modm) et ils ne sont congrus avec aucune puissance
de a (puiqu’à partir de bak a lavec k et l <t, on aurait bak a t l c’est
t l k
modm ) .
à dire b a
Donc φ( m)≥2t. Si φ(m)>2t, on obtient à nouveau t nombres c , ca , ca2 ,
ca3 , … , cat-2 , cat-1 incongrus deux à deux, incongrus avec les nombres des
listes précédentes, et sans aucun diviseur en commun avec m.
Puisque φ(m) est fini, ce processus va s’arrêter, et φ(m) est un multiple
de t.
Le codage RSA
Le système de cryptage RSA
L’algorithme à clé publique
Pour contourner la problématique de la transmission au correspondant de la
clé secrête, le principe de l’algorithme à clé publique fut proposé par Diffie et
Hellman en 1976:
- On peut constituer un annuaire pour tous les correspondants.
- N’importe qui peut envoyer un message à tout correspondant qui est
répertorié dans l’annuaire.
- Mais ce message peut seulement être décodé par le vrai destinataire,
qui est le seul à possèder la clé de décryptage.
Cet algorithme fût développé par Rivest, Shamir, et Adleman en 1977, under
sous l’appelation de système RSA.
Principe du système RSA
Considérons p et q deux nombres premiers. Choisissons les suffisamment grands
pour que n = p×q ne puisse pas être factorisé facilement. On obtient :
Pour tout x dans Z
Si
t
tel que p et q ne soient pas diviseurs de x ,
nZ
1 mod((p 1)(q 1))
alors
x t x modn
En considérant alors c et d inverses l’un par rapport à l’autre modulo (p-1)(q-1) , on
obtient :
d
Si
cd 1 mod((p 1)(q 1))
alors
xc
x mod pq
Comme il est difficile de factoriser n, on ne peut pas obtenir (p-1)(q-1) et donc
l’inverse d de c modulo (p-1)(q-1) reste inconnu du public
Nous disposons donc d’un algorithme de cryptage à clé publique (n,c) :
1) On découpe le message en blocs d’une longueur qui prend en compte la valeur
de n.
2) On élève chaque bloc à la puissance c modulo n.
3) Seule la personne supposée recevoir le message (qui est enregistrée dans
l’annuaire avec la clé publique c) connait la clé privée d. Cette personne est la
seule à pouvoir décoder le message.
Preuve
Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q.
Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq
pour tout entier a tel que a et pq soient premiers entre eux.
Preuve
Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q.
Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq
pour tout entier a tel que a et pq soient premiers entre eux.
k
Alors pour tout entier k :
a ( pq )
1k mod pq
a
( p 1)( q 1) k
ak( p
1)( q 1)
1 mod pq
1 mod pq
Preuve
Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q.
Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq
pour tout entier a tel que a et pq soient premiers entre eux.
k
Alors pour tout entier k :
a ( pq )
1k mod pq
a
( p 1)( q 1) k
ak( p
1)( q 1)
1 mod pq
1 mod pq
Considérons deux entiers r et s congruents modulo (p-1)(q-1) , alors on a :
r s mod(p 1)(q 1) c’est-à-dire qu’il existe k tel que : r – s = k(p-1)(q-1).
Et on a alors : a r s 1 mod pq pour tout entier a dont p et q ne sont pas
diviseurs.
On obtient la propriété :
Si PGCD(a, pq) 1 et r s mod(p 1)(q 1) alors a r a s mod pq
Preuve
Considérons deux nombres premiers p et q , et un nombre a premier avec n=p×q.
Le théorème d’Euler nous donne pour résultat : a ( pq ) 1 mod pq
pour tout entier a tel que a et pq soient premiers entre eux.
k
Alors pour tout entier k :
a ( pq )
1k mod pq
a
( p 1)( q 1) k
ak( p
1)( q 1)
1 mod pq
1 mod pq
Considérons deux entiers r et s congruents modulo (p-1)(q-1) , alors on a :
r s mod(p 1)(q 1) c’est-à-dire qu’il existe k tel que : r – s = k(p-1)(q-1).
Et on a alors : a r s 1 mod pq pour tout entier a dont p et q ne sont pas
diviseurs.
On obtient la propriété :
Si PGCD(a, pq) 1 et r s mod(p 1)(q 1) alors a r a s mod pq
En remplaçant r par k et s par 1 on obtient le principe du code RSA :
Exemple
Alicia veut fabriquer une clé avec p=17 , q=31 , et n=527.
1) Prouver qu’elle peut choisir c=7.
2) On trouve alors à son adresse dans l’annuaire (527,7). Linda veut envoyer à
Alicia le message 472. Calculer le cryptogramme que Linda va envoyer à Alicia.
3) Expliquer comment Alicia va récupérer le message initial.
_________________________________________________________
1) p – 1=16 et q – 1=30
alors (p-1)(q-1)=480
480=25×3×5
PGCD(7;480)=1 alors 7 possède un inverse modulo 480.
7 peut être la clé de cryptage.
Utilisons l’algorithme d’Euclide étendu pour obtenir la clé de décryptage :
480=68×7 + 4
1×480 – 68×7 = 4
7 = 1×4 + 3
7=1×(1×480 – 68×7) + 3
69×7 – 480 = 3
4=1×3 + 1
480 – 68×7 = 69×7 – 480 + 1
2×480 – 137×7 = 1
-137×7 = 1 - 2×480
qui montre que – 137 est l’inverse de 7 modulo 480.
7 343 1 mod480
Nous avons : 137 343 mod480
Donc 343 est l’inverse de 7 modulo (p-1)(q-1). (p-1)(q-1)=480.
La clé de décryptage est 343.
2) Avant de crypter 472, nous devons vérifier que ce nombre n’est pas un
multiple de p=17 ou q=31 : 472 = 23 × 59.
Calculons maintnant 4727 modulo n .
n = pq = 527
4722 =472×472 = 222784 est congru avec 390 modulo 527.
4723 =390×472 = 184080 est congru avec 157 modulo 527
4724 =157×472 = 74104 est congru avec 324 modulo 527
4725 =324×472 = 152928 est congru avec 98 modulo 527
4726 =98×472 = 46256
est congru avec 407 modulo 527
4727 =407×472 = 192104 est congru avec 276 modulo 527
Le cryptogramme est donc 276.
3) Pour récupérer le message original nous allons devoir calculer
276343 modulo 527. Utilisons une programme informatique pour cela.
Nous obtenons finalement que 276343 est congru avec 472 modulo 527.
Téléchargement