summaryrefslogtreecommitdiffstats
path: root/exercices2b.tex
blob: 2c9e39a6cb21575f0172f33daf4f223a8bb0ee69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
%% This is a LaTeX document.  Hey, Emacs, -*- latex -*- , get it?
\documentclass[12pt]{article}
\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{times}
% A tribute to the worthy AMS:
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
%
\usepackage{mathrsfs}
\usepackage{wasysym}
\makeatletter\relax\let\Square\@undefined\relax\makeatother
\usepackage{bbding}
\usepackage{url}
%
\theoremstyle{definition}
\newtheorem{comcnt}{Tout}
\newcommand\exercice{%
\refstepcounter{comcnt}\bigbreak\noindent\textbf{Exercice~\thecomcnt.}}
\newcommand{\limp}{\mathrel{\Rightarrow}}
\newcommand{\liff}{\mathrel{\Longleftrightarrow}}
\newcommand{\pgcd}{\operatorname{pgcd}}
\newcommand{\ppcm}{\operatorname{ppcm}}
\newcommand{\signe}{\operatorname{signe}}
\newcommand{\tee}{\mathbin{\top}}
\newcommand{\Frob}{\operatorname{Frob}}
\newcommand{\trace}{\operatorname{tr}}
\newcommand{\Norm}{\operatorname{N}}
\newcommand{\dothis}{\leavevmode\hbox to0pt{\hskip-\parindent\HandRight{}\hskip0ptplus1fil}}
\DeclareUnicodeCharacter{00A0}{~}
%
\newif\ifcorrige
\corrigetrue
\newenvironment{corrige}%
{\ifcorrige\relax\else\setbox0=\vbox\bgroup\fi%
\smallbreak\noindent{\underbar{\textit{Corrigé.}}\quad}}
{{\hbox{}\nobreak\hfill\checkmark}%
\ifcorrige\relax\else\egroup\fi\par}
%
%
%
\begin{document}
\ifcorrige
\title{INFMDI720\\Exercices --- Corrigé\\{\normalsize Rappels mathématiques pour la cryptographie}}
\else
\title{INFMDI720\\Exercices\\{\normalsize Rappels mathématiques pour la cryptographie}}
\fi
\author{}
\date{}
\maketitle
\pretolerance=10000
\tolerance=8000

%
%
%

\setcounter{comcnt}{4}

\exercice

On admet que le polynôme $P(t) = t^8+t^4+t^3+t+1 \in \mathbb{F}_2[t]$
est irréductible.  On pose $F = \mathbb{F}_2[t]/(P)$.

On fait la convention suivante : un élément $a_0 + a_1 \bar t + \cdots
+ a_7 \bar t^7$ de $F$, où $a_0,\ldots,a_7 \in \{0,1\}$ sera
« représenté » par l'entier $a_0 + a_1 \times 2 + \cdots + a_7 \times
2^7$ entre $0$ et $255$.

\dothis Expliquer pourquoi cette convention a bien
un sens.

\begin{corrige}
On a des bijections successives entre
\begin{itemize}
\item $F = \mathbb{F}_2[t]/(P)$,
\item les polynômes de $\mathbb{F}_2[t]$ de degré $<8$ (via le reste
  de la division euclidienne par $P$),
\item les octuplets $(a_0,\ldots,a_7)$ d'éléments de $\mathbb{F}_2$
  (coefficients du polynôme),
\item les octuplets $(a_0,\ldots,a_7)$ d'éléments de $\{0,1\}$
  (chiffres de la représentation binaire d'un entier de $8$ bits),
\item les entiers entre $0$ et $255$,
\end{itemize}
qui se composent bien en une bijection comme indiqué.
\end{corrige}

\dothis Avec cette convention, quels sont par exemple les entiers
représentant les éléments $\bar t$ et $\bar t^7 + \bar t^6 + \bar t^5
+ \bar t^4 + \bar t^3 + \bar t$ de $F$ ?

\dothis Inversement, quels éléments de $F$ sont représentés par les
entiers $31$ et $64$ ?

\begin{corrige}
L'élément $\bar t$ de $F$ est représenté par l'entier $2^1 = 2$, et
$\bar t^7 + \bar t^6 + \bar t^5 + \bar t^4 + \bar t^3 + \bar t$ par
$2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2 = 250$.

Réciproquement, $31 = 2^4 + 2^3 + 2^2 + 2 + 1$ représente $\bar t^4 +
\bar t^3 + \bar t^2 + \bar t + 1$, et $64 = 2^6$ représente $\bar
t^6$.

Remarquons par ailleurs que $0$ et $1$ représentent $0$ et $1$, ce qui
épargne beaucoup de maux de tête.
\end{corrige}

On appelle $\oplus$ et $\otimes$ les opérations définies sur les
entiers entre $0$ et $255$ qui correspond aux opérations $+$ et
$\times$ sur $F$ (autrement dit : $a\oplus b$ est l'entier qui
représente la somme dans $F$ des éléments représentés par $a$ et $b$,
et de même $a\otimes b$ pour le produit ; ces opérations font donc de
$\{0,\ldots,255\}$ un corps isomorphe à $F$, puisqu'il s'agit juste
d'une représentation différente de la même chose).

\dothis Calculer par exemple $7\oplus 11$, puis $4\otimes 4$, et enfin
$141 \otimes 2$.

\begin{corrige}
L'entier $7 = 2^2 + 2 + 1$ représente $\bar t^2 + \bar t + 1$ et $11 =
2^3 + 2 + 1$ représente $\bar t^3 + \bar t + 1$, donc $7\oplus 11$ est
l'entier qui représente $(\bar t^2 + \bar t + 1) + (\bar t^3 + \bar t
+ 1) = \bar t^3 + \bar t^2$, c'est-à-dire $2^3 + 2^2 = 12$.
\end{corrige}

\dothis Expliquer pourquoi l'opération $\oplus$ est, sur les entiers
de 8 bits, l'opération \texttt{XOR} de « ou exclusif » (c'est-à-dire
l'opération calculée bit à bit par les règles : $\mathtt{XOR}(0,0) =
0$, $\mathtt{XOR}(0,1) = \mathtt{XOR}(1,0) = 1$ et $\mathtt{XOR}(1,1)
= 0$).  Le polynôme $P$ a-t-il joué un rôle ici ?

\begin{corrige}
L'addition dans $F$ se fait terme à terme sur les coefficients, comme
le \texttt{XOR}, donc il s'agit simplement de constater que l'addition
dans $\mathbb{F}_2$ est bien le \texttt{XOR} des bits, ce qui est
clair.  Le polynôme $P$ (à part peut-être son degré, et bien sûr le
fait qu'il est à coefficients dans $\mathbb{F}_2$) n'a joué aucun rôle
ici.

Remarquons au passage que $x \oplus x = 0$ pour tout $x$ (on a affaire
à un corps de caractéristique $2$), ce qui est clair sur le
\texttt{XOR}.
\end{corrige}

\dothis En distinguant les deux cas $x<128$ et $x\geq 128$, donner une
expression générale de $2 \otimes x$ (qui pourra utiliser l'opération
$\oplus$ de « ou exclusif »).  Expliquer où le polynôme $P$ a joué un
rôle.

\begin{corrige}
Si $x<128$ alors le bit $a_7$ de poids fort de $x$ est nul,
c'est-à-dire que l'élément de $F$ représenté par $x$ n'a pas de terme
en $\bar t^7$.  Pour le multiplier par $\bar t$ (représenté par $2$),
on décale simplement d'un cran tous les coefficients $a_0,\ldots,a_7$,
et puisque $a_7=0$ on a encore affaire à un polynôme de degré $<8$.
Ce décalage d'un cran correspond, sur l'écriture binaire, à une
multiplication par $2$, donc : $2\otimes x = 2x$ (multiplication
usuelle) lorsque $x<128$.

Si au contraire $x \geq 128$, alors le bit $a_7$ de poids fort de $x$
vaut $1$.  On peut écrire $x = x' \oplus 128$ où $x'$ (qui
vaut $x\oplus 128$) est constitué des autres bits de $x$ et vérifie
donc $x' < 128$.  On a donc $2 \otimes x = (2\otimes x') \oplus
(2\otimes 128)$ (puisque $\otimes$ est distributive sur $\oplus$ comme
$F$ est un corps), c'est-à-dire : $2\otimes x = 2(x\oplus 128) \oplus
27$ lorsque $x\geq 128$.  Le nombre $27 = 2^4 + 2^3 + 2 + 1$ dans
cette expression représente l'élément $\bar t^4+\bar t^3+\bar t+1$
donné par le reste de la division euclidienne de $t^8$ par $t$ (i.e.,
les termes de $P$ autres que le terme dominant $t^8$) : c'est le seul
endroit où $P$ intervient.
\end{corrige}

\dothis Écrire une fonction (dans un langage de programmation
quelconque) qui calcule $2 \otimes x$ en fonction de $x$.

\begin{corrige}
En C, par exemple :

\noindent
\texttt{uint8\_t multiplier\_par\_deux(uint8\_t x) \{\\\strut~~if (x\&0x80)
  return (x<{}<1)\char`^{0x1b}; else return x<{}<1;\\\}}

(On a écrit $27$ comme \texttt{0x1b}, le test à $128$ comme un « et
  logique » avec \texttt{0x80}, et la multiplication par $2$ par un
décalage vers la gauche de $1$ bit.  On a fait usage de types
non-signés de 8 bits exactement (\texttt{uint8\_t}), pour pouvoir
supposer que le décalage vers la gauche jetterait le bit débordant.)
\end{corrige}

\dothis Utiliser cette fonction, et notamment la distributivité
$\otimes$ sur $\oplus$, pour écrire une fonction calculant $x \otimes
y$ en général.

\begin{corrige}
Remarquons que si $y = b_0 + b_1 \times 2 + \cdots + b_7 \times 2^7$
où $b_i \in \{0,1\}$ sont les bits de $y$, alors on a aussi $y = b_0
\oplus (b_1 \otimes 2) \oplus \cdots \oplus (b_7 \otimes 2^{\otimes
  7})$ (où $2^{\otimes i}$ désigne $2\otimes \cdots \otimes 2$ avec
$i$ facteurs).  En effet, ceci est dû aux trois faits suivants :
\begin{itemize}
\item On a $2^{\otimes i} = 2^i$ si $0\leq i\leq 7$.  Ceci est dû au
  fait que $2\otimes x = 2x$ si $x<128$.
\item On a $b \otimes x = b x$ pour $b \in \{0,1\}$.  C'est évident
  (pour $\otimes$ comme pour $\times$, multiplier par $0$ donne $0$ et
  par $1$ donne l'identité).
\item Une somme de puissances de $2$ distinctes est aussi leur
  \texttt{XOR} (car il n'y a pas de retenues dans l'addition).
\end{itemize}
Dans ces conditions, on a donc $x \otimes y = (b_0 \otimes x) \oplus
(b_1 \otimes x \otimes 2) \oplus \cdots \oplus (b_7 \otimes x \otimes
2^{\otimes 7})$.  La fonction va donc calculer $x \otimes 2^{\otimes
  i}$ en appliquant successivement la fonction de doublement déjà
écrite, puis faire le \texttt{XOR} des différentes valeurs en question
pour lesquelles le bit $b_i$ correspondant de $y$ vaut $1$.  Cela
donne :

\noindent
\texttt{uint8\_t multiplier(uint8\_t x, uint8\_t y)
  \{\\\strut~~uint8\_t z = 0;\\\strut~~while (y) \{\\\strut~~~~if
  (y\&1) z \char`^= x;\\\strut~~~~x =
  multiplier\_par\_deux(x);\\\strut~~~~y >{}>=
  1;\\\strut~~\}\\\strut~~return z;\\\strut\}}
\end{corrige}

\dothis Calculer $250 \otimes 250$.

\begin{corrige}
Il faut écrire les quantités en binaire :

\begin{tabular}{rcc@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}lc}
$27$&$=$&\texttt{0}&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{1}&\texttt{1}&${}_{(2)}$&\\\hline
$250$&$=$&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{1}&\texttt{0}&${}_{(2)}$&\\
$250 \otimes 2$&$=$&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{1}&${}_{(2)}$&$*$\\
$250 \otimes 2^2$&$=$&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{0}&\texttt{1}&${}_{(2)}$&\\
$250 \otimes 2^3$&$=$&\texttt{1}&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{0}&\texttt{0}&\texttt{0}&\texttt{1}&${}_{(2)}$&$*$\\
$250 \otimes 2^4$&$=$&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{0}&\texttt{1}&${}_{(2)}$&$*$\\
$250 \otimes 2^5$&$=$&\texttt{0}&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{0}&${}_{(2)}$&$*$\\
$250 \otimes 2^6$&$=$&\texttt{1}&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{0}&\texttt{0}&${}_{(2)}$&$*$\\
$250 \otimes 2^7$&$=$&\texttt{1}&\texttt{1}&\texttt{0}&\texttt{1}&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{1}&${}_{(2)}$&$*$\\\hline
$250 \otimes 250$&$=$&\texttt{0}&\texttt{0}&\texttt{0}&\texttt{0}&\texttt{0}&\texttt{0}&\texttt{1}&\texttt{0}&${}_{(2)}$&\\
\end{tabular}

(La première ligne est là pour simplifier le calcul de $2x' \oplus 27$
lorsqu'on en a besoin, et les $*$ indiquent les lignes dont le bit
correspondant de $y=250$ vaut $1$, ce sont celles dont on fait le
\texttt{XOR}.)

Le résultat est donc $250 \otimes 250 = 2$.
\end{corrige}

%
%
%

\exercice

Soit $q = p^d$ une puissance d'un nombre premier $p$.

(A) On appelle \emph{trace absolue} dans $\mathbb{F}_q$ (ou bien trace
dans $\mathbb{F}_q$ sur $\mathbb{F}_p$) l'application $\trace
\colon \mathbb{F}_q \to \mathbb{F}_q$ qui envoie un élément $x \in
\mathbb{F}_q$ sur la somme $\sum_{i=0}^{d-1} \Frob^i(x)$ des $d$
itérées consécutives du Frobenius, où comme d'habitude $\Frob^i(x)$
désigne $x^{p^i}$.

(0) Montrer que $\trace(x+y) = \trace(x) + \trace(y)$
pour tous $x,y \in \mathbb{F}_q$ et que $\trace(cx) =
c\,\trace(x)$ si $c \in \mathbb{F}_p$ et $x \in \mathbb{F}_q$.

\begin{corrige}
On rappelle que $\Frob(x+y) = \Frob(x) + \Frob(y)$, et par conséquent
$\Frob^i(x+y) = \Frob^i(x) + \Frob^i(y)$ pour n'importe quel $i$ ; a
donc $\trace(x+y) = \sum_{i=0}^{d-1} \Frob^i(x+y) = \sum_{i=0}^{d-1}
(\Frob^i(x) + \Frob^i(y)) = \sum_{i=0}^{d-1} \Frob^i(x) +
\sum_{i=0}^{d-1} \Frob^i(y) = \trace(x) + \trace(y)$.

Pour la seconde égalité, lorsque $c\in \mathbb{F}_p$ on a $\Frob(cx) =
\Frob(c)\,\Frob(x) = c\,\Frob(x)$, et par conséquent $\Frob^i(cx) =
c\,\Frob^i(x)$ pour tout $i$.  On peut donc écrire $\trace(cx) =
\sum_{i=0}^{d-1} \Frob^i(cx) = \sum_{i=0}^{d-1} (c \Frob^i(x)) = c
\sum_{i=0}^{d-1} \Frob^i(x) = c\,\trace(x)$.
\end{corrige}

(1) Montrer que $\trace$ prend en fait des valeurs dans
$\mathbb{F}_p$.  (On pourra pour cela chercher à calculer
$\Frob(\trace(x))$.)

\begin{corrige}
On a $\Frob(\trace(x)) = \Frob(\sum_{i=0}^{d-1} \Frob^i(x)) =
\sum_{i=0}^{d-1} \Frob^{i+1}(x) = \sum_{i=1}^{d} \Frob^i(x)$.  Or
$\Frob^d(x) = x$ pour tout $x \in \mathbb{F}_q$ (où $q = p^d$) d'après
le petit théorème de Fermat.  La somme se réécrit donc bien comme
$\sum_{i=0}^{d-1} \Frob^i(x) = \trace(x)$.  Ceci montre que
$\trace(x)$ est stable par le Frobenius, i.e., vérifie $\trace(x)^p =
\trace(x)$, donc $\trace(x) \in \mathbb{F}_p$.
\end{corrige}

(2) Expliquer pourquoi $\trace(x)$ est un polynôme de $x$ (dont
on calculera le degré).

\begin{corrige}
On a $\trace(x) = x + x^p + x^{p^2} + \cdots + x^{p^{d-1}}$, qui est
manifestement un polynôme de degré $p^{d-1}$ (remarquons que ceci est
strictement plus petit que $p^d$).
\end{corrige}

(3) Montrer qu'il existe $x \in \mathbb{F}_q$ tel que $\trace(x)
\neq 0$.

\begin{corrige}
Le polynôme $\trace$ étant de degré $p^{d-1} < p^d$ non identiquement
nul, il ne peut pas s'annuler en les $p^d$ points de $\mathbb{F}_q$.
Il existe donc $x \in \mathbb{F}_q$ tel que $\trace(x) \neq 0$.
\end{corrige}

(4) En déduire que $\trace$ prend toutes les valeurs
de $\mathbb{F}_p$ (i.e., qu'il s'agit d'une fonction surjective ; on
pourra par exemple commencer par montrer qu'elle prend la valeur $1$).

\begin{corrige}
Si $\trace(x) = c \neq 0$ (on vient de voir qu'un tel $x$ existe),
comme $c \in \mathbb{F}_p$ d'après la question (1), on a
$\trace(\frac{1}{c}x) = 1$.  Si $a \in \mathbb{F}_p$ est quelconque,
on a alors $\trace(\frac{a}{c}x) = a$.  Donc $\trace$ prend bien
toutes les valeurs de $\mathbb{F}_p$.
\end{corrige}

\smallbreak

(B) On appelle \emph{norme absolue} dans $\mathbb{F}_q$ (ou bien norme
dans $\mathbb{F}_q$ sur $\mathbb{F}_p$) l'application $\Norm
\colon \mathbb{F}_q \to \mathbb{F}_q$ qui envoie un élément $x \in
\mathbb{F}_q$ sur le produit $\prod_{i=0}^{d-1} \Frob^i(x)$ des $d$
itérées consécutives du Frobenius, où comme d'habitude $\Frob^i(x)$
désigne $x^{p^i}$.

(0) Montrer que $\Norm(xy) = \Norm(x)\,\Norm(y)$ pour
tous $x,y \in \mathbb{F}_q$.

\begin{corrige}
On rappelle que $\Frob(xy) = \Frob(x) \, \Frob(y)$, et par conséquent
$\Frob^i(xy) = \Frob^i(x) \, \Frob^i(y)$ pour n'importe quel $i$ ; a
donc $\Norm(xy) = \prod_{i=0}^{d-1} \Frob^i(xy) = \prod_{i=0}^{d-1}
(\Frob^i(x) \, \Frob^i(y)) = \prod_{i=0}^{d-1} \Frob^i(x) \times
\prod_{i=0}^{d-1} \Frob^i(y) = \Norm(x) \, \Norm(y)$.
\end{corrige}

(1) Montrer que $\Norm$ prend en fait des valeurs dans
$\mathbb{F}_p$.  (On pourra pour cela chercher à calculer
$\Frob(\Norm(x))$.)

\begin{corrige}
On a $\Frob(\Norm(x)) = \Frob(\prod_{i=0}^{d-1} \Frob^i(x)) =
\prod_{i=0}^{d-1} \Frob^{i+1}(x) = \prod_{i=1}^{d} \Frob^i(x)$.  Or
$\Frob^d(x) = x$ pour tout $x \in \mathbb{F}_q$ (où $q = p^d$) d'après
le petit théorème de Fermat.  Le produit se réécrit donc bien comme
$\prod_{i=0}^{d-1} \Frob^i(x) = \Norm(x)$.  Ceci montre que $\Norm(x)$
est stable par le Frobenius, i.e., vérifie $\Norm(x)^p = \Norm(x)$,
donc $\Norm(x) \in \mathbb{F}_p$.
\end{corrige}

(2) Exprimer $\Norm(x)$ comme une certaine puissance de $x$ (dont
on calculera l'exposant).

\begin{corrige}
On a $\Norm(x) = x \times x^p \times x^{p^2} \times \cdots \times
x^{p^{d-1}} = x^{1+p+p^2+\cdots+p^{d-1}}$.  L'exposant est la somme
d'une série géométrique et vaut $\frac{p^d-1}{p-1}$ (remarquer que
ceci est un entier).  On a peut donc écrire $\Norm(x) =
x^{\frac{p^d-1}{p-1}}$.
\end{corrige}

(3) Montrer que $\Norm(x) = 0$ si et seulement si $x=0$.

\begin{corrige}
Le fait que $\Norm(0) = 0$ est trivial.

Dans un corps (ou plus généralement, un anneau intègre), un produit
est nul si et seulement si un des facteurs est nul.  Si on a
$x^{\frac{p^d-1}{p-1}} = 0$, la seule possibilité est que $x=0$ (ou
bien directement sur la définition : si $\prod_{i=0}^{d-1} \Frob^i(x)
= 0$, c'est qu'un des facteurs $\Frob^i(x)$ est nul, ce qui en
appliquant $\Frob^{d-i}$ implique $x=0$).
\end{corrige}

(4) Montrer que $\Norm$ prend toutes les valeurs
de $\mathbb{F}_p$ (i.e., qu'il s'agit d'une fonction surjective ; on
pourra considérer $\Norm(g)$ pour $g$ un élément primitif de
$\mathbb{F}_q^\times$, et montrer qu'il est d'ordre $p-1$ dans
$\mathbb{F}_p^\times$).

\begin{corrige}
Soit $g$ un élément primitif de $\mathbb{F}_q^\times$ : il est donc
d'ordre exactement $q-1 = p^d-1$ (i.e., $g^j = 1$ si et seulement si
$j$ est multiple de $p^d-1$).  On a vu que $\Norm(g) =
g^{\frac{p^d-1}{p-1}}$.  On a donc $\Norm(g)^i = g^{\frac{p^d-1}{p-1}
  i}$.  On a donc $\Norm(g)^i = 1$ si et seulement si
$\frac{p^d-1}{p-1} i$ est multiple de $p^d-1$, c'est-à-dire si et
seulement si $\frac{p^d-1}{p-1} i = (p^d-1)k$ pour un certain
entier $k$, ce qui signifie $\frac{i}{p-1} = k$ pour un certain
entier $k$, autrement dit $i$ multiple de $p-1$.  On a donc bien
montré que $\Norm(g)$ est d'ordre $p-1$, i.e., primitif
dans $\mathbb{F}_p^\times$.

Si $a$ est un élément quelconque de $\mathbb{F}_p$, soit $a = 0$
auquel cas il est la norme de $0$, soit $a \neq 0$, auquel cas on peut
écrire $a = \Norm(g)^i$ pour un certain $i$ (puisqu'on vient de voir
que $\Norm(g)$ est primitif), et du coup $a = \Norm(g^i)$.  Donc
$\Norm$ prend bien toutes les valeurs de $\mathbb{F}_p$.
\end{corrige}

%
%
%
\end{document}