Академический Документы
Профессиональный Документы
Культура Документы
ARITHMETIQUE ET
CODES SECRETS
PC
Date de création
2005
Cours, Exercices,
Mathématiques
Cryptographie
Hélène FACK
1 INTRODUCTION 3
2 STRUCTURES ALGEBRIQUES 4
2.1 Groupes 4
2.1.1 Définition ..................................................................................................4
2.1.2 Exemples et contre exemples ...................................................................4
2.1.3 Sous-groupe .............................................................................................5
2.2 Anneaux 6
2.3 Corps 7
2.3.1 Exemples et contre exemples ...................................................................7
4 CONGRUENCES DANS 12
4.1 Division euclidienne 12
4.2 Divisibilité dans 12
4.3 Sous-groupes additifs de 12
4.4 Congruences dans 13
4.5 Opérations sur les « congruences » 13
4.6 Application des congruences à la divisibilité 14
4.7 Codages de tous les jours utilisant les congruences 14
4.8 Cryptographies historiques utilisant les congruences 15
4.8.1 Le cryptage de Vigénère .........................................................................16
4.9 Cryptographies actuelles fondées sur les congruences : DES 17
4.9.1 Masque jetable .......................................................................................17
5 NOMBRES PREMIERS 18
5.1 Définition 18
5.2 L’ensemble des nombres premiers est infini 18
5.3 Crible d’Eratosthène 18
5.4 Décomposition en facteurs premiers 19
5.5 Diviseurs d’un entier 20
5.6 Corps 20
p
9 EXERCICES 42
9.1 Structures 42
9.2 Congruences 43
9.3 Applications des congruences : NIR 44
9.4 Applications des congruences : Un code correcteur et le code de César 45
9.5 Nombres premiers 46
9.6 Entiers premiers entre eux 48
9.7 Théorème des Fermat / Théorème chinois 49
9.8 RSA 50
10 TEXTES D’EXAMENS 52
10.1 Racines carrées modulaires et chiffrement de Rabin, examen du 17 mai
2005, EURINSA approfondissement « Mathématiques discrètes » 52
10.2 : Groupes cycliques et chiffrement El Gamal, examen du 25 mai 2005,
OT « Mathématiques et Codages » 53
10.3 Matrices à coefficients dans et chiffrement de Hill, examen du 18
26
janvier 2006, OT « Mathématiques et Codages » 55
10.4 RSA, théorème de Fermat et nombres pseudo-premiers, examen du 18
avril 2006, EURINSA approfondissement « Mathématiques discrètes » 57
11 BIBLIOGRAPHIE 64
1 Introduction
Communiquer, c’est-à-dire transmettre des informations est une des caractéristiques
des êtres vivants. Plus ces êtres sont évolués et organisés en sociétés, plus cette
communication est nécessaire et prend des formes de plus en plus complexes et
techniques. On ne sait pas quand est né le langage, système complexe de
communication entre les individus. Nous sont restées des traces sous forme de
signes et de dessins dans les grottes préhistoriques. L’écriture est plus récente, ainsi
que l’utilisation de chiffres pour effectuer des calculs. Les premiers systèmes
d’écriture du langage ou des nombres utilisaient beaucoup de symboles
(idéogrammes, écriture cunéiforme, chiffres « romains »). L’idée qu’un nombre fini,
et très réduit, de symboles suffit à transcrire l’information (par essence infinie)
est encore plus récente. L’alphabet (nombre fini de lettres) naît à Ougarit, en
Mésopotamie vers le XIIème siècle avant J.C. Nos chiffres « 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 »
viennent d’Inde et sont transmis en Occident par les lettrés arabes à la fin du Moyen
Âge.
A l’ère des ordinateurs, le nombre des symboles utilisés devient le plus petit possible :
deux symboles sont utilisés correspondant aux états d’un circuit électrique. Par
convention ces symboles sont 0 et 1. Il suffit alors de coder les lettres de l’alphabet et
les nombres en suites de 0 et de 1. L’information écrite est ainsi transformée en une
longue suite de 0 et de 1. Le traitement de l’information, c’est-à-dire sa transmission,
son stockage, sa restitution, la correction des erreurs dues à ces traitements
deviennent un travail sur des nombres, et s’appuient sur une branche ancienne des
mathématiques : l’arithmétique. Ces besoins récents ont remis l’arithmétique dans
l’actualité et justifié la recherche dans cette discipline.
Ce cours présente des bases pour comprendre certaines problématiques du
traitement de l’information. La notion centrale est celle de congruence. Elle permet
d’une part d’expliquer les corrections d’erreurs sur des numéros : numéro ISBN des
livres, numéro INSEE, clef numérique des comptes bancaires, détaillées dans ce
cours. D’autre part, les congruences sont le fondement des cryptographies, des plus
anciennes aux plus récentes, présentées également dans ce cours.
Les erreurs dues à la transmission, au stockage ou à la lecture de l’information
numérisée sont corrigées par des techniques appelées « codes correcteurs
d’erreurs ». Ces algorithmes s’appuient sur l’algèbre linéaire pour les codes les plus
simples, et de nouveau sur des congruences (dans des algèbres de polynômes) pour
les plus utilisés (cf. exercice 15 § IX.4).
2 STRUCTURES ALGEBRIQUES
Dans ce paragraphe on rappelle et complète les notions vues en première année. Les
ensembles de « nombres » , , , sont supposés connus avec l’addition et la
multiplication habituelles. On rappelle que dans et toute partie non vide et
majorée admet un plus grand élément, que dans toute partie non vide et majorée
admet une borne supérieure (dans un tel énoncé n’a pas de sens car il n’existe
pas de relation d’ordre compatible avec les opérations).
2.1 Groupes
2.1.1 Définition
Soit G un ensemble et • une loi de composition interne (c’est-à-dire que si x et y
appartiennent à G, alors x • y appartient à G). On dit que (G, • ) est un groupe si la
loi • :
- est associative, c’est-à-dire : ∀x, y , z ∈ G ( x • y ) • z =x • ( y • z) ;
- possède un élément neutre, c’est-à-dire qu’il existe un élément e de G tel que :
∀x ∈ G x • e = e • x = x ;
- tout élément possède un symétrique, c ‘est à dire :
∀x ∈ G, ∃x'∈ G x • x' = x'• x = e .
Lorsque la loi est notée +, le groupe est dit additif et le symétrique s’appelle opposé ;
lorsque la loi est notée multiplicativement, le groupe est dit multiplicatif et le
symétrique s’appelle inverse.
Groupes finis
La structure d’un groupe fini est entièrement donnée par la table de sa loi de
composition. Le nombre d’éléments d’un groupe fini s’appelle l’ordre du groupe.
2.1.3 Sous-groupe
Soit (G, • ) un groupe. Une partie G’ de G est un sous-groupe (pour la loi • ) si la loi
• induit sur G’ une structure de groupe.
Exemples
n { np, p ∈ } est un sous-groupe de . On verra
Pour la loi +, et pour n entier,=
(cf. §IV.3) que tous les sous-groupes additifs de sont de cette forme.
En géométrie plane, les isométries forment un groupe pour la composition des
applications. Celles qui laissent invariant un rectangle (différent d’un carré) forment
un groupe commutatif fini d’ordre quatre.
2.2 Anneaux
Définition Un anneau A est un ensemble muni de deux lois de composition internes,
reliées par les propriétés suivantes :
- A est muni d’une première loi, notée + qui lui donne une structure de groupe
commutatif ;
- il existe une deuxième loi, notée • , associative et distributive par rapport à +
( ∀x, y , z ∈ A, x • ( y + z) = x • y + x • z ).
Si la loi • possède un élément neutre, on dit que A est unitaire. Si la loi • est
commutative, on dit que l’anneau A est commutatif.
Dans G =
4 on a la table de multiplication :
* 0 1 2 3
0 0 0 0 0
1 0 1 2 3
2 0 2 0 2
3 0 3 2 1
On constate que dans cet anneau : 2 ∗ 2 =0 ; on dit que 2 est un diviseur de zéro. Un
tel élément n’a pas d’inverse :
En effet, x est un diviseur de 0 dans un anneau ( A, + , × ) si x est non nul et si il
existe x’ dans A, non nul, tel que : x × x' =
0.
Si x était inversible, il existerait x ‘’ tel que :
x × x" = x"× x = 1 ⇒ x"× x × x' = x"× 0 = 0 ⇒ x' = 0 , ce qui contredit la définition.
Le même phénomène se produit dans l’ensemble des matrices réelles carrées d’ordre
0 1 0 1 0 0
n: × =.
0 0 0 0 0 0
2.3 Corps
Définition Un corps K est un ensemble muni de deux lois de composition internes
notées + et • , telles que :
- (K, +, • ) est un anneau unitaire. On note K ∗ les éléments de K différents de
l’élément neutre (pour la loi +) ;
- K ∗ est un groupe pour la loi •.
Si la loi • est commutative, on dit que le corps est commutatif 1.
Remarques : Un corps contient au moins deux éléments (les éléments neutres des
deux lois). Dans un corps tout élément (distinct de l’élément neutre de la loi +) admet
un symétrique, alors que ce n’est pas toujours le cas pour un anneau unitaire.
Remarque : Dans un corps on peut « simplifier » par tout élément non nul. C’est une
structure bien adaptée aux calculs. Ce qui ne signifie pas que toute équation
algébrique dans un corps admette des solutions. Ainsi l’équation x 2 + 1 =0 n’a pas
de solution dans . Ceci a conduit à l’introduction de .
Z ! Dans le corps B = {0,1} , l’équation x 2 + 1 =0 admet x = 1 comme solution !
On montre que tout corps fini est commutatif. Donc si un corps est non commutatif, alors il
1
Exemples
Soit X l’ensemble (fini) des élèves inscrits en premier cycle à l’INSA. On peut
considérer la relation d’équivalence R suivante : pour les étudiants x et y de X, on a
xRy si x et y appartiennent au même groupe {1, 2 ,.....,41 ,.., 201,...}.
En géométrie, on relie les couples de points (d’un espace « affine ») aux vecteurs
(de l’espace vectoriel associé) par la relation d’équivalence définie sur les bipoints :
( A,B) (C ,D) ⇔ ABDC est un parallélogramme. Cette relation s’appelle
l’équipollence.
Elèves de l’INSA
2 201
3.3.1 Exemples
En géométrie, l’ensemble des bipoints d’un espace affine, muni de l’équipollence a
pour ensemble quotient l’espace vectoriel sous jacent.
En mécanique, les torseurs s’interprètent comme un espace quotient.
On considère dans l’espace affine de la géométrie, des parties de n vecteurs glissants
( Δi , vi )1≤i ≤n où Δi est une droite, Ai un point de cette droite et vi un vecteur
dont le support est Δi . On calcule les éléments de réduction en un point O : la
n n
résultante R = ∑ vi et le moment (en =
O) M ∑ OAi ∧ vi de ce système de n
i =1 i =1
vecteurs glissants.
Avoir les mêmes éléments de réduction en un point est une relation d’équivalence sur
les systèmes de n vecteurs glissants. Par définition l’ensemble quotient est
l’ensemble des torseurs. On montre que c’est un espace vectoriel de dimension 6 sur
.
L’avantage qu’on tire de cette définition des torseurs est que, dans les problèmes de
mécanique générale, ce qui importe n’est pas la particularité d’un système de
vecteurs glissants, mais sa réduction en un point. C’est-à-dire que deux systèmes
distincts de vecteurs glissants équivalents, représentant des forces agissant sur un
solide, ont le même effet sur le mouvement de ce solide. C’est d’ailleurs pourquoi les
forces sont représentées par des vecteurs glissants (qui sont aussi des classes
• •
Loi additive + sur G . On note x, .. les éléments de G 3
H H.
•
• • •
Par définition : x + y =
x + y . Comme la relation ≡ est compatible avec la loi + de G,
• •
ce résultat ne dépend pas des représentants choisis pour x ou y . On vérifie alors
•
que G est un groupe commutatif pour + .
H
G •
H , + s’appelle groupe quotient de G par H.
Exemples
Les groupes
2 et 4 déjà étudiés sont les groupes quotients correspondant
aux sous-groupes 2 et 4 de .
Théorème Dans un groupe fini, l’ordre d’un sous-groupe divise l’ordre du groupe.
Ces points sur les éléments et opérations des structures quotient deviennent inutiles lorsqu’il
3
4 Congruences dans
Divisibilité et sous-groupes de
Théorème Pour a et b dans , b divise a si et seulement si a ⊂ b .
Pour montrer cette équivalence, on revient à la définition de la divisibilité :
si b divise a ⇔ ∃q ∈ , a= bq ⇔ a ∈ b ⇔ a ⊂ b .
4
C’est en fait une propriété de admise dans ce cours.
Exemple 1 17 ≡ 2 ≡ −3 [5]
Exemple 2 Les solutions dans de l’équation x ≡ 1 [ 31] sont : x =
1 + 31k , k ∈ .
2007
Exemple 1 : calculer le reste de la division par 7 de ( 2006 ) .
L’idée est de se placer dans
7 , mais en utilisant les notations des congruences.
On commence par diviser 2006 par 7: 2006 =×7 286 + 4 , d’où
2007
2006 ≡ 4 ⇒ ( 2006 ) ≡ 4 2007 [7 ] . Or dans 7 , il n’y a que 7 éléments. On
étudie les différentes puissances de 4 :
4 2 ≡ 16 ≡ 2 [7 ] , 4 3 ≡ 2 × 4 ≡ 8 ≡ 1[7 ] .
Il suffit maintenant de diviser 2007 par 3 :
( )
669
2007 = 3 × 669 et 4 2007 ≡ 4 3×669 ≡ 4 3 ≡ (1)669 ≡ 1[7 ] .
2007
Donc le reste de la division par 7 de ( 2006 ) est 1.
2009
Exemple 2: calculer le reste de la division par 7 de ( 2008 ) .
Lorsque n=0, tous les entiers relatifs sont équivalents, la notion n’a donc pas d’intérêt. Dans
5
Numéros de billets en euros Les numéros qui figurent sur les billets comportent un
code. Vous pouvez contrôler sur Internet la validité du numéro d’un billet.
On dit aussi coder un texte, mais ceci est générateur de confusion avec les codes correcteurs
6
d’erreurs.
Voici tout d’abord, deux cryptographies « historiques ». Elles utilisent les lettres de
l’alphabet de la langue considérée et quelques signes de ponctuation. On a choisi ci-
dessous les 26 lettres de l’alphabet français et un signe de ponctuation : l‘espace.
Pour « casser un code », c’est-à-dire décrypter un tel message sans connaître la clef
K, les « cryptanalistes » utilisent des propriétés des langues (comme la fréquence de
la voyelle « e » en français) ou des redondances dans les messages. La machine
ENIGMA, utilisée par l’armée allemande à partir des années 1930 et durant la guerre
de 39-45 est fondée sur ce principe, avec un texte T changeant à chaque utilisation.
Le cryptage du message était obtenu grâce à des rotations de rotors. L’armée
allemande était convaincue de l’inviolabilité de sa machine, alors que des
mathématiciens polonais avaient réussi à « casser » son code dès 1932. Mais l’armée
allemande améliorait sans cesse son procédé 7….
La grande faiblesse de ces systèmes à clef secrète est d’être fondés sur des clefs K
que doivent connaître les émetteurs et récepteurs du message. Et lorsque ces clefs
sont interceptées, tout le système s’effondre.
Ceux qui sont intéressés par ce problème historique peuvent consulter : HISTOIRE DES
7
5 Nombres Premiers
5.1 Définition
Un entier relatif n est premier si il admet exactement 4 diviseurs dans : 1,-1, n et –
n. Si n est un entier naturel, il est premier si il admet, dans , deux diviseurs 1 et lui
même 8.
On en déduit que 1 n’est pas premier. L’entier 2 est le seul entier naturel premier pair.
Si n > 1 et n non premier, n est dit composé. Tous les entiers pairs (sauf 2 et -2)
admettent 2 comme diviseur, donc sont composés.
Cette démonstration montre qu’il existe des nombres premiers ayant autant de
chiffres que l’on désire, même si elle ne donne pas un procédé pour les trouver. Par
1000 000
exemple, soit n = 10 . Le nombre n'
= n!+ 1 est soit premier, soit admet un
diviseur premier supérieur à n. Ce nombre premier a donc plus d’un million de
chiffres. La recherche de « grands » nombres premiers est essentielle pour la sécurité
des cryptages actuels (cf. RSA, §VII).
Lorsque la structure d’anneau est inutile, les entiers utilisés sont des entiers naturels. Les
8
définitions et résultats sont alors acquis pour les entiers relatifs en « ajoutant le signe ».
Pour les démonstrations qui ne figurent pas dans ce texte, se rapporter à un bon cours de
9
terminale.
pour lequel on agit comme pour 2. Pour savoir où arrêter la recherche, on utilise le
lemme :
Lemme Tout entier n > 1 non premier admet au moins un diviseur premier.
Un nombre n compris entre 100 et 10000 est-il premier ? Un de ses diviseurs premiers
p vérifie p 2 ≤ n , soit p 2 ≤ 10000, d’où p ≤ 100 et p figure dans la table ci-dessus. On
effectue donc les divisions successives de n par les nombres de la table. Si un des
restes est nul, n est composé ; sinon on arrête les divisions lorsque le diviseur est
supérieur à n . Par exemple, pour n = 491 , on constate que 491 n’est pas divisible
2
par 2, 3, 5, 7, 11, 13, 17, 19 et 23. Or 23
= 529 > 491 . Donc 491 est premier.
Le logiciel MAPLE permet de savoir si un entier, pas très grand est premier.
Des méthodes probabilistes (cf Miller Rabin VIII.7) permettent de savoir si un nombre
donné a une chance d’être premier.
Historiquement, la recherche de « formules » permettant d’obtenir des nombres
premiers a donné lieu à beaucoup de conjectures inexactes (cf. en exercice les nombres
de Mersenne et les nombres de Fermat).
Le logiciel MAPLE permet de connaitre les diviseurs d’un entier pas très grand.
Conséquence sur la divisibilité Si un nombre premier p divise n, ce nombre est un
des facteurs premiers de n.
5.6 Corps p
Théorème L’anneau ( )
p , + , × est un corps si et seulement si p est premier.
Démonstration Pour montrer cette équivalence on examine les différentes
possibilités pour l’entier p.
Si p n’est pas premier, on a les cas suivants :
si p=0, 0 = {0} . Le quotient est lui même qui n’est pas un corps.
•
si p=1,
0 n’ a qu’un élément et n’est donc pas un corps.
=
p dq, 1 < d < p, 1 < q < p . Donc dans
si p>2 est composé, il existe d et q tels que =
• • •• •
p , p= 0= d q , c’est-à-dire que d est un diviseur de zéro et n’a donc pas
d’inverse. L’anneau n’est donc pas un corps.
• •
Si p est premier, il reste à montrer que tout x ≠ 0 est inversible dans l’anneau
p ,
• • • •
c’est-à-dire qu’il existe u tel que x .u = 1 , d’où ∃v ∈ , ux − 1= pv ⇔ ux − pv= 1
Cette relation est l’identité de Bezout, dont la preuve est faite au §VI.4.
Exemple Dans la simplification des fractions, on peut chercher les facteurs communs
à l’aide de la décomposition en facteurs premiers :
168 23 × 3 × 7 23 × 3 56
= et PGCD(168,721)=7 : la fraction simplifiée est = .
721 7 × 103 103 103
Pour des nombres plus grands on utilise l’algorithme d’Euclide (cf. §VI.3).
Propriétés du PGCD
PGCD( a,b) = PGCD(b, a)
PGCD(
= a,0) PGCD(
= a, a) a
Si b divise a, PGCD( a,b) = b .
Cette définition s’étend aussi à plusieurs entiers (entiers premiers ou étrangers dans
leur ensemble).
Exemples
Si p est un nombre premier, si n n’est pas multiple de p, alors n et p sont premiers
entre eux.
915 = 3 × 5 × 61 et 901
= 17 × 53 ne sont pas premiers, mais sont premiers entre eux,
car ils n’ont aucun facteur premier en commun (leur PGCD est 1). Le nombre 5 est
premier, il est premier avec 901. Le nombre 5 n’est pas avec premier avec 915 car
915 est un multiple de 5. Néanmoins, les nombres 47, 901 et 915 sont premiers dans
leur ensemble car ils n’ont aucun facteur en commun.
D’où PGCD( 437 ,1969) = 1 , dernier reste non nul, les nombres 437 et 1969 sont
premiers entre eux.
Le nombre 241 est premier et 437 n’est pas un multiple de 241, donc on doit trouver
10
PGCD(241,437)=1
Le dernier reste non nul est 1 (on peut ne pas écrire cette dernière division), donc
PGCD( 437 ,241) = 1 , on reprend alors les calculs en partant de la fin :
13 = 3 × 4 + 1 ⇒ 1 = 13 − 3 × 4, 16 = 1 × 13 + 3 ⇒ 3 = 16 − 1 × 13 ⇒ 1 = 13 × 5 − 4 × 16
45 = 2 × 16 + 13 ⇒ 13 = 45 − 2 × 16 ⇒ 1 = 5 × 45 − 14 × 16
196 =4 × 45 + 16 ⇒ 16 =196 − 4 × 45 ⇒ 1 =−14 × 196 + 61 × 45
241 = 1 × 196 + 45 ⇒ 45 = 61 × 241 − 75 × 196 ⇒ 1 =−52 × 241 + 38 × 196
437 = 1 × 241 + 196 ⇒ 196 = 437 − 1 × 241 ⇒ 1 = −75 × 437 + 136 × 241
Cette dernière égalité donne les entiers u = −75 et v = 136 cherchés.
Ces calculs sont laborieux « à la main ». On peut s’aider d’une calculette, ou…utiliser
un logiciel comme Maple (commande igcdex).
Théorème de Gauss
Si a est premier avec b et a divise le produit bc alors a divise c.
En effet au + bv
= 1, cau + cbv= c ; or a divise cau et a divise bc, donc a divise
c cau + cbv .
=
•
En effet, x est inversible de l’anneau
n
• • • •
⇔ ∃ x'∈ n , x .x' =1
⇔ ∃x'∈ , x.x' ≡ 1 [ n] ⇔ ∃x', k ∈ , x.x'− k.n =1
où on reconnaît l’identité de Bezout, c’est-à-dire que x et n sont premiers entre eux.
Remarque Si p est premier, tous les éléments non nuls sont inversibles, car p
est premier avec 1,2,...,( p − 1) . D’où la structure de corps de .
p
Exemple d’utilisation pour « résoudre » l’identité de Bezout avec a=17 et b=25.
1 , revient à résoudre 25v ≡ 1 [17 ] , donc à trouver
Trouver u et v vérifiant 17u + 25v =
• • • •
l’inverse de 25 = 8 dans le corps . Or 17 − 2 × 8 =1 , donc −2 =15 est
17
•
l’inverse de 8 . Donc 15 est solution de 25v ≡ 1 [17 ] .
On vérifie que 25 × 15 − 1 = 374 est divisible par 17 : 374
= 22 × 17 , et on obtient :
25 × 15 − 22 × 17 = 1 , soit v = 15 et u = −22 .
Cette technique est plus rapide que l’algorithme d’Euclide étendu lorsqu’un des deux
entiers de l’Identité de Bezout n’est pas trop grand.
x ≡ 3 [5]
Exemple 1 Trouver les valeurs de x telles que : .
x ≡ 2 [7 ]
Il faut déterminer la valeur c du théorème, donc suivre la méthode exposée dans la
démonstration, donc « résoudre » encore une fois « Bezout ».
On commence par constater que 5 et 7 sont premiers entre eux, avec 3 × 5 − 2 × 7 =1,
donc ici a = 3, b = 2, m = 5, n = 7 , u = 3, v = −2 .
D’où c =anv + bmu =−42 + 30 =−12 et −12 ≡ −12 + 35 ≡ 23 ≡ 233 [ 35 ] .
D’après le théorème chinois l’ensemble des solutions est 23 + 35k , k ∈ .
=
p
k 0=
∑
( a + b ) = C p a b =a + C pk a pb p − k
k p p−k p
k 1
∑ + b p , les termes du milieu étant
Il s’agit ici du petit théorème de Fermat. Le grand théorème de Fermat est resté une
12
conjecture durant plusieurs siècles, jusqu’à sa démonstration (en 1994) par Andrew Wiles.
Démonstration du corollaire
p
La relation a ≡ a [ p] s’interprète comme ap − a ≡ 0 [ p] , c’est-à-dire que p divise
a p= ( )
− a a a p −1 − 1 . Or p ne divise pas a, donc p est premier avec a. D’après le
7.3 RSA
L’invention du système de cryptographie « RSA », du nom de ses inventeurs, Ronald
Rivest, Adi Shamir et Leonard Adleman, en 1977 est intéressante. En 1976, Whitfield
Diffie et Martin Hellman publient un article, qualifié de « révolutionnaire » par les
spécialistes de cryptographie, où ils définissent de nouveaux critères : pour supprimer
le problème de confidentialité des clefs de cryptage il faut utiliser des fonctions « à
Pour montrer le principe de RSA on utilise e premier avec ( p − 1)(q − 1) . L’entier e est
donc un élément inversible dans l’anneau
( p − 1)(q − 1) . Le nombre d cherché
est l’inverse de e dans cet anneau. On a alors :
Bob commence par choisir deux « grands » nombres premiers p et q et les multiplie
pour obtenir N : N = p.q . La « sûreté » de l’algorithme est fondée sur l’impossibilité
de retrouver les facteurs p ou q de N (actuellement la plus grande factorisation
possible l’a été pour un nombre de 200 chiffres, cf.VIII.8).
Bob choisit aussi une clef de cryptage e (en général un petit nombre premier, premier
avec ( p − 1)(q − 1) ). Bob peut alors rendre publiques les valeurs N et e.
Alice, pour crypter le texte qu’elle veut envoyer à Bob, le numérise par une suite de
chiffres et obtient le message M, qui est donc un nombre entier. Si M est supérieur à
N, elle coupe M en morceaux de longueur inférieure à N. On peut donc supposer que
le message à crypter M est de longueur inférieure à N. Alice connaissant N et e, peut
calculer le message crypté C :
C = M e [ mod ulo N ] .
qu’elle transmet à Bob.
Par ailleurs, Bob doit calculer un inverse d de e dans l’anneau
( p − 1)(q − 1) .
Pour ce faire il doit « résoudre une identité de Bezout », donc utiliser par exemple
l’algorithme d’Euclide étendu (ces opérations sont bien sûr faites par un
programme !).
Lorsqu’il reçoit le message crypté C, il calcule :
( )
d
Cd ≡ Me ≡M [mod ulo N ] .
et retrouve le message d’origine M.
( Md ) ≡ ( Me )
e d
≡M [mod ulo N ] .
Cette propriété est utilisée dans les protocoles sécurisant les transactions.
> restart;p:=563;isprime(p);q:=691;isprime(q);N:=p*q;
p := 563
true
q := 691
true
N := 389033
> M:=131208; if (M > N) then print("Message trop long") end if;
M := 131208
On va déterminer un petit nombre e, premier avec r=(p-1)(q-1). Le nombre e=3
convient-il? La commande "igcd" retourne le PGCD.
> r:=(p-1)*(q-1);igcd( r,3 );igcd(r,7);
r := 387780
3
1
Le nombre 3 n'est pas premier avec r, alors que 7 l'est. On choisit e=7. Les clefs
publiques sont N et e.
> e:=7; C:=M&^(e) mod N;
e := 7
C := 114242
C est le message crypté à transmettre. Le symbole & correspond à l'exponentielle
rapide.
Il faut maintenant trouver l'inverse de e modulo r=(p-1)(q-1), c’est-à-dire trouver d et k
tels que e*d+k*r=1. C'est la commande igcdex qui résout l'identité de Bezout.
Attention à la syntaxe : les variables doivent être désaffectées !
> pgcd:=igcdex(e,r,'u','k');u;k;
pgcd := 1
-55397
1
> e*u+r*k;
1
Les nombres e et r sont bien premiers entre eux. On obtient des valeurs u et k telles
que e*u+k*r=1, avec u=-55397, qui est négatif. On choisit une autre solution modulo r,
positive, puis on décode le message.
> d:=u+r;MM:=(C)&^(d) mod N;
d := 332383
MM := 131208
On retrouve le message d'origine.
8.1 Définitions
Confidentiel
L’information n’est accessible qu’à une personne autorisée.
Authentique
L’expéditeur ou le récepteur du message sont garantis, c'est-à-dire que l’on est
certain de l’identité de l’expéditeur et/ou du destinataire.
Intègre
Le document n’a pas été modifié (de façon volontaire ou non).
Signature numérique
Doit garantir la même sécurité qu’une signature manuscrite : authenticité et intégrité.
8.2 Techniques
Protocole
Un protocole est une spécification de plusieurs règles pour un type de communication
particulier entre deux ordinateurs, dans le but de réaliser une tâche.
Par exemple dans toute transmission d’informations sur un bus de données, il faut
décrire le format et la synchronisation des paquets d’informations qui transitent.
Protocole défi/réponse
Ensemble d’échanges entre l’expéditeur et le destinataire permettant de garantir un
ou plusieurs des éléments qui concourent à la sécurité.
Cryptages
Ce poly vous en présente différents types : Hill (§ X.3), RSA (§ VII.3), Rabin(§ X.1), El
Gamal(§ X.2)
Certificat
Lorsqu’un algorithme de chiffrement à clef publique est utilisé, la clef de chiffrement
est garantie par une autorité, elle est « certifiée ».
S’insère dans une chaîne sur les clefs : distribution, certification, stockage et
répudiation (= suppression de la clef).
Exemple Certificat X509
Empreinte numérique
Condensé d’un document. Une modification, même minime, dans le document doit
modifier son empreinte. En général on utilise une fonction de hachage, qui crée une
empreinte appelée « haché » (cf. VIII.5).
La méthode du masque jetable, donc avec une clef privée, convient aussi en théorie.
Mais, comme avec tous les systèmes à clef secrète, se pose le problème de
l’échange des clefs. La sécurité est très bonne à condition de changer de clef à
chaque fois (masque jetable). C'est-à-dire qu’il faut transmettre une clef aléatoire, de
même longueur que le message. Pour le « téléphone rouge » entre Moscou et
Washington, où ce type de clef voyage par la valise diplomatique, c’est possible.
Mais, dans le cadre des transferts informatiques actuels, le procédé du masque
jetable n’est donc pas utilisable.
( )
∗
On choisit p premier, et on utilise le fait que le groupe multiplicatif est
p
cyclique (cf. IX.2 examen du 25 mai 2005). Soit donc g un générateur de ce groupe.
( ) ( )
∗ ∗
Alors l’application de dans qui à x associe g x est facile à calculer
p p
(exponentielle rapide), mais n’est pas inversible (problème du logarithme modulaire).
A-t-on résolu tous les problèmes ? La réponse est non : la fonction de hachage
n’étant pas injective, on peut avoir deux empreintes identiques pour deux messages
différents : c’est le phénomène de collusion.
Pour signer, on utilise une empreinte, puis un protocole fondé sur une cryptographie
asymétrique. Voici un exemple à l’aide d’un déchiffrement/chiffrement RSA.
1) Alice veut envoyer et signer son message M. Elle va commencer par calculer une
empreinte de M, puis crypter cette empreinte avec sa clef privée : c’est sa signature
numérique S du message M. Elle crypte également le message M en C, par exemple
en utilisant une clef publique de Bob. Elle adresse C et S à Bob.
2) Comment Bob vérifie-t-il la signature d’Alice ?
Il commence par décrypter C à l’aide de sa clef privée et obtient M. Connaissant la
fonction de hachage, il détermine l’empreinte du message M. Il utilise alors la clef
publique d’Alice et peut décrypter la signature S, qui doit coïncider avec l’empreinte
qu’il vient de déterminer.
Tous les plus grands nombres premiers connus sont des nombres premiers de
Mersenne car il existe un test de primalité particulièrement rapide adapté aux
nombres de cette forme, le test de primalité de Lucas-Lehmer.
Mais ces recherches ne peuvent pas servir pour des codages, car les nombres
premiers doivent être les plus quelconques possibles (les nombres premiers p tels
que (p-1) ait beaucoup de petits facteurs premiers sont également à éviter).
( )=
s s −1 s −1 2 s −1 s −1
X2 =
− 1 X 2×2 =
−1 X2 −1 (X2 − 1)( X 2 1) ...
+=
s −1
=( X − 1)( X + 1)( X 2 + 1)...( X 2 + 1)
q
Soit alors a premier avec p. On pose X = a . D’après le petit théorème de Fermat :
s
a p−1 ≡ 1 ⇒ a p−1 − 1 ≡ a 2 q − 1 ≡ 0 [ p] . D’où avec la factorisation :
( aq − 1)( aq + 1)(( aq )2 + 1) .... (( aq )2 )
s −1
+1 ≡ 0 [ p] .
Or p étant premier,
p est un corps. D’où, un au moins de ces facteurs est nul,
c’est-à-dire que le résultat énoncé est montré.
p −1
Remarque : lorsque p est premier >2, a
p −1
≡1 [ p] , donc a 2 est une
racine carrée de 1, modulo p. Dans le corps
p , il y a deux racines
p −1
p −1
carrées de 1 : 1 et −1. Si a 2 ≡1 [ p] , et si est pair, on continue avec
2
p −1 p −1
jusqu’à .
4 2s
q
3) On pose X = a [n] et on teste si X =1 [n] ou si ∃k , 0 ≤ k ≤ s − 1 tel que
k
X 2 ≡ −1 [n] .
4) Si ce n’est pas le cas, on peut déduire (par contraposée du théorème) que n est
composé.
5) Si au 3) on a une des égalités, le test « échoue » et on montre qu’il y a au moins 3
chances sur 4 que n soit premier, c’est-à-dire que, la probabilité que n ne soit pas
1
premier, est inférieure à .
4
6) Si le test a échoué, on recommence avec un nouveau tirage aléatoire de a.
A chaque tirage ayant échoué, la probabilité que n ne soit pas premier est inférieure à
1
. Au bout de 50 tirages, la probabilité pour que n ne soit pas premier est donc
4
50
1 1
inférieure à =
100
≈ 10 −30 . La probabilité que n soit premier est donc
4 2
supérieure à 1 − 10 −30 . Ce qui peut être considéré comme un bon résultat
« industriel » pour fournir un nombre n premier, utilisable dans un procédé de
cryptographie.
Il faut donc, pour garantir une certaine sécurité, choisir des clefs plus grandes : les
experts recommandent des clefs de 768 bits pour un usage privé, et des clefs de
1024, voir 2048 pour un usage sensible.
Le problème de la sécurité avec un tel système nous oblige à réfléchir sur la nature
des preuves permettant d’assurer cette sécurité. Ce n’est pas par un câblage secret,
ni par une découverte cachée. La théorie mathématique (les congruences modulo n)
est simple, l’algorithme de cryptage est connu de tous. En cas de progrès des calculs,
il suffit d’augmenter la taille des nombres premiers choisis. La résistance du codage
envers les cryptanalyses tient au temps mis par les ordinateurs pour faire les calculs
nécessaires. Peut-on alors parler de sécurité informatique ? Doit-on aussi évoquer
des rumeurs ? Les services secrets actuels font travailler d’excellents
mathématiciens. Si une méthode permettant de décoder des messages cryptés a été
découverte, il est évident que cette information reste confidentielle. L’histoire a montré
que ce phénomène s’est souvent produit. Est-ce le cas actuellement ?
L’avenir : il existe aussi d’autres voies de recherche (pour transmettre les clefs
secrètes), par exemple en utilisant des propriétés physiques : faire circuler des
photons polarisés ayant des orientations définies sur un câble en fibre optique. Mais
on en est au stade des expériences !
Puisque pour l’instant il est très difficile de trouver les facteurs premiers de N, on peut
avoir l’idée de résoudre directement l’équation M e ≡ C [N ] , où on connaît e, le
message crypté C et N. Ce problème est donc une extraction de racine, modulo N. Si
on introduit un « logarithme discret », c’est-à-dire opérant sur les entiers, on a :
e.ln( M ) = ln(C ) . Malheureusement les mathématiciens ont montré que ce problème
est très difficile.
Dernier point concernant RSA, le catalogue des clefs publiques de Bob et Alice ne
doit pas être modifiable. Ceci est actuellement réalisé par des organismes
certificateurs indépendants.
Transaction EMV
La sécurité est assurée à trois niveaux, les deux premiers au niveau local.
L’utilisateur doit alors taper ce code secret. L’EEPROM contient le code secret de la
carte : PIN (Personnal Identification Number). La puce vérifie si le code tapé est
correct, et retourne « oui » ou « non ». Cette étape permet de s’assurer que la carte
est entre les mains de son porteur légitime.
Si la réponse est « non », l’utilisateur est invité à taper à nouveau son code. Au bout
de trois essais incorrects, la puce se fige et la carte est bloquée.
Si la réponse est « oui », la puce vérifie que le montant total des transactions (pour
une période déterminée 14) est inférieure à un certain seuil 15. Si le montant de la
transaction en cours est inférieure à un certain seuil (en général 100 euros) 16 , la
transaction est autorisée. Sinon, la carte demande l’authentification en ligne ; il en est
de même si on retire de l’argent à un distributeur.
L’affaire Humpich
En 1998, cet informaticien a pu, après trois ans de travail, et en utilisant du matériel
grand public :
- casser l’authentification RSA de l’étape 1,
- fabriquer des « yes-cards », acceptant tous les codes secrets (étape 2).
Son objectif était de « travailler » avec le GIE Carte Bleue pour améliorer la sécurité
des cartes bancaires. En fait, ce GIE a porté plainte contre Serge Humpich, qui a été
condamné en 2000.
Par contre, depuis, le GIE Carte Bancaire a changé les procédures de validation, et
actuellement il n’est plus possible de fabriquer de telles fausses-cartes.
ces valeurs sont paramétrables et dépendent du type de carte : ordinaire, « or », « premier »..
14
idem,
15
idem.
16
9 Exercices
9.1 Structures
Exercice 1 Groupe de Klein
On considère l’ensemble K = {e, a,b,c} muni d’une multiplication d’élément neutre
2 2 2
e, associative et vérifiant : a= b= c= e, bc
= a, ca
= b, ab
= c.
Ecrire la table de cette multiplication. Vérifier qu’alors K est un groupe commutatif.
Obtient-on le même groupe que ( 4 , + ?)
___________________________________________________________________
__
Exercice 2 Sous groupes d’un groupe fini
Soit G
= (=
7 ,.)
∗
{1,2,3,4, 5,6} , avec la multiplication modulo 7.
1) Ecrire la table de la multiplication de G, et vérifier qu’on a bien un groupe
commutatif.
2) Pour tous les a de G, calculer les puissances successives an ,n = 2,3,...,6 .
Vérifier que ∀a ∈ G, a6 =1 .
3) Pour a dans G, on appelle Ga l’ensemble des puissances de a :
Ga
= {ak , k ∈ } . Montrer que Ga comporte au maximum 6 éléments, puis montrer
que Ga est un sous-groupe de G. Ga est dit engendré par a.
Ecrire les différents sous groupes engendrés par les éléments de G. Vérifier que
l’ordre de ces sous-groupes divise 6 (c’est à dire l’ordre de G). Existe-t-il des
éléments a de G qui engendrent G (c’est à dire Ga =G, G est alors cyclique) ?
___________________________________________________________________
__
Exercice 3 Centre d’un groupe Soit un groupe ( G,⋅) . Le centre de G est
l’ensemble C des éléments de G qui commutent avec tous les éléments de G :
a ∈ C ⇔ ∀x ∈ G, ax =xa .
1) Le centre C peut-il être vide ? Peut-on avoir G=C ?
2) Démontrer que C est un sous groupe de G.
___________________________________________________________________
__
Exercice 4 Formule du binôme. Soit ( A, + ,.) un anneau non commutatif.
2
1) A-t-on : ( a + b ) =a 2 + 2ab + b 2 pour tous a et b de A ?
Justifier la réponse par des exemples.
2) Si a et b sont permutables ( ab = ba ) et n entier>0, vérifier que :
n
( a + b )n =
∑ Cnp a pbn− p .
p =0
p
Indications : introduire
7 , puis utiliser la formule du binôme pour ( 1 + 7 ) .
___________________________________________________________________
__
Exercice 12 Eléments inversibles dans l’anneau ( 10 , + ,. )
∗
1) Ecrire la table de la multiplication de
10 = {1,2,.....,9} . Donner la liste des
éléments inversibles et vérifier que ces éléments forment un groupe à quatre
éléments. Est-ce le même groupe que ( 4 , + ? )
2) Résoudre dans les équations :
a) 5x + 2 ≡ 0 [10 ] b) 6x − 2 ≡ 0 [10 ] c) x 2 ≡ 6 [10 ] .
d) x 2 + 5x + 4 ≡ 0 [10 ] .
___________________________________________________________________
__
Exercice13 Théorème chinois « à la main »
1) Ecrire les entiers relatifs vérifiant x ≡ 5 [7 ] .
2) En déduire, en utilisant la table de multiplication de
7 (cf. exercice 2), les
4x + 1 ≡ 0 [5]
solutions dans du système : .
4x + 1 ≡ 0 [7 ]
On donne le NIR suivant : 1 75 06 75 112 431 61. Vérifier que la clef K est correcte.
Vérifier votre propre NIR (sur votre carte d’étudiant).
3) On pose A2= A + K .
Vérifier que A2 est divisible par 97.
4) Soient n ∈ et a ∈ {1,2,....,96} . Montrer que 97 ne divise pas a × 10 n .
5) En pratique, pour décider qu’un NIR est valide, on commence par vérifier les
valeurs de certains chiffres : le chiffre codant le sexe doit être 1 ou 2, les deux chiffres
correspondant au mois de naissance doivent être compris entre 1 et 12…. Sinon le
numéro est rejeté.
Ensuite pour déterminer si A est correct, on calcule A2 . Si A2 est divisible par 97,
on estime que le numéro est correct. Sinon on le rejette.
Montrer que cette façon de procéder permet la détection d’une erreur sur un chiffre
dans le NIR.
6) Montrer que l’on peut aussi détecter toute permutation de deux chiffres
consécutifs distincts dans le NIR.
Indication : on examinera les différents cas possibles :
- a) les chiffres permutés appartiennent tous les deux à A ,
- b) la permutation concerne les deux chiffres de K,
- c) la permutation concerne un des chiffres de K, et un des chiffres de A .
7) Inventer un nombre de 15 chiffres, inexact, et qui n’est pas rejeté par ce procédé
de contrôle.
2) Si l’erreur a été faite sur b1 , montrer que la règle (R1) n’est pas vérifiée, tandis
que la règle (R2) est vérifiée.
3) Si l’erreur a été faite sur b2 , montrer que la règle (R2) n’est pas vérifiée, tandis
que la règle (R1) est vérifiée.
4) Expliquer comment on peut détecter la présence d’une erreur. Montrer que ce
système permet de corriger une erreur. Indication : utiliser le fait que ( 11 , + , × )
est un corps.
5) Applications
a) Compléter 0123456789_ _ pour avoir un numéro exact.
b) On a reçu le numéro N=052170795658, et l’on sait qu’une erreur au plus s’est
produite.
Y a t il eu une erreur dans la transmission de ce numéro ? Si oui, quel était le
numéro initial ?
___________________________________________________________________
__
Exercice 16 Cryptographie de César
On donne le codage suivant utilisant 27 symboles. Quel est le résultat de ce
programme Maple ?
tablecod:=table(['a'=1,'b'=2,'c'=3,'d'=4,'e'=5,'f'=6,'g'=7,'h'=
8,'i'=9,'j'=10,'k'=11,'l'=12,'m'=13,'n'=14,'o'=15,'p'=16,'q'=17
,'r'=18,'s'=19,'t'=20,'u'=21,'v'=22,'w'=23,'x'=24,'y'=25,'z'=26
,'_'=0]);
tabledecod:=table([1='a',2='b',3='c',4='d',5='e',6='f',7='g',8=
'h',9='i',10='j',11='k',12='l',13='m',14='n',15='o',16='p',17='
q',18='r',19='s',20='t',21='u',22='v',23='w',24='x',25='y',26='
z',0='_']);
> cesar:=proc(mes)
> local lm,nb,ii,mescode;
> lm:=length(mes); mescode:=" ";
> for ii from 1 to lm do
> nb:=tablecod[substring(mes,ii)];#substring extrait le ii-ème
élément de mes
> nb:=nb+3 mod 27;mescode:=cat(mescode,tabledecod[nb]);od;
> print('message_codé',mescode);end proc;
> cesar('mathematiques_et_codages');
Exercice 18
Soit n entier ≥ 2 . On considère les n-1 nombres :
n!+ 2, n!+ 3,....,n!+ (n − 1), n!+ n .
Démontrer que ces nombres ne sont pas premiers.
Soit N entier. Montrer que l’on peut trouver une suite de N nombres consécutifs non
premiers.
Application numérique : Ecrire une telle suite pour N=4 et N=5. Continuer jusqu’à
rencontrer un nombre premier. Trouver un exemple où n!+ 1 est premier.
___________________________________________________________________
__
Exercice 19 Problème posé par Sophie Germain (mathématicienne française,
1776-1831 ; a travaillé sur les courbes et sur les problèmes d’élasticité)
Montrer que le seul nombre premier p tel que :
∃x, y ∈ , x 4 + 4y 4 =
p
est p = 5.
Indication : x 4 + 4y 4 = ( x 2 − 2xy + 2y 2 )( x 2 + 2xy + 2y 2 ) .
___________________________________________________________________
__
p
Exercice 20 Nombres de Mersenne : M=
p 2 − 1 où p est premier.
(Marin Mersenne, moine de l’ordre des Minimes, travail publié en 1644
à Paris)
11
1) Le nombre M=11 2 − 1 est –il premier ?
Montrer que 1103 divise M 29 et que 439 divise M73 .
p pq p
2) Soient p,q ∈ ∗ . Quel est le reste de la division de 2 puis 2 par 2 − 1 ?
pq p q
En déduire que 2 − 1 est divisible par 2 − 1 et 2 − 1 .
3) Montrer que si 2n − 1 est premier, alors n est premier. La réciproque est-elle
exacte ?
___________________________________________________________________
__
n
Fn 22 + 1
Exercice 21 Nombres de Fermat : =
(Pierre Fermat, conseiller au Parlement de Toulouse, dans une lettre en
1640 ; il les croyait tous premiers.)
1) Vérifier que F0 , F1 , F2 et F3 sont premiers. Comment vérifier que F4 est premier ?
2) Chercher les restes de 232 dans la division par 641. En déduire que F5 n’est pas
premier.
(Résultat publié par Leonard Euler, « prince des mathématiques » en 1793.)
Conjecture : On ne sait pas si, parmi les nombres de Fermat, d’autres que ceux de la
question 1 sont premiers. Tous ceux où les vérifications ont pu être faites sont
composés.
n
2
3) On pose G
=n 2 − 1 . Montrer que ces nombres sont composés pour n ≥ 2 (partir
de Gn+1 ).
___________________________________________________________________
Exercice 35 La réciproque du théorème de Fermat est inexacte : nombres de
Carmichael
Le petit théorème de Fermat affirme que si p est premier et a non multiple de p, alors
a p−1 ≡ 1 [ p] . On se pose la question de savoir, la relation a
p −1
≡1 [ p] étant
vérifiée pour tout a premier avec p, si alors p est premier. La réponse est non, il
existe des nombres n, dits de Carmichael, qui sont composés et vérifient
an−1 ≡ 1 [ n] . On va le montrer pour le plus petit d’entre eux, 561, en remarquant
que 561 = 3 × 11 × 17 , 560 = 561 − 1 = 2 × 280 = 10 × 56 = 16 × 35 .
Ecrire le petit théorème de Fermat pour les nombres premiers 3, 11 et 17. Utiliser les
décompositions ci-dessus pour montrer que pour tout a premier avec 561, on a
a 560 ≡ 1 [ 561] .
9.8 RSA
Exercice 36 RSA « à la main »
Bob et Alice viennent d’étudier RSA et décident de le tester sur un exemple simple. Ils
choisissent les entiers premiers 11 et 13, d’où N = 11 × 13 = 143 .
1) Ils choisissent e=3. Est-ce correct ?
Dorénavant la clef publique est formée de N=143, e=7. Ils choisissent un message M
de valeur inférieure à 143, et le codent. Ils obtiennent C=27.
2) Trouver le reste de la division de 27 103 par 11, et le reste de la division de 27 103
par 13.
En déduire, à l’aide du théorème chinois, le reste de la division de 27 103 par 143.
3) Décoder le message C.
___________________________________________________________________
__
Exercice 37 Une attaque de RSA : même choix de N.
Comme la vérification que des nombres sont premiers est coûteuse, deux
correspondants d’Alice, Bob et Bernard utilisent pour leurs clefs privées les mêmes
entiers premiers p et q, et donc le même N= p × q . Par contre ils choisissent deux
entiers e1 et e2 différents et premiers entre eux. Leurs clefs publiques sont donc
( N , e1 ) ; ( N , e2 ) .
Alice veut envoyer le même message M à Bob et Bernard (elle connaît bien sûr leurs
clefs publiques). Elle crypte M respectivement en C1 et en C 2 .
Montrer que si Oscar intercepte C1 et C 2 , il peut retrouver le message M.
Application numérique avec Maple : N=10000000167993271. La clef publique de Bob
est (N,357), la clef publique de Bernard est (N,501). Oscar intercepte des messages
chiffrés : C1:=4120301081636019 ;C2:=1279799048180465;
envoyés par Alice et pense qu'il s'agit du même message M. Retrouver M sans
factoriser N.
___________________________________________________________________
__
Exercice 38 Une faiblesse de RSA : même choix de e
Pour que RSA soit sûr, il doit être employé avec des nombres premiers très grands,
et une valeur de e variable. Ce n’est pas toujours le cas. Dans le protocole de cartes
bancaires, la partie vérifiée avec RSA utilise e=3 pour toutes les transactions. Que
risque-il de se passer ?
Alice veut envoyer à trois correspondants Bob 1 , Bob 2 et Bob 3 le même message
M. Elle connaît les clefs publiques de ses trois correspondants, qui sont formées
avec la même valeur e=3. D’où les trois couples de clefs publiques :
( N1 ,3) ; ( N 2 ,3) ; ( N 3 ,3) . Alice crypte donc M avec ces clefs et obtient les trois
messages cryptés C1 , C 2 , C 3 .
1) On suppose que N1 , N 2 , N 3 sont premiers entre eux, pris deux à deux. Montrer
que si Oscar intercepte les trois messages cryptés, il peut retrouver le message
d’origine M.
Expliquer pourquoi deux messages interceptés ne suffisent pas à retrouver M.
=
2) Application numérique à la main : N1 205,
= N 2 187 = , N 3 667 .
Vérifier que ces nombres sont premiers entre eux deux à deux.
On donne = C1 10,= C 2 111,
= C 3 167 . Retrouver le message M.
3) Application numérique avec Maple :
N1:=10000000167993271;N2:=10000000077056303;N3:=100000007614398
83;
C1:=9010328151653526;C2:=3715786019602206;C3:=4712381892400635;
Montrer (sans utiliser la factorisation des nombres N), qu’Oscar peut retrouver le
message M.
Vérifier ce résultat avec la clef secrète de Bob 1 .
4) On suppose que N1 et N 2 ne sont pas premiers entre eux.
Montrer qu’alors Oscar peut factoriser N1 et N 2 (donc trouver la clef secrète de
Bob 1 ).
10 Textes d’examens
Note : les calculatrices sont autorisées. Sont également autorisées les notes de
cours distribuées par les enseignants, ainsi que les notes manuscrites personnelles.
Tout autre document et tout moyen de communication sont interdits.
( n )
∗
1) Ecrire les carrés des éléments de pour chacune des valeurs de n
suivantes : n=5, 7 et 8.
Donner la liste des éléments qui sont des carrés, c’est-à-dire les éléments de
Cn = { (
c ∈ n )
∗
(
, ∃x ∈ n )
∗
,x 2 = c } et préciser le nombre de solutions de
v tels que : u2 ≡ c [ p] et v2 ≡ c [q ] .
a) Expliquer pourquoi on peut trouver des entiers relatifs a et b tels que :
a ≡ 1 [ p] b ≡ 0 [ p]
a ≡ 0 [q ] b ≡ 1 [q ]
b) Montrer que =x au + bv est une racine carrée de c modulo n.
Application numérique
c) Trouver des entiers relatifs λ et μ tels que 31λ + 43μ =
1.
a ≡ 1 [ 31] b ≡ 0 [ 31]
d) Trouver a et b tels que : .
a ≡ 0 [ 43] b ≡ 1 [ 43]
e) Donner une solution de l’équation x 2 ≡ 10 [1333] .
Combien cette équation possède-t-elle de solutions ?
( )
∗
On note, pour p entier premier >3, {1,2,...., p − 1} les éléments de . On
p
rappelle que cet ensemble est un groupe commutatif pour la multiplication et qu’il
( ) ,×
∗
note p
comporte (p-1) éléments. On= ce groupe.
p
Pour tout a de p on appelle Ga les puissances de a, c’est-à-dire :
Ga
= {a k , k ∈ }
1) a) Pour tout a de p montrer que Ga est un sous-groupe de p et que:
Ga = {
a k , k ∈ {1,2,....( p − 1)} , }
Application numérique
b) Pour p=7, écrire tous les sous-groupes Ga possibles et indiquer le nombre de
leurs éléments. Vérifier que ce nombre divise p-1=6.
2) On choisit p=19.
a) Vérifier que 3 est générateur de 19 .
b) L’entier a=8 est il un générateur de 19 ?
c) Pour k dans {1,2,...,18} , on pose b = 3k .
En utilisant l’identité de Bezout et le théorème de Fermat, montrer que :
b est un générateur de 19 si et seulement si k et 18 sont premiers entre eux.
d) Ecrire les entiers compris entre 1 et 18 et qui sont premiers avec 18.
e) En déduire tous les générateurs de 19 .
P calculé : P ≡ as [ p] .
Pour chiffrer un message M à transmettre (de longueur <p), on commence par tirer au
hasard un entier h dans {1,2,..., p − 1} qui reste secret, mais qui change à chaque
message et on calcule : C1 ≡ a h [ p] et C2 ≡ M.P h [ p] .
Le message chiffré est (C1 ,C 2 ) .
b) Déchiffrement.
Montrer que si on connaît la clef publique (p,a,P), la clef privée s et (C1 ,C 2 ) on peut
retrouver le message M sans connaître h.
Les mathématiciens ont montré que lorsque p est grand, ceci n’est possible que si on
connaît s : c’est le difficile problème du logarithme discret.
4) Applications numériques
a) Chiffrement pour p=19
On choisit a=3, et s=6. Calculer P. Le message est M=6, on tire h=7. Calculer
(C1 ,C 2 ) .
b) Déchiffrement pour p=19
Le message transmis est (C1 ,C 2 ) = (18,15) , avec toujours a=3, et s=6. Retrouver M.
c) Déchiffrement pour p=113
Trouver le reste de la division de 15109 par 113.
On admet que a=5 est générateur de 113 .
On choisit a=5 et s=3. Le message transmis est (C1 ,C 2 ) = (15,103) . Retrouver M.
2) Le chiffrement de Hill.
Le mathématicien Lester Hill (1891-1961) a proposé ce chiffrement en 1929. On part
d’un texte alphabétique (sans séparateur), avec l’alphabet de 26 lettres A, B, ....., Z, et
d’une matrice M carrée d’ordre m, à coefficients dans . Le message est alors
26
calibré à une longueur multiple de m (par ajout de lettres arbitraires, par exemple A),
puis coupé en blocs de longueur m. Chaque bloc est transformé en valeur numérique,
comme dans les cryptographies historiques étudiées. Ici on choisit la correspondance
suivante :
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
On considère alors chaque bloc comme un vecteur dont on calcule l’image par la
matrice M. On décode ces valeurs numériques, et on obtient le message
(alphabétique) crypté.
Exemple
7 5
Pour le message = INSA, m=2, et la matrice M1 = . Le message est coupé en
1 2
deux vecteurs (8, 13) et (18, 0).
Le message numérique crypté est 17 8 22 18, soit le message crypté final RIWS.
a) On choisit la matrice K 2 .
On donne le message CODAGES. Donner le message crypté.
On donne le message GWYF crypté par K 2 . Le décrypter.
b) On choisit la matrice K 3 .
On donne le message CODAGES. Donner le message crypté.
On donne le message BPNWIW crypté par K 3 . Le décrypter et commenter.
c) On donne le message crypté HUFSXBQKVLOPDMANDMEI par une matrice K
d’ordre 2. On sait que le message commence par REBONJOUR. Déterminer la
matrice K.
3) Quels sont les avantages et désavantages du chiffrement de Hill?
Partie I
( n ) .
∗
Pour n entier >2, on note {1,2,....,n − 1} les éléments de
( n ) .
∗
3) On considère les éléments inversibles (pour la multiplication) de
Comment les caractériser ?
Montrer que l’ensemble de ces éléments inversibles est un groupe pour la
multiplication. On note n ce groupe.
Lorsque n est un entier premier, quel est le nombre d’éléments de n ?
Ga
= {a k , k ∈ }
Montrer qu’il existe q entier >0 tel que aq ≡ 1 [n] .
Indication : on remarquera que a k ne prend qu’un nombre fini de valeurs.
Partie II
Pour n entier >2 et a entier positif, on dit que n est a-pseudo premier si
an−1 ≡ 1 [n] .
2) On veut utiliser la notion de nombre pseudo premier pour tester si n est premier.
L’entier n étant donné, si on trouve un entier a premier avec n, tel que an−1 ≠ 1 ,
alors n est composé, sinon on ne peut pas conclure.
Donner une valeur d’un entier n où ce critère ne permet pas de conclure pour un
premier choix de a, mais où on peut conclure avec un autre choix de a.
Donner une valeur de n où ce critère ne permet pas de conclure, quel que soit le
choix de a.
3) Soit n et a tels que n soit a-pseudo premier. Montrer que a appartient n (c'est-à-
dire que a est inversible pour la multiplication dans l’ensemble des entiers modulo n).
5) Pour n=9, écrire toutes les valeurs de a telles que 9 soit a-pseudo premier.
Exercice 1 Sécurité
(barème indicatif : 3 points)
Comment Bob peut-il envoyer un message à Alice en assurant la confidentialité et
l’authenticité de son message ? Vous n’oublierez pas de définir ces deux notions.
n X2 −Y2 .
1) Soit n un entier premier, X et Y entiers tels que =
0 dans
Ecrire tous les couples ( X ,Y ) vérifiant X 2 − Y 2 =
n .
2) On donne n = 143 .
b) pour 37 2 − 15 2 ≡ 0 [143] .
n X 2 − Y 2 , tels que
3) Soit n entier, tel qu’il existe X et Y entiers vérifiant =
X − Y , X + Y ne sont pas des diviseurs de n.
a) Montrer que n est composé.
b) Montrer que PGCD(n,X − Y ) et PGCD(n,X + Y ) sont des diviseurs de n,
distincts de 1 et n.
( )
∗
1) Soit a un élément de ,× .
n
=
a) Montrer que les puissances de a, c'est-à-dire Ga { ak , k ∈ } forment un groupe.
L’élément a est dit générateur de Ga , et Ga est dit engendré par a.
Quelles sont les valeurs possibles pour l’ordre de Ga ?
( )
∗
b) On considère le groupe multiplicatif ,× .
37
Trouver le sous groupe engendré par a = 36 .
( )
∗
c) On considère le groupe multiplicatif ,× .
43
Trouver le sous groupe engendré par a = 41 .
x ≡ 36 [ 37 ]
2) Résoudre dans 2 le système .
x ≡ 35 [ 43]
4) Protocole de Diffie-Hellmann
Alice et Bob ne disposent que d’un canal peu sûr, et veulent construire une clef
secrète qui va leur permettre ensuite d’échanger des données.
i) Un des deux choisit un grand nombre premier p, et construit un générateur g du
( ) ,×
∗
groupe (on admet que lorsque p est premier ceci est toujours
p
possible). Alice et Bob échangent ces valeurs de p et g par l’intermédiaire du canal.
ii) Alice choisit un entier a dans {2,3,....., p − 1} , qu’elle garde secret. Elle calcule
A ≡ ga [ p]
qu’elle transmet à Bob, toujours par le même canal.
iii) Bob choisit un entier b dans {2,3,....., p − 1} , qu’il garde secret. Il calcule
B ≡ gb [ p]
qu’il transmet à Alice, toujours par le même canal.
ab
iv) La clef commune est K ≡ g [ p] .
a) Expliquer comment Alice et Bob calculent leur clef.
( )
∗
b) Pourquoi choisit-on un générateur de ?
p
c) Expliquer, lorsque p est grand, pourquoi Oscar qui a pu récupérer toutes les
valeurs qui ont transité par le canal, ne peut pas calculer K.
d) Application numérique= p 17= , g 5,= a 6,= b 8.
1) Expliquer ce que représentent ces clefs, et calculer les clefs privées d’Alice et de
Bob. On les notera pa , q a , da pour Alice et pb , qb , db pour Bob.
2) Alice veut envoyer la note M = 13 à Bob. La signature de cette note est
=s h(= M) 4 .
Alice va crypter M avec les clefs publiques de Bob et obtenir C. Donner la valeur de la
note cryptée C. Alice signe la note M , en cryptant avec sa clef privée da , elle obtient
S qu’elle transmet à Bob. Calculer S.
Aide au calcul : 49 ≡ 1 [ 57 ]
3) Alice veut maintenant transmettre une note M, qu’elle crypte avec les clefs de Bob
et obtient le message crypté C = 36 , qu’elle transmet à Bob. Elle calcule alors
s = h( M ) , qu’elle crypte avec sa clef privée da , elle obtient S = 28 qu’elle transmet à
Bob.
Quelle est la valeur de la note M décryptée par Bob ? Expliquer les calculs de Bob.
Expliquer comment Bob s’assure que cette note est bien authentique.
Aide au calcul : 36 5 ≡ 1 [ 55 ]
4) On revient au cas général. On va montrer que cet algorithme est sensible à une
attaque par faute.
Montrer que S peut s’écrire : S ≡ aSp + bSq , avec
a ≡ 1 [ p] b ≡ 0 [ p ]
.
a ≡ 0 [q ] b ≡ 1 [ q ]
5) Un attaquant peut, en agissant de façon externe, provoquer une faute
lors du calcul de Sp . Au lieu d’obtenir Sp , l’algorithme calcule S'p .
La signature est alors S' ≡ aS'p + bSq .
Montrer que si l’attaquant connaît S, S’ et N = pq , il peut calculer q,
c'est-à-dire casser le code, en utilisant un algorithme très rapide.
11 BIBLIOGRAPHIE
• Jacques Stern, La science du secret, Editions Odile Jacob (DOC’INSA 22525)
• Simon Singh, Histoire des codes secrets, Le livre de Poche (Bibliothèque des
Humanités 5/6 (091) SIN)
• Jean Luc Delahaie, Merveilleux nombres premiers, Edition Belin (DOC’INSA
usuel et 15648)
• Gilles Dubertret, Initiation à la cryptographie, Edition Vuibert (DOC’INSA
14625).
• Pierre Vigoureux, Cryptographie, libertés individuelles et codes secrets,
Editions Ellipses (DOC’INSA 25706).
• Johannes Buchmann, Introduction à la cryptographie, Editions Dunod
(DOC’INSA 26552).
• Bruno Martin, Codage, cryptologie et applications, Ed. Presses Polytechniques
et universitaires Romandes (DOC’INSA 21937).
• Dany-Jack Mercier, L'algèbre dans la correction des erreurs,
http://megamaths.perso.neuf.fr/documents/ccod0002.pdf
www.bibmath.net/crypto/index.php3
www.apprendre-en-ligne.net/crypto/menu/index.html
www.sciences.ch/htmlfr/infotheorique/infocrypto01.php