diff --git a/main.tex b/main.tex index 77daaaed70ada0fc918f7c0ee6975b4fa8cd7622..78c85b8d5898d0251e45867b74c52f3ae43afcd8 100644 --- a/main.tex +++ b/main.tex @@ -240,6 +240,81 @@ bmargin=1.25in]{geometry} % question « pourquoi est-ce le cas » et, si la réponse n'est pas triviale, expliquez (parfois, 3 mots % suffisent !). +% TODO : add bibliogrpahy +Pour pouvoir cracker cette clefs RSA, nous avons utilisé la méthode de la factorisation de Fermat. +C'est un algorithme de décomposition en produit de facteurs premiers d'un entier naturel, autrement dit, il va nous aider à retrouver $p$ et $q$ qui composent $n$. + +Cette algorithme dit que tout entier naturel impair $n$ se décompose en la différence de deux carrés qui peuvent être ensuite factorisé, on obtient : +\[ + n = a^2 - b^2 = (a + b)(a - b) = p \cdot q +\] + +Dans notre cas, on assicie la valeur de $p$ à $a + b$ et la valeur de $q$ à $a - b$. + +Si $p$ et $q$ sont tout deux différents de 1, alors ce sont des facteurs non triviaux de $n$. +Autrement, on se retrouverait avec $n = n \cdot 1$, qui signifirait que $n$ est premier. + +Algébriquement, on voit que +\[ + b^2 = a^2 - n +\] + +Sachant que $a$ et $b$ sont deux nombre entier, on cherche une valeur de $a$ qui vérifie que $b^2$ ait une racine entière. +Le point de départ de $a$ serra $\ \sqrt[]{n} \ $ arrondis au supérieur, car en-dessous, $b^2$ serait inférieur ou égale à 0, ce qui est impossible. + +\newpage % prettier + +L'algorithme que nous avons fait se présente alors sous cette forme : + +\begin{figure*}[!h] + \centering + + \begin{subfigure}{.5\linewidth} + + \begin{algorithmic} + \setstretch{1.3} + + \Procedure{Fermat factorization}{$n$} + + \State $a \gets $ ceil($\ \sqrt[]{n} \ $) + \State $\text{b2} \gets a^2 - n$ + + \While {b2 is not square} + + \State $a \gets a + 1$ + \State $\text{b2} \gets a^2 - n$ + + \EndWhile + + \State $b \gets \sqrt[]{\text{b2}}$ + \State \Return $a, b$ + + \EndProcedure + + \end{algorithmic} + + \end{subfigure} +\end{figure*} + +% TODO : add bibliogrpahy +Pour savoir si $b^2$ avait une racine entière, nous avons utilisé une méthode que nous avons retrouver sur \textit{StackOverflow} qui est basé sur l'algorithme Babyloniens. +Qui, en passant les détails, parcours différentes valeurs possibles calculé par rapport au nombre donnée. +Si les valeurs testé ne sont pas la racine, c'est que la racine n'est pas entière. + +Après avoir récupérer $p$ et $q$, nous pouvons retrouver la clef privée $d$, notamment, en calculant la valeur de $\phi$ : +\[ + \phi = (p - 1) \cdot (q - 1) +\]\[ + d = \text{l'inverse modulaire de } \phi \text{ de } e +\] + +On peut maintenant alors décodé le message en clair $M$ en utilisant l'exponentiation rapide de sur le message chiffré $\mu$. +\[ + M \equiv_n \: \mu^d +\] + +Et c'est comme ça que nous avons déchiffré le message. + % --- Section 2.3 : Application ---