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

Private GIT Repository
ajout de qques exos
[modelisationMathS3.git] / rsa.tex
diff --git a/rsa.tex b/rsa.tex
index d9312ed7c079960e1eceeb3c6471b28f61f1dbe1..eee81e51080a5fd9ff9e28cb1e32acccbb75d113 100644 (file)
--- a/rsa.tex
+++ b/rsa.tex
@@ -55,71 +55,7 @@ Il s'inspire largement de~\cite{RSA09}
 
 
 
 
 
 
-\section{L'algorithme RSA}
-
-\subsection{Les étapes détaillées de l'algorithme}
-
-On rappelle qu'un système cryptographique à clé publique est
-initialisé par le receveur, c.-à-d. celui qui veut recevoir des messages de
-manière sure. 
-
-\paragraph{Première étape: choix des deux nombres $p$ et $q$.} 
-Le receveur choisit deux grands nombres premiers
-$p$ et $q$ et calcule $n = pq$. Puis il calcule $\varphi(n)$, 
-où $\varphi : \N^* \rightarrow \N^* $ est la \emph{fonction d'Euler} 
-définie par $\varphi(n)$  est le nombre d'entiers dans $\{1, 2, \dots , n -1 \}$ 
-qui sont premiers avec $n$.
-\paragraph{Deuxième  étape: choix de la clé publique.} 
-Le receveur choisit $e \in 
-\{1, \dots , n-1\}$  premier avec $\varphi(n)$.
-La clé publique est la paire $(e,n)$. L'expéditeur
-va s'en servir pour crypter son message à la quatrième étape ci-dessous.
-\paragraph{Troisième  étape: construction de la clé privée.}
-Le receveur calcule l'entier $d \in \{1,\dots, n-1\}$
-tel que le reste de la division de $ed$ par $\varphi(n)$ est 1. 
-Ceci se note aussi $ed \equiv 1 [\varphi(n)]$ qui se lie $ed$ est congru 
-à 1 modulo $\varphi(n)$.
-La paire $(d,n)$ est la clé privée de décryptage. Elle
-est secrète et permet au receveur de décrypter tous les messages reçus
-et cryptés avec $(e,n)$. 
-\paragraph{Quatrième  étape: cryptage du message.}
-L’expéditeur peut crypter tout message écrit sous la forme 
-d'un nombre $m$ appartenant à $\{1, \dots , n-1\}$ et qui est 
-premier avec $n$. 
-Le message codé est le reste $a$ de la division de $m^e$ par $n$. 
-On a donc $m^e \equiv a [n]$, où $a \in \{1, \dots , n - 1\}$.
-\paragraph{Cinquième  étape:  décryptage du message.} 
-Le receveur dispose de $a$ et de sa clé privée $(d,n)$. 
-Pour décrypter $a$, il calcule le reste dans la division par $n$
-de $a^d$ (c.-à-d. $a^d [n]$). 
-Si aucune erreur de calcul n'a été effectuée, c'est le message initial $m$.
-
-
-\subsection{Sur un exemple très petit}
-Le receveur choisit $p=7$, $q=13$.
-\begin{enumerate}
-\item Construire l'ensemble des entiers qui sont premiers avec $n=pq$ 
-  et en déduire que $\varphi(91)=72$.
-\item Montrer que $(29,91)$ est un candidat acceptable de clé publique.
-\item Trouver la clé privée associée.
-\item Montrer que  l'expéditeur a la possibilité de crypter le message $m=59$.
-\item Construire le message crypté $a$ à l'aide de la clé publique.
-\item Décrypter
- le message $a$ à l'aide de la clé privée. Il doit s'agir de $m$. 
-\end{enumerate} 
-
-
-\subsection{Les points clés}
-L'algorithme RSA repose sur plusieurs points clés rencontrés successivement:
-\begin{itemize}
-\item la génération de deux grands nombres premiers $p$ et $q$ ;
-\item la multiplication de grands nombres : $pq$, $ed$,   
-\item l'arithmétique modulaire;
-\item l'algorithme d'Euclide de génération de PGCD et son corollaire de Bézout;
-\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.
-\end{itemize}
-
-\section{Rappels d'arithmétique}
+\section{Rappels d'arithmétique jusqu'au PGCD} 
 
 Soit deux entiers $a$ et $b$ dans $\Z$.
 On dit que $a$ divise $b$ (que l'on note $a | b$)
 
 Soit deux entiers $a$ et $b$ dans $\Z$.
 On dit que $a$ divise $b$ (que l'on note $a | b$)
@@ -132,7 +68,13 @@ $a$ et $b$, noté $a\land b$ est l'entier naturel qui vérifie
 \item Si $d | a$ et $d | b$, alors $d | a\land b$.
 \end{itemize}
 
 \item Si $d | a$ et $d | b$, alors $d | a\land b$.
 \end{itemize}
 
-\subsection{Algorithme d'Euclide de calcul de PGCD}
+
+\begin{Exo}
+Déterminer $550 \land 1540$.
+\end{Exo}
+
+
+%\subsection{Algorithme d'Euclide de calcul de PGCD}
 
 Par définition, le PGCD de $a$ non nul avec
 0 est $a$ (définition raisonnable, car 0
 
 Par définition, le PGCD de $a$ non nul avec
 0 est $a$ (définition raisonnable, car 0
@@ -178,7 +120,6 @@ Donner le code d'un programme qui prend en entrée deux entiers naturels $a$
 et $b$ tels que $a>b \ge 0$ et qui retourne leur PGCD 
 \end{Exo}
 
 et $b$ tels que $a>b \ge 0$ et qui retourne leur PGCD 
 \end{Exo}
 
-\subsection{Les incontournables Bézout et Gau{\ss}}
 
 \begin{Prop}[Identite   de Bézout]
 On considère deux nombres entiers strictement positifs $a$ et $b$. 
 
 \begin{Prop}[Identite   de Bézout]
 On considère deux nombres entiers strictement positifs $a$ et $b$. 
@@ -205,15 +146,25 @@ On sait que $a\land b$ est $r_n$ le dernier reste non nul.
 On remonte les équations une à une en démarrant de (\ref{eq:def:rnm2}).
 \begin{eqnarray}
 r_{n}  & = & r_{n-2} - r_{n-1} \times q_{n}  \nonumber \\
 On remonte les équations une à une en démarrant de (\ref{eq:def:rnm2}).
 \begin{eqnarray}
 r_{n}  & = & r_{n-2} - r_{n-1} \times q_{n}  \nonumber \\
-  & = & r_{n-2} - (r_{n-3} - r_{n-2} \times q_{n-1}) \times q_{n} (\textrm{on remplace $r_{n-1}$ par sa def dans (\ref{eq:def:rnm3})}) \nonumber\\
-  & = & r_{n-2}. (1 + q_{n-1}. q_{n}) - r_{n-3}. q_{n} (\textrm{factorisation})\nonumber \\
-   & = & (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 sa def dans (\ref{eq:def:rnm4})}) \nonumber \\
+  & = & 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\\
+  & = & r_{n-2}. (1 + q_{n-1}. q_{n}) - r_{n-3}. q_{n} \textrm{ (factorisation)}\nonumber \\
+   & = & (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 \\
 & \vdots & \nonumber \\
 & \vdots & \nonumber \\
-& = & \ldots (\textrm{on remplace $r_{1}$ par sa def dans (\ref{eq:def:r1})}) \nonumber\\ 
+& = & \ldots \textrm{ (on remplace $r_{1}$ par son expression tirée de (\ref{eq:def:r1})}) \nonumber\\ 
 & = &ax + by \nonumber
 \end{eqnarray}
 \end{Proof}
 
 & = &ax + by \nonumber
 \end{eqnarray}
 \end{Proof}
 
+\begin{Exo}
+Montrer qu'il existe $x$ et $y$ tels que 
+$29x + 72y=1$ puis trouver une valeur pour  $x$ et $y$.
+\end{Exo}
+
+
+\begin{Exo}
+Montrer que les propriétés $ a \land m = 1 $
+et $ b \land m = 1 $ impliquent $ ab \land m = 1 $.
+\end{Exo}
 
 
 \begin{Def}[Nombres premiers entre eux]
 
 
 \begin{Def}[Nombres premiers entre eux]
@@ -221,8 +172,109 @@ Les deux entiers relatifs $a$ et $b$ sont premiers entre eux si
 leur plus grand commun diviseur est égal à 1.
 \end{Def}
 
 leur plus grand commun diviseur est égal à 1.
 \end{Def}
 
+\begin{Exo}
+Montrer que 55 et 21 sont premiers entre eux.
+\end{Exo}
+
+
 
 
 
 
+
+
+
+\section{L'algorithme RSA}
+
+\subsection{Les étapes détaillées de l'algorithme}
+
+On rappelle qu'un système cryptographique à clé publique est
+initialisé par le receveur, c.-à-d. celui qui veut recevoir des messages de
+manière sure. 
+
+\paragraph{Première étape: choix des deux nombres $p$ et $q$.} 
+Le receveur choisit deux grands nombres premiers
+$p$ et $q$ et calcule $n = pq$. Puis il calcule $\varphi(n)$, 
+où $\varphi : \N^* \rightarrow \N^* $ est la \emph{fonction d'Euler} 
+L'entier $\varphi(n)$  est le nombre d'entiers 
+dans $\{1, 2, \dots , n -1 \}$ qui sont premiers avec $n$.
+
+\begin{Exo}
+Le receveur choisit $p=7$, $q=13$.
+Construire l'ensemble des entiers qui sont premiers avec $n=pq$ 
+et en déduire que $\varphi(91)=72$.
+\end{Exo}
+
+
+\paragraph{Deuxième  étape: choix de la clé publique.} 
+Le receveur choisit $e \in 
+\{1, \dots , n-1\}$  premier avec $\varphi(n)$.
+La clé publique est la paire $(e,n)$. 
+Chaque expéditeur
+va s'en servir pour crypter son message à destination de ce receveur.
+Le cryptage est détaillé 
+ à la quatrième étape ci-dessous.
+
+\begin{Exo}
+Montrer que $(29,91)$ est un candidat acceptable de clé publique.
+\end{Exo}
+
+\paragraph{Troisième  étape: construction de la clé privée.}
+Le receveur calcule l'entier $d \in \{1,\dots, n-1\}$
+tel que le reste de la division de $ed$ par $\varphi(n)$ est 1. 
+Ceci se note aussi $ed \equiv 1 [\varphi(n)]$ qui se lie $ed$ est congru 
+à 1 modulo $\varphi(n)$.
+La paire $(d,n)$ est la clé privée de décryptage. 
+Elle est secrète et permet au receveur de décrypter tous les messages reçus
+et cryptés avec $(e,n)$. 
+
+\begin{Exo}
+ Trouver la clé privée associée.
+\end{Exo}
+
+
+\paragraph{Quatrième  étape: cryptage du message.}
+L’expéditeur peut crypter tout message écrit sous la forme 
+d'un nombre $m$ appartenant à $\{1, \dots , n-1\}$ et qui est 
+premier avec $n$. 
+Le message codé est le reste $a$ de la division de $m^e$ par $n$. 
+On a donc $m^e \equiv a [n]$, où $a \in \{1, \dots , n - 1\}$.
+
+\begin{Exo}
+\begin{enumerate}
+\item Montrer que  l'expéditeur a la possibilité de crypter le message $m=59$.
+\item Construire le message crypté $a$ à l'aide de la clé publique.
+\end{enumerate}
+\end{Exo}
+
+\paragraph{Cinquième  étape:  décryptage du message.} 
+Le receveur dispose de $a$ et de sa clé privée $(d,n)$. 
+Pour décrypter $a$, il calcule le reste dans la division par $n$
+de $a^d$ (c.-à-d. $a^d [n]$). 
+Si aucune erreur de calcul n'a été effectuée, c'est le message initial $m$.
+
+
+\begin{Exo}
+Décrypter
+ le message $a$ à l'aide de la clé privée. Il doit s'agir de $m$. 
+\end{Exo}
+
+
+\subsection{Les points clés}
+L'algorithme RSA repose sur plusieurs points clés rencontrés successivement:
+\begin{itemize}
+\item la génération de deux grands nombres premiers $p$ et $q$ ;
+\item la multiplication de grands nombres : $pq$, $ed$,   
+\item l'arithmétique modulaire;
+\item l'algorithme d'Euclide de génération de PGCD et son corollaire de Bézout;
+\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.
+\end{itemize}
+
+
+
+%\subsection{L'algorithme de RSA est correct}
+
+\section{Les incontournables théorèmes de Bézout et de 
+  Gau{\ss}}
+
 \begin{Prop}[Théorème de Bézout]
 Deux entiers strictement positifs 
 $a$ et $b$ sont premiers entre eux, si et seulement s'il
 \begin{Prop}[Théorème de Bézout]
 Deux entiers strictement positifs 
 $a$ et $b$ sont premiers entre eux, si et seulement s'il
@@ -248,8 +300,9 @@ Si $a$ divise le produit $bc$
 et s'il est premier avec $b$, alors il divise $c$.
 \end{Prop}
 
 et s'il est premier avec $b$, alors il divise $c$.
 \end{Prop}
 
+
 \begin{Exo}
 \begin{Exo}
-Faire la preuve de ce théorème
+Faire la preuve du  théorème de Gau{\ss}.
 \end{Exo}
 
 \begin{Prop}[Fonction d'Euler]
 \end{Exo}
 
 \begin{Prop}[Fonction d'Euler]
@@ -257,10 +310,10 @@ Si $p$ et $q$ sont deux nombres premiers distincts alors l'égalité
 suivante permet de trouver le valeur de la fonction d'Euler en un seul 
 produit:
 \begin{equation}
 suivante permet de trouver le valeur de la fonction d'Euler en un seul 
 produit:
 \begin{equation}
-\varphi(pq)=(p-1)(q-1) \label{FEuler}
+\varphi(pq)=(p-1)(q-1). \label{FEuler}
 \end{equation} 
 \end{equation} 
-
 \end{Prop}
 \end{Prop}
+
 \begin{Exo}[Preuve de l'expression d'Euler]
 On doit compter le cardinal des nombres de $\{1, 2, . . . , pq -1\}$ qui sont 
 premiers avec $pq$.
 \begin{Exo}[Preuve de l'expression d'Euler]
 On doit compter le cardinal des nombres de $\{1, 2, . . . , pq -1\}$ qui sont 
 premiers avec $pq$.
@@ -278,6 +331,9 @@ premiers avec $pq$.
 
 
 
 
 
 
+
+
+
 %Refaire cet exo avec 27x +8y = 1
 \begin{Exo}
 L'objectif est de résoudre l'équation $(E)$ $405x -120y =15$ 
 %Refaire cet exo avec 27x +8y = 1
 \begin{Exo}
 L'objectif est de résoudre l'équation $(E)$ $405x -120y =15$ 
@@ -294,46 +350,19 @@ d'inconnues $x$ et $y$.
 
 
 
 
 
 
-
-\begin{Exo}[Sujet du bac S Liban 2005]
-On rappelle le résultat suivant appelé petit théorème de Fermat.
-
-\emph{Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
- alors $a^{p-1}-1$ est un multiple de $p$.}
-\begin{enumerate}
-\item  On considère l’équation $(E)$ : $109x-226y=1$ où $x$ et $y$
-  sont des entiers relatifs.
-\begin{enumerate}
-\item  Déterminer $109\land 226$. 
-  Que peut-on en conclure pour l'équation $(E)$? 
-\item  Montrer que l'ensemble des solutions de $(E)$  
-  est l'ensemble des couples de la forme 
-  $(141+226k ;68+109k)$, où $k$ appartient à $\Z$.
-  En déduire qu'il existe un unique entier naturel non nul $d$ 
-  inférieur ou égal à 226 et un unique entier naturel non nul $e$ tels que
-  $109d =1+226 e$ (on précisera les valeurs des entiers $d$ et $e$).
-\end{enumerate}
-\item Démontrer que 227 est un nombre premier.
-\item  On note $A=\{0,1,2,\dots,226\}$. On considère les deux fonctions 
-  $f$ et $g$ de $A$ dans $A$ définies de la manière suivante: 
-\begin{itemize}
-\item  A tout entier $a\in A$, $f$ associe le reste de
-  la division euclidienne de $a^{109}$ par 227.
-\item A tout entier $a\in A$, $g$ associe le reste de la
-  division euclidienne de $a^{141}$ par 227.
-\end{itemize}
+\begin{Exo}
+  Soit $p$ un nombre premier.
 \begin{enumerate}
 \begin{enumerate}
-\item Vérifier que $g(f(0))=0$ .
-\item Montrer que, quel que soit l'entier non nul $a$ de $A$ , $a^{226}-1$ est multiple de 227.
-\item En déduire que, quel que soit l'entier non nul $a$ de $A$, 
-$g(f(a))=a$ . Que peut-on dire de $f(g(a))=a$?
-\end{enumerate}
+\item Calculer $\varphi(p^2)$.
+\item Est-ce que RSA  fonctionnerait aussi avec l'entier $n = p^2$ à la place de $n=pq$?
 \end{enumerate}
 \end{Exo}
 
 
 
 \end{enumerate}
 \end{Exo}
 
 
 
-\section{Arithmétique modulaire}
+
+
+\section{Congruence modulo}
 
 \begin{Def}[Congruence modulo]
 Soit $a$ et $b$ deux entiers relatifs.
 
 \begin{Def}[Congruence modulo]
 Soit $a$ et $b$ deux entiers relatifs.
@@ -359,7 +388,7 @@ Démontrer la proposition précédente.
 \end{Exo}
 
 \begin{Prop}
 \end{Exo}
 
 \begin{Prop}
-Soit deux entiers naturels $a$ et $n$ tels que $a< n$.
+Soit deux entiers naturels $a$ et $n$ tels que $1< a< n$.
 Si $a$ et $n$ sont premier entre eux, 
 alors il existe un unique $x \in \{1, \dots, n-1\}$ tel 
 que $ax \equiv 1[n]$.
 Si $a$ et $n$ sont premier entre eux, 
 alors il existe un unique $x \in \{1, \dots, n-1\}$ tel 
 que $ax \equiv 1[n]$.
@@ -369,30 +398,73 @@ que $ax \equiv 1[n]$.
 \begin{itemize}
 \item[\textbf{Existence.}]
 Comme $a$ et $n$ sont premiers entre eux, d'après le théorème de Bézout,
 \begin{itemize}
 \item[\textbf{Existence.}]
 Comme $a$ et $n$ sont premiers entre eux, d'après le théorème de Bézout,
-il exite $x$ et $y$ entiers tels que 
+il existe $x$ et $y$ entiers tels que $ax+ny = 1$, soit encore $ax \equiv 1[n]$.
+\item [\textbf{Unicité.}]
+Supposons qu'il existe une seconde solution $x'\in \{1, \dots, n-1\}$ telle que 
+$ax' \equiv 1[n]$. Donc $a(x-x') \equiv 0[n]$. Or $n$ est premier avec  $a$.
+D'après le théorème de Gau{\ss}, $n$ divise donc $x-x'$.
+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'$.
 \end{itemize} 
 \end{Proof}
 
 \end{itemize} 
 \end{Proof}
 
+\begin{Exp}
+Trouvons les nombres $x$ tels que $7x+11$ soit multiple de 36. Dit autrement, 
+résoudre l'équation $7x \equiv -11 [36]$. 
+
+On cherche un \og inverse \fg{} de 7 c.-à-d. un nombre $t$, $1 < t < 35$ 
+tel que $7t \equiv 1 [36]$. 
+Soit à résoudre $7t \equiv 1 [36]$ qui revient à trouver $t$ et $u$ tels
+que  $7t -36u = 1$, soit encore les coefficient de Bézout relatifs à 
+(7 et 36). On trouve successivement 
+\begin{eqnarray*}
+36 & = & 7  \times 5 +1 \\ 
+7 & = & 7 \times 1 + 0 \\
+& \textrm{et donc}&\\
+1 & = & 36 - 7 \times 5
+\end{eqnarray*}
+et donc $t = -5$ (et $u=-1$). 
+On en déduit $7x \equiv -11 [36]$ est équivalent à 
+$(-5).7x \equiv (-5).-11 [36]$ soit encore 
+$x \equiv 55 [36] \equiv 19 [36]$.
+\end{Exp}
+
+\begin{Exo}
+Trouver les entiers relatif $x$ tels que 
+$261x +2$ soit multiple de 305.
+\end{Exo}
+
+
 
 \begin{Exo}
 \begin{enumerate}
 
 \begin{Exo}
 \begin{enumerate}
-\item Démonter que $35 \equiv 1 [11]$
+\item Démonter que $3^5 \equiv 1 [11]$
 \item En déduire que pour tous entiers naturels $k$ et $r$ on a 
 \item En déduire que pour tous entiers naturels $k$ et $r$ on a 
-                                        $35k +r \equiv 3r [11]$.
+                                        $3^{5k +r} \equiv 3^r [11]$.
 \item  $n$ étant un entier naturel, quels sont les restes possibles
   dans la division de $3^n$ par 11?
 \item  $n$ étant un entier naturel, quels sont les restes possibles
   dans la division de $3^n$ par 11?
-\item  Trouvez pour quelles valeurs de $n$, $3n + 7$ est divisible par 11
+\item  Trouvez pour quelles valeurs de $n$, $3^n + 7$ est divisible par 11.
 \end{enumerate}
 \end{Exo}
 
 \end{enumerate}
 \end{Exo}
 
+\begin{Exo}
+Soit $p$ un nombre premier tel que $p \equiv 3 [4]$. 
+Soit $a$  un entier qui est un carré, modulo $p$:
+il existe $b$ tel que $a \equiv b^2 [p]$.
+Montrer que 
+$a^{(p+1)/4}$ est une racine carré de $a$, modulo $p$.  
+\end{Exo}
+
+
+
 \begin{Exo}
 On se place dans le contexte de cryptographie par RSA.
 Démontrer que si la clé d'encryptage est $e < \varphi(n)$, alors 
 il existe une unique clé de décodage entre 1 et $\varphi(n)$.
 \end{Exo}
 
 \begin{Exo}
 On se place dans le contexte de cryptographie par RSA.
 Démontrer que si la clé d'encryptage est $e < \varphi(n)$, alors 
 il existe une unique clé de décodage entre 1 et $\varphi(n)$.
 \end{Exo}
 
-\begin{Prop}[Théorème d'Euler]
-  Si $m<n$ est  relativement premier avec $n$, alors 
+\begin{Prop}[Théorème d'Euler]\label{th:Euler}
+Soit $n \in \N^*$ et $m$, $m<n$ un entier relativement premier avec $n$.
+Alors 
 \begin{equation}
 m^{\varphi(n)}\equiv1 [n].
 \end{equation}
 \begin{equation}
 m^{\varphi(n)}\equiv1 [n].
 \end{equation}
@@ -410,46 +482,174 @@ le message initial : $a^d \equiv m [n]$.
 \begin{Proof}
 \begin{eqnarray*}
 a^d & \equiv &   (m^e)^d [n]\\
 \begin{Proof}
 \begin{eqnarray*}
 a^d & \equiv &   (m^e)^d [n]\\
-& \equiv &   m^{ed} [n] (\textrm{ réécriture})\\
-& \equiv &   m^{k.\varphi(n)+1} [n] (\textrm{ définition de $d$})\\
-& \equiv &   m^{k.\varphi(n)}m [n] (\textrm{ réécriture})\\
-& \equiv &   (m^{\varphi(n)})^km [n] (\textrm{ réécriture})\\
-& \equiv &   (1)^km [n] (\textrm{ théorème d'Euler})\\
-& \equiv &   m [n] (\textrm{ réécriture})\\
+& \equiv &   m^{ed} [n] \textrm{ (réécriture)}\\
+& \equiv &   m^{k.\varphi(n)+1} [n] \textrm{ (définition de $d$)}\\
+& \equiv &   m^{k.\varphi(n)}m [n] \textrm{ (réécriture)}\\
+& \equiv &   (m^{\varphi(n)})^km [n] \textrm{ (réécriture)}\\
+& \equiv &   (1)^km [n] \textrm{ (théorème d'Euler)}\\
+& \equiv &   m [n] \textrm{ (réécriture)}\\
+\end{eqnarray*}
+\end{Proof}
+
+
+\begin{Exo}
+On considère l'algorithme suivant: 
+on choisit deux nombres premiers $p$ et $q$
+distincts tels que 
+$p \equiv 2 [3]$ et $s \equiv 2 [3]$.
+Soit $n = pq$. 
+Alice veut envoyer un message  à Bob. 
+Comme dans RSA, son message est un nombre $m \in \ \{1, . . . , n - 1\}$ 
+tel que $m \land  n = 1$
+Le message codé d'Alice est le résultat $a= m^3[n]$.
+Bob décode $a$ en calculant 
+\[
+m' \equiv a^{d} [n] \textrm{ où $d=\dfrac{2(p-1)(q-1)+1}{3}$} 
+\]
+Normalement $m$ doit être égal à $m'$.
+
+\begin{enumerate}
+\item Choisir $p=11$, $q=17$, $m=4$ puis construire le message codé ainsi que le message décodé.
+\item  Montrer que $d$ est toujours un entier.
+\item Expliquer pourquoi $a$ et $m'$ ne sont pas divisibles par $n$.
+\item Montrer que Bob a bien décodé le message d’Alice.
+\end{enumerate}
+
+\end{Exo}
+
+
+\begin{Prop}[Petit théorème de Fermat]
+Si $p$ est un nombre premier et $a$ un entier 
+alors $a^{p} \equiv a [p]$.
+\end{Prop}
+
+\begin{Proof}
+La preuve se fait par récurrence sur $a$. 
+\begin{itemize}
+\item Pour $a=0$, c'est trivial.
+\item Supposons la formule établie pour $k=a$ et montrons qu'elle l'est aussi
+pour $k=a+1$. 
+On remarque tout d'abord que pour chaque $k$, $0 < k < p$, le coefficient 
+binomial $\binom{p}{k} = \dfrac{p!}{k!(p-k)!}$ est divisible par $p$, c.-à-d.
+$\binom{p}{k} \equiv 0 [p]$.
+On a alors successivement:
+\begin{eqnarray*}
+(k+1)^p &=& a^p + 
+\binom{p}{1}a^{p-1}+\binom{p}{2}a^{p-2}+\dots +\binom{p}{p-1}a^{1}+1\\
+&\equiv& a^p +1 [p]\textrm{ (d'après la remarque sur les coeff. binomiaux)}\\\
+&\equiv& a +1 [p]\textrm{ (par hypothèse de récurrence).}\\\
 \end{eqnarray*}
 \end{eqnarray*}
+\end{itemize}
 \end{Proof}
 
 \end{Proof}
 
+\begin{Prop}[Corrolaire du petit théorème de Fermat]
+Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
+alors $a^{p-1}-1$ est un multiple de $p$.
+\end{Prop}
+\begin{Proof}
+D'après le petit théorème de Fermat, $a^{p}  \equiv a [p]$. Dit Autrement
+$p$ divise $a^{p} - a = a (a^{p-1}-1)$. Or $p$ est premier avec  $a$ d'après les 
+hypothèses. D'après le théorème de Gau{\ss}, $p$ divise $a^{p-1}-1$.
+\end{Proof}
+
+
+\begin{Exo}[Sujet du bac S Liban 2005]
+% On rappelle le résultat suivant appelé le corollaire du 
+% petit théorème de Fermat.
+
+% \emph{Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
+%  alors $a^{p-1}-1$ est un multiple de $p$.}
+\begin{enumerate}
+\item  On considère l’équation $(E)$ : $109x-226y=1$ où $x$ et $y$
+  sont des entiers relatifs.
+\begin{enumerate}
+\item  Déterminer $109\land 226$. 
+  Que peut-on en conclure pour l'équation $(E)$? 
+\item  Montrer que l'ensemble des solutions de $(E)$  
+  est l'ensemble des couples de la forme 
+  $(141+226k ;68+109k)$, où $k$ appartient à $\Z$.
+  En déduire qu'il existe un unique entier naturel non nul $d$ 
+  inférieur ou égal à 226 et un unique entier naturel non nul $e$ tels que
+  $109d =1+226 e$ (on précisera les valeurs des entiers $d$ et $e$).
+\end{enumerate}
+\item Démontrer que 227 est un nombre premier.
+\item  On note $A=\{0,1,2,\dots,226\}$. On considère les deux fonctions 
+  $f$ et $g$ de $A$ dans $A$ définies de la manière suivante: 
+\begin{itemize}
+\item  A tout entier $a\in A$, $f$ associe le reste de
+  la division euclidienne de $a^{109}$ par 227.
+\item A tout entier $a\in A$, $g$ associe le reste de la
+  division euclidienne de $a^{141}$ par 227.
+\end{itemize}
+\begin{enumerate}
+\item Vérifier que $g(f(0))=0$ .
+\item Montrer que, quel que soit l'entier non nul $a$ de $A$ , $a^{226}-1$ est multiple de 227.
+\item En déduire que, quel que soit l'entier non nul $a$ de $A$, 
+$g(f(a))=a$ . Que peut-on dire de $f(g(a))=a$?
+\end{enumerate}
+\end{enumerate}
+\end{Exo}
+
+
+
 \subsection{Puissance de grands nombres}
 
 \subsection{Puissance de grands nombres}
 
+\begin{Exp}
+Calculons $666^{999}[13]$.
+On a successivement:
+\begin{eqnarray*}
+666^{999} & \equiv & (13\times 51 + 3)^{999} [13]\\ 
+ & \equiv & 3^{999} [13]\\ 
+ & \equiv & 3^{12\times83 +3} [13] \\
+ & \equiv & 3^3 \times (3^{12})^{83} [13] \\
+ & \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)}\\ 
+ & \equiv & 27 [13]\\
+ & \equiv & 1 [13]
+\end{eqnarray*} 
+\end{Exp}
+
+
 
 \begin{Exo}
 
 \begin{Exo}
-Montrer que l'entier naturel $n$ est premier si et seulement si 
-$$(x +1) ^n \equiv x ^n +1[n].$$
+Calculer $2^{500} [13]$ et $26^{1000} [17]$.
 \end{Exo}
 
 
 \end{Exo}
 
 
+% \begin{Exo}
+% Montrer que si l'entier naturel $n$ est premier alors
+% $$(x +1)^n \equiv x^n +1[n].$$
+
+% On a même l'équivalence, cependant, l'autre sens est plus technique à démontrer.
+
+% \end{Exo}
+
+
+
+
+
 \section{Génération de grands nombres premiers}
 \section{Génération de grands nombres premiers}
-Depuis Euclide, on sait qu'il y a une infinité de nombres premiers.
+Dans ce qui suit, on nomme $\Prem$ l'ensemble des nombres premiers.
+Depuis Euclide, on sait que $\Prem$ est de taille infinie.
 Fermat avait cru donner une formule ne générant que des nombres premiers.
 Il affirmait que pour tout $n \in \N$, le nombre 
 \begin{eqnarray}
 F_n &= & 2^{2^n} +1 
 \end{eqnarray}
 était premier. Or 641 divise $F_5$. Aujourd'hui, on pense que seuls 
 Fermat avait cru donner une formule ne générant que des nombres premiers.
 Il affirmait que pour tout $n \in \N$, le nombre 
 \begin{eqnarray}
 F_n &= & 2^{2^n} +1 
 \end{eqnarray}
 était premier. Or 641 divise $F_5$. Aujourd'hui, on pense que seuls 
-les nombres de $F_0$ à $F_4$ sont premiers, les qutres étant composés.
+les nombres de $F_0$ à $F_4$ sont premiers.
 
 
-\subsection{Distribution des nombres premier parmi les entiers}
+\subsection{Distribution des nombres premiers parmi les entiers}
 
 Même si on ne connaît pas de formule permettant de construire tous les 
 nombres premiers, tout n'est pas perdu puisque les nombres premiers 
 
 Même si on ne connaît pas de formule permettant de construire tous les 
 nombres premiers, tout n'est pas perdu puisque les nombres premiers 
-ne sont pas si rares que cela. Le théorème suivant donne même la distribution 
+ne sont pas si rares que cela. Le théorème suivant donne même 
 la proportion approximative des entiers inférieurs ou égaux à
 $N$  qui sont premiers.
 \begin{Prop}[Théorème des nombres premiers]
 La fonction $\pi:\N \rightarrow \N$  associe 
 la proportion approximative des entiers inférieurs ou égaux à
 $N$  qui sont premiers.
 \begin{Prop}[Théorème des nombres premiers]
 La fonction $\pi:\N \rightarrow \N$  associe 
-à chaque nombre $n$ nombre d'entiers inférieurs ou égaux à $n$ qui sont 
-premiers, soit $\pi(N) = |\{p \le N | p \textrm{premier}\}|$.
-Lorsque $n$ est grand, on a:
+à chaque nombre $N$ le nombre d'entiers inférieurs ou égaux à $N$ qui sont 
+premiers, soit $\pi(N) = |\{p \le N | p \textrm{ premier}\}|$.
+Lorsque $N$ est grand, on a:
 \begin{eqnarray}
 \pi(N) &\approx& \dfrac{N}{\ln(N)}
 \end{eqnarray}
 \begin{eqnarray}
 \pi(N) &\approx& \dfrac{N}{\ln(N)}
 \end{eqnarray}
@@ -458,7 +658,7 @@ La preuve de ce théorème est d'un niveau très avancé et n'est pas reproduite
 ici.
 
 Pour obtenir un  entier de 100 chiffres, il suffit de considérer 
 ici.
 
 Pour obtenir un  entier de 100 chiffres, il suffit de considérer 
-$N= 10^{100}$. Si on choisit au hasard un nombre $n$ dans $\N_{N}^{*}$,
+$N= 10^{100}$. Si on choisit au hasard un nombre dans $\N_{N}^{*}$,
 la probabilité qu'il soit premier est: 
 \begin{eqnarray*}
 \textrm{Prob}(n \textrm{ premier}) &\approx&
 la probabilité qu'il soit premier est: 
 \begin{eqnarray*}
 \textrm{Prob}(n \textrm{ premier}) &\approx&
@@ -478,17 +678,11 @@ Dans celui-ci:
   les multiples de 5 ne sont pas premiers!
 \end{itemize}
 On constate que si l'on tire au hasard un nombre (même de 100 chiffres), 
   les multiples de 5 ne sont pas premiers!
 \end{itemize}
 On constate que si l'on tire au hasard un nombre (même de 100 chiffres), 
-et que ce nombre se termine par$\{1,3,7,9\}$, 
+parmi ceux qui se terminent par $\{1,3,7,9\}$ (ensemble noté $B$ par la suite) 
 la probabilité qu'il soit premier n'est pas infime. La solution au problème 
 de génération de nombres premiers repose sur la capacité ou non a disposer 
 d'un test efficace de primalité pour des grands nombres.
 
 la probabilité qu'il soit premier n'est pas infime. La solution au problème 
 de génération de nombres premiers repose sur la capacité ou non a disposer 
 d'un test efficace de primalité pour des grands nombres.
 
-Pour peut qu'on dispose d'un test de primalité rapide,
-
-il \og suffit \fg{}
-de tirer quelques nombres au hasard pour avoir  
-
 %% Attention ce tableau est généré par ailleurs 
 \begin{table}[ht]
 \begin{center}
 %% Attention ce tableau est généré par ailleurs 
 \begin{table}[ht]
 \begin{center}
@@ -504,15 +698,194 @@ Dernier chiffre dans $\{1,3,7,9\}$& 69& 92& 115& 138& 161& 184& 207& 230& 253& 2
 \hline
  \end{tabular}
 \end{center}
 \hline
  \end{tabular}
 \end{center}
-\caption{Probabilités inverse d'obtenir un \label{Table:propPrem}}
+\caption{Probabilités inverse d'obtenir un nombre premier \label{Table:propPrem}}
 \end{table}
 
 \end{table}
 
+
+On considère comme expérience aléatoire le fait de tirer un nombre au hasard 
+dans $B$. On a une probabilité $p$ que le nombre soit premier.
+Soit $X$ la variable aléatoire qui compte le nombre 
+de fois où l'on a réalisé cette expérience avant d'obtenir un nombre premier.
+$X$ suit une loi géométrique de paramètre $p$:
+\[
+P(X=k) = (1-p)^{k-1}p.
+\]
+Or l'espérance d'une variable aléatoire
+suivant une loi géométrique de paramètre $p$ est $\frac{1}{p}$.
+Pour 100 chiffres, il faudra en moyenne 92 tirages pour générer un 
+nombre premier. 
+
+Il \og reste \fg{} à fournir une méthode efficace pour décider 
+de la primalité d'un entier, ce que présente la section suivante.
+
+
 \subsection{Tests de primalité}
 \subsection{Tests de primalité}
+Chaque section donne un algorithme permettant de décider si un entier $p$ fourni
+en entrée est premier ou non.
+
+\subsubsection{Méthode naïve}
+On vérifie s'il est divisible par l'un des entiers pairs compris entre 2 et 
+$\sqrt{p}$. Si la réponse est négative, alors $p$ est premier, 
+sinon il est composé. Pour améliorer la performance de cette méthode, on peut 
+calculer à l'avance une liste des nombres premiers inférieurs à $\sqrt{p}$
+(avec un crible d'Ératosthène), pour ne tester que ceux-ci.
+
+Par exemple, pour tester un nombre inférieur à 39 000, 
+il suffit de vérifier  qu'il n'est pas multiple d'un nombre premiers inférieur
+à 198 (car $198^2 = 39 204$); on doit faire au maximum 45 divisions.
+
+\subsubsection{Tests probabilistes}
+
+% \begin{Prop}[Corrolaire du petit théorème de Fermat]
+% Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
+% alors $a^{p-1}-1$ est un multiple de $p$, c'est-à-dire:
+% \begin{equation}
+%  \forall a\in \N \forall p \in \N (   p \in \Prem \textrm{ et }   a \not\equiv  0[p] 
+%   \Rightarrow a^{p-1}\equiv 1 [p]).
+% \label{petittheremeFermat}
+% \end{equation}
+% \end{Prop}
+
+
+\paragraph{Test de Fermat.}
+Le petit théorème de Fermat est une implication et non pas une équivalence:
+\begin{itemize}
+\item si on prend un $p\in \N$ et un $a \in\N$ quelconque, 
+  alors si $p$ est premier et $a$ non divisible par $p$, alors on peut en déduire que $a^{p-1}\equiv 1 [p]$;
+\item rien ne dit que si on a  $a^{p-1}\equiv 1 [p]$, alors $p$ est premier et $a$ non divisible par $p$.
+\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.
+\end{itemize}
+Cependant si on effectue un grand nombre de fois l'expérience de choisir 
+$a \in \N_{n-1}^{*}$ et qu'à chaque fois on établit $a^{p-1}\equiv 1 [p]$, 
+alors $p$ est probablement premier.
+Cependant ce n'est pas toujours le cas: par exemple $2^{340} \equiv 1 [341]$ et 
+pourtant $341 =  11 \times 31$.
+
+\begin{Exo}
+Donner le code de la fonction \verb+testPrimaliteFermat(n,t)+ qui retourne 
+\verb+True+ si \verb+t+ evaluations de $\texttt{a}^{\texttt{n}-1}$ ont retourné $ 1 [\texttt{n}]$ 
+pour un $a \in \N_{n-1}^{*}$ et \verb+False+ sinon.
+\end{Exo}
 
 
 
 
 
 
+\paragraph{Test de Miller-Rabin}
+
+Soit $n$ un nombre premier impair,
+alors nous pouvons écrire $n - 1$ comme $2^s \times d$, 
+où $s$ est un entier et $d$ est impair.
+Alors, pour tout entier naturel $a \in \N_{n-1}^*$
+tel que $a$ est premier avec $n$, 
+une des conditions suivantes doit être vérifiée:
+\begin{enumerate}
+\item $a^{d} \equiv 1 [n]$, ou bien  
+\item $a^{2^r\cdot d} \equiv -1 [n]$ pour un certain $0 \le r \le s-1$.
+\end{enumerate} 
+La preuve de cette propriété est admise
+
+Le test de primalité de Miller-Rabin est basé sur les équations précédentes.
+Si on choisit un grand nombre $t$ de fois $a \in \N_{n-1}^*$
+et qu'on obtienne à chaque fois 
+\begin{itemize}
+\item $a^{d} \equiv 1 [n]$ ou 
+\item $a^{2^r\cdot d} \equiv -1 [n]$ pour un certain $0 \le r \le s-1$,
+\end{itemize}
+alors le nombre $n$ est probablement premier.
+Dans le cas contraire ($a^{d} \not\equiv 1 [n]$ et 
+$a^{2^r \cdot d} \not\equiv -1 [n]$ pour tous les  $0 \le r \le s-1$),
+$n$ n'est pas premier.
+
+\begin{Exo}
+Donner le code de la fonction \verb+testPrimaliteMillerRabin(n,t)+.
+\end{Exo}
+
+
 \section{Factorisation}
 \section{Factorisation}
+L'objectif de cette partie est de montrer qu'on peut factoriser $n$ 
+sous la forme de $p\times q$ si ces deux derniers nombres ont été mal choisis.
+
+
+\begin{Exo}
+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}$.
+Montrer que
+\begin{enumerate}
+\item le produit $n = pq = t^2 - s^2$;
+\item l'entier $t$ est légèrement supérieur à la racine carrée de $n$ et que $s $ est petit;
+\item l'on peut utiliser ces informations pour factoriser $n$ c.-à-d. retrouver $p$ et $q$;
+\item Factoriser 896861 et  318040531. % res=2953*3037     res = 17729*17939
+\item Factoriser 9623827 et 343570291. % res=(3259, 2953)     res = (19379, 17729)
+\end{enumerate}
+\end{Exo}
+
+\begin{TP}
+L'objectif de ce TP est d'implanter toute la démarche RSA 
+avec les éléments vus en TD. 
+% Tout ceci est à synthétiser dans un document 
+% libreoffice à renvoyer à l'adresse \url{couchot@femto-st.fr} avec pour sujet 
+% RSA-NOM1-NOM2-TDX.
+\begin{enumerate}
+\item Quel est le plus petit nombre à trois chiffres? 
+  Quel est le plus grand nombre à trois chiffres? 
+  Comment générer aléatoirement un nombre qui a trois chiffres en utilisant 
+  \verb+randint+?
+\item Même question que la question précédente, en remplaçant \og trois\fg{}
+  par $M$.  
+\item On a vu qu'un nombre se terminant par 0,2,4,5,6,8 n'est jamais premier.
+  Comment générer un nombre qui a $N$ chiffres, dont le dernier chiffre 
+  n'est pas  dans la liste précédente.
+\item Pour affirmer qu'un nombre de 100 chiffres 
+  est premier, on invoquera le test de Miller-Rabin avec 50
+  valeurs testées  différentes $a$. Si toutes retournent qu'il est 
+  probablement premier, on considérera qu'il l'est.
+  Construire la fonction \verb+genereUnNombrePremier(N)+ qui retourne 
+  un nombre probablement premier selon cette méthode.
+  %Copier-coller cette fonction dans votre synthèse.
+\item A l'aide de l'agorithme précédent, générer deux nombres premiers 
+  $p$ et $q$ de 100 chiffres.
+  %Copier et coller ces deux nombres dans votre synthèse.
+  Calculer $n=pq$ puis \verb+phi+ telle 
+  que \verb+phi=(p-1)*(q-1)+.
+
+\item Contruire la partie $e$ de la clé publique $(e,n)$
+  comme un nombre premier de trente chiffres par exemple. 
+  Si elle est première avec \verb+phi+, c'est une bonne clé, sinon on 
+  regénere un nombre premier de trente chiffres.
+  %Copier et coller $e$ dans votre synthèse.
+
+\item Donner le code la fonction \verb+bezout(+$a$,$b$\verb+)+ 
+qui retourne $x$ et $y$ tels que $x.a + y.b = a \land b$.
+
+%  \begin{verbatim}
+% def bezout(a,b):
+%   if b==0: return [1,0]
+%   else:
+%     uv= bezout(b,a%b)
+%     return [uv[1],uv[0]-uv[1]*(a/b)]
+% \end{verbatim}
+
+Se servir de cette fonction pour générer la partie $d$ de 
+la clé privée $(d,n)$. Attention, faire en sorte que $0 \le d \le$\verb+phi+.
+%Copier-coller les instructions permettant d'obtenir $d$.
+%Copier-coller la valeur de $d$.
+
+\item Chiffrer à l'aide de la clé publique $(e,n)$
+  le message $m=3402752281514000316845$  
+  qui est un numéro de carte bancaire comprenant les 16 chiffres, 
+  la date de validité et le code de sécurité. Le mesage chiffré est $a$.
+  %Copier-coller l'instructions permettant d'obtenir $a$.
+  %Copier-coller la valeur de $a$.
+  
+
+\item Déchiffrer $a$ à l'aide de la clé privée. 
+  Vérifier que vous obtenez bien $m$ à nouveau.
+  %Copier-coller l'instructions permettant de déchiffrer $a$.
+\end{enumerate} 
+
+
+\end{TP}
+
 
 
 
 
-\section{Conclusion}
-cf SMATH paragraphe applications p 223.
\ No newline at end of file
+\section{Conclusion}
+cf SMATH paragraphe applications p 223.
\ No newline at end of file