Accueil > Forum > > > > Quelques questions sur rsa
Quelques questions sur rsa
mardi 30 mai 2006 à 18:45:04 |
Quelques questions sur rsa
|
mardi 30 mai 2006 à 18:54:12 |
Re : Quelques questions sur rsa

vecchio56
|
Cette source devrait répondre a tes interrogations:
http://www.cppfrance.com/codes/PROGRAMME-CRYPTAGE-RSA_30454.aspx
Elle utilise gmp pour gérer les grand entiers.
Pour le calcul de d, il se fait grace à l'algorithme de Bezout
|
|
mercredi 31 mai 2006 à 00:01:30 |
Re : Quelques questions sur rsa

neodelphi
|
Bon je ne connait pas ton niveau en math mais j'espère que tu as quelques connaissances sur les anneaux commutatifs unitaire Zn.
Donc le probleme est qu'il faut trouver d sachant que: (e*d) % ((p-1)(q-1)) = 1
Ce qui peut se traduire dans l'anneau Zm (où je pose m = (p-1)(q-1)): e*d = 1
C'est à dire que d est l'inverse de e dans Zm, on sait d'ailleur que cet inverse existe forcement car e est premier avec m. Il faut donc calculer l'inverse de e. C'est la que, si mes souvenirs sont bons, que l'on peut utiliser l'algorithme d'Euclide et le théorème de Bezout:
e*d est congru à 1 modulo m. Il existe donc k appartenant à l'ensemble des entiers relatifs tel que:
e*d = (-k)*m + 1
Précisons ici que on ne travaille plus dans Zm mais dans Z Ce qui se transforme de la manière suivante:
e*d + k*m = 1 (le moins au dessus c'est pour que ce soit plus clair ici)
But du jeu: trouver les valeurs de d et k (mais surtout d !). Là c'est l'algorithme d'euclide, je vais te montrer comment proceder pour un cas simple car c'est chiant à expliquer:
si on prend p=5 et q=7, alors m = (p-1)(q-1) = 30. je vais prendre pour valeur de e 11 car 11 est premier avec 30. On a donc:
11*d + k*30 = 1
On applique la division euclidienne plusieurs fois: 30 = 11 * 2 + 8 11 = 8 * 1 + 3 8 = 3 * 2 + 2 3 = 2 * 1 + 1
Une fois que tu tombe sur 1 pour le reste tu remonte les résultats par les restes successifs: 1 = 3 - 2 * 1 1 = 3 - (8 - 3*2) 1 = 3*3 - 8 1 = 3*(11-8*1) - 8 1 = 3*11 - 4*8 1 = 3*11 - 4*(30-11*2) 1 = 11*11 - 4*30
on trouve donc que d=11 et k=4. Vérification: 11*e = 11*11 = 121 et 121 est bien congru à 1 modulo 30.
Voila comment trouver d, à la main ça va mais a coder je sais pas trop quelle forme ça peu prendre, cherche si éventuellement il existe des algo bien pour ce genre de calcul, mais tu peux ptete deja essayer de te debrouiller avec ça. Si ya un point sur lequel tu bloque n'hesite pas a me poser une question.
Pour ce qui est des grands nombre de calcul je pense qu'il faut coder le systeme soi-même, a savoir prendre plusieurs int pour un nombre et faires les calculs de retenu ou plus compliqué soi-même. Pour ce qui est d'élevé les nombres à la puissance il y a des algo particulier à appliquer qui ont un temps de calcul en theta(log(n)) je croit car faire la multiplication en boucle pour élever à la puissance c'est beaucoup trop gourmand. Bon courage pour la suite.
neodelphi
|
|
mercredi 31 mai 2006 à 00:08:15 |
Re : Quelques questions sur rsa

neodelphi
|
Bon après relecture, si tu piges pas l'histoire des Zn c'est pas catastrophique lol, essayes surtout de comprendre l'algo d'euclide si tu connais pas. J'aimerai ajouter que le RSA ça peut etre marant à coder, mais le plus interessant dans le cryptage ici c'est toute la théorie mathématique qu'il y a derrière, car le RSA ça tombe pas du ciel tout à été démontré...
neodelphi
|
|
mercredi 31 mai 2006 à 14:47:09 |
Re : Quelques questions sur rsa

jean84
|
vecchio56
-> merci pour le lien, j'ai telecharger la source, je vais voir ce que sa donne. J'avais deja lu des topics sur la lib gmp mais j'avais envie de coder sa moi meme (pour bien comprendre le truc)... mais c'est vrai que si c'est pas de mon niveaux et que la lib est facile d'acces , pourquoi se priver ?? Merci a toi ! neodelphi -> le moins que l'on puisse dire, c'est que tu mets du coeur a l'ouvrage. Meme si je n'ai pas tout compris (en fait une bonne partie), je te felicite ne serait-ce que pour avoir pris le temps de m'expliquer, ce qui devient rare de nos temps (alala ... :p je parle comme un vieux .. lol) Mon niveau en math n'est pas exeptionnel, n'on pas que je ne comprend pas les cours mais je n'en ai pas envie... je prefere apprendre toutes les formules dont j'ai besoin sur le moment et ne pas faire des trucs bidon qu'on nous fait faire en cours (les intergrales, les vecteurs et les equa diff... que du bonheur) et dont je n'ai pas d'utilite immediate... (ce n'est pas un bon raisonnement je sais mais personne n'est parfait..) Je connaissais euclide mais pas le theoreme de Bezout, encore moins les anneaux commutatifs Zm. Je pense alle faire un tour sur ile des maths pour combler ce probleme. Je suis d'accord avec toi en disant que rsa est tres interessant au niveau des maths et qu'a programmer sa doit etre passionant, c'est bien la raison pour laquelle je me suis lance dans l'aventure .... J'avais encore une derniere question (je sais j'accumule), c'est sur la longueur de la cle en bits et sur les blocs a crypter, toujours en bits. J'ai lu quelques sources a ce sujet et la plupart du temps, il prenait des blocs de 256 voir 512 bits pour crypter... J'avoue que je ne n'arrive pas a suivre..; (encore lol) Je tenais a vous remerciez tous les deux pour vos reponses ! @++ et bon coding ! "Avant même de fonctionner, tout programme est déjà obsolète."
|
|
mercredi 31 mai 2006 à 20:39:33 |
Re : Quelques questions sur rsa

neodelphi
|
Je comprend que certain n'aime pas les math, moi je n'aime pas l'histoire et la géographie... En revanche pour ce qui est des maths je prend souvent un certain plaisir à travailler sur la théorie. Si tu veux te plonger dans les Zn fait quand même attention c'est pas évident (en fait il y a plein de concept à integrer avant pour tout démontrer).
Le théorème de Bezout en revanche est relativement simple (sa démonstration moins):
Si tu as une équation du genre:
a*b + c*d = 1
le théorème de Bezout dit que si a et c sont premiers entre eux, alors il existe forcement des valeurs de b et d vérifiant l'équation. L'algo d'Euclide permet de trouver ces valeurs.
Pour ta seconde question je ne peux pas te donner de réponses parceque je n'en ai tout simplement pas ! Le cryptage RSA marche avec n'importe quelle taille de clef. Le fait que la longueur de la clef soit en 2^n permet peut-etre d'effectuer les calculs plus rapidement...
neodelphi
|
|
jeudi 1 juin 2006 à 17:33:22 |
Re : Quelques questions sur rsa

jean84
|
Salut ! Apres avoir lu et essaye d'apprehender ton explication, j'ai un probleme avec ceci :
Si on prend p=5 et q=7, alors m = (p-1)(q-1) = 30. je vais prendre pour valeur de e 11 car 11 est premier avec 30. On a donc:
11*d + k*30 = 1
On applique la division euclidienne plusieurs fois: 30 = 11 * 2 + 8 11 = 8 * 1 + 3 8 = 3 * 2 + 2 3 = 2 * 1 + 1
Comment peut tu decourvir que d = 2 et k = 8 ?? Par quelle raisonnement y es-tu parvenu ?? Je n'arrive pas a comprendre d'ou sorte ces 2 chiffres. Et au fait pour le calcul de e, il faut qu'il n'est aucun facteur commun avec le resultat de (p-1)(q-1), faut-il qu'il soit obligatoirement premier avec (p-1) et (q-1) ou juste p et q .... je pensais qu'il fallait juste que le reste de la division de e par (p-1)(q-1) ne devait pas etre un entier (donc un flotant).
Merci !
"Avant même de fonctionner, tout programme est déjà obsolète."
|
|
dimanche 11 juin 2006 à 20:38:09 |
Re : Quelques questions sur rsa

neodelphi
|
Désolé de répondre si tardivement...
L'astuce avec la division euclidienne c'est de remonter le calcul dans l'autre sens pour trouver les valeurs... Pout ton cas ça donnerai:
3 = 2*1+1 donne 1 = 3 - 2*1 donc on a: 1 = 3 - (2*1) = 3 - 2
8 = 3*2 + 2 donne 2 = 8 - (3*2) en remplacant 2 de l'expression trois lignes au dessus on trouve: 1 = 3 - (8 - 3*2) = 3 - 8 + 3*2 = - 8 + 3*3
11 = 8*1 + 3 donne 3 = 11 - 8*1 en remplacant on trouve 3: 1 = -8 + 3*(11 - 8*1) = -8 + 3*11 -3*8 = -4*8 + 3*11
30 = 11*2+8 donne 8 = 30 - 11*2 encore en remplacant 8 on trouve: 1 = -4*(30 - 11*2) + 3*11 1 = -4*30 + 8*11 + 3*11 1 = -4*30 + 11*11
Faut un peu s'entraîner c'est pas évident au début...
Pour ce qui est de e il suffit qu'il soit premier avec ((p-1)(q-1)), ce qui reviend à dire que la division de ((p-1)(q-1)) par e est un flottant.
Si c'est tu le programmes, teste pas si c'est flottant ou non, calcule simplement le modulo:
si m = ((p-1)(q-1)) et e premier avec m tu as: e % m == 0 (en C/C++ et Java) e mod m == 0 (en Pascal)
neodelphi
|
|
dimanche 11 juin 2006 à 20:43:59 |
Re : Quelques questions sur rsa

neodelphi
|
Ok lol en relisant le sujet je viend de me rendre compte que j'ai fait le calcul deux fois... Je croyai que c'était ta division euclidienne... Bon je vais donc essayer de détailler:
dans une division euclidienne de a par c: a = b*c + r - où b est le quotient et r le reste.
Pour la méthode, tu fait a = b*c + r et tu divise b par le reste r b = r*b' + r' b' = r'*b'' + r'' b'' = r''*b''' + r''' jusqu'à ce que le reste soit égal à 1.
Ensuite tu remonte: r''' = b'' - r''*b''' puis tu remplace r'' grace à l'expression au dessus r'' = b' - r'*b'' ce qui donne r''' = b'' - (b' - r'*b'')
A force de remonter tu tombera sur une expression permettant de déduire les valeurs que tu cherche car r''' = 1.
neodelphi
|
|
Cette discussion est classée dans : questions, cryptage, algorithme, rsa, avoue
Répondre à ce message
Sujets en rapport avec ce message
Des problèmes à propos du cryptage RSA [ par primaxj2m1 ]
Bon je sais que c'est pas une question de code, mais je vous la pose quand même: Bon voilà, je suis étudiant en échange au Canada. J'ai un petit devo
Cryptage par l'algorithme MD5 [ par LSRS ]
[red]Salut tout le monde!!!J'ai un problème avec l'algorithme MD5 de RSA... je voudrais bien comprendre le mécanisme avec lequel il travaille...En plu
Le cryptage par MD5 de RSA [ par LSRS ]
Salut tout le monde...J'ai un très grand problème avec l'algorithme de hachage MD5 qui réprésente le squelette de mon stage d'été... Je n'arrive pas à
Cryptage RSA [ par ritchie00 ]
Salut,Qqun saurait où je peux trouver une API C++ de chiffrement/dechiffrement RSA, qui marcherait avec des certificats et des tailles de clés paramét
nombre de bits pour un cryptage RSA [ par vodkapomme43 ]
Bonjour,J'ai juste une petite question: à partir de combien de bits peut-on dire que le cryptage RSA est assez sûr (pas cassable facilement)?Merci d'a
algorithme RSA [ par samtanga ]
j'aimerais avoir l'algorithme de cryptage RSA sous forme de schéma de manière à pouvoir facilement le coder en C du genre : pour i allant de 1 à n fai
Questions urgentes en Algorithme et Complexité [ par nostalgieing ]
bonjour j'ai une ambiguté en algorithme et complexité et j'ai quelques questions à poser et j'ai besoin de vos aide c'est urgent 1-quelle est la met
Algorithme RSA [ par stade13 ]
Bonjour, je me permet de crée ce sujet pour la raison suivante: J'ai implémenté l'algorithme RSA et il fonction a merveille sauf que je dois ajouter
CRyptage RSA 2048 [ par clem0338 ]
Bonjour, j'ai lu dans le forum et dans les sources qu'il existe une librairie pour les des calcules sur des "grand nombre" (GMP, PARI, ...) j'aimerais
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|