0% ont trouvé ce document utile (0 vote)
16 vues162 pages

Algèbre et Cryptographie en Mathématiques

Transféré par

yassinezaryouh591
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues162 pages

Algèbre et Cryptographie en Mathématiques

Transféré par

yassinezaryouh591
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Faculté des sciences

Mathématiques discrètes

140

120

100

80

60

40

20

20 40 60 80 100 120 140

Notes de cours 2009–2010


Michel Rigo
Table des matières

Chapitre I. Quelques compléments d’algèbre 1


1. Structures algébriques 1
2. Idéaux 4
3. Polynômes et division euclidienne 6
4. Eléments algébriques 10
5. Racines d’un polynôme 16
6. Champs finis 20
7. Construction de champs finis 34
8. Représentation en base entière et exponentiation modulaire 42
9. Complexité d’algorithmes 43
10. A propos des nombres premiers 49

Chapitre II. Cryptographie 53


1. Introduction 53
2. Implémentation et codage 56
3. Quelques cryptosystèmes classiques 60
4. Le chiffrement DES 67

Chapitre III. RSA et cryptographie à clé publique 77


1. Fonction à sens unique 77
2. RSA 79
3. Chiffrement RSA en pratique 81
4. Un procédé de signature 84
5. Connaissance de d et ϕ(n) 86
6. Rapidité du RSA 88
7. Quelques éléments de sécurité à prendre en considération 89
8. Génération de grands nombres premiers 92
9. RSA et nombres composés 98
10. Algorithmes de factorisation 100
11. Logarithme discret 103
12. Protocole d’échange des clés de Diffie-Hellman 104
13. Cryptosystème d’ElGamal 106

Chapitre IV. Suites linéaires récurrentes 111


1. Introduction 111
2. Définitions et premières propriétés 115
3. Structure des solutions sur un anneau commutatif 118

i
ii Chapitre . Table des matières

4. Suites linéaires récurrentes et déterminants de Hankel 125


5. Suites linéaires récurrentes sur un champ fini 129
6. Séries formelles et fonctions génératrices 133
7. Chemins de Dyck et nombres de Catalan 145
8. Systèmes d’équations linéaires récurrentes 151

Bibliographie 153

Liste des figures 155

Index 157
CHAPITRE I

Quelques compléments d’algèbre

Nous rappelons tout d’abord quelques définitions de structures et objets


classiques déjà rencontrés à diverses occasions dans les cours d’algèbre. Les
cinq premières sections de ce chapitre ne constituent qu’un résumé partiel de
notions supposées connues et nous invitons le lecteur à compléter ce rappel,
s’il le juge nécessaire. Dans la suite de ce chapitre, nous approfondissons
quelques points importants comme les éléments algébriques, les polynômes
et leurs racines ou encore la structure des champs finis. En effet, ces derniers
disposent, comme nous le verrons dans les chapitres suivants, d’atouts parti-
culièrement intéressants pour les applications (codes correcteurs, cryptogra-
phie, combinatoire, etc. . . ). Attirons d’ores et déjà l’attention du lecteur
sur le fait que nous considérerons tout au long de ces notes presque exclu-
sivement des structures commutatives.

1. Structures algébriques
Définition I.1.1. Un groupe est un ensemble G muni d’une opération
interne et partout définie ◦ : G × G → G telle que
I l’opération ◦ est associative : ∀x, y, z ∈ G, x ◦ (y ◦ z) = (x ◦ y) ◦ z,
I il existe un élément (unique) e ∈ G, appelé neutre, tel que
x ◦ e = x = e ◦ x, ∀x ∈ G,
I tout élément de G est inversible, i.e., pour tout x ∈ G, il existe
y ∈ G (unique, noté x−1 ou −x suivant le contexte) tel que x ◦ y =
y ◦ x = e.
Enfin, si pour tous x, y ∈ G, on a x ◦ y = y ◦ x, alors on parle de groupe
commutatif ou abélien. S’il est nécessaire de rappeler l’opération ou le neutre
du groupe G, on le notera (G, ◦) ou (G, ◦, e).
Remarque I.1.2. Si un ensemble jouit uniquement des deux premières
propriétés, on dit alors qu’il s’agit d’un monoı̈de.
Exemple I.1.3. L’ensemble (Z/mZ, +), aussi noté (Z m , +), des entiers
modulo m muni de l’opération d’addition correspondante est un groupe 1. Nous supposons les en-
tiers modulo connus.
L’ensemble (Q \ {0}, ·) en est un aussi. Ces deux premiers exemples sont des
groupes commutatifs. L’ensemble GL n (R) des matrices carrées inversibles
1La notation Z/mZ prendra rapidement tout son sens. Notez également que Zm
est souvent utilisé pour désigner l’ensemble des entiers m-adiques (m premier). Il n’y a
cependant ici aucune confusion possible.

1
2 Chapitre I. Quelques compléments d’algèbre

de dimension n muni de la multiplication matricielle est un groupe non


commutatif. Par contre, (N, +) est un monoı̈de qui n’est pas un groupe.
Définition I.1.4. Soient (G, ◦, eG ) et (H, , eH ) deux groupes. Un homo-
morphisme de groupes est une application f : G → H telle que
∀x, y ∈ G : f (x ◦ y) = f (x)  f (y).
Puisque dans un groupe, tout élément est inversible, il découle de cette
définition que f (eG ) = eH et f (x−1 ) = f (x)−1 pour tout x ∈ G. En effet,
pour tout x ∈ G, on a f (x) = f (x ◦ eG ) = f (x)  f (eG ). Puisque H
est un groupe, nous pouvons multiplier à gauche par f (x) −1 pour obtenir
f (x)−1 f (x) = f (x)−1 f (x)f (eG ) et conclure. Fort de cette constatation,
il vient pour tout x ∈ G, f (eG ) = f (x ◦ x−1 ) = f (x)  f (x−1 ) = eH .
Définition I.1.5. Soient (G, ◦, eG ) et (H, , eH ) deux monoı̈des. Un ho-
momorphisme de monoı̈des est une application f : G → H telle que
∀x, y ∈ G : f (x ◦ y) = f (x)  f (y) et f (eG ) = eH .
Cette dernière condition ne découle pas de la première car, dans le cas d’un
monoı̈de, on ne dispose généralement pas de la notion d’inverse.
Définition I.1.6. Un anneau est un ensemble A muni de deux opérations
internes et partout définies, que nous noterons ici + et · et dont les neutres
respectifs sont notés 0 et 1, tel que
I (A, +, 0) est un groupe commutatif,
I l’opération · est associative, i.e., ∀x, y, z ∈ A, (x.y).z = x.(y.z),
I 1 est neutre pour ·, i.e., ∀x ∈ A, 1.x = x.1 = x,
I l’opération · est distributive par rapport à +,
∀x, y, z ∈ A, (x + y).z = x.z + y.z et x.(y + z) = x.y + x.z.
S’il est nécessaire de rappeler les opérations de l’anneau, on le notera alors
(A, +, ·, 0, 1) ou (A, +, ·). Un anneau est commutatif si l’opération · est
commutative.
Exemple I.1.7. L’ensemble (Zm , +, ·) possède une structure d’anneau
commutatif. L’ensemble Rnn des matrices carrées de dimension n à coef-
ficients réels muni des opérations usuelles d’addition et de multiplication
possède une structure d’anneau (non commutatif).
Remarque I.1.8. Si (A, +, ·) est un anneau, alors (A, ·, 1) possède en par-
ticulier une structure de monoı̈de.
Définition I.1.9. Un anneau pour lequel 0 6= 1 et tout élément non nul
possède un inverse pour ·, i.e., pour tout x ∈ A \ {0}, il existe y ∈ A tel que
x.y = 1 = y.x, est qualifié de corps. Si de plus, l’anneau est commutatif, on
parle alors de champ2.
2Nos amis français n’emploient pas cette terminologie et parle exclusivement de corps.
Parfois, ils parlent de corps gauche pour insister sur le caractère non commutatif de la
multiplication.
I.1. Structures algébriques 3

Exemple I.1.10. L’ensemble Zp est un champ si et seulement si p est un


nombre premier. On le note parfois F p et cette notation sera justifiée dans
les sections suivantes. Le sous-ensemble GL n (R) des matrices inversibles de
Rnn est un corps.
Définition I.1.11. Soient (A, +A , ·A , 0A , 1A ) et (B, +B , ·B , 0B , 1B ) deux
anneaux. Un homomorphisme d’anneaux est une application f : A → B telle
que f est un homomorphisme de groupes entre (A, + A , 0A ) et (B, +B , 0B )
et aussi un homomorphisme de monoı̈des entre (A, ·A , 1A ) et (B, ·B , 1B ).
Autrement dit, on a
∀x, y ∈ A, f (x + y) = f (x) + f (y), f (x.y) = f (x).f (y)
et f (1A ) = 1B .
Définition I.1.12. Soit K un champ (ou simplement un corps). Un espace
vectoriel E sur K ou K-vectoriel est un ensemble E muni d’une addition
interne + : E × E → E et d’une multiplication interne · : K × E → E tel
que
I (E, +) est un groupe commutatif
et pour tous x, y ∈ E et tous λ, µ ∈ K
I λ · (µ · x) = (λµ) · x,
I 1 · x = x,
I (λ + µ) · x = λ · x + µ · x,
I λ · (x + y) = λ · x + λ · y.
Si K n’est pas un champ, mais simplement un anneau, on parle alors de
K-module. Un espace vectoriel est de dimension finie s’il contient une partie
génératrice finie. Sa dimension est alors le nombre d’éléments d’une de ses
bases3.
Définition I.1.13. Soient K, L deux champs tels que K soit un sous-champ
de L. Dans ce cas, on dit que L est une extension de champ de K. En par-
ticulier, il est immédiat de vérifier que L est un K-vectoriel. Si la dimension
de L comme K-vectoriel est finie et égale à d, alors on parle d’extension finie
et d est le degré de l’extension; on la note [L : K]. Plus généralement, si
K et L sont deux champs et s’il existe un plongement h : K → L (i.e., un
homomorphisme injectif), alors on dit que L est une extension de K car K
est isomorphe à un sous-champ de L.
Remarque I.1.14. Si K est un champ fini contenant t éléments et si L est
une extension de K de degré fini d, alors on en déduit immédiatement que
L contient td éléments. En effet, il existe une base (` 1 , . . . , `d ) de L telle que
tout élément de L se décompose de manière unique comme k 1 `1 + · · · + kd `d
avec les ki ∈ K.
3Un K-vectoriel possède au moins une base et toutes ses bases sont équipotentes. Cela
signifie que, dans le cas d’un espace vectoriel de dimension finie, elles ont le même nombre
d’éléments. Rappelons aussi qu’un A-module ne possède pas toujours de base.
4 Chapitre I. Quelques compléments d’algèbre

Exemple I.1.15. L’ensemble Q est un champ. En adjoignant à Q le nom-


√ √
bre irrationnel 2, on obtient l’extension de champ √ Q( 2) formée de toutes
4
les expressions rationnelles faisant intervenir √ 2 et des éléments de Q. Il
du plus petit champ contenant Q et 2. Ainsi, un élément arbitraire
s’agit √
de Q( 2) est de la forme
Pm √ i
i=0 qi ( √2)
Pn , qi , rj ∈ Q, m, n ∈ N.
j
j=0 rj ( 2)
Des manipulations algébriques
√ élémentaires permettent de réécrire cet élé-
ment sous la forme a + b 2 avec a, b ∈ Q. Ainsi, on a
√ √
Q( 2) = {a + b 2 | a, b ∈ Q}
√ √
et (1, 2) forment une base de Q( 2) considéré comme √ Q-vectoriel. Il est
clair que le degré de cette extension est 2, i.e., [Q( 2) : Q] = 2. Par des
raisonnements analogues, il est facile de voir que
√ √ √ √ √
Q( 2, 3) = {a + b 2 + c 3 + d 6 | a, b, c, d ∈ Q}
√ √
et [Q( 2, 3) : Q] = 4.

2. Idéaux
Définition I.2.1. Un idéal (bilatère) d’un anneau (A, +, ·) est un sous-
ensemble I ⊂ A tel que
I (I, +, 0) est un groupe commutatif,
I pour tous i ∈ I et a ∈ A, a.i et i.a appartiennent à I.
Soient a1 , . . . , ak des éléments de A. Dans le cas où A est un anneau com-
mutatif, l’idéal engendré par a1 , . . . , ak est
( k )
X
ha1 , . . . , ak i = bi ai | b i ∈ A .
i=1
Un idéal engendré par un unique élément a ∈ A, i.e., I = hai, est qualifié de
principal. Un anneau principal est un anneau intègre 5 dans lequel tout idéal
est principal.
Définition I.2.2. Un idéal I d’un anneau A est maximal si I est propre,
i.e., I 6= A, et s’il n’est contenu strictement dans aucun idéal propre, i.e., si
J est un idéal tel que I ( J, alors J = A.
Exemple I.2.3. Si K est un champ, les seuls idéaux de K sont {0} et K
tout entier. En effet, si un élément a 6= 0 appartient à un idéal I 6= {0},
alors a−1 .a = 1 doit appartenir à I et de là, on en déduit que tout élément
de K appartient à I. Les idéaux de Z sont les mZ = hmi et Z est donc un
anneau principal.
4On a le droit, dans un champ, d’ajouter, soustraire, multiplier et diviser entre eux

des éléments quelconques de Q ∪ { 2} (en ne divisant bien sûr pas par 0).
5i.e., A ne possède pas de diviseurs de 0. Autrement dit, si a.b = 0 avec a, b ∈ A,
alors a = 0 ou b = 0.
I.2. Idéaux 5

2.1. Quotient d’un anneau par un idéal. Nous serons brefs. Soient
(A, +, ·, 0, 1) un anneau et I un idéal de A. Puisque I est un sous-groupe
du groupe commutatif (A, +, 0), on peut tout d’abord considérer le groupe
quotient A/I. Rappelons que les éléments de A/I sont les classes de la forme
a + I = {a + i | i ∈ I}, a ∈ A.
La somme de deux classes a + I et b + I est la classe (a + b) + I et le neutre
la classe 0 + I = I. On peut munir A/I d’une structure supplémentaire
d’anneau en le munissant d’une multiplication : le produit des classes a + I
et b + I est la classe (a.b) + I et le neutre est alors 1 + I. La projection
canonique π : A → A/I : a 7→ a + I est alors un homomorphisme d’anneaux.
Exemple I.2.4. L’anneau quotient de Z par l’idéal mZ est l’anneau Z m
des entiers modulo m. Une classe est un élément de la forme a + hmi. Pour
m = 3, on a par exemple,
(1 + h3i) + (2 + h3i) = 3 + h3i = 0 + h3i
et
(2 + h3i).(2 + h3i) = 4 + h3i = 1 + h3i.
En effet, dans Zm il est facile de se convaincre que
∀a, b ∈ Z : a + hmi = b + hmi ⇔ a ≡ b (mod m).
Remarque I.2.5. Un élément a + I de A/I est nul (i.e., correspond au
neutre pour l’addition dans l’anneau quotient) si et seulement si a appartient
à I. En effet, a + I = {a + i | i ∈ I} = I si et seulement si a ∈ I.
Un résultat fort utile concernant les idéaux maximaux est le suivant. Premier ingrédient pour
construire un champ fini.
Théorème I.2.6. Soient A un anneau commutatif et I un idéal de A.
L’anneau quotient A/I est un champ si et seulement si I est un idéal max-
imal.
2.2. Idéaux et divisibilité. La proposition suivante relie la notion
d’idéal à celle de la divisibilité. Elle nous sera utile dans la suite et nous
avons donc jugé bon de la rappeler. Soient a, b deux éléments d’un anneau
A muni d’une division euclidienne. Bien sûr, on dira que a divise b s’il existe
c ∈ A tel que b = c.a.
Théorème I.2.7. Soient A un anneau principal 6 et a, b ∈ A \ {0}. On a
I hai ⊃ hbi si et seulement si a divise b.
I hai = hbi si et seulement si a = ub avec u inversible dans A.
Démonstration. Supposons que hai ⊃ hbi. En particulier, b appartient à
hai et il existe donc c ∈ A tel que b = ca. Ainsi, a divise b. Réciproquement,
si a divise b, il existe c ∈ A tel que b = ca. Dès lors, pour tout t ∈ A,
tb = tca ce qui montre que hbi est inclus dans hai.
6On suppose l’anneau principal muni d’une division euclidienne comme par exemple
Z ou K[X].
6 Chapitre I. Quelques compléments d’algèbre

Pour la seconde partie, si a = ub avec u inversible dans A, on a aussi


u−1 a = b (avec u−1 l’inverse de u, i.e., u−1 .u = 1). Ainsi, a divise b et b
divise a. Donc par le premier point, hai = hbi. Réciproquement, si hai = hbi,
alors il existe u et v dans A tels que a = ub et b = va. De là, b = vub et donc
vu = 1. Ceci signifie que u et v sont inversibles et inverses l’un de l’autre.


3. Polynômes et division euclidienne


Dans cette section K est un champ.
Définition I.3.1. Un polynôme à coefficients dans le champ K est une suite
(αn )n∈N d’éléments de K non tous nuls pour laquelle il existe un entier d ≥ 0
tel que αn = 0 pour tout n > d. On notera symboliquement ce polynôme
par
Xd
P = αi X i = α d X d + · · · + α 1 X + α 0
i=0
et d en est le degré, noté deg P . La valeur P (β) de ce polynôme évalué en
β ∈ K est
X d
P (β) = αi β i = α d β d + · · · + α 1 β + α 0 .
i=0
(Nous rappelons au lecteur la distinction faite entre polynôme et fonction
polynomiale7 .) La suite nulle est appelé polynôme nul. Si α d = 1, le
polynôme est qualifié de monique (ou unitaire). Si d = 0, le polynôme
est constant. On définit de manière naturelle (comme dans le cas des
polynômes à coefficients réels) la somme et le produit de deux polynômes.
L’ensemble K[X] des polynômes à coefficients dans K possède alors une
structure d’anneau.
Il est aisé de munir K[X] de la divison euclidienne 8.
Proposition I.3.2 (Division euclidienne). Soit K un champ. Si D ∈ K[X]
est non nul, alors pour tout P ∈ K[X], il existe des polynômes uniques Q et
R tels que
P = Q.D + R, avec deg R < deg D.
Démonstration. En procédant comme dans C[z] (calcul écrit), le résultat
est immédiat.


7Les polynômes de Z [X], P (X) = X 2 + 1 et Q(X) = X 3 + X 2 − X + 1 sont distincts


3
mais représentent la même fonction : ∀z ∈ Z3 , P (z) = Q(z).
8On dit parfois que K[X] est un anneau euclidien. En fait, un anneau euclidien est
un anneau muni d’une valuation euclidienne permettant de définir une “sorte” de division
euclidienne. Si K n’est pas un champ mais simplement un anneau, pour assurer l’existence
des polynômes Q et R, il faut que le coefficient principal de D soit inversible. De plus,
l’unicité de Q et R n’est assurée que si l’anneau est intègre.
I.3. Polynômes et division euclidienne 7

Soient P, Q, R appartenant à K[X]. Si P = Q.R, alors le polynôme Q


divise le polynôme P . Puisque K est un champ 9,
(1) deg P.Q = deg P + deg Q
et dès lors, K[X] est un anneau intègre, i.e., qu’il ne possède pas de diviseur
de zéro. Ainsi, P.Q = 0 entraı̂ne P = 0 ou Q = 0.
Définition I.3.3. Un polynôme non constant P est irréductible si P = Q.R
entraı̂ne que Q ou R est constant. Au vu de (1), P ne peut pas s’écrire
comme le produit de deux polynômes de degré strictement inférieur au degré
de P . En particulier, tout polynôme de degré 1 est irréductible.
Exemple I.3.4. Le polynôme X 2 + 1 est irréductible sur R[X] mais pas
sur C[X] car il s’y factorise en (X + i) (X − i).
Remarque I.3.5. Dans K[X], les seuls éléments inversibles sont les poly-
nômes constants k ∈ K \ {0}. C’est immédiat. Si P est un polynôme de
degré au moins 1, alors pour tout Q ∈ K[X], deg P.Q ≥ 1 et P ne peut donc
pas posséder d’inverse. Avec le même genre de raisonnement, il est clair que
hP i = K[X] si et seulement si P 6= 0 est constant.
Le résultat suivant découle principalement du fait que K[X] est muni de
la division euclidienne.
Théorème I.3.6. Soit K un champ. L’anneau K[X] des polynômes à
coefficients dans K est principal.
Corollaire I.3.7. Soient K un champ et P ∈ K[X]. L’idéal hP i est un Deuxième ingrédient pour
construire un champ fini.
idéal maximal si et seulement si P est irréductible.
Démonstration. Supposons que hP i est un idéal maximal avec P 6= 0.
Montrons d’abord que P ne peut pas être constant. Supposons qu’il le soit.
Dans ce cas, P = k ∈ K \ {0} et k −1 .k = 1 doit appartenir à hki. On en
conclut que hP i = K[X], ce qui est impossible. Supposons à présent que
P est un polynôme non constant qui se factorise en P = Q.R. Au vu du
théorème I.2.7, hP i ⊆ hQi. Si hP i = hQi, alors en utilisant la seconde partie
du théorème I.2.7 et la remarque I.3.5, on conclut que R est constant. Sinon,
hP i ( hQi et puisque hP i est maximal, on en conclut que hQi = K[X] et
donc que Q est constant.
Réciproquement, si P est un polynôme irréductible, montrons que l’an-
neau K[X]/hP i est un champ (d’où la conclusion, en utilisant le théorème
I.2.6). Il suffit de montrer que tout élément non nul π(Q) = Q + hP i du
quotient K[X]/hP i est inversible. Dire que π(Q) est non nul revient à dire
que Q n’appartient pas à hP i (cf. remarque I.2.5).
Considérons l’idéal hP, Qi et montrons qu’il est égal à K[X]. Puisque
K[X] est principal, il existe un polynôme T tel que hP, Qi = hT i. Ainsi,
9Si K est simplement un anneau, une telle propriété est fausse. En effet, considérons
les polynômes 2X 2 + 1 et 2X + 1 de Z4 [X]. On a (2X 2 + 1).(2X + 1) = 2X 2 + 2X + 1.
8 Chapitre I. Quelques compléments d’algèbre

il existe deux polynômes U et V tels que P = U.T et Q = V.T . Par


hypothèse, P étant irréductible, U ou T est constant. Si T est constant,
alors hP, Qi = hT i = K[X]. Si U est constant, c’est un élément non nul
de K qui est inversible dans K[X] et on en tire (cf. théorème I.2.7) que
hP i = hT i = hP, Qi ou encore que Q appartient à hP i ce qui est impossible.
Puisque hP, Qi = K[X], il contient 1 et il existe A, B ∈ K[X] tels que
1 = A.P + B.Q.
Cela entraı̂ne que dans l’anneau quotient K[X]/hP i,
(B + hP i).(Q + hP i) = 1 + hP i
et donc, π(Q) est inversible d’inverse B + hP i.


En utilisant ce dernier corollaire et le théorème I.2.6, on déduit le résultat


suivant qui nous permettra de construire des champs finis.
Proposition I.3.8. Soit K un champ. L’anneau quotient K[X]/hP i est un
champ si et seulement si P est un polynôme irréductible.
Exemple I.3.9. Considérons l’anneau des polynômes Z 3 [X] quotienté par
l’idéal hX 2 + 1i. Les classes de l’anneau quotient (il s’agit même d’un champ
car X 2 + 1 est irréductible10 sur Z3 [X]) sont de la forme11 P + hX 2 + 1i
avec deg P < 2. Par commodité, nous noterons P + hX 2 + 1i simplement
P . La table ci-dessous est la table de multiplication dans Z 3 [X]/hX 2 + 1i
(dans laquelle on n’a pas considéré l’élément zéro). Pour l’obtenir, il suffit
de travailler “modulo X 2 + 1”. Ainsi, la multiplication des deux classes
P + hX 2 + 1i et Q + hX 2 + 1i est la classe R + hX 2 + 1i où R est le reste de
la division dans Z3 [X] de P.Q par X 2 + 1.

· 1 2 X X +1 X +2 2X 2X + 1 2X + 2
1 1 2 X X +1 X +2 2X 2X + 1 2X + 2
2 2 1 2X 2X + 2 2X + 1 X X +2 X +1
X X 2X 2 X + 2 2X + 2 1 X + 1 2X + 1
X +1 X +1 2X + 2 X + 2 2X 1 2X + 1 2 X
X +2 X +2 2X + 1 2X + 2 1 X X +1 2X 1
2X 2X X 1 2X + 1 X + 1 2 2X + 2 X + 2
2X + 1 2X + 1 X +2 X +1 2 2X 2X + 2 X 1
2X + 2 2X + 2 X + 1 2X + 1 X 2 X +2 1 2X
Ainsi, si p est un nombre premier et si P un polynôme irréductible de
degré f de Zp [X], alors
Zp [X]/hP i

10Pour le vérifier, un peu de patience. Attendez le résultat I.5.7.


11En effet, d’une manière générale, pour tous P, Q ∈ K[X], P +hX 2 +1i = Q+hX 2 +1i
si et seulement si P et Q ont même reste après division par X 2 + 1.
I.3. Polynômes et division euclidienne 9

est un champ à pf éléments. Un moyen commode d’en coder les éléments


est de considérer les f -uples d’éléments de Z p correspondant aux f -uples des
coefficients des polynômes sur Zp de degré strictement inférieur à f . Ainsi,
sur notre exemple, ces couples sont (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0),
(2, 1) et (2, 2). Le table de multiplication reprise ci-dessus est codée comme
suit.

· (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2)


(0, 1) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2)
(0, 2) (0, 2) (0, 1) (2, 0) (2, 2) (2, 1) (1, 0) (1, 2) (1, 1)
(1, 0) (1, 0) (2, 0) (0, 2) (1, 2) (2, 2) (0, 1) (1, 1) (2, 1)
(1, 1) (1, 1) (2, 2) (1, 2) (2, 0) (0, 1) (2, 1) (0, 2) (1, 0)
(1, 2) (1, 2) (2, 1) (2, 2) (0, 1) (1, 0) (1, 1) (2, 0) (0, 1)
(2, 0) (2, 0) (1, 0) (0, 1) (2, 1) (1, 1) (0, 2) (2, 2) (1, 2)
(2, 1) (2, 1) (1, 2) (1, 1) (0, 2) (2, 0) (2, 2) (1, 0) (0, 1)
(2, 2) (2, 2) (1, 1) (2, 1) (1, 0) (0, 2) (1, 2) (0, 1) (2, 0)
Pour obtenir un codage encore plus commode, il suffit de considérer les
f -uples d’éléments de Zp comme des écritures de nombres en base p. Ainsi,
à (xf −1 , . . . , x0 ) ∈ (Zp )f correspond l’entier
f
X −1
xi pi .
i=0
La table de multiplication précédente peut donc encore se réécrire
· 1 2 3 4 5 6 7 8
1 1 2 3 4 5 6 7 8
2 2 1 6 8 7 3 5 4
3 3 6 2 5 8 1 4 7
4 4 8 5 6 1 7 2 3
5 5 7 8 1 3 4 6 1
6 6 3 1 7 4 2 8 5
7 7 5 4 2 6 8 3 1
8 8 4 7 3 2 5 1 6

Proposition I.3.10. Tout polynôme de K[X] se décompose de manière


unique comme produit de polynômes irréductibles (à des facteurs constants
et à l’ordre des facteurs près).
En effet, deg P.Q = deg P + deg Q assure l’existence de la décomposition
(si un polynôme n’est pas irréductible, il se factorise en un produit de deux
polynômes de degré inférieur et cette procédure ne peut être répétée qu’un
nombre fini de fois). L’unicité de la décomposition découle du lemme suivant.
Lemme I.3.11. Si P ∈ K[X] est irréductible et si P divise F.G, alors P
divise F ou G.
10 Chapitre I. Quelques compléments d’algèbre

Démonstration. Supposons que P ne divise pas F . Cela signifie que F


n’appartient pas à hP i. Dès lors, hP i est inclus strictement dans hP, F i. Or,
par le corollaire I.3.7, hP i est maximal. Donc, hP, F i = K[X] contient 1 et il
existe des polynômes S et T tels que 1 = S.P +T.F . De là, G = SP G+T F G
et puisque P divise chacun des deux termes de la somme, on en conclut que
P divise G.


Remarque I.3.12. D’une certaine façon, on peut dire que les polynômes
irréductibles jouent, dans l’ensemble des polynômes à coefficients dans K, le
même rôle que les nombres premiers, dans l’ensemble des entiers.

4. Eléments algébriques
Dans la section précédente, nous avons obtenu un moyen commode pour
générer des champs finis (pour l’instant, nous sommes en mesure de constru-
ire un champ à pf éléments pour tout nombre premier p ≥ 2, à condition qu’il
existe au moins un polynôme irréductible de degré f sur Z p ). Dans cette sec-
tion, nous obtenons une construction alternative en considérant l’extension
d’un champ K par un élément algébrique (cf. proposition I.4.11).
Soient K et L deux champs tels que L est une extension de K. Cette
supposition sera employée tout au long de la section.
Définition I.4.1. Un élément α ∈ L est algébrique sur K s’il existe un
polynôme P à coefficients dans K tel que P (α) = 0. L’ensemble P α des
polynômes à coefficients dans K et annulés par α est un idéal de K[X].
Puisque K[X] est principal, il existe un polynôme M α que nous pouvons
supposer être monique12 tel que
Pα = {P ∈ K[X] | P (α) = 0} = hMα i.
On appelle Mα le polynôme minimum de α. Si α0 ∈ L est tel que Mα (α0 ) = 0,
alors α0 est un conjugué de α sur K.
Lemme I.4.2. Soit α ∈ L un élément algébrique sur K ayant M α comme
polynôme minimum.
i) Le polynôme Mα est irréductible sur K.
ii) Pour tout polynôme P ∈ K[X], P (α) = 0 si et seulement si M α
divise P .
iii) Mα est l’unique polynôme monique de degré minimum dans K[X]
annulé par α.
iv) Si P est un polynôme monique irréductible sur K annulé par α,
alors P = Mα .
12S’il ne l’était pas, il suffit de le multiplier par l’inverse du coefficient du terme
dominant.
I.4. Eléments algébriques 11

Démonstration. i) Supposons que Mα puisse être factorisé en Mα = P.Q


avec 0 < deg P, deg Q < deg Mα . Alors, on a Mα (α) = P (α).Q(α) = 0 et on
en conclut que P ou Q doit appartenir à P α . Dès lors, Mα doit diviser P ou
Q ce qui est impossible au vu de leur degré respectif.
Le point ii) est immédiat. Passons au point iii). Tout polynôme monique
de K[X] annulé par α appartient à P α et est donc un multiple de Mα . Par
conséquent, il est soit égal à Mα soit de degré strictement supérieur.
Pour le point iv), cela découle directement du fait que P α = hMα i. Pour
le lecteur peu convaincu, voici une argumentation supplémentaire. Sup-
posons que P est un polynôme monique irréductible sur K annulé par α.
On effectue la division euclidienne de P par M α , P = Q.Mα + R avec
deg R < deg Mα . Soit R = 0 et dans ce cas, puisque P est irréductible,
on en conclut que Q = 1 et que P = Mα . Soit R 6= 0. Dans ce cas, on
en conclut que P (α) = R(α) = 0 ce qui, au vu de iii), est impossible car
deg R < deg Mα .


Remarque I.4.3. Si α0 est un conjugué de α, alors ils ont le même polynôme


minimum, i.e., Mα = Mα0 . En effet, avec les notations précédentes, puisque
Mα (α0 ) = 0, on a que Mα ∈ Pα0 = hMα0 i (i.e., Mα0 divise Mα ). La con-
clusion suit car Mα et Mα0 sont tous deux des polynômes moniques irré-
ductibles.

Exemple I.4.4. Le nombre d’or τ = (1 + 5)/2 ∈ R est algébrique sur
Q car il est racine du polynôme Mτ (X)√= X 2 − X − 1 qui est le polynôme
minimum de τ . Son conjugué est (1 − 5)/2.

√ Dans l’exemple I.1.15, nous avions considéré l’extension√de Q par l’élément


2 ∈ R algébrique sur√Q et nous avions vérifié que [Q( 2) : Q] était fini
(autrement dit que Q( 2) est une extension finie de Q). Ce résultat est en
fait tout à fait général.
Théorème I.4.5. L’élément α ∈ L est algébrique sur K si et seulement si
[K(α) : K] est fini. En particulier, le degré de l’extension [K(α) : K] est égal
au degré du polynôme minimum de α sur K.
La démonstration de ce résultat peut se faire à l’aide de quelques remar-
ques.
Remarque I.4.6. Si α ∈ L est algébrique sur K et si son polynôme mi-
nimum est de degré d, alors tout élément de l’extension de champ K(α)
s’exprime comme combinaison linéaire à coefficients dans K des éléments
1, α, . . . , αd−1 . (Autrement dit, comme un polynôme en α à coefficients
dans K et de degré < d.)
12 Chapitre I. Quelques compléments d’algèbre

En effet, un élément13
n
X
P (α) = ki αi , ki ∈ K
i=0
appartient à K(α) (on l’obtient en appliquant un nombre fini de sommes,
de produits et de différences à des éléments de K ∪ {α}). En effectuant la
division euclidienne de P (X) par Mα , il vient
P (X) = Q(X).Mα (X) + R(X) avec deg R < d.
La conclusion suit en considérant l’évaluation de cette expression en α
(Mα (α) = 0).
Cependant, un élément arbitraire de K(α) est de la forme P (α).(Q(α)) −1
où nous pouvons supposer, par le point précédent, que Q(X) est de degré
< d. Puisque deg Q < deg Mα , on en tire que
hMα i ( hQ, Mα i
et Mα étant irréductible, hMα i est maximal et hQ, Mα i = K[X] 3 1. De là,
il existe des polynômes S, T tels que 1 = S.M α + T.Q et la conclusion suit
en évaluant cette dernière expression en α. L’inverse de Q(α) est donc un
polynôme en α.
Pour conclure, P (α).(Q(α))−1 se ramène donc à un produit de deux
polynômes en α, puis par la première partie, à un polynôme en α de degré
< d. Ainsi, 1, α, α2 , . . . , αd−1 forment une partie génératrice de K(α). Ces
éléments sont aussi linéairement indépendants sur K car sinon, on disposerait
d’une relation linéaire à coefficients dans K les liant et donc d’un polynôme
de degré < d de K[X] annulé par α, ce qui est impossible.
La réciproque est immédiate.
Remarque I.4.7. Si [K(α) : K] = n est fini, alors les n + 1 éléments
1, α, α2 , . . . , αn
sont linéairement dépendants sur K. On en tire une relation linéaire à coef-
ficients dans K liant ces éléments, i.e., α est algébrique sur K.
Exemple I.4.8. Un utilisant les constructions développées dans la remar-
que I.4.6, on peut montrer que
2τ 2 + τ − 3 10 7
3 2
= τ−
τ +τ −τ +4 22 22
où τ est le nombre d’or. Ceci illustre le fait que tout élément de Q(τ ) se
réexprime sous la forme a τ + b avec a, b ∈ Q.
Proposition I.4.9. L’ensemble des éléments de L algébriques sur K est un
sous-champ de L.
13L’ensemble des valeurs des polynômes de K[X] évalués en α se note souvent K[α].
I.4. Eléments algébriques 13

Démonstration. Montrons que si α et β sont algébriques sur K, alors


α + β, α.β, −α et α−1 le sont aussi. On va montrer que tous ces éléments
appartiennent à une extension convenable de K, contenue dans L et de
dimension finie sur K. Cela suffit au vu du théorème I.4.5.
L’extension M = K(α) est une extension finie de K et contient α.
L’élément β est algébrique sur K. Il est donc aussi algébrique sur M . En
appliquant le même raisonnement, l’extension M 0 = M (β) est contenue dans
L et de dimension finie sur M . En se rappelant le résultat bien connu de “la
base télescopique”, on a
[M 0 : K] = [M 0 : M ][M : K]
et donc M 0 est une extension de K de dimension finie sur K. Puisque M 0
est un champ qui contient α et β, il contient α + β, α.β, −α et α −1 .


Définition I.4.10. On dit que L est une extension algébrique de K si tout


élément de L est algébrique sur K.
La proposition suivante est à mettre en parallèle avec la proposition
I.3.8. Elle permet, comme nous le verrons sur un exemple, de construire des
champs finis “par extension” et non par quotient.
Proposition I.4.11. Soient L une extension de K et α ∈ L un élément
algébrique sur K. L’anneau quotient K[X]/hM α i est isomorphe à l’extension
de champ K(α).
Démonstration. Il s’agit d’une simple application du premier théorème
d’isomorphie. Soit l’application ∼
A/ ker Φ = Im Φ

Φ : K[X] → L : P 7→ P (α)
qui à un polynôme associe son évaluation en α. Il est clair qu’il s’agit d’un ho-
momorphisme14 d’anneaux. Le noyau de cette application est ker Φ = P α =
hMα i. Par le corollaire I.3.7, hMα i est maximal et donc, par le théorème
I.2.6, K[X]/ ker Φ est un champ. Par le premier théorème d’isomorphie, ce
champ est isomorphe à l’image de Φ. Il nous suffit donc pour conclure de
montrer que
Im Φ = {P (α) | P ∈ K[X]} = K(α).
Il est clair que α appartient à Im Φ (il suffit de prendre P (X) = X) et que
K est inclus dans Im Φ (il suffit de prendre P (X) = k, pour tout k ∈ K).
Par conséquent, K(α) est inclus dans Im Φ. Montrons l’autre inclusion. Soit
P (α) un élément quelconque de Im Φ, P ∈ K[X]. Il est évident que P (α)
est de la forme
P (α) = k0 + k1 α + · · · + kd αd , k0 , . . . , k d ∈ K
et appartient donc à K(α).
14(P + Q)(α) = P (α) + Q(α), (P.Q)(α) = P (α).Q(α)
14 Chapitre I. Quelques compléments d’algèbre

1 2 α 1+α 2+α 2α 1 + 2α 2 + 2α
1 1 2 α 1+α 2+α 2α 1 + 2α 2 + 2α
2 2 1 2α 2 + 2α 1 + 2α α 2+α 1+α
α α 2α 1 + 2α 1 1 + α 2 + α 2 + 2α 2
1+α 1 + α 2 + 2α 1 2+α 2α 2 α 1 + 2α
2+α 2 + α 1 + 2α 1 + α 2α 2 2 + 2α 1 α
2α 2α α 2+α 2 2 + 2α 1 + 2α 1 + α 1
1 + 2α 1 + 2α 2 + α 2 + 2α α 1 1+α 2 2α
2 + 2α 2 + 2α 1 + α 2 1 + 2α α 1 2α 2+α
Table I.1. Table de multiplication de Z 3 (α).

Exemple I.4.12. Soit le champ Z3 et le polynôme P (X) = X 2 + X + 2


de Z3 [X]. Ce polynôme est irréductible 15 sur Z3 [X]. Dans l’extension de
champ L = Z3 [X]/hP i, l’élément α = X + hP i annule P . En effet,
P (α) = X 2 + X + 2 + hP i = 0 + hP i
est bien le zéro de L. Autrement dit, α ∈ L est algébrique sur Z 3 et possède
P comme polynôme minimum. Ainsi, Z 3 (α) est un champ à 9 éléments
0, 1, 2, α, α + 1, α + 2, 2α, 2α + 1, 2α + 2.
On y effectue les sommes et les produits comme dans Z 3 [α] (i.e., avec des
polynômes en α) en se rappelant que α 2 + α + 2 = 0. La table de mul-
tiplication est reprise dans le tableau I.1. Par exemple, dans Z 3 [α], on a
(1 + 2α)(2 + 2α) = α2 + 2 et en se rappelant que α2 + α + 2 = 0, on trouve
α2 + 2 = 2α.
Observons que β = 2X + 2 + hP i = 2α + 2 est aussi tel que P (β) = 0.
En effet,
P (β) = (2X + 2)2 + 2X + 2 + 2 + hP i = X 2 + X + 2 + hP i = 0 + hP i.
Ainsi, on aurait également pu construire l’extension Z 3 (β), isomorphe à
Z3 (α) par l’isomorphisme envoyant α sur β et laissant les éléments de Z 3
inchangés.
Remarque I.4.13. L’exemple précédent s’adapte aisément à un champ
arbitraire K et à un polynôme irréductible P de K[X] de degré d.
Si K est fini et contient t éléments et si α “annule” P , alors K(α) est un
champ à td éléments.
De même, si K est un champ et si α et β annulent un même polynôme
irréductible P ∈ K[X], alors les extensions K(α) et K(β) sont isomorphes
par l’isomorphisme envoyant α sur β et laissant les éléments de K inchangés.
La justification est immédiate.
15Encore une fois, nous anticipons. Attendez le résultat I.5.7.
I.4. Eléments algébriques 15

4.1. Transcendance. La proposition I.4.11 répond à l’objectif que nous


nous étions fixé en début de section. Néanmoins, on peut s’interroger sur la
structure de K(α) si α n’est pas algébrique.
Définition I.4.14. Soit K un champ (ou même plus simplement un anneau
intègre). Le champ des fractions rationnelles à coefficients dans K (ou champ
des quotients) noté16 K(x) est défini comme le quotient de l’ensemble des
couples
{(P, Q) | P, Q ∈ K[x], Q 6= 0}
par la relation d’équivalence (P, Q) ∼ (P 0 , Q0 ) si et seulement si P.Q0 = P 0 .Q.
Il s’agit de la même construction que pour Q. On y définit naturellement
la somme et le produit de deux éléments du quotient. Par convention, on
P
notera un représentant de la classe d’équivalence de (P, Q) par Q .
Définition I.4.15. Si α ∈ L n’est pas algébrique sur K, alors on dit qu’il
est transcendant sur K.
Lemme I.4.16. Soient K et L deux champs. Si Φ : K → L est un homo-
morphisme, alors il est injectif (i.e., c’est un plongement).
Démonstration. Puisque Φ est un homomorphisme, son noyau ker Φ est
un idéal de K. Or K est un champ (cf. remarque I.2.3), donc ker Φ est égal à
{0} ou K. La seconde possibilité ne peut être envisagée car Φ(1 K ) = 1L 6= 0L
et donc 1K ne peut appartenir à ker Φ. Enfin, rappelons que si le noyau d’une
application est réduit à {0}, alors cette application est injective.


Proposition I.4.17. Soient L une extension de K et α ∈ L un élément


transcendant sur K. Le champ K(α) est isomorphe à K(x).
La preuve se base sur un schéma identique à celle de la proposition I.4.11.
Démonstration. Soit l’application
P (α)
Φ : K(x) → L : (P, Q) 7→ P (α).Q(α)−1 =: .
Q(α)
Il est clair qu’il s’agit d’un homomorphisme. Au vu du lemme précédent, Φ
est injectif mais est aussi trivialement surjectif sur son image. Autrement dit,
K(x) est isomorphe à Im Φ et il nous reste à vérifier que Im Φ = K(α). Il est
clair que Im Φ ⊇ K(α). Montrons l’autre inclusion. Un élément quelconque
de Im Φ est de la forme
(k0 + k1 α + · · · + kd αd ).(`0 + `1 α + · · · + `e αe )−1 , k0 , . . . , kd , `0 , . . . , `e ∈ K
et appartient bien évidemment à K(α).


16Attention à ne pas confondre les notations K(α), extension de champ et K(x),


champ des fractions ! Ces notations sont cependant tout à fait compatibles, puisque les
éléments de K(α) ne sont rien d’autres que les fractions rationnelles de K(x) évaluées en
α. On avait déjà fait usage de cette convention pour K[α], l’ensemble des évaluations des
polynômes de K[X] évalués en α.
16 Chapitre I. Quelques compléments d’algèbre

5. Racines d’un polynôme


Dans cette section, K est encore un champ et P est un polynôme de
K[X] de degré d > 0.
Définition I.5.1. L’élément α ∈ K est une racine de P si P (α) = 0.

Proposition I.5.2. L’élément α ∈ K est une racine de P si et seulement


si X − α divise P .
Démonstration. La condition est trivialement suffisante. Montrons qu’elle
est nécessaire. Effectuons la division euclidienne de P par X − α, on trouve
P (X) = Q(X).(X − α) + R avec deg R < 1. Puisque P (α) = 0, cela entraı̂ne
que R doit être nul.


Remarque I.5.3. Soit α ∈ K. L’évaluation de P en α est égale au reste


de la division de P par X − α. En effet, P (X) = Q(X).(X − α) + R avec
deg R < 1.
Définition I.5.4. Si (X − α)m divise P et (X − α)m+1 ne divise pas P ,
alors on dit que α est une racine de multiplicité m.
Les deux remarques suivantes attirent l’attention du lecteur sur les dif-
férences qu’il peut exister entre K[X] (avec K un champ quelconque) et les
automatismes que l’on connaı̂t sur C[z].
Remarque I.5.5. Puisque la factorisation d’un polynôme est “essentielle-
ment” unique17, la somme des racines de P comptées avec leur multiplicité ne
peut excéder d. Par exemple, le polynôme X 3 −X 2 +X −1 = (X 2 +1)(X −1)
possède une seule racine dans R.
Remarque I.5.6. Si P ∈ K[X] ne possède pas de racine dans K, cela
n’entraı̂ne pas qu’il soit nécessairement irréductible. En effet, le polynôme
(X 2 + 1)(X 2 + 2) = X 4 + 3X 2 + 2 de R[X] ne possède aucune racine réelle
mais il n’est pas irréductible.
Proposition I.5.7. Soit P ∈ K[X] un polynôme de degré deux ou trois. Si
P n’a pas de racine dans K, alors P est irréductible sur K.
Démonstration. En effet, sinon, il serait réductible et dans la décompo-
sition de P en un produit de deux facteurs, un des facteurs au moins serait
de degré un.


17En supposant les différents facteurs moniques.


I.5. Racines d’un polynôme 17

5.1. Dérivation formelle. Sur un champ arbitraire (et en particulier


sur un champ fini), il n’est pas possible de dériver une fonction comme en
analyse réelle par passage à la limite. Néanmoins, on peut définir la dérivée
“formelle” d’un polynôme en copiant la formule usuelle des polynômes réels.
Nous allons voir que cette opération conserve certaines propriétés de la
dérivée usuelle.
Si k est un élément d’un champ K et n un entier, alors la notation n k
désigne en fait l’élément de K, k| + ·{z
· · + k}.

Définition I.5.8. Soit P = k0 + k1 X + k2 X 2 · · · + kd X d un polynôme de


K[X]. On définit la dérivée (formelle) du polynôme P par
DX P = k1 + 2 k2 X + · · · + d kd X d−1 .
Ainsi défini, il s’agit simplement d’une application de K[X] dans lui-même
jouissant des propriétés usuelles
I DX (P + Q) = DX P + DX Q,
I DX (P.Q) = DX P.Q + [Link] Q,
I DX (k.P ) = kDX P , si k ∈ K.
Proposition I.5.9. L’élément α ∈ K est une racine de P ∈ K[X] de
multiplicité au moins deux si et seulement si P (α) = (D X P )(α) = 0.
Démonstration. Si α est une racine de multiplicité au moins deux de
P , alors P = (X − α)2 Q et DX P = (X − α)(2Q + (X − α)DX Q) et donc,
P (α) = (DX P )(α) = 0.
Passons à la réciproque. Si P (α) = 0, alors P = (X − α)Q et donc
DX P = (X − α)DX Q + Q. Or (DX P )(α) = 0 et l’on en tire Q(α) = 0. Par
conséquent, Q = (X − α)R et P = (X − α)2 R ce qui suffit.


Corollaire I.5.10. Soient L un extension du champ K et α ∈ L, un élément


algébrique sur K. L’élément α est racine simple de son polynôme minimum
Mα .
Démonstration. Si (DX P )(α) = 0, alors le polynôme DX P ∈ K[X] serait
de degré strictement inférieur à α et annulé par α. Ceci est impossible.


On peut introduire naturellement la dérivée (formelle) d’ordre k ≥ 2


k−1
comme DkX P = DX (DX P ).
Remarque I.5.11. Dans C[z] on dispose d’un résultat plus fort que celui
énoncé ci-dessus. En effet, dans ce cas, il est bien connu que α est une
racine de multiplicité m d’un polynôme P ∈ C[z] non nul si et seulement si
m−1
P (α) = (DX P )(α) = · · · = (DX P )(α) = 0 et (Dm
X P )(α) 6= 0. Cependant,
un tel résultat n’est en général pas vrai sur un champ fini ! Ainsi, le polynôme
de Z3 [X], X 4 − X = (X 3 − 1)X = (X − 1)3 X possède 1 comme racine triple
18 Chapitre I. Quelques compléments d’algèbre

mais pourtant toutes les dérivées de ce polynôme évaluées en 1 sont nulles !


Nous rappelerons plus (Cela dépend bien évidemment de la caractéristique du champ K. . . .)
loin la définition de la
caractéristique.
Ainsi, pour un champ K de caractéristique nulle, la formule de Taylor
bien connue reste valable dans K[X].
Proposition I.5.12 (Formule de Taylor). Soient K un champ de carac-
téristique nulle, P ∈ K[X] un polynôme de degré d et α un élément de K.
On a
d
X (DiX P )(α)
P (X) = (X − α)i .
i!
i=0

Corollaire I.5.13. Soit K un champ de caractéristique nulle. Un élément


α ∈ K est racine de multiplicité m d’un polynôme P ∈ K[X] non nul si et
seulement si
m−1
P (α) = (DX P )(α) = · · · = (DX P )(α) et (Dm
X P )(α) 6= 0.

Démonstration. Cela résulte directement de la formule de Taylor.




5.2. Corps de rupture d’un polynôme.


Définition I.5.14. Etant donné le polynôme P ∈ K[X] de degré d, il existe
une plus petite extension de champ L de K dans laquelle P se factorise en
un produit de polynômes de degré un. De manière équivalente, cela signifie
que P a exactement d racines dans L comptées avec leur multiplicité. Cette
extension est unique à un isomorphisme près (cf. remarque I.5.21) et on
l’appelle18 le corps19 de rupture de P sur K.
Remarque I.5.15. Soit P ∈ K[X] de degré d. L’extension L est le corps
de rupture de P sur K s’il existe α1 , . . . , αn ∈ L tels que
P (X) = k (X − α1 ) · · · (X − αd )
où k ∈ K est le coefficient dominant de P et
L = K(α1 , . . . , αd ).
Exemple I.5.16. Comme nous le vérifierons très vite, le corps de rupture

de X 2 − 2 ∈ Q[X] sur Q est Q( 2).
Nous nous contenterons de démontrer les deux résultats suivants prou-
vant l’existence d’un champ dans lequel P se factorise. Le premier de ces
résultats correspond au lemme de (Gauss-) d’Alembert vu dans le cas des
polynômes à coefficients complexes. Sa preuve utilise le même argument que
celui développé dans l’exemple I.4.12.
18Certains auteurs parlent parfois de corps de rupture d’un polynôme pour désigner
une extension contenant une racine de P et dès lors, pour ces mêmes auteurs, ce que nous
avons décidé d’appeler “corps de rupture” est alors appelé corps de décomposition.
19
Il s’agit même d’un champ.
I.5. Racines d’un polynôme 19

Théorème I.5.17. Soit P ∈ K[X] un polynôme à coefficients dans le


champ K. Il existe une extension L de K telle que P admette au moins
une racine dans L.
Démonstration. Il suffit de démontrer le résultat pour un facteur irré-
ductible Q de P . Ainsi, l’anneau quotient K[X]/hQi, noté L, est un champ
(cf. proposition I.3.8). Clairement, K est isomorphe à un sous-champ de L
(il suffit de considérer le plongement Φ : K → L : k 7→ k + hQi). Considérons
à présent l’homomorphisme canonique
π : K[X] → L = K[X]/hQi : R 7→ R + hQi
et notons α = π(X) ∈ L. Ainsi20, puisque que π est un homomorphisme
d’anneaux
Q(α) = Q(π(X)) = π(Q(X)) = 0
car le zéro de K[X]/hQi est 0 + hQi = π(Q).


Exemple I.5.18. Nous considérons le polynôme irréductible Q = X 2 + 1


de R[X] et montrons que l’anneau quotient
R[X]/hX 2 + 1i = {a + bX + hX 2 + 1i | a, b ∈ R}
est un champ isomorphe à C. En effet, si on dénote une classe de l’anneau
quotient simplement par a + bX, alors le produit de deux classes est donné
par
(a + bX).(a0 + b0 X) = aa0 + (ab0 + a0 b)X + bb0 X 2 = aa0 − bb0 + (ab0 + a0 b)X
car bb0 X 2 = bb0 (X 2 + 1) − bb0 . Dès lors, l’application
Φ : R[X]/hX 2 + 1i → C : a + bX + hX 2 + 1i 7→ a + i b
est bien un isomorphisme. On retrouve la multiplication usuelle des nombres
complexes,
(a + i b).(a0 + i b0 ) = aa0 − bb0 + i (ab0 + a0 b).
Exemple I.5.19. Poursuivons l’exemple I.5.16 et considérons le quotient
Q[X]/hX 2 − 2i.
Une fois encore, nous noterons les éléments du quotient a + bX, a, b ∈ Q. Il
vient,
(a + bX).(a0 + b0 X) = aa0 + (ab0 + a0 b)X + bb0 X 2 = aa0 + 2bb0 + (ab0 + a0 b)X
car
bb0 X 2 = bb0 (X 2 − 2) + 2bb0
20Grâce au plongement Φ, les éléments de K peuvent être vus comme des éléments
de L. Ainsi, on peut considérer le polynôme Q non pas comme un polynôme à coefficients
dans K, mais comme un polynôme de L[X]. De cette manière, il est naturel d’évaluer Q
en un élément de L.
20 Chapitre I. Quelques compléments d’algèbre

√ √
et Φ : Q[X]/hX 2 − 2i → Q( 2) : a + bX + hX 2 − 2i 7→ a + 2 b est un
isomorphisme. En effet, on retrouve la règle du produit
√ √ √
(a + b 2).(a0 + b0 2) = aa0 + 2bb0 + 2(ab0 + a0 b).
Voici à présent l’analogue du théorème fondamental de l’algèbre pour les
polynômes de C[z].
Corollaire I.5.20. Soit P ∈ K[X] un polynôme non constant. Il existe
une extension L de K telle que P se factorise en un produit de polynômes
de degré un de L[X].
Démonstration. On procède par récurrence sur le degré du polynôme en
appliquant le théorème précédent. On peut observer, au vu de la proposition
I.4.11, que pour construire cette extension, on peut adjoindre progressive-
ment à K des racines de P . En particulier, l’extension de K ainsi obtenue
est de degré fini.


Remarque I.5.21. On peut montrer que si l’on dispose de deux corps


de rupture sur K d’un polynôme P ∈ K[X], alors ces deux champs sont
isomorphes par un isomorphisme laissant les éléments de K invariants et
permutant les racines de P . A isomorphisme près, il n’existe donc qu’un
corps de rupture de P sur K.
Remarque I.5.22. Un champ K est algébriquement clos si tout polynôme
non constant de K[X] se factorise complètement en un produit de polynômes
de degré un. Cela revient à dire que chaque polynôme non constant de K[X]
possède une racine dans K. La plus petite extension de champ de K qui est
algébriquement close est la clôture algébrique de K, dénotée K. Par exemple,
C est la clôture algébrique de R et C est algébriquement clos.

6. Champs finis
Rappelons tout d’abord que le théorème de Wedderburn stipule que tout
corps fini est commutatif. Autrement dit, tout corps fini est un champ. Dès
lors, dans cette section, nous nous intéressons uniquement aux champs finis.
Définition I.6.1. Si (A, +, ·) est un anneau, on dénote par (A ∗ , ·) le groupe
multiplicatif des éléments inversibles dans A. En particulier, si on désigne
par Fq un champ contenant q éléments21, alors F∗q est un groupe commutatif
(pour la loi de multiplication) formé des q − 1 éléments non nuls de F q .
21On rencontre aussi la notation équivalente GF (q) où GF sont les initiales de “Galois
Field”.
I.6. Champs finis 21

Exemple I.6.2. On a Z∗6 = ({1, 5}, ·) et Z∗5 = ({1, 2, 3, 4}, ·). En effet, les
tables de multiplication respectives sont données par
1 2 3 4 5
1 2 3 4
1 1 2 3 4 5
1 1 2 3 4
2 2 4 0 2 4
2 2 4 1 3
3 3 0 3 0 3
3 3 1 4 2
4 4 2 0 4 2
4 4 3 2 1
5 5 4 3 2 1
6.1. Caractéristique d’un champ. Commençons par rappeler ce
qu’est la caractéristique d’un champ. Soit K un champ (ou même sim-
plement un anneau intègre). Considérons l’homomorphisme caractéristique
Φ : Z → K qui est un homomorphisme d’anneaux défini par
Φ(m) = 1K + · · · + 1K =: m.1 , si m ≥ 0
| {z }
m fois
et Φ(m) = −Φ(−m), si m < 0 (en particulier, Φ est complètement carac-
térisé par le fait qu’il envoie 1 ∈ Z sur l’unité de K, 1 K que l’on notera
simplement 1).
Il est immédiat22 que le noyau de Φ, ker Φ, est un idéal de Z. Puisque
Z est principal, il existe n ≥ 0 tel que ker Φ = hni = nZ. Cet entier n est
appelé la caractéristique de K. En vertu du premier théorème d’isomorphie,
Z/ ker Φ est isomorphe à l’image de Φ dans K.
Si n = 0, alors ker Φ = {0} et Z/ ker Φ = Z s’identifie à un sous-anneau
de K. Puisque le plus petit champ contenant Z est Q, on en conclut que K
contient un sous-champ isomorphe à Q.
Si n = 1, alors ker Φ = Z et en particulier, Φ(1) = 0. De plus, puisque
Φ est un homomorphisme, on a aussi Φ(1) = 1 et on aurait dans K, 0 = 1.
Ceci est impossible dans un champ.
Si n > 1, puisque K est intègre, l’image de Φ dans K est un sous-anneau
intègre. Pour conclure, rappelons que Z/nZ est intègre (et même un champ)
si et seulement si n > 1 est premier. Dans ce cas, la caractéristique n de K
est un nombre premier et K contient donc un sous-champ isomorphe à Z n .
(Remarquons en particulier que cela signifie que K est une extension de Z n .)

Remarque I.6.3. Nous venons donc de démontrer que tout champ fini K
contient un champ isomorphe à Zp avec p premier, appelé le sous-champ
premier de K. En effet, puisque K est fini, il ne peut contenir une copie
de Q. De plus, nous montrerons aisément l’unicité du sous-champ premier
(cf. corollaire I.6.6), c’est-à-dire que Z p est l’unique champ de la forme Zm
inclus dans K.
Comme nous le verrons rapidement, deux champs de même caractéris-
tique partagent de nombreuses propriétés. Dans un champ de caractéristique
p > 0, on dispose du résultat suivant.
22Le noyau de tout homomorphisme est un idéal.
22 Chapitre I. Quelques compléments d’algèbre

Théorème I.6.4 (Binôme de Newton “stupide”). Si K est un champ de


caractéristique p (p premier), alors pour tout n ≥ 1, on a
n n n
(a + b)p = ap + bp .
Démonstration. On procède par récurrence sur n. Si n = 1, alors la
formule du binôme de Newton23 donne
p
X
(a + b)p = Ckp ak bp−k .
k=0
On a
p!
Ckp =
k! (p − k)!
et pour 0 < k < p, le nombre premier p apparaı̂t au numérateur mais pas au
dénominateur. Ainsi, p! = k! (p − k)! C kp , p ne divisant pas k! (p − k)!. On en
conclut que Ckp est un multiple de la caractéristique p et donc que C kp = 0
dans K.
Supposons le résultat satisfait pour n − 1 et vérifions-le pour n. Il vient
n n−1 n−1 n−1 n n
(a + b)p = ((a + b)p )p = (ap + bp )p = a p + b p .
Pour l’avant-dernière égalité, on a utilisé l’hypothèse de récurrence et pour
la dernière, le cas n = 1.


Proposition I.6.5. Soit K un champ fini de caractéristique p > 1. Il existe


n > 0 tel que K contienne exactement p n éléments.
Démonstration. Le champ K contient un sous-champ isomorphe à Z p .
On peut donc considérer K comme un Z p -vectoriel et si [K : Zp ] = n, alors
#K = pn (comme nous l’avions déjà remarqué au point I.1.14.


Corollaire I.6.6. Soit K un champ fini, le seul champ de la forme Z q ,


q ≥ 2, inclus dans K est son sous-champ premier.
Démonstration. Soit K un champ fini de caractéristique p, i.e., ayant
Zp comme sous-champ premier. Il contient p n éléments. Si Zq est un sous-
champ de K, on en tire que q doit diviser p n (l’ordre d’un sous-groupe divise
l’ordre du groupe). De plus, puisque Z q est un champ, q est premier. Par
conséquent, q = p.


23Que l’on peut appliquer ici car un champ est commutatif.


I.6. Champs finis 23

6.2. La fonction indicatrice d’Euler.


Définition I.6.7. La fonction indicatrice d’Euler 24 est définie par
ϕ(n) = #{x | 1 ≤ x ≤ n, pcgd(x, n) = 1}.
Elle compte donc le nombre de nombres < n et premier avec n. Ainsi, les
premières valeurs de cette fonction sont
n 1 2 3 4 5 6 7 8 9 10
ϕ(n) 1 1 2 2 4 2 6 4 6 4
et un graphique de la fonction est donné à la figure I.1.

140

120

100

80

60

40

20

20 40 60 80 100 120 140

Figure I.1. Les premières valeurs de ϕ(n).

Remarque I.6.8. Dans l’anneau Zn , le nombre d’éléments inversibles est


exactement ϕ(n). Autrement dit, le groupe multiplicatif Z ∗n est d’ordre ϕ(n).
Lemme I.6.9. La fonction ϕ est multiplicative, i.e., si m et n sont des
entiers premiers entre eux, alors
ϕ(mn) = ϕ(m)ϕ(n).

24Dans Mathematica, on utilise la fonction EulerPhi[n]. On rencontre parfois la


nomenclature fonction totient introduite par J.J. Sylvester.
24 Chapitre I. Quelques compléments d’algèbre

Démonstration. Nous savons que, puisque m et n sont premiers entre eux,


l’anneau Zmn est isomorphe à Zm × Zn . On en déduit un isomorphisme25
de groupes entre Z∗mn et Z∗m × Z∗n .


Corollaire I.6.10. Si le nombre n ≥ 2 se factorise en un produit de nom-


bres premiers sous la forme n = pk11 · · · pkr r , alors
r
Y k −1
ϕ(n) = (pj − 1) pj j .
j=1

Démonstration. D’après le lemme précédent, il nous suffit de vérifier que


ϕ(pk )= (p − 1) pk−1 , p premier, k ≥ 1. Pour ce faire, remarquons que les
nombres entiers de l’intervalle [1, p k ] qui ne sont pas premiers avec pk sont
les multiples de p appartenant à cet intervalle, i.e.,
p, 2p, 3p, . . . , (pk−1 − 1) p, pk−1 p
qui sont en nombre pk−1 .


6.3. Deux applications classiques. Bien qu’immédiat, le résultat


suivant est à la base du cryptosystème à clé publique RSA.
Théorème I.6.11 (Petit théorème de Fermat 26). Si pgcd(a, m) = 1, alors
aϕ(m) ≡ 1 mod m.
Démonstration. Puisque pgcd(a, m) = 1, a appartient au groupe multi-
plicatif Z∗m des éléments inversibles de Zm . La conclusion découle du fait
que l’ordre d’un élément divise l’ordre du groupe.


Remarque I.6.12. Le lecteur pourrait s’interroger sur le fait qu’il n’est


nullement précisé dans l’énoncé précédent si a < m ou si a > m. Il suffit
de remarquer que si a > m, alors, en effectuant la division euclidienne
a = q.m + a0 avec a0 < m. Bien évidemment, si pgcd(a, m) = 1, alors il en
est de même pour pgcd(a0 , m) = 1 et a ≡ a0 mod m.
Remarque I.6.13. Dans la littérature, on trouve parfois une autre formu-
lation d’un résultat également appelé petit théorème de Fermat. Soient p
un nombre premier et n < p un entier. On a
np ≡ n mod p.
25Soit ϕ : Z
mn → Zm ×Zn l’isomorphisme en question. Ainsi, à tout élément z ∈ Zmn ,
il correspond un unique couple ϕ(z) = (z1 , z2 ) et réciproquement. Si z est inversible et a z 0
pour inverse, alors ϕ(z.z 0 ) = ϕ(z).ϕ(z 0 ) = ϕ(1) = (1, 1). En particulier, (z1 , z2 ).(z10 , z20 ) =
(1, 1) = (z1 z10 , z2 z20 ) ce qui montre que z1 (resp. z2 ) est un élément inversible de Zm (resp.
Zn ). La réciproque étant également vraie, on en tire l’isomorphisme annoncé.
26Ce résultat est, sous cette forme, attribué à Euler.
I.6. Champs finis 25

Il s’agit d’un cas particulier du théorème I.6.11. En effet, si n est premier,


ϕ(n) = n − 1.
Théorème I.6.14 (Wilson). Soit p un nombre premier. On a
(p − 1)! ≡ −1 mod p.
Démonstration. On suppose p ≥ 3. Classons les éléments du groupe
multiplicatif Z∗p selon qu’ils sont ou non égaux à leur inverse.
Un élément x qui est égal à son inverse est tel que x = x −1 et donc
x2 = 1. Cela signifie que si un élément x est égal à son inverse, alors x est
racine du polynôme X 2 − 1 ∈ Zp [X]. Or ce polynôme n’a que deux racines
−1 et 1. Ainsi, 1 et −1 sont les deux seuls éléments de Z ∗p égaux à leur
inverse.
Les p−3 autres éléments de Z∗p se groupent par paires d’éléments distincts
(xi , yi ), i = 1, . . . , (p − 3)/2, tels que xi yi = 1. Puisque (p − 1)! est le produit
de tous les éléments de Z∗p , on a
(p−3)/2
Y
(p − 1)! = 1.(−1). xi yi = −1.
i=1


Remarque I.6.15. On a même mieux. Etant donné m > 1, m est premier


si et seulement si (m−1)! ≡ −1 mod m. En effet, si m n’est pas premier,
il est de la forme m = a.b avec 1 < a < m. Par conséquent, a divise
(m − 1)!. De là, on en tire que a et, a fortiori m, ne divisent pas (m − 1)! + 1.
Ainsi, on pourrait tester qu’un nombre m est ou non premier en calculant
(m − 1)! mod m et en vérifiant si le résultat est ou non congru à −1. Bien
évidemment, un tel test est peu effectif.
6.4. Existence de générateurs pour F q . Nous revenons à présent
sur la structure des champs finis à q éléments. En fait, si un champ contient
q éléments, q est puissance d’un nombre premier p (qui est la caractéristique
du champ).
Remarque I.6.16. Nous ne faisons que de paraphraser la proposition I.6.5.
Soit Fq un champ à q éléments. Nous avons vu précédemment que la car-
actéristique de Fq est un nombre premier p et que Fq est une extension
du sous-champ premier Zp (cf. section 6.1). Ainsi, Fq peut être considéré
comme un Zp -vectoriel de dimension finie. Posons [F q : Zp ] = f (f étant
nécessairement fini). Cela signifie que, par l’intermédiaire d’une base 27, les
éléments de Fq sont en bijection avec les f -uples d’éléments de Z p . Ainsi,
on a
q = pf .
27Si y , . . . , y ∈ F forment une base de F considéré comme Z -vectoriel, alors tout
1 f q q p
élément x ∈ Fq se décompose de manière unique comme x = α1 y1 + · · · + αf yf . Ainsi, à
x correspond le f -uple (α1 , . . . , αf ) des composantes de x et inversement, à tout f -uple
correspond un élément de Fq .
26 Chapitre I. Quelques compléments d’algèbre

Définition I.6.17. Si Fq est un champ à q éléments, on appelle générateur


(multiplicatif) de Fq tout élément d’ordre q−1 pour le groupe multiplicatif F ∗q
(on parle aussi d’élément primitif 28). Autrement dit, si g est un générateur
de Fq ,
F∗q = {g n | n = 1, . . . , q − 1}.
Exemple I.6.18. Considérons un exemple simpliste : Z 5 . Dans ce cas, 2
est un générateur car
i 1 2 3 4
2i 2 4 3 1
Remarque I.6.19. Lorsqu’on dispose d’un générateur β de F q , on peut
introduire la notion de logarithme discret en base β comme suit. Pour tout
α non nul, dlog β α = n si β n = α avec n < q.
Le résultat suivant stipule que F∗q est un groupe cyclique.
Théorème I.6.20. On dispose des résultats suivants.
I Tout champ fini Fq possède un générateur.
I Si g est un générateur de Fq , alors g j en est un aussi si et seulement
si pgcd(j, q − 1) = 1.
I Le nombre de générateurs de Fq est ϕ(q − 1).
Lemme I.6.21. Pour tout entier N ≥ 1, on a
X
ϕ(d) = N.
d|N

Démonstration. On partitionne l’ensemble E = {1, 2, . . . , N } en ensem-


bles disjoints Ed de la façon suivante. Pour chaque diviseur d de N , on
définit
Ed = {k ∈ E | pgcd(k, N ) = d}.
Il est clair que ces ensembles forment une partition de E. Cherchons la
valeur du cardinal de Ed . Soit k ∈ Ed . Puisque pgcd(k, N ) = d, il existe k 0
et N 0 tels que
k = k 0 d, N = N 0 d et pgcd(k 0 , N 0 ) = 1.
De plus, 1 ≤ k ≤ N donc 1 ≤ k 0 ≤ N 0 et pgcd(k 0 , N 0 ) = 1. Cela signifie
qu’il y a ϕ(N 0 ) nombres k 0 satisfaisant les propriétés données ci-dessus. A
chacun de ces k 0 correspond exactement un entier k de E d . On en tire donc
N
#Ed = ϕ(N 0 ) = ϕ( ).
d
Si d1 , . . . , dr sont tous les diviseurs de N , on a
r r
X X N
N = #E = #Edi = ϕ( ).
di
i=1 i=1

28Rappelez-vous par exemple de la terminologie “racine primitive de l’unité”. Il s’agit


des racines n-ièmes de l’unité de la forme ωk = e2ikπ/n avec k < n premier avec n. Dans
ce cas, les puissances de ωk décrivent exactement l’ensemble des racines n-ièmes de 1.
I.6. Champs finis 27

Pour conclure, il suffit de remarquer 29 que {N/di | i = 1, . . . , r} = {d1 , . . . , dr }.


En effet, chaque N/di est lui-même un diviseur de N . Par conséquent,
lorsqu’on parcourt l’ensemble des N/d i possibles, on parcourt en fait l’en-
semble de tous les diviseurs de N .


Exemple I.6.22. Avec les notations de la preuve, on a


18 = ϕ(1) + ϕ(2) + ϕ(3) + ϕ(6) + ϕ(9) + ϕ(18) = 1 + 1 + 2 + 2 + 6 + 6.
De plus,
18 = ϕ(18/1) + ϕ(18/2) + ϕ(18/3) + ϕ(18/6) + ϕ(18/9) + ϕ(18/18)
et
E1 = {1, 5, 7, 11, 13, 17}, E2 = {2, 4, 8, 10, 14, 16},
E3 = {3, 15}, E6 = {6, 12}, E9 = {9} et E18 = {18}.
Démonstration. Considérons à présent la preuve du théorème I.6.20.
Soit a un élément d’ordre d du groupe multiplicatif F ∗q (pour l’instant, nous
supposons qu’un tel élément existe). Puisque l’ordre d’un élément divise
l’ordre du groupe, d divise q − 1. Par définition, d est le plus petit entier tel
que ad = 1. Ainsi, a, a2 , . . . , ad sont des éléments distincts.
Montrons que les éléments d’ordre d de F ∗q sont exactement les aj tels
que pgcd(j, d) = 1. Il est clair que les d éléments a, a 2 , . . . , ad sont tous des
racines de X d −1. Or un polynôme de degré d sur un champ possède au plus
d racines. Dès lors, les puissances de a parcourent l’ensemble des racines de
X d − 1. Un élément quelconque d’ordre d de F ∗q étant racine de X d − 1,
nous avons montré que tout élément d’ordre d de F ∗q est de la forme aj pour
un certain j. Cela n’est pas suffisant, un élément de la forme a j n’est pas
nécessairement d’ordre d. Si pgcd(j, d) = d 0 > 1, alors
0 0
(aj )d/d = (ad )j/d = 1
et aj a un ordre qui divise d/d0 < d. Dans ce cas, aj n’est pas d’ordre d. De
plus, si pgcd(j, d) = 1, alors il existe des entiers 30 u et v tels que 1 = ju−dv.
De là,
a = a1+dv = (aj )u .
Ainsi, a et aj sont puissances l’un de l’autre. Ils sont donc de même 31ordre
d.
29On a en fait une bijection de l’ensemble des diviseurs de N dans lui-même qui à d ,
i
associe N/di . On pourra en particulier observer que r, le nombre de diviseurs de N , est
impair si et seulement si N est un carré.
30Pensez au théorème de Bezout.
31C’est immédiat. S’il existe m et n tels que xm = y et y n = x, autrement dit, si x
et y sont puissances l’un de l’autre, alors x et y sont de même ordre. En effet, si x (resp.
y) est d’ordre k (resp. `), alors y k = (xm )k = (xk )m = 1 et donc ` ≤ k. Par symétrie, on
tire aussi k ≤ `.
28 Chapitre I. Quelques compléments d’algèbre

Par conséquent, si un élément d’ordre d existe dans F ∗q , il y en a alors


exactement ϕ(d). Ainsi, pour tout entier d divisant q − 1, il n’y a que deux
possibilités : aucun élément de F ∗q n’est d’ordre d ou il y a exactement ϕ(d)
éléments d’ordre d.
Il suffit alors d’un argument de comptage pour conclure. Au vu du
lemme précédent, si on prend N = q − 1 et puisque, dans F ∗q , l’ordre de tout
élément divise q − 1, il faut nécessairement ϕ(d) éléments d’ordre d pour
tout diviseur de q − 1. En particulier, F ∗q contient ϕ(q − 1) éléments d’ordre
q − 1.


Exemple I.6.23. Reprenons l’exemple I.3.9. Au vu de la table de multi-


plication obtenue précédemment, on trouve facilement l’ordre des éléments
de F9 = Z3 [X]/hX 2 + 1i en calculant leurs puissances (par convention, on
note un élément du quotient simplement P au lieu de P + hX 2 + 1i)
P P2 P3 P4 P5 P6 P7 P8
1
2 1
X 2 2X 1
2X 2 X 1
X + 1 2X 2X + 1 2 2X + 2 X X +2 1
X +2 X 2X + 2 2 2X + 1 2X X +1 1
2X + 1 X X +1 2 X + 2 2X 2X + 2 1
2X + 2 2X X +2 2 X +1 X 2X + 1 1
On trouve ϕ(8) = 4 (resp. ϕ(4) = 2, ϕ(2) = 1, ϕ(1) = 1) éléments d’ordre
8 (resp. 4, 2, 1).
6.5. Existence et unicité d’un champ à p f éléments. Nous mon-
trons ici qu’un champ à q = pf éléments est le corps de rupture du polynôme
X q − X. (Vu l’unicité, à isomorphisme près, du corps de rupture, on pourra
parler du champ à q éléments et lui consacrer la notation F q .) En d’autres
termes, si A et B sont deux champs contenant p f éléments, alors il s’agit en
fait de deux copies du même objet.
Théorème I.6.24. Soit Fq un champ à q = pf éléments. Tout élément
de Fq satisfait l’équation X q − X = 0 et Fq est précisément l’ensemble des
racines de cette équation. Autrement dit, pour tout sous-champ K de F q , Fq
est le corps de rupture du polynôme X q − X sur K.
Réciproquement, pour tout q = pf , puissance d’un nombre premier p, le
corps de rupture du polynôme X q − X sur Zp est un champ à q éléments.
Démonstration. Si Fq est un champ fini32, puisque l’ordre de tout élé-
ment non nul divise q − 1, on en déduit que tout élément non nul satisfait
l’équation X q−1 = 1 et donc également l’équation X q = X. L’élément nul
32Au vu de la remarque I.6.16, sa caractéristique vaut p: F est une extension de Z .
q p
I.6. Champs finis 29

satisfait aussi cette dernière équation. Ainsi, tout élément de F q est racine
du polynôme X q − X de degré q (considéré comme polynôme à coefficients
dans K). Puisque ce polynôme a au plus q racines, ses racines décrivent
donc exactement Fq , i.e., Fq est le corps de rupture de X q − X sur K (la
plus petite extension de K contenant toutes les racines de X q − X).
Réciproquement, soit q = pf et considérons le corps de rupture F du
polynôme P = X q − X sur Zp . Puisque DX (X q − X) = qX q−1 − 1 = −1
dans Zp [X] ou F[X] (car q est un multiple de la caractéristique p), on en
conclut que X q − X n’a pas de racine mutliple33 (cf. proposition I.5.9). Le
corps de rupture F doit donc contenir au moins les q racines distinctes de P .
Il nous suffit de montrer que l’ensemble de ces racines est un champ (en effet,
le corps de rupture est le plus petit champ contenant ces racines). Soient a et
b, deux racines du polynôme, i.e., a q = a et bq = b. Le produit des racines est
encore une racine car (ab)q = ab. Pour la somme, en utilisant34 le théorème
I.6.4, on a (a + b)q = aq + bq = a + b. Pour l’inverse d’une racine, il vient
aq = a et donc a−q−1 .aq = a−q−1 .a, c’est-à-dire a−1 = (a−1 )q . Enfin, pour
l’opposé d’une racine (a + (−a))q = 0 = aq + (−a)q , et donc (−a)q = −(aq ).
Ceci suffit.


Remarque I.6.25. Soit K un sous-champ de F q . Puisque Fq est le corps


de rupture de X q − X sur K, on a
Y
Xq − X = (X − α).
α∈Fq

Puisque le corps de rupture d’un polynôme est unique (à un isomor-


phisme près, cf. définition I.5.14), nous pourrons donc parler du champ
Fq . (Ainsi, le champ Zp des entiers modulo est une copie du champ F p à
isomorphisme près. Nous emploierons indifféremment les deux notations.)
Remarque I.6.26. Le théorème I.6.24 affirme en particulier que tout élé-
ment de Fq est algébrique sur Fp (et même sur tout sous-champ K de Fq ).
En effet, tout élément de Fq est racine du polynôme X q − X ∈ Fp [X] (ou de
manière analogue, on peut considérer que X q − X ∈ K[X]).
6.6. Sous-champs de Fq . Cette courte section contient un unique ré-
sultat présentant la structure des sous-champs de F q . De plus, le résultat
présenté ici nous sera utile pour obtenir une formule comptant le nombre de
polynômes moniques irréductibles sur F p de degré fixé.

33Il est possible de démontrer que X q −X n’a pas de racine multiple sans avoir recours
à la notion de dérivation formelle, voir l’article de I. N. Herstein, Amer. Math. Monthly
(1987).
34Il est clair que le corps de rupture F étant une extension de Z , il est encore de
p
caractéristique p.
30 Chapitre I. Quelques compléments d’algèbre

m n
Lemme I.6.27. Soient m > n. Le pgcd de X p− X et de X p − X est
h d
X − X où h = pgcd(m, n). En particulier, si d divise f , alors X p − X
p
f
divise X p − X.
Démonstration. Effectuons la division euclidienne, m = a.n + r avec
0 ≤ r < n. Alors, on obtient
pm − 1 = (pn − 1) (p(a−1)n + p(a−2)n + · · · + pn + 1) pr + pr − 1
| {z }
:=α
(pour s’en convaincre, il suffit de “redistribuer” le membre de droite faisant
apparaı̂tre une somme télescopique). De là, on trouve facilement
m −1 n −1) α pr +pr −1 r −1 n −1) α pr r −1
Xp − 1 = X (p − 1 = Xp (X (p − 1) + X p − 1.
De plus, on a aussi
n −1) α pr n −1 n −1 r −1 n r −2
X (p − 1 = (X p − 1)((X p )α p + (X p −1 )α p + · · · + 1).
| {z }
:=Q

En combinant les deux derniers développements et en multipliant par X, il


vient
m r n r
X p − X = X p −1 (X p − X) Q + X p − X.
m n r
Autrement dit, le reste de la division de X p −X par X p −X vaut X p −X.
On peut alors conclure en utilisant l’algorithme d’Euclide et en procédant
m n
par divisions euclidiennes successives. (Le pgcd de X p − X et de X p − X
n r
est égal à celui de X p − X et de X p − X, et ainsi de suite.)


Proposition I.6.28. Les sous-champs de F q = Fpf sont exactement les Fpd


pour d divisant f . Plus précisément, si K est un sous-champ de F q , alors il
contient pd éléments où d divise f . Réciproquement, si d divise f , alors F q
contient exactement un sous-champ contenant p d éléments.
En particulier, si on étend Fp par un élément de Fpf , alors on obtient
un de ces sous-champs Fpd .
Démonstration. Soit K un sous-champ de Fq contenant t éléments. En
particulier, si on pose [Fq : K] = s, alors #Fq = ts . De là, on tire que
pf = ts . Puisque p est premier et que s et t sont entiers, il existe d tel que
t = pd et ds = f (autrement dit, d divise f ).
d
Soit d un diviseur de f . Au vu du lemme précédent, X p − X divise
f
X p − X = X q − X (nous allons considérer ces deux polynômes comme
d
polynômes sur Zp ). Ainsi, toute racine de X p − X est racine de X q −
X et appartient donc à Fq (cf. première partie du théorème I.6.24). Par
conséquent, Fq doit contenir comme sous-champ, le corps de rupture de
d
X p − X sur Zp . Vu la deuxième partie du théorème I.6.24, ce corps de
rupture est un champ à pd éléments. Autrement dit, Fq contient un sous-
champ à pd éléments. Supposons que Fq contienne au moins deux tels sous-
d
champs distincts. Ensemble, ils contiendraient plus de p d racines de X p −X
ce qui est impossible. Ceci prouve l’unicité du sous-champ d’ordre p d .
I.6. Champs finis 31

Considérons à présent le cas particulier. Il est clair que F p (α) est un


sous-champ de Fq . Il est donc de la forme Fpd pour un certain d divisant f .


Exemple I.6.29. Considérons le champ F 28 = F256 . Puisque les diviseurs


de 8 sont 1, 2, 4, 8, les sous-champs propres de F 28 sont F2 , F22 et F24 . On
obtient un treillis “linéaire” représenté à la figure I.2 et symbolisant les in-
clusions de ces différents sous-champs. Inspectons à présent pour chacun
F 28

F 24

F 22

F2

Figure I.2. Sous-champs de F256 .

de ces sous-champs, l’ordre des différents éléments qui y interviennent ainsi


que leur nombre. Pour rappel, pour tout d diviseur de q − 1, il y a dans F ∗q
exactement ϕ(d) éléments d’ordre d. Le tableau suivant récapitule la struc-
ture des différents sous-champs emboı̂tés en précisant l’ordre et le nombre
d’éléments y apparaissant. Dans ce tableau, il faut comprendre que tous
les éléments repris dans les k premières lignes appartiennent aussi aux sous-
champs apparaissant “plus bas” (à cause de l’emboı̂tement).
ord #
F∗2 1 1
F∗4 3 2
F∗16 5 4
15 8
F∗256 17 16
51 32
85 64
255 128
255
La figure I.3 reprend la situation au sein de F 256 . On y a dessiné les sous-
champs et indiqués l’ordre des différents éléments.
32 Chapitre I. Quelques compléments d’algèbre

17 51
5
85
1 15
3

255

Figure I.3. F2 , F22 , F24 , F28 et leurs éléments (ordre respectif).

Exemple I.6.30. Considérons le champ F 230 . Ses sous-champs sont F2 ,


F22 , F23 , F26 , F210 et F215 . On dispose des inclusions reprises sur le trellis
de la figure I.4.
F230

F 26 F210 F215

F 22 F 23 F 25

F2

Figure I.4. Sous-champs de F230 .

On peut faire le même exercice de description que pour F 28 . Puisqu’ici


la structure est plus compliquée, on rappelle dans la dernière colonne du
tableau, les éléments déjà pris en compte dans des sous-champs plus petits
I.6. Champs finis 33

(cela permet de retrouver en quelque sorte le treillis de la figure I.4).


ord # déjà pris en compte
F∗2 1 1
F∗22 1
3 2
F∗23 1
7 6
F∗25 1
31 30
F∗26 1, 3, 7
9 6
21 12
63 36
F∗210 1, 3, 31
11 10
33 20
93 60
341 300
1023 600
F∗215 1, 7, 31
151 150
217 180
1057 900
4681 4500
32767 27000
F∗230 1, 3, 7, 9, 11, 21, 31, 33
63, 93, 151, 217, 341,
1023, 1057, 4681, 32767
77 60
99 60
231 120
.. ..
. .
1073741823 534600000
Les “points de suspension” évitent de passer en revue 35 les 79 diviseurs de
230 − 1 non rencontrés comme ordre d’éléments de sous-champs plus petits.
3577, 99, 231, 279, 331, 453, 651, 693, 993, 1359, 1661, 1953, 2317, 2387,

2979, 3069, 3171, 3641, 4983, 6951, 7161, 9513, 10261, 10923, 11627, 14043,
14949, 20853, 21483, 25487, 30783, 32769, 34881, 42129, 49981, 51491, 71827,
76461, 92349, 98301, 104643, 112871, 149943, 154473, 215481, 229383, 294903,
338613, 349867, 360437, 449829, 463419, 549791, 646443, 790097, 1015839,
1049601, 1081311, 1549411, 1649373, 2370291, 3148803, 3243933, 3848537,
4648233, 4948119, 7110873, 10845877, 11545611, 13944699, 17043521, 32537631,
34636833, 51130563, 97612893, 119304647, 153391689, 357913941, 1073741823.
34 Chapitre I. Quelques compléments d’algèbre

Les éléments de F∗230 n’appartenant à aucun sous-champ propre sont en


nombre 1073708010. La figure I.5 symolise les différents sous-champs et les
éléments des différents ordres qui y apparaissent.

151
217
1057
4681 32767

7
31
11 9
1

33 93
3 21 63
341
1023

Figure I.5. Les éléments de F230 suivant leur ordre.

7. Construction de champs finis


Dans ce cours, nous avons décidé d’utiliser le logiciel Mathematica pour
des illustrations informatiques. Nous avons choisi ce logiciel, non pas pour sa
vitesse d’exécution (en effet, l’implémentation efficace d’algorithmes devrait
très certainement être réalisée avec un langage de plus bas niveau comme le
C ou même l’assembleur) mais pour sa simplicité d’utilisation : gestion des
grands nombres, programmation fonctionnelle et même multi-paradigmes,
implémentation de nombreuses fonctions mathématiques et en particulier
des fonctions issues de la théorie des nombres, utilitaires graphiques directe-
ment accessibles, etc . . . . Ce cours ne se veut pas non plus être une intro-
duction à ce logiciel. Nous espérons que les exemples fournis permettront
au lecteur de réaliser lui-même d’autres expérimentations et d’en apprendre
un peu plus par lui-même (n’hésitez jamais à consulter l’aide en ligne !).
Au vu des sections précédentes, nous avons exactement deux situations
possibles.
I Si p est premier, alors Zp est un champ (le champ Fp ) et nous
connaissons très bien sa structure et l’arithmétique modulo p.
I Si q = pf , alors on obtient le champ Fq en quotientant l’anneau
Fp [X] par un polynôme irréductible de degré f . La question qui se
pose est alors l’existence de polynômes irréductibles sur F p de degré
f . (Une variante, en se rappelant la proposition I.4.11, revient
I.7. Construction de champs finis 35

à considérer une extension de Fp par une racine d’un polynôme


irréductible de degré f sur Fp ).
Considérons tout d’abord un petit exemple.
Exemple I.7.1. Nous montrons ici comment obtenir la table de multipli-
cation de F9 = Z3 [X]/hX 2 + 1i donnée à l’exemple I.3.9 grâce à Mathemat-
ica. La liste des polynômes de degré au plus un sur Z 3 est encodée dans la
variable t comme suit :
:> t = {0, 1, 2, x, x+1, x+2, 2x, 2x+1, 2x+2}
Ceci peut être automatisé comme suit : Pensez au produit
scalaire.
:> p = 3;
:> deg = 1;
:> t=Flatten[Table[{i,j}, {i,0,p-1}, {j,0,p-1}], 1]
.Table[x^(deg-i), {i,0,deg}]
Nous définissons une fonction reduire qui, en deux étapes, calcule le reste de
la division d’un polynôme p par X 2 + 1 puis en réduit les coefficients modulo
3 (pour ce faire, nous utilisons36 deux fois la fonction PolynomialMod).
:> reduire[p_]:=PolynomialMod[PolynomialMod[p,x^2+1],3]
Enfin, nous stockons la table de multiplication dans une variable m.
:> m=Table[reduire[t[[i]] t[[j]]], {i,1,9}, {j,1,9}]
Pour l’affichage, on pourra utiliser
:> TableForm[m]
Remarquons que pour vérifier au préalable que le polynôme X 2 + 1 est bien
irréductible sur Z3 [X], puisqu’il s’agit d’un polynôme de degré deux, il suffit
de vérifier qu’il n’a pas de racines.
:> Table[Mod[x^2+1 /. x->i, 3], {i,0,2}]
Out[]= {1,2,2}
Notre but est de montrer que le produit de tous les polynômes moniques
f
irréductibles de Fp [X] et de degré divisible par f est exactement X p − X.
Pour y parvenir, nous avons besoin d’un résultat préalable.
Théorème I.7.2. Pour tout q = pf , le polynôme X q − X est le produit
dans Fp [X] de tous les polynômes minimums (distincts) des éléments de F q .
Démonstration. Nous savons déjà que Fq est précisément l’ensemble des
racines de X q − X et que ce polynôme ne possède pas de racine multiple (cf.
théorème I.6.24). En particulier, si β ∈ F q , il est algébrique sur Fp (en effet,
X q − X peut être vu comme un polynôme de F p [X] qui est annulé par β).
Il possède donc un polynôme minimum M β sur Fp divisant X q − X .
Remarquons que si α, β appartiennent à F q (ayant respectivement Mα , Mβ
comme polynôme minimum sur Fp ), alors soit Mα = Mβ (autrement dit, α
36Dans les versions récentes de Mathematica, on dispose d’une version améliorée de
la fonction PolynomialMod[p,x^2+1,Modulus->3] pour n’utiliser qu’une seule fonction.
36 Chapitre I. Quelques compléments d’algèbre

et β sont conjugués) soit Mα 6= Mβ et ces polynômes n’ont aucune racine


commune (car sinon, ils auraient une racine commune γ, conjugué de α et
β; on pourrait alors conclure que Mα = Mγ = Mβ ).
Ainsi, Fq peut être partitionné en classes telles que deux éléments quel-
conques α, β ∈ Fq appartiennent à une même classe si et seulement si
Mα = Mβ (il s’agit en fait d’une relation d’équivalence). Si F q est par-
titionné en t classes et en choisissant un représentant α 1 , . . . , αt dans chaque
classe, on trouve
X q − X = M α1 · · · M αt .
En effet, il suffit de procéder de proche en proche. On a d’abord X q − X =
Mα1 Q. Dans cette factorisation, puisque les racines de X q − X sont simples,
Mα1 et Q n’ont pas de racine commune et les racines de X q −X non conjugées
à α1 sont exactement les racines de Q. On continue de proche en proche
jusqu’à avoir épuisé Fq .


Théorème I.7.3. Pour tout q = pf , le polynôme X q − X se factorise dans


Fp [X] en le produit de tous les polynômes moniques irréductibles (distincts)
dont le degré divise f .
Démonstration. Au vu du théorème précédent, nous savons déjà que
X q −X est le produit dans Fp [X] de tous les polynômes minimums (distincts)
des éléments de Fq . Soit P un tel polynôme de degré d, polynôme minimum
de α ∈ Fq . Puisqu’il est irréductible, Fp [X]/hP i est un champ contenant pd
éléments. Ce champ est aussi bien sûr isomorphe à F p (α) (cf. proposition
I.4.11). Il s’agit donc d’un sous-champ de F q . On conclut par le théorème
de structure des sous-champs de Fq , que d divise f .
Il nous reste à montrer que tout polynôme monique P irréductible sur
Fp dont le degré d divise f est le polynôme minimum sur F p d’un élément
de Fq . Considérons le champ L = Fp [X]/hP i contenant pd éléments. Par
le théorème de structure des sous-champs de F q , L est (isomorphe à) un
sous-champ de Fq . De plus, par construction, L (et donc F q ) contient une
racine β de P . Autrement dit, P est un polynôme monique irréductible sur
Fp ayant β ∈ Fq comme racine : P est le polynôme minimum de β sur F p .


pf −p
Corollaire I.7.4. Si f est un nombre premier, il y a alors exactement f
polynômes moniques irréductibles de degré f dans F p [X].
Remarque I.7.5. Par le petit théorème de Fermat, p f ≡ p mod f et donc
pf −p
f est un entier.
Démonstration. Soit Np (f ) le nombre de polynômes moniques irréducti-
bles de degré f dans Fp [X]. Par le théorème précédent, puisque les seuls
f
diviseurs de f sont 1 et f , le polynôme X p − X se factorise en un produit
des Np (f ) = k polynômes P1 , . . . , Pk moniques irréductibles sur Fp de degré
f et des p polynômes de degré un : X − α i , pour αi ∈ Fp , i = 1, . . . , p.
I.7. Construction de champs finis 37

Autrement dit,
f
X p − X = P1 (X) · · · Pk (X) (X − α1 ) · · · (X − αp )
| {z }| {z }
k polynômes de degré f p polynômes de degré 1

et en s’intéressant au degré des deux membres, on obtient


(2) pf = [Link] (f ) + p
d’où la formule annoncée.


Remarque I.7.6. Si f n’est pas premier, notons N p (d) le nombre de poly-


nômes moniques irréductibles de degré d sur F p . Au vu du théorème I.7.3,
la formule (2) devient
X X
pf = [Link] (d) = [Link] (f ) + [Link] (d)
d|f d|f
d<f

et de là,  
X
f
Np (f ) = p − [Link] (d) /f.
d|f
d<f
Cette formule permet donc de calculer, de proche en proche, les valeurs de
Np (f ) (On remarque que (2) n’est qu’un cas particulier de cette formule).
En particulier, cette formule permet de se convaincre de l’existence d’un
polynôme irréductible de degré f dans F p [X].
En utilisant la formule donnée à la remarque I.7.6 ci-dessus, on calcule
aisément le nombre de polynômes moniques irréductibles sur F p de degré f
pour les premières valeurs de p et de f . On peut procéder comme suit.
:> n[p_,f_] :=
(p^f-Map[n[p,#]&,Drop[Divisors[f],-1]].Drop[Divisors[f],-1])/f
:> Table[n[Prime[i],j], {i,1,10}, {j,1,7}]
On obtient alors le tableau I.2.
On peut montrer que le nombre Np (f ) de polynômes moniques irré-
ductibles sur Fp de degré f est tel que
Np (f ) 1
f
∼ .
p f
(Un argument en faveur de ce résultat sera fourni par la proposition I.7.7.)
Cela signifie que la probabilité pour qu’un polynôme monique de degré f
sur Fp soit irréductible est proche de f1 (ce qu’il est possible de montrer
explicitement).
A titre indicatif, reprenons la dernière ligne de notre tableau et divisons
chacun des éléments par 29f . On trouve comme approximation numérique
38 Chapitre I. Quelques compléments d’algèbre

f 1 2 3 4 5 6 7
p 2 1 2 3 6 9 18
3 3 8 18 48 116 312
5 10 40 150 624 2580 11160
7 21 112 588 3360 19544 117648
11 55 440 3630 32208 295020 2783880
13 78 728 7098 74256 804076 8964072
17 136 1632 20808 283968 4022064 58619808
19 171 2280 32490 495216 7839780 127695960
23 253 4048 69828 1287264 24670536 486403632
29 406 8120 176610 4102224 99133020 2464268040
Table I.2. Np (f ) : nombre de polynômes moniques irré-
ductibles sur Fp de degré f .

:> Table[N[n[29,j]/29^j], {j,1,7}]


Out[] =
{1., 0.482759, 0.332937, 0.249703, 0.2, 0.16666, 0.142857}
et comparons-le aux valeurs approchées de 1/f ,
:> Table[N[1/j], {j,1,7}]
Out[] =
{1., 0.5, 0.333333, 0.25, 0.2, 0.166667, 0.142857}
En pratique, pour générer un polynôme monique irréductible sur F p de degré
f , on choisit de manière aléatoire un polynôme monique puis on teste 37 si
le polynôme obtenu est ou non irréductible. On répète la procédure jusqu’à
obtenir un polynôme irréductible. A titre indicatif, cette méthode requiert
O(f 3 .ln f .ln p) opérations dans Fp .
Pour conclure cette section, voici un autre argument assurant l’existence
de polynômes irréductibles de tout degré dans F p [X]. En effet, le lecteur
pourrait, à juste titre, ne pas être entièrement convaincu par les développe-
ments menés jusqu’ici. Pour prouver facilement la proposition I.7.7, nous de-
vons tout d’abord introduire la notion de générateur d’extension de champ.
Proposition I.7.7. Pour tout n > 2, le nombre de polynômes moniques
irréductibles de degré n dans Fp [X] est minoré par

pn − p p n
.
n
Définition I.7.8. Soient K ⊂ L deux champs. Un élément α ∈ L est un
générateur de L sur K si L = K[α] (où, pour rappel, K[α] désigne l’ensemble
des polynômes en α à coefficients dans K).
37Nous ne parlons pas ici des algorithmes permettant de tester le caractère irréductible
d’un polynôme.
I.7. Construction de champs finis 39

Exemple I.7.9. Si on construit F16 comme Z2 [X]/hX 4 + X 3 + 1i, on peut


se convaincre par simple calcul que X (sous-entendu X + hX 4 + X 3 + 1i en
est un générateur (au sens de la définition I.6.17) mais que X + 1 n’en est
pas un.
:> Union[Table[
PolynomialMod[PolynomialMod[x^i, x^4+x^3+1], 2],
{i,1,15}]]

Out[] = {1, x, ...

:> Length[%]
Out[] = 15

:> Union[Table[
PolynomialMod[PolynomialMod[(x+1)^i, x^4+x^3+1], 2],
{i,1,15}]]

Out[] = {1, x^3, 1+x, 1+x^2, 1+x+x^2+x^3}


Par contre, X + 1 est un générateur de F 16 sur Z2 . Il suffit de montrer
que X + hX 4 + X 3 + 1i s’obtient comme un polynôme à coefficients dans Z 2
de X + 1 + hX 4 + X 3 + 1i et on vérifie que
(X + 1)5 + X + 1 = X mod X 4 + X 3 + 1.
Autrement dit, tout élément de Z2 [X]/hX 4 + X 3 + 1i s’obtient comme puis-
sance de X ou comme une expression polynomiale de X + 1.
Proposition I.7.10. Soient Fps ⊂ Fpsn deux champs, n > 2. Le nombre
de générateurs de Fpsn sur Fps est minoré par
n
psn − ps(1+ 2 ) .
Démonstration. Un élément α n’est pas un générateur de F psn sur Fps si
et seulement si α appartient à un sous-champ propre de F psn qui contient
Fps . Un tel sous-champ est de la forme Fpsd où d < n est un diviseur de n.
Donc, le nombre de non-générateurs de F psn sur Fps est38
X
≤ psd .
d|n
d<n
Ainsi, le nombre de générateurs de F psn sur Fps est minoré par
bn/2c
X X psbn/2c − 1
psn − psd ≥ psn − psr = psn − ps ≥ psn − ps(1+n/2)
ps − 1
d|n r=1
d<n

38On a une majoration car un même élément pourrait être compté plusieurs fois, rien
n’empêche a priori plusieurs sous-champs propres de Fps d’être emboités.
40 Chapitre I. Quelques compléments d’algèbre

p n 3 4 5 6 7
2 1 3 5 9 17
3 7 18 47 120 311
5 38 153 622 2602 11158
7 110 596 3358 19605 117646
11 437 3654 32205 295255 2783877
13 724 7133 74252 804462 8964068
17 1627 20871 283963 4022921 58619804
19 2275 32570 495211 7840972 127695955
23 4042 69948 1287258 24672638486403626
29 8112 176805 4102216 991372082464268033

Table I.3. Premières valeurs de b(p n − p pn )/nc

psbn/2c −1
où, pour la dernière inégalité, on remarque que ps −1 ≤ psn/2 .


Lemme I.7.11. Soient Fps ⊂ Fpsn deux champs, n ≥ 2. L’élément α ∈


Fpsn est un générateur de Fpsn sur Fps si et seulement si son polynôme
minimum sur Fps est de degré n.
Démonstration. Soit Mα le polynôme minimum de α sur Fps (bien sûr,
α est algébrique sur Fps , cf. remarque I.6.26).
Si deg Mα = n, alors Fps [α] n’est autre que Fps (α) (le lecteur peu con-
vaincu peut se rapporter à la remarque I.4.6) qui est isomorphe au champ
Fps [X]/hMα i (cf. proposition I.4.11) et qui possède p sn éléments. Autrement
dit, Fps [α] = Fpsn , i.e., α est un générateur de Fpsn sur Fps .
Passons à la réciproque et supposons que F ps [α] = Fpsn . Par conséquent,
Fps [α] = Fps (α) ' Fps [X]/hMα i possède psn éléments et on en déduit que
deg Mα = n.


Nous pouvons à présent passer à la preuve de la proposition I.7.7.


Démonstration. Le champ Fpn contient Fp comme sous-champ. Au vu
de la proposition I.7.10, le nombre de générateurs de F pn sur Fp est minoré

par pn − p pn . Soit α un tel générateur. Par le lemme précédent, son
polynôme minimum sur Fp (qui est monique et irréductible) est de degré n.
Ce polynôme possède au plus n racines. Autrement dit, il est le polynôme
minimum d’au plus n des générateurs envisagés. Par conséquent, le nombre

de polynômes moniques irréductibles de F p [X] est minoré par (pn −p pn )/n.


Le tableau I.3 reprend le minorant de N p (n) donné par la proposition


I.7.7. On en comparera les valeurs avec celles obtenues au tableau I.2.
Terminons cette section par un algorithme naı̈f permettant de générer
par degrés croissants les polynômes irréductibles sur F p . On maintient les
I.7. Construction de champs finis 41

polynômes déjà obtenus dans une liste. A la première étape, cette liste
contient uniquement les polynômes de degré 1.
A l’étape k + 1, la liste contient les polynômes irréductibles de degré au
plus k. Il suffit alors d’énumérer tous les polynômes de degré k + 1 et de
tester pour chacun d’eux s’il est divisible par un polynôme de la liste. Si tel
est le cas, on passe au polynôme suivant, sinon, ce polynôme est ajouté à la
liste.
p = 3;

(* genere tous les polynomes de degre d sur Z_p *)

:> genere[d_] := Table[IntegerDigits[i,p].


Reverse[Table[x^i, {i,0,d}]], {i,p^d,p^(d+1)-1}]

(* initialise la liste avec ceux de deg=1 *)

:> liste = genere[1]

Out[] = {x, 1+x, 2+x, 2x, 1+2x, 2+2x}

(* teste si un poly. est irreductible en recherchant le reste


de la division euclidienne par tous les poly. de la liste *)

:> irreductible[pol_] := If[CoefficientList[Apply[Times,


Map[PolynomialMod[pol,#,Modulus->p]&,liste]],x]=={}, False, True]

:> Select[genere[2], irreductible[#] &]

Out[] = {1+x^2, 2+x+x^2, 2+2x+x^2, 2+2x^2, 1+x+2x^2, 1+2x+2x^2}

(* generer tous les poly. irreductibles de deg< 5 *)

:> For[i=2, i<5,


liste=Flatten[Append[liste,Select[genere[i],irreductible[#] &]]];
i++]
:> liste

Out[] = {x, 1+x, 2+x, 2x, 1+2x, 2+2x, 1+x^2, 2+x+x^2, 2+2x+x^2,
2+2x^2, 1+x+2x^2, 1+2x+2x^2, 1+2x+x^3, 2+2x+x^3, 2+x^2+x^3, ...
42 Chapitre I. Quelques compléments d’algèbre

8. Représentation en base entière et exponentiation modulaire


Soit b ≥ 2. Tout nombre n ∈ N \ {0} se décompose de manière unique
sous la forme
`−1
X
n= σi bi , avec σi ∈ {0, . . . , b − 1} et σ`−1 6= 0.
i=0
C’est une conséquence de la division euclidienne. Le mot ρ b (n) = σ`−1 · · · σ0
de longueur ` est la représentation en base b de n. On dit que σ `−1 (resp.
σ0 ) est le chiffre de poids fort ou chiffre le plus significatif (resp. le chiffre
de poids faible ou le chiffre le moins significatif).
Pour tout entier n, il existe ` tel que b `−1 ≤ n < b` . Dans ce cas, ρb (n)
est un mot de longueur `. Ainsi, la longueur L b (n) = ` de la représentation
en base b de n est donnée par
 
ln n
Lb (n) = blog b (n)c + 1 = + 1.
ln b
Par abus de langage, on s’autorisera à parler de la “longueur de l’entier
n” en place de la longueur de la représentation, la base b considérée étant
sous-entendue.
Exemple I.8.1. La représentation en base 2 de 73 est donnée par
:> BaseForm[73,2]
Out[]= 1001001
et on vérifie que
:> Log[2,73]//N
Out[]= 6.18982
Nous allons voir comment l’écriture en base 2 permet de calculer rapi-
dement une exponentiation modulo m. Ainsi, nous voulons rechercher
k
X
xe mod m avec e= ei 2i .
i=0
Il est clair que
Pk k
Y Y
2i i i
xe = x i=0 ei = (x2 )ei = x2 .
i=0 0≤i≤k
ei =1
i+1 i
Si on remarque que x2 = (x2 )2 , pour calculer xe mod m, il suffit donc
i
de calculer les x2 mod m au moyen de k = Lb (e) − 1 élévations successives
au carré (modulo m) ainsi que k = Lb (e) − 1 produits (modulo m). Ainsi,
la complexité de l’algorithme sous-jacent est logarithmique en l’exposant et
non pas linéaire comme l’aurait été un algorithme naı̈f !
Exemple I.8.2. Pour calculer 673 mod 100, on a tout d’abord
73 = 20 + 23 + 26 , ρ2 (73) = 1001001.
I.9. Complexité d’algorithmes 43

Ensuite, on calcule le tableau suivant


i 1 02 3 4 5 6
i−1
(62 )2 6 36 (−4) 16 56 362
2 2 2 2 2
i
62 mod 100 6 36 −4 16 56 36 −4
0 3 6
Enfin, 673 mod 100 = 62 .62 .62 = 6.16.(−4) = 16 mod 100. Pour ef-
fectuer ce calcul, nous avons donc eu besoin de 6 élévations au carré et de
deux produits dans Z100 . Ceci est bien plus efficace qu’une méthode naı̈ve
qui aurait nécessité 73 multiplications. Dans Mathematica, cette fonction
est implémentée comme suit.
:> PowerMod[6,73,100]
Out[]= 16

9. Complexité d’algorithmes
Dans cette section, nous nous intéressons au temps nécessaire pour
réaliser des calculs (addition, produit, inversion,. . . ) dans un champ fini
au moyen d’un ordinateur. Nous simplifierons notre propos en considérant
uniquement comme opérations élémentaires les opérations sur les bits (par
exemple, on ne prendra pas en compte les problèmes liés à l’allocation mé-
moire et nous négligerons les coûts temporels correspondant). Ces opérations
sont supposées être réalisées en un temps constant (bien évidemment cette
constante dépend de l’ordinateur employé). Rappelons qu’un bit est un élé-
ment fondamental de la mémoire ne pouvant prendre que deux valeurs et
permettant de coder de l’information.
9.1. Addition de deux entiers. Intéressons-nous tout d’abord à l’ad-
dition de deux entiers représentés en base 2. Le choix de la base 2 a une vo-
cation principalement pédagogique. Les processeurs actuels utilisent plutôt
une puissance de 2 comme base de représentation. Néanmoins, les raison-
nements développés sont assez facilement transposables à un cadre plus ré-
aliste. Ainsi, on peut procéder comme à l’école primaire en effectuant un
“calcul écrit”. Additionnons 120 et 30 en base deux (ils sont donc représentés
chacun par une suite de bits).
report 1 1 1 1
ρ2 (120) 1 1 1 1 0 0 0
ρ2 (30) + 1 1 1 1 0
1 0 0 1 0 1 1 0
Ainsi, pour chacune des colonnes de bits et en commençant par la droite
(par le bit de poids faible), pour obtenir un bit s de la réponse (plus un bit
r 0 de report éventuel), on regarde trois bits (un bit pour chacun des deux
nombres à ajouter, a et b, plus un bit r provenant d’un éventuel report). La
situation est résumée dans la table I.4.
44 Chapitre I. Quelques compléments d’algèbre

a b r → s r0
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1
Table I.4. Addition bit à bit.

Le nombre d’opérations élémentaires sur les bits (et par conséquent, le


temps nécessaire) pour additionner deux entiers x et y est donc proportionnel
à max(L2 (x), L2 (y)), ce qui s’écrit encore39 O(max(ln x, ln y)).
9.2. Multiplication de deux entiers. Considérons encore notre cal-
cul écrit de l’école primaire pour multiplier deux entiers 25 et 13 représentés
en base 2.
1 1 0 0 1
× 1 1 0 1
1 1 0 0 1
1 1 0 0 1
+ 1 1 0 0 1
1 0 1 0 0 0 1 0 1
Ne devrait-on pas Dans cet exemple, on a recopié le mot 11001 correspondant au premier
enseigner à l’école
primaire la multiplication facteur autant de fois qu’il y a de “1” dans le second facteur représenté par
en base 2 ? C’est en fait 1101. Chacune de ces copies est décalée d’un cran vers la gauche (un cran
plus simple qu’en base 10.
On recopie simplement ! supplémentaire par zéro rencontré). En effet, 13 étant égal à 2 3 + 22 + 1,
25 × 13 = 25 × 23 + 25 × 22 + 25 × 20
et multiplier un nombre par une puissance k-ième de la base revient à ajouter
k zéros à la fin de la représentation de ce nombre (c’est-à-dire, revient à un
décalage de k positions vers la gauche).
On remarque donc que, d’une manière générale, pour multiplier deux
entiers x et y, on doit réaliser, de proche en proche, au plus 40 L2 (y) − 1
additions entre deux nombres de longueur L 2 (x). En effet, pour réaliser
une addition arbitraire comme a1 + · · · + ak , on peut décider de grouper les
termes comme suit,
(· · · ((a1 + a2 ) + a3 ) + · · · ) + ak
ce qui requiert exactement k − 1 additions de deux termes.
39Rappelons qu’une fonction f = O(g) s’il existe N et C > 0 tels que pour tout
n ≥ N , f (n) ≤ C g(n).
40Cette borne est atteinte lorsque y est de la forme 1 · · · 1, c’est-à-dire si y = 2m − 1.
I.9. Complexité d’algorithmes 45

Expliquons à présent pourquoi on peut considérer être en présence de


nombres de longueur L2 (x) lorsqu’on effectue une addition intermédiaire
de deux termes. Pour la première addition, on dispose de deux copies de
ρ2 (x) dont la seconde a été décalée vers la gauche de n ≥ 1 positions. A
cause de ce décalage, les n bits les plus à droite du premier terme sont
simplement recopiés dans la réponse finale et on peut donc considérer être
en présence de deux nombres de même longueur L 2 (x) (plus exactement, on
doit réaliser l’addition d’un nombre de longueur L 2 (x) avec un nombre de
longueur L2 (x) − n). Sur notre exemple, on a
1 1 0 0 1
1 1 0 0 1 ↓ ↓
1 1 1 1 1 0 1
Ensuite, c’est ce résultat intermédiaire qui sera ajouté à une copie de ρ 2 (x)
décalée vers la gauche et le même raisonnement s’applique à nouveau,
1 1 1 1 1 0 1
1 1 0 0 1 ↓ ↓ ↓
1 0 1 0 0 0 1 0 1
De là, on en conclut que le temps nécessaire pour multiplier x et y est
proportionnel à L2 (x).L2 (y) ou encore O(ln [Link] y) (puisqu’on effectue au
maximum L2 (y) − 1 additions de deux nombres dont la longueur n’excède
pas L2 (x)).
Remarque I.9.1. Il existe des techniques plus évoluées pour multiplier
deux entiers en réduisant le nombre d’opérations à réaliser. Ainsi, il est
possible de calculer le produit de deux nombres de k bits en O([Link] [Link] ln k)
opérations. Cette borne est même meilleure que O(k 1+ε ) et ce, quel que soit
ε > 0.
Le cas de la division euclidienne se traite de manière semblable. Si-
gnalons que la division euclidienne (quotient et diviseur) d’un entier x tel
que L2 (x) = k par un entier y tel que L2 (y) = ` nécessite un nombre
d’opérations élémentaires proportionnel à `(k − ` + 1).
9.3. Algorithme d’Euclide étendu. Rappelons le résultat classique
suivant.
Proposition I.9.2 (Algorithme d’Euclide). Soient a, b ∈ Z avec a 6= 0.
En appliquant successivement la division euclidienne, on obtient la suite
d’équations
b = a q 1 + r1 , 0 < r1 < a
a = r 1 q2 + r 2 0 < r 2 < r1
r1 = r 2 q3 + r 3 0 < r 3 < r2
..
.
rj−2 = rj−1 qj + rj 0 < rj < rj−1
rj−1 = rj qj+1 .
46 Chapitre I. Quelques compléments d’algèbre

Le pgcd de a et de b est le dernier reste non nul r j .


Pour la suite, nous posons r0 = a. De cet algorithme, on tire un autre
résultat fort utile.
Théorème I.9.3 (Théorème de Bezout). Soient a, b ∈ Z tels que ab 6= 0.
Il existe des entiers relatifs α0 et β0 tels que
pgcd(a, b) = a α0 + b β0 .
Exemple I.9.4. On a
735 = 6.121 + 9
121 = 13.9 + 4
9 = 2.4 + 1
4 = 4.1
ce qui montre que pgcd(735, 121) = 1 ou encore que 121 est inversible dans
Z735 . En “remontant” l’algorithme, on peut trouver des coefficients α 0 et β0
du théorème de Bezout tels que
1 = α0 .121 + β0 .735
et ainsi rechercher l’inverse de 121 dans Z 735 .
1 = 9 − 2.4
= 9 − 2.(121 − 13.9) = −2.121 + 27.9
= −2.121 + 27.(735 − 6.121) = −164.121 + 27.735.
Donc, dans Z735 , 121−1 = −164 = 571.
L’algorithme d’Euclide étendu permet de calculer simultanément pgcd(a, b)
et les coefficients α0 et β0 du théorème de Bezout. Avec les notations de la
proposition I.9.2, on introduit deux suites (A n )n∈N et (Bn )n∈N telles que
A0 = 0, A1 = 1, B0 = 1, B1 = 0,
et pour tout n ≥ 1,
An+1 = qn An + An−1 et Bn+1 = qn Bn + Bn−1 .
Avec ces définitions, on obtient le résultat suivant.
Proposition I.9.5. On a
rn = (−1)n An+1 a + (−1)n+1 Bn+1 b, ∀n ≥ 0.
Démonstration. On procède par récurrence sur n. Pour n = 0, c’est
immédiat et pour n = 1, on a
r1 = −A2 a + B2 b = −q1 a + b.
I.9. Complexité d’algorithmes 47

Supposons le résultat vérifié pour les valeurs inférieures à n et vérifions-le


pour n.
rn = rn−2 − rn−1 qn
= (−1)n An−1 a + (−1)n+1 Bn−1 b − ((−1)n+1 An a + (−1)n Bn b)qn
= (−1)n (An−1 + An qn ) a + (−1)n+1 (Bn−1 + Bn qn ) b
= (−1)n An+1 a + (−1)n+1 Bn+1 b.


Exemple I.9.6. Reprenons le pgcd de a = 121 et b = 735. On a obtenu


q1 = 6, q2 = 13, q3 = 2, q4 = 4 et r1 = 9, r2 = 4, r3 = 1, r4 = 0.
En même temps que le calcul des divisions euclidiennes successives, on peut
aussi rechercher les premiers termes des suites A n et Bn ,
A0 = 0, A1 = 1, A2 = q1 A1 + A0 = 6,
A3 = q2 A2 + A1 = 79, A4 = q3 A3 + A2 = 164,
B0 = 1, B1 = 0, B2 = q1 B1 + B0 = 1,
B3 = q2 B2 + B1 = 13, B4 = q3 B3 + B2 = 27.
De là, par la proposition précédente, il vient
1 = r3 = (−1)3 A4 121 + (−1)4 B4 735 = (−164).121 + 27.735.
Remarque I.9.7. Si b > a > 0, on peut montrer que la complexité de
l’algorithme d’Euclide est O(ln b) et pour la version étendue, on a O(ln [Link] b).
L’algorithme d’Euclide et sa version étendue peuvent facilement être adaptés
au cas de deux polynômes.
Exemple I.9.8. Dans Mathematica, on dispose des fonctions suivantes :
:> GCD[121,735]
Out[]= 1
:> ExtendedGCD[121,735]
Out[]= {1, {-164,27}}
9.4. Opérations dans Fq . Nous savons que les éléments du champ
Fq , avec q = pf (p premier), peuvent être vus comme des polynômes à
coefficients dans Fp (c’est-à-dire dans l’anneau Zp des entiers modulo p)
regardés modulo un polynôme irréductible M de degré f . Ainsi, un tel
élément est caractérisé par un polynôme
af −1 X f −1 + · · · + a0 , ai ∈ Fp .
Ainsi, l’addition de deux tels objets nécessite f sommes modulo p (on ad-
ditionne entre eux les coefficients respectifs des deux polynômes, un polynôme
de degré f − 1 ayant f coefficients),

[af −1 X f −1 + · · · + a0 ] + [bf −1 X f −1 + · · · + b0 ]
48 Chapitre I. Quelques compléments d’algèbre

= (af −1 + bf −1 )X f −1 + · · · + ( a0 + b0 ).
| {z } | {z }
(mod p) (mod p)
Si on travaille modulo p, cela signifie que les nombres a i , bi rencontrés sont
inférieurs à p. Dès lors, la somme de deux éléments de F q requiert au total
O(f ln p)
opérations car nous avons vu que la somme de deux nombres < p se réalise
(en base 2) en O(ln p) opérations (nous admettrons que sur F p , les coûts
sont semblables à ceux obtenus pour les développpements en base 2, il ne
serait pas difficile de s’en convaincre).
Une multiplication de deux éléments de F q est effectuée grâce à des ad-
ditions et à des multiplications modulo p. La complexité des additions étant
bien inférieure à celle des multiplications, pour estimer le coût d’une multi-
plication dans Fq , on peut uniquement regarder le nombre de multiplications
qui y interviennent. Ainsi, si on réalise le produit de deux polynômes P et
Q de degré inférieur à f , O(f 2 ) multiplications de coefficients modulo p sont
nécessaires pour déterminer tous les coefficients du polynôme P.Q,
 
2f
X −2 X
[af −1 X f −1 + · · · + a0 ].[bf −1 X f −1 + · · · + b0 ] =  ak .b`  X j .
j=0 k+`=j
| {z }
(mod p)

En effet, on remarque que les produits a k .b` apparaissent tous exactement


une fois dans l’expression ci-dessus, k, ` ∈ {0, . . . , f − 1}. De plus chaque
multiplication requiert O(ln2 p) opérations. (Comme pour les additions,
nous admettrons que sur Fp , les coûts sont semblables à ceux obtenus pour
les développpements en base 2 et puisque nous travaillons modulo p, cela
revient à considerer le produit de 2 entiers < p.) Le coût total de la mul-
tiplication est donc O(f 2 ln2 p) = O(ln2 q). Ce n’est pas tout, le polynôme
obtenu est de degré au plus 2f − 2 et doit encore être réduit modulo M .
Il faut donc réaliser la division euclidienne de P.Q par M . Cette division
emploie O(f ) divisions d’entiers modulo p (une division se fait en O(ln 2 p))
et aussi O(f 2 ) multiplications d’entiers modulo p. Ainsi la division prend
un temps O(f 2 ln2 p) = O(ln2 q). Les deux étapes nécessitant le même ordre
d’opérations, la complexité temporelle d’une multiplication dans F q est donc
d’ordre
O(ln2 q).
Effectuer une division dans Fq revient à multiplier par l’inverse. Ceci
peut être réalisé grâce à l’algorithme d’Euclide étendu (adapté aux polynômes
de Fp [X]). On peut montrer que la recherche de l’inverse se fait en O(ln 2 q)
opérations élémentaires.
Le calcul d’une puissance n-ième dans F q peut se faire sur la même base
que l’exponentiation modulaire présentée à la section 8. Cela nécessite donc
O(ln n) multiplications dans Fq . Le coût total est donc O(ln n.ln2 q).
I.10. A propos des nombres premiers 49

10. A propos des nombres premiers


Nous énonçons dans cette section, quelques faits relatifs à l’ensemble
des nombres premiers. En effet, de nombreux cryptosystèmes sont basés
sur ces nombres et une connaissance de base de ceux-ci nous paraı̂t dès lors
indispensable.
Proposition I.10.1. Il existe une infinité de nombres premiers.

Démonstration. Procédons par l’absurde en supposant qu’il n’existe


qu’un nombre fini de nombres premiers 2 = p 1 < . . . < pk . Alors, le nombre
N = p 1 · p2 · · · p k + 1
ne peut être premier puisqu’il est supérieur à p k . Il est dès lors composé et
divisible par un nombre premier pi . De là, 1 = N − p1 · p2 · · · pk doit donc
être divisible par pi et nous avons obtenu une contradiction.


Corollaire I.10.2. Soit pk , le k-ième nombre premier. On a


k−1
pk ≤ 2 2 .
Démonstration. En effet, tout nombre premier divisant p 1 · · · pk + 1 est
distinct de p1 , . . . , pk . Ainsi, pk+1 ≤ p1 · · · pk + 1. On procède alors par
récurrence. On a p1 ≤ 2 et de là41,
1 2 k−1 k
pk+1 ≤ 22 · 22 · · · 22 + 1 < 22 .


Remarque I.10.3. On peut trouver des plages arbitrairement longues


d’entiers consécutifs tous composés. Il suffit de considérer les n entiers con-
sécutifs
(n + 1)! + 2, (n + 1)! + 3, . . . , (n + 1)! + n + 1.
Par contre, il est conjecturé qu’il existe une infinité de nombres premiers
jumeaux, i.e., tels que p et p + 2 soient premiers.
Nous énonçons sans démonstration les deux résultats suivants.
Théorème I.10.4 (Théorèmes de raréfaction des nombres premiers). Si
π(n) désigne le nombre de nombres premiers inférieurs ou égaux à n, alors
π(n) ln n
lim = 1.
n→∞ n
Autrement dit, le quotient π(n)/n se comporte asymptotiquement comme
1/ln n.

41
Pk−1 i k −2
2
2.2 [Link]
|{z} | {z } · · · 2
| ·{z
· · 2} = 2 i=1 = 22 .
2× 4× 2k−1
50 Chapitre I. Quelques compléments d’algèbre

1.135

1.1325

1.13

1.1275

1.125

1.1225

12000 14000 16000 18000 20000

1.1175

ln n
Figure I.6. Graphique de π(n) n pour 104 ≤ n ≤ 2.104 .

Théorème I.10.5 (Dirichlet). Si a et b sont premiers entre eux, alors il


existe une infinité de nombres premiers de la forme a + n b.
Remarque I.10.6. La démonstration de ce résultat général sort du cadre
de ce cours. Il est cependant facile de montrer qu’il existe une infinité de
nombres premiers de la forme 4n+3. Supposons qu’il n’existe qu’un nombre
fini de nombres premiers q1 < · · · < qk de cette forme. Le nombre
N = 4q1 q2 · · · qk − 1 = 4(q1 q2 · · · qk − 1) + 3
est de la forme 4n + 3. Il ne peut être premier car il serait plus grand que
qk . Dès lors, N est composé. Aucun nombre premier, hormis 2, n’est de
la forme 4n + 2 ou 4n. Donc aucun facteur de ce type n’intervient dans la
décomposition de N en facteurs premiers. De plus, N ne peut contenir dans
sa décomposition uniquement des facteurs de la forme 4n + 1 car il serait
alors lui-même de cette forme. On en conclut que N doit contenir un facteur
premier qi de la forme 4n + 3. On en tire alors que 1 = 4q 1 q2 · · · qk − N doit
être divisible par qi , ce qui est impossible.
Une progression arithmétique de nombres premiers de longueur ` est un
ensemble de la forme {p + k d premier, k = 0, . . . , ` − 1}. Par exemple, voici
une progression de longueur 10.
199, 409, 619, 829, 1039, 1249, 1459, 1669, 1879, 2089
Un résultat récent (2004) et remarquable, dont la preuve est hautement
difficile montre que des progressions arithmétiques arbitrairement longues de
nombres premiers existent. Il s’agit d’une sorte de “réciproque” au théorème
de Dirichlet.
I.10. A propos des nombres premiers 51

Théorème I.10.7 (Ben Green - Terence Tao [7]). Pour tout entier `,
l’ensemble des nombres premiers contient une progression arithmétique de
longueur `.
CHAPITRE II

Cryptographie

1. Introduction
L’objectif premier de la cryptographie est de permettre l’échange d’infor-
mations de manière “sécurisée” entre deux personnes (typiquement appelées
Alice et Bob) par l’intermédiaire d’un canal peu sûr pouvant être espionné
par un opposant (typiquement appelé Oscar). On peut imaginer que le canal
employé est une ligne téléphonique ou le réseau Internet. L’information que
désire transmettre Alice peut par exemple être un texte en français ou une
suite de bits ou d’entiers. On l’appellera le texte clair. Pour ne pas permettre
à Oscar de comprendre le contenu du texte clair, Alice transforme ce texte
par un procédé de chiffrement en utilisant une clé déterminée. Le texte
obtenu après chiffrement est appelé texte chiffré et c’est ce dernier qui est
envoyé à Bob au moyen du canal de transmission. Bob, connaissant la
clé utilisée par Alice, peut alors déchiffrer le texte chiffré pour réobtenir le
texte clair. L’opposant Oscar ne connaissant pas la clé de chiffrement ne
peut quant à lui réobtenir “facilement” le texte clair.
dechiffrement
chiffrement

texte texte
clair chiffre

abb xyx canal xyx abb


bac xxv
... xxv
... bac
... ...

ALICE BOB

xyx
xxv
... ???

OSCAR

Figure II.1. Le canal de communication.

53
54 Chapitre II. Cryptographie

De manière plus formelle, on dispose de la définition suivante.


Définition II.1.1. On appelle système cryptographique ou cryptosystème
un triplet1 (P, C, K) satisfaisant les conditions suivantes :
I P est l’ensemble fini des textes clairs possibles (plaintexts),
I C est l’ensemble fini des textes chiffrés possibles (ciphertexts),
I K est l’ensemble fini des clés possibles, appelé parfois espace des
clés (keys),
I Pour tout k ∈ K, il existe une fonction de chiffrement (encryption
rule) ek telle que
ek : P → C : t 7→ ek (t)
et il existe une fonction de déchiffrement (decryption rule) d k telle
que
dk : C → P : t 7→ dk (t) et ∀t ∈ P, dk (ek (t)) = t.
Remarque II.1.2. Pour permettre le déchiffrage, la fonction e k doit bien
évidemment être injective pour tout k ∈ K.
Exemple II.1.3. Ce premier exemple simpliste consiste en la présentation
du chiffrement par décalage. Ici, nous prenons P = C = K = Z 26 et pour
tout k ∈ {0, . . . , 25}, on pose
ek (x) = (x + k) mod 26 et dk (y) = (y − k) mod 26.
Si Alice désire envoyer à Bob sur le canal peu sûr une suite
x = x 1 x2 · · · x ` , xi ∈ P,
elle la chiffrera au préalable avec une fonction e k (pour un k ∈ K choisi de
commun accord avec Bob dans un lieu supposé à l’abri de l’opposant Oscar)
et transmettra alors à Bob, la suite
y = ek (x1 )ek (x2 ) · · · ek (x` ).
Une étape souvent préalable au chiffrement est le codage. Nous appelons
codage l’ensemble des conventions prises pour modifier le texte clair en un
texte équivalent2 plus simple à traiter du point de vue cryptographique. Ex-
pliquons notre propos sur un exemple. Si Alice veut transmettre le message
“bonsoir”, nous pouvons convenir que chaque lettre est remplacée par sa
position dans l’alphabet Σ = {a, . . . ,z} (en commençant par coder a par
0). Ainsi, le texte clair “bonsoir” est codé en “x = 1,14,13,18,14,8,17”.
Notre codage est simplement une bijection entre l’alphabet Σ et l’ensemble
{0, . . . , 25}. L’application inverse sera naturellement appelée décodage. At-
tirons l’attention du lecteur sur le fait que codage et chiffrement sont deux
notions distinctes. Si la clé choisie est k = 3 (il est de coutume d’attribuer
1Nous avons choisi de conserver ici les notations anglo-saxonnes.
2Le codage est donc une bijection.
II.1. Introduction 55

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
Table II.1. Un premier codage.

le cryptosystème par décalage avec le choix de la clé k = 3 à Jules César),


alors le texte devient
y = e3 (1)e3 (14)e3 (13)e3 (18)e3 (14)e3 (8)e3 (17) = 4, 17, 16, 21, 17, 11, 20.
Ce texte chiffré s’écrit sous forme équivalente, grâce à nos conventions de
codage, “erqvrlu”. On comprend aisément comment Bob pourra décoder
ce message et retrouver le texte clair original.
Il est assez facile de se convaincre que ce cryptosystème est peu sûr. En
effet, si Oscar obtenait le texte “erqvrlu”, il pourrait aisément retrouver le
texte clair ne serait-ce qu’en essayant de manière exhaustive les 26 clés pos-
sibles et en regardant si les textes obtenus ont ou non un sens. On appelle
cryptanalyse l’ensemble des moyens et techniques mis en oeuvre pour retrou-
ver le texte clair ou au moins une certaine information contenue dans celui-ci.
Si Oscar ne connaı̂t pas le cryptosystème utilisé pour chiffrer le texte clair, la
cryptanalyse sera plus ardue mais il serait illusoire de baser la sécurité d’un
système sur la protection (plus qu’incertaine) de la description des fonctions
cryptographiques employées. Le principe de Kerckhoff suppose qu’Oscar
connaı̂t le cryptosystème utilisé. La sécurité du système réside alors dans
la protection de la clé k choisie par Alice et Bob. Les types d’attaque dont
dispose Oscar sont les suivantes (par ordre de difficulté décroissante)
I Texte chiffré connu : Oscar connaı̂t uniquement un fragment de
texte chiffré y qu’il a intercepté. Dans des cryptosystèmes évolués,
il est souvent nécessaire pour réaliser la cryptanalyse de connaı̂tre
de longs fragments de texte.
I Texte clair connu : Oscar connaı̂t un texte clair x et le texte
chiffré y correspondant. Dans le cryptosystème de César, pour
réaliser la cryptanalyse, il suffit simplement de connaı̂tre une lettre
et son équivalent chiffré pour retrouver la clé.
I Texte clair choisi : Oscar a accès à une machine chiffrante. Il
peut choisir un texte clair x et obtenir le texte chiffré y correspon-
dant. Une telle attaque est souvent utile au cryptanalyste ayant
déjà énoncé des conjectures sur la clé du cryptosystème. Une at-
taque à texte clair choisi peut par exemple être réalisée par Oscar,
lorsque ce dernier peut masquer son identité et avoir accès à une
machine réalisant le chiffrement (sans pour autant connaı̂tre la clé
utilisée).
56 Chapitre II. Cryptographie

I Fonction de chiffrement connue : Oscar connaı̂t précisément la


fonction utilisée pour le chiffrement. Son but est alors de découvrir
la fonction de déchiffrement. Cette situation est typique des cryp-
tosystèmes à clé publique que nous rencontrerons dans le chapitre
suivant.
I Texte chiffré choisi : Oscar a temporairement accès à une ma-
chine déchiffrante. Il peut choisir un texte chiffré y et obtenir le
texte clair x correspondant.
Nous reviendrons plus loin sur quelques techniques de cryptanalyse.

2. Implémentation et codage
Comme nous l’a montré l’exemple précédent, la première étape dans
l’élaboration d’un procédé cryptographique consiste en le codage du texte
clair. Il ne s’agit pas de chiffrement à proprement parler, mais simplement de
l’application des conventions choisies comme base préalable au chiffrement.
Nous avons décidé ici de prendre un alphabet contenant 32 symboles. En
effet, il est souvent commode, pour des raisons d’efficacité d’implémentation,
de travailler sur un alphabet (mais aussi modulo une puissance de deux).
Sans entrer dans les détails, un choix convenable de la “base” permet parfois
d’accélérer certains calculs. Pour ne pas alourdir l’exposé, nous avons réduit
notre alphabet à 32 symboles comprenant les lettres minuscules, un espace
et quelques signes de ponctuation. On aurait tout aussi bien pu considérer
l’ensemble des 256 caractères du codage ASCII, voir même l’ensemble des
216 caractères UNICODE. Ainsi, nous définissons la liste suivante.
:> alphabet = {" ", "a", "b", "c", "d", "e", "f", "g", "h", "i",
"j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
"v", "w", "x", "y", "z", ",", ".", "’", ":", "?"};
La fonction code prend comme argument une chaı̂ne de caractères et renvoie
une liste d’entiers compris entre 0 et 31 correspondant aux positions occupées
par les lettres de la chaı̂ne dans l’alphabet.
:> code[mot_] :=
Map[Position[alphabet,#][[1,1]]-1 &, Characters[mot]]
Ainsi, si on considère le texte clair suivant,
:> texteclair = "le jour de ses onze ans, harry potter, un
orphelin eleve par un oncle et une tante qui le detestent,
voit son existence bouleversee.";
l’application de la fonction code donne
:> codetxclair = code[texteclair]
Out[]= {12, 5, 0, 10, 15, 21, 18, 0, 4, 5, 0, 19, 5, 19, 0, 15, 14,
26, 5, 0, 1, 14, 19, 27, 0, 8, 1, 18, 18, 25, 0, 16, 15, 20, 20, 5,
18, 27, 0, 21, 14, 0, 15, 18, 16, 8, 5, 12, 9, 14, 0, 5, 12, 5, 22,
5, 0, 16, 1, 18, 0, 21, 14, 0, 15, 14, 3, 12, 5, 0, 5, 20, 0, 21,
14, 5, 0, 20, 1, 14, 20, 5, 0, 17, 21, 9, 0, 12, 5, 0, 4, 5, 20, 5,
II.2. Implémentation et codage 57

19, 20, 5, 14, 20, 27, 0, 22, 15, 9, 20, 0, 19, 15, 14, 0, 5, 24, 9,
19, 20, 5, 14, 3, 5, 0, 2, 15, 21, 12, 5, 22, 5, 18, 19, 5, 5, 28}
Implémentons directement la fonction de décodage qui à une liste de nombres
associe une chaı̂ne de caractères.
:> decode[liste_] :=
StringJoin[
Table[alphabet[[liste[[i]] +1]], {i,1,Length[liste]}] ]
On pourra vérifier que decode[codetxclair] rend bien le texte initial. Con-
sidérons à présent la méthode de chiffrement par décalage de Jules César
introduite dans l’exemple II.1.3.
:> cesar[n_] := Mod[n+3,32]
:> codetxchiffre = cesar[codetxclair]
Out[]={15, 8, 3, 13, 18, 24, 21, 3, 7, 8, 3, 22, 8, 22, 3, 18, 17,
29, 8, 3, 4, 17, 22, 30, 3, 11, 4, 21, 21, 28, 3, 19, 18, 23, 23,
8, 21, 30, 3, 24, 17, 3, 18, 21, 19, 11, 8, 15, 12, 17, 3, 8, 15,
8, 25, 8, 3, 19, 4, 21, 3, 24, 17, 3, 18, 17, 6, 15, 8, 3, 8, 23,
3, 24, 17, 8, 3, 23, 4, 17, 23, 8, 3, 20, 24, 12, 3, 15, 8, 3, 7,
8, 23, 8, 22, 23, 8, 17, 23, 30, 3, 25, 18, 12, 23, 3, 22, 18, 17,
3, 8, 27, 12, 22, 23, 8, 17, 6, 8, 3, 5, 18, 24, 15, 8, 25, 8, 21,
22, 8, 8, 31}
Sous forme de texte, on obtient
:> txchiffre = decode[codetxchiffre]
Out[]= "ohcmrxucghcvhvcrq’hcdqv:[Link]:cxqcruskholqchohy
hcsducxqcrqfohchwcxqhcwdqwhctxlcohcghwhvwhqw:cyrlwcvrqch,lvw
hqfhcerxohyhuvhh?"
Plaçons-nous un instant dans la peau de l’opposant Oscar. Imaginons ne
pas savoir au moyen de quelle clé ce texte a été chiffré et supposons dis-
poser uniquement du texte chiffré (ou de manière équivalente, de la variable
codetxchiffre). En vertu du principe de Kerckhoff, nous supposons égale-
ment savoir que le texte a été chiffré par décalage. Pour la cryptanalyse du
texte (i.e., tenter de déterminer la clé secrète), on peut réaliser une analyse
de la fréquence des lettres apparaissant dans le texte de la manière suivante.
:> Map[Count[codetxchiffre,#] &, Table[i, {i,0,31}]]
Out[]={0, 0, 0, 23, 4, 1, 2, 2, 24, 0, 0, 2, 4, 1, 0, 6,
0, 11, 8, 3, 1, 7, 7, 10, 6, 3, 0, 1, 1, 1, 3, 1}
Cette analyse montre que la lettre la plus fréquemment rencontrée est la
huitième lettre de notre alphabet, i.e., le “h”. De là, puisque la lettre “e”
apparaı̂t le plus souvent en français (cf. table II.2), on peut penser que
le cryptosystème employé remplace “e” par “h” et de là, on retrouve la clé
secrète 3.
Remarque II.2.1. A titre indicatif, voici la table des fréquences d’apparition
des différentes lettres apparaissant dans les textes écrits en français.
58 Chapitre II. Cryptographie

lettre %
e 15,87
a 9,42
i 8,41
s 7,90
t 7,26
n 7,15
r 6,46
u 6,24
l 5,34
Table II.2. Fréquence d’apparition des lettres en français.

On peut considérer comme unité fondamentale pour réaliser le codage


d’une chaı̂ne de caractères, non pas une simple lettre, mais un bloc de m
lettres consécutives (ou de manière équivalente, m entiers). Un bloc t 1 · · · tm
de m ≥ 1 entiers consécutifs, tous inférieurs à 32, représente un nombre n
écrit en base 32,
Xm
n= tj 32m−j .
j=1
Ce bloc de longueur m représente donc un nombre 0 ≤ n ≤ 32 m − 1. Ainsi,
une méthode alternative pour le codage d’un texte clair, revient à considérer
m lettres consécutives et à en calculer la valeur correspondante. Avec notre
définition II.1.1, P = C est maintenant égal à Z 32m et non plus Z32 .
Remarque II.2.2. Utiliser un codage dans lequel on considère des blocs de
m éléments augmente la sécurité du cryptosystème. En effet, sur notre ex-
emple, l’espace des clés passe de K = Z 32 à K = Z32m . Puisque le nombre de
clés augmente, une recherche exhaustive menée par Oscar et qui consisterait
à passer en revue l’ensemble de toutes les clés possibles jusqu’à l’obtention
d’un texte clair raisonnable prendrait beaucoup plus de temps (si m = 5,
325 ' 33 × 106 et en testant 1000 clés par seconde, il faudrait à Oscar un
peu plus de 9 heures pour parcourir l’espace des clés).
Si nous découpons le texte clair en tronçons de longueur m, il faudrait
que ce texte soit de longueur divisible par m. S’il ne l’était pas, on ajouterait 3
au préalable des symboles à la fin du texte pour que sa longueur soit divisible
par m. Cette première fonction est réalisée par ajout qui prend comme
arguments une liste d’entiers et un entier m et renvoie une liste d’entiers
3Par facilité, c’est la méthode que nous décidons d’employer ici. Attirons néanmoins
l’attention du lecteur sur le fait qu’un tel choix peut mettre en péril la sécurité du cryp-
tosystème. En effet, si Oscar connaı̂t cette convention (et on ne peut pas supposer qu’il ne
la connaisse pas), alors cette information pourrait lui permettre d’obtenir des renseigne-
ments sur la clé choisie k.
II.2. Implémentation et codage 59

éventuellement complétée par des zéros pour que sa longueur soit divisible
par m.
:> ajout[liste_,m_] :=
PadRight[liste, Length[liste]+Mod[-Length[liste],m]]
Notre texte clair est de longueur 132. En effet, on a
:> Length[codetxclair]
Out[] = 132
Ce nombre n’est pas divisible par 5. Appliquons alors notre nouvelle fonction
et remplaçons directement notre codage du texte clair.
:> codetxclair = ajout[codetxclair,5]
Out[] = {12, 5, 0, 10, 15, 21, 18, 0, 4, 5, ...
... , 21, 12, 5, 22, 5, 18, 19, 5, 5, 28, 0, 0, 0}
Trois zéros ont donc bien été ajoutés à la fin de notre liste. Nous pouvons
à présent considérer un bloc de m entiers comme la représentation en base
32 d’un entier. Pour ce faire, utilisons la fonction suivante.
:> codebloc[liste_,m_] :=
Map[FromDigits[#,32] &, Partition[liste,m]]
Ainsi, chaque suite de 5 entiers est remplacée par la valeur qu’elle représente
en base 32.
:> codetxclair = codebloc[codetxclair,5]
Out[] = {12747087, 22610053, 628320, 16214176, 1527648, 8440409,
540308, 5860373, 14696016, 8565038, 176310, 5259314, 702479,
14790816, 5898926, 5263406, 21135925, 9449632, 4378803,
21150363, 736564, 638400, 6039156, 5704864, 2610565, 23251557,
6160384}
Par exemple, 12.324 +5.323 +0.322 +10.32+15 = 12747087. Implémentons
directement une fonction de décodage qui, à une liste d’entiers compris entre
0 et 32m − 1, fournit une chaı̂ne de caractères (m caractères sont fournis par
entier).
:> decodebloc[liste_,m_] :=
decode[Flatten[Map[IntegerDigits[#,32,m] &, liste]]]
On peut vérifier que cette fonction rend bien le texte clair lorsqu’on l’applique
à codetxclair. Pour procéder à un chiffrement semblable au chiffrement de
César, nous avons ici la possibilité de translater par une constante k < 32 m et
nous travaillons bien évidemment modulo 32 m (sur notre exemple, m = 5).
Par exemple, on a
:> codetxchiffre = Mod[codetxclair+12345678, 32^5]
Out[] = {25092765, 1401299, 12973998, 28559854, 13873326,
20786087,12885986, 18206051, 27041694, 20910716, 12521988,
17604992, 13048157, 27136494, 18244604, 17609084, 33481603,
21795310, 16724481, 33496041, 13082242, 12984078, 18384834,
18050542, 14956243, 2042803, 18506062}
60 Chapitre II. Cryptographie

code[mot] chaı̂ne de longueur n


7→ liste de n éléments de Z32
decode[liste] liste de n éléments de Z 32
7→ chaı̂ne de longueur n
ajout[liste,m] liste quelconque
7→ liste de longueur divisible par m
codebloc[liste,m] liste de n.m éléments de Z 32
7→ liste de n éléments de Z32m
decodebloc[liste,m] liste de n éléments de Z 32m
7→ chaı̂ne de longueur n.m.
Table II.3. Fonctions implémentées.

Ceci donne sous forme d’une chaı̂ne de caractères chiffrée, le résultat suivant.
:> decodebloc[codetxchiffre, 5]
Out[]= "w’xt’ajxnslk’’n,gronmglenszj’glig?bqkskcyyg.:s:ds.k:dpd
pyhl lnfj’[Link]?.pylk.?’[Link]:lpa?:f?ilogtbllgxnqqa:bq
f,onnhmvsa:j’sqtxjn"
Pour que Bob puisse retrouver le texte original, il lui suffit d’effectuer
:> decodebloc[Mod[codetxchiffre-12345678, 32^5],5]
Cette méthode consistant à considérer des blocs de m lettres comme unité
de base, ne modifie en rien les techniques employées (par exemple ici, le
chiffrement par décalage). La sécurité du cryptosystème est “artificiellement”
augmentée simplement parce qu’on a à sa disposition 32 m clés de longueur
m au lieu des 32 clés initiales. Pour cette simple raison, la cryptanalyse est
dès lors plus délicate (il est bien plus long et difficile de deviner la clé.). Par
exemple, dans la première version (m = 1), chaque “e” du texte clair était
remplacé par un “h”, alors qu’ici, des “e” différents peuvent être remplacés
par des lettres différentes lorsqu’ils se trouvent dans des blocs distincts de
longueur m. Néanmoins, un bloc donné x 1 · · · xm ∈ P = Z32m est toujours
transformé en un même bloc ek (x1 · · · xm ). Pour cette raison, on parle de
cryptosystème monoalphabétique.

En résumé, dans les autres sections de ce chapitre, nous supposerons


disposer des cinq fonctions suivantes reprise à la table II.3.

3. Quelques cryptosystèmes classiques


3.1. Chiffrement par substitution. Si P = C = Z 32 (on pourrait
sans aucune restriction considérer d’autres ensembles de textes clairs et
chiffrés), alors K est l’ensemble des permutations de {0, . . . , 31}, i.e.,
K = {ν ∈ S32 | ν : Z32 → Z32 bijection}.
II.3. Quelques cryptosystèmes classiques 61

Par rapport au chiffrement par décalage, le chiffrement par substitution


présente l’avantage que #K est grand : ici, 32! ' 2, 6 × 10 35 . Les fonctions
de chiffrement et déchiffrement sont pour la clé k = ν,
ek (x) = ν(x) et dk (y) = ν −1 (y).
Exemple II.3.1. Considérons la permutation suivante
a b c d e f g h i j k l m n o
e : d k , l p n q x f s z . u
p q r s t u v w x y z , . ’ : ?
’ a c i g ? t v o y w r b m j h
Il est facile de voir que le texte clair :
le jour de ses onze ans, harry potter, un orphelin eleve par
un oncle et une tante qui le detestent, voit son existence
bouleversee.
est chiffré en
slexu?ce,[Link]:.i,e :ccye’ugglc,e?.euc’ [Link]’:c
e?.[Link]?.leg:.glea?qesle,lgligl.g,[Link]
edu?sltlcillb
Bien que le nombre de clés disponibles soit important, ce cryptosystème
peut être aisément cassé en effectuant une analyse des fréquences. On peut
non seulement rechercher les lettres apparaissant le plus souvent, mais aussi
les couples ou les triplets. De là, il est aisé de retrouver le texte clair. Ce
cryptosystème ne peut dès lors être considéré comme sûr et son seul intérêt
réside dans les cryptogrammes que l’on trouve dans les livres de jeux.
3.2. Chiffrement affin. Prenons P = C = Z n . Soient a et b appar-
tenant à Zn avec a inversible dans Zn (i.e., pgcd(a, n) = 1). Ainsi, on a
K = {(a, b) | a ∈ Z∗n , b ∈ Zn }
et pour une clé k = (a, b) choisie dans K, on a
ek (x) = ax + b mod n et dk (y) = a−1 (y − b) mod n.
Il faut prendre a inversible pour que la fonction e k soit injective. Le nombre
de clés est bien évidemment n ϕ(n). Avec les fonctions dont nous disposons,
le chiffrement affin est très simple à mettre en oeuvre.
Exemple II.3.2. Dans Mathematica, considérons le texte suivant.
:> texteclair = "ving minutes plus tard, harry sortit du magasin
de hiboux avec une grande cage a l’interieur de laquelle
une magnifique chouette aux plumes blanches comme la neige
dormait paisiblement.";
Pour chiffrer ce texte, on peut procéder comme suit (ici k = (13, 8)),
62 Chapitre II. Cryptographie

:> decode[Mod[13 code[texteclair]+8, 32]]


Out[]= "f’:chq’:yli?hxdy?[Link]?krl’[Link]?’:[Link]’bk
y hufiohy:ihcru:.ihoucihuhda’:lir’[Link]:ihquc:’v
’eyihopkyillihuy hxdyqi?hbdu:opi?hokqqihduh:i’[Link]’lhxu’
?’bdiqi:lt"
Le chiffrement affin étant un cas particulier de chiffrement par substi-
tution, on réalise sa cryptanalyse en recourant à des méthodes d’analyse
statistique des fréquences d’apparition des lettres.
3.3. Chiffrement de Vigenère. Les chiffrements par décalage, par
substitution et affin sont des exemples de systèmes monoalphabétiques. En
effet, la fonction de chiffrement ek s’applique à un seul élément de P à la fois
(le plus souvent une lettre ou de manière équivalente un élément de Z 32 ) et à
chaque élément de P est appliquée la même fonction de chiffrement. Même
lorsqu’on a considéré un bloc de m symboles consécutifs, il s’agissait une fois
encore d’un système monoalphabétique car dans ce cas, l’ensemble P était
Z32m et la fonction de chiffrement s’appliquait toujours à un unique élément
de P à la fois. Le chiffrement de Vigenère 4 est polyalphabétique car il traite
m symboles simultanément. Il s’agit en quelque sorte de m chiffrements par
décalage. Ici,
P = C = K = (Z32 )m ,
si k = (k1 , . . . , km ) ∈ (Z32 )m , alors
ek (x1 , . . . , xm ) = (x1 + k1 , . . . , xm + km ) mod 32
et
dk (y1 , . . . , ym ) = (y1 − k1 , . . . , ym − km ) mod 32.
On peut convenir que pour chiffrer une suite de longueur rm + s constituée
de r m-uples d’éléments de Z32 suivie d’un s-uple d’éléments de Z 32 avec
0 ≤ s < m,
x = x1 · · · xm | · · · | x(r−1)m+1 · · · xrm | xrm+1 · · · xrm+s ,
on calculera
y = (x1 + k1 ) · · · (xm + km ) | · · · | (x(r−1)m+1 + k1 ) · · · (xrm + km ) |
(xrm+1 + k1 ) · · · (xrm+s + ks ) mod 32.
Exemple II.3.3. L’implémentation est presque immédiate.
:> codetxclair = code[texteclair]
Out[] = {22, 9, 14, 7, 0, 13, 9, 14, 21, 20, ...}

:> vigenere[liste_,cle_] :=
Mod[liste+PadRight[cle,Length[liste],cle],32]

:> codetxchiffre = vigenere[codetxclair,{10,8,20}]


4Blaise de Vigenère, XVIè siècle.
II.3. Quelques cryptosystèmes classiques 63

Out[] = {0, 17, 2, 17, 8, 1, 19, 22, 9, 30, ...}


:> decode[codetxchiffre]
Out[] = "qbqhasvi:mgjx ?,t:[Link]’twi,k,’[Link]? t
k:ymhixmtqzuxlyjkuqmtkh gqb:[Link] kyiot ohixmtwi,xqzsyiohwrw
[Link]? tztiwmgjj [Link]’’qvvmaovhf"
Pour le déchiffrement, c’est immédiat !
:> vigenere[codetxchiffre, -{10,8,20}]
Out[] = {22, 9, 14, 7, 0, 13, 9, 14, 21, 20, ...}
Dans le chiffrement de Vigenère, un même symbole peut être transformé
en m symboles distincts suivant la position qu’occupe ce symbole dans un
m-uple donné.
Nous ne parlerons pas de la cryptanalyse du chiffrement de Vigenère.
Celle-ci peut être réalisée assez facilement (test de Kasiski ou utilisation
d’un indice de coı̈ncidence) et n’apporte pas d’arguments utiles à la suite de
notre exposé.
3.4. Chiffrement de Hill. Tout comme dans l’exemple précédent, le
chiffrement de Hill5 est un cryptosystème polyalphabétique. On prend P =
C = (Z32 )m et l’espace des clés est
K = GLm (Z32 ),
l’ensemble des matrices inversibles à coefficients dans Z 32 . Il est clair qu’on
peut une fois encore remplacer Z32 par un Zn quelconque. Il faudra cepen-
dant au lecteur une certaine dose de courage (voire une dose certaine), pour
aller relire les développements réalisés dans le cours d’algèbre linéaire (calcul
matriciel) et pour remarquer que les propriétés que nous utiliserons dans Z n
ne font intervenir que des notions telles que linéarité du déterminant, défi-
nition du produit matriciel, existence éventuelle d’un inverse, etc. . . et sont
donc transposables à un anneau quelconque, comme par exemple Z n .
La proprosition suivante montre qu’il faut perdre le reflexe habituel ac-
quis sur un champ comme R ou C.
Proposition II.3.4. Une matrice carrée A à coefficients dans Z n est in-
versible, i.e., il existe B tel AB = BA = I, si et seulement si son détermi-
nant est inversible dans Zn .
Démonstration. Il est bien connu (règle des mineurs) que
^ = det A I = cof(A)
A cof(A) ^ A

où cof(A) désigne la matrice des cofacteurs (ou mineurs algébriques) de A.


Cette proposition est classiquement démontrée sur R ou sur C et s’étend
aisément à Zn . Ainsi, si det A est inversible, l’inverse de A est donné par
^
(det A)−1 cof(A).
5Lester S. Hill (1929).
64 Chapitre II. Cryptographie

Réciproquement, si A est inversible et d’inverse A −1 , alors


1 = det(AA−1 ) = det A det A−1
ce qui montre que det A est inversible.


Remarque II.3.5. Pour que le chiffrement soit réalisable, il suffit d’observer


que la matrice A détermine une bijection x 7→ Ax de (Z n )m dans lui-même
si et seulement si A est inversible.
Supposons A inversible. Pour tous x, y tels que Ax = Ay, en multipliant
par A−1 , on trouve x = y et l’application est donc injective. Elle est aussi
surjective: pour tout y ∈ (Zn )m , x = A−1 y est tel que Ax = y.
Passons à la réciproque. Puisque l’application x 7→ Ax est en particulier
surjective, pour tout vecteur unitaire e i , i = 1, . . . , m, il existe un vecteur
colonne Ci tel que ACi = ei . De là, la matrice dont les colonnes sont
C1 , . . . , Cm est inverse de A.
Ainsi, si A n’est pas inversible, alors l’application x 7→ Ax n’est ni
injective ni surjective (car (Zn )m étant fini, elle est injective si et seulement
si elle est surjective). Dès lors, il existe des vecteurs x, y ∈ (Z n )m distincts
tels que Ax = Ay. Ceci est bien évidemment problématique, des textes
clairs distincts ne peuvent pas avoir même chiffrement.
Si la clé choisie est k = (aij ) ∈ GLm (Z32 ), la fonction de chiffrement
ek : Z m m
32 → Z32 : (x1 , . . . , xm ) 7→ (y1 , . . . , ym ) est donnée par
    
y1 a11 · · · a1m x1
 ..   .. .
..   ... 
 
 . = . .
ym am1 · · · amm xm
Appliquons ce chiffrement à l’exemple suivant.
Exemple II.3.6. Voici tout d’abord les données.
:> code[texteclair]="le phenix sur lequel a ete preleve la plume
qui se trouve dans votre baguette a egalement fourni une autre
plume a une autre baguette."

:> a= {{5,17}, {4,21}};


Ainsi, la matrice A réalisant le chiffrement de Hill est
 
5 17
A= .
4 21
Nous décidons de couper le texte clair en tronçon de longueur 2 et ajoutons
éventuellement des zéros à la fin.
:> codetxclair = ajout[code[texteclair],2]
Out[] = {12, 5, 0, 16, 8, 5, 14, 9, 24, 0, ...}
et pour le chiffrement de Hill, on procède comme suit.
II.3. Quelques cryptosystèmes classiques 65

:> hill[a_,liste_] :=
Flatten[Map[Mod[a.#,32] &, Partition[liste, Length[a]]]]
:> codetxchiffre = hill[a, codetxclair]
Out[] = {17, 25, 16, 16, 29, 9, 31, 21, 24, 0, 4, 5, 26, ...}
Pour le déchiffrement, il suffit de connaı̂tre l’inverse de A.
:> Inverse[a, Modulus -> 32]
Out[] = {{17,3}, {12,1}}
Pour trouver cet inverse manuellement, on calcule le déterminant de A,
det A = 5, son inverse modulo 32 grâce à l’algorithme d’Euclide étendu,
(det A)−1 = 13 et enfin, la matrice des cofacteurs transposée,
 
] 21 −17
cof A = .
−4 5
On trouve, 13.21 = 273 ≡ 17 mod 32, 13.(−17) = −221 ≡ 3 mod 32,
13.(−4) = −52 ≡ 12 mod 32 et 13.5 = 65 ≡ 1 mod 32.
:> hill[Inverse[a,Modulus -> 32], codetxchiffre]
Out[] = {12, 5, 0, 16, 8, 5, 14, 9, 24, 0, 19, 21, ...}
Pour la cryptanalyse de ce chiffrement, envisageons uniquement le cas où
un texte clair de longueur m2 est connu. Si Oscar connaı̂t la valeur m = 2,
le texte clair 12, 5, 0, 16 et le texte chiffré correspondant 17, 25, 16, 16, alors
il en déduit que    
12 0 17 16
A = .
5 16 25 16
Ici, pas de chance pour Oscar car la matrice du membre de gauche n’est pas
inversible. Son déterminant vaut 0 et n’est pas premier avec 32. Oscar doit
construire une matrice inversible dont les colonnes correspondent à des cou-
ples de texte clair lorsque ce dernier est décomposé en m-uples consécutifs.
On peut par exemple prendre pour premier couple (12, 5) correspondant au
texte chiffré (17, 25) et comme second couple (19, 21) qui correspond à (4, 5)
   
12 19 17 4
A = .
5 21 25 5
Puisque
    −1
12 19 17 4 12 19
det ≡ 29 mod 32, A=
5 21 25 5 5 21
et Oscar retrouve A.
Remarque II.3.7. Le chiffrement par permutation est un cas particulier
du chiffrement de Hill. On considère comme matrice pour le chiffrement, une
matrice de permutation6 P de dimension m. Le chiffrement de Hill revient
alors à permuter les lettres d’un même m-uple au moyen de la permutation
définie par P .
6Rappelons qu’une telle matrice possède exactement un 1 sur chaque ligne et sur
chaque colonne.
66 Chapitre II. Cryptographie

Exemple II.3.8. Considérons la matrice de permutation


:> p = {{0,1,0}, {0,0,1}, {1,0,0}}
    
0 1 0 a b
0 0 1   b  =  c 
1 0 0 c a
et dès lors,
:> decode[hill[p, codetxclair]]
Out[] = "e lhepixnsu lrquel e eae trepevl le pauml qei ue sro
tveuda s notve ragbetue t eaalgmeet noufnirun aetru peuml aeu
n aetru beguatte"
3.5. Chiffrement par flot ou en chaı̂ne. Dans ce type de chiffre-
ment, on génère une suite de clés z = z 1 z2 · · · utilisées successivement
pour chiffrer une suite x = x1 x2 · · · . Commençons par un exemple. Soient
P = C = K = Z32 . Pour chiffrer
x = x 1 x2 x3 · · · , ∀i ≥ 1, xi ∈ P
avec une clé k fixée initialement, on procède comme suit :
y = (x1 + k)(x2 + x1 )(x3 + x2 ) · · · mod 32
ce qui revient à ajouter à la suite x, la suite décalée d’une unité vers la
droite.
Exemple II.3.9. Nous utilisons une fois encore nos conventions habituelles
et choisissons la clé k = 5.
:> texteclair = "essayer un chapeau valait beaucoup mieux que
d’etre oblige de jeter un sort, mais il aurait prefere ne
pas avoir a le faire devant tout le monde."
:> codetxclair = code[texteclair]
Out[] = {5, 19, 19, 1, 25, 5, 18, 0, 21, 14, 0, 3, 8, 1, ...}

:> flot[liste_,k_] := Mod[ Drop[Prepend[liste,k],-1]+liste, 32]


:> flot[codetxclair,5]
Out[] = {10, 24, 6, 20, 26, 30, 23, 18, 21, 3, 14, 3, 11, 9, ...}
:> decode[%]
Out[] = "jxftz:wrucnckiqufvuvwmmj’tbgfvxrdepmvnzmxqfzedabyfwe
[Link]’tpbwkkwwensepqtsawex
,raalqefgj,wedi,wobttcditlqem.’ria"
En effet, on obtient en recopiant et décalant :
5 19 19 1 25 5 18 0 21 14 0 3 8 1 · · ·
5 5 19 19 1 25 5 18 0 21 14 0 3 8 · · ·
10 24 6 20 26 30 23 18 21 3 14 3 11 9 · · ·
Nous reviendrons par après sur d’autres exemples de chiffrements par
flot mais donnons-en une définition formelle.
II.4. Le chiffrement DES 67

Définition II.3.10. Un chiffrement par flot est un quintuple (P, C, K, L, F)


où P, C, K sont définis comme dans le cas des chiffrements classiques,
I L est un ensemble fini, appelé alphabet du flot de clés (keystream
alphabet),
I F est une suite de fonctions (fn )n≥1 , appelée générateur du flot de
clés et telle que pour tout n ≥ 1,
fn : K × P n−1 → L,
I pour tout z ∈ L, il existe une fonction de chiffrement e z telle que
ez : P → C et une fonction de déchiffrement d z telle que dz : C → P
et dz (ez (x)) = x pour tout x ∈ P.
A une suite x = x1 x2 x3 · · · d’éléments de P et à une clé k ∈ K, corre-
spond une unique suite de fonctions F = (f 1 , f2 , f3 , . . .). Chaque fonction fn
donne un élément zn appartenant à l’ensemble fini L et à ce z n , il correspond
deux fonctions ezn et dzn . Le chiffrement de x est alors
ez1 (x1 )ez2 (x2 )ez3 (x3 ) · · ·
Remarque II.3.11. Dans cette définition, on voit que le n-ième élément
du flot de clé dépend de la clé k ∈ K choisie et des n − 1 éléments de texte
clair lus précédemment.
Exemple II.3.12. Dans l’exemple précédent et avec les notations de la
définition, ez1 (x1 ) = x1 + k (mod 32) et pour n > 1, ezn (xn ) = xn + xn−1
(mod 32). Il s’agit donc d’un cas très particulier de chiffrement par flot.
La clé k ∈ K n’est utilisée que dans la fonction de chiffrement e z1 et pour
tout n > 1, la fonction de chiffrement e zn est entièrement déterminée par
un seul élément de texte clair xn−1 . En toute généralité, un chiffrement par
flot admet plus de souplesse.
Définition II.3.13. Un chiffrement en chaı̂ne est dit synchrone si la suite
de clés (zn )n≥1 est indépendante du texte clair. L’exemple II.3.9 n’est pas
synchrone. Un chiffrement est dit (ultimement) périodique si la suite (z n )n≥1
est (ultimement) périodique, i.e., s’il existe N, p ≥ 1 tels que z n = zn+p pour
tout n ≥ N .

4. Le chiffrement DES
Tous les chiffrements rencontrés jusqu’à présent sont à clé secrète (ou
privée), i.e., la sécurité du système réside dans la non-divulgation de la clé
k ∈ K choisie. Ces systèmes sont tous peu sûrs car, comme nous l’avons vu,
ils peuvent être aisément cryptanalysés. Dans cette section, nous présentons
un cryptosystème à clé secrète considéré jusqu’il y a peu comme sûr et utilisé
en pratique (ou alors, l’une de ses variantes plus récentes). Il s’agit du DES
(Data Encryption Standard) développé initialement par IBM comme une
variante de LUCIFER. Ce système a été officiellement publié en 1977 et
68 Chapitre II. Cryptographie

aujourd’hui, on emploie généralement des variantes du système initial (par


exemple, des banques ou des ministères américains).
Les cryptosystèmes à clé secrète comme le chiffrement par décalage, par
substitution, de Hill ou encore de Vigenère sont idempotents. Cela signifie
que composer successivement deux cryptosystèmes du même type, par ex-
emple deux chiffrements par décalage de clés k et `, est encore un chiffrement
de même type, par exemple un chiffrement par décalage de clé k + `. Si un
cryptosystème est idempotent, il n’y a donc aucun intérêt à l’itérer (on a
besoin de plus de clés mais cela n’apporte aucune sécurité supplémentaire).
DES, quant à lui, n’est pas idempotent (on le construit sur le produit
de deux systèmes qui ne commutent pas 7, le produit de deux cryptosystèmes
consistant à composer successivement les deux chiffrements). La sécurité est
dès lors augmentée en l’itérant plusieurs fois. Ici, nous l’itérerons 16 fois.
Brossons rapidement son fonctionnement.
On construit une clé secrète k comme suit. Tout d’abord, on détermine
une suite aléatoire s de 56 bits, i.e., un élément de s = s 1 · · · s56 ∈ {0, 1}56 .
On définit alors une suite de 64 bits k = k 1 · · · k64 de la manière suivante,
k1 , . . . , k7 , k9 , . . . , k15 , . . . , k57 , . . . , k63 = s1 , . . . , s56
et
8
X
∀j ∈ {0, . . . , 7}, kj8+i ≡ 1 mod 2.
i=1
Cette dernière condition stipule simplement que la somme de 8 bits consécu-
tifs est toujours impaire (cela permet donc de détecter une éventuelle erreur
dans le stockage ou le transfert d’une clé, on parle souvent de bit de parité).
Ces 8 bits ajoutés aux 56 bits de départ ne jouent pas de rôle dans la suite.
On considère un texte clair de 64 bits x = x 1 · · · x64 ∈ {0, 1}64 . On lui
applique initialement une permutation ν de {1, . . . , 64} donnée par
58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
Ainsi, on considère ν(x) = xν(1) · · · xν(64) = x58 x50 · · · x7 . Ce mot ν(x) est
divisé en deux mots de longueur 32,
 
ν(x) = L0 R0 = xν(1) · · · xν(32) xν(33) · · · xν(64) .
Connaissant Ln et Rn (n ≥ 0), on calcule Ln+1 et Rn+1 comme suit
(3) Ln+1 = Rn
et
(4) Rn+1 = Ln ⊕ f (Rn , Kn+1 )
7Si S et T sont idempotents et commutent, alors S ◦ T est aussi idempotent. En effet,
(S ◦ T ) ◦ (S ◦ T ) = S ◦ (T ◦ S) ◦ T = S ◦ (S ◦ T ) ◦ T = (S ◦ S) ◦ (T ◦ T ) = S ◦ T .
II.4. Le chiffrement DES 69

où ⊕ représente le “ou-exclusif”, autrement dit l’addition bit à bit modulo


2, i.e.,
x y x⊕y
0 0 0
0 1 1
1 0 1
1 1 0
On peut dès lors calculer de proche en proche les L n et Rn jusqu’à obtenir
le mot L16 R16 auquel on applique la permutation ν −1 . Le chiffrement de x
est y = ν −1 (L16 R16 ). On dit qu’on applique le DES en seize tours.
Il nous faut encore expliciter comment obtenir les clés K 1 , . . . , K16 (pro-
cessus de diversification des clés) et aussi définir la fonction f . On définit
d’abord K0 . On l’obtient à partir de k en sélectionnant dans l’ordre les bits
(on ne prend pas en compte ici les bits de parité k j8 , j = 1, . . . , 8) de k en
suivant la permutation ci-dessous
57 49 41 33 25 17 9 1 58 50 42 34 26 18
10 2 59 51 43 35 27 19 11 3 60 52 44 36
pour former une chaı̂ne de longueur 28
C0 = k57 k49 · · · k44 k36
et aussi la permutation
63 55 47 39 31 23 15 7 62 54 46 38 30 22
14 6 61 53 45 37 29 21 13 5 28 20 12 4
pour former une seconde chaı̂ne de longueur 28
D0 = k63 k55 · · · k12 k4 .
Ainsi, K0 = C0 D0 . Pour construire Kn+1 , n ≥ 0, on procède en deux
étapes. Tout d’abord, disposant de C n et Dn , on construit Cn+1 et Dn+1 en
effectuant une permutation circulaire d’une ou de deux unités vers la gauche
sur Cn et Dn de la manière suivante
n+1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# permut. 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Ainsi,
C1 = k49 k41 · · · k44 k36 k57 , C2 = k41 · · · k44 k36 k57 k49 , . . .
et
D1 = k55 k47 · · · k12 k4 k63 , D2 = k47 · · · k12 k4 k63 k55 , . . . .
Connaissant Cn et Dn , n ≥ 1, on obtient Kn en sélectionnant 48 des 56 bits
de Cn Dn dans l’ordre suivant
14 17 11 24 1 5 3 28 15 6 21 10
23 19 12 4 26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40 51 45 33 48
44 49 39 56 34 53 46 42 50 36 29 32
70 Chapitre II. Cryptographie

Passons à la définition de f . Rappelons que f prend comme argument


un bloc Rn de 32 bits et une clé Kn+1 de 48 bits (cette dernière ne dépend
que de la clé k) pour produire un bloc de 32 bits.
On remplace Rn par un bloc Rn0 de 48 bits en recopiant certains des bits
de Rn plusieurs fois de la manière suivante (on parle de l’expansion de R n )
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Ainsi, si Rn est de la forme r1 r2 · · · r32 , on obtient la suite
Rn0 = r32 r1 r2 r3 r4 r5 r4 r5 · · · r31 r32 r1 .
On additionne à présent bit à bit R n0 et Kn+1 modulo 2 pour obtenir B et
cette suite est alors découpée en 8 blocs de 6 bits, i.e.,
B = Rn0 ⊕ Kn+1 = b1 · · · b6 b7 · · · b12 · · · b43 · · · b48 .
| {z } | {z } | {z }
B1 B2 B8
Il nous faut maintenant transformer chacun de ces 8 blocs en 8 nouveaux
blocs Bi0 de longueur 4. La valeur de la fonction f est alors une permutation
de B10 · · · B80 qui est bien de longueur 32, on a
µ(B10 · · · B80 ).
La transformation de Bi en Bi0 est réalisée au moyen d’une table S i . Con-
sidérons tout d’abord la table S1 .
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
S1 :
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
On l’utilise comme suit pour calculer B 10 à partir de B1 = b1 b2 b3 b4 b5 b6 . Le
mot b1 b6 (resp. b2 b3 b4 b5 ) représente un entier 0 ≤ x ≤ 3 (resp. 0 ≤ y ≤
15) écrit en base 2. Dans le tableau S 1 , on considère l’élément (S1 )x,y se
trouvant à la ligne x et à la colonne y. La représentation binaire de (S 1 )x,y
(éventuellement complétée par des zéros de tête pour obtenir un mot de
longueur 4) est alors B10 . On procède de manière semblable pour B 20 , . . . , B80
avec les tables données ci-après. La dernière table reprend la permutation
µ.
II.4. Le chiffrement DES 71

Exemple II.4.1. Soit B1 = 100101. Le mot b1 b6 = 11 (resp. b2 b3 b4 b5 =


0010) correspond à x = 3 (resp. y = 2). Dans la table S 1 , cela correspond8
à l’élément 8 dont la représentation binaire est 0100 qui est B 10 .
Ceci termine la définition de DES. Notons que les tables S sont souvent
appelées S-boxes (ou substitution-boxes) et sont vitales pour la sécurité de
DES car elles constituent des composantes non linéaires du cryptosystème.
En effet, aucune des boı̂tes n’est une fonction linéaire ou affine. Certaines
personnes ont même imaginé que ces boı̂tes pouvaient cacher des “trappes”
permettant à la National Security Agency de déchiffrer des messages tout
en affirmant que le DES était “sûr”.
Un avantage certain du DES est sa rapidité. En effet, l’implémentation
du cryptosystème peut être réalisée de manière efficace logiciellement ou
physiquement sur des circuits électroniques élémentaires à faible coût pou-
vant par exemple être placés sur une carte de crédit. Comparé aux cryp-
tosystèmes à clé publique comme le RSA dont nous parlerons au chapitre
suivant, la rapidité de DES est indéniable.
La critique principale faite à DES réside dans son espace des clés de taille
2 ' 7, 2 × 1016 jugée trop petite. En effet, en 1993, on estimait pouvoir
56

construire une puce capable de tester 5 × 10 7 clés par seconde pour un coût
proche de 8 euros. Ainsi, en regroupant un grand nombre de telles puces,
on pourrait trouver la clé secrète en quelques heures. On pourrait aussi
imaginer une recherche réalisée à grande échelle par des milliers d’ordinateurs
partagés sur internet. Il ne faut pas sous-estimer l’acharnement d’Oscar (par
exemple, si le chiffrement concerne des transferts bancaires aux montants
astronomiques, des secrets d’états ou industriels, des plans militaires, etc...)
Les sept autres S-boxes sont données ci-dessous.

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
S2 :
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
S3 :
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
S4 :
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
8Les lignes sont numérotées de 0 à 3 et les colonnes de 0 à 15.
72 Chapitre II. Cryptographie

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
S5 :
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
S6 :
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
S7 :
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
S8 :
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
et la permutation µ
16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10
µ:
2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25

Notons pour conclure que, pour le déchiffrement, les équations (3) et (4) se
réécrivent
Rn = Ln+1
et
Ln = Rn+1 ⊕ f (Ln+1 , Kn+1 ).
De là, connaissant L16 et R16 , on peut retrouver L0 et R0 .
Exemple II.4.2. Considérons le premier tour d’un chiffrement par DES.
Soit la clé k qui, avec les bits de parité, est stockée en hexadécimal 9 par
133457799BBCDFF1
9Remarquons que 264 = 1616 . Ainsi, chaque chiffre en base 16 fournit quatre chiffres
en base 2.
II.4. Le chiffrement DES 73

et en binaire
13 0 0 0 1 0 0 1 1
34 0 0 1 1 0 1 0 0
57 0 1 0 1 0 1 1 1
79 0 1 1 1 1 0 0 1
9B 1 0 0 1 1 0 1 1
BC 1 0 1 1 1 1 0 0
DF 1 1 0 1 1 1 1 1
F1 1 1 1 1 0 0 0 1
On ne considèrera pas la dernière colonne formée des bits de parité. On a
C0 = k57 k49 · · · k44 k36 = 1111000011001100101010101111
et
D0 = k63 k55 · · · k12 k4 = 0101010101100110011110001111.
En permutant d’une unité vers la gauche, on obtient
C1 = 1110000110011001010101011111
et
D1 = 1010101011001100111100011110.
De là, on construit la clé K1 en sélectionnant 48 des 56 bits de C 1 D1 ,
K1 = 000110110000001011101111111111000111000001110010.
Considérons le texte clair écrit en hexadécimal
x = 0123456789ABCDEF
et en binaire
x = 0000000100100011010001010110011110001001101010111100110111101111.
On lui applique la permutation ν pour obtenir L 0 et R0 ,

| {z } |11110000101010101111000010101010
ν(x) = 11001100000000001100110011111111 {z }.
L0 R0
Il vient
L1 = R0 = 11110000101010101111000010101010
et
R1 = L0 ⊕ f (R0 , K1 ).
On étend d’abord R0 de longueur 32 en R00 de longueur 48 et on obtient
R00 = 011110100001010101010101011110100001010101010101.
Ensuite, on calcule
B = R00 ⊕ K1 = 011000
| {z } 010001
| {z } 011110
| {z } 111010
| {z } 100001
| {z } 100110
| {z } 010100
| {z } 100111
| {z } .
b1 b2 b3 b4 b5 b6 b7 b8
74 Chapitre II. Cryptographie

En regardant le contenu des 8 S-boxes, on peut calculer la valeur de f . Tout


d’abord, les S-boxes donnent

| {z } 1100
0101 | {z } 1000
| {z } 0010
| {z } 1011
| {z } 0101
| {z } 1001
| {z } 0111
| {z }
b01 b02 b03 b04 b05 b06 b07 b08

et enfin,
f (R0 , K1 ) = µ(b01 b02 b03 b04 b05 b06 b07 b08 ) = 00100011010010101010100110111011
et
R1 = L0 ⊕ f (R0 , K1 ) = 11101111010010100110010101000100.
Ceci achève un tour de DES ! L’implémentation Mathematica est donnée
ci-dessous (il serait illusoire de réaliser tous ces calculs à la main).
:> k=IntegerDigits[16^^133457799bbcdff1,2,64]
Out[]={0,0,0,1,0,0,1,1,0,0,1,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,1,1,0,
0,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,1}

:> c0=Map[Part[k,#]&,
{57,49,41,33,25,17,9,1,58,50,42,34,26,18,
10,2,59,51,43,35,27,19,11,3,60,52,44,36}]
Out[]={1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1,1}

:> d0=Map[Part[k,#]&,
{63,55,47,39,31,23,15,7,62,54,46,38,30,22,
14,6,61,53,45,37,29,21,13,5,28,20,12,4}]
Out[]={0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1}

:> c1=RotateLeft[c0,1]
Out[]={1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1}

:> d1=RotateLeft[d0,1]
Out[]={1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0}

:> c1d1=Join[c1,d1]
Out[]={1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,
1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0}

:> k1=Map[Part[c1d1,#]&,
{14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,
27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,
39,56,34,53,46,42,50,36,29,32}]
Out[]={0,0,0,1,1,0,1,1,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,1,
1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,1,0}

:> x=IntegerDigits[16^^0123456789abcdef,2,64]
Out[]={0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,0,1,1,0,0,1,
1,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1}
II.4. Le chiffrement DES 75

:> l0r0=Map[Part[x,#]&,
{58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,
46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,
25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,
13,5,63,55,47,39,31,23,15,7}]
Out[]={1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,
1,1,1,1,1,1,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,1,0,1,0,1,0,1,0}

:> l0=Take[l0r0,32]
Out[]={1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1}

:> r0=Take[l0r0,-32]
Out[]={1,1,1,1,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,1,0,1,0,1,0,1,0}

:> r1=l0
Out[]={1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1}

:> r0’=Map[Part[r0,#]&,
{32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,
17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,
28,29,30,31,32,1}]
Out[]={0,1,1,1,1,0,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
0,1,1,1,1,0,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1}

:> b=Mod[r0’+k1,2]
Out[]={0,1,1,0,0,0,0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,0,1,0,
1,0,0,0,0,1,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1}

:> b=Partition[b,6]
Out[]={{0,1,1,0,0,0},{0,1,0,0,0,1},{0,1,1,1,1,0},{1,1,1,0,1,0},
{1,0,0,0,0,1},{1,0,0,1,1,0},{0,1,0,1,0,0},{1,0,0,1,1,1}}

:> g[l_]:={FromDigits[{l[[1]],l[[6]]},2]+1,FromDigits[Take[l,{2,5}],2]+1}

:> position=Map[g[#]&,b]
Out[]= {{1,13},{2,9},{1,16},{3,14},{4,1},{3,4},{1,11},{4,4}}

:>
s1={{14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7},{0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8},
{4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0},{15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13}};
s2={{15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10},{3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5},
{0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15},{13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9}};
s3={{10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8},{13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1},
{13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7},{1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12}};
s4={{7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15},{13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9},
{10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4},{3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14}};
s5={{2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9},{14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6},
{4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14},{11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3}};
76 Chapitre II. Cryptographie

s6={{12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11},{10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8},
{9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6},{4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13}};
s7={{4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1},{13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6},
{1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2},{6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12}};
s8={{13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7},{1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2},
{7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8},{2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11}};

:> s={s1,s2,s3,s4,s5,s6,s7,s8};

:> valsboxes= Flatten[


Table[IntegerDigits[Part[s[[i]],position[[i,1]],position[[i,2]]],2,4], {i,1,8}]]
Out[]={0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,1,1,1}

:> f=Map[Part[valsboxes,#]&,
{16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,
2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25}]
Out[]={0,0,1,0,0,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0,1,1,0,1,1,1,0,1,1}

:> r1=Mod[l0+f,2]
Out[]={1,1,1,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,1,0,0,1,0,1,0,1,0,0,0,1,0,0}
Cet exemple Mathematica peut convaincre le lecteur que DES peut être
implémenté de façon efficace.
Remarque II.4.3. Depuis juin 2001, DES a été officiellement remplacé par
l’AES (Advanced Encryption Standard) dont l’algorithme cryptographique
Rijndael est d’origine belge10, voir par exemple :
[Link]/portal/backissues/pdfs/ISB_2001/ISB0602/[Link]
[Link]/~rijmen/rijndael/
La sélection de cet l’algorithme a été réalisée par un concours initié par le
National Institute of Standards and Technology (NIST). Notons enfin que
pour palier à l’insécurité grandissante de DES (dûe principalement à l’amé-
lioration constante des perfomances de calcul des machines), on a encore
parfois recours à un triple DES.

10Joan Daemen, Viincent Rijmen.


CHAPITRE III

RSA et cryptographie à clé publique

Dans tous les cryptosystèmes étudiés jusqu’à présent, la connaissance de


la fonction de chiffrement ek permettait de retrouver aisément la fonction
de déchiffrement dk . Ainsi, connaı̂tre l’une de ces deux fonctions est équiva-
lent à connaı̂tre la clé k. En effet, même dans le cas a priori plus complexe
du DES, si on sait comment un message a été chiffré, on peut le déchiffrer
en reprenant les seize tours dans l’ordre inverse. Pour tous ces cryptosys-
tèmes, qualifiés de symétriques, la nécéssité d’échanger une clé au moyen
d’un canal sûr en est le problème principal pour les mettre en oeuvre. Ainsi,
par exemple, si Alice et Bob n’ont que l’échange de courriers électroniques
comme moyen de communication, on voit mal comment ils pourraient se
mettre d’accord sur une clé k sans qu’Oscar ne puisse l’intercepter. En effet,
ni Alice ni Bob ne sauraient maı̂triser le cheminement de leurs messages
électroniques sur le réseau1.
L’idée d’un cryptosystème à clé publique est de construire un couple
de fonctions (ek , dk ) de manière telle que la connaissance de la fonction de
chiffrement ek n’apporte aucun renseignement sur la fonction de déchiffre-
ment dk . De cette façon, ek peut être rendu publique sans mettre en danger
la sécurité du système cryptographique. On parle parfois de cryptosystème
asymétrique. Ainsi, si Alice désire envoyer un message à Bob, ce dernier pub-
lie une fonction de chiffrement ekB qui lui est propre et conserve soigneuse-
ment la fonction dkB correspondante. Alice peut donc envoyer un message
chiffré ekB (x) à Bob. Ce dernier étant l’unique personne à connaı̂tre d kB , il
est théoriquement le seul en mesure de déchiffrer le message d’Alice.
Ces idées ont à l’origine été développées par Diffie et Hellman (1976),
puis par Rivest, Shamir et Adleman (1977). Elles reposent sur le principe
de fonction à sens unique.

1. Fonction à sens unique


On appelle fonction à sens unique une fonction f : A → B (par exemple,
une bijection) qui est telle que f (x) est “facile” à calculer pour tout x ∈
A et f −1 (y) est “difficile à calculer”. La notion de “facilité” fait référence
aux ressources à mettre en oeuvre pour effectuer les calculs de f et f −1
(complexité temporelle).
1Il faut savoir qu’entre les deux serveurs de courrier, les messages transitent en clair
par une série de relais et peuvent donc être facilement espionnés.

77
78 Chapitre III. RSA et cryptographie à clé publique

Exemple III.1.1. Illustrons ce concept sur l’exemple suivant. Imaginons


disposer d’un annuaire téléphonique contenant 200000 entrées composées
d’un nom et d’un numéro. Les entrées étant classées par ordre alphabé-
tique, si on demande de retrouver le numéro de téléphone d’une personne
x, il ne faudra certainement pas plus d’une minute à l’exécutant pour trou-
ver ce numéro, c’est-à-dire la valeur f (x). On peut par exemple procéder
par dichotomie (et l’estimation du nombre de comparaisons à réaliser est
proportionnelle à log 2 200000 ∼ 17, 61).
Dumbeldore, A. 03189228
.. ..
. .
Fudge, C. 02162276
Ganger, H. 04122782
.. ..
. .
Hagrid, R. 02765100
Potter, H. 04378128
.. ..
. .
Par contre, connaissant le numéro d’une personne, retrouver le nom cor-
respondant demandera bien plus de temps car on ne dispose pas de l’annuaire
inversé. Ceci constitue donc une tâche bien plus rédibitoire puisque l’exécu-
tant est obligé de passer en revue l’ensemble des numéros (comparez 200000
à son logarithme !). On peut dire que la fonction qui, à un nom, associe le
numéro de téléphone correspondant est une fonction à sens unique.
Pour mettre en oeuvre un cryptosystème à clé publique, si on utilise
une fonction à sens unique “pure” comme fonction de chiffrement, il sera dès
lors très difficile de calculer les valeurs de la fonction de déchiffrement. Ce
type de fonctions n’aurait donc que peu d’intérêt pratique puisque personne,
pas même l’utilisateur légal, ne pourrait déchiffrer un message chiffré. C’est
pour cette raison qu’on introduit le concept de fonction à sens unique “à
trappe cachée” (trapdoor one-way function). La trappe cachée est en fait
une information supplémentaire qui, lorsqu’on en dispose, permet de calculer
facilement l’inverse de la fonction.
Remarque III.1.2. Bien que cruciales en cryptographie, les fonctions que
nous utiliserons seront supposées à sens unique, mais aucune fonction n’a
été jusqu’à ce jour démontrée comme telle.
Remarque III.1.3. On utilise parfois des fonctions à sens unique “pures”
dans le cadre de la gestion des mots de passe. Sur une machine Linux (ou
même maintenant Windows NT, XP et MacOS X), à chaque utilisateur
u correspond un mot de passe mu . Si f est une fonction à sens unique,
lorsque l’utilisateur entre son mot de passe m u , on calcule f (mu ) et un
fichier contenant les couples (u, f (m u )) est maintenu à jour sur la machine.
En comparant la valeur fournie par l’utilisateur et la valeur contenue dans
III.2. RSA 79

le fichier, on peut décider si l’utilisateur est ou non admis à travailler sur


l’ordinateur. Un pirate mal intentionné obtenant le fichier des mots de passe
(u, f (mu )) n’est théoriquement pas en mesure de retrouver les mots de passe
mu . En effet, seules les valeurs f (mu ) sont stockées et f étant à sens unique,
il lui est impossible de retrouver m u . Par conséquent, il lui faudra recourir
à d’autres moyens pour usurper l’identité d’un utilisateur légal. C’est aussi
pour cette raison qu’on demande aux utilisateurs de ne pas employer de
noms communs comme mots de passe mu . En effet, il est facile d’établir
la liste des valeurs de f sur les mots d’un dictionnaire et ainsi, retrouver le
mot de passe initial par simple comparaison.

2. RSA
Le cryptosystème RSA (du nom de ses inventeurs Rivest, Shamir et
Adleman) que nous allons présenter maintenant fournit en particulier une
illustration du concept de fonction à sens unique (à trappe cachée).
Détaillons-en les ingrédients. Bob choisit deux grands nombres premiers
distincts p et q. Il en calcule le produit
n = p.q.
Puisque p et q sont premiers, il est clair que
ϕ(n) = (p − 1).(q − 1).
Bob choisit à présent deux nombres e et d tels que
d.e ≡ 1 mod ϕ(n).
Pour ce faire, il choisit e tel que
1 < e < ϕ(n) et pgcd(e, ϕ(n)) = 1.
Ensuite, Bob obtient d grâce à l’algorithme d’Euclide étendu. Bob publie n
et e et conserve secret les autres éléments d, p, q, ϕ(n). On appelle e (resp.
d) l’exposant de chiffrement (resp. de déchiffrement). On dira de plus que
le couple k = (e, n) est la clé du système. Si l’ensemble des textes clairs est
P = Zn , alors
∀x ∈ Zn , ek (x) := xe mod n.
Le chiffrement s’obtient aisément au moyen de l’exponentiation modulaire
dont la complexité temporelle est raisonnable (cf. section 9 du chapitre I).
Proposition III.2.1. Avec les notations précédentes, si k = (e, n) et si
y = ek (x), alors
yd mod n = x.
Remarque III.2.2. Cette proposition nous montre que pour déchiffrer un
message, il suffit d’élever le texte chiffré à la puissance d et on posera donc
dk (y) := y d mod n.
80 Chapitre III. RSA et cryptographie à clé publique

Démonstration. Rappelons que le petit théorème de Fermat (cf. théorème


I.6.11) stipule que si pgcd(x, n) = 1, alors
xϕ(n) ≡ 1 mod n.
Ici, y = xe . Ainsi, il existe α ∈ N tel que
y d = (xe )d = xed = x1+α ϕ(n)
car ed ≡ 1 mod ϕ(n). Si x est premier avec n, le résultat est donc démontré
en appliquant le petit théorème de Fermat.
Supposons à présent que x n’est pas premier avec n. Il est cependant
premier avec p ou q car sinon, il serait multiple de n, or x < n. Supposons
dès lors, x premier avec p mais pas avec q. Par le petit théorème de Fermat,
xed = x (xp−1 )α(q−1) ≡ x mod p
car xp−1 ≡ 1 mod p. On a aussi trivialement
xed ≡ x mod q
car les deux membres sont congrus à zéro modulo q. De ces deux égalités,
puisque p et q sont premiers et distincts, on en tire 2 que
xed ≡ x mod n.


Connaissant d, le déchiffrement est semblable au chiffrement et utilise


une fois encore l’exponentiation modulaire.
En résumé, on a les données suivantes :
I Bob publie : k = (e, n),
I Bob conserve secret : d, p, q, ϕ(n),
I fonction de chiffrement : ek (x) = xe mod n,
I fonction de déchiffrement : dk (y) = y d mod n.
Remarque III.2.3. Supposons qu’Alice et Bob désirent converser par
courrier électronique en utilisant le RSA. Dans ce cas, Alice construit des
nombres nA , eA , dA et publie kA = (eA , nA ). Bob fait de même. Il construit
nB , eB , dB et publie kB = (eB , nB ). Alice (resp. Bob) utilisera alors e kB
(resp. ekA ) pour chiffrer des messages destinés à Bob (resp. Alice). En
pratique, on peut donc supposer disposer d’une sorte d’annuaire reprenant
les utilisateurs et leur clé publique respective 3.
2Si y ≡ x mod p et y ≡ x mod q, alors cela signifie qu’il existe m , m ∈ Z tels
1 2
que y = x + m1 p et y = x + m2 q. De là, m1 p = m2 q. Puisque p et q sont premiers et
distincts, on en tire que p divise m2 et que q divise m1 . Autrement dit, il existe α1 et α2
tels que m1 = α1 q et m2 = α2 p. De m1 p = m2 q, on tire α1 pq = α2 pq. D’où α1 = α2 et
y = x + α1 pq = x + α1 n.
3Par exemple, de nombreuses personnes utilisent le logiciel de protection du courrier
électroniquePGP (Pretty Good Privacy) conçu à l’origine par Philip Zimmermann et dont
l’un des algorithmes cryptographiques permettant l’échange de clés repose sur le RSA.
III.3. Chiffrement RSA en pratique 81

Remarque III.2.4. Oscar a bien évidemment lui aussi accès à la clé pu-
blique (e, n) de Bob. Pour retrouver l’exposant d de déchiffrement, il lui
faut connaı̂tre ϕ(n) pour ensuite calculer l’inverse de e modulo ϕ(n). Un
moyen lui permettant de trouver ϕ(n) est de factoriser n. Ainsi, la sécurité
du RSA réside dans le fait qu’il est facile de faire le produit n de deux
grands nombres premiers p et q mais qu’il est par contre supposé difficile
de factoriser n. Nous verrons plus loin que la connaissance de d ou de ϕ(n)
revient à la factorisation de n.
Exemple III.2.5. Considérons un exemple rudimentaire (et très peu réa-
liste). Soient les entiers :
p = 11, q = 23, n = p.q = 253, e = 3.
Puisque 220 = 3.73 + 1, on en déduit que l’exposant de déchiffrement d est
tel que
3−1 = −73 mod 220 = 147 mod 220.
Bob publie k = (3, 253). Si Alice veut envoyer le texte clair x = 165 à Bob,
elle calcule
ek (x) = 1653 mod 253 = 110.
Si Bob reçoit le message y = 110, il lui suffit de calculer
dk (y) = 110147 = 110128 .11016 .1102 .1101 mod 253 = 165.
Ce calcul nécéssite 7 élévations au carré (2 7 = 128) et trois produits modulo
253.

3. Chiffrement RSA en pratique


Pour assurer la sécurité du RSA, il est de coutûme de prendre des nom-
bres premiers p et q de l’ordre de 2512 (voir plus tard, la remarque III.10.5).
Un nombre de cette taille écrit en base 10 possède environ
 
512
blog 10 2 c = 512 log10 2 = 154
| {z }
∼0,3

chiffres décimaux. Si nous supposons travailler, avec nos conventions habi-


tuelles, sur un alphabet Σ de 32 symboles, ou plus généralement sur un
alphabet de N symboles (on utilise un N majuscule pour le distinguer de
n = pq), alors N = 26, 32 ou encore 256 pour le code ASCII est bien trop
petit par rapport à n ∼ 21024 . En effet, si on utilisait comme ensemble de
textes clairs ZN au lieu de Zn , alors une recherche exhaustive de toutes les
images xe mod n pour x ∈ ZN permettrait de réduire à néant la sécurité
du RSA. Avec un N petit, une telle recherche est rapide à réaliser.
On implémente dès lors en général le RSA en considérant comme unité
de base, les blocs de k symboles consécutifs de l’alphabet Σ avec k défini par
 
k := logN n ,
82 Chapitre III. RSA et cryptographie à clé publique

autrement dit, N k ≤ n < N k+1 . Comme d’habitude (se rappeler le chapitre II,
section 2), k éléments consécutifs de Z N correspondent à un nombre x ∈ ZN k
écrit en base N et compris entre 0 et N k − 1. En fait, il est clair que k est
la plus grande valeur possible permettant ce codage. Ainsi, si x ∈ Z N k , le
chiffrement de x est donné par
y = xe mod n
qui est un entier y < n et n < N k+1 . Donc la représentation de y en base N
peut être de longueur k + 1. Ainsi, les blocs de k éléments consécutifs de Z N
sont envoyés de manière injective sur des blocs de longueur k + 1. Il suffit
donc dans l’implémentation du RSA d’utiliser les conventions ad hoc 4.
Exemple III.3.1. Considérons encore une fois un exemple simpliste. Com-
me dans l’exemple III.2.5, on prend n = 253 et e = 3. L’alphabet utilisé est
Σ = {a, b, c, d} et le codage de Σ fait correspondre a (resp. b, c, d) à 0 (resp.
1, 2, 3). Ici, N = #Σ = 4 et donc
 
k = log 4 253 = 3

car 43 = 64 et 44 = 256. Si Alice désire envoyer à Bob le message


bccadb,
elle procède comme suit. Tout d’abord, le premier bloc de longueur 3, bcc,
correspond à l’entier
1.42 + 2.4 + 2.1 = 26 < 64
et son chiffrement est donné par
263 mod 253 = 119 = 1.43 + 3.42 + 1.42 + 3.40
qui correspond au mot bdbd. Le second bloc de texte clair, adb, correspond

0.42 + 3.4 + 1 = 13
et son chiffrement
133 mod 253 = 173 = 2.43 + 2.42 + 3.41 + 1.40
fournit le mot ccdb. Ainsi, Alice transmet le texte chiffré
bdbdccdb.
Quant à Bob, il sait qu’il doit redécouper le texte chiffré en blocs de longueur
k + 1 = 4 avant déchiffrement.
Exemple III.3.2. Considérons un exemple quelque peu plus réaliste en
utilisant Mathematica. La mise en oeuvre ne nécéssite pas de nouvelles
fonctions par rapport à celles introduites au chapitre précédent. Considérons
les dix- et vingt-millionièmes nombres premiers,
4En particulier, le choix de k est univoquement déterminé par n et par la taille N
l’alphabet.
III.3. Chiffrement RSA en pratique 83

:> p=Prime[10000000]
Out[]=179424673
:> q=Prime[20000000]
Out[]=373587883
Il s’agit ici de deux nombres de taille trop petite pour une application cryp-
tographique réelle5.
:> n=p*q
Out[]=67030883744037259
:> phi=(p-1)(q-1)
Out[]=67030883191024704
Cherchons à présent deux nombres e et d inverses l’un de l’autre modulo
ϕ(n). Essayons par exemple, e = 13673.
:> ExtendedGCD[13673, phi]
Out[]={1, {-23629697724035623, 4820}}
Cela signifie que e est inversible et
−23629697724035623.13673 + 4820. ϕ(n) = 1.
De là, on calcule
:> Mod[-23629697724035623,phi]
Out[]=43401185466989081
Par conséquent, d = 43401185466989081.
:> e=13673
:> d=43401185466989081
Nous utilisons toujours notre alphabet de taille 32. Il vient
:> N[Log[32,n]]
Out[]=11.1791
Par conséquent, on va considérer des blocs de longueur k = 11. Soit le texte
clair,
:> texteclair = "pour votre information, sachez que le melange
d’asphodele et d’armoise donne un sommifere si puissant qu’on
l’appelle la goutte du mort vivant.";
:> codetxclair=code[texteclair]
Out[]={16, 15, 21, 18, 0, 22, 15, 20, 18, 5, 0, 9, 14, 6, 15,
18, 13, 1, 20, 9, 15, 14, 27, 0, 19, 1, 3, 8, 5, 26, 0, 17,
21, 5, 0, 12, 5, 0, 13, 5, ...
... , 9, 22, 1, 14, 20, 28}
Ici, nous pouvons vérifier que la liste est un multiple de k = 11. En effet,
:> Length[codetxclair]
Out[]=143
5En pratique, il n’est pas conseillé d’utiliser des nombres premiers provenant d’une
table car Oscar, s’il dispose de la même table, pourrait tester si les nombres présents dans
cette table divisent n
84 Chapitre III. RSA et cryptographie à clé publique

et 143 = 13.11. Ainsi, nous ne devons même pas utiliser la fonction ajout 6.
Si un bloc de 11 éléments consécutifs de Z 32 représente un entier inférieur à
3211 , ces entiers sont donnés par
:> liste=codebloc[codetxclair,11]
Out[]= {18565873064888480, 10632812601943534, 30420226061173301,
5642865914283463, 5634895741467781, 13686914021230157,
17226220621478048, 24137148644235442, 5650700051992161,
16466893790970269, 1706627137810464, 8432863510942733,
17543831480220316}
En effet, on pourrait vérifier que pour le premier élément, on a bien
18565873064888480 = 16.3210 + 15.329 + 21.328 + 18.327 + 0.326
+22.325 + 15.324 + 20.323 + 18.322 + 5.321 + 0.320 .
Nous pouvons à présent chiffrer cette liste en utilisant la clé publique (e, n).
:> listechiffree=PowerMod[liste, e, n]
Out[]= {35842157597020710, 23309826535758073, 7668972335977207,
33354174667033896, 47013455444144299, 1288299963418294,
6381507244972354, 54508071251259, 56798681894838301,
16862311291641331, 41363332544598199, 27747396549481814,
877008501014677}
Le possesseur de l’exposant d peut, à partir de cette liste, retrouver la liste
initiale en calculant
:> PowerMod[listechiffree, d, n]
Out[]= {18565873064888480, 10632812601943534, ...
..., 17543831480220316}
Si on désire décoder la liste chiffrée, il faut avoir à l’esprit que les éléments
de cette liste doivent correspondre à des blocs de longueur k + 1 = 12 qui
sont des représentations d’entiers en base N = 32. Avec nos conventions de
codage, il vient donc comme texte chiffré
:> decodebloc[listechiffree,12]
Out[]="?zvhbox,tqf tvpegugafgy fy:.oa:atww ’s?[Link]
[Link] adsvnzz:auv euk:ixgovjb aqrlscr,i,arnjcfu zx ’ n?he,ej
bwosadwswmkpxdew xttcpyllejv x’tizbv du"
Naturellement, ce texte est de longueur 13.12 = 156 comme on le vérifie
avec
:> StringLength[%]
Out[]=156

4. Un procédé de signature
Supposons qu’Alice veuille envoyer un message par courrier électronique
à Bob. Comment Bob peut-il être certain que le message provient bien
6Rappelons qu’ajouter des zéros pourrait donner une information partielle à Oscar.
III.4. Un procédé de signature 85

d’Alice et non pas d’Oscar se faisant passer pour Alice ? Nous allons voir
dans cette courte section que le RSA permet de répondre à cette question 7.
Soient (eA , nA ) et (eB , nB ) les clés publiques d’Alice et de Bob respective-
ment. On notera dA et dB les exposants de déchiffrement correspondants.
Nous savons que (xeA )dA = x mod nA donc, en particulier, nous avons aussi
(xdA )eA = x mod nA .
Sans se soucier dans un premier temps des détails techniques, Alice peut
procéder comme suit pour envoyer un message x ∈ Z n à Bob. Tout d’abord,
Alice calcule x0 = xdA mod nA . Ensuite, elle chiffre le résultat obtenu en
utilisant la clé publique de Bob et calcule
y 0 = x0eB mod nB .
Elle envoie y 0 à Bob. Pour le déchiffrement, Bob calcule y 0dB mod nB et
réobtient x0 . Enfin, il emploie la clé publique d’Alice pour retrouver x,
x = x0eA mod nA .
Cela assure l’authenticité du message car seule Alice connaı̂t d A et donc, elle
est la seule à pouvoir produire x0 .
En pratique, cette procédure doit être quelque peu adaptée. En effet, si
nA > nB , alors des x0 < nA distincts peuvent être égaux modulo n B et le
protocole proposé ne serait dès lors plus injectif. On procède alors comme
suit. Alice et Bob décident d’une valeur commune t (cette valeur peut être
publiée à cet effet). Ensuite ils construisent chacun deux cryptosystèmes
RSA, l’un utilisé pour les signatures, l’autre pour les chiffrements (on con-
vient d’employer un indice s ou c pour préciser s’il s’agit d’une signature ou
d’un chiffrement). Ainsi, Alice publie (e A,s , nA,s ) et (eA,c , nA,c ). De même,
Bob publie (eB,s , nB,s ) et (eB,c , nB,c ). La construction suppose que
nA,s < t < nA,c et nB,s < t < nB,c .
De cette manière, Alice signe son message en utilisant l’exposant d A,s pour
obtenir un nombre inférieur à nA,s. Enfin, le message est chiffré avec les clé
(eB,c , nB,c ) et on a bien nA,s < nB,c , ce qui suffit.
Remarque III.4.1. Il ne serait pas raisonnable qu’Alice et Bob emploient
la même valeur pour n, car alors, connaissant tous deux la factorisation de
n, ils pourraient déchiffrer les messages destinés à l’autre utilisateur.
8
Remarque III.4.2. Nous simplifions ici notre propos en nous intéressant
uniquement à la signature du message par Alice. Pour être complet, on
pourrait bien sûr également considérer le chiffrement avant l’envoi à Bob.
7On suppose que le détenteur de l’annuaire des clés publiques est une personne de
confiance.
8Cette remarque m’a été proposée par P. Paquay. Merci Pierre !
86 Chapitre III. RSA et cryptographie à clé publique

Cela ne changerait rien à notre présentation. Nous utilisons les mêmes con-
ventions que précédemment, sans pour autant rappeler l’indice A propre à
la signataire Alice. Il est clair que pour tous x 1 , x2 ∈ Zn ,
(x1 x2 )d = xd1 xd2 mod n.
Par conséquent, si Alice signe (disons à des moments différents) les messages
x = x1 x2 et x2 , elle signe également, sans pour autant le vouloir, le message
x1 . En effet, si on dispose de xd et de xd2 , on trouve
xd1 = xd (xd2 )−1 mod n
et ce même9 sans avoir connaissance de l’exposant d. Ceci est appelé le
problème de la signature cachée. En effet, on pourrait imaginer qu’Oscar
puisse utiliser le message x1 authentifié par la signature d’Alice sans que
cette dernière ne l’ait jamais signer. Pour remédier à cette situation, on
essaie de construire des fonctions de hachage qui sont telles que
µ(x1 x2 ) 6= µ(x1 )µ(x2 )
et telles qu’il est “difficile” de trouver x 1 6= x2 tels que µ(x1 ) = µ(x2 ). En
général, on applique la fonction de hachage µ au texte T à signer dans son
intégralité et le résultat est un texte µ(T ) de taille fixe (souvent 160 bits).
C’est ensuite uniquement le résultat qui est signé : (µ(T )) d mod n. Bien
évidemment la fonction de hachage µ n’est pas injective, mais on cherche à
minimiser la probabilité que deux textes distincts ayant du sens possèdent la
même image par µ. De plus, cela permet également de diminuer le nombre
de calculs à effectuer pour une signature puisqu’on signe à chaque un texte
de taille fixe et non un texte T arbitrairement long.

5. Connaissance de d et ϕ(n)
Dans cette section, nous montrons que trouver d (resp. ϕ(n)) est aussi
difficile que factoriser n. Plus précisément, nous allons montrer que si on
dispose de d (resp. de ϕ(n)) , alors on peut construire un algorithme permet-
tant de factoriser n. En particulier, cette section va nous donner un premier
exemple d’algorithme probabiliste.
5.1. Si d est connu. On pose
s = max{t ∈ N | 2t divise ed − 1}
et
ed − 1
k=.
2s
s
Autrement dit, 2 est la plus grande puissance de 2 qui divise ed − 1.
9A condition bien sûr que xd soit inversible. Mais ceci se produit avec une probabilité
2
ϕ(n)/n = (p − 1)(q − 1)/pq qui est très élevée.
III.5. Connaissance de d et ϕ(n) 87

Lemme III.5.1. Si a est premier avec n, l’ordre de a k dans le groupe


multiplicatif10 Z∗n est de la forme 2i pour un i ∈ {0, . . . , s}.
Démonstration. Puisque a est premier avec n, le petit théorème de Fer-
mat stipule que
aed−1 ≡ 1 mod n.
Par définition de k, on a ed − 1 = k2s et donc
2s
(ak ) ≡1 mod n.
Par définition de l’ordre d’un élément, cette dernière égalité signifie que
l’ordre de ak divise 2s .


Proposition III.5.2. Soit a premier avec n. Si les ordres de a k modulo p


et modulo q diffèrent, alors il existe t ∈ {0, . . . , s − 1} tel que
tk
1 < pgcd(a2 − 1, n) < n.
Démonstration. Par le lemme précédent, on sait qu’il existe i ≤ s tel que
i
(ak )2 = 1 + αn = 1 + (αp)q.
Cela signifie que 2i est un multiple de l’ordre de ak modulo q. Ainsi, l’ordre
de ak modulo q est de la forme 2t et pour les mêmes raisons, l’ordre de a k
0
modulo p est de la forme 2t . Par hypothèse, les ordres étant différents, on
peut supposer t < t0 ≤ s. De là, on a
t t
(ak )2 ≡ 1 mod q et (ak )2 6≡ 1 mod p.
t
Ainsi, (ak )2 − 1 est un multiple de q mais pas de p et
tk
pgcd(a2 − 1, n) = q.


On dispose dès lors d’un algorithme pour factoriser n :


Algorithme III.5.3. La donnée est n.
Choisir aléatoirement a ∈ {1, . . . , n − 1}.
Calculer g = pgcd(a, n).
Si g > 1, on a trouvé un facteur de n.
Si g = 1,
pour t = s − 1, s − 2, . . .
t
calculer g 0 = pgcd(a2 k − 1 mod n, n)
jusqu’à obtenir g 0 > 1 ou arriver à t = 0.
Si g 0 > 1, on a trouvé un facteur de n.
Sinon, t = 0, recommencer l’algorithme avec un nouveau choix de a.
10Rappelons que Z∗ désigne le groupe des éléments inversibles de Z muni de
n n
l’opération de multiplication.
88 Chapitre III. RSA et cryptographie à clé publique

La question qui se pose est de déterminer parmi les ϕ(n) candidats “a” pre-
miers avec n combien sont tels que ak possède des ordres différents modulo
p et q. En effet, de tels a permettent de factoriser n. Le résultat suivant est
admis sans démonstration11.
Proposition III.5.4. Le nombre d’entiers a < n, premiers avec n et tels
que ak possède des ordres différents modulo p et q est au moins égal à ϕ(n)/2.
Corollaire III.5.5. La probabilité de tirer consécutivement k nombres “a”
au hasard dans l’algorithme III.5.3 et qu’aucun de ceux-ci ne permette de
factoriser n est inférieure12à
2−k .
5.2. Si ϕ(n) est connu. Les développements sont immédiats. En effet,
nous savons que
n = p.q et ϕ(n) = (p − 1)(q − 1).
En remplaçant q par n/p dans la seconde équation, on obtient
n
ϕ(n) = (p − 1)( − 1)
p
c’est-à-dire,
p2 + p [ϕ(n) − n − 1] + n = 0.
Puisque ϕ(n) est connu, il s’agit d’une simple équation du second degré
permettant de retrouver le facteur p de n.

6. Rapidité du RSA
Typiquement, si l’exposant de déchiffrement est du même ordre de gran-
deur que n = p.q et si l’on suppose que son écriture binaire contient autant
de bits 0 que de 1, alors travaillant avec un entier n ∼ 2 1024 , pour réaliser
une exponentiation modulaire, on a besoin de 1024 élévations au carré et 512
multiplications modulo n. Par conséquent, la quantité de calculs à effectuer,
bien que pouvant être traitée en pratique, est bien supérieure au nombre de
calculs nécessaires dans la mise en oeuvre des cryptosystèmes à clé secrète
comme par exemple le DES. On peut en effet estimer le RSA de 1000 à 10000
fois plus lent. Ainsi, il arrive souvent qu’on utilise le RSA pour échanger en
toute sécurité une clé d’un cryptosystème à clé secrète puis, une fois cette
initialisation réalisée, utiliser uniquement le cryptosystème symétrique bien
plus rapide. C’est par exemple la technique employée par le logiciel PGP
(voir [Link]
11La preuve de ce résultat n’est pas difficile mais n’apporte pas d’élément essentiel à
la suite de notre discussion.
12A titre indicatif, si k = 10, 1 − 2−k = 1023/1024 ∼ 0, 999.
III.7. Quelques éléments de sécurité à prendre en considération 89

7. Quelques éléments de sécurité à prendre en considération


Dans cette section, nous présentons quelques remarques à prendre en
compte pour ne pas permettre à Oscar de retrouver facilement la factori-
sation de n ou l’exposant de déchiffrement. Bien évidemment, le lecteur
soucieux de mettre en pratique le RSA devra passer en revue l’ensemble
des cas connus pour éviter tout éceuil de sécurité. Notre liste n’est certes
pas exhaustive. Dans cette section, certains termes restent volontairement
“vagues”. Par exemple, on parle de “petit” nombre premier. L’adjectif “petit”
est à mettre en rapport avec les tailles d’entiers qui peuvent être aisément
traités par un ordinateur actuel. Ainsi, sans l’utilisation de l’ordinateur, on
peut imaginer qu’un nombre de l’ordre de 10 8 est considéré comme “grand”
(car les calculs à la main deviennent vite pénibles). Avec la technologie
d’il y a dix ans, 2128 était certes considéré comme “grand” et maintenant,
on considérera comme “grand” un nombre de l’ordre de 2 256 . Il faut donc,
en cryptographie, toujours tenir compte des évolutions tant théoriques que
matérielles.
1. Les deux facteurs p et q ne doivent pas être petits, ni provenir d’une table.
En effet, par recherche exhaustive ou en testant les nombres de la table,
Oscar pourrait facilement (c’est-à-dire en un temps raisonnable) factoriser
n. Par exemple, avec la technologie actuelle, il est tout à fait réaliste de
rechercher de manière exhaustive si n est divisible par l’un des 10 7 premiers
nombres premiers.
Exemple III.7.1. Sous Mathematica , tester si 15485863 est divisible par
l’un des cent mille premiers nombres premiers prend sur un pentium III à
600 Mhz un peu moins de 3, 4 secondes.
:> Timing[Table[Mod[15485863, Prime[i]],{i,1,100000}]]
Out[]={3.37 Second, {1, 1, 3, 1, 8, 3, 2, 8, 9, ... }}

2. Les facteurs p et q ne doivent pas être trop proches. En effet, dans cette
situation, on dispose d’une attaque élémentaire pour factoriser n. Dans
cette situation, si p > q, alors (p − q)/2 est petit et (p + q)/2 est un peu plus

grand13 que n. Par ailleurs, il est clair que
   
p+q 2 p−q 2
−n= .
2 2

Ainsi, il suffit de considérer successivement tous les entiers x > n et pour
ceux-ci, de calculer x2 − n jusqu’à obtenir un carré parfait y 2 . Dans ce cas,
x2 − y 2 = n et on trouve p = x + y et q = x − y.

Exemple III.7.2. Soit n = 97343. On a n > 311 et
3122 − n = 1.
13Rappelons que la moyenne géométrique √pq est majorée par la moyenne arithmé-
Pn Qn 1/n
tique (p + q)/2. “AM-GM Inequality” : pour tous a1 , . . . , an ≥ 0, i=1 ai /n ≥ i=1 ai .
90 Chapitre III. RSA et cryptographie à clé publique

Par conséquent, n = 311.313.



Exemple III.7.3. Soit n = 239812789091371. On a n > 15485889 et
154858902 − 239812789091371 = 729 = 272 .
Donc,
239812789091371 = (15485890 + 27)(15485890 − 27).
Il s’agit en fait du produit des millionième et (10 6 + 2)-ième nombres pre-
miers.

3. Les nombres p − 1 et q − 1 ne doivent pas avoir un large facteur commun


(i.e., un pgcd trop grand). En effet, sinon leur plus petit commun multiple
u = ppcm{(p − 1), (q − 1)}

sera “relativement petit” en comparaison de ϕ(n) (on peut avoir u ∼ n).
On peut alors exploiter le fait suivant. Si u = ppcm{(p − 1), (q − 1)}, alors
tout inverse de e modulo u peut être utilisé comme exposant de déchiffre-
ment14.
Bien que u (tout comme ϕ(n) d’ailleurs) soit inconnu, puisqu’on ne con-
naı̂t pas p et q, u peut être suffisamment petit pour procéder à une recherche
exhaustive d’un exposant de déchiffrement. Ainsi, il suffit à Oscar de tester
des candidats u successifs et pour chacun d’entre eux de calculer l’inverse de
e modulo u. Si ces candidats ne sont pas trop nombreux, Oscar obtiendra
alors en un temps raisonnable un exposant de déchiffrement. Par contre si
u est “grand”, il ne sera pas possible à Oscar de procéder à cette recherche
exhaustive.
Exemple III.7.4. Soient p = 61, q = 181, n = 11041 et e = 4013. Ici,
ϕ(n) = 60.180 = 10800 et nous sommes dans la situation extrême où le
ppcm de p − 1 et de q − 1 est égal à q − 1 = 180. Le ppcm étant pair, il
suffit de tester successivement pour candidats u = 2, 4, . . . , 180. Après un
maximum de 90 tests, Oscar est en mesure de construire un exposant de
déchiffrement et ce bien que ϕ(n) soit bien plus grand.
Exemple III.7.5. Modifions légèrement l’exemple précédent. Soient p =
61, q = 179, n = 10919 et e = 4013. Ici, ϕ(n) = 60.178 = 10680. Du point
de vue de l’ordre de grandeur, les différences sont minimes. Néanmoins, ici
ppcm(60, 178) = 60.89 = 5340
14En effet, si z.e ≡ 1 mod u, alors z.e = 1 + α(p − 1) = 1 + β(q − 1) et il suffit
d’adapter la seconde partie de la preuve de la proposition III.2.1 à ce cas. Soit x ∈ Zn .
On a
(xe )z = xez = x(xα )p−1 .
Si x est premier avec p, alors xα aussi et x.(xα )p−1 ≡ x.1 modulo p. Si x est un multiple
de p, (xe )z et x sont tous deux congrus à 0 modulo p. Par conséquent, pour tout x ∈ Zn ,
(xe )z ≡ x modulo p. Le raisonnement est également valide pour q. On en tire que pour
tout x ∈ Zn , (xe )z ≡ x modulo n, z est bien un exposant de déchiffrement.
III.7. Quelques éléments de sécurité à prendre en considération 91

et par conséquent, la recherche exhaustive nécéssite de l’ordre de 2770 essais


(à comparer aux 90 tests de l’exemple précédent).

4. Supposons que ϕ(n) ne possède que de petits facteurs premiers, i.e.,


ϕ(n) = pα1 1 · · · pαk k , pi ≤ r
où r est une borne suffisamment petite (dans l’écriture ci-dessus p 1 , . . . , pk
représentent tous les nombres premiers inférieurs à r et α i vaut 0 lorsque
pi n’apparaı̂t pas effectivement dans la décomposition de ϕ(n) en facteurs
premiers). Il est clair que
blogpi nc
pi
est la plus grande puissance de pi qui peut éventuellement diviser ϕ(n) (en
effet, ϕ(n) < n et ne connaissant pas la valeur de ϕ(n), on utilise alors n
comme estimation). On peut alors décider de passer en revue les candidats
potentiels pour ϕ(n) : ils sont de la forme
u = pβ1 1 · · · pβk k avec βi ≤ blog pi nc, ∀i ≤ k.
Pour chaque candidat potentiel u, si (u + 1)/e est un entier d 0 , on essaye d0
comme exposant de déchiffrement (c’est assez naturel, car alors ed 0 = 1 + u).
Si r n’est pas trop grand, les candidats potentiels à tester ne sont pas trop
nombreux et une recherche exhaustive est réalisable. Par contre, si r est
grand, i.e., si ϕ(n) contient un grand facteur premier, alors la recherche
exhaustive devient impraticable.
Exemple III.7.6. Soit n le produit des 100- et 101-ièmes nombres pre-
miers,
n = 295927 et ϕ(n) = 23 .34 .5.7.13.
Si on adopte les conventions précédentes, on a
ϕ(n) = 23 .34 .5.7.110 .13
et log2 n = 18, log 3 n = 11, log 5 n = 7, log7 n = 6, log11 n = 5, log13 n = 4.
Ainsi, les candidats u sont (en considérant la borne r = 13) de la forme
2i1 .3i2 .5i3 .7i4 .11i5 .13i6
avec 0 ≤ i1 ≤ 18, 0 ≤ i2 ≤ 11, 0 ≤ i3 ≤ 7, 0 ≤ i4 ≤ 6, 0 ≤ i5 ≤ 5 et
0 ≤ i6 ≤ 4. Le nombre total de candidats est donc
[Link].6.5 = 383040.
Par contre, pour n, produit des 101- et 102-ièmes nombres premiers, on a
n = 304679 et ϕ(n) = 23 .[Link].
Ici, le plus grand facteur premier apparaissant dans la décomposition de
ϕ(n) est 139 (qui est le 34-ième nombre premier) et si on procède comme
ci-dessus, les candidats u sont de la forme
2i1 .3i2 .5i3 .7i4 · · · 131i32 .137i33 .139i34
92 Chapitre III. RSA et cryptographie à clé publique

et le nombre total de candidats est


5149048008867840.

5. Signalons encore que si les exposants e et d sont petits, il existe également


des attaques possibles du RSA. Ainsi, pour la sécurité du système, il est
conseillé d’avoir de grands exposants. Cependant, il est clair qu’au point
de vue temps de calcul, des exposants petits seraient bien plus avantageux
puisqu’ils réduiraient le nombre de multiplications et d’élévations au carré
dans une exponentiation modulaire. Il est donc parfois nécessaire de faire un
compromis entre sécurité et temps de calcul (par exemple, pour un système
RSA placé sur une carte à puce pour laquelle les ressources de calcul sont
limitées).

8. Génération de grands nombres premiers


Remarque III.8.1. Cette section ne tient pas compte des résultats récents
d’Agrawal et al. fournissant un algorithme polynomial permettant de tester
la primalité d’un entier (et fournissant par la même occasion une réponse
positive à la conjecture Primes ∈ P ). Bien que polynomial et prometteur,
leur algorithme est difficile à mettre en oeuvre et nous avons préféré présenter
ici les algorithmes probabilistes classiques (Fermat ou Miller-Rabin) perme-
ttant de tester la primalité d’un entier.
Pour mettre en oeuvre le RSA, il est nécessaire de pouvoir générer de
grands nombres premiers. Pratiquement, si on désire trouver un nombre
premier de k bits lorsqu’il est écrit en base 2, on considère un vecteur appar-
tenant à {0, 1}k dont les première et dernière composantes valent 1. En effet,
voulant obtenir un nombre ayant exactement k chiffres, celui-ci ne commence
donc pas par 0 et pour avoir un nombre premier, le dernier chiffre doit être
1 sinon le nombre serait pair. Une fois ce nombre obtenu, on effectue des
tests de primalité pour déterminer si le nombre tiré est bel et bien premier.
Le théorème de raréfaction des nombres premiers (cf. théorème I.10.4) nous
donne une approximation du nombre de tirages à réaliser pour obtenir un
nombre premier de k bits : le nombre de nombres premiers de k bits est
2k 2k−1
π(2k ) − π(2k−1 ) ∼ −
ln 2k ln 2k−1
et le nombre total d’entiers impairs de k bits est 2 k−2 . Ainsi, en quotientant
les deux grandeurs, pour k = 100, la probabilité de tirer au hasard un
nombre premier est proche de 0, 0285 et pour k = 512, cette probabilité
passe à 0, 0056.
Le petit théorème de Fermat fournit un test de primalité probabiliste.
En effet, si m est premier, alors xm−1 ≡ 1 mod m. Donc, si pour x premier
avec m, on a xm−1 6≡ 1 mod m, alors on en conclut directement que m n’est
pas premier. L’algorithme pour tester m est le suivant .
III.8. Génération de grands nombres premiers 93

0.025

0.02

0.015

0.01

0.005

200 400 600 800 1000

Figure III.1. Probabilité de tirer un nombre premier de k bits.

Algorithme III.8.2 (Test de primalité de Fermat). La donnée est m.


Choisir aléatoirement x tel que 1 ≤ x < m.
Calculer g = pgcd(x, m).
Si g > 1, alors m n’est pas premier.
Sinon, calculer t = xm−1 mod m.
Si t 6≡ 1, alors m est composé.
Si t ≡ 1, alors m est peut-être premier.

Ainsi, la réponse fournie par l’algorithme est : soit “m est composé” (on
ne dispose pas de la factorisation de m mais on est certain que ce nombre
n’est pas premier) soit “m est peut-être premier”. En effet, pour m composé,
il existe des entiers x tels que xm−1 ≡ 1 mod m. La détermination du
caractère composé de m dépend de l’entier x tiré aléatoirement.
Définition III.8.3. Si x est tel que 1 ≤ x < m, pgcd(x, m) = 1 et x m−1 ≡ 1
mod m, alors on dit que x est un témoin de la primalité de m ou que m est au plus m
a de témoins,
un nombre pseudo-premier relativement à la base x. au plus on peut
croire en sa
Exemple III.8.4. Le nombre 91 est composé, 91 = 13.7. Considérons les primalité. . .

deux calculs suivants,


290 = 264 .216 .28 .22 ≡ 64 mod 91.
Ainsi, si dans l’algorithme, on avait tiré aléatoirement x = 2, on aurait
montré que 91 n’est pas premier. Autrement dit, 2 n’est pas témoin de la
primalité de 91. Par contre,
390 = 364 .316 .38 .32 ≡ 1 mod 91.
94 Chapitre III. RSA et cryptographie à clé publique

Dès lors, si dans l’algorithme on avait choisi x = 3, on n’aurait pas été en


mesure de prouver la non primalité de 91. On peut dire que 91 est pseudo-
premier relativement à 3.
Pour déterminer la probabilité avec laquelle l’algorithme pourra détecter
qu’un nombre n’est pas premier, on recourt au résultat suivant.
Proposition III.8.5. Considérons un entier m. Soit tous, soit au plus la
moitié des entiers x tels que 1 ≤ x < m et pgcd(x, m) = 1 sont témoins de
la primalité de m.
Remarque III.8.6. Dans la situation où un entier composé m est tel qu’au
plus la moitié des entiers x sont témoins de la primalité de m, si on effectue k
tests consécutifs, la probabilité que m soit considéré comme pseudo-premier
à l’issue de ces k tests est inférieure à 2 −k . En effet, il faudrait lors des k
choix aléatoires, tirer, à chaque fois, des nombres témoins de la primalité de
m.
Ainsi, sous l’hypothèse que les entiers non premiers testés possèdent
au moins un élément non témoin de la primalité, alors le tableau suivant
reprend la probabilité qu’un nombre soit premier s’il passe avec succès k
tests consécutifs.
k 1 2 3 4 5 6 7 8
P 0.5 0.75 0.875 0.9375 0.96875 0.984375 0.992188 0.996094
k 9 10 11 12 13 14
P 0.998047 0.999023 0.999512 0.999756 0.999878 0.999939

Démonstration. Supposons que x n’est pas témoin de la primalité de m,


i.e.,
xm−1 6≡ 1 mod m.
Soient w1 , . . . , wt tous les témoins (distincts) de primalité de m. Posons
ui = x w i mod m.
Les ui sont tous distincts car x est premier avec m donc inversible modulo
m. Si ui = uj avec i 6= j, alors on en déduirait que w i = wj , ce qui est
impossible. De plus, 1 ≤ ui < m et pgcd(ui , m) = 1 car x et les wi , par
définition, sont premiers avec m. Il est facile de voir que les u i ne sont pas
témoins de la primalité de m. En effet,
uim−1 = x m−1 m−1
| {z } |wi{z } 6≡ 1 mod m.
6≡1 ≡1
En conclusion, s’il existe x qui n’est pas témoin de la primalité de m, alors il
y a au moins autant de nombres ui non témoins que de wi qui sont témoins.
Ceci conclut la preuve.

III.8. Génération de grands nombres premiers 95

Définition III.8.7. Il existe des nombres composés m pour lesquels tout


x < m et premier avec m est témoin de primalité de m, i.e., x m−1 ≡ 1
mod m. Un tel nombre est appelé nombre de Carmichael. Bien évidemment,
la probabilité de détection de la non primalité de m donnée à la remarque
III.8.6 ne s’applique pas aux nombres de Carmichael. Le seul espoir bien
faible de détecter la non primalité d’un tel nombre m est de tirer au hasard
un nombre x ayant un facteur commun avec m.
Proposition III.8.8. Un nombre composé m est de Carmichael si et seule-
ment si il n’est divisible par aucun carré parfait (on dit parfois qu’il est
square-free ou quadratfrei) et pour tout p premier divisant m, p − 1 divise
m − 1.
Exemple III.8.9. Le nombre 561 = 3.11.17 est un nombre de Carmichael
(c’est même le plus petit). En effet, 560 = 280.2, 560 = 56.10 et 560 = 35.16.
On pourrait vérifier que tout x < m et premier avec m est tel que x m−1 ≡ 1
mod m.
Démonstration. Soit m ≥ 3 un nombre de Carmichael. Soit p un diviseur
premier de m. Soit a une racine primitive modulo p (i.e., un générateur de
Z∗p ) qui est première avec m.
Un choix d’un tel a est toujours possible. En effet, nous savons que Z p
est un champ et par le théorème I.6.20, Z ∗p possède exactement ϕ(p − 1)
générateurs. Soit u un de ces générateurs modulo p. Si m se décompose en
produit de facteurs premiers sous la forme p α q1β1 · · · qrβr , alors a s’obtient par
exemple comme solution du système


 a ≡ u mod p,

 a ≡ 1 mod q1 ,
..


 .

a ≡ 1 mod qr .
(En effet, si a est solution de ce système, il est nécessairement premier avec
m puisqu’il n’a aucun facteur commun avec m. Il suffit en fait d’assurer
qu’aucune de ces congruences ne soit nulle.) Le théorème des restes chinois 15
assure l’existence d’un tel a.
Puisque a est premier avec m qui est un nombre de Carmichael, on a
am−1 ≡ 1 mod m et donc am−1 ≡ 1 mod p (car p divise m). De plus, a
15Théorème des restes chinois. Si m , . . . , m sont deux à deux premiers, le système
1 n

x ≡ a1 mod m1 , . . . , x ≡ an mod mn
possède une unique solution modulo m = m1 · · · mn . Si, pour tout i = 1, . . . , n, on pose
Mi = m/mi et yi = Mi−1 mod mi , alors cette solution est donnée par
n
!
X
x= a i y i Mi mod m.
i=1
96 Chapitre III. RSA et cryptographie à clé publique

étant une racine primitive modulo p, son ordre modulo p est exactement
p − 1 et donc p − 1 divise m − 1.
Il nous reste à vérifier que p2 ne divise pas m. Supposons que p2 divise
m. Dans ce cas, ϕ(m) est alors divisible par p(p − 1) et en particulier par
p. Dès lors, Z∗m qui est un groupe contenant ϕ(m) éléments contient un
sous-groupe16 d’ordre p et donc aussi un élément b ∈ Z ∗m premier avec m et
d’ordre p modulo m. Puisque m est de Carmichael, b m−1 ≡ 1 mod m donc
p doit diviser m − 1. Ceci est impossible car p divise m.
Passons à la réciproque. Supposons que m est sans carré et que p − 1
divise m − 1 pour tout facteur premier p de m. Soient a premier avec m et
p un diviseur premier de m. Nous devons vérifier que a m−1 ≡ 1 mod m.
Puisque p est premier, par le petit théorème de Fermat, on a
ap−1 ≡ 1 mod p.
Puisque m − 1 est un multiple de p − 1, on a aussi
am−1 ≡ 1 mod p.
Cette dernière congruence est valable pour tous les diviseurs premiers de m.
Ainsi, si m = p1 · · · pr (avec pi 6= pj , si i 6= j car m est sans carré), alors
pour tout i = 1, . . . , r,
am−1 ≡ 1 mod pi .
De là, on en tire que
am−1 ≡ 1 mod m.


Corollaire III.8.10. Un nombre m de Carmichael est toujours impair.

Démonstration. En effet, si p ≥ 3 est un facteur premier de m, vu la


proposition précédente, p − 1 divise m − 1. Or p − 1 est pair donc m − 1
l’est aussi.


Remarque III.8.11. Signalons qu’il a été démontré récemment qu’il existe


une infinité de nombres de Carmichael 17. A titre indicatif, le nombre de
nombres de Carmichael inférieurs à 10 17 est
585355
ce qui est bien peu en comparaison des π(10 17 ) ∼ 2, 5. 1015 nombres pre-
miers inférieurs à 1017 . Pour la fonction comptant le nombre de nombres de
Carmichael inférieurs à n, on ne dispose pas de résultats analogues à ceux
16C’est une conséquence directe du lemme de Cauchy : tout groupe commutatif fini
dont l’ordre est divisible par un nombre premier p contient un élément d’ordre p. On peut
aussi le voir, dans le cas général, comme une conséquence du premier théorème de Sylow
: tout groupe fini dont l’ordre est divisible par un nombre premier p contient un élément
d’ordre p.
17W. R. Alford, A. Granville, C. Pomerance, There Are Infinitely Many Carmichael
Numbers, Ann. Math. 139, 703–722, (1994).
III.8. Génération de grands nombres premiers 97

dont on dispose pour π(n). Il faut alors recourir à des techniques 18 de calcul
élaborées pour énumérer ces nombres.
8.1. Test de Miller-Rabin. Un autre test de primalité souvent em-
ployé est le test de Miller-Rabin. L’avantage de ce test probabiliste est qu’il
n’existe pas dans cette situation d’analogue aux nombres de Carmichael. Le
principe suit la même ligne que le test de Fermat.
Soit m > 1 un nombre impair. On pose
s = max{r ∈ N | 2r divise m − 1}
et
m−1
d= .
2s
On dispose du résultat suivant19, analogue du petit théorème de Fermat.
Théorème III.8.12. Si m est un nombre premier et si x ∈ Z est premier
avec m, alors l’une des deux conditions est satisfaite :
I xd ≡ 1 mod m,
r
I il existe r ∈ {1, . . . , s − 1} tel que x2 d ≡ −1 mod m.
On dispose par conséquent d’un algorithme pour tester la primalité d’un
entier m. Si un entier x premier avec m est tel que aucune des deux con-
ditions du théorème III.8.12 n’est satisfaite, alors m est composé. On dit
alors qu’un tel x est témoin du caractère composé de m. Dans le cas con-
traire, on dit que m est un nombre pseudo-premier fort (strong pseudoprime)
pour la base x, l’adjectif “fort” faisant une référence au fait que le test de
Miller-Rabin est plus puissant que celui de Fermat.
Tout comme dans le test basé sur le théorème de Fermat, il suffit de tirer
au hasard “suffisamment” d’entiers x pour être convaincu de la primalité de
m. La probabilité avec laquelle le test de Miller-Rabin peut déterminer le
caractère composé d’un nombre est donnée par le résultat suivant.
Proposition III.8.13. Si m ≥ 3 est impair, il y a au plus (m−1)/4 entiers
x < m premiers avec m et non témoins du caractère composé de m.
Corollaire III.8.14. Si on applique k fois consécutivement le test de Miller-
Rabin à un nombre composé m, la probabilité de ne pas découvrir son car-
actère composé est inférieure à 4 −k .
Exemple III.8.15. Nous avons vu précédemment que m = 561 est un
nombre de Carmichael (et par conséquent impossible à déterminer comme
composé par le test de Fermat). Si on applique le test de Miller-Rabin, on
peut par exemple choisir x = 2. La plus grande puissance de 2 qui divise
18Bien qu’il existe de nombreux articles, on pourra par exemple voir : R.G.E. Pinch,
The Carmichael numbers up to 1015 , Mathematics of Computation 61, 381–391 (1993).
19Pour une démonstration, on se référera par exemple à : J.A. Buchmann, Introduc-
tion to cryptography, Springer (2001).
98 Chapitre III. RSA et cryptographie à clé publique

560 est 16 = 24 (car 560 = 16.35). Ainsi, s = 4 et d = 560/16 = 35. On


calcule
xd = 235 mod 561 = 263.
rd
Puisque le résultat n’est pas 1, on calcule x 2 pour r = 1, 2, . . . , s − 1 :
22.35 mod 561 = 166, 24.35 mod 561 = 67, 28.35 mod 561 = 1.
Par conséquent, aucune congruence ne donnant −1, on en déduit que 561
est composé et 2 en est le témoin.
Remarque III.8.16. On peut même montrer, en supposant l’hypothèse 20
de Riemann généralisée vérifiée, que si m est composé, alors il existe toujours
un témoin x du caractère composé de m tel que
x < 2(ln m)2 .
Ceci permet donc d’utiliser le test de Miller-Rabin de manière déterministe
en testant tous les x jusqu’à cette borne.

9. RSA et nombres composés


La section précédente nous a montré qu’utiliser l’algorithme découlant
du petit théorème de Fermat pour obtenir des nombres premiers peut très
bien mener à des nombres composés. Soit, par “malchance”, m est composé
et les tirages aléatoires ont tous fourni des témoins de primalité de m, soit
m est de Carmichael. Analysons donc le chiffrement RSA dans le cas où p
et q ne sont pas nécessairement premiers. On suppose ici que
p = p 1 p2
et que p1 , p2 , q sont premiers. On a n = p.q = p1 .p2 .q et
ϕ(n) = (p1 − 1)(p2 − 1)(q − 1).
Par contre, ne sachant pas que p n’est pas premier (les tests effectués n’ont
par exemple pas su détecter son caractère composé), la valeur de ϕ(n)
effectivement calculée est
ϕ0 (n) = (p − 1)(q − 1)
et on choisit des exposants e, d tels que
(5) e.d ≡ 1 mod ϕ0 (n)
20L’hypothèse de Riemann stipule que tous les zéros complexes de la fonction

X 1
ζ : C → C : s 7→ s
n=1
n
dont la partie réelle se trouve entre 0 et 1 ont leur partie réelle exactement égale à 1/2.
Par exemple, il est facile de voir que si Re s > 1, alors ζ(s) 6= 0 et que si Re s < 0, alors
les seuls zéros de la fonction ζ sont −2, −4, −6, . . . (appelés zéros triviaux). L’hypothèse
de Riemann généralisée est du même type mais pour une généralisation de la fonction ζ,
à savoir les L-séries de Dirichlet.
III.9. RSA et nombres composés 99

Soit
u = ppcm(p1 − 1, p2 − 1, q − 1)
et supposons que le texte clair x est premier avec n (si x est multiple de p 1 , p2
ou q, on procède comme on l’a déjà fait à plusieurs reprises, cf. proposition
III.2.1 et note en bas de la page 90, cela ne ferait que compliquer l’exposé).
Par conséquent, x est premier avec p 1 , p2 , q et
xp1 −1 ≡ 1 mod p1 , xp2 −1 ≡ 1 mod p2 , xq−1 ≡ 1 mod q.
Puisque u est multiple de p1 − 1, de p2 − 1 et de q − 1, on a aussi
xu ≡ 1 mod p1 , xu ≡ 1 mod p2 , xu ≡ 1 mod q.
De là, p1 , p2 , q étant premiers et distincts, on en tire
xu ≡ 1 mod n.
Il est clair que u divise ϕ(n) (par définition, u est le ppcm des facteurs
apparaissant dans ϕ(n)).
Pour un texte clair x chiffré en xe mod n, nous avons à présent deux
situations à envisager :
I soit u divise le ϕ0 (n) erroné,
I ou bien, u ne divise pas le ϕ0 (n) erroné.
Dans le premier cas, α u = ϕ0 (n) et donc, au vu de (5),
0
(xe )d = x1+kϕ (n) = x1+k α u ≡ x mod n.
Par conséquent, toute paire (e, d) d’exposants de chiffrement et de déchiffre-
ment telle que e.d ≡ 1 mod ϕ0 (n) convient. (En effet, les exposants ont été
calculés avec le ϕ0 (n) erroné.)
Dans le second cas, les choses ne se passent pas aussi bien. En général,
dk (ek (x)) 6= x ! Ceci est vérifié sur l’exemple suivant.
Exemple III.9.1. Soient
p = 391(= 17.23) et q = 281.
Ici, n = 109871 et le ϕ0 (n)
calculé (lorsqu’on ne s’est pas aperçu que p n’était
0
pas premier) est ϕ (n) = 390.280 = 109200. Avec nos notations,
u = ppcm (16 = 24 , 22 = 2.11, 280 = 23 .5.7) = 24 .5.7.11 = 6160.
Ici, u ne divise pas ϕ0 (n) (109200 = 17.6160+4480). Si on décide de prendre
e = 19, on obtient l’inverse de e modulo ϕ 0 (n) par l’algorithme d’Euclide
étendu et on trouve d = 45979. Le texte clair x = 8 est bien premier avec
n. Nous devrions avoir (dans le cas d’un vrai RSA) x ed ≡ x mod n, mais
ici on trouve
xed mod 109871 = 95548 6= 8.
100 Chapitre III. RSA et cryptographie à clé publique

10. Algorithmes de factorisation


Dans ce cours introductif, nous ne voulons pas développer plus en avant
les algorithmes de factorisation connus pour tenter de factoriser n. On peut
par exemple citer : le crible d’Eratostène, le crible quadratique (quadratic
sieve), des algorithmes sur les courbes elliptiques, le crible algébrique (num-
ber field sieve), l’algorithme ρ, la méthode p − 1 de Pollard, la méthode p + 1
de Williams ou encore l’algorithme de factorisation par fractions continues.
Bien évidemment, toute personne désirant implémenter de manière sûre le
RSA doit être au courant de ces algorithmes pour adapter son choix de p et
q. Actuellement, aucun algorithme de factorisation connu ne peut factoriser
en un temps raisonnable un entier n ∼ 2 1024 .
Le crible d’Eratostène bien que simpliste — on teste la divisibilité de n
par les entiers successifs21 — peut être utilisé pratiquement pour des n <
1012 . Pour donner une idée des ordres de grandeurs, imaginons un ordinateur
capable de réaliser 109 divisions par seconde ! Si n est de l’ordre de 2 1024 ,

n ∼ 10150 . Il faudrait donc au crible d’Eratostème près de 10 140 secondes
ce qui dépasse de très loin l’âge de l’univers !
Illustrons la méthode p − 1 de Pollard (1974). Il s’agit d’un algorithme
simple qui peut parfois s’appliquer à de grands nombres.
Algorithme III.10.1 (Méthode p − 1 de Pollard). On se donne un nombre
n à factoriser et une borne B.
Choisir aléatoirement g ∈ {2, . . . , n − 1}.
Calculer t = pgcd(g, n).
Si t > 1, alors on a trouvé un facteur de n.
Sinon, calculer a = g B! mod n.
Calucler d = pgcd(a − 1, n).
Si d > 1, d est un facteur.
Sinon, facteur non trouvé, recommencer avec un B supérieur.
Remarquons dès à présent que le calcul de a nécéssite B − 1 exponentiations
modulaires. Ainsi, quand nous parlons de borne B “suffisamment petite”,
cela signifie qu’il s’agit d’une borne réaliste par rapport à la puissance de
calcul disponible. Montrons comment fonctionne cet algorithme.
Soit p un facteur premier de n tel que toute puissance r α d’un nombre
premier r apparaissant dans la décomposition en facteurs premiers de p − 1,
soit inférieure à la borne B, i.e., cette décomposition est de la forme
p − 1 = r1α1 · · · rtαt avec riαi ≤ B, ∀i.
Si cette borne B est suffisamment petite, il est alors facile de déterminer
par cette méthode un multiple de p − 1 sans pour autant connaı̂tre la valeur
de p − 1.
21On peut raffiner la méthode en ne considérant que les nombres non multiples des
nombres considérés précédemment.
III.10. Algorithmes de factorisation 101

Puisque a ≡ g B! mod n, on a aussi a ≡ g B! mod p car p divise n. Par


le petit théorème de Fermat, g p−1 ≡ 1 mod p (si g est premier avec p, ce
que nous pouvons supposer au vu de l’algorithme). Puisque nous supposons
que tout facteur r α de p − 1 est inférieur à B, on en déduit que
p − 1 divise B!.
En effet, les riαi sont distincts deux à deux et tous ≤ B. De là,
a ≡ g B! = g m (p−1) = (g p−1 )m ≡ 1 mod p
et a − 1 est un multiple de p. Par conséquent, il ne reste plus qu’à calculer
le pgcd de n et de a − 1.
Remarque III.10.2. On retrouve donc d’une certaine façon la mise en
garde 4. de la section 7 concernant le choix de p et q dans l’élaboration
du RSA. Cette technique est aussi l’analogue d’une technique plus récente
basée sur les courbes elliptiques sur F p et proposée par H. W. Lenstra (cf.
par exemple, [10, 12]).
Exemple III.10.3. Considérons l’entier (composé)
n = 15770708441.
Avec g = 2 et B fixé à 200, on calcule22
g 200! mod n = 6094850739.
Ensuite, on calcule le pgcd de 6094850739 − 1 et de n et on trouve
135979
qui est donc un facteur de n. En fait, n est le produit des deux nombres
premiers suivants :
p = 115979 (p − 1 = 2.103.563) et q = 135979 (q − 1 = [Link]).
Ainsi, une borne B ≥ 173 permettra toujours la factorisation de n. On
pourra observer qu’une borne B ≥ 563 ne donnera plus de résultat, car dans
ce cas, a sera congru à 1 modulo p et q donc aussi modulo n. De toute façon,
en pratique, on considère les bornes les plus petites possibles.
Remarque III.10.4. On peut montrer que cet algorithme fonctionne en
un temps polynomial en n à condition que la borne convenanble B soit en
O((log n)i ). Cependant, pour un grand nombre n arbitraire, il est probable

que la borne B doive augmenter jusque n et dans ce cas, la méthode p − 1
n’est pas plus rapide que le crible d’Eratostène.
Nous terminons cette section par quelques repères concernant l’état
actuel de la factorisation de grands entiers.
22PowerMod[2,Factorial[200],15770708441]
102 Chapitre III. RSA et cryptographie à clé publique

Remarque III.10.5. Voici un petit aperçu de l’état actuel de la factorisa-


tion des grands nombres premiers. (Rappelons que 2 1024 comporte un peu
plus de 300 chiffres décimaux).
I En 1998, des nombres de taille 1070 pouvaient être factorisés en
près de 10 heures sur une station de travail.
I A cette même époque, il fallait un an pour factoriser un nombre de
100 chiffres décimaux sur une station.
I En 1999, un nombre de 155 chiffres a été factorisé en plus de 5
mois par 292 ordinateurs en réseau. Des calculs préalables à la
factorisation ont pris près de 4 mois à des super-ordinateurs CRAY.
I En décembre 2003, le “RSA Challenge number” RSA-576 de 576
bits (174 chiffres décimaux) a été factorisé 23. Ce concours consiste
à trouver la factorisation de grands nombres premiers et veut ainsi
démontrer la sécurité du RSA pour des choix de clés appropriés.
I Le “RSA Challenge number” RSA-640 de 640 bits suivant
3107418240490043721350750035888567930037346022842727545720
1619488232064405180815045563468296717232867824379162728380
3341547107310850191954852900733772482278352574238645401469
1736602477652346609
a été factorisé le 5 novembre 2005 (193 chiffres décimaux). Un
prix de 20000 dollars avait été proposé à quiconque en fournirait la
factorisation. Cette factorisation a nécessité plus de quatre mois de
calculs sur un réseau de machines ce qui représente plus de 30 ans
de calcul pour un seul processeur Opteron cadencé à 2,2 Ghz. A
titre indicatif, on propose 100000 dollars pour le challenge number
RSA-1024 . . .
On peut souvent lire des messages comme ceux-ci :
“Using a minimal key length of 1024 bits, it is guaranteed that RSA can
be considered safe for the near future as long as thre will be no fundamental
advance in the factoring of large numbers.”
“Clearly, the factoring of a challenge-number of specific length does not
mean that the RSA cryptosystem is ”broken.” It does not even mean, neces-
sarily, that keys of the same length as the factored challenge number must
be discarded. It simply gives us an idea of the amount of work required to
factor a modulus of a given size. This can be translated into an estimate of
the cost of breaking a particular RSA key pair.
Suppose, for example, that in the year 2010 a factorization of RSA-768 is
announced that requires 6 months of effort on 100,000 workstations. In this
hypothetical situation, would all 768-bit RSA keys need to be replaced? The
answer is no. If the data being protected needs security for significantly less
than six months, and its value is considerably less than the cost of running
23[Link]
III.11. Logarithme discret 103

100,000 workstations for that period, then 768-bit keys may continue to be
used.”

11. Logarithme discret


Soit G un groupe multiplicatif cyclique contenant n éléments et γ un
générateur de G.
Définition III.11.1. Soit x ∈ G. Par analogie avec la fonction logarithme
usuelle, le logarithme discret de x est le plus petit exposant d tel que
x = γd.
On utilise alors la notation dlog x = d ou même dlog γ x = d. Ainsi,
dlogγ : G → {1, . . . , |G|}.
Exemple III.11.2. Dans Z∗17 , un générateur est donné par 3. Autrement
dit, 3 est une racine primitive modulo 17. On dispose des valeurs suivantes
modulo 17 des puissances de 3 :
i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
3i 3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1
Ainsi, par exemple,
dlog3 15 = 6 et dlog 3 14 = 9.
Remarque III.11.3. On peut parfois considérer une version quelque peu
plus générale que le problème de la détermination du logarithme discret de
x. Soit G un groupe quelconque (pas nécessairement cyclique), dans lequel
on considère deux éléments x, y ∈ G. La question qui est posée est alors de
savoir s’il existe d tel que xd = y et dans ce cas, de rechercher le plus petit d
ayant cette propriété. En particulier, certains cryptosystèmes considèrent le
problème du logarithme discret dans des groupes construits sur des courbes
elliptiques ou encore sur le groupe multiplicatif F ∗pf . Il est souvent utile de
considérer cette version généralisée du problème car même si F ∗pf possède
ϕ(pf − 1) générateurs, il n’est pas toujours aisé d’en obtenir un.
Si G = Z∗p où p est un grand nombre premier, alors Z ∗p est cyclique. Si
on se donne un générateur γ et un élément x ∈ Z ∗p , le calcul du logarithme
discret est conjecturé être difficile. Une technique basique pour le calculer
serait simplement d’énumérer les puissances de γ jusqu’à retrouver x. Ceci
est déraisonnable dans le cas d’un p grand. Ainsi, on se retrouve dans une
situation semblable à celle du RSA. L’exponentiation x = γ a mod p est
facile à calculer si on se donne γ et a. Par contre retrouver a à partir de γ
et x est considéré comme difficile. Nous avons donc les bases d’une nouvelle
fonction à sens unique.
104 Chapitre III. RSA et cryptographie à clé publique

Tout comme pour la factorisation des grands nombres, il existe ici des
algorithmes de recherche du logarithme discret (citons par exemple : l’algo-
rithme “baby-step giant-step” de Shanks, la ρ-méthode de Pollard, l’algo-
rithme de Pohlig-Hellman, le calcul d’indices,. . . ). Cependant aucun algo-
rithme connu à ce jour ne donne de résultats satisfaisant pour des nombres
premiers p arbitraires suffisamment grands. Les cryptosystèmes construits
sur ce problème sont dès lors considérés comme sûr. Les complexités des al-
gorithmes de factorisation de grands nombres et de recherche de logarithme
discret sont fort proches.
Remarque III.11.4. Si G = (Z∗p , ·), alors Z∗p est cyclique d’ordre p − 1
donc isomorphe au groupe additif (Z p−1 , +). Il existe une bijection
ψ : (Z∗p , ·) → (Zp−1 , +)
telle que
ψ(xy mod p) = ψ(x) + ψ(y) mod p − 1.
De là, on en tire que
ψ(γ a mod p) = a ψ(γ) mod p − 1.
Donc, il vient

x ≡ γa mod p ⇔ ψ(x) ≡ a ψ(γ) mod p − 1


⇔ dlogγ x = a ≡ ψ(x)(ψ(γ))−1 mod p − 1.
Ainsi, si on dispose d’une méthode efficace pour calculer cet isomorphisme
ψ, on obtient alors un algorithme efficace pour calculer le logarithme discret
dans Z∗p car les calculs dans (Zp−1 , +) sont simples à effectuer. Cependant,
on ne connaı̂t pas de méthode générale pour déterminer ψ pour un nombre
premier arbitraire p. Ainsi, la détermination de ψ est aussi difficile que la
détermination du logarithme discret.
Si on applique cette méthode à un groupe G quelconque et si pour ce
groupe, l’isomorphisme est facile à obtenir, alors il vaut mieux ne pas utiliser
un tel groupe pour construire un cryptosystème, puisque dans ce cas, le
problème du logarithme discret sera considéré comme facile.
Néanmoins, signalons que pour des groupes construits sur des courbes
elliptiques ou encore sur le groupe multiplicatif F ∗pf , on ne dispose pas de
méthode générale de recherche de ψ.

12. Protocole d’échange des clés de Diffie-Hellman


Si on suppose le problème du logarithme discret difficile, alors on dispose
d’un protocole d’échange de clés ne recourant pas à un canal de communi-
cation sûr.
Bob et Alice choisissent un grand nombre premier p et une racine prim-
itive γ modulo p. Ces deux nombres peuvent être publiés (ou être espionnés
III.12. Protocole d’échange des clés de Diffie-Hellman 105

par Oscar). Alice choisit un exposant a qu’elle conserve soigneusement secret


et elle envoie alors à Bob
A = γa mod p.
Bob fait de même. Il choisit un exposant b et envoie à Alice
B = γb mod p.
Alice (connaissant a) peut calculer
B a = γ ab mod p
et de même, Bob (connaissant b) peut lui aussi calculer
Ab = γ ab mod p.
Cette valeur commune leur sert à présent de clé secrète commune.
Si l’opposant Oscar espionnait les échanges entre Alice et Bob, alors il a
sa disposition les éléments suivants :
p, γ, A et B.
Si le problème du logarithme discret est difficile, ne connaissant ni a ni b, il
n’est pas en mesure de retrouver la clé secrète B a = Ab mod p.
Remarque III.12.1. Considérons l’attaque du “man in the middle”. Si
Oscar a le moyen d’intercepter les messages d’Alice et de Bob et par la même
occasion, d’usurper leur identité, il est alors en mesure d’obtenir les messages
échangés par ceux-ci et de les altérer à loisir. Avec une telle configuration et

Alice Oscar Bob

Figure III.2. Attaque du ”man in the middle”.

en utilisant le protocole présenté ci-dessus, Alice calcule A et croit l’envoyer


à Bob. C’est Oscar qui reçoit en fait A. Oscar se faisant passer pour Bob,
choisit o, calcule
O = γ o mod p
et l’envoie à Alice. Ainsi, γ ao mod p sert de clé secrète aux échanges entre
Alice et Oscar. De plus, Alice pense que cette clé sert à communiquer entre
elle et Bob. De la même façon, Bob calcule B et l’envoie à Oscar pensant
l’envoyer à Alice. Cette fois, γ bo mod p sert de clé entre Bob et Oscar.
Ainsi, Oscar servant d’intermédiaire peut à sa guise modifier les messages
entre Alice et Bob.
Pour se prémunir d’une telle attaque, il est dès lors nécessaire de recourir
à un procédé de signature.
106 Chapitre III. RSA et cryptographie à clé publique

13. Cryptosystème d’ElGamal


Ce cryptosystème est encore basé sur la difficulté à résoudre le problème
du logarithme discret. Nous allons l’envisager dans Z ∗p mais il s’adapte aisé-
ment à d’autres groupes (comme F∗pf ou encore, les groupes sur les courbes
elliptiques). Pour assurer la sécurité du cryptosystème, il est conseillé de
prendre p supérieur à 2768 (il faudrait bien sûr également ne pas considérer
des nombres premiers particuliers pour lesquels les algorithmes connus per-
mettraient de résoudre raisonnablement le problème).
Décrivons ce cryptosystème. On choisit tout d’abord un grand nombre
premier p (en utilisant par exemple, le test de Fermat ou celui de Miller-
Rabin) et un élément γ ∈ Z∗p . Il serait préférable que γ soit une racine
primitive modulo p, mais cela n’est pas nécessaire (cf. remarque III.11.3).
Remarque III.13.1. Dans F∗p , le nombre de générateurs est égal à ϕ(p−1)
(cf. théorème I.6.20). On peut montrer 24 que pour tout n ≥ 5, on a
n
ϕ(n) ≥ .
log log n
Ainsi, en tirant un élément γ au hasard dans Z ∗p , on a de “bonnes chances”
qu’il s’agisse d’une racine primitive puisque la proportion de tels éléments
dans Z∗p est d’au moins 1/ log log(p − 1). Comme le montre la figure III.3,
cette fonction décroı̂t lentement. A titre indicatif, 1/ log log 2 768 ∼ 0, 1593.

0.44

0.42

0.4

0.38

0.36

0.34

0.32

6 6 6 6 7
2·10 4·10 6·10 8·10 1·10

Figure III.3. Graphique de 1/ log log x pour x ≤ 10 7 .

De plus, cette borne donne la situation la plus défavorable. En effet, si


p − 1 = 2.q avec q un nombre premier, alors ϕ(p − 1) = q − 1 et la probabilité
de tirer au hasard une racine primitive est dès lors proche de 1/2.
24J. Rosser and L. Schoenfeld, Approximate formulas for some functions of prime
numbers, Illinois J. of Math. 6, 69–94, (1962).
III.13. Cryptosystème d’ElGamal 107

L’ensemble des textes clairs est P = Z p (on emploie, si nécessaire, des


conventions de codage). Bob choisit aléatoirement un exposant 0 < d < p−1
qu’il garde soigneusement secret et il calcule
e = γd mod p.
Bob publie
k = (p, γ, e).
On appelle parfois e la clé de Diffie-Hellman de Bob. Si Alice veut envoyer
un message x à Bob, elle choisit un nombre aléatoire 0 < b < p − 1 et envoie
à Bob le couple
(γ b mod p, eb x mod p).
Remarquons dès à présent que eb = (γ d )b = (γ b )d .
Pour le déchiffrement, Bob reçoit le couple ci-dessus et doit retrouver
x. Pour éviter de calculer (eb )−1 mod p (ce qui, par ailleurs, est supposé
difficile pour Bob puisqu’il lui faudrait calculer le logarithme discret dlog γ γ b
pour retrouver l’exposant b), Bob connaissant d, connaı̂t aussi p − 1 − d et
il lui suffit alors de calculer
(γ b )p−1−d eb x mod p
pour retrouver x. En effet,
(γ b )p−1−d eb x ≡ (γ p−1 )b (γ b )−d eb x ≡ (γ p−1 )b (γ b )−d (γ b )d x ≡ x mod p.
Que γ soit ou non une racine primitive modulo p, on a toujours γ p−1 ≡ 1
mod p car l’ordre d’un élément de Z ∗p divisant l’ordre du groupe, p − 1 est
un multiple de l’ordre de γ.
Remarque III.13.2. Les calculs nécessaires à ce cryptosystème sont du
même type que ceux envisagés dans le RSA; néanmoins, le RSA est bien plus
lent. Il s’agit simplement d’exponentiations modulaires. Le déchiffrement
nécéssite une exponentiation et le chiffrement en nécéssite deux. Cependant,
les calculs de γ b mod p et eb mod p peuvent être réalisés une fois pour
toutes par Alice (elle choisit un seul b pour tous ces textes clairs x) et
donc être supposés précalculés. Par conséquent, le chiffrement d’ElGamal
ne nécéssite en fin de compte qu’une multiplication modulo p ce qui est de
loin bien plus efficace que le RSA.
Exemple III.13.3. Nous utilisons une fois encore Mathematica. Constru-
isons un cryptosystème comme suit.
:> p=Prime[123456789]
Out[]= 2543568463
:> gamma=Prime[12345678]
Out[]= 224284387
:> d=12345678;
:> e=PowerMod[gamma,d,p]
Out[]= 831108609
108 Chapitre III. RSA et cryptographie à clé publique

Ainsi, Bob publie


(2543568463, 224284387, 831108609).
Supposons qu’Alice désire envoyer le texte suivant.
:> texteclair = "une douleur foudroyante lui traversa la
tete,une douleur comme il n’en avait encore jamais ressenti.
c’etait comme si sa cicatrice avait soudain pris feu."
Nous utilisons la même convention que dans la mise en pratique du RSA.
Ici, on a
:> N[Log[32,p]]
Out[]= 6.24884
On utilisera donc des blocs de 6 lettres consécutives comme unité de base
(326 < p < 327 ). Ainsi, pour coder le texte clair, il vient (en ajoutant
éventuellement des zéros pour obtenir un texte de longueur divisible par 6),
:> codetxclair = ajout[code[texteclair], 6]
Out=[] {21, 14, 5, 0, 4, 15, 21, 12, 5, 21, 18, 0, 6, 15, ...
..., 9, 14, 0, 16, 18, 9, 19, 0, 6, 5, 21, 28, 0, 0}
En remplaçant six éléments consécutifs de Z 32 par l’entier correspondant,
on trouve
:> liste=codebloc[codetxclair,6]
Out[]= {719487119, 717411904, 217748047, 840388768, 424968850,
56805985, 12616325, 677238213, 4707717, 723521005, 441460096,
500348929, 739561477, 473417888, 337020211, 19058277,
491057155, 978978100, 3650981, 20218465, 3443764, 613520385,
739561491, 525468974, 17376864, 207286272}
Comme toujours, on peut vérifier
:> {21, 14, 5, 0, 4, 15}.Table[32^(5-i),{i,0,5}]
que
719487119 = 21.325 + 14.324 + 5.323 + 0.322 + 4.32 + 15.
Alice choisit à présent un nombre b et calcule une fois pour toutes γ b et eb
modulo p,
:> b = Random[Integer, {1, p - 1}]
Out[]= 2077626273
:> PowerMod[gamma,b,p]
Out[]= 2174065976
:> temp=PowerMod[e,b,p]
Out[]= 401303819
Elle est à présent en mesure de chiffrer son texte :
:> codetxchiffre = Mod[temp*liste, p]
Out[]= {1224703372, 1813996580, 879587936, 965469907,
1572901588, 1078313219, 1291506749, 397171217, 2052820288,
1630733064, 162334271, 1346975257, 1481548401, 31283547,
III.13. Cryptosystème d’ElGamal 109

452298537, 2531435220, 2538016017, 2419180759, 1225202253,


373714894, 1135501389, 1561257229, 2012664941, 1607195455,
371515150, 1134385436}
Elle envoie alors à Bob, en plus du texte chiffré, la valeur
γb mod p = 2174065976.
Pour décoder le texte chiffré, tout comme pour le RSA, on considère des blocs
de longueur 7. En effet, les nombres e b x mod p calculés sont inférieurs à
p, mais puisque 326 < p < 327 , ils peuvent être supérieurs à 32 6 . Ainsi, on
obtient
:> decodebloc[codetxchiffre,7]
Out[]= "ado:?llava:yad zfz.s .[Link] dkphcafouua’ kz
xvpqa’ewcj apsf xh dzzaq?ahdrmpyald’hsq ’zvj, mokayibkne
hvtbktnchqbhccqfwadpnfrm kdl,:[Link]’yhma,?[Link]
y? kbiwxnaayzvh."
Pour que Bob puisse déchiffrer ce message, partant de la liste codetxchiffre,
il calcule d’abord (γ b )p−1−d puis il ne lui reste plus qu’à effectuer des mul-
tiplications modulo p :
:> temp = PowerMod[2174065976, p-1-d, p]
Out[]= 438045370
:> Mod[temp*codetxchiffre, p]
Out[]= {719487119, 717411904, 217748047, 840388768, 424968850,
56805985, 12616325, 677238213, 4707717, 723521005, 441460096,
500348929, 739561477, 473417888, 337020211, 19058277, 491057155,
978978100, 3650981, 20218465, 3443764, 613520385, 739561491,
525468974, 17376864, 207286272}
ceci rend bien le codage du texte clair original. Pour s’en convaincre, il
suffirait de calculer
:> decodebloc[%,6]
CHAPITRE IV

Suites linéaires récurrentes

1. Introduction
Dans cette section introductive, nous allons considérer le “problème de
Josephus1”. L’histoire, bien que douteuse, raconte que Josephus faisait partie
d’un groupe de rebelles juifs. Lorsque ce groupe fut sur le point d’être
capturé par les romains pendant la guerre qui les opposait, les membres de
ce groupe décidèrent de se donner tour à tour la mort plutôt que d’être faits
prisonniers par leurs ennemis. Il avait été décidé, que placés en cercle, ils
exécuteraient un membre sur deux. Josephus ne partageant pas cette folie
meurtrière, se devait de trouver la position à occuper pour être le dernier
survivant.
Exemple IV.1.1. Si le groupe comporte dix personnes — numérotées
1, 2, . . . , 10 — placées en cercle et si la première personne à être exécutée
porte le numéro 2, la suite des exécutions est la suivante :
2, 4, 6, 8, 10, 3, 7, 1, 9.
Ainsi, la position que doit occuper Josephus si le groupe comporte 10 per-
sonnes, est la position 5, ce que l’on notera par
J(10) = 5.
Dans Mathematica, on dispose de la fonction de Josephus. Après avoir
chargé l’extension appropriée, on a
:> << DiscreteMath‘Combinatorica‘
:> Josephus[10,2]
Out[]= {8, 1, 6, 2, 10, 3, 7, 4, 9, 5}
qui représente l’inverse de la permutation obtenue en éliminant une personne
sur deux, ce qui nous intéresse ici est le dernier élément de cette liste.
Notre but, dans cet exemple introductif, est d’obtenir une formule close 2
pour J(n). Pour ce faire, nous allons tout d’abord distinguer deux cas, selon
la parité de n.
1Ce problème est extrait de l’excellent livre de L. Graham, D. E. Knuth, O. Patashnik,
Concrete Mathematics, Addison Wesley, Second edition (1994). On peut noter que la suite
de Josephus est k-régulière, cf. J.-P. Allouche, J. Shallit, The ring of k-regular sequences
II, Theoret. Comput. Sci. 307 (2003), 3–29.
2i.e., mettre J(n) sous une forme ne faisant intervenir que des fonctions élémentaires
bien connues.

111
112 Chapitre IV. Suites linéaires récurrentes

Si n est pair, alors n = 2m et après le premier tour d’exécutions, on aura


supprimé les membres 2, 4, 6, . . . , 2m. On se ramène dès lors à un problème
semblable avec m personnes numérotées cette fois
1, 3, . . . , 2m − 1.
De là, on en tire que
(6) J(2m) = 2 J(m) − 1.
Si n est impair, alors n = 2m + 1 et après le premier tour d’exécutions, on
aura supprimé les membres 2, 4, 6, . . . , 2m. Ensuite, la première personne
exécutée porte le numéro 1 et on se ramène à un problème semblable avec
m personnes numérotées
3, 5, . . . , 2m − 1, 2m + 1.
On tire alors que
(7) J(2m + 1) = 2 J(m) + 1.
De plus, on a trivialement que J(1) = 1 et ainsi, on peut calculer, pour tout
n ≥ 1, la valeur de J(n) au moyen des relations

 J(1) = 1
J(2m) = 2 J(m) − 1, si m ≥ 1

J(2m + 1) = 2 J(m) + 1, si m ≥ 1.
A ce stade, on dispose d’un algorithme pour calculer J(n) quel que
N’oubliez pas soit n ≥ 1, mais pas encore de formule close (bien plus avantageuse). Par
qu’il s’agit
d’une question exemple, avec ces relations, on calcule les premières valeurs de J(n) :
de vie ou de mort !
n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J(n) 1 1 3 1 3 5 7 1 3 5 7 9 11 13 15 1
Au vu de ce tableau, on peut proposer la formule close suivante pour J(n).
Pour tout n ≥ 1, il existe m unique tel que 2 m ≤ n < 2m+1 . Ainsi, n = 2m +r
avec 0 ≤ r < 2m et nous proposons
J(2m + r) = 2r + 1.
Il nous suffit de vérifier cette proposition par récurrence sur m. Pour le
cas de base, si m = 0, alors r = 0 et J(1) = 1. Passons à la récurrence
proprement dite et considérons une fois encore deux cas.
Si r est pair, 2m + r est pair (m > 0), alors en utilisant (6) et l’hypothèse
de récurrence, on a
 m  
m 2 +r r
J(2 + r) = 2 J − 1 = 2 J 2m−1 + −1 = 2r + 1.
2 | {z 2 }
r+1
IV.1. Introduction 113

Si r est impair, 2m + r l’est aussi et on utilise cette fois (7) et l’hypothèse


de récurrence pour obtenir
 m   
m 2 +r−1 m−1 r−1
J(2 + r) = 2 J +1=2 J 2 + +1 = 2r + 1.
2 2
| {z }
r

Remarque IV.1.2. Dans la solution fournie ci-dessus, les puissances de 2


jouent un rôle particulier. En effet, si nous représentons n = 2 m + r en base
2, on a
ρ2 (n) = xm xm−1 · · · x0
où xm = 1 car 2m ≤ n < 2m+1 et
ρ2 (r) = xm−1 · · · x0
car r < 2m . Pour multiplier un nombre par deux en base 2, il suffit de
placer un zéro à la droite de sa représentation. Ainsi, si on dispose de la
représentation en base 2 de n, alors la représentation en base 2 de J(n) est
donnée par
ρ2 (J(n)) = xm−1 · · · x0 1.
Puisque xm = 1, on peut encore l’écrire
ρ2 (J(n)) = xm−1 · · · x0 xm
ce qui signifie que pour obtenir J(n), il suffit de réaliser une permutation
circulaire d’une unité vers la gauche des chiffres de la représentation en base
2 de n. Cette observation permet de montrer que pour tout n ≥ 1, la
suite (J k (n))k∈N décroı̂t (on a toujours J(n) ≤ n) puis devient stationnaire.
Considérons un exemple. Soit n = 53 avec ρ 2 (n) = 110101. Il vient (en
prenant comme convention de représenter les nombres en base 2),
J(110101) = 101011
J(101011) = 10111
J(10111) = 1111
J(1111) = 1111
..
.
Il est facile de voir que si la représentation de n comprend t chiffres 1, la
suite (J k (n))k∈N se stabilise à 2t − 1 car
ρ2 (2t − 1) = 11 · · · 1}
| {z

et on a stabilisation lorsque k est au moins égal au nombre de “1” se trouvant
à gauche du “0” le plus à droite dans ρ 2 (n).
Remarque IV.1.3. On peut généraliser le problème de Josephus en recher-
chant une formule close pour f (n) lorsque ce dernier satisfait des relations
114 Chapitre IV. Suites linéaires récurrentes

généralisées comme suit



 f (1) = α
f (2m) = 2 f (m) + β, si m ≥ 1

f (2m + 1) = 2 f (m) + γ, si m ≥ 1.
Considérons tout d’abord les premières valeurs de f (n) :
n f (n)
1 α
2 2α + β
3 2α + γ
4 4α + 3β
5 4α + 2β + γ
6 4α + β + 2γ
7 4α + 3γ
8 8α + 7β
9 8α + 6β + γ
..
.
Au vu des premières valeurs, si on exprime f (n) sous la forme générale
f (n) = A(n) α + B(n) β + C(n) γ
et si n = 2m + r avec 0 ≤ r < 2m , alors on peut émettre l’hypothèse que
A(n) = 2m , B(n) = 2m − r − 1, et C(n) = r.
Tout comme précédemment, on peut vérifier cette dernière conjecture par
récurrence. Nous proposons ici une autre approche pour déterminer les
fonctions A, B, C. La construction d’un “répertoire” s’avère dans bien des
cas plus simple et plus rapide.
Si on considère le cas particulier α = 1 et β = γ = 0, on obtient par une
récurrence immédiate que A(2m + r) = 2m .
Maintenant, utilisons la définition de f (n) donnée ci-dessus et recher-
chons s’il existe des valeurs de α, β et γ pouvant définir une fonction parti-
culièrement simple comme par exemple, la fonction constante f (n) = 1. Il
vient 
 1 = f (1) = α
1 = f (2m) = 2 f (m) + β = 2 + β, si m ≥ 1

1 = f (2m + 1) = 2 f (m) + γ = 2 + γ, si m ≥ 1
et on en tire α = 1, β = γ = −1. Un tel choix de constantes définit donc la
fonction f (n) = 1. Autrement dit, on a
1 = A(n) − B(n) − C(n).
IV.2. Définitions et premières propriétés 115

On recommence la procédure décrite ci-dessus pour voir s’il existe des


valeurs de α, β et γ pouvant définir la fonction f (n) = n. On a

 1 = f (1) = α
2m = f (2m) = 2 f (m) + β = 2m + β, si m ≥ 1

2m + 1 = f (2m + 1) = 2 f (m) + γ = 2m + γ, si m ≥ 1
et on en tire α = γ = 1 et β = 0, c’est-à-dire
n = A(n) + C(n).
En regroupant l’ensemble des informations que nous avons obtenues, il
vient

 A(n) = 2m , si n = 2m + r avec 0 ≤ r < 2m
A(n) − B(n) − C(n) = 1

A(n) + C(n) = n.
De là, on vérifie aisément que notre conjecture s’avère être la bonne.
Tout au long de ce chapitre, nous allons essayer de développer des ou-
tils permettant d’obtenir des formes closes pour le n-ième terme d’une suite
satisfaisant une relation de récurrence linéaire (à coefficients constants). Pré-
cisons ce que l’on entend par suite linéaire récurrente.

2. Définitions et premières propriétés


Sauf mention explicite, on se place sur un anneau commutatif (A, +, ·).
On dénote par AN l’ensemble des suites sur A. En définissant terme à terme
la somme de deux suites et le produit d’une suite par un élément de A, A N
jouit trivialement d’une structure de A-module.
Définition IV.2.1. Une suite (xn )n∈N ∈ AN est dite linéaire récurrente
homogène si elle satisfait, pour tout n ≥ 0, une relation de récurrence linéaire
homogène (à coefficients constants) de la forme
(8) xn+k = ak−1 xn+k−1 + · · · + a0 xn
avec ak−1 , . . . , a0 ∈ A. On dit que k est le degré ou l’ordre de la relation. La
relation de récurrence linéaire est parfois notée
xn+k − ak−1 xn+k−1 − · · · − a0 xn = 0.
On emploie aussi les termes équation de récurrence linéaire et solution pour
désigner respectivement la relation de récurrence et une suite la satisfaisant.
Exemple IV.2.2 (Suite de Fibonacci). Soit la relation de récurrence linéaire 3
xn+2 = xn+1 + xn , ∀n ≥ 0.
Son polynôme caractéristique est
X2 − X − 1
3Par exemple, E. Zeckendorf s’est intéressé à la suite de Fibonacci : Les suites linéaires
récurrentes à 2 termes, Bulletin de la Société Royale des Sciences de Liège 25 (1956), 574–
584.
116 Chapitre IV. Suites linéaires récurrentes

et pour les conditions initiales x0 = 1, x1 = 2, on trouve la suite bien connue


(Fn )n∈N = 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, . . . .
Pour d’autres conditions initiales, par exemple x 0 = 2 et x1 = 4, on obtient
une autre suite
2, 4, 6, 10, 16, 26, 42, 68, 110, 178, . . . .
Remarque IV.2.3. Si, dans (8), il existe ` ≥ 1 tel que a 0 = · · · = a`−1 = 0
et a` 6= 0, alors, bien que la suite satisfasse par définition une relation
d’ordre k, on remarque qu’elle satisfait ultimement (c’est-à-dire pour tout
n suffisamment grand) une relation d’ordre k − `. Par exemple, la suite
(xn )n≥0 = 100, 200, 1, 1, 2, 3, 5, 8, . . . satisfait, pour tout n ≥ 0, la récurrence
d’ordre 4, xn+4 = xn+3 + xn+2 + 0xn+1 + 0xn . Mais, ultimement, c’est-à-dire
pour tout n > 1, elle satisfait la relation d’ordre 2, x n+2 = xn+1 + xn .
Autrement dit, la suite translatée 1, 1, 2, 3, 5, 8, . . . satisfait une relation
d’ordre 2, mais la suite initiale 100, 200, 1, 1, 2, 3, 5, 8, . . . satisfait quant à
elle une relation d’ordre 4. De plus, on remarque que cette dernière suite
ne satisfait aucune relation d’ordre 3 (ni d’ordre 2). En effet, si, pour tout
n ≥ 0, xn+3 = axn+2 + bxn+1 + cxn , alors


 1 = a + 200b + 100c

2 = a + b + 200c
 3 = 2a + b + c


5 = 3a + 2b + c
et ce système ne possède aucune solution.
Ainsi, quitte à considérer un translaté (x n+k )n≥0 de la suite initiale, on
pourra toujours supposer, si nécessaire, a 0 6= 0.
Remarque IV.2.4. L’ensemble des suites vérifiant pour tout n ≥ 0
xn+k = ak−1 xn+k−1 + · · · + a0 xn
est un A-sous-module de AN isomorphe à Ak . En effet, à tout k-uple
(x0 , . . . , xk−1 ) de conditions initiales correspond une suite linéaire récurrente
satisfaisant la relation (8) et réciproquement. De plus, si x = (x n )n∈N et
y = (yn )n∈N satisfont (8), alors il en est de même pour x + y = (x n + yn)n∈N
et a.x = (a xn )n∈N , a ∈ A.
Définition IV.2.5. A l’équation (8), on associe le polynôme de A[X]
χ(X) = X k − ak−1 X k−1 − · · · − a1 X − a0 .
Ce polynôme de degré k est le polynôme caractéristique de la relation de
récurrence. On rencontrera aussi le polynôme réciproque de la relation de
récurrence définit par
X k .χ(1/X) = 1 − ak−1 X − · · · − a1 X k−1 − a0 X k .
IV.2. Définitions et premières propriétés 117

Définition IV.2.6. Une suite (xn )n∈N est dite linéaire récurrente non ho-
mogène si elle satisfait une relation de récurrence linéaire non homogène (à
coefficients constants) de la forme
(9) xn+k = ak−1 xn+k−1 + · · · + a0 xn + b
avec ak−1 , . . . , a0 , b ∈ A et b 6= 0. La relation de récurrence homogène
associée est simplement
xn+k = ak−1 xn+k−1 + · · · + a0 xn .
Remarque IV.2.7. Si x = (xn )n∈N satisfait (9) et si y = (yn )n∈N satisfait
la relation homogène associée, alors x + y satisfait encore (9). Réciproque-
ment, si z = (zn )n∈N satisfait (9), alors x − z satisfait l’équation homogène
associée. De là, on en conclut que l’ensemble des solutions de (9) s’obtient
en ajoutant au A-sous-module des solutions de l’équation homogène associée
une solution particulière de (9). Ainsi, cet ensemble de solutions possède une Pensez à l’analogie
avec les équations
structure de variété affine4. différentielles linéaires
à coefficients constants
Remarque IV.2.8. La suite nulle 0 = (0) n∈N est solution de toute équa-
tion de récurrence linéaire homogène et n’est solution d’aucune équation non
homogène.
Nous allons nous concentrer principalement sur des équations linéaires
récurrentes homogènes.
Définition IV.2.9. A l’équation (8), on associe la matrice compagnon de
la récurrence définie par
 
ak−1 ak−2 · · · ··· a0
 1
 0 0 ··· 0 
 0
M= 1 0 ··· 0 .
 . .. .. .. .. 
 .. . . . .
0 ··· 0 1 0
Il est clair que si (xn )n∈N est solution de (8), alors
   
xn+k xn+k−1
xn+k−1  xn+k−2 
   
 ..  = M  .. 
 .   . 
xn+1 xn
et en particulier, pour tout n ≥ 0,
   
xn+k−1 xk−1
xn+k−2  xk−2 
 ..  = Mn  ..  .
   
 .   . 
xn x0
4Une variété affine est le translaté d’un sous-vectoriel. Nous admettons l’analogie
dans le cas plus général de la translation d’un sous-module.
118 Chapitre IV. Suites linéaires récurrentes

Exemple IV.2.10. Poursuivons l’exemple IV.2.2. La méthode décrite ici


est en fait tout à fait générale. Pour cette suite, la matrice compagnon est
donnée par  
1 1
M= .
1 0
Ainsi,    n  
xn+1 1 1 x1
= .
xn 1 0 x0
Si M n’est pas Une formule close pour le terme général x n peut s’obtenir √ en diagonalisant,

diagonalisable,
on a alors recours si possible, la matrice compagnon. En posant τ = 2 et τ 0 = 1−2 5 , il
1+ 5
à la forme de Jordan. vient  0   0 
τ τ −1 τ 0
S= et S MS = .
1 1 0 τ
Ainsi,
 0n   0   0n √  
n τ 0 −1 τ τ τ 0 5 −1 τ
M = S S =
0 τn 1 1 0 τn 5 1 −τ 0
√  
5 τ n+1 − τ 0n+1 τ n − τ 0n
= .
5 τ n − τ 0n τ τ 0n − τ 0 τ n
De là, on obtient, pour tout n ≥ 0,
√ √
5 n 0n 5
xn = x 1 (τ − τ ) + x0 (τ τ 0n − τ 0 τ n )
5 5
et en particulier, pour la suite de Fibonacci dont les conditions initiales sont
x0 = 1 et x1 = 2,
√ √ √
5 n 0n 0n 0 n 5 0 n 5
Fn = (2τ − 2τ + τ τ − τ τ ) = (2 − τ ) τ + (τ − 2) τ 0n .
5 | 5 {z } 5
| {z }
√ √
3 5+5 5−3 5
10 10

3. Structure des solutions sur un anneau commutatif


Dans cette section, on désire obtenir la forme générale des solutions
d’une équation linéaire récurrente homogène à coefficients dans un anneau.
Les résultats obtenus concernent tout d’abord un anneau commutatif intègre
quelconque et sont ensuite particularisés au cas des champs de nombres réels
et complexes.
On supposera se placer sur une extension convenable de l’anneau (A, +, ·)
dans laquelle le polynôme caractéristique
χ(X) = X k − ak−1 X k−1 − · · · − a1 X − a0
de l’équation linéaire récurrente homogène (8) se factorise complètement.
(Par exemple, si A est un champ, on considèrera le corps de rupture de χ
sur A). Ainsi, on peut supposer que
χ(X) = (X − α1 )m1 · · · (X − αr )mr
où α1 , . . . , αr sont les racines de χ de multiplicité respective m 1 , . . . , mr .
IV.3. Structure des solutions sur un anneau commutatif 119

Le résultat principal de cette section est le suivant.


Qr mj
Théorème IV.3.1. Si χ(X) = j=1 (X − αj ) , alors pour tout j ∈
{1, . . . , r} et tout t < mj , la suite
(nt αnj )n∈N
est une solution de l’équation linéaire homogène (8).
Avant de démontrer ce résultat, quelques compléments sur les racines
d’un polynôme sont nécessaires. Rappelons qu’un élément α est racine de
multiplicité m d’un polynôme P si (X − α) m divise P et (X − α)m+1 ne le
divise pas (cf. définition I.5.4).
Le corollaire I.5.13 applicable à un champ K de caractéristique nulle
n’est pas valable sur un anneau quelconque A. Par exemple, le polynôme de
Z3 [X], X 4 − X = (X 3 − 1)X = (X − 1)3 X possède 1 comme racine triple
mais pourtant toutes les dérivées de ce polynôme évaluées en 1 sont nulles
(en ce y compris les dérivées d’ordre 3 et plus et le résultat I.5.13 n’est donc
pas vérifié ici). Il faut être quelque peu plus soigneux. En fait, on dispose
des deux résultats suivants.
Lemme IV.3.2. Soit A un anneau commutatif. Si α ∈ A est racine de
multiplicité au moins m d’un polynôme P ∈ A[X], alors (D i P )(α) = 0,
∀i = 0, . . . , m − 1.
Démonstration. Par définition d’une racine de multiplicité m, on a
P (X) = (X − α)m Q(X).
Dès lors, pour tout i ∈ {1, . . . , m − 1},
i
X
i
DP = Cki Dk (X − α)m Di−k Q
| {z }
k=0 m!
(m−k)!
(X−α)m−k

et puisque i < m, tous les termes de la somme contiennent au moins un


facteur X − α. De là, on en conclut que (D i P )(α) = 0.


Proposition IV.3.3. Soient A un anneau commutatif intègre et m un en-


tier strictement inférieur à la caractéristique de A. La multiplicité de α
comme racine de P ∈ A[X] est au moins m + 1 si et seulement si
P (α) = (DP )(α) = · · · = (Dm P )(α) = 0.
Démonstration. La condition est nécessaire. Cela découle directement
du lemme précédent.
Pour la réciproque, on procède par récurrence sur m. Si m = 0, alors
P (α) = 0 et la multiplicité de α comme racine de P est au moins 1. Si le
résultat est satisfait pour m − 1, l’est-il encore pour m ? Supposons que
P (α) = (DP )(α) = · · · = (Dm P )(α) = 0.
120 Chapitre IV. Suites linéaires récurrentes

Par hypothèse de récurrence, puisque toutes les dérivées jusqu’à l’ordre m−1
évaluées en α sont nulles, on en déduit que α est racine de multiplicité au
moins m. Ainsi,
P (X) = (X − α)m Q(X)
et
m
X
Dm P = Ckm Dk (X − α)m Dm−k Q.
| {z }
k=0 m!
(m−k)!
(X−α)m−k

Si on évalue cette dérivée en α, on obtient


0 = (Dm P )(α) = m! Q(α).
Puisque A est intègre, cela entraı̂ne que m! = 0 ou Q(α) = 0. Nous utilisons
à présent le fait que m est strictement inférieur à la caractéristique de A.
Cela signifie que dans le développement de m! = 1.2. · · · .m, tous les facteurs
sont non nuls. Pour que m! soit nul, il faudrait alors que m! soit un multiple
de la caractéristique de A. Or nous avons vu que cette caractéristique est
un nombre premier, cf. la section 6.1 du premier chapitre. Par conséquent,
m! 6= 0 et Q(α) = 0. De là, Q est divisible par X − α et α est donc racine
de P de multiplicité au moins m + 1.


Nous pouvons à présent démontrer le théorème IV.3.1.


Démonstration. Nous devons montrer que
k−1
X
(n + k)t αjn+k = ai (n + i)t αjn+i .
i=0
5
Soit s ∈ N. On pose
Ps (X) = X(X − 1) · · · (X − s + 1).
Il s’agit d’un polynôme de degré s s’annulant en 0, 1, . . . , s − 1. Il est clair
que P0 = 1, P1 , . . . , Pt forment une base de l’ensemble des polynômes de
degré au plus t. Ainsi, il existe des coefficients c 0 , . . . , ct tels que
t
X
t
(10) (X + n) = c` P` (X).
`=0
Par hypothèse, αj est racine de χ de multiplicité mj > t. Par le lemme
IV.3.2, (D` χ)(αj ) = 0 pour tout ` ∈ {0, . . . , t}. Rappelons que
k−1
X
k
χ(X) = X − ai X i .
i=0
Ainsi, pour 0 ≤ ` ≤ t, on a
k−1
` k! X i!
D χ= X k−` − ai X i−` .
(k − `)! (i − `)!
i=`

5Remarquons que si k ≥ s, P (k) := k!


.
s (k−s)!
IV.3. Structure des solutions sur un anneau commutatif 121

Evaluons à présent cette dérivée en α j ,


k−1
X
(D` χ)(αj ) = 0 = P` (k) αjk−` − ai P` (i) αi−`
j .
i=`

En multipliant cette relation par α `j et en remarquant que P` (i) = 0 si


0 ≤ i < `, on obtient
k−1
X
P` (k) αkj = ai P` (i) αij .
i=0
En utilisant (10) et la relation ci-dessus, il vient
t
X t
X  
(n + k)t αjn+k = c` P` (k) αjn+k = c` αnj P` (k) αkj
`=0 `=0
t
X k−1
X
= c` αnj ai P` (i) αij
`=0 i=0

k−1 t
!
X X
(n + k)t αjn+k = ai c` P` (i) αjn+i
i=0 `=0
k−1
X
= ai (n + i)t αjn+i .
i=0


Remarque IV.3.4. Le théorème IV.3.1 nous donne des solutions de (8).


Qr
Si χ(X) = j=1 (X − αj )mj , alors
 n

 (α1 )n∈N , (n αn1 )n∈N , . . . , (nm1 −1 αn1 )n∈N ,
 (αn )n∈N , (n αn )n∈N , . . . , (nm2 −1 αn )n∈N ,

2 2 2
.
.


 .

(αr )n∈N , (n αr )n∈N , . . . , (nmr −1 αnr )n∈N
n n

sont m1 + m2 + · · · + mr = k solutions6 de (8). Il serait dès lors légitime


d’espérer que ces éléments forment une base du A-sous-module de A N de
dimension k des solutions de (8). Il nous faut donc répondre à une telle
question.
Remarque IV.3.5. Puisque l’ensemble des solutions de (8) est un A-sous-
module, il est clair que la suite (sn )n∈N telle que Principe de
superposition
r
X
(11) sn = Ti (n) αni
i=1
où Ti est un polynôme de degré strictement inférieur à m i , est encore solution
de (8).
6Puisque χ se factorise complètement, la somme des multiplicités est égale au degré
du polynôme caractéristique de la récurrence.
122 Chapitre IV. Suites linéaires récurrentes

Nous nous étions déjà convaincus lors de l’étude du chiffrement de Hill


(proposition II.3.4) que les règles du calcul matriciel sur R sont encore,
à quelques adaptations près, d’application sur un anneau quelconque. En
particulier, rappelons qu’une matrice carrée B ∈ A nn est inversible si et
seulement si son déterminant est un élément inversible de A.

Théorème IV.3.6. Soit M = C1 · · · Cn une matrice de An n où A est
un anneau commutatif intègre. Les conditions suivantes sont équivalentes :
i) les colonnes C1 , . . . , Cn de M engendrent An ,
ii) les colonnes C1 , . . . , Cn de M forment une base de An ,
iii) la matrice M est inversible.
Si de plus A est fini, ces conditions sont encore équivalentes à
iv) les colonnes C1 , . . . , Cn de M sont linéairement indépendantes.
Démonstration. Il est clair que ii) entraı̂ne i).
Montrons que iii) entraı̂ne ii). Si M est inversible, il existe N tel que
MN = I, autrement dit, pour tous i, j ∈ {1, . . . , n},
n
X n
X
[Ck ]i Nk,j = δi,j ou encore, Nk,j [Ck ]i = [ej ]i .
k=1 k=1
Par conséquent,
n
X
Nk,j Ck = ej
k=1
et les vecteurs unitaires e1 , . . . , en engendrent An donc C1 , . . . , Cn aussi. Il
faut encore montrer que les colonnes de M sont linéairement indépendantes.
Supposons que7
X n
λi Ci = 0, λi ∈ A.
i=1
Procédons par l’absurde et supposons qu’un des λ i est non nul. Quitte à
renuméroter les indices, on peut supposer λ 1 6= 0. Ainsi,
n
X
λ1 C1 = − λi Ci
i=2
et, le déterminant étant multilinéaire et alterné sur les colonnes,

det λ1 C1 C2 · · · Cn = 0 = λ1 det M
car la première colonne du déterminant est combinaison linéaire des autres.
Puisque M est inversible, son déterminant l’est aussi et on en déduit que λ 1
est nul.
Il nous reste à montrer que i) entraı̂ne iii). Puisque les colonnes de A
engendrent An , les vecteurs unitaires e1 , . . . , en sont combinaisons linéaires
7Ici, A est un anneau quelconque. On ne peut donc pas supposer les λ inversibles.
i
IV.3. Structure des solutions sur un anneau commutatif 123

de C1 , . . . , Cn . Il existe des coefficients Nk,j tels que pour tout j ∈ {1, . . . , n},
n
X
Nk,j Ck = ej .
k=1
De là,
n
X n
X
Nk,j [Ck ]i = [ej ]i = δi,j ou Mi,k Nk,j = δi,j .
k=1 k=1
Supposons à présent que A est un anneau fini. Il est clair que iii) implique
iv) car nous avons déjà montré que iii) entraı̂nait ii). Il nous reste à vérifier
que iv) entraı̂ne i). Il est clair que iC 1 , . . . , Cn h⊆ An . Deux combinaisons
linéaires distinctes des colonnes de M,
Xn X n
λi Ci et λ0i Ci , avec (λ1 , . . . , λn ) 6= (λ01 , . . . , λ0n ),
i=1 i=1
donnent des éléments distincts de A n . En effet, sinon, on en déduirait que
les colonnes sont linéairement dépendantes. Ainsi, l’application
n
X
n
f : A →iC1 , . . . , Cn h: (λ1 , . . . , λn ) 7→ λi Ci
i=1
8
est une bijection. Puisque A est fini , on en conclut que An et iC1 , . . . , Cn h
contiennent le même nombre d’éléments et vu l’inclusion donnée ci-dessus,
les deux ensembles sont égaux.

Au vu des remarques IV.2.4 et IV.3.4, la suite (s n )n∈N de terme général On exploite
(11) donne la solution générale de l’équation linéaire récurrente homogène l’isomorphisme
entre l’ensemble Ak
(8) si et seulement si des conditions initiales
1 0 0 0 et l’ensemble des
1
0 1 0 1 0 1 0 1 0 1
B α1 C B α α B αr C α solutions.
1 C B 1 C B r C
2m1 −1 α21
B 2 C B
2α21 2mr −1 α2r
C B C B 2 C B C
B α1 C B
C , . . . , B αr C , . . . , B
C B C B C B C
B C,B C,...,B C
B . C B . C B . C B . CC B . C
B . C B . C B . C B . A B . C
@ . A @ . A @ . A @ . @ . A
k−1 k−1 m1 −1 k−1 k−1 mr −1 k−1
α1 (k − 1)α1 (k − 1) α1 αr (k − 1) αr

forment une base de Ak . Au vu du théorème précédent, ceci a lieu si et


seulement si 
det nt αni n=0,...,k−1;
i=1,...,r; t=0,...,mi −1
est inversible dans A. Nous admettrons le résultat suivant.
Proposition IV.3.7. La valeur du déterminant

det nt αni n=0,...,k−1;
i=1,...,r; t=0,...,mi −1
est donnée par
r
Y Y
mi (mi −1)/2
0! 1! · · · (mi − 1)! αi (αi − αj )mi mj .
i=1 i<j

8Si A est infini, on ne peut pas faire de tels raisonnements. Par exemple, 2N ⊂ N et
N et 2N sont en bijection, sans pour autant que N = 2N !
124 Chapitre IV. Suites linéaires récurrentes

Un produit d’éléments de A étant inversible si et seulement si chaque


facteur est inversible9, on en tire le résultat suivant.
Corollaire IV.3.8. La suite (sn )n∈N de terme général (11) donne la solu-
tion générale de l’équation linéaire récurrente homogène (8) si et seulement
si les conditions suivantes sont simultanément satisfaites :
i) les nombres 1, 2, . . . , (sup1≤i≤r mi ) − 1 sont premiers avec la carac-
téristique de A,
ii) pour toute racine αi de χ de multiplicité mi ≥ 2, αi est inversible
dans A,
iii) pour tous i < j, αi − αj est inversible dans A.
Démonstration. C’est immédiat.


Sur un champ de caractéristique nulle comme R ou C, les conditions du


corollaire précédent sont trivialement satisfaites (c’est en particulier pour
cette raison que nous avons imposé a 0 6= 0 dans (8), car sinon 0 serait racine
du polynôme caractéristique). Ainsi, nous avons le résultat suivant.
Théorème IV.3.9. Avec nos notations habituelles, si A = R, la solution
générale de l’équation linéaire récurrente homogène (8) est donnée par la
suite (sn )n∈N de terme général
r
X
sn = Ti (n) αni
i=1
où Ti est un polynôme de degré strictement inférieur à m i . Les coefficients
des polynômes Ti sont déterminés par les conditions initiales.
Démonstration. C’est immédiat.


Remarque IV.3.10. Travaillant sur le corps de rupture de χ, il se peut


que certaines racines αi soient des nombres complexes.
Exemple IV.3.11. Considérons la suite satisfaisant pour tout n ≥ 0,
l’équation linéaire récurrente suivante
xn+4 = 6xn+3 − 13xn+2 + 24xn+1 − 36xn
avec x0 = 0, x1 = 2, x2 = 1, x3 = 1. Le polynôme caractéristique est donné
par
χ(X) = X 4 − 6X 3 + 13X 2 − 24X + 36 = (X − 3)2 (X − 2i)(X + 2i).
Ainsi, la solution générale de la récurrence est de la forme
xn = (c1 n + c2 ) 3n + c3 (2i)n + c4 (−2i)n .
9Soient a, b ∈ A. Si a et b sont inversibles, alors b−1 a−1 est l’inverse de ab. Récipro-
quement, si ab est inversible, alors ab(ab)−1 = 1 et a a pour inverse b(ab)−1 . De même,
(ab)−1 ab = 1 et b possède (ab)−1 a pour inverse.
IV.4. Suites linéaires récurrentes et déterminants de Hankel 125

On détermine c1 , c2 , c3 , c4 grâce aux conditions initiales. On résout le sys-


tème 

 x0 = 0 = c 2 + c 3 + c 4

x1 = 2 = 3c1 + 3c2 + 2ic3 − 2ic4
x = 1 = 18c1 + 9c2 − 4c3 − 4c4
 2


x3 = 1 = 81c1 + 27c2 − 8ic3 + 8ic4
pour trouver
2 23 23 329
c1 = , c 2 = − , c3 = − i, c4 = c3 .
13 169 338 676
Remarquons que
c3 (2i)n + c4 (−2i)n = c3 (2i)n + c3 (2i)n = 2 Re(c3 (2i)n ).
De là, on obtient la forme close pour tout n ≥ 0,
2 23 n 23 n+1  π  329  π
xn = n 3n − 3 + 2 cos n − 2n+1 cos (n + 1) .
13 169 338 2 676 2
Les premiers termes de la suite sont
0, 2, 1, 1, 41, 185, 565, 1933, 7217, 25073, 82669, 273685, 909353, 2979641, . . . .
Au vu de cette section, on peut affirmer qu’une des difficultés majeures
pour obtenir une forme close est de rechercher les racines du polynôme ca-
ractéristique χ de la récurrence 10. En utilisant la matrice compagnon comme
dans l’exemple IV.2.10, la difficulté est analogue (puisqu’on se ramène au
polynôme caractéristique de la matrice). Pour cette raison, on a souvent
recours à d’autres techniques pour rechercher une forme close pour le terme
général de la solution d’une équation linéaire homogène, comme par exemple,
les séries formelles.

4. Suites linéaires récurrentes et déterminants de Hankel


Dans cette section, nous considérons uniquement des suites définies sur
un champ arbitraire K.
Remarque IV.4.1. Si la (xn )n≥0 satisfait une relation de récurrence linéaire
d’ordre k, alors la suite translatée (x n+k )n≥0 est une combinaison linéaire
des suites (xn )n≥0 , . . . , (xn+k−1 )n≥0 .
Remarque IV.4.2. Si les suites x0 = (xn )n≥0 , . . . , xk = (xn+k )n≥0 sont
linéairement dépendantes (l’ensemble K N étant un K-vectoriel), alors la suite
(xn )n≥0 satisfait une relation de récurrence linéaire d’ordre au plus k. En
effet, il existe des coefficients λ0 , . . . , λk ∈ K non tous nuls tels que
λ0 x0 + · · · + λk xk = 0.
Soit i ≥ 0 le plus grand indice tel que λ i 6= 0. Si i = 0, cela signifie que
(xn )n≥0 est la suite nulle. Sinon, on a
xi = λ−1 −1
i λ0 x0 + · · · + λi λi−1 xi−1
10Pensez à la théorie de Galois. Il n’existe de méthode générale pour rechercher les
racines d’un polynôme de degré 5 ou plus.
126 Chapitre IV. Suites linéaires récurrentes

et la suite (xn )n≥0 satisfait une relation d’ordre i ≤ k.


Définition IV.4.3. Soit (xn )n≥0 une suite. On pose
 
xn xn+1 ··· xn+k
xn+1 xn+2 ··· xn+k+1 
Dn(k+1)
 
:= det  . .. .. ..  .
 .. . . . 
xn+k xn+k+1 · · · xn+2k
(k) (k+1)
Lemme IV.4.4. Soit (xn )n≥0 une suite. Si Dn = Dn = 0, alors
(k)
Dn+1 = 0.
Démonstration. Considérons les vecteurs →

x i = (xi , . . . , xi+k−1 ), i ≥
(k)
Dn (k)
Dn+1
xn xn+k

(k+1)
Dn

x n+k xn+2k

Figure IV.1. Les différents déterminants.

0. Par hypothèse, puisque Dn = 0, les vecteurs → −x n, . . . , →



(k)
x n+k−1 sont

− →

linéairement dépendants. Si x n+1 , . . . , x n+k sont linéairement dépendants,
(k)
alors Dn+1 = 0 et la preuve est terminée.
Supposons donc → −x n+1 , . . . , −
→x n+k linéairement indépendants. Dans ce
dernier cas, x n est combinaison linéaire11 de →

− −x n+1 , . . . , →

x n+k . Considérons

− 0
à présent les vecteurs x i = (xi , . . . , xi+k ), i ≥ 0. Par hypothèse, puisque
= 0, les vecteurs → −x 0n , . . . , →

(k+1)
Dn x 0n+k sont linéairement dépendants. Si

−x 0 ,...,−
→x0 sont linéairement dépendants, alors D
(k)
= 0 et la preuve
n n+k−1 n+1
est terminée.
Supposons donc que ces derniers vecteurs sont linéairement indépen-
dants. Par conséquent, →

x 0n+k est combinaison linéaire de →

x 0n , . . . , →

x 0n+k−1 ,
k−1
X


x 0n+k = βj →

x 0n+j .
j=0

Considérons l’application linéaire


T : (xi , . . . , xi+k−1 , xi+k ) 7→ (xi , . . . , xi+k−1 ).
11Par hypothèse, →

x n, . . . , →

x n+k−1 sont linéairement dépendants donc


x n, →
−x n+1 , . . . , →

x n+k aussi. Mais → −x n+1 , . . . , →

x n+k sont linéairement indépendants.


Donc le vecteur ajouté x n est combinaison linéaire des autres.
IV.4. Suites linéaires récurrentes et déterminants de Hankel 127

k−1
X k−1
X k−1
X


x n+k = T (→

x 0n+k ) = βj T (→

x 0n+j ) = βj →

x n+j = β0 →

xn + βj →

x n+j .
j=0 j=0 j=1
Rappelons que dans la situation considérée, → −
x n est combinaison linéaire de

− →

x n+1 , . . . , x n+k . Par conséquent, nous avons obtenu une relation linéaire
liant →
−x n+1 , . . . , →
− (k)
x n+k et donc Dn+1 = 0.


Proposition IV.4.5. Une suite (xn )n≥0 satisfait une relation de récurrence
linéaire si et seulement si il existe k, N ≥ 0 tels que, pour tout n ≥ N ,
(k+1)
Dn = 0.
Démonstration. Au vu des deux remarques ci-dessus, (x n )n≥0 satisfait
une relation de récurrence linéaire d’ordre au plus k si et seulement si les
suites x0 = (xn )n≥0 , . . . , xk = (xn+k )n≥0 sont linéairement dépendantes. Il
est clair que si x0 = (xn )n≥0 , . . . , xk = (xn+k )n≥0 sont linéairement dépen-
(k+1)
dants, alors Dn = 0 pour tout n ≥ 0.
Supposons que k est le plus petit entier tel qu’il existe N ≥ 0 satisfaisant
∀n ≥ N, Dn(k+1) = 0.
Si k = 0, alors, xn = 0 pour tout n ≥ N . Dans la suite, on peut donc
(k) (k) (k+1)
supposer k ≥ 1. S’il existe m ≥ N tel que D m = 0, alors Dm = Dm =0
(k)
et par le lemme précédent, Dm+1 = 0. On peut alors appliquer à nouveau
(k) (k+1) (k)
le lemme avec Dm+1 = Dm+1 = 0 et donc Dm+2 = 0, etc. On conclut
(k)
que Dn = 0 pour tout n ≥ m. Ceci contredit la minimalité de k. Par
conséquent, on a
∀n ≥ N, Dn(k) 6= 0.
(k+1)
Notons les lignes de Dn par


xi = (xi , . . . , xi+k ).
= 0 et donc → −x n, . . . , →

(k+1)
Soit n ≥ N . Par hypothèse, Dn x n+k sont
des vecteurs linéairement dépendants. Puisque D n 6= 0, x n , . . . , →

− −
(k)
x n+k−1
sont linéairement indépendants et donc → −x n+k est combinaison linéaire de

−x n, . . . , −

x n+k−1 . D’où, de proche en proche, tout vecteur → −x n avec n ≥ N

− −

est combinaison linéaire de x N , . . . , x N +k−1 : il existe αn,i tels que
k−1
X


xn = αn,i →

x N +i
i=0
ou encore, pour tout n ≥ N ,
k−1
X
(12) ∀j ∈ {0, . . . , k}, xn+j = αn,i xN +i+j .
i=0
128 Chapitre IV. Suites linéaires récurrentes

Le système homogène de k équations et à k + 1 inconnues λ 0 , . . . , λk


     
xN xN +1 xN +k
 xN +1  xN +2   xN +k+1 
     
λ0  ..  + λ 1  ..  + · · · + λ k .. =0
 .   .   . 
xN +k−1 xN +k xN +2k−1
possède une solution non nulle (a0 , . . . , ak ) car son rang est au plus k. Donc,
∀n ∈ {N, . . . , N + k − 1}, a0 xn + a1 xn+1 + · · · + ak xn+k = 0.
Pour tout n ≥ N , au vu de (12),
k
X k
X k−1
X k−1
X k
X
aj xn+j = aj αn,i xN +i+j = αn,i aj xN +i+j = 0.
j=0 j=0 i=0 i=0 j=0
| {z }
=0
Ceci signifie que la suite (xn )n≥0 satisfait une relation de récurrence linéaire
de degré au plus N + k.


Proposition IV.4.6. Une suite non nulle (x n )n≥0 ∈ KN satisfait une re-
lation de récurrence linéaire à coefficients dans K d’ordre minimal k si et
(k) (n)
seulement si D0 6= 0 et pour tout n ≥ k + 1, D0 = 0.
Démonstration. Si (xn )n≥0 satisfait une relation de récurrence linéaire
(n)
à coefficients dans K d’ordre k, alors il est clair que D 0 = 0, pour tout
n ≥ k + 1, la dernière colonne/ligne de la matrice étant combinaison linéaire
des k précédentes.
Si k est l’ordre minimal de la récurrence, i.e., si la suite ne satisfait
aucune relation à coefficients dans K d’ordre inférieur, alors les vecteurs

−x 0, . . . , →

x k−1 sont linéairement indépendants où l’on a posé


x = (x , . . . , x ).
i i i+k−1

En effet, si tel n’est pas le cas, il existe des coefficients λ i non tous nuls
tels que λ0 → −
x 0 + · · · + λk−1 →

x k−1 = 0. Soit M la matrice compagnon k × k
associée à la récurrence d’ordre k. Soit j, le plus grand indice tel que λ j 6= 0.
En multipliant à gauche par Mn , il vient λ0 Mn → x 0 + · · · + λ j Mn →
− −
x j = 0 et
donc
∀n ≥ 0, xn+j = −λ−1 −1
j λj−1 xn+j−1 − · · · − λj λ0 xn .
Cela signifie que la suite satisfait une relation d’ordre j < k ce qui est
impossible. On en conclut donc que → −x 0, . . . , →

x k−1 sont linéairement in-
(k)
dépendants et D0 6= 0. Autrement dit, k est le plus petit entier tel que
(n)
pour tout n ≥ k + 1, D0 = 0.
(k+1) (k+2)
Pour la réciproque, puisque D0 = D0 = 0, le lemme IV.4.4 en-
(k+1) (n) (n+1)
traı̂ne D1 = 0. De même, pour tout n ≥ k + 1, puisque D 0 = D0 =
IV.5. Suites linéaires récurrentes sur un champ fini 129

(n)
0, on obtient pour tout n ≥ k + 1, D1 = 0. Et de proche en proche,
(n)
∀i ≥ 0, ∀n ≥ k + 1, Di = 0.
(k+1)
En particulier, pour tout i ≥ 0, Di = 0 et par la proposition précédente,
(k)
la suite (xn )n≥0 satisfait une relation de récurrence linéaire. De plus, D 0 6=
0. Nous avons montré au paragraphe précédent que l’ordre minimal de la
(n)
récurrence est le plus petit entier tel que pour tout n ≥ k + 1, D 0 = 0.
Ceci suffit.


Exemple IV.4.7. Reprenons l’exemple de la remarque IV.2.3 et la suite


100, 200, 1, 1, 2, 3, 5, 8, . . .. On a
 
  100 200 1
100 200
det = 39900, det 200 1 1 = −79501
200 1
1 1 2
   
100 200 1 1 100 200 1 1 2
200 1 1 2 200 1 1 2 3
det   = −40000, det   = 0.
 1 1 2 3  1 1 2 3 5
1 2 3 5 1 2 3 5 8
Ceci montre qu’a priori, la suite en question peut satisfaire une relation
d’ordre 4, mais aucune relation d’ordre inférieur.

5. Suites linéaires récurrentes sur un champ fini


Proposition IV.5.1. Soient k, ` tels que 0 ≤ ` < k. Soit x = (x n )n∈N une
suite du champ fini Fq satisfaisant une relation de récurrence linéaire 12
(13) xn+k = ak−1 xn+k−1 + · · · + a` xn+` , a` 6= 0.
I La suite est périodique à partir de `, i.e., il existe une (plus petite)
période p > 0 telle que pour tout n ≥ `, x n = xn+p .
I Cette période est telle que p ≤ q k−` .
I Pour l’équation (13), la période est maximale pour les conditions
initiales x0 = · · · = xk−2 = 0 et xk−1 = 1.
I Cette période maximale est égale à l’ordre de la matrice compagnon
M dans le groupe multiplicatif GLk (Fq ) des matrices k × k in-
versibles sur Fq .
Démonstration. Nous nous intéressons tout d’abord aux deux premiers
points. Dénotons par −
x→
n le vecteur
 
xn+k−1
−  .. 
x→n :=  .  ∈ Fq .
k

xn
12Il s’agit de l’équation (8) dans laquelle a = · · · = a
0 `−1 = 0.
130 Chapitre IV. Suites linéaires récurrentes

Ainsi, on a −x→ n−
→ k
n = M x0 , pour tout n ≥ 0. Il est clair que parmi les q + 1
éléments


x0 , . . . , −
x→
qk ,
−→ −

au moins deux éléments xm et xn sont égaux (0 ≤ m < n ≤ q k ). Par
conséquent,

x→ −
→ n−m −
x→
m = xn = M m.
On a donc périodicité de la suite à partir de x m et la période trouvée est
n − m ≤ q k . Il nous reste à montrer qu’on a périodicité à partir de x ` . Pour
ce faire, envisageons deux cas.
Premier cas : a0 6= 0. Par définition de la matrice compagnon, il est clair
que det M = a0 6= 0. Puisque nous sommes sur un champ, cela signifie que
M est inversible. De là,

x→ = Mm → −
x = Mn → −
x =− x→
m 0 0 n

d’où, en multipliant les deux membres par M −m , on obtient −→ = Mn−m −


x 0

x 0
et on a donc périodicité depuis x0 .
Second cas : a0 = · · · = a`−1 = 0 et a` 6= 0. On considère la suite y =
(yn )n∈N définie par yn = xn+` pour tout n ≥ 0. Il est clair que y satisfait
encore la relation
k−1
X
yn−`+k = ai yn−`+i
i=`
qui se réécrit aussi
k−`−1
X
yn+(k−`) = ai+` yn+i .
i=0
On s’est donc ramené au premier cas. La suite y est périodique à partir de
y0 et sa période est inférieure ou égale à q k−` . De là, la suite x a la même
période et est périodique à partir de x ` = y0 .
Passons aux derniers points. Soit e l’ordre de M dans GL k (Fq ), i.e., e
est le plus petit entier tel que Me = I. En particulier,
Me → −
x =→ −
x
0 0

et par conséquent, la période p de la solution est inférieure ou égale à e (et


ce, quel que soit le choix de la condition initiale → −
x0 ). Il nous suffit alors de
prouver que la (plus petite) période correspondant aux conditions initiales
0, . . . , 0, 1 est supérieure ou égale à e. Vu la forme de la matrice compagnon,
il existe des coefficients αi,j (1 ≤ i < k, 1 ≤ j ≤ i) tels que, si on choisit
comme conditions initiales → −
x0 = e1 , alors


x = Mx = e + α e , →

− −
x = M→ −
x = e + α e + α e ,...
1 0 2 1,1 1 2 1 3 2,2 2 2,1 1

x−→ −−→
k−1 = Mxk−2 = ek + αk−1,k−1 ek−1 + · · · + αk−1,1 e1 .
IV.5. Suites linéaires récurrentes sur un champ fini 131

Autrement dit, la matrice A= −


→ ···
x 0

x−→
k−1 est de la forme
 
1 α1,1 α2,1 · · · αk−1,1
0
 1 α2,2 · · · αk−1,2 
 .. .. .. .. .. 
.
 . . . . 

0 ··· 0 1 αk−1,k−1 
0 ··· 0 0 1
et det A = 1. Il est clair que
Mn − → ···
x 0

x−→ −

k−1 = xn · · ·
−−−−→ .
x n+k−1

Supposons que n soit une période. Il nous suffit, pour conclure, de montrer
que n est un multiple de e. Dans ce cas, par définition même d’une période,
on a
Mn A = A.
Or A est inversible donc
Mn = I
ce qui montre que n est un multiple de e.


Remarque IV.5.2. Dans la proposition précédente, on peut même sup-


poser que la période est inférieure ou égale à q k−` − 1 car le k-uple (0, . . . , 0)
fournirait la suite nulle et on peut donc considérer F kq privé de cet élément.
5.1. Retour sur le chiffrement par flot. On peut utiliser les suites
linéaires récurrentes pour réaliser un chiffrement par flot (cf. section 3.5
du deuxième chapitre). En effet, ces suites se prètent bien aux applications
informatiques car il est possible de les implémenter facilement grâce à un
registre à décalage linéaire (linear feedback shift register). Expliquons le
fonctionnement d’un tel registre sur un exemple.
Exemple IV.5.3. Soit l’équation linéaire récurrente sur Z 2
xn+4 = xn+1 + xn (mod 2)
et les conditions initiales x0 = x1 = x2 = 0 et x3 = 1. Les premiers termes
de la suite sont
0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, . . .
Ainsi, on s’aperçoit que la suite est périodique de période 15,
(xn )n∈N = (0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1) ω .
Cette suite peut être produite à l’aide du registre représenté à la figure
IV.2. Ce registre contient 4 cases t 1 , t2 , t3 , t4 . Au départ, les cases sont
initialisées avec les conditions initiales de la récurrence : t i ← xi−1 , i =
1, 2, 3, 4. A chaque unité n ∈ N de temps, le contenu de t 1 est produit par le
registre et constitue l’élément x n de la suite. Le contenu des cases t2 , t3 , t4
est déplacé d’une case vers la gauche et enfin, on effectue le calcul du terme
132 Chapitre IV. Suites linéaires récurrentes

t t t t4
1 2 3

Figure IV.2. Registre à décalage linéaire.

suivant de la suite qui est stocké dans t 4 . Toutes ces opérations sont réalisées
simultanément.
n production t1 t2 t3 t4
— x 0 x1 x2 x3
0 x0 x1 x2 x3 x4 = x 0 + x 1
1 x1 x2 x3 x4 x5 = x 1 + x 2
2 x2 x3 x4 x5 x6 = x 2 + x 3
.. ..
. .
Voici une réalisation sous Mathematica (pour les détails, se référer à l’aide
en ligne). Chaque lettre de l’alphabet correspond, comme de coutûme, à un
entier x < 32 qui est représenté en base 2 par un mot de longueur 5 (on place
éventuellement des zéros de tête pour obtenir une telle représentation).
:> codetxt = Flatten[Map[IntegerDigits[#,2,5] &, code["bonjour"]]]
Out[]= {00010011110111001010011111010110010}

:> Length[%]
Out[]= 35

:> x0 = {0,0,0,1};
:> f[x_] := Append[x, Mod[ x[[Length[x]-3]]+x[[Length[x]-2]],2]]
:> cle = Nest[f,x0,31]
Out[]= {00010011010111100010011010111100010}

:> txtchiffre = Mod[codetxt+cle, 2]


Out[]= {00000000100000101000000101101010000}
Pour retrouver le texte clair, il suffit de réappliquer la clé,
:> Mod[txtchiffre+cle, 2]
Out[]= {00010011110111001010011111010110010}
Remarque IV.5.4. Nous voudrions attirer l’attention du lecteur sur le
caractère “prédictible” des suites linéaires récurrentes. En effet, pour une
relation linéaire récurrente d’ordre k,
k−1
X
xn+k = ai xn+i ,
i=0
IV.6. Séries formelles et fonctions génératrices 133

il suffit à Oscar de connaı̂tre 2k + 1 termes consécutifs x ` , . . . , x`+2k de la


suite pour retrouver les k coefficients a 0 , . . . , ak−1 de l’équation de récurrence
que la suite satisfait. Connaissant ces coefficients, il peut alors reconstruire
la suite à partir du `-ième terme. En effet, pour tout j = 1, . . . , k, on a
k−1
X k−1
X k−1
X
x`+k+j −x`+k+j−1 = ai x`+j+i − ai x`+j+i−1 = ai (x`+j+i −x`+j+i−1 ).
i=0 i=0 i=0
Puisque x` , . . . , x`+2k sont connus, on est en présence de k équations linéaires
à k inconnues.

 x`+k+1 − x`+k = a0 (x`+1 − x` ) + · · · + ak−1 (x`+k − x`+k−1 )

..
 .

x`+2k − x`+2k−1 = a0 (x`+k − x`+k−1 ) + · · · + ai (x`+2k−1 − x`+2k−2 )
Cette remarque montre que les suites linéaires récurrentes ne peuvent
être considérées comme des suites pseudo-aléatoires. On appelle suite pseudo-
aléatoire toute suite qui passe avec succès toute une série de tests statistiques
pour vérifier la distribution uniforme de la suite, sa non-prédictibilité, etc.
Remarque IV.5.5. Un autre générateur de suites pseudo-aléatoires peut
être construit sur le logarithme discret. On se place sur Z ∗p avec γ, un
générateur. Pour une condition initiale x 0 ∈ Z∗p , on considère la suite définie
par
xn+1 = γ xn mod p.
Enfin, on engendre la suite de bits (z n )n∈N par

1 si xn > p/2,
zn :=
0 sinon.
Connaissant p et γ (qui peuvent être considérés comme publiques), si le
problème du logarithme discret est difficile, il est alors inconcevable pour
Oscar de prédire les éléments de la suite (z n )n∈N s’il ne connaı̂t pas un
terme de la suite (xn )n∈N . La suite (zn )n∈N peut donc être utilisée comme
clé dans un chiffrement par flot.

6. Séries formelles et fonctions génératrices


Dans cette section, nous nous contenterons d’étudier quelques aspects
purement formels des séries génératrices. Il faut néanmoins savoir que des
outils classiques d’analyse complexe peuvent se révéler très utiles pour, par
exemple, obtenir des renseignements asymptotiques sur les suites étudiées.
Un ouvrage très intéressant et abordable consacré entièrement aux séries et
fonctions génératrices sous ses divers aspects est [25], voir aussi [5].
Définition IV.6.1. Soit A un anneau commutatif. On introduit l’anneau
A[[z]] des séries formelles sur A comme suit. Une série formelle à coefficients
134 Chapitre IV. Suites linéaires récurrentes

dans A est simplement une suite a = (a n )n∈N ∈ AN que l’on notera symbo-
liquement

X
sa (z) = an z n .
n=0
On dit que z est l’indéterminée de la série. Pour faire de A[[z]] un anneau
commutatif, on définit la somme de deux séries formelles par

! ∞
! ∞
X X X
n n
an z + bn z = (an + bn ) z n .
n=0 n=0 n=0
Autrement dit, aux séries formelles associées aux suites (a n )n∈N et (bn )n∈N ,
on fait correspondre la série formelle de la suite (a n + bn )n∈N . On définit
comme seconde opération, le produit de Cauchy 13de deux séries formelles par
! !  

X X∞ X∞ X
an z n . bn z n =  ai bj  z n .
n=0 n=0 n=0 i+j=n

Cette opération étend naturellement l’opération de produit de deux poly-


nômes de A[z]. On vérifie aisément que, muni de ces deux opérations,
A[[z]] jouit d’une structure d’anneau commutatif. On peut bien évidem-
ment plonger A (resp. l’anneau des polynômes A[z]) dans A[[z]] en identifi-
P
ant a ∈ A à la suite (a, 0, 0, . . .), i.e., à la série formelle ∞ n
n=0 a δn,0 z (resp.
en identifiant le polynôme a0 +a1 z+· · ·+ad z d à la suite (a0 , . . . , ad , 0, 0, . . .)).
Remarque IV.6.2. Nous prenons la convention suivante. Dans cette sec-
tion, nous considérons uniquement des suites numériques, i.e., l’anneau A est
le champ R des nombres réels. Lorsqu’on considère une série de puissances
comme ci-dessus, on peut soit la voir comme une fonction de la variable com-
plexe z et dès lors, s’intéresser à sa convergence, à son rayon de convergence,
etc. . . ou bien, comme ce sera le cas ici, la série est simplement considérée
comme un objet combinatoire codant, au moyen de certaines conventions,
les éléments de a.
Définition IV.6.3. Soit a = (an )n∈N une suite. La fonction génératrice
(ou série génératrice) de a est la série formelle

X
sa (z) = an z n .
n=0

Rappelons une fois encore, que les fonctions génératrices sont des objets
algébriques pouvant être manipulés comme tels, sans se préoccuper d’une
hypothétique convergence14.
13Certains auteurs parlent parfois du produit de convolution de deux séries formelles.
14En fait, les notions de convergence peuvent s’avérer utiles lorsqu’on désire, par
exemple, estimer le comportement asymptotique d’une suite.
IV.6. Séries formelles et fonctions génératrices 135

Remarque IV.6.4. Une fraction rationnelle (i.e., le quotient de deux poly-


nômes) est considérée comme une expression compacte pour une fonction
génératrice. Etant donné la fraction rationnelle P/Q, P, Q ∈ R[z], on obtient
la série correspondante en effectuant la (longue 15) division euclidienne de P
par Q. On peut remarquer que si Q est le polnôme réciproque d’une suite
linéaire récurrente, une telle division est toujours possible et ce, même dans
un anneau quelconque. En effet, le coefficient du terme indépendant vaut 1.
1
Exemple IV.6.5. Soit la fraction rationnelle propre 1−z . Si on effectue
l’algorithme de la longue division, on obtient
1 1−z
−(1 −z) 1 + z + z2 + · · ·
z
−(z −z 2 )
z2
−(z 2 −z 3 )
z3
..
.
Ainsi,

1 X
= zn
1−z
n=0
est la fonction génératrice de la suite constante 1 = (1) n∈N .
Exemple IV.6.6. La suite des carrés parfaits (n 2 )n∈N = 0, 1, 4, 9, 16, . . . a
pour fonction génératrice
z + z2
.
1 − 3z + 3z 2 − z 3
En effet,
z +z 2 1 − 3z + 3z 2 − z 3
−(z −3z 2 +3z 3 −z 4 ) z + 4z 2 + 9z 3 + · · ·
4z 2 −3z 3 +z 4
−(4z 2 −12z 3 +12z 4 −4z 5 )
9z 3 −11z 4 +4z 5
−(9z 3 −27z 4 +27z 5 −9z 6 )
16z 4 −23z 5 9z 6
..
.
La justification précise sera donnée dans l’exemple IV.6.8. En effet, à ce
stade, il serait fastidieux de vérifier qu’à l’étape n de la longue division,
le coefficient obtenu pour z n est n2 . Très bientôt, nous aurons à notre
15Contrairement à la division euclidienne classique, on commence avec les termes de
plus petit degré.
136 Chapitre IV. Suites linéaires récurrentes

disposition d’autres outils permettant des manipulations aisées de telles ex-


pressions. On peut aussi lire l’exemple IV.6.11 où est fourni une relation de
récurrence linéaire pour cette suite.
En plus de la somme et du produit (de Cauchy), on dispose d’autres
opérations dans R[[z]] pour manipuler les séries formelles. Bien sûr, on peut
tout d’abord considérer des combinaisons linéaires de séries formelles. Si
sa (z) et sb (z) sont deux séries de R[[z]] et α, β ∈ R, alors on considère

X
α sa (z) + β sb (z) = (α an + β bn ) z n .
n=0
La multiplication de la série génératrice de la suite (a n )n∈N par z m permet
d’obtenir la série génératrice de la suite translatée
0, . . . , 0, a0 , a1 , a2 , . . . ,
| {z }
m fois
X∞ ∞
X
m n+m
z sa (z) = an z = an−m z n .
n=0 n=m
Pour passer de la série génératrice de (a n )n∈N , à la série translatée de k
termes vers la droite (an+k )n∈N , il suffit de considérer la série formelle
∞ ∞ ∞
sa (z) − a0 − a1 z − · · · − ak−1 z k−1 1 X n
X
n−k
X
= a n z = a n z = an+k z n .
zk zk
n=k n=k n=0
Si, dans sa (z), on remplace l’indéterminée z par cz, on obtient la série
génératrice de la suite (cn an )n∈N ,

X
sa (cz) = cn an z n .
n=0
On peut introduire un opérateur D : R[[z]] → R[[z]], appelé dérivée formelle,
défini par !

X ∞
X
n
D an z = (n + 1) an+1 z n .
n=0 n=0
Insistons encore sur le fait qu’on ne donne aucun sens topologique à cet
opérateur et il n’y a donc aucun problème, ni aucune objection à lever,
pour “dériver” une série. Ainsi, Ds a (z) est la série génératrice de la suite
((n + 1)an+1 )n∈N . En combinant dérivation formelle et multiplication par z,
il vient
X∞
zDsa (z) = nan z n .
n=1
Par analogie avec l’opérateur de dérivation formelle, on introduit également
un opérateur d’intégration formelle,
Z z ∞
1 2 1 3
X 1
sa (t) dt = a0 z + a1 z + a2 z + · · · = an−1 z n .
0 2 3 n
n=1
IV.6. Séries formelles et fonctions génératrices 137

Proposition IV.6.7. Si sa (z) est la série génératrice de a = (a n )n∈N , alors


1
sa (z)
1−z
P
est la série génératrice de la suite ( nk=0 ak )n∈N des sommes partielles de a.
1
Démonstration. Il s’agit d’une simple vérification. On sait que 1−z est
une forme close pour la série génératrice de la suite constante 1 = (1) n∈N
(cf. exemple IV.6.5). Par définition du produit (de Cauchy) de deux séries,
le coefficient de z n du produit proposé est égal à
Xn
ak 1n−k .
k=0
Ceci conclut la preuve.


Exemple IV.6.8. Au vu de l’exemple IV.6.5, la série génératrice de la


suite 1 = (1)n∈N est 1/1 − z. En la dérivant (formellement), on obtient 16
∞ ∞
1 1 X
n−1
X
D = = n z = (n + 1) z n
1−z (1 − z)2 n=1 n=0
et dès lors,

z X
= n zn.
(1 − z)2 n=0
En dérivant (formellement) une seconde fois la relation obtenue, il vient alors

z 1+z X
D = = (n + 1)2 z n .
(1 − z)2 (1 − z)3
n=0
Enfin, en multipliant par z, on retrouve la forme close de l’exemple IV.6.6,

z + z2 X
= n2 z n
(1 − z)3
n=0
qui est la série génératrice de la suite des carrés parfaits.
Nous présentons une méthode immédiate pour obtenir les séries généra-
trices de (a2n )n∈N et de (a2n+1 )n∈N à partir de la série génératrice s a (z) de
a = (an )n∈N .
Proposition IV.6.9. La série formelle
∞ ∞
sa (z) + sa (−z) X sa (z) − sa (−z) X
= a2n z 2n ( resp. = a2n+1 z 2n+1 )
2 2
n=0 n=0
est la série génératrice de la suite (a 0 , 0, a2 , 0, a4 , 0, . . .) des termes d’indice
pair de a (resp. de la suite (0, a1 , 0, a3 , 0, a5 , 0, . . .) des termes d’indice impair
de a).
16On peut vérifier que la dérivation formelle d’une forme close suit les règles de
dérivation usuelles de l’analyse. Ces vérifications n’apportent rien à notre exposé et sont
laissées au lecteur.
138 Chapitre IV. Suites linéaires récurrentes

Démonstration. C’est immédiat.




6.1. Résolution d’équations linéaires grâce aux séries formelles.


Nous avons introduit les séries formelles dans le but principal de résoudre
des équations de récurrence linéaires. On procède alors par “identification
des coefficients”. On recherche tout d’abord, par un procédé purement mé-
canique, une forme close (sous forme d’une fraction rationnelle) pour la série
génératrice de la suite et ensuite, on développe cette fraction en série de puis-
sances. Etant en présence de deux expressions représentant la même série,
Ce sont ici des il suffit alors de remarquer que
séries formelles !

X X∞
n
an z = bn z n
n=0 n=0
si et seulement si an = bn , pour tout n ≥ 0. Nous décrivons la marche à
suivre sur un exemple.
Soit la suite de Fibonacci satisfaisant la relation

xn+2 = xn+1 + xn ,
x0 = 1, x1 = 1.
(Nous avons choisi ces conditions initiales particulières pour simplifier un
rien les calculs.) Soit s la série génératrice de la suite (x n )n∈N ,

X
s(z) = xn z n .
n=0
Etape 1. Par de simples manipulations algébriques faisant bien évidemment
intervenir l’équation de récurrence, on peut exprimer s sous forme d’une
fraction rationnelle. Il vient
X∞
s(z) = x0 + x1 z + xn+2 z n+2
n=0

X
= 1+z+ (xn+1 + xn )z n+2
n=0
X∞ ∞
X
= 1+z+z xn+1 z n+1 + z 2 xn z n
n=0 n=0
= 1 + z + z [s(z) − x0 ] + z 2 s(z).
De là, on en tire que
1
s(z) = .
1 − z − z2
En fait, on peut sans grande difficulté obtenir le résultat général suivant.
Théorème IV.6.10. La suite x = (xn )n∈N ∈ AN est une suite linéaire
récurrente satisfaisant l’équation (8) à coefficients dans A si et seulement
IV.6. Séries formelles et fonctions génératrices 139

si la série génératrice sx (z) est une fraction rationnelle ayant pour déno-
minateur le polynôme réciproque 17 1−ak−1 z−· · ·−a0 z k . De plus, le numéra-
teur de la fraction dépend uniquement des conditions initiales x 0 , . . . , xk−1 .
Avant de procéder à la preuve, utilisons ce dernier résultat pour obtenir
une relation de récurrence linéaire pour la suite des carrés.
Exemple IV.6.11. Si nous admettons que la série de l’exemple IV.6.6 est
bien la série génératrice de la suite des carrés, puisque cette série est une
fraction rationnelle de la forme
z + z2
,
1 − 3z + 3z 2 − z 3
alors, le théorème ci-dessus stipule que la suite des carrés satisfait la relation
de récurrence
xn+3 = 3xn+2 − 3xn+1 + xn .
Ceci se vérifie aisément.
Démonstration. La condition est nécessaire. Elle a déjà été discutée
ci-dessus et devrait paraı̂tre claire au le lecteur. Voici les détails.
k−1
X ∞
X
i
sx (z) = xi z + xn+k z n+k
i=0 n=0
k−1
X ∞
X
= xi z i + (ak−1 xn+k−1 + · · · + a0 xn ) z n+k
i=0 n=0
k−1
X k−1
X
= xi z i + ai z k−i (sx (z) − x0 − · · · − xi−1 z i−1 )
i=0 i=0
De là, on trouve
k−1
! k−1 k−1 i−1
X X X X
1− ai z k−i sa (z) = xi z i − ai z k−i xj z j
i=0 i=0 i=1 j=0
| {z }
Pk−1 Pt−1 t
= t=1 i=0 ak−t+i xi z

où le coefficient du membre de gauche est exactement le polynôme réciproque


annoncé et le membre de droite est un polynôme en z de degré < k. Ce
dernier dépend uniquement des conditions initiales x 0 , . . . , xk−1 et des coef-
ficients a1 , . . . , ak−1 .
Pk−1 i
Réciproquement, si on considère un polynôme P (z) = i=0 bi z de
degré au plus k − 1, alors par longue division (ou par développement de
Taylor), on obtient le développement

P (z) X
= xn z n .
1 − ak−1 z − · · · − a0 z k
n=0

17En anglais, l’inverse d’un nombre se dit “reciprocal”. Par contre, l’inverse d’une
fonction se traduit par “inverse”.
140 Chapitre IV. Suites linéaires récurrentes

De là, on trouve

X
P (z) = (1 − ak−1 z − · · · − a0 z k ) xn z n
n=0

X ∞
X ∞
X
= xn z n − ak−1 xn−1 z n − · · · − a0 xn−k z n
n=0 n=1 n=k
k−1
X k−1
X i−1
X
= xi z i − ai z k−i xj z j
i=0 i=1 j=0
X∞
+ (xn − ak−1 xn−1 − · · · − a0 xn−k )z n .
n=k
Ceci montre que pour tout n ≥ k, la suite (x n )n≥0 satisfait la relation
xn − ak−1 xn−1 − · · · − a0 xn−k = 0. De plus, en identifiant les coefficients
dans
k−1
X k−1
X k−1
X i−1
X
P (z) = bi z i = xi z i − ai z k−i xj z j
i=0 i=0 i=1 j=0
on retrouve les conditions initiales x 0 , . . . , xk−1 en fonction des ai et des bi .


Remarque IV.6.12. Si le polynôme caractéristique de la relation


χ(X) = X k − ak−1 X k−1 − · · · − a0
ne s’annule pas en zéro (autrement dit, si a 0 6= 0) et possède α1 , . . . , αt
comme zéros de multiplicité respective m 1 , . . . , mt , alors le polynôme ré-
ciproque 1−ak−1 X −· · ·−a0 X k = X k χ( X1 ) possède évidemment les inverses
1/α1 , . . . , 1/αt des zéros de χ(X) comme zéros avec les mêmes multiplicité
m1 , . . . , m t .
Exemple IV.6.13. Considérons la suite (x n )n≥0 satisfaisant, pour tout
n ≥ 0, xn+3 = axn+2 + bxn+1 + cxn . Sa série génératrice est de la forme
d + ez + f z 2
s(z) = .
1 − az − bz 2 − cz 3
P
Dès lors, (1 − az − bz 2 − cz 3 )( ∞ n 2
n=0 xn z ) = d + ez + f z et, en identifiant
les coefficients, on obtient le système

 d = x0
e = x1 − ax0

f = x2 − ax1 − bx0
et bien sûr, pour tout n ≥ 3, 0 = xn − axn−1 − bxn−2 − cxn−3 . Ainsi, les
conditions initiales déterminent les coefficients du numérateur de la fraction
rationnelle et inversement.
IV.6. Séries formelles et fonctions génératrices 141

Etape 2. La deuxième partie de la méthode consiste à développer la fraction


1
rationnelle en série de puissances. Si on décompose 1−z−z 2 en fractions

Dans cette méthode, simples, on obtient


une telle décomposition √ √
constitue en pratique 1 5 5
le point délicat! 2
= −
1−z−z 5 (z + τ ) 5 (z + τ 0 )
où on emploie les mêmes notations qu’à l’exemple IV.2.10. Le résultat suiv-
ant est alors fort utile.
Proposition IV.6.14. On a

1 X
= Ct ρn z n .
(1 − ρz)t+1 n=0 n+t

Démonstration. Nous savons que



1 X
= zn.
1 − z n=0
En dérivant t fois cette relation, on obtient

t 1 1 X
D = t! = n(n − 1) · · · (n − t + 1) z n−t .
1−z (1 − z)t+1 n=t
De là,
∞ ∞
1 1 X n! n−t 1 X (n + t)! n
= z = z .
(1 − z)t+1 t! n=t (n − t)! t! n!
n=0
D’où la conclusion, en remplaçant l’indéterminée z par ρz.


Nous pouvons utiliser ce résultat pour obtenir le développement recherché.


Il vient18

1 1 −τ 0 0
X
= = = −τ τ 0n z n
z+τ τ (1 + τ1 z) 1 − τ 0z
n=0
de même que

1 X
= − τ n+1 z n .
z + τ0 n=0
D’où, on obtient
∞ √ ∞ √ ∞
X 1 5 X 0n+1 n 5 X n+1 n
s(z) = xn z n = = − τ z + τ z
n=0
1 − z − z2 5 n=0 5 n=0
∞ √
X 5 n+1
= (τ − τ 0n+1 ) z n
5
n=0
18
Puisque τ et τ 0 sont les racines de X 2 − X − 1, on a τ 2 = τ + 1 et donc τ = 1 + τ1 .
De plus, il est clair que τ − 1 = −τ 0 et donc −τ 0 = 1/τ .
142 Chapitre IV. Suites linéaires récurrentes

et par identification des coefficients, pour tout n ≥ 0,



5 n+1
xn = (τ − τ 0n+1 ).
5
Exemple IV.6.15. Si nous désirons obtenir la fonction génératrice des
nombres de Fibonacci d’indice pair, on peut procéder comme suit. On vient
de montrer que la suite
(xn )n∈N = 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, . . .
1
a s(z) = 1−z−z 2 pour fonction génératrice. Ainsi, au vu de la proposition

IV.6.9, la fonction génératrice de la suite


1, 0, 2, 0, 5, 0, 13, 0, 34, 0, 89, 0, . . .
est donnée par

s(z) + s(−z) X
t(z) = = x2n z 2n
2
n=0
 
1 1 1 1 − z2
= + = .
2 1 − z − z2 1 + z − z2 1 − 3z 2 + z 4
Ce que nous désirons obtenir, c’est la fonction génératrice
X∞
u(z) = x2n z n
n=0

de la suite 1, 2, 5, 13, 34, 89, . . .. Or, on remarque que u(z 2 ) = t(z). Par
conséquent, on a
1−z
u(z) = .
1 − 3z + z 2
En particulier, la suite 1, 2, 5, 13, 34, 89, . . . satisfait la relation y n+2 = 3yn+1 −
yn . Si on développait la fraction ci-dessus en série de puissances, on pour-
rait obtenir une formule close pour la suite de termes pairs de la suite de
Fibonacci. En guise d’exercice, on trouve 19
√ √
1−z 5+ 5 5−5
2
=− + ,
1 − 3z + z 10 (z − τ ) 10 (z − τ 02 )
2

∞ ∞
1 τ 02 X 1 X
2
=− 02
=− τ 02(n+1) z n et 02
=− τ 2(n+1) z n .
z −τ 1−τ z z−τ
n=0 n=0
De là, une formule close pour la suite des termes pairs est donnée par
√ √
5 − 5 2(n+1) 5 + 5 02(n+1)
τ + τ .
10 10
19On utilise le fait que 1/τ 2 = τ 02 .
IV.6. Séries formelles et fonctions génératrices 143

6.2. A propos de la sous-suite (xpn+` )n≥0 . La construction décrite


ci-dessus se généralise aisément. On considère une fois encore des suites
numériques. Soit x = (xn )n≥0 une suite linéaire récurrente satisfaisant (8)
avec sx (z) = P (z)/Q(z). Tout d’abord, si ω est une racine p-ième primitive
de l’unité, on a
p−1 ∞
1X t
X
sx (ω z) = xpn z pn .
p t=0 n=0
En effet, on a
p−1 ∞
1X X
sx (ω t z) = xi (1 + ω i + ω 2i + · · · + ω (p−1)i ) z i
p t=0
i=0

et si i est multiple de p, (1 + ω i + ω 2i + · · · + ω (p−1)i ) = p, sinon


(ω i )p − 1
1 + ω i + ω 2i + · · · + ω (p−1)i = = 0.
ωi − 1
D’autre part, on a la fraction rationnelle suivante
p−1 p−1
1X 1 X P (ω t z) A(z)
sx (ω t z) = t
=: .
p p Q(ω z) B(z)
t=0 t=0
En réduisant au même dénominateur, on doit considérer l’expression
p−1
Y
B(z) = Q(ω t z).
t=0
Si Q(z) = a0 (z − α1 ) · · · (z − αk ) où les zéros de Q sont répétés selon leur
multiplicité, alors
p−1 k p−1 k p−1
Y Y Y Y Y αi
t
Q(ω z) = ap0 t
(ω z − αi ) = ap0 ω p(p−1)/2
(z − ).
t=0
ωt
i=1 t=0 i=1 t=0

Notez que ω p(p−1)/2 = ±1 suivant la parité de p. Si on remarque que


{1, 1/ω, . . . , 1/ω p−1 } = {1, ω, . . . , ω p−1 },
on peut encore écrire
k
Y p−1
Y k
Y
B(z) = ap0 ω p(p−1)/2 t
(z − ω αi ) = ap0 ω p(p−1)/2 (z p − αpi ).
i=1 t=0 i=1

En effet, les p racines p-ièmes de αpi


sont exactement αi , ωαi , . . . , ω p−1 αi .
Ceci montre que le polynôme B(z) a tous ses termes de degré multiple de p.
Or, nous avons
p−1 ∞
1X X A(z)
sx (ω t z) = xpn z pn = .
p B(z)
t=0 n=0
P
Donc le polynôme A(z) = B(z) ∞ n=0 xpn z
pn a également tous ses termes

de degré multiple de p. Il est donc licite de considérer la fraction rationnelle


A(z 1/p )
B(z 1/p )
144 Chapitre IV. Suites linéaires récurrentes

où A(z 1/p ) et B(z 1/p ) sont des polynômes en z. Cette fraction rationnelle
est évidemment égale à la série génératrice de la suite (x pn )n≥0 ,

A(z 1/p ) X
= xpn z n .
B(z 1/p ) n=0
Autrement dit, par le théorème IV.6.10, la suite (x pn )n≥0 satisfait une rela-
tion de récurrence linéaire.
Corollaire IV.6.16. Soient p ≥ 1, ` ≥ 0. Si x = (x n )n≥0 satisfait une rela-
tion de récurrence linéaire, il en est de même pour la sous-suite (x pn+` )n≥0 .
Démonstration. Au vu du développement ci-dessus, si x = (x n )n≥0 satis-
fait une relation de récurrence linéaire, alors s x est une fraction rationnelle
et il en est de même pour la série génératrice de la suite (x pn )n≥0 . En-
fin, si y = (yn )n≥0 satisfait une relation de récurrence linéaire, la suite
(yn+` )n≥0 satisfait exactement la même relation (seules les conditions ini-
tiales changent).


On peut même aller encore un peu plus loin. Dans ce qui suit, on suppose
a0 6= 0. En effet, si la relation de récurrence (8) est à coefficients entiers,
il est légitime d’espérer que la suite (x pn+` )n≥0 satisfasse également une
relation de récurrence à coefficients entiers. Montrons que si le polynôme
caractéristique χx de la suite x = (xn )n≥0 est à coefficients entiers, il en est
de même pour celui de la suite (xpn+` )n≥0 .
Au vu de la remarque IV.6.12, en conservant les notations introduites
précédemment, si le polynôme réciproque Q(z) = a 0 (z − α1 ) · · · (z − αk ),
en posant pour tout i, βi = 1/αi , alors χx (z) = (z − β1 ) · · · (z − βk ). En
développant, on obtient
χx (z) = z k −e1 (β1 , . . . , βk )z k−1 +e2 (β1 , . . . , βk )z k−2 +· · ·+(−1)k ek (β1 , . . . , βk )
où  P
e1 (β1 , . . . , βk ) = β
P1≤i≤k i




 e2 (β1 , . . . , βk ) = β β


 P1≤i1 <i2 ≤k i1 i2
 e3 (β1 , . . . , βk ) = 1≤i1 <i2 <i3 ≤k βi1 βi2 βi3
 .
..

 P

ek−1 (β1 , . . . , βk ) = 1≤i1 <···<ik−1 ≤k βi1 · · · βik−1





ek (β1 , . . . , βk ) = β1 · · · βk
et puisque χx (z) ∈ Z[z], alors pour tout i, ei (β1 , . . . , βk ) ∈ Z.
Q
Le polynôme B(z 1/p ) = ap0 ki=1 ω p(p−1)/2 (z − αpi ) est le polynôme ré-
ciproque du polynôme caractéristique ξ(z) de la suite (x pn+` )n≥0 . Encore
une fois, au vu de la remarque IV.6.12, on a
k
Y
ξ(z) = (z − βip ).
i=1
IV.7. Chemins de Dyck et nombres de Catalan 145

Ce polynôme peut être considéré comme un polynôme S(β 1 , . . . , βk ) en les


k variables20 β1 , . . . , βk dont les coefficients sont des polynômes de Z[z]. Ce
polynôme est symétrique : pour toute permutation ν de {1, . . . , k},
S(βν(1) , . . . , βν(k) ) = S(β1 , . . . , βk ).
Par un résultat classique en algèbre commutative, tout polynôme symétrique
s’exprime comme un polynôme en les polynômes symétriques élémentaires.
Théorème IV.6.17 (Théorème fondamental des polynômes symétriques).
Soit A un anneau commutatif. Tout polynôme symétrique S(X 1 , . . . , Xk ) ∈
A[X1 , . . . , Xk ] s’écrit (de manière unique) comme
S(X1 , . . . , Xk ) = T (e1 (X1 , . . . , Xk ), . . . , ek (X1 , . . . , Xk ))
avec T ∈ A[Y1 , . . . , Yk ].
En appliquant ce résultat à ξ(z) ∈ Z[z][β 1 , . . . , βk ], il existe un polynôme
T ∈ Z[z][Y1 , . . . , Yk ] tel que
ξ(z) = T (e1 (β1 , . . . , βk ), . . . , ek (β1 , . . . , βk ))
Or nous savons déjà que pour tout i, e i (β1 , . . . , βk ) ∈ Z. De là, ξ(z) ∈ Z[z].
Par conséquent, la suite (xpn+` )n≥0 satisfait une relation de récurrence à
coefficients entiers.

7. Chemins de Dyck et nombres de Catalan


Cette section présente un exemple important d’utilisation des fonctions
génératrices dans le but d’obtenir la solution d’une relation de récurrence
particulière apparaissant dans divers problèmes de combinatoire et de dénom-
brement.
Considérons n + 1 éléments a0 , . . . , an dont on désire réaliser le produit.
Ne pouvant réaliser le produit que de deux facteurs à la fois, de combien de
façons différentes peut-on calculer ce produit, en laissant l’ordre des facteurs
inchangé ? Autrement dit, de combien de façons peut-on “parenthéser” une
telle expression ?
n=0 a0 1
n=1 a0 ·a1 1
n=2 a0 · (a1 · a2 ) (a0 · a1 ) · a2 2
n=3 (a0 · (a1 · a2 )) · a3 ((a0 · a1 ) · a2 ) · a3 (a0 · a1 ) · (a2 · a3 )
a0 · ((a1 · a2 ) · a3 ) a0 · (a1 · (a2 · a3 )) 5
.. ..
. .
Notons Cn la réponse recherchée pour le nombre de produits distincts de n+1
facteurs. Notre but est de déterminer une formule close pour C n . Avant d’y
20Une réflexion s’impose, maintenant z ne joue plus le rôle de la variable, on considère
un polynôme à plusieurs variables β1 , . . . , βk . Il faut prendre le temps de faire le point !
Par exemple, (z − β1p )(z − β2p ) = β1p β2p − zβ1p − zβ2p + z 2 = S(β1 , β2 ) et le coefficient du
terme en β1p est −z ∈ Z[z].
146 Chapitre IV. Suites linéaires récurrentes

parvenir, passons en revue quelques autres 21 situations où apparaissent ces


nombres Cn .
Exemple IV.7.1 (Langage de Dyck des mots bien parenthésés). Soit l’al-
phabet Σ = {a, b}. On considère l’ensemble D des mots écrits sur Σ con-
tenant le même nombre de a que de b et tels que pour tout préfixe d’un mot
de D, le nombre de a apparaissant dans ce préfixe est supérieur ou égal au
nombre de b. Par exemple,
aabb, abab, aababb, ababaababb, . . .
appartiennent à D. On parle de langage bien parenthésé car il suffit de
remplacer “a” par “(” et “b” par “)” pour obtenir des expressions bien paren-
thésées. Si pour un mot écrit sur Σ, on convient de représenter un a (resp.
b) par un déplacement d’une unité vers la droite et vers le haut (resp. le
bas), alors un mot du langage D de longueur 2n représente un déplacement
dans le plan (rapporté à un repère orthonormé) de l’origine au point de co-
ordonnées (2n, 0) sans jamais passer par un point d’ordonnée négative. Une

O
a b a b a a b a b b

Figure IV.3. Un mot de Dyck de longueur 10.

représentation des mots de Dyck de longueur 6 est donnée à la figure IV.4.


Il est clair que le nombre de mots de Dyck de longueur 2n est égal à C n .

Figure IV.4. Les mots de Dyck de longueur 6.

Exemple IV.7.2. On peut désirer compter le nombre de triangulations


de polygones convexes à n ≥ 3 côtés. Comme il sera facile de le vérifier, le
21On peut trouver une liste de problèmes où apparaissent les nombres C dans
n
W. G. Brown, Historical note on a recurrent combinatorial problem, American Math.
Monthly 72, 973–977, (1965). Ces nombres apparaissent également dans le dénombre-
ment d’arbres binaires à n noeuds.
IV.7. Chemins de Dyck et nombres de Catalan 147

Figure IV.5. Nombre de triangulations d’un triangle, carré


et pentagone.

nombre de triangulations distinctes d’un n-gone est égal à C n−2 . En effet,


l’argument de comptage développé pour le nombre de produits de n + 1
facteurs s’adapte au cas des polygones 22. Cet argument est détaillé à la
remarque IV.7.3.
Revenons à notre problème initial. Pour compter le nombre de produits
distincts des facteurs ordonnés a 0 , . . . , an , il faut s’apercevoir que dans la
suite des produits partiels réalisés, on effectue un ultime produit se trouvant
dès lors hors de toute parenthèse. Par exemple, si on entoure ce dernier
produit, parmi les produits de 4 facteurs, on trouve
(a0 · a1 ) (a2 · a3 ) ou (a0 · (a1 · a2 )) a3 .
Ainsi, cette dernière opération est le produit d’un facteur reprenant les k + 1
premiers éléments a0 , . . . , ak et d’un second facteur reprenant les n−k autres
éléments ak+1 , . . . , an . Cet argument montre que, pour tout n > 0, C n
satisfait la relation non linéaire suivante
n−1
X
Cn = C0 Cn−1 + C1 Cn−2 + · · · + Cn−1 C0 = Ck Cn−1−k .
k=0
Pour étendre cette définition à n = 0, puisque C 0 = 1, on a
n−1
X
Cn = Ck Cn−1−k + δn,0
k=0

(bien sûr, si n = 0, la somme ne contient aucun terme et vaut 0).

22Si un polygone a n côtés, lorsqu’on trace une quelconque diagonale, on se ramène


à un polygone à k côtés et à un second polygone à n − k + 2 côtés.
148 Chapitre IV. Suites linéaires récurrentes

23
Remarque IV.7.3. Soit Tn le nombre de triangulations d’un n-gone
dont les sommets sont numérotés consécutivement de 1 à n. Si une triangu-
lation ne contient aucune diagonale d’extrémité 1, alors elle contient néces-
sairement la diagonale joignant les sommets 2 et n. Ainsi, on se ramène à
trianguler un polygône à n − 1 sommets et le nombre de ces triangulations
est Tn−1 .
Sinon, la triangulation envisagée contient une diagonale joignant 1 à j
avec j ∈ {3, . . . , n−1} minimal. Ainsi, on dispose d’un polygone P 1 à j som-
mets {1, . . . , j} et d’un polygone P2 à n − j + 2 sommets {j, j + 1, . . . , n, 1}.
Vu la minimalité de j, la triangulation de P 1 ne contient pas de diagonale
d’extrémité 1 (il y a donc Tj−1 triangulations possibles car ces triangula-
tions contiennent la diagonale joignant 2 à j, c’est le même argument que
précédemment). Par contre, il n’y a aucune restriction sur P 2 et il peut
être triangulé de Tn−j+2 façons. Au total, le nombre de triangulations du
n-gone pour lesquelles le sommet 1 est l’extrémité d’une diagonale de la
triangulation vaut
n−1
X
Tj−1 Tn−j+2 .
j=3
Si on pose T2 = 1 et si on ajoute les triangulations du n-gone ne con-
tenant aucune diagonale d’extrémité 1, on trouve
n−1
X n
X
∀n ≥ 3, Tn = Tn−1 T2 + Tj−1 Tn−j+2 = Tj−1 Tn−j+2 .
|{z}
=1 j=3 j=3

En posant Sn = Tn+2 , on trouve pour tout n ≥ 1,


n
X n−3
X
Sn−2 = Sj−3 Sn−j = Sj Sn−j−3 = Cn−2
j=3 j=0

et donc Tn = Cn−2 .
On peut reconnaı̂tre dans
n−1
X
Cn = Ck Cn−1−k + δn,0
k=0
Appeler “produit de con- le terme général d’un produit de séries formelles. Ainsi, on introduit la série
volution”, le produit de
Cauchy, est bien choisi, génératrice

dans une situation comme X
celle-ci ! sC (z) = Cn z n .
n=0

23Cette remarque judicieuse est dûe à L. Waxweiler. Merci Laurent !


IV.7. Chemins de Dyck et nombres de Catalan 149

Dès lors, il vient


∞ n−1
!
X X
sC (z) = Ck Cn−1−k zn + z0
n=1 k=0

X ∞
X
= Ck z k Cn−1−k z n−k +1.
|k=0{z } |n=k+1 {z }
sC (z) z sC (z)

De là, on trouve l’équation du second degré


z s2C − sC + 1 = 0
qui possède comme solutions


1 − 4z
sC (z) = .
2z
Puisque sC (0) = C0 = 1, cela nous conduit à choisir

1 − 1 − 4z
sC (z) = .
2z
Il ne reste plus qu’à développer cette fraction en série de puissances pour
obtenir une formule close pour Cn .
Proposition IV.7.4. Pour tout t ∈ R \ N, on a

X
(1 + z)t = Cnt z n
n=0
où pour t ∈ R et n ∈ N, on définit le coefficient binomial “généralisé”
t(t − 1) · · · (t − n + 1)
Cnt := .
n!
Remarque IV.7.5. On trouve parfois la notation t n pour “Falling power”
On aurait déjà pu intro-
t(t − 1) · · · (t − n + 1), duire cette notation à la
page 120.
avec t ∈ R et n ∈ N. Ainsi, Cnt = tn /n!.
Démonstration. C’est immédiat. Si z est un nombre complexe tel que
|z| < 1, en utilisant le développement de Taylor en variables complexes, on
a

X (Dzn F )(0) n
F (z) = z .
n!
n=0
Ici, F (z) = (1 + z)t , Dzn F = tn (1 + z)t−n et (Dzn F )(0) = tn . Cette identité
est donc encore valable pour les séries formelles correspondantes.


Au vu de cette proposition,

√ X
1+z = Cn1/2 z n
n=0
150 Chapitre IV. Suites linéaires récurrentes

et
∞ ∞
√ X
n n
X 1 n−1
1 − 4z = C1/2 (−4z) = 1 + C (−4z)n
2n −1/2
n=0 n=1
car, pour n ≥ 1,
   n−1  n−1
n 1 1 n 1 1 1 1 1 1 1 n−1
C1/2 = = − = − = C .
n! 2 n! 2 2 2n (n − 1)! 2 2n −1/2
Lemme IV.7.6. Soient k ∈ N, r ∈ R. On dispose des identités suivantes,
i)
Ckr = (−1)k Ckk−r−1 ,
ii)
 k
1
Ck−1/2 = − Ck2k .
4
Démonstration. Pour la première, il vient
r k = r(r − 1) · · · (r − k + 1)
= (−1)k (−r)(1 − r) · · · (k − 1 − r)
= (−1)k (k − 1 − r)k .
Pour la seconde, remarquons tout d’abord que
1 (2r)2k
(14) r k (r − )k = .
2 22k
Pour le voir, il suffit de développer le membre de gauche en intercalant les
facteurs des deux expressions,
1 3 1 (2r) (2r − 1) (2r − 2k + 1)
r(r− )(r−1)(r− ) · · · (r−k+1)(r−k+ ) = ··· .
2 2 2 2 2 2
Divisons les deux membres de (14) par k! 2 . On trouve
r k (r − 12 )k (2r)2k (2k)! 1
=
k! k! (2k)! k!k! 22k
c’est-à-dire,
1 2k k
Ckr Ckr−1/2 = C C .
22k 2r 2k
Cette dernière identité étant satisfaite pour tout r ∈ R et tout k ∈ N, elle
est encore satisfaite pour k = r = n ∈ N,
1
Cnn−1/2 = n Cn2n .
4
Par le premier point, on a
Cnn−1/2 = (−1)n Cnn−(n−1/2)−1 = (−1)n Cn−1/2
d’où la conclusion.

IV.8. Systèmes d’équations linéaires récurrentes 151

Nous pouvons à présent conclure nos développements. On a



√ X 1 n−1
1 − 4z = 1 + C (−4z)n
2n −1/2
n=1
d’où
√ ∞ ∞
1− 1 − 4z 1 X 1 n−1 X 1 n−1
sC (z) = =− C−1/2 (−4z)n = C (−4z)n−1
2z 2z 2n n −1/2
n=1 n=1
et par le lemme précédent, il vient
∞  n−1 ∞
X 1 1 n−1 n−1
X 1
sC (z) = − C2(n−1) (−4z) = Cn z n .
n 4 n + 1 2n
n=1 n=0
En conclusion,
1
Cn = Cn .
n + 1 2n
√ n
Remarque IV.7.7. Sachant que n! ∼ 2πn ne , alors Rappelez-vous
 2n la formule de Stirling.
1 (2n)! 1 √ 2n 1  e 2n 22n
Cn = ∼ 2 πn = √ .
n + 1 n!2 n+1 e 2πn n (n + 1) πn
Exemple IV.7.8. Dans Mathematica, après avoir chargé (une fois pour
toutes) le package approprié, on dispose d’une fonction calculant le n-ième
nombre de Catalan.
:> << DiscreteMath‘Combinatorica‘
:> Table[CatalanNumber[i], {i,1,20}]
Out[]= {1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786,
208012, 742900, 2674440, 9694845, 35357670, 129644790,
477638700, 1767263190, 6564120420}

8. Systèmes d’équations linéaires récurrentes


Il arrive que dans certains problèmes apparaisse non pas une relation de
récurrence linéaire mais bien un système de relations de récurrence. L’uti-
lisation des séries génératrices permet dans bien des cas de résoudre un
tel système. On peut remarquer que la méthode développée s’apparente
aux méthodes employées en analyse pour résoudre un système d’équations
différentielles où l’on utilise la transformée de Laplace. Nous considérons un
simple exemple.
Soit le système 
un+2 = 2vn+1 + un
vn+2 = un+1 + vn
avec les conditions initiales u0 = 1, u1 = 0, v0 = 0 et v1 = 1. Si on introduit
les séries génératrices des deux suites, il vient
X∞ ∞
X
su (z) = un z n = u 0 + u 1 z + (2vn+1 + un ) z n+2
n=0 n=0
152 Chapitre IV. Suites linéaires récurrentes

et

X ∞
X
n
sv (z) = vn z = v 0 + v 1 z + (un+1 + vn ) z n+2 .
n=0 n=0
Ainsi,
su = 1 + 2z (sv − v0 ) + z 2 su = 1 + 2z sv + z 2 su
et
sv = z + z (su − u0 ) + z 2 sv = z su + z 2 sv .
Il suffit à présent de résoudre le système de deux équations à deux inconnues
en su et sv pour trouver
1 − z2 z
su (z) = 2 4
et sv (z) = .
1 − 4z + z 1 − 4z 2 + z 4
Nous nous sommes ramenés à devoir développer en série de puissances deux
fractions rationnelles indépendantes.
Bibliographie

[1] E. Bach, J. Shallit, Algorithmic Number Theory, Vol. 1, Foundations of Computing


Series, MIT Press, (1996).
[2] J. Buchmann, Introduction to cryptography, Second edition, Undergraduate Texts in
Mathematics, Springer, (2002).
[3] J.-M. De Koninck, A. Mercier, Introduction à la théorie des nombres, Collection
universitaire de mathématiques, Modulo, Québec, (1994).
[4] P. Flajolet, R. Sedgewick, An Introduction to the Analysis of Algorithms, Addison
Wesley, (1996).
[5] P. Flajolet, R. Sedgewick, Analytic Combinatorics, Cambridge University Press,
(2009).
[6] R.L. Graham, D.E. Knuth, O. Patashnik, Concrete Mathematics, A foundation for
computer science, Second edition, Addison Wesley, (1994).
[7] B. Green, T. Tao, The primes contain arbitrarily long arithmetic progressions, Annals
of Math. (2008), 56 pages.
[8] L. S. Hill, Concerning certain linear transformation apparatus of cryptography, Amer.
Math. Monthly 38 (1931), 135–154.
[9] D. Khan, The Codebreakers, the Story of Secret Writing, Macmillan, 1967.
[10] N. Koblitz, A course in Number Theory and Cryptography, Graduate Texts in Math-
ematics 114, Second edition, Springer, (1994).
[11] N. Koblitz, Algebraic aspects of cryptography, Algorithms and Computations in Math-
ematics 3, Second edition, Springer, (1999).
[12] H. W. Lenstra, Jr., Factoring integers with elliptic curves, Annals of Math. 126
(1987), 649–673.
[13] S. Ling, C. Xing, Coding Theory, a first course, Cambridge University Press, (2004).
[14] G.E. Martin, Counting: the art of enumerative combinatorics, Undergraduate Texts
in Mathematics, Springer, (2001).
[15] A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography, CRC
Press, (1996).
[16] M. Mignotte, Algèbre concrète, cours et exercices, Collection CAPES/Agrégation,
Ellipses, Paris, (2003).
[17] M. Mignotte, Mathématiques pour le calcul formel, Presses Universitaires de France,
Paris, (1989).
[18] O. Pretzel, Error-Correcting Codes and Finite Fields, Oxford Applied Math. and
Computing Science Series, Oxford Univ. Press, reprint (2000).
[19] K. H. Rosen (Editor), Handbook of Discrete and Combinatorial Mathematics, CRC
Press (2000).
[20] A. Salomaa, Public-Key Cryptography, Second edition, Texts in Theoretical Computer
Science, An EATCS Series, Springer, (1996).
[21] B. Schneier, Cryptographie appliquée, deuxième édition, International Thomson pub-
lishing France, Paris, (1997).
[22] L. Schwartz, Algèbre 3ème année, deuxième édition, Dunod, Paris, (2003).
[23] D. Stinson, Cryptographie, Théorie et pratique, International Thomson Publishing
France, Paris, (1996).

153
154 Chapitre IV. Bibliographie

[24] J. Talbot, D. Welsh, Complexity and Cryptography, An Introduction, Cambridge Univ.


Press (2006).
[25] H. Wilf, Generatingfunctionology, Academic Press (1994).
Liste des figures

I.1 Les premières valeurs de ϕ(n). 23


I.2 Sous-champs de F256 . 31
I.3 F2 , F22 , F24 , F28 et leurs éléments (ordre respectif). 32
I.4 Sous-champs de F230 . 32
I.5 Les éléments de F230 suivant leur ordre. 34
ln n
I.6 Graphique de π(n) n pour 104 ≤ n ≤ 2.104 . 50

II.1 Le canal de communication. 53

III.1 Probabilité de tirer un nombre premier de k bits. 93


III.2 Attaque du ”man in the middle”. 105
III.3 Graphique de 1/ log log x pour x ≤ 10 7 . 106

IV.1 Les différents déterminants. 126


IV.2 Registre à décalage linéaire. 132
IV.3 Un mot de Dyck de longueur 10. 146
IV.4 Les mots de Dyck de longueur 6. 146
IV.5 Nombre de triangulations d’un triangle, carré et
pentagone. 147

155
Index

Notations fracions (des). . . . . . . . . . . . . . . . . . .15


A[[z]] (anneau séries formelles) . . 129 premier . . . . . . . . . . . . . . . . . . . . . . . . 21
GF (q) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 chiffrement . . . . . . . . . . . . . . . . . . . . . . . 53
J(n) (Josephus) . . . . . . . . . . . . . . . . . 111 décalage. . . . . . . . . . . . . . . . . . . . . . . .54
Lb (n) (longueur de ρb (n)) . . . . . . . . 42 flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Mα (polynôme minimum) . . . . . . . . 10 fonction . . . . . . . . . . . . . . . . . . . . . . . . 54
Np (f ) (nombre de polynômes. . . ) . 36 Hill . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
[L : K] (degré de l’extension) . . . . . . . 3 idempotent . . . . . . . . . . . . . . . . . . . . . 68
Fq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Jules César . . . . . . . . . . . . . . . . . . . . . 55
Zm (anneau des entiers modulo) . . . 1 monoalphabétique . . . . . . . . . . . . . . 62
χ(X) (polynôme caractéristique) 118 périodique. . . . . . . . . . . . . . . . . . . . . .67
Pα (idéal annulateur) . . . . . . . . . . . . . 10 permutation . . . . . . . . . . . . . . . . . . . . 65
π(n) (# nombres premiers < n) . . 49 polyalphabétique . . . . . . . . . . . . . . . 62
ρb (n) (représentation en base b). . .42 synchrone . . . . . . . . . . . . . . . . . . . . . . 67
ϕ(n) (fonction indicatrice) . . . . . . . . 23 Vigenère . . . . . . . . . . . . . . . . . . . . . . . 62
dk (déchiffrement) . . . . . . . . . . . . . . . . 54 ciphertext . . . . . . . . . . . . . . . . . . . . . . . . 54
ek (chiffrement) . . . . . . . . . . . . . . . . . . 54 clôture algébrique . . . . . . . . . . . . . . . . 20
DX (dérivée) . . . . . . . . . . . . . . . . . . . . . 17 codage . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
conjugué . . . . . . . . . . . . . . . . . . . . . . . . . 10
A corps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Advanced Encryption Standard . . . 76 décomposition (de) . . . . . . . . . . . . . 18
AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 gauche . . . . . . . . . . . . . . . . . . . . . . . . . . 2
algébrique (élément) . . . . . . . . . . . . . . 10 rupture (de) . . . . . . . . . . . . . . . . . . . . 18
anneau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 cryptanalyse . . . . . . . . . . . . . . . . . . . . . . 55
commutatif . . . . . . . . . . . . . . . . . . . . . . 2 cryptosystème . . . . . . . . . . . . . . . . . . . . 54
euclidien . . . . . . . . . . . . . . . . . . . . . . . . 6 asymétrique . . . . . . . . . . . . . . . . . . . . 77
homomorphisme . . . . . . . . . . . . . . . . . 3 produit. . . . . . . . . . . . . . . . . . . . . . . . .68
intègre . . . . . . . . . . . . . . . . . . . . . . . . . . 7 symétrique . . . . . . . . . . . . . . . . . . . . . 77
principal . . . . . . . . . . . . . . . . . . . . . . . . 4 D
C déchiffrement . . . . . . . . . . . . . . . . . . . . . 53
caractéristique . . . . . . . . . . . . . . . . . . . . 21 fonction . . . . . . . . . . . . . . . . . . . . . . . . 54
Carmichael (nombre) . . . . . . . . . . . . . 94 décodage . . . . . . . . . . . . . . . . . . . . . . . . . 54
champ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 dérivée (formelle) . . . . . . . . . . . . 17, 132
algébriquement clos . . . . . . . . . . . . 20 Daemen (Joan) . . . . . . . . . . . . . . . . . . . 76
extension . . . . . . . . . . . . . . . . . . . . . . . . 3 Data Encryption Standard . . . . . . . . 67
fini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

157
158 Index

dimension . . . . . . . . . . . . . . . . . . . . . . . . . 3 inverse. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
finie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
J
E Josephus (problème) . . . . . . . . . . . . .111
elément
K
algébrique . . . . . . . . . . . . . . . . . . . . . . 10
conjugué . . . . . . . . . . . . . . . . . . . . . . . 10 Kerckhoff (principe) . . . . . . . . . . . . . . 55
primitif . . . . . . . . . . . . . . . . . . . . . . . . 26 L
transcendant . . . . . . . . . . . . . . . . . . . 15
logarithme discret . . . . . . . . . . . . 26, 102
espace vectoriel . . . . . . . . . . . . . . . . . . . . 3
Euler M
fonction indicatrice . . . . . . . . . . . . . 23 matrice
extension compagnon. . . . . . . . . . . . . . . . . . . .117
(de champ) . . . . . . . . . . . . . . . . . . . . . . 3 module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
algébrique . . . . . . . . . . . . . . . . . . . . . . 13 monoı̈de . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
degré . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 homomorphisme . . . . . . . . . . . . . . . . . 2
finie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 multiplicité . . . . . . . . . . . . . . . . . . . . . . . 16
F N
Fermat (théorème de) . . . . . . . . . . . . 24 neutre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
fonction NIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
génératrice . . . . . . . . . . . . . . . . . . . . 130 nombre
sens unique . . . . . . . . . . . . . . . . . . . . 77 Carmichael . . . . . . . . . . . . . . . . . . . . . 94
trappe cachée . . . . . . . . . . . . . . . . . . 78 pseudo-premier . . . . . . . . . . . . . . . . . 93
G pseudo-premier fort . . . . . . . . . . . . 97
square-free . . . . . . . . . . . . . . . . . . . . . 95
générateur . . . . . . . . . . . . . . . . . . . . . . . . 26
nombres premiers
générateur (de L sur K) . . . . . . . . . . 38
jumeaux . . . . . . . . . . . . . . . . . . . . . . . 49
Green Ben (théorème) . . . . . . . . . . . . 51
progression arithmétique . . . . . . . 50
groupe. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
raréfaction . . . . . . . . . . . . . . . . . . . . . 49
abélien . . . . . . . . . . . . . . . . . . . . . . . . . . 1
commutatif . . . . . . . . . . . . . . . . . . . . . . 1 P
homomorphisme . . . . . . . . . . . . . . . . . 2 plaintext . . . . . . . . . . . . . . . . . . . . . . . . . 54
H polynôme . . . . . . . . . . . . . . . . . . . . . . . . . . 6
caractéristique . . . . . . . . . . . . . . . . 116
Hill (chiffrement) . . . . . . . . . . . . . . . . . 63
constant . . . . . . . . . . . . . . . . . . . . . . . . . 6
homomorphisme
degré . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
anneau . . . . . . . . . . . . . . . . . . . . . . . . . . 3
divisible . . . . . . . . . . . . . . . . . . . . . . . . . 7
caractéristique . . . . . . . . . . . . . . . . . 21
fonction polynomiale . . . . . . . . . . . . 6
groupe . . . . . . . . . . . . . . . . . . . . . . . . . . 2
irréductible . . . . . . . . . . . . . . . . . . . . . . 7
monoı̈de . . . . . . . . . . . . . . . . . . . . . . . . . 2
minimum . . . . . . . . . . . . . . . . . . . . . . 10
hypothèse de Riemann . . . . . . . . . . . .98
monique . . . . . . . . . . . . . . . . . . . . . . . . . 6
I nul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
idéal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 racine . . . . . . . . . . . . . . . . . . . . . . . . . . 16
maximal. . . . . . . . . . . . . . . . . . . . . . . . .4 unitaire . . . . . . . . . . . . . . . . . . . . . . . . . 6
principal . . . . . . . . . . . . . . . . . . . . . . . . 4 valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
intégration (formelle) . . . . . . . . . . . . 132 primalité
Index 159

témoin . . . . . . . . . . . . . . . . . . . . . . . . . 93
R
racine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
multiplicité . . . . . . . . . . . . . . . . . . . . .16
registre à décalage . . . . . . . . . . . . . . . 127
représentation . . . . . . . . . . . . . . . . . . . . 42
Riemann (hypothèse) . . . . . . . . . . . . . 98
Rijmen (Vincent) . . . . . . . . . . . . . . . . . 76
Rijndael . . . . . . . . . . . . . . . . . . . . . . . . . . 76
S
S-box. . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
série
formelle . . . . . . . . . . . . . . . . . . . . . . . 129
produit de convolution . . . . . . 130
génératrice . . . . . . . . . . . . . . . . . . . . 130
suite
linéaire récurrente
homogène . . . . . . . . . . . . . . . . . . .115
non homogène . . . . . . . . . . . . . . 116
pseudo-aléatoire . . . . . . . . . . . . . . . 129
T
témoin de primalité . . . . . . . . . . . . . . .93
Tao Terence (théorème) . . . . . . . . . . 51
texte
chiffré . . . . . . . . . . . . . . . . . . . . . . . . . . 53
clair . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
théorème
Fermat . . . . . . . . . . . . . . . . . . . . . . . . . 24
Green-Tao . . . . . . . . . . . . . . . . . . . . . 51
raréfaction des nombres premiers49
Wedderburn . . . . . . . . . . . . . . . . . . . . 20
Wilson . . . . . . . . . . . . . . . . . . . . . . . . . 25
totient. . . . . . . . . . . . . . . . . . . . . . . . . . . .23
transcendant (élément) . . . . . . . . . . . 15
treillis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
V
vectoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
W
Wedderburn (théorème) . . . . . . . . . . 20
Wilson (théorème de) . . . . . . . . . . . . . 25

Vous aimerez peut-être aussi