La cryptographie existe depuis l'antiquité et est utilisée pour transmettre des messages de manière sécurisé. Cette manière de faire a surtout vu le jours en période de guerres, où les informations étaient primordiales afin de gagner les divers conflits entre états et / ou groupe de personnes.
La cryptographie existe depuis l'antiquité et est utilisée pour transmettre des messages de manière sécurisé. Cette technique a largement été utilisé en période de guerres, où la confidentialité des informations étaient primordiales afin de gagner les divers conflits entre états et/ou groupe de personnes.
Apparu en 1977, le RSA qui porte son nom à ses auteurs :
* Ronald Rivest
* Adi Shamir
* Leonard Adleman
Apparu en 1977, le RSA porte le nom des ses auteurs :
* Ronald **R**ivest
* Adi **S**hamir
* Leonard **A**dleman
et sert de méthode d'encryption de données textes. Son fonctionnement est asymétrique, par conséquent, il utilise une clef publique ainsi qu'une clef privée.
et sert à chiffrer des données de manière asymétrique, RSA utilise une clé publique ainsi qu'une clé privée. Afin de déchiffrer le message que nous avons intercepté, nous allons utiliser diverses outils mathématiques qui utilisé ensemble permettent de trouver de trouver le message en clair. Dans la suite de ce rapport, nous allons approfondir ces outils mathématiques en expliquant leur principe ainsi que leurs applications dans le déchiffrement du message.
Dans notre cas, afin de déchiffrer le message chiffré transmis par email, nous allons utiliser diverses méthodes mathématiques vues en cours.
Dans ce rapport, nous allons vous expliqué comment nous avons réussi à déchiffrer ce message :
Dans la suite de ce document, nous allons approfondir ces méthodes mathématiques en expliquant en quoi elles nous aident et comment nous les avons implémentées de manière algorithmique.
Avec les données interceptées par mail ainsi qu'à l'aide notre méthode de résolution voici ce que l'on a pu percevoir.
`De toutes façons, les réunions de la Table Ronde c'est deux fois par mois. Donc, si le mec il dit après-demain à partir de dans deux jours, suivant s'il le dit à la fin du mois, ça reporte.`
Pour terminer ce document, nous allons vous montrer conmment nous avons fait, puis allons conclure le projet.
_**De toutes façons, les réunions de la Table Ronde c'est deux fois par mois. Donc, si le mec il dit après-demain à partir de dans deux jours, suivant s'il le dit à la fin du mois, ça reporte.**_
## Méthodologie
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.
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 utilisé pour casser le chiffrement, puis nous décrirons comment nous avons cassé le chiffrement.
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.
Pour rappel, ci-dessous, se trouvent les données que nous avons interceptées. Nous avons pu déterminer que ces données correspondent à un chiffrement*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 reconstitue le message que nous cherchons.
@@ -38,11 +32,17 @@ Pour rappel, ci-dessous, se trouvent les données que nous avons interceptées.
### Outils mathématiques
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.
Nous avons dû utiliser divers outils mathématiques afin de pouvoir déchiffrer le message intercepté, ces outils sont : le théorème de Bachet-Bézout, le théorème de Bézout, l'inverse modulaire, l'exponentiation modulaire et le principe de chiffrement du RSA.
#### Brève explication du RSA
RSA est un chiffrement asymétrique, il existe donc toujours deux clés, la première clé est la clé dites publique (utilisé pour le chiffrement) et la deuxième la clé est la clé dites privée (utilisé pour déchiffrement). L'image ci-dessous décrit le chiffrement asymétrique. Le "Cipher Text" correspond aux données "encrypted_data" que nous avons interceptées.

#### Théorème de Bachet-Bézout et théorème de Bézout
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 :
Le théorème de Bachet-Bézout nous dit que le PGCD (**P**lus **G**rand **C**ommun **D**iviseur) de deux entiers relatifs _a_ et _b_ implique l'existence de deux entiers relatifs _x_ et _y_ tels que :
$PGCD(a, b) = ax + by$
...
...
@@ -64,13 +64,11 @@ L'inverse modulaire pour entier relatif _a_ dans les modulo _n_ existe seulement
On peut donc calculer l'inverse modulaire avec :
$PGCD(a, n) = au + ny$ (théorème de Bachet-Bézout)
$au \equiv 1 \pmod{n}$
$1 = PGCD(a, n) = au + ny$ (théorème de Bachet-Bézout)
_u_ est l'inverse modulaire de _a_ dans les modulo _n_
#### Exponentiation 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.
...
...
@@ -106,21 +104,17 @@ 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 clé est la clé dites publique (utilisé pour le chiffrement) et la deuxième la clé est la clé dites privée (utilisé pour déchiffrement). L'image ci-dessous décrit le chiffrement asymétrique. Le "Cipher Text" correspond aux données "encrypted_data" que nous avons interceptées.

#### Chiffrement/déchiffrement avec le RSA
La clé publique se compose de deux variables, la variable _e_ et _n_ qui sont une partie des données que nous avons interceptées avec le message chiffré. La clé privée se compose elle aussi de deux variables, la variable d (*ce que nous cherchons à découvrir*) et n. La variable _n_ est le produit de deux nombres premiers _p_ et _q_, c'est avec ces deux variables composant _n_ (_n_ est un nombre semi-premier) que nous pouvons calculer _d_.
$n = pq$
$d = e^{-1} \pmod{(p-1)(q-1)}$ (il existe forcement un inverse modulaire car _e_ et $(p-1)(q-1)$ sont premiers entre eux)
$d = e^{-1} \pmod{(p-1)(q-1)}$ (il existe forcement un inverse modulaire car $e$ et $(p-1)(q-1)$ sont premiers entre eux)
Pour chiffrer les données _x_ avec RSA, il faut utiliser la formule suivante : $x^e \pmod{n}$
Pour chiffrer les données $M$ avec RSA, il faut utiliser la formule suivante : $M^e \pmod{n}$
Pour déchiffrer les données _y_ avec RSA, il faut utiliser la formule suivante : $y^d \pmod{n}$
Pour déchiffrer les données $µ$ avec RSA, il faut utiliser la formule suivante : $µ^d \pmod{n}$
### Méthode de résolution
...
...
@@ -148,7 +142,7 @@ Pour déchiffrer le message on applique la formule de déchiffrement qui est pou
_n_ le produit de _p_ et _q_ sur chacun des nombres que nous avons interceptés qui sont les suivants : 1511395078, 260436590, 1630654276, 1190458520, 790492067, 515550941, 297140366, 755589582, 647075331, 1191707844, 901889430, 660956124, 1500654109, 984322720, 1275630738, 1244853107, 1445928913, 1312523810, 265093060, 933013993, 1375592761, 195866064, 534502441, 928270408, 166404031, 621272622, 1304987439, 905393335, 55120151, 772595721, 506609577, 1172751778, 162439707, 233959833, 1468937795, 1358701120, 901889430, 495995733, 1524090698, 1043509086, 934992314, 1545639379, 1061595897, 1348452679, 1135067876, 905393335, 621272622, 55120151, 233959833, 1220119699, 708711266, 517797467, 195866064, 1579814353, 412378626, 498875436, 445485200, 7656659.
Par exemple pour déchiffrer le premier nombre _*1511395078*_ des données chiffrées, on applique la formule de déchiffrement :
Par exemple pour déchiffrer le premier nombre _**1511395078**_ des données chiffrées, on applique la formule de déchiffrement :
Il faut donc maintenant décoder ces données en UTF-8 pour reconstituer le message textuel.
Par exemple, le nombre _*2123076*_ correspond aux lettres "De", le nombre 7696244 correspond " tou", etc. Une fois qu'on concatène tous les bouts de chaîne de caractère on obtient *le précieux message qu'on souhaite voler depuis le début*.
Par exemple, le nombre _**2123076**_ correspond aux lettres "De", le nombre 7696244 correspond " tou", etc. Une fois qu'on concatène tous les bouts de chaîne de caractère on obtient *le précieux message qu'on souhaite voler depuis le début*.
## Résultat
...
...
@@ -171,7 +165,7 @@ En appliquant notre méthode de résolution aux données interceptées.
Voici le message déchiffré :
_De toutes façons, les réunions de la Table Ronde c'est deux fois par mois. Donc, si le mec il dit après-demain à partir de dans deux jours, suivant s'il le dit à la fin du mois, ça reporte._
_**De toutes façons, les réunions de la Table Ronde c'est deux fois par mois. Donc, si le mec il dit après-demain à partir de dans deux jours, suivant s'il le dit à la fin du mois, ça reporte.**_
### Performances
Étant donné que la clé a été générée sur une faible quantité de bits, on peut appliquer la méthode de force-brute pour la résolution de _p_ et _q_.