I. Présentation : La méthode RSA est un système cryptographique

publicité
I. Présentation :
La méthode RSA est un système cryptographique asymétrique [*]. Il a été inventé en 1977 par
Ron Rivest, Adi Shamir et Len Adleman, 3 chercheurs en informatique, nommant alors ce chiffre
RSA d’après leurs initiales.
La grande innovation de ce système est le principe de cryptage avec une clé publique, et de
décryptage via une clé privée :
▪ La clé publique est divulguée librement et a pour but de chiffrer un message en sens unique, sans
permettre de le déchiffrer.
▪ La clé privée est en revanche unique et à usage personnelle, elle à pour rôle d’inverser l’effet de
la clé publique.
D’un point de vue mathématique, la clé publique est en partie constituée de 2 nombres appelés
littéralement p et q, premiers, et dont le produit est égal à n. Ne connaissant que le nombre n, il est
extrêmement difficile de retrouver les nombres p et q d’autant plus que ces nombres soient grands.
En effet, si p et q sont de l’ordre de 1065, n est de l’ordre de 10130, et il faudrait alors plus de 5 ans
pour factoriser ce nombre à la fréquence de 1000MHz (puissance moyenne d’un ordinateur en l’an
2000). Aujourd’hui, l’ordre de grandeur de n pour les transactions bancaires est de 10308. La
sécurité est donc assurée, jusqu’à ce qu’un nouveau procédé de factorisation rapide soit inventé
(comme l’ordinateur quantique), ou que de nouveaux moyens mathématiques soient découverts, ce
qui réduirai immédiatement l’efficacité d’un tel système.
II. Principe et fonctionnement :
Imaginons qu’une personne veuille envoyer un message d’une manière sécurisé à un destinataire,
de façon à ce que même si ce message soit intercepté par un tiers, il ne serait pas déchiffrable.
Comment procéder ?
D’abord, le destinataire du message va préparer 2 clés :
▪ Une clé publique (qui sera divulgué librement)
▪ Une clé privée (qui sera conservé précieusement)
Ensuite, l’émetteur va préparer son message puis le crypté grâce à la clé publique du destinataire. Il
peut alors lui envoyer le message.
Enfin, le récepteur de ce message va pouvoir le déchiffrer à l’aide de sa clé privée, qui est le seul à
détenir.
1) Préparations des clés :
a) Clé publique
1. Trouver deux nombres premiers p et q distincts (p et q doivent restés confidentielles)
2. Calculer n = p × q
3. Calculer φ (n) = (p-1) × (q-1)
4. Choisir un nombre e quelconque premier avec f (le PGCD de e avec f doit être égal à 1)
► Notre clé publique est (n ; e)
b) Clé privée
1. Trouver d tel que e × d  1 [φ (n)]
2. La relation précédente peut aussi s’écrire : e × d = φ (n) × k + 1
3. Les conditions suivantes doivent alors êtres respectés : 1 ≤ d < φ (n) et k est un nombre entier.
► Notre clé privée est (p ; q ; d)
2) Préparations du message :
a) Numérisation
1. Transcrire le message d’un langage alpha-numérique en un langage numérique (remplacement
des lettres, symboles et caractères en langage décimal).
2. Pour cela, il est possible d’utiliser le code ASCII.
b) Découpage
1. Il faut à présent découper le message numérique en tranche t, comportant un chiffre de moins
que le nombre de chiffres de n.
3) Cryptage :
L’émetteur crypte le message pour l’envoyer au destinataire.
1. Il chiffre chacune des tranches T en tranche T’ grâce à la relation : Te  T’ [n].
Cette étape équivaut à verrouiller le cadenas du "coffre" contenant le message.
2. Il envoie ensuite le message crypté contenant les différentes tranches T’.
4) Décryptage :
Le destinataire reçoit le message crypté et le déchiffre.
1. Il déchiffre chacune des tranches T’ en tranche T grâce à la relation : T’d T [n]. Cette étape
équivaut à déverrouiller le cadenas avec la clé privée.
2. Il retrouve alors les tranches t d’origines.
3. À présent, il ne reste plus qu’à rassembler les tranches t puis à les retranscrire en langage
d’origine.
4. Le message a bien été transmis et reçu d’une façon confidentielle !
III. Exemple :
1) Préparations des clés :
a) Clé publique
▪ Choisissons : p = 19 ; q = 23.
▪ Ainsi, n = p × q = 19 × 23 = 437,
Donc n = 437.
▪ φ (n) = (p-1) × (q-1) = 18 × 22 = 396
Donc  (n) = 396.
▪ Plusieurs valeurs sont possibles pour e.
PGCD (e ;  (n)) = 1
Prenons e = 43
► Notre clé publique est (n ; e), donc égal à (437 ; 43)
b) Clé privée
▪ e × d 1 [ (n)]
43d  1 [396]
On a donc d = 175 (d = (396k + 1) / 43 avec k  IN ici k = 19)
► Pour determiner le nombre k, Nous entrons la fonction (396x + 1) / 43 sur le tableur de sa
calculatrice, et nous regardons pour quelle valeur de x, le résultat est un entier.
► La clé privée est (p ; q ; d), donc égal à (19 ; 23 ; 175)
2) Préparations du message :
a) Numérisation
1. Il s’agit de convertir le message en nombres, en utilisant le code ASCII de façon à transcrire
numériquement le message...
2. Le message « MATHS » devient alors 7765847283 en langage décimal.
b) Découpage
1. À présent, nous découpons le message numérique en tranche T, d’un chiffre de moins que le
nombre de chiffres de n.
n = 437, il y a 3 chiffres, donc chaque tranches T comportera 3 - 1 = 2 chiffres.
Ainsi, on a : 77 65 84 72 83.
3) Cryptage :
Il s’agit maintenant de crypter le message.
1. Pour ce faire, nous utilisons la clé publique pour chaque bloc :
7743  210 [437]
6543  293 [437]
8443  388 [437]
7243  146 [437]
8343  235 [437]
Le message codé est donc M’ = 210 293 388 146 235.
4) Décryptage :
Décryptons le message crypté : M’ = 210 293 388 146 235.
1. On utilise donc la clé privée pour décrypter ce message, et récupérer le véritable contenu.
Chacun des blocs de 3 chiffres est élevé à l’exposant d de la clé privée, ici égale à 175, et congru
au message d’origine modulo 437 :
210175  77 [437]
293175  65 [437]
388175  84 [437]
146175  72 [437]
235175  83 [437]
2. Ainsi M = 77 65 84 72 83.
3. À présent, il ne reste plus qu’à retranscrire le message en langage d’origine :
77 65 84 72 83 = « MATHS »
4. Le message a été correctement transféré !
*. Cryptographie asymétrique : La cryptographie asymétrique, ou cryptographie à clé publique est
fondée sur l’existence de fonctions à sens unique, c’est-à-dire qu’il est simple d’appliquer cette
fonction à un message, mais extrêmement difficile de retrouver ce message à partir du moment où
on l’a transformé.
IV. Explication mathématique :
1) Théorèmes :
a) Petit théorème de Fermat (admis)
Soit p un entier naturel et p premier.
Alors : ap  a [p]
D’où : ap-1 1 [p]
b) Théorème de Fermat-Euler
Soit a un entier naturel. On a d’après le théorème précédent :
 a p-1  1 [p]
(a p-1) q-1  1 [p]
 D’où : a (p-1) (q-1) = k × p + 1
 a q-1  1 [q]
(a q-1) p-1  1 [q]
 D’où : a (p-1) (q-1) = k’ × q + 1
On a donc : a (p-1) (q-1) – 1 = k × p
= k’ × q
Ainsi, k × p = k’ × q
Comme p et q sont premiers entre eux et p | k’ × q alors :
p | k’ d’où : k’ = s × p (avec s entier naturel)
Ainsi, a (p-1) (q-1) – 1 = s × (p × q)
a (p-1) (q-1)  1 [p × q]
Ainsi la généralisation du petit théorème de Fermat nous donne :
► a (n)  1 [n]
2) Raisonnement mathématique :
Soient M une tranche du message clair et M’ le message crypté correspondant à M.
Nous rappelons que :
e × d  1 [ (n)]
Soit un nombre Z tel que : Z  M’ d [n] et 0  Z < n
Donc on a :
Z  (M e) d [n]
Z  M e×d [n]
Z  M × M (e×d)-1 [n]
Z  M × M k× (n) [n]
(car M’  M e [n] )
Z  M × 1 [n]
(car d’après le théorème de Fermat-Euler on a
a  (n)  1 [n] )
(car e × d  1 [ (n)]
e × d – 1  0 [ (n)]
e × d – 1 = k ×  (n) )
Donc, Z  M [n]
Or l’écriture décimale de M à un chiffre de moins que n et on a M  0
Donc 0  M < n
Donc Z = M
Ainsi, suite au cryptage RSA (M e  M’ [n]), le message crypté élevé à la puissance d est congru
au message claire modulo n : M’ d M [n]
V. Points forts et faiblesses :
1) Avantages :
La méthode de cryptographie RSA est un procédé actuellement très fiable et très utilisé qui
regroupe tous les avantages d'un système cryptographique idéal.
Il est d'ailleurs considéré comme le plus efficace des systèmes cryptographiques à clé publique.
Sa grande force repose sur la difficulté de décomposer de très grands nombres en produit de
facteurs premiers et établi ainsi un lien mathématique pratiquement incassable entre clé privée et
clé publique.
Si la taille du nombre n dépasse 1024 bits, alors il est impossible avec les moyens actuelles, d'en
déterminer les facteurs premiers le composant, et donc, l'information transmise par ce système
reste dans une confidentialité absolue.
Si la taille de ce nombre atteint 4096 bits, alors il est inespéré qu'il soit factorisé dans un avenir
prévisible.
2) Inconvénients :
La principale faiblesse de ce système est qu'il n'est théoriquement pas impossible de décomposer
de grands nombres en produit de facteurs premiers.
D'ailleurs, l'évolution des technologies et des puissances de calculs, repousses toujours plus loin les
limites de factorisation.
En effet, une clé de 256 bits peut être factorisé en quelques heures par un ordinateur individuel, et
une clé de 512 bits peut être cassé par l'associativité de nombreux ordinateurs, en un temps
raisonnable.
L'actuel record de factorisation, réalisé en 2005, à permis de décomposer entièrement un nombre
de 663 bits en produit de facteur premiers par calcul distribué.
Donc, si la taille des clés reste inférieure à 1024 bits pour l'échange d'un message, sa sécurité ne
sera pas totalement assurée.
De plus, si l'on admet que la puissance des ordinateurs double tous les 18 mois (loi de Moore),
alors il faudra constamment repousser la taille des clés. Une clé de 2048 bits par exemple, devrait
tenir jusqu'en 2079.
Mais il faut également prendre en compte la possibilité que de nouveaux procédés de factorisations
soient découverts dans l'avenir et permettent ainsi de réduire, si ce n'est d'anéantir, le temps de
factorisation nécessaire sur grands nombres.
Enfin, les progrès de la physique vont peut-être sonner le glas de la cryptographie mathématique. Il
a été défini, du moins en théorie, un modèle d'ordinateur quantique qui permettrait de factoriser
très rapidement des entiers. Les ordinateurs quantiques n'en sont encore qu'à leurs prémices mais
finiront un jour où l'autre par rendre le système RSA obsolète.
VI. Annexe
Définition : ASCII (code de norme américaine pour l’échange de l’information), généralement prononcée
[’æski], est un codage de caractère basé sur l’alphabet anglais. Les codes d’ASCII représentent le texte dans
les ordinateurs, le matériel de transmissions, et d’autres dispositifs qui fonctionnent avec le texte. La plupart
des codages modernes de caractère, qui soutiennent beaucoup plus de caractères, ont une base historique
dans l’ASCII.
Echantillon de la table du code ASCII qui fait correspondre des nombres à des caractères.
A
65
B
66
C
67
D
68
E
69
F
70
G
71
H
72
I
73
J
74
K
75
L
76
M
77
N
78
O
79
P
80
Q
81
R
82
S
83
T
84
U
85
V
86
W
87
X
88
Y
89
Z
90
Téléchargement