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.
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$
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.