@@ -26,51 +26,39 @@ Pour terminer ce document, nous allons vous montrer conmment nous avons fait, pu
## Méthodologie
Dans cette partie du rapport nous allons tout d'abord détailler des rappels théoriques nécessaires afin de pouvoir comprendre ensuite notre méthode de chiffrement du message.
Dans cette partie du rapport, nous allons tout d'abord détailler les outils mathématiques nécessaires pour comprendre la méthode que nous avons développé pour casser le chiffrement, puis nous décrirons comment nous avons cassé le chiffrement.
Ci-dessous, se trouve les données que nous avons interceptées, ces données correspondent à un chiffrage RSA :
Pour rappel, ci-dessous, se trouvent les données que nous avons interceptées. Ces données correspondent à un chiffrage *RSA*. Les variables _n_ et _e_ correspondent à la clé publique (nous y reviendrons sur cette notion plus tard dans ce rapport) et la variable _encrypted_data_ correspond aux données chiffrées qui une fois déchiffrée et regroupés donne le message que nous cherchons.
Nous avons dû utiliser divers outils mathématiques afin de pouvoir déchiffrer le message intercepté, ces outils sont : les coefficients de Bézout, l'inverse modulaire, exponentiation modulaire et le théorème du RSA.
Nous avons dû utiliser divers outils mathématiques afin de pouvoir déchiffrer le message intercepté, ces outils sont : les coefficients de Bézout, l'inverse modulaire, l'exponentiation modulaire et le théorème du RSA.
#### Coefficients de Bézout
#### Théorème de Bachet-Bézout et théorème de Bézout
Pour récupérer les coefficients de Bézout on utilise deux entiers naturels nommés `a` et `b`. En premier lieu on va stocker `a` et `b` dans un `tableau de reste` (`r`), ensuite on va stocker 0 et 1 dans un `tableau de x`, nommé `x`, de même avec 1 et 0 pour un `tableau de y`, nommé `y`, ainsi que 0 et 0 pour le `tableau des quotients` (`q`).
Le théorème de Bachet-Bézout nous dit que le PGCD de deux entiers relatifs _a_ et _b_ implique l'existence de deux entiers relatifs _x_ et _y_ tels que :
On va ensuite itérer tant que le `reste actuel` est plus grand que 0. Dans chaque itération on va ajouter au `tableau des restes` le `reste de la division entière` de l'avant dernier et du dernier élément de l'index courant.
$PGCD(a, b) = ax + by$
$r[i - 2] mod\, r[i - 1]$
Ce qui nous intéresse dans cette égalité sont les coefficients _x_ et _y_ qui en tant que tels ne nous serve à rien mais nous sont utiles pour déterminer l'inverse modulaire d'un nombre que nous expliquerons juste après mais avant ça il y a une autre notion importante à savoir : *le théorème de Bézout*.
Si le reste à l'indice actuel est plus grand que 0, alors on ajoute au tableau des `x` et `y` les calculs suivants :
Le théorème de Bézout nous dit que deux entiers relatifs _a_ et _b_ sont premiers entre eux (si et) seulement s'il existe deux entiers relatifs x et y tels :
$x[i - 2] - q[i] * x[i - 1]$
$ax + by = 1$
$y[i - 2] - q[i] * y[i - 1]$
Pour terminer, on retourne les deux derniers points stockés en `x` et `y`.
On peut donc en déduire que si le PGCD de deux entiers relatifs _a_ et _b_ est égal à 1 alors _a_ et _b_ sont premiers entre eux, encore une fois cette notion nous est utile pour le calcul de l'inverse modulaire.
#### Inverse modulaire
Pour calculer l'inverse modulaire on utilise le chiffre à inverser modulairement, nommé `a`, et le chiffre modulaire, nommé `n`.
Il faut en premier temps récupérer les coefficients de Bézout de `a` et `n`.
Chaque nombre possède au maximum un seul inverse modulaire, mais il se peut qu'il n'en ait pas.
Une fois récupérés on vérifie que le produit de `a` et du premier coefficient de Bézout modulo `n` est égal à 1.
$a * coefficients[0] mod\, n$
Si c'est le cas, cela signifie qu'on a trouvé l'inverse modulaire que l'on va ensuite retourner.
L'inverse modulaire d'un entier relatif _a_ modulo _n_ est un entier _u_ satisfaisant l'équation suivante :