X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/modelisationMathS3.git/blobdiff_plain/69c903a978a2ef5a25298c9ae3920be0d8c62e95..f14f155ac3fd4de01b79c669af7f037baba449e3:/rsa.tex?ds=inline diff --git a/rsa.tex b/rsa.tex index cb11f3f..a96d0a2 100644 --- a/rsa.tex +++ b/rsa.tex @@ -205,11 +205,11 @@ 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 \\ - & = & 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 \\ -& = & \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} @@ -257,10 +257,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} -\varphi(pq)=(p-1)(q-1) \label{FEuler} +\varphi(pq)=(p-1)(q-1). \label{FEuler} \end{equation} - \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$. @@ -278,6 +278,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$ @@ -294,9 +297,18 @@ d'inconnues $x$ et $y$. +\begin{Exo} + Soit $p$ un nombre premier. +\begin{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} + \begin{Exo}[Sujet du bac S Liban 2005] -On rappelle le résultat suivant appelé petit théorème de Fermat. +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$.} @@ -333,7 +345,7 @@ $g(f(a))=a$ . Que peut-on dire de $f(g(a))=a$? -\section{Arithmétique modulaire} +\section{Congruence modulo} \begin{Def}[Congruence modulo] Soit $a$ et $b$ deux entiers relatifs. @@ -359,7 +371,7 @@ Démontrer la proposition précédente. \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]$. @@ -369,22 +381,57 @@ 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, -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} +\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} -\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 - $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 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} + + + \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 @@ -392,7 +439,8 @@ il existe une unique clé de décodage entre 1 et $\varphi(n)$. \end{Exo} \begin{Prop}[Théorème d'Euler]\label{th:Euler} - Si $m<n$ est relativement premier avec $n$, alors +Soit $n \in \N^*$ et $m$, $m<n$ un entier relativement premier avec $n$. +Alors \begin{equation} m^{\varphi(n)}\equiv1 [n]. \end{equation} @@ -410,26 +458,113 @@ le message initial : $a^d \equiv m [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{itemize} +\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} + \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} -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} +\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} -Dans ce qui suit, on nomme $\Prem$ l'ensemble des nombrs 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 @@ -437,19 +572,19 @@ Il affirmait que pour tout $n \in \N$, le nombre 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 -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 -à chaque nombre $n$ nombre d'entiers inférieurs ou égaux à $n$ qui sont -premiers, soit $\pi(N) = |\{p \le N | p \textrm{premier}\}|$. +à 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)} @@ -499,7 +634,7 @@ Dernier chiffre dans $\{1,3,7,9\}$& 69& 92& 115& 138& 161& 184& 207& 230& 253& 2 \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} @@ -521,7 +656,7 @@ de la primalité d'un entier, ce que présente la section suivante. \subsection{Tests de primalité} -Chque section donne un algorithme permettant de décider si un entier $p$ fourni +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} @@ -532,12 +667,12 @@ 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 nest pas multiple d'un nombre premiers inférieur +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}[Petit théorème de Fermat] +\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} @@ -547,14 +682,6 @@ alors $a^{p-1}-1$ est un multiple de $p$, c'est-à -dire: \end{equation} \end{Prop} -\begin{Proof} -La preuve découle directement du théorème~\ref{th:Euler} d'Euleur. -En effet on a successivement: -\begin{eqnarray*} - a^{p-1} & = & a^{\varphi(p)} \textrm{(comme p est premier)}\\ - & \equiv & 1 [p] \textrm{(théorème d'Euler)} -\end{eqnarray*} -\end{Proof} \paragraph{Test de Fermat.} Le petit théorème de Fermat est une implication et non pas une équivalence: @@ -565,33 +692,65 @@ Le petit théorème de Fermat est une implication et non pas une équivalence: \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 foit on établit $a^{p-1}\equiv 1 [p]$, +$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{p}-1}\equiv 1 [\texttt{p}]$ pour un +Donner le code de la fonction \verb+testPrimaliteFermat(n,t)+ qui retourne +\verb+True+ si \verb+t+ evaluations de $\texttt{a}^{\texttt{p}-1}$ on retourné $ 1 [\texttt{p}]$ +pour un $a \in \N_{n-1}^{*}$ et \verb+False+ sinon. \end{Exo} -\paragrpah{Test de Miller-Rabin} +\paragraph{Test de Miller-Rabin} -\section{Factorisation} +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} +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$ tels que $p>q$. On definit $t = \frac{p+q}{2}$ et $s = \frac{pâq}{2}$. +On considère que l'étape 1 de l'algorithme RSA a généré deux nombre premiers $p$ et $q$ 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 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 9623827 et 343570291, % res=2953*3259 res = 17729*19379 +\item l'on peut utiliser ces informations pour factoriser $n$ c.-à -d. retrouver $p$ et $q$; +\item Factoriser 9623827 et 343570291. % res=2953*3259 res = 17729*19379 \end{enumerate} \end{Exo} -\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