Skip to content
Snippets Groups Projects
Commit 45a97701 authored by florian.burgener's avatar florian.burgener
Browse files

Final export

parent b0e94c42
Branches
No related tags found
No related merge requests found
Voir le rapport dans le dossier "rapport"
\ No newline at end of file
**Groupe 13**
Notre rapport en version PDF, se trouve dans le dossier "rapport/rapport.pdf".
Le code se trouve dans le fichier "break_encryption.py".
---
title: Travail Pratique : RSA
title: Travail Pratique : RSA, Groupe 13
author: G. ACKERMANN, F. BURGENER, Q. FASLER, D. GENGA
---
......@@ -53,7 +53,7 @@ Le théorème de Bachet-Bézout nous dit que le PGCD (**P**lus **G**rand **C**om
$PGCD(a, b) = ax + by$
Ce qui nous intéresse dans cette égalité sont les coefficients $x$ et $y$ qui en tant que tels ne nous servent à rien, mais nous sont utiles pour déterminer l'inverse modulaire d'un nombre que nous expliquerons juste après, mais avant cela il y a une autre notion importante à savoir : *le théorème de Bézout*.
Ce qui nous intéresse dans cette égalité sont les coefficients $x$ et $y$ qui nous seront utiles pour déterminer l'inverse modulaire d'un nombre que nous expliquerons juste après, mais avant cela il y a une autre notion importante à savoir : *le théorème de Bézout*.
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 :
......@@ -67,7 +67,7 @@ L'inverse modulaire est une notion qui nous sert à calculer la clé privée du
$au \equiv 1 \pmod{n}$
L'inverse modulaire pour entier relatif $a$ dans les modulo $n$ existe seulement quand $PGCD(a, n) = 1$, autrement dit $a$ et $n$ doivent être premiers entre eux.
L'inverse modulaire pour un entier relatif $a$ dans les modulo $n$ existe seulement quand $PGCD(a, n) = 1$, autrement dit $a$ et $n$ doivent être premiers entre eux.
On peut donc calculer l'inverse modulaire avec :
......@@ -110,7 +110,7 @@ $14^{108} \equiv (4 * 20 * 16 * 4) \equiv 5120 \equiv 16 \pmod{22}$
#### Chiffrement/déchiffrement avec le RSA
La clé publique se compose de deux variables, les variables $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$.
La clé publique se compose de deux variables, les variables $e$ et $n$ qui sont une partie des données que nous avons interceptée 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$
......@@ -126,11 +126,9 @@ Dans cette section, nous allons séparer notre raisonnement en 4 étapes. Dans l
#### Étape 1 : trouver les variables $p$ et $q$ en fonction de $n$
$n$ étant un nombre semi-premier, deux nombres premiers le composent, ces nombres sont $p$ et $q$.
$n$ étant un nombre semi-premier, deux nombres premiers le composent, ces nombres sont $p$ et $q$. Pour trouver $p$ et $q$, il faut soit trouver $p$ soit $q$, car si on trouve $p$ on peut alors trouver $q$ de la manière suivante : $q = \frac{n}{p}$ et inversement.
Pour trouver $p$ et $q$, il faut soit trouver $p$ soit $q$, car si on trouve $p$ on peut alors trouver $q$ de la manière suivante : $q = \frac{n}{p}$ et inversement.
Donc nous voulons trouver seulement $p$, pour ce faire nous essayons de diviser $n$ par tous les nombres entre $2$ et $\sqrt{n}$, on s'arrête dès que l'on trouve un nombre qui divise $n$ sans reste. Nous nous permettons d'utiliser la force-brute, car on travaille sur un RSA-32 (32 bits), $p$ et $q$ font 16 bits chacun, la valeur maximale d'un nombre 16 bits est $2^{16} - 1 = 65535$ donc si $65535$ est un nombre premier on fait au maximum $65535$ tours de boucle (et tests de division) sachant que $65535$ n'est pas un nombre premier notre programme fait de tout manière moins de $65535$ itérations pour trouver $p$.
Donc nous voulons trouver seulement $p$, pour ce faire nous essayons de diviser $n$ par tous les nombres entre $2$ et $\sqrt{n}$, on s'arrête dès que l'on trouve un nombre qui divise $n$ sans reste. Nous nous permettons d'utiliser la force-brute, car on travaille sur un RSA-32 (32 bits), $p$ et $q$ font 16 bits chacun, la valeur maximale d'un nombre 16 bits est $2^{16} - 1 = 65535$ donc si $65535$ est un nombre premier on fait au maximum $65535$ tours de boucle (et tests de division) sachant que $65535$ n'est pas un nombre premier, notre programme fait de tout manière moins de $65535$ itérations pour trouver $p$.
Dans notre cas, nous avons trouvé $p = 38039$ et $q = \frac{1653973759}{38039} = 43481$
......@@ -158,7 +156,7 @@ Voici les données déchiffrées : 2123076, 7696244, 544433524, 24934, 7317443,
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 déchiffrer 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 déchiffrer depuis le début*.
## Résultat
......@@ -172,7 +170,7 @@ _**De toutes façons, les réunions de la Table Ronde c'est deux fois par mois.
### 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$.
### Explication
#### Explication
La raison pour laquelle on arrive à déchiffrer le message aussi rapidement est due au fait que $n$ est codé sur une faible quantité de bits (32 pour être précis), ce qui nous permet de calculer $p$ et $q$ rapidement. Grâce à l'exponentiation rapide, on peut déchiffrer chaque partie du message rapidement du fait que l'on travaille avec de petits nombres.
## Conclusion
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment