]> AND Private Git Repository - modelisationMathS3.git/blob - rsa.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ajout de qques exos
[modelisationMathS3.git] / rsa.tex
1
2 % Objectifs pédagogiques :
3 % arithmétique classique (pgcd, diviseur)
4 % algorithme RSA
5 % calculs modulo 
6 % Théorème de Bezout,  petit Fermat
7 % Nombres premiers : tests simples, avancés, disctribution
8 % Multiplications rapides:  
9 % Puissance rapides 
10 % Factorisation 
11
12 % Cryptographie RSA : comprendre et approfondir
13 % on doit discuter de la taille des nombres premier pour pouvoir coder tout mot.
14 % on doit pouvoir déduire  de l'unicité de la clé d pour une cle e
15
16 \section{Introduction}
17
18 La \emph{cryptographie}, où l'art d'écrire avec une clé, 
19 est apparue en même temps que l'écriture.
20 Dès qu'une information doit être transmise de manière sure,
21 le message doit être protégé de toute interception: il est crypté par l'émetteur
22 et décrypté par le récepteur.
23 Dans le cas où l'on utilise une clé de cryptage, on a le schéma présenté 
24 à la figure~\ref{Fig:schemageneral}.
25 \begin{figure}[ht]
26 \begin{center}
27 %\includegraphics[scale=0.5]{schemacrypto.pdf}
28 \includegraphics[scale=0.5]{schemacrypto.eps}
29 \end{center}
30 \caption{Schéma général d'une méthode de cryptage/décryptage}\label{Fig:schemageneral}
31 \end{figure}
32 Dans cette figure, rien ne précise cependant que la clé de
33 cryptage est la même que celle de décryptage.
34 Lorsqu'une méthode se fondent sur une clé unique pour chiffrer et déchiffrer
35 un message on emploie le terme de cryptographie \emph{symétrique}. 
36 Se pose immédiatement  le problème de confidentialité de la clé et la  mise 
37 en {\oe}uvre de celle-ci 
38 surtout lorsque le nombre de destinataires est grand: 
39 il faut une clé pour chacun d'entre eux.
40
41 Pour résoudre ce problème d'échange de clés, la cryptographie 
42 \emph{asymétrique} a été mise au point dans les années 1970.
43 Elle se base sur le principe d'une clé publique pour le chiffrement et 
44 d'une clé privée pour le déchiffrement.
45 Chaque destinataire (receveur)
46 diffuse sa clé publique à quiconque désire chiffrer 
47 un message. Le message crypté  ne pourra être déchiffré qu'avec la clé privée,
48 qui elle reste confidentielle.
49
50 RSA est un algorithme de cette famille. Son étude d'un point de vue mathématique
51  est l'objectif de ce TD.
52 Il s'inspire largement de~\cite{RSA09} 
53
54 % Annonce plan
55
56
57
58 \section{Rappels d'arithmétique jusqu'au PGCD} 
59
60 Soit deux entiers $a$ et $b$ dans $\Z$.
61 On dit que $a$ divise $b$ (que l'on note $a | b$)
62 s'il existe un entier $q \in \Z$ tel que $b = aq$. 
63
64 Le plus grand diviseur commun (PGCD) de 
65 $a$ et $b$, noté $a\land b$ est l'entier naturel qui vérifie 
66 \begin{itemize}
67 \item $a \land b | a$ et $a \land  b | b$;
68 \item Si $d | a$ et $d | b$, alors $d | a\land b$.
69 \end{itemize}
70
71
72 \begin{Exo}
73 Déterminer $550 \land 1540$.
74 \end{Exo}
75
76
77 %\subsection{Algorithme d'Euclide de calcul de PGCD}
78
79 Par définition, le PGCD de $a$ non nul avec
80 0 est $a$ (définition raisonnable, car 0
81 est divisible par tout entier non nul, donc par $a$, qui l'est aussi par $a$) 
82 et enfin le PGCD de 0 et de 0 n'est pas
83 défini.
84
85 On se limite ici au cas de deux entiers $a$ et $b$ strictement positifs. Supposons par exemple $a>b$
86
87 \begin{enumerate}
88 \item La division euclidienne de $a$ par $b$ peut s'écrire $a=bq+r$ avec $0\infeg r<b$.
89
90 \item Montrons que \og $d$ est un diviseur commun à $a$ et $b$ \fg{}
91   est équivalent à  \og $d$ est un diviseur commun à $b$ et $r$ \fg{}.
92 \begin{itemize}
93 \item  Soit $d$ un diviseur commun à $a$ et $b$, qui peuvent alors s'écrire $a=da'$ et $b=db'$. L'égalité $a=bq+r$ devient $da'=db'q+r$ ou encore $r=d(a'-b'q)$, donc $d$ est aussi un diviseur commun à $b$ et $r$.
94
95 \item Réciproquement, soit $d$ un diviseur commun à $b$ et $r$, qui peuvent alors s'écrire $b=db'$ et $r=dr'$ et l'égalité $a=bq+r$ devient $a=d(b'q+r')$.
96 Donc $d$ est un diviseur commun à $a$ et $b$.
97 \end{itemize}
98
99 Ainsi, les ensembles des diviseurs communs à $a$ et $b$ 
100 d'une part et à $b$ et $r$ d'autre part sont identiques.
101 En particulier $a\et b=b\et r$.
102
103 \item Si $r=0$ on a $a\et b= b\et 0$ qui est égal à $b$.
104
105 \item Sinon,  $r$ est différent de $0$ et on peut donc effectuer la
106   division euclidienne de $b$ par $r$, qui donne un reste $r_{1}$, 
107   tel que $0 \le r_{1}<r$ et $b\et r=r\et r_{1}$.
108
109 \item Cet algorithme est itéré jusqu'à l'obtention d'un reste nul, ce qui se produit obligatoirement puisqu'il s'agit d'entiers et que la suite des restes ainsi construite est strictement décroissante.
110   Le PGCD est alors l'avant-dernier reste (le dernier non nul).
111 \end{enumerate}
112
113 \begin{Exo}
114 Déterminer $154 \land 35$ par l'algorithme d'Euclide.
115 \end{Exo}
116
117
118 \begin{Exo}
119 Donner le code d'un programme qui prend en entrée deux entiers naturels $a$ 
120 et $b$ tels que $a>b \ge 0$ et qui retourne leur PGCD 
121 \end{Exo}
122
123
124 \begin{Prop}[Identite   de Bézout]
125 On considère deux nombres entiers strictement positifs $a$ et $b$. 
126 Il existe un couple d'entiers $x$ et $y$ tels que $ax+by=d$, 
127 où $d$ est le PGCD de $a$ et de $b$. 
128 \end{Prop}
129
130 \begin{Proof}
131 Dans la preuve de la proposition précédente, on avait successivement
132
133 \begin{eqnarray}
134 a &=& b \times q_1 +r_1 \label{eq:def:r1} \\
135 b &=& r_1 \times q_2 +r_2 \nonumber \\
136 r_1 &=& r_2 \times q_3 +r_3 \nonumber\\
137 & \vdots & \nonumber\\
138 r_{n-4} & = & r_{n-3} \times q_{n-2} + r_{n-2} \label{eq:def:rnm4} \\
139 r_{n-3} & = & r_{n-2} \times q_{n-1} + r_{n-1} \label{eq:def:rnm3} \\
140 r_{n-2} & = & r_{n-1} \times q_{n} + r_{n} \label{eq:def:rnm2}\\
141 r_{n-1} & = & r_{n} \times q_{n+1} + 0 \nonumber 
142 \end{eqnarray}
143
144
145 On sait que $a\land b$ est $r_n$ le dernier reste non nul.
146 On remonte les équations une à une en démarrant de (\ref{eq:def:rnm2}).
147 \begin{eqnarray}
148 r_{n}  & = & r_{n-2} - r_{n-1} \times q_{n}  \nonumber \\
149   & = & r_{n-2} - (r_{n-3} - r_{n-2} \times q_{n-1}) \times q_{n} \textrm{ (on remplace $r_{n-1}$ par son expression tirée de  (\ref{eq:def:rnm3})}) \nonumber\\
150   & = & r_{n-2}. (1 + q_{n-1}. q_{n}) - r_{n-3}. q_{n} \textrm{ (factorisation)}\nonumber \\
151    & = & (r_{n-4} - r_{n-3} \times q_{n-2}). (1 + q_{n-1}. q_{n}) - r_{n-3}. q_{n}\textrm{ (on remplace $r_{n-2}$ par son expression tirée de (\ref{eq:def:rnm4})}) \nonumber \\
152 & \vdots & \nonumber \\
153 & = & \ldots \textrm{ (on remplace $r_{1}$ par son expression tirée de (\ref{eq:def:r1})}) \nonumber\\ 
154 & = &ax + by \nonumber
155 \end{eqnarray}
156 \end{Proof}
157
158 \begin{Exo}
159 Montrer qu'il existe $x$ et $y$ tels que 
160 $29x + 72y=1$ puis trouver une valeur pour  $x$ et $y$.
161 \end{Exo}
162
163
164 \begin{Exo}
165 Montrer que les propriétés $ a \land m = 1 $
166 et $ b \land m = 1 $ impliquent $ ab \land m = 1 $.
167 \end{Exo}
168
169
170 \begin{Def}[Nombres premiers entre eux]
171 Les deux entiers relatifs $a$ et $b$ sont premiers entre eux si 
172 leur plus grand commun diviseur est égal à 1.
173 \end{Def}
174
175 \begin{Exo}
176 Montrer que 55 et 21 sont premiers entre eux.
177 \end{Exo}
178
179
180
181
182
183
184
185 \section{L'algorithme RSA}
186
187 \subsection{Les étapes détaillées de l'algorithme}
188
189 On rappelle qu'un système cryptographique à clé publique est
190 initialisé par le receveur, c.-à-d. celui qui veut recevoir des messages de
191 manière sure. 
192
193 \paragraph{Première étape: choix des deux nombres $p$ et $q$.} 
194 Le receveur choisit deux grands nombres premiers
195 $p$ et $q$ et calcule $n = pq$. Puis il calcule $\varphi(n)$, 
196 où $\varphi : \N^* \rightarrow \N^* $ est la \emph{fonction d'Euler} 
197 L'entier $\varphi(n)$  est le nombre d'entiers 
198 dans $\{1, 2, \dots , n -1 \}$ qui sont premiers avec $n$.
199
200 \begin{Exo}
201 Le receveur choisit $p=7$, $q=13$.
202 Construire l'ensemble des entiers qui sont premiers avec $n=pq$ 
203 et en déduire que $\varphi(91)=72$.
204 \end{Exo}
205
206
207 \paragraph{Deuxième  étape: choix de la clé publique.} 
208 Le receveur choisit $e \in 
209 \{1, \dots , n-1\}$  premier avec $\varphi(n)$.
210 La clé publique est la paire $(e,n)$. 
211 Chaque expéditeur
212 va s'en servir pour crypter son message à destination de ce receveur.
213 Le cryptage est détaillé 
214  à la quatrième étape ci-dessous.
215
216 \begin{Exo}
217 Montrer que $(29,91)$ est un candidat acceptable de clé publique.
218 \end{Exo}
219
220 \paragraph{Troisième  étape: construction de la clé privée.}
221 Le receveur calcule l'entier $d \in \{1,\dots, n-1\}$
222 tel que le reste de la division de $ed$ par $\varphi(n)$ est 1. 
223 Ceci se note aussi $ed \equiv 1 [\varphi(n)]$ qui se lie $ed$ est congru 
224 à 1 modulo $\varphi(n)$.
225 La paire $(d,n)$ est la clé privée de décryptage. 
226 Elle est secrète et permet au receveur de décrypter tous les messages reçus
227 et cryptés avec $(e,n)$. 
228
229 \begin{Exo}
230  Trouver la clé privée associée.
231 \end{Exo}
232
233
234 \paragraph{Quatrième  étape: cryptage du message.}
235 L’expéditeur peut crypter tout message écrit sous la forme 
236 d'un nombre $m$ appartenant à $\{1, \dots , n-1\}$ et qui est 
237 premier avec $n$. 
238 Le message codé est le reste $a$ de la division de $m^e$ par $n$. 
239 On a donc $m^e \equiv a [n]$, où $a \in \{1, \dots , n - 1\}$.
240
241 \begin{Exo}
242 \begin{enumerate}
243 \item Montrer que  l'expéditeur a la possibilité de crypter le message $m=59$.
244 \item Construire le message crypté $a$ à l'aide de la clé publique.
245 \end{enumerate}
246 \end{Exo}
247
248 \paragraph{Cinquième  étape:  décryptage du message.} 
249 Le receveur dispose de $a$ et de sa clé privée $(d,n)$. 
250 Pour décrypter $a$, il calcule le reste dans la division par $n$
251 de $a^d$ (c.-à-d. $a^d [n]$). 
252 Si aucune erreur de calcul n'a été effectuée, c'est le message initial $m$.
253
254
255 \begin{Exo}
256 Décrypter
257  le message $a$ à l'aide de la clé privée. Il doit s'agir de $m$. 
258 \end{Exo}
259
260
261 \subsection{Les points clés}
262 L'algorithme RSA repose sur plusieurs points clés rencontrés successivement:
263 \begin{itemize}
264 \item la génération de deux grands nombres premiers $p$ et $q$ ;
265 \item la multiplication de grands nombres : $pq$, $ed$,   
266 \item l'arithmétique modulaire;
267 \item l'algorithme d'Euclide de génération de PGCD et son corollaire de Bézout;
268 \item la factorisation, qui tant qu'elle n'est pas réalisable sur des grands nombres, garantit la sécurité du cryptage des données.
269 \end{itemize}
270
271
272
273 %\subsection{L'algorithme de RSA est correct}
274
275 \section{Les incontournables théorèmes de Bézout et de 
276   Gau{\ss}}
277
278 \begin{Prop}[Théorème de Bézout]
279 Deux entiers strictement positifs 
280 $a$ et $b$ sont premiers entre eux, si et seulement s'il
281 existe un couple $(x,y)$ d'entiers relatifs vérifiant $ax + by = 1$.
282 \end{Prop}
283 \begin{Proof}
284 \begin{itemize}
285 \item[\textbf{Seulement si.}] Supposons $a$ et $b$ premiers entre eux. 
286 D'après l'identité de Bézout, 
287 il existe donc un couple d'entiers $x$ et $y$ tels que $ax+by=1$, 
288 car 1 est le PGCD de $a$ et de $b$. 
289 \item[\textbf{Si.}] 
290   Supposons qu'il existe un couple $(x,y)$ 
291   d'entiers relatifs vérifiant $ax + by = 1$ et $d = a \land b$.
292   L'entier $d$ divise les produits $ax$ et $by$. Donc $d$ divise 
293   $ax + by$ et donc $d$ est 1.   
294 \end{itemize}
295 \end{Proof}
296
297 \begin{Prop}[Théorème de Gau{\ss}]
298 Soient $a$, $b$ et $c$ trois entiers naturels. 
299 Si $a$ divise le produit $bc$ 
300 et s'il est premier avec $b$, alors il divise $c$.
301 \end{Prop}
302
303
304 \begin{Exo}
305 Faire la preuve du  théorème de Gau{\ss}.
306 \end{Exo}
307
308 \begin{Prop}[Fonction d'Euler]
309 Si $p$ et $q$ sont deux nombres premiers distincts alors l'égalité
310 suivante permet de trouver le valeur de la fonction d'Euler en un seul 
311 produit:
312 \begin{equation}
313 \varphi(pq)=(p-1)(q-1). \label{FEuler}
314 \end{equation} 
315 \end{Prop}
316
317 \begin{Exo}[Preuve de l'expression d'Euler]
318 On doit compter le cardinal des nombres de $\{1, 2, . . . , pq -1\}$ qui sont 
319 premiers avec $pq$.
320 \begin{enumerate}
321 \item Construire l'ensemble $P$ des entiers naturels multiples de $p$ inférieurs à $pq -1$. Combien en a-t-on?
322 \item Construire l'ensemble $Q$ des entiers naturels multiples de $q$ inférieurs à $pq -1$. Combien en a-t-on?
323 \item Supposons qu'un élément $k$ appartienne à la fois à $P$ et à $Q$.
324   Montrer que cela implique qu'il existe deux entiers naturels 
325   $m_1$ et $m_2$ tels que $m_1.p = m_2.q$.
326 \item En utilisant le théorème de Gau{\ss}, montrer que cela est absurde.
327 \item En déduire l'équation (\ref{FEuler}).
328 \end{enumerate}
329 \end{Exo}
330
331
332
333
334
335
336
337 %Refaire cet exo avec 27x +8y = 1
338 \begin{Exo}
339 L'objectif est de résoudre l'équation $(E)$ $405x -120y =15$ 
340 d'inconnues $x$ et $y$.
341 \begin{enumerate}
342 \item Trouver le PGCD de 405 et 120  à l'aide de l'algorithme d'Euclide.
343 \item En déduire une solution particulière de cette équation.
344 \item En utilisant la solution particulière, montrer que $(E)$ est 
345   équivalente à $27(x-3) = 8(y-10)$.
346 \item Utiliser le théorème de Gau{\ss} pour montrer que 
347   l'ensemble des solutions de $(E)$ est $\{(8k+3;27k+10)| k \in \Z\}$. 
348 \end{enumerate}
349 \end{Exo}
350
351
352
353 \begin{Exo}
354   Soit $p$ un nombre premier.
355 \begin{enumerate}
356 \item Calculer $\varphi(p^2)$.
357 \item Est-ce que RSA  fonctionnerait aussi avec l'entier $n = p^2$ à la place de $n=pq$?
358 \end{enumerate}
359 \end{Exo}
360
361
362
363
364
365 \section{Congruence modulo}
366
367 \begin{Def}[Congruence modulo]
368 Soit $a$ et $b$ deux entiers relatifs.
369 On dit que $a$ est congru $b$ modulo $n$ si $n$ divise $a-b$, c'est-à-dire
370 s'il existe $x \in \Z$ tel que $(a-b) = nx$.
371 On note    $a \equiv b [n]$. 
372 La relation \og $\equiv [n]$ \fg{}
373 est une relation d'équivalence appelée congruence modulo $n$.
374 \end{Def}
375
376 \begin{Prop}
377 Soit $a$, $b$, $c$, $d$, $x$ et $y$ dans $\Z$. 
378 Si $a \equiv c[n]$ et  $b \equiv d[n]$, alors
379 \begin{enumerate}
380 \item $a +b \equiv c + d [n]$;
381 \item $ab \equiv cd [n]$;
382 \item $ax +by \equiv cx +dy [n]$.
383 \end{enumerate}
384 \end{Prop}
385
386 \begin{Exo}
387 Démontrer la proposition précédente.
388 \end{Exo}
389
390 \begin{Prop}
391 Soit deux entiers naturels $a$ et $n$ tels que $1< a< n$.
392 Si $a$ et $n$ sont premier entre eux, 
393 alors il existe un unique $x \in \{1, \dots, n-1\}$ tel 
394 que $ax \equiv 1[n]$.
395 \end{Prop}
396
397 \begin{Proof}
398 \begin{itemize}
399 \item[\textbf{Existence.}]
400 Comme $a$ et $n$ sont premiers entre eux, d'après le théorème de Bézout,
401 il existe $x$ et $y$ entiers tels que $ax+ny = 1$, soit encore $ax \equiv 1[n]$.
402 \item [\textbf{Unicité.}]
403 Supposons qu'il existe une seconde solution $x'\in \{1, \dots, n-1\}$ telle que 
404 $ax' \equiv 1[n]$. Donc $a(x-x') \equiv 0[n]$. Or $n$ est premier avec  $a$.
405 D'après le théorème de Gau{\ss}, $n$ divise donc $x-x'$.
406 Or $x-x'\in \{-n+2,-n+3,\dots,-1,0,1, \dots, n-2\}$. Le seul nombre divisible par $n$ est 0 et donc $x=x'$.
407 \end{itemize} 
408 \end{Proof}
409
410 \begin{Exp}
411 Trouvons les nombres $x$ tels que $7x+11$ soit multiple de 36. Dit autrement, 
412 résoudre l'équation $7x \equiv -11 [36]$. 
413
414 On cherche un \og inverse \fg{} de 7 c.-à-d. un nombre $t$, $1 < t < 35$ 
415 tel que $7t \equiv 1 [36]$. 
416 Soit à résoudre $7t \equiv 1 [36]$ qui revient à trouver $t$ et $u$ tels
417 que  $7t -36u = 1$, soit encore les coefficient de Bézout relatifs à 
418 (7 et 36). On trouve successivement 
419 \begin{eqnarray*}
420 36 & = & 7  \times 5 +1 \\ 
421 7 & = & 7 \times 1 + 0 \\
422 & \textrm{et donc}&\\
423 1 & = & 36 - 7 \times 5
424 \end{eqnarray*}
425 et donc $t = -5$ (et $u=-1$). 
426 On en déduit $7x \equiv -11 [36]$ est équivalent à 
427 $(-5).7x \equiv (-5).-11 [36]$ soit encore 
428 $x \equiv 55 [36] \equiv 19 [36]$.
429 \end{Exp}
430
431 \begin{Exo}
432 Trouver les entiers relatif $x$ tels que 
433 $261x +2$ soit multiple de 305.
434 \end{Exo}
435
436
437
438 \begin{Exo}
439 \begin{enumerate}
440 \item Démonter que $3^5 \equiv 1 [11]$
441 \item En déduire que pour tous entiers naturels $k$ et $r$ on a 
442                                         $3^{5k +r} \equiv 3^r [11]$.
443 \item  $n$ étant un entier naturel, quels sont les restes possibles
444   dans la division de $3^n$ par 11?
445 \item  Trouvez pour quelles valeurs de $n$, $3^n + 7$ est divisible par 11.
446 \end{enumerate}
447 \end{Exo}
448
449 \begin{Exo}
450 Soit $p$ un nombre premier tel que $p \equiv 3 [4]$. 
451 Soit $a$  un entier qui est un carré, modulo $p$:
452 il existe $b$ tel que $a \equiv b^2 [p]$.
453 Montrer que 
454 $a^{(p+1)/4}$ est une racine carré de $a$, modulo $p$.  
455 \end{Exo}
456
457
458
459 \begin{Exo}
460 On se place dans le contexte de cryptographie par RSA.
461 Démontrer que si la clé d'encryptage est $e < \varphi(n)$, alors 
462 il existe une unique clé de décodage entre 1 et $\varphi(n)$.
463 \end{Exo}
464
465 \begin{Prop}[Théorème d'Euler]\label{th:Euler}
466 Soit $n \in \N^*$ et $m$, $m<n$ un entier relativement premier avec $n$.
467 Alors 
468 \begin{equation}
469 m^{\varphi(n)}\equiv1 [n].
470 \end{equation}
471 \end{Prop}
472 On laisse de côté la démonstration.
473
474 \begin{Prop}[Correction de RSA]
475 Le cryptage-décryptage du code RSA est correct: 
476 on crypte un message $m$ tel que 
477 $m\land n= 1$ en $a$ avec  
478 $ m^e  \equiv a [n]$ selon la clé $(e,n)$.
479 Alors le décryptage selon la clé $(d,n)$ redonne
480 le message initial : $a^d \equiv m [n]$.
481 \end{Prop} 
482 \begin{Proof}
483 \begin{eqnarray*}
484 a^d & \equiv &   (m^e)^d [n]\\
485 & \equiv &   m^{ed} [n] \textrm{ (réécriture)}\\
486 & \equiv &   m^{k.\varphi(n)+1} [n] \textrm{ (définition de $d$)}\\
487 & \equiv &   m^{k.\varphi(n)}m [n] \textrm{ (réécriture)}\\
488 & \equiv &   (m^{\varphi(n)})^km [n] \textrm{ (réécriture)}\\
489 & \equiv &   (1)^km [n] \textrm{ (théorème d'Euler)}\\
490 & \equiv &   m [n] \textrm{ (réécriture)}\\
491 \end{eqnarray*}
492 \end{Proof}
493
494
495 \begin{Exo}
496 On considère l'algorithme suivant: 
497 on choisit deux nombres premiers $p$ et $q$
498 distincts tels que 
499 $p \equiv 2 [3]$ et $s \equiv 2 [3]$.
500 Soit $n = pq$. 
501 Alice veut envoyer un message  à Bob. 
502 Comme dans RSA, son message est un nombre $m \in \ \{1, . . . , n - 1\}$ 
503 tel que $m \land  n = 1$
504 Le message codé d'Alice est le résultat $a= m^3[n]$.
505 Bob décode $a$ en calculant 
506 \[
507 m' \equiv a^{d} [n] \textrm{ où $d=\dfrac{2(p-1)(q-1)+1}{3}$} 
508 \]
509 Normalement $m$ doit être égal à $m'$.
510
511 \begin{enumerate}
512 \item Choisir $p=11$, $q=17$, $m=4$ puis construire le message codé ainsi que le message décodé.
513 \item  Montrer que $d$ est toujours un entier.
514 \item Expliquer pourquoi $a$ et $m'$ ne sont pas divisibles par $n$.
515 \item Montrer que Bob a bien décodé le message d’Alice.
516 \end{enumerate}
517
518 \end{Exo}
519
520
521 \begin{Prop}[Petit théorème de Fermat]
522 Si $p$ est un nombre premier et $a$ un entier 
523 alors $a^{p} \equiv a [p]$.
524 \end{Prop}
525
526 \begin{Proof}
527 La preuve se fait par récurrence sur $a$. 
528 \begin{itemize}
529 \item Pour $a=0$, c'est trivial.
530 \item Supposons la formule établie pour $k=a$ et montrons qu'elle l'est aussi
531 pour $k=a+1$. 
532 On remarque tout d'abord que pour chaque $k$, $0 < k < p$, le coefficient 
533 binomial $\binom{p}{k} = \dfrac{p!}{k!(p-k)!}$ est divisible par $p$, c.-à-d.
534 $\binom{p}{k} \equiv 0 [p]$.
535 On a alors successivement:
536 \begin{eqnarray*}
537 (k+1)^p &=& a^p + 
538 \binom{p}{1}a^{p-1}+\binom{p}{2}a^{p-2}+\dots +\binom{p}{p-1}a^{1}+1\\
539 &\equiv& a^p +1 [p]\textrm{ (d'après la remarque sur les coeff. binomiaux)}\\\
540 &\equiv& a +1 [p]\textrm{ (par hypothèse de récurrence).}\\\
541 \end{eqnarray*}
542 \end{itemize}
543 \end{Proof}
544
545 \begin{Prop}[Corrolaire du petit théorème de Fermat]
546 Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
547 alors $a^{p-1}-1$ est un multiple de $p$.
548 \end{Prop}
549 \begin{Proof}
550 D'après le petit théorème de Fermat, $a^{p}  \equiv a [p]$. Dit Autrement
551 $p$ divise $a^{p} - a = a (a^{p-1}-1)$. Or $p$ est premier avec  $a$ d'après les 
552 hypothèses. D'après le théorème de Gau{\ss}, $p$ divise $a^{p-1}-1$.
553 \end{Proof}
554
555
556 \begin{Exo}[Sujet du bac S Liban 2005]
557 % On rappelle le résultat suivant appelé le corollaire du 
558 % petit théorème de Fermat.
559
560 % \emph{Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
561 %  alors $a^{p-1}-1$ est un multiple de $p$.}
562 \begin{enumerate}
563 \item  On considère l’équation $(E)$ : $109x-226y=1$ où $x$ et $y$
564   sont des entiers relatifs.
565 \begin{enumerate}
566 \item  Déterminer $109\land 226$. 
567   Que peut-on en conclure pour l'équation $(E)$? 
568 \item  Montrer que l'ensemble des solutions de $(E)$  
569   est l'ensemble des couples de la forme 
570   $(141+226k ;68+109k)$, où $k$ appartient à $\Z$.
571   En déduire qu'il existe un unique entier naturel non nul $d$ 
572   inférieur ou égal à 226 et un unique entier naturel non nul $e$ tels que
573   $109d =1+226 e$ (on précisera les valeurs des entiers $d$ et $e$).
574 \end{enumerate}
575 \item Démontrer que 227 est un nombre premier.
576 \item  On note $A=\{0,1,2,\dots,226\}$. On considère les deux fonctions 
577   $f$ et $g$ de $A$ dans $A$ définies de la manière suivante: 
578 \begin{itemize}
579 \item  A tout entier $a\in A$, $f$ associe le reste de
580   la division euclidienne de $a^{109}$ par 227.
581 \item A tout entier $a\in A$, $g$ associe le reste de la
582   division euclidienne de $a^{141}$ par 227.
583 \end{itemize}
584 \begin{enumerate}
585 \item Vérifier que $g(f(0))=0$ .
586 \item Montrer que, quel que soit l'entier non nul $a$ de $A$ , $a^{226}-1$ est multiple de 227.
587 \item En déduire que, quel que soit l'entier non nul $a$ de $A$, 
588 $g(f(a))=a$ . Que peut-on dire de $f(g(a))=a$?
589 \end{enumerate}
590 \end{enumerate}
591 \end{Exo}
592
593
594
595 \subsection{Puissance de grands nombres}
596
597 \begin{Exp}
598 Calculons $666^{999}[13]$.
599 On a successivement:
600 \begin{eqnarray*}
601 666^{999} & \equiv & (13\times 51 + 3)^{999} [13]\\ 
602  & \equiv & 3^{999} [13]\\ 
603  & \equiv & 3^{12\times83 +3} [13] \\
604  & \equiv & 3^3 \times (3^{12})^{83} [13] \\
605  & \equiv & 3^3 \times (1)^{83} [13] \textrm{(car $3^{12}\equiv 1 [13]$ d'après le corollaire du petit théorème de Fermat)}\\ 
606  & \equiv & 27 [13]\\
607  & \equiv & 1 [13]
608 \end{eqnarray*} 
609 \end{Exp}
610
611
612
613 \begin{Exo}
614 Calculer $2^{500} [13]$ et $26^{1000} [17]$.
615 \end{Exo}
616
617
618 % \begin{Exo}
619 % Montrer que si l'entier naturel $n$ est premier alors
620 % $$(x +1)^n \equiv x^n +1[n].$$
621
622 % On a même l'équivalence, cependant, l'autre sens est plus technique à démontrer.
623
624 % \end{Exo}
625
626
627
628
629
630 \section{Génération de grands nombres premiers}
631 Dans ce qui suit, on nomme $\Prem$ l'ensemble des nombres premiers.
632 Depuis Euclide, on sait que $\Prem$ est de taille infinie.
633 Fermat avait cru donner une formule ne générant que des nombres premiers.
634 Il affirmait que pour tout $n \in \N$, le nombre 
635 \begin{eqnarray}
636 F_n &= & 2^{2^n} +1 
637 \end{eqnarray}
638 était premier. Or 641 divise $F_5$. Aujourd'hui, on pense que seuls 
639 les nombres de $F_0$ à $F_4$ sont premiers.
640
641 \subsection{Distribution des nombres premiers parmi les entiers}
642
643 Même si on ne connaît pas de formule permettant de construire tous les 
644 nombres premiers, tout n'est pas perdu puisque les nombres premiers 
645 ne sont pas si rares que cela. Le théorème suivant donne même 
646 la proportion approximative des entiers inférieurs ou égaux à
647 $N$  qui sont premiers.
648 \begin{Prop}[Théorème des nombres premiers]
649 La fonction $\pi:\N \rightarrow \N$  associe 
650 à chaque nombre $N$ le nombre d'entiers inférieurs ou égaux à $N$ qui sont 
651 premiers, soit $\pi(N) = |\{p \le N | p \textrm{ premier}\}|$.
652 Lorsque $N$ est grand, on a:
653 \begin{eqnarray}
654 \pi(N) &\approx& \dfrac{N}{\ln(N)}
655 \end{eqnarray}
656 \end{Prop}
657 La preuve de ce théorème est d'un niveau très avancé et n'est pas reproduite 
658 ici.
659
660 Pour obtenir un  entier de 100 chiffres, il suffit de considérer 
661 $N= 10^{100}$. Si on choisit au hasard un nombre dans $\N_{N}^{*}$,
662 la probabilité qu'il soit premier est: 
663 \begin{eqnarray*}
664 \textrm{Prob}(n \textrm{ premier}) &\approx&
665  \dfrac{\dfrac{N}{\ln(N)}}{N} \\
666  &\approx&
667  \dfrac{1}{\ln(N)}
668 \end{eqnarray*}
669 Le tableau~\ref{Table:propPrem} donne une valeur approchée de 
670 cette probabilité pour quelques nombres de chiffres. 
671 Dans celui-ci:
672 \begin{itemize}
673 \item la seconde ligne n'impose aucune restriction sur le dernier chiffre;
674 \item la troisième ligne impose que le dernier chiffre soit dans 
675   $\{1,3,5,7,9\}$: il est  inutile de vérifier que les
676   multiples de 2 sont premiers!
677 \item la quatrième ligne impose que le dernier chiffre soit dans $\{1,3,7,9\}$:
678   les multiples de 5 ne sont pas premiers!
679 \end{itemize}
680 On constate que si l'on tire au hasard un nombre (même de 100 chiffres), 
681 parmi ceux qui se terminent par $\{1,3,7,9\}$ (ensemble noté $B$ par la suite) 
682 la probabilité qu'il soit premier n'est pas infime. La solution au problème 
683 de génération de nombres premiers repose sur la capacité ou non a disposer 
684 d'un test efficace de primalité pour des grands nombres.
685
686 %% Attention ce tableau est généré par ailleurs 
687 \begin{table}[ht]
688 \begin{center}
689 \begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|}
690  \hline 
691 Nombre de chiffres & \textbf{75}& \textbf{100}& \textbf{125}& \textbf{150}& \textbf{175}& \textbf{200}& \textbf{225}& \textbf{250}& \textbf{275}& \textbf{300}\\
692 \hline 
693 Dernier chiffre quelconque & 172& 230& 287& 345& 402& 460& 518& 575& 633& 690\\
694 \hline 
695 Dernier chiffre impair & 86& 115& 143& 172& 201& 230& 259& 287& 316& 345\\
696 \hline 
697 Dernier chiffre dans $\{1,3,7,9\}$& 69& 92& 115& 138& 161& 184& 207& 230& 253& 276\\
698 \hline
699  \end{tabular}
700 \end{center}
701 \caption{Probabilités inverse d'obtenir un nombre premier \label{Table:propPrem}}
702 \end{table}
703
704
705 On considère comme expérience aléatoire le fait de tirer un nombre au hasard 
706 dans $B$. On a une probabilité $p$ que le nombre soit premier.
707 Soit $X$ la variable aléatoire qui compte le nombre 
708 de fois où l'on a réalisé cette expérience avant d'obtenir un nombre premier.
709 $X$ suit une loi géométrique de paramètre $p$:
710 \[
711 P(X=k) = (1-p)^{k-1}p.
712 \]
713 Or l'espérance d'une variable aléatoire
714 suivant une loi géométrique de paramètre $p$ est $\frac{1}{p}$.
715 Pour 100 chiffres, il faudra en moyenne 92 tirages pour générer un 
716 nombre premier. 
717
718 Il \og reste \fg{} à fournir une méthode efficace pour décider 
719 de la primalité d'un entier, ce que présente la section suivante.
720
721
722 \subsection{Tests de primalité}
723 Chaque section donne un algorithme permettant de décider si un entier $p$ fourni
724 en entrée est premier ou non.
725
726 \subsubsection{Méthode naïve}
727 On vérifie s'il est divisible par l'un des entiers pairs compris entre 2 et 
728 $\sqrt{p}$. Si la réponse est négative, alors $p$ est premier, 
729 sinon il est composé. Pour améliorer la performance de cette méthode, on peut 
730 calculer à l'avance une liste des nombres premiers inférieurs à $\sqrt{p}$
731 (avec un crible d'Ératosthène), pour ne tester que ceux-ci.
732
733 Par exemple, pour tester un nombre inférieur à 39 000, 
734 il suffit de vérifier  qu'il n'est pas multiple d'un nombre premiers inférieur
735 à 198 (car $198^2 = 39 204$); on doit faire au maximum 45 divisions.
736
737 \subsubsection{Tests probabilistes}
738
739 % \begin{Prop}[Corrolaire du petit théorème de Fermat]
740 % Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
741 % alors $a^{p-1}-1$ est un multiple de $p$, c'est-à-dire:
742 % \begin{equation}
743 %  \forall a\in \N \forall p \in \N (   p \in \Prem \textrm{ et }   a \not\equiv  0[p] 
744 %   \Rightarrow a^{p-1}\equiv 1 [p]).
745 % \label{petittheremeFermat}
746 % \end{equation}
747 % \end{Prop}
748
749
750 \paragraph{Test de Fermat.}
751 Le petit théorème de Fermat est une implication et non pas une équivalence:
752 \begin{itemize}
753 \item si on prend un $p\in \N$ et un $a \in\N$ quelconque, 
754   alors si $p$ est premier et $a$ non divisible par $p$, alors on peut en déduire que $a^{p-1}\equiv 1 [p]$;
755 \item rien ne dit que si on a  $a^{p-1}\equiv 1 [p]$, alors $p$ est premier et $a$ non divisible par $p$.
756 \item rien ne dit non plus que que si on a  $a^{p-1}\equiv 1 [p]$ et que $a$ non divisible par $p$, alors $p$ est premier.
757 \end{itemize}
758 Cependant si on effectue un grand nombre de fois l'expérience de choisir 
759 $a \in \N_{n-1}^{*}$ et qu'à chaque fois on établit $a^{p-1}\equiv 1 [p]$, 
760 alors $p$ est probablement premier.
761 Cependant ce n'est pas toujours le cas: par exemple $2^{340} \equiv 1 [341]$ et 
762 pourtant $341 =  11 \times 31$.
763
764 \begin{Exo}
765 Donner le code de la fonction \verb+testPrimaliteFermat(n,t)+ qui retourne 
766 \verb+True+ si \verb+t+ evaluations de $\texttt{a}^{\texttt{n}-1}$ ont retourné $ 1 [\texttt{n}]$ 
767 pour un $a \in \N_{n-1}^{*}$ et \verb+False+ sinon.
768 \end{Exo}
769
770
771
772 \paragraph{Test de Miller-Rabin}
773
774 Soit $n$ un nombre premier impair,
775 alors nous pouvons écrire $n - 1$ comme $2^s \times d$, 
776 où $s$ est un entier et $d$ est impair.
777 Alors, pour tout entier naturel $a \in \N_{n-1}^*$
778 tel que $a$ est premier avec $n$, 
779 une des conditions suivantes doit être vérifiée:
780 \begin{enumerate}
781 \item $a^{d} \equiv 1 [n]$, ou bien  
782 \item $a^{2^r\cdot d} \equiv -1 [n]$ pour un certain $0 \le r \le s-1$.
783 \end{enumerate} 
784 La preuve de cette propriété est admise
785
786 Le test de primalité de Miller-Rabin est basé sur les équations précédentes.
787 Si on choisit un grand nombre $t$ de fois $a \in \N_{n-1}^*$
788 et qu'on obtienne à chaque fois 
789 \begin{itemize}
790 \item $a^{d} \equiv 1 [n]$ ou 
791 \item $a^{2^r\cdot d} \equiv -1 [n]$ pour un certain $0 \le r \le s-1$,
792 \end{itemize}
793 alors le nombre $n$ est probablement premier.
794 Dans le cas contraire ($a^{d} \not\equiv 1 [n]$ et 
795 $a^{2^r \cdot d} \not\equiv -1 [n]$ pour tous les  $0 \le r \le s-1$),
796 $n$ n'est pas premier.
797
798 \begin{Exo}
799 Donner le code de la fonction \verb+testPrimaliteMillerRabin(n,t)+.
800 \end{Exo}
801
802
803 \section{Factorisation}
804 L'objectif de cette partie est de montrer qu'on peut factoriser $n$ 
805 sous la forme de $p\times q$ si ces deux derniers nombres ont été mal choisis.
806
807
808 \begin{Exo}
809 On considère que l'étape 1 de l'algorithme RSA a généré deux nombre premiers $p$ et $q$ proches tels que $p>q$. On définit  $t = \frac{p+q}{2}$ et $s = \frac{p-q}{2}$.
810 Montrer que
811 \begin{enumerate}
812 \item le produit $n = pq = t^2 - s^2$;
813 \item l'entier $t$ est légèrement supérieur à la racine carrée de $n$ et que $s $ est petit;
814 \item l'on peut utiliser ces informations pour factoriser $n$ c.-à-d. retrouver $p$ et $q$;
815 \item Factoriser 896861 et  318040531. % res=2953*3037     res = 17729*17939
816 \item Factoriser 9623827 et 343570291. % res=(3259, 2953)     res = (19379, 17729)
817 \end{enumerate}
818 \end{Exo}
819
820 \begin{TP}
821 L'objectif de ce TP est d'implanter toute la démarche RSA 
822 avec les éléments vus en TD. 
823 % Tout ceci est à synthétiser dans un document 
824 % libreoffice à renvoyer à l'adresse \url{couchot@femto-st.fr} avec pour sujet 
825 % RSA-NOM1-NOM2-TDX.
826 \begin{enumerate}
827 \item Quel est le plus petit nombre à trois chiffres? 
828   Quel est le plus grand nombre à trois chiffres? 
829   Comment générer aléatoirement un nombre qui a trois chiffres en utilisant 
830   \verb+randint+?
831 \item Même question que la question précédente, en remplaçant \og trois\fg{}
832   par $M$.  
833 \item On a vu qu'un nombre se terminant par 0,2,4,5,6,8 n'est jamais premier.
834   Comment générer un nombre qui a $N$ chiffres, dont le dernier chiffre 
835   n'est pas  dans la liste précédente.
836 \item Pour affirmer qu'un nombre de 100 chiffres 
837   est premier, on invoquera le test de Miller-Rabin avec 50
838   valeurs testées  différentes $a$. Si toutes retournent qu'il est 
839   probablement premier, on considérera qu'il l'est.
840   Construire la fonction \verb+genereUnNombrePremier(N)+ qui retourne 
841   un nombre probablement premier selon cette méthode.
842   %Copier-coller cette fonction dans votre synthèse.
843 \item A l'aide de l'agorithme précédent, générer deux nombres premiers 
844   $p$ et $q$ de 100 chiffres.
845   %Copier et coller ces deux nombres dans votre synthèse.
846   Calculer $n=pq$ puis \verb+phi+ telle 
847   que \verb+phi=(p-1)*(q-1)+.
848
849 \item Contruire la partie $e$ de la clé publique $(e,n)$
850   comme un nombre premier de trente chiffres par exemple. 
851   Si elle est première avec \verb+phi+, c'est une bonne clé, sinon on 
852   regénere un nombre premier de trente chiffres.
853   %Copier et coller $e$ dans votre synthèse.
854
855 \item Donner le code la fonction \verb+bezout(+$a$,$b$\verb+)+ 
856 qui retourne $x$ et $y$ tels que $x.a + y.b = a \land b$.
857
858 %  \begin{verbatim}
859 % def bezout(a,b):
860 %   if b==0: return [1,0]
861 %   else:
862 %     uv= bezout(b,a%b)
863 %     return [uv[1],uv[0]-uv[1]*(a/b)]
864 % \end{verbatim}
865
866 Se servir de cette fonction pour générer la partie $d$ de 
867 la clé privée $(d,n)$. Attention, faire en sorte que $0 \le d \le$\verb+phi+.
868 %Copier-coller les instructions permettant d'obtenir $d$.
869 %Copier-coller la valeur de $d$.
870
871 \item Chiffrer à l'aide de la clé publique $(e,n)$
872   le message $m=3402752281514000316845$  
873   qui est un numéro de carte bancaire comprenant les 16 chiffres, 
874   la date de validité et le code de sécurité. Le mesage chiffré est $a$.
875   %Copier-coller l'instructions permettant d'obtenir $a$.
876   %Copier-coller la valeur de $a$.
877   
878
879 \item Déchiffrer $a$ à l'aide de la clé privée. 
880   Vérifier que vous obtenez bien $m$ à nouveau.
881   %Copier-coller l'instructions permettant de déchiffrer $a$.
882 \end{enumerate} 
883
884
885  
886 \end{TP}
887
888
889
890 % \section{Conclusion}
891 % cf SMATH paragraphe applications p 223.