Exemple de chiffrement RSA

Bonsoir, si vous pouviez m'aider à clarifier des trucs que je n'ai pas compris ?

$\blacktriangleright$ Fonctionnement de RSA :

1) Génération des clés.
On commence par choisir deux nombres premiers $p$ et $q$ distincts.
On pose alors $n=pq$ et $m=(p - 1)(q - 1)$.
On choisit ensuite $d$ très grand tel que $d$ soit premier avec $m$ .
Enfin, on détermine $c$ , l’inverse multiplicatif modulo $m$ de $d $.
La clé publique sera le couple $(c,n)$ et la clé secrète sera l’entier $d$.

2) Chiffrement.
La formule de chiffrement, n'utilisera que la clé publique du destinataire d'un message:
Soit $(c,n)$ une clé publique.
Un bloc de chiffres $x$ du message d'origine tel que $x<n $ sera chiffré par un bloc de chiffres $y$ vérifiant $y\equiv x^c \pmod{n}$

3) Déchiffrement.
Le destinataire d'un message chiffré utilisera lui sa clé secrète pour retrouver le message d'origine.
Soit $(c,n)$ une clé publique et $d$ la clé secrète correspondante.
Un bloc de chiffres $y$ du message chiffré correspondra au bloc de chiffres $x$ du message d'origine vérifiant $ x\equiv y^d\pmod{n}$.

$\blacktriangleright$ Exemple :
Soient $p=47 $ et $q=59$
On a donc $n=pq = 47 \times 59=2773 $ et $ m=(p-1)(q-1)=46 \times 58=2668$.
On choisit alors $d$ premier avec $2668$ par exemple $d=157$ .
On calcule ensuite $c$ l’inverse multiplicatif de $157 \pmod{ 2668}$, à l’aide des coefficients de Bézout de $157$ et $2668$ : $157 \times 17 + 2668 \times (-1)=1$. On trouve ainsi $c=17$
Dans cet exemple, la clé publique est donc le couple $(17,2773)$
et la clé secrète l'entier $157$.

1) Imaginons que l'on veuille chiffrer "its all greek to me".
On convertit ce message en une suite de chiffres:
$$ 09201900011212000718050511002015001305$$

La valeur numérique de chacun des blocs devant être inférieure à $n=2773$, on peut donc faire des blocs de quatre chiffres : $$ 0920\; 1900\; 0112\; 1200\; 0718\; 0505\; 1100\; 2015 \;0013\; 0500$$ À noter que l’on a rajouté deux 0 à la fin pour que le dernier bloc soit aussi de quatre chiffres.
Le premier bloc $x=0920$ est alors chiffré en $y\equiv 92017 \equiv 948 \pmod{2773}$ .
On procède de même pour les autres blocs, et l'on obtient : $$ 0948 \;2342\; 1084 \;1444 \;2263 \;2390 \;0778\; 0774\; 0219 \;1655
$$ $\blacktriangleright$ Mes questions :
1) Dans l'exemple on a choisit un bloc de 4 chiffres, pourquoi ne pas choisir des blocs de 3 chiffres ou 2 chiffres, ils seront toujours inférieurs à $n = 2773$ ?
2) Comment choisir le $d$ tel qu'il soit premier avec $m$ ? Est-ce qu'on le fait aléatoirement ? Comment se comporter si $m$ est très grand ?
3) Dans cette exemple on avait utilisé une convention des de représentations des caractères : associer à chaque caractère un entier selon un tableau donné mais elle contient pas les accents, les ponctuations... Y a-t-il une autre manière pour représenter ces caractères ?

Merci d'avance[/b]

Réponses

  • Ce que je crois...
    1) Dans cet exemple d'école, ça n'a pas d'importance. En général, on a intérêt à faire les blocs les plus longs possibles pour éviter qu'un bloc soit répété. Par exemple, si on cryptait lettre à lettre, une attaque statistique deviendrait possible.

    2) On va en effet tirer au sort, puis on vérifie que les nombres sont premiers entre eux. À cause de l'algorithme $p-1$ de Pollard, si $m$ possède beaucoup de diviseurs, ce qui arrive si $p-1$ et $q-1$ n'ont que des « petits » facteurs premiers, c'est une faille de sécurité. Ça veut dire qu'un choix aléatoire est efficace (en pratique : tant que $m$ et $d$ ne sont pas premiers entre eux, on tire un nouveau $d$). NB : Le choix de la clé $d$ est un peu délicat aussi, il ne faut pas qu'elle soit trop petite ; il faut aussi que $p$ et $q$ soient « assez loin » l'un de l'autre. Voir ici pour d'autres contraintes.

    3) Oui, il y a plein de conventions. Par exemple, le codage UTF-8 permet de coder les caractères associés à l'alphabet latin, y compris les caractères accentués et beaucoup d'autres signes diacritiques avec des blocs de huit chiffres en base deux.
Connectez-vous ou Inscrivez-vous pour répondre.