logo

Cryptage asymétrique RSA


terminaleCryptage asymétrique RSA

#msg1845358 Posté le 01-05-08 à 22:56
Posté par ProfilNairod2 Nairod2

Bonjour je suis bloqué sur un exo :

On se propose de crypter un message avec le système RSA (asymétrique).
On choisi p et q deux nombres premiers, tel que p = 7 et q = 5.

1° Déterminer le nombre e premier avec (p - 1)(q - 1).
2° Déterminer r pour que le reste de la division de (e * r) par (p - 1)(q - 1) soit égal à 1.

1° je sais que deux nombres sont premiers entre eux si le pgcd de a par b = 1
Donc, (p - 1)(q - 1) = 24
pgcd(e, 24) = 1

ou alors par l'indentité de bézout :

x*e + 24y = 1
je pense pas que faut utilisé l'identité de bezout...

Je ne sais absolument pas comment faire pour trouver e sans faire d'essais successifs.

Si vous pouviez m'aidé ce serai vraiment extra!
Merci d'avance,
re : Cryptage asymétrique RSA#msg1845373 Posté le 01-05-08 à 23:19
Posté par Profildhalte dhalte

(p-1)(q-1)=6*4

tu choisis un nombre premier avec 6*4. 7 va très bien
re : Cryptage asymétrique RSA#msg1845378 Posté le 01-05-08 à 23:32
Posté par ProfilNairod2 Nairod2

Oui je sais tout comme 5, 11, 13, 17, 19, 23 mais comment les trouver sans faire des essais ?
re : Cryptage asymétrique RSA#msg1845385 Posté le 01-05-08 à 23:39
Posté par Profildhalte dhalte

On utilise de très gros ordinateurs car dans la pratique ces nombres sont très grands.
Ce genre de cryptage asymétrique à clef publique est efficace parce que il est extrêmement plus difficile de décomposer un grand entier en facteurs premiers que de trouver de nouveaux nombres premiers.

C'est pourquoi aussi la recherche est si active dans la mise au point d'algorithmes de plus en plus performants de factorisation des grands nombres.

Si un mathématicien fou découvrait un jour un moyen efficace de factoriser les grands nombres, c'est tout le système économique qui s'effondrerait.

Il existe d'ailleurs des théories de factorisation sur machines quantiques (pas encore opérationnelles) qui font trembler les grands argentiers.
re : Cryptage asymétrique RSA#msg1845624 Posté le 02-05-08 à 11:06
Posté par ProfilNairod2 Nairod2

Donc en gros si je me fait un programme, il faut que je test tout les nombres de 2 à N qui vérifie pgcd(N, (p-1)(q-1)) = 1 pour savoir si ils sont premiers entre eux.

Par exemple pour trouver e premier avec (p-1)(q-1)) il faut testé :
pgcd(2, (p-1)(q-1))) = 2
pgcd(3, (p-1)(q-1))) = 3
pgcd(4, (p-1)(q-1))) = 4
pgcd(5, (p-1)(q-1))) = 1


donc e = 5.

C'est bien ça?
re : Cryptage asymétrique RSA#msg1845765 Posté le 02-05-08 à 12:48
Posté par Profildhalte dhalte

Non, il faut que tu en choisisses un seul.

Tu veux me transmettre un nombre x sans que personne que moi ne puisse connaitre x
x : ton secret, que tu veux me transmettre

Pour cela je choisis deux (très grands) nombres premiers p et q
p et q sont mon secret à moi seul.

Je calcule n=pq, f=(p-1)(q-1) et je choisis un nombre e premier avec f : il est "facile" de trouver un nombre premier avec un autre.

Je calcule aussi un nombre d tel que ed=1 [f] : ça aussi, c'est "facile" à faire et ça reste mon secret.

Je te fais connaitre sans me cacher les nombres e et n
Il est extrêmement difficile de retrouver p, q ou d en connaissant uniquement e et n

Toi, tu calcules y=x^e[n], et tu me le transmets, sans prendre de précautions

Mois, je calcule z=y^d[n] et il se trouve que z=x

Si tu veux faire un essai, je te donne n=9167, e=1183
choisis un nombre x entre 0 et 9000 et calcule x^e[n]
pour cela, tu fais
1*x[n]=x_1
x_1*x[n]=x_2
...
x_{e-1}*x[n]=x_e=y

Il te faut bien sur un petit programme pour faire ces 1183 itérations
tu me transmets ce y
et je te réponds en recalculant x
re : Cryptage asymétrique RSA#msg1845798 Posté le 02-05-08 à 13:24
Posté par ProfilNairod2 Nairod2

Citation :
il est "facile" de trouver un nombre premier avec un autre.

Comment tu fais sans faire des essais successifs?
Par exemple trouver e premier avec 24.

Citation :
Je calcule aussi un nombre d tel que ed=1 [f] : ça aussi, c'est "facile" à faire et ça reste mon secret.

Idem, comment tu fais sans faire des essais successifs.
re : Cryptage asymétrique RSA#msg1845830 Posté le 02-05-08 à 13:52
Posté par Profildhalte dhalte

24=2^3\times3
tout nombre composé de facteurs premiers différents de 2 et 3 est premier avec 24

5\times7=35 est premier avec 24

Ensuite, revois Bezout : p et q premiers entre eux \Leftrightarrow \exists a,\;b\text{ tel que }ap+bq=1
Une version légèrement modifiée de la division euclidienne permet de trouver un premier couple (a;b) et tous les autres en découlent.

Attention : l'expression que j'ai utilisée "ça reste mon secret" s'appliquait au nombre d, pas à la manière de l'obtenir.
Attention, quand je dis "facile", entre guillemets, je dis que les algorithmes adéquats associés aux ordinateurs actuels permettent en un temps très bref d'obtenir la réponse. Je n'ai jamais prétendu que dans les cas pratiques, il y avait un petit fonctionnaire avec gomme et crayon pour faire les calculs.

L'efficacité de RSA est que le nombre n=pq est beaucoup plus grand que p et q eux mêmes, puisque c'est leur produit, et que sa décomposition sur n'importe quel ordinateur, dans les cas pratiques, prendrait des années.
re : Cryptage asymétrique RSA#msg1845875 Posté le 02-05-08 à 14:25
Posté par Profilsloreviv sloreviv

joli tout ca , je le mets dans mes archives!!
re : Cryptage asymétrique RSA#msg1845877 Posté le 02-05-08 à 14:26
Posté par Profilsloreviv sloreviv

bonjour au fait Dhalte et Nairod2
re : Cryptage asymétrique RSA#msg1845928 Posté le 02-05-08 à 14:47
Posté par Profildhalte dhalte

Bonjour sloreviv.
re : Cryptage asymétrique RSA#msg1847453 Posté le 03-05-08 à 00:07
Posté par ProfilNairod2 Nairod2

Soit x mon secret.

Tu dis que 35 est premier avec 24.
Ok mais du coups quand je vais devoir codé mon message je vais devoir elevé mon x à la puissance e.
Il se trouve que ton e est grand (35) donc forcément ça va être long à calculer pour toi avant de m'envoyer le message crypté.
Si je prends e = 5 (en effet pgcd(24, 5) = 1) tu vas être beaucoup plus rapide à m'envoyer le message.

Il faut donc choisir e petit pour accélérer les calculs mais perdons nous en "protection" ?

2° Déterminer r pour que le reste de la division de (e * r) par (p - 1)(q - 1) soit égal à 1.

Même question perdons nous de la protection si nous prenons r petit ?
re : Cryptage asymétrique RSA#msg1847543 Posté le 03-05-08 à 09:36
Posté par Profildhalte dhalte

Il y a une chose dont tu n'es pas conscient :
Cette technique de cryptage RSA est destinée à être utilisée pour échanger des informations sur Internet. Ce sont des ordinateurs qui effectuent les calculs.
Les nombres p et q employés par ces techniques (ce que j'appelle "dans la pratique") sont de l'ordre de 2^{256}, c'est à dire qu'ils ont environ 77 chiffres en base 10.

Il existe des algorithmes très efficaces pour trouver des nombres premiers de cette longueur. Il n'en existe aucun qui permette de les retrouver connaissant uniquement leur produit n=pq, vu leur taille.

Ton exercice initial prend en exemple p=7, q=5 : il est très utile "pédagogiquement". Il n'a strictement aucune utilité pratique : connaissant 35, il est humainement très aisé, même pour un élève de Terminale, de retrouver 5 et 7, ses facteurs premiers.

Mon exemple cherchait à donner un moyen terme, n=9167, et voulait simplement proposer un cadre un tant soit peu plus réaliste, mais nécessitait de ta part l'écriture d'un bout de programme pour calculer y=x^e[n].

Pour enfoncer le clou, sache aussi que nos chers ordis sont extrêmement efficaces pour effectuer les opérations x^e[n], même sur les grands chiffres utilisés dans la pratique.

Sinon, avec p=5, q=7, tu peux faire la même chose, mais là encore, le résultat sera moins spectaculaire.
tu as donc n=35, produit de deux nombres premiers p et q super secrets et non recalculables, et e=5
choisis un nombre x entre 1 et 34 et calcule y=x^5[35], mais sache qu'avec ces quantités, tu vas souvent tomber sur y=x, ce qui ne doit pas te surprendre, la valeur très faible de p et q en est responsable.

J'ai à ma disposition un ordinateur (tu t'en serais douté) grâce auquel j'ai généré les nombres p=5, q=7 très grands et top secrets et ensuite n=35, e=5 que je t'ai transmis, mais aussi un nombre que tu appelles r (il peut y en avoir plusieurs, il faut en choisir un) tel que 5r=1[(p-1)(q-1)] et qui reste ma propriété, mon secret, même si la valeur ridiculement faible de n=35 te permettrait de "casser" mon code en retrouvant p et q, puis de te calculer toi-même une valeur de r, peut-être différente de la mienne, mais qui marcherait tout aussi bien pour retrouver x à partir de y.

Moi, grâce à mon 'r' et à mon ordinateur, je recalcule x à partir de ton y.

Même avec des nombres p et q de 77 chiffres, un ordinateur met quelques micro secondes à calculer y à partir de x et inversement.
re : Cryptage asymétrique RSA#msg1847790 Posté le 03-05-08 à 11:59
Posté par ProfilNairod2 Nairod2

Juste une dernière question.
Ma calculatrice peut au maximum calculer 2^332.

Je réponds à la question 2° de mon exo.
Je prends r = 17 par exemple.

Si j'ai x^17 > 2^332 je vais avoir un message overflow de la part de ma calculatrice alors comment font les ordis pour calculer des nombres si énorme ?
re : Cryptage asymétrique RSA#msg1847872 Posté le 03-05-08 à 12:28
Posté par Profildhalte dhalte

Déjà, quand on calcule x^e[n], on utilise la remarque suivante :

(ab)[n] = (a[n])\times(b[n])

Et alors, on peut calculer ces expressions, ces élévations au carré en restant toujours dans les parages de 'n'. Plus exactement entre 1 et n-1.

par exemple :
4^5[35] est calculé ainsi :

4^2[35]=4\times4[35]=16
4^3[35]=16\times4[35]=29
4^4[35]=29\times4[35]=116[35]=11
4^5[35]=11\times4[35]=44[35]=9

Je n'ai jamais eu besoin de calculer explicitement 4^5, même si, évidemment, dans cet exemple, j'aurais pu le faire.

Ensuite, les ordinateurs actuels calculent fondamentalement en binaire, en base 2, et avec des nombres qui ne dépassent pas 2^32 \approx 4\times10^9 la plupart du temps mais ici ce n'est pas suffisant, alors on a écrit des programmes, toujours très efficaces, qui manipulent en fait des séries de nombres comme si c'était un seul nombre.
Par exemple, accoler deux nombres qui peuvent stocker 2^32 \approx 4\times10^9, c'est se permettre de manipuler des nombres qui peuvent aller jusqu'à 2^64 \approx 1.6\times10^19.

Avec 8 nombres, on va jusqu'à 10^80 et ça devient intéressant.
Tu vois, il "suffit" d'écrire des programmes de multiplication de "nombres" stockés sur 16 nombres accolés les uns aux autres pour manipuler des expressions du style x^e[n], avec n ayant 160 chiffres.
Et pour finir, ces "multiplications" de nombres en base 2 sont justement une des spécialités des architectures de nos beaux computers : elles représentent un "shift" des digits qui est vraiment l'opération basique pour eux.

Sais-tu ce qu'est la base 2 ?
re : Cryptage asymétrique RSA#msg1847894 Posté le 03-05-08 à 12:37
Posté par ProfilNairod2 Nairod2

Sais-tu ce qu'est la base 2 ?

Oui on la vu, on travaille même avec. (BAC STI)

Je te remercie de m'avoir aidé et d'avoir pris le temps de répondre à mes questions c'est vraiment un sujet très intéressant le cryptage RSA.
re : Cryptage asymétrique RSA#msg1848118 Posté le 03-05-08 à 14:18
Posté par Profilsloreviv sloreviv

je vais relire tout ca , fort interessant!!

Répondre à ce sujet

réservé Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster
attention Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.

  • Ce topic

    imprimer Imprimer
    réduire la tailleRéduire   /   agrandir la tailleAgrandir

    Pour plus d'options, connection connectez vous !
  • Fiches de maths

    * arithmétique en terminale
    0 fiches de mathématiques sur "arithmétique" en terminale disponibles.


cours particuliers - cours de maths haut de pagehaut Retrouvez cette page sur ilemaths l'île des mathématiques
© Tom_Pascal & Océane 2008