@@ -16,23 +16,21 @@ Pour ce travail pratique en math, il nous a été demandé de créer un programm
## Méthodologie
### Rappel théorique
Voici ci-dessous, l'ensemble des variables utilisées dans notre code.
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.
*`n` et `e`, ensemble ils représentent la clé publique
*`messages` représente notre message encodée
* La multiplication de `p` et `q` représente `n`
*`d` représente la clé privée
Ci-dessous, ce trouves les données que nous avons interceptées, ces données correspondent à un chiffrage RSA :
Nous avons du 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.
#### Coefficients de Bézout
Pour récupérer les coefficients de Bézout on utilise deux entiers naturels nommé `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`).
...
...
@@ -48,7 +46,7 @@ $`y[i - 2] - q[i] * y[i - 1]`$
Pour terminer, on retourne les deux derniers points stockés en `x` et `y`.
### 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`.
...
...
@@ -64,7 +62,7 @@ Si c'est le cas, cela signifie qu'on a trouvé l'inverse modulaire que l'on va e
$`coefficients[0] mod\, n`$
### Calcul de la puissance modulaire
#### Exponentiation modulaire
Afin de calculer la puissance modulaire, nous avons besoin d'une `base` ($14$), d'un `exposant` ($108$) et d'un `indice modulaire` ($22$) qui sont tous des entiers naturels.
...
...
@@ -100,6 +98,10 @@ On initialise le résultat à 1 et on effectue une division entière de la `base
Ensuite, on itère tant que l'`exposant` est supérieur à 0. À chaque itération on vérifie si l'`exposant` modulo 2 est égal à 1.
#### Chiffrement/déchiffrement RSA
RSA est un chiffrement asymétrique, il existe donc toujours deux clés, la première la clé publique (chiffrement) et la deuxième la clé privée (déchiffrement).
### Méthode de résolution
Nous avons commencé par calculer les valeurs de `p` et `q` afin de calculer l'exposant `d` à l'aide de l'inverse modulaire de `e` et de l'`indicatrice d'Euler`. Ensuite on va parcourir pour chacun des blocs, nommé `x`, du message on calcule la puissance modulaire de $`x^d\, mod\, n`$ que l'on convertit en bytes afin de le décoder en UTF-8 pour l'ajouter à la version décodée. Une fois tous les `x` parcourus, on affiche la version du message décodée.