Vous êtes sur la page 1sur 24

ES Morges-Beausobre

Concours de vacances 2005

La Cryptographie & Le RSA

Vincent S. 9VSB 3

1.1

Introduction

Depuis toujours, lhomme a prouv le besoin de cacher ou de protger des informations prives ou confidentielles. Pour ce faire, il sest alors servi de la cryptographie. Lors de lAntiquit, la cryptographie tait restreinte un petit groupe de personnes qui avaient les capacits dimaginer et de dvelopper une telle ide (noublions pas quil ny avait l aucun manuel ou aucune aide quelconque car la cryptographie nexistait pas encore vraiment). Ainsi, le risque que les messages cods ne soient dcouverts et dcods par dautres personnes tait faible. En effet, la plus grande partie des gens nauraient mme pas pu imaginer ce concept et mme sils y avaient song, les risques restaient minimes tant donn que la majorit de la population tait illettre. Par exemple en Egypte, seuls les scribes et les personnes importantes ayant reues une certaine ducation savaient lire et crire les hiroglyphes. Dans le reste du monde la situation restait peu prs semblable jusqu environs 50 av. J.-C. Lhomme prend enfin linitiative de dvelopper les techniques de protections des informations confidentielles de faon plus efficace. Aprs la seconde guerre mondiale la situation a considrablement chang. Lducation, laccs linformation et la connaissance sont devenus accessibles presque tout le monde, avantageant normment la crativit et la nouveaut et donc la complexit. Les mthodes de cryptographies se sont dcuples et la difficult de cassage du code galement. Cependant, la cryptographie a volu uniquement dans des milieux ferms tels les gouvernements, les services secrets ou les armes. Cest pourquoi, pendant tant dannes, elle est reste une science secrte. De nos jours en revanche, il y a de plus en plus dinformations dans les milieux publiques qui doivent rester confidentielles (les informations changes par les banques par exemple). La cryptographie a commenc tre utilise des fins personnels peu aprs la cration de lInternet. En effet le cyberespace sest normment dvelopp et sest ouvert au grand public permettant par exemple lenvois de messages lectroniques. Certaines personnes dsirent alors que le contenu de ces messages reste discret. Cela est devenu possible grce certains logiciels qui sont distribus gratuitement sur lInternet, permettant au grand public de se servir de la cryptographie. Dans ce document se situe la premire partie, des explications concernant la cryptographie en gnral, il y a quelques dfinitions qui permettent de mieux comprendre les termes techniques. Il y a galement une liste des algorithmes de cryptographie les plus connus, un historique assez vigoureux permettant de constater lvolution des techniques au fil du temps et cette partie se conclu avec une observation de la place de la cryptographie de nos jours.

Ensuite, dans la seconde partie, se trouve dcrite une technique de cryptage, le RSA. Son historique est dcrit. si cette mthode est semblable une autre, et pourquoi elle est ou nest plus efficace de nos jours. Lalgorithme y est dmontr en expliquant chaque opration et en les commentant. En annexe se trouve le code source dune une petite application en langage C++ que jai cr afin daider comprendre le fonctionnement de cet algorithme. Une brve description de ce que fait ce programme est aussi prsente. Evidemment, la lecture du code naidera pas quelquun ne connaissant pas ce langage, mme si le niveau de ce programme est dbutant. Voici comment est organis mon dossier :

1re Partie
1. Introduction 2. Dfinitions Terminologie Le Chiffrement Les Algorithmes 3. Historique 4. Observations et Conclusion

p. 1 8 p. 1 2 p. 3 4 p. 3 p. 4 p. 4 p. 5 7 p. 8 p. 9 19 p. 9 p. 9 10 p. 11 12 p. 11 p. 12 p. 12 p. 12 p. 13 16 p. 17 18 p. 19 p. 20 29 p. 20 p. 21 p. 22 p. 23

2me Partie
1. Le RSA (introduction) Ce quutilise le RSA 2. Fonctionnement de lAlgorithme Le Cryptage Le Dcryptage Dans la Pratique Standards et Protocoles 3. Dmonstration Mathmatique 4. Un Exemple Simple 5. A Propos

Annexe
1. Le C++ 2. La Partie Programmation

Conclusion Personnelle Bibliographie

1.2

Dfinitions

La cryptographie dsigne l'ensemble des techniques permettant de chiffrer des messages, c'est--dire permettant de les rendre incomprhensibles. Le fait de coder un message de telle faon le rendre secret s'appelle chiffrement. La mthode inverse, consistant retrouver le message original, est appele dchiffrement. La cryptanalyse est le fait d'essayer de dchiffrer ou de trouver une fonction qui permette le dchiffrement du message, que la cl de dchiffrement soit connue ou non. On peut aussi appeler cette action le cassage . La cryptologie est la science qui tudie les diffrents aspects de la cryptographie et de la cryptanalyse. Coder un message est le fait de transformer un message en une suite de nombres tandis que Crypter un message est le fait transformer, laide dun algorithme de chiffrement, un message dj cod.

Le chiffrement
Le chiffrement est l'action de transformer une information claire, comprhensible de tout le monde, en une information chiffre, incomprhensible. Le chiffrement est toujours associ au dchiffrement, l'action inverse. Pour ce faire, le chiffrement est opr avec un algorithme cl publique ou avec un algorithme cl prive. Le chiffrement par substitution consiste remplacer dans un message un ou plusieurs bloc (de lettres par exemple) par dautres blocs. Il existe entre autre quatre types de substitutions : Mono-alphabtique Cette mthode remplace chaque lettre du message par une autre lettre de l'alphabet. (par exemple Csar) Poly-alphabtique Cette mthode utilise une suite de chiffres monoalphabtiques (la cl) rutilise priodiquement. Le principe est trs simple : on chiffre la premire lettre avec un premier alphabet, la seconde avec un second alphabet etc... (par exemple Trithme et Vigenre) Homophonique Cette mthode fait correspondre chaque lettre du message en clair un ensemble d'autres caractres. Par exemple la lettre A pourrait tre chiffre par 21, 25 et 26 et la lettre B 22, 23 et 24. Ainsi aucun chiffre napparat plus souvent quun autre et donc rend le dcryptage plus difficile. Polygramme substitue un groupe de caractres dans le message par un autre groupe de caractres. 3

Les algorithmes
Lalgorithme est une suite d'oprations et dinstructions suivre pour excuter une opration prcise. Il est la structure de base dun programme informatique mais on peut le trouver dans la vie de tous les jours comme par exemple les recettes de cuisine Les algorithmes symtriques aussi appels algorithmes cls prives (ou secrtes). Lorsque l'on crypte une information l'aide d'une cl secrte, le destinataire utilisera la mme cl secrte pour dcrypter. Il est donc ncessaire que les deux interlocuteurs se soient mis d'accord sur une cl prive auparavant, ce qui est un fort dsavantage. Les algorithmes asymtriques ont t invent afin dviter ce problme d'change de cls secrtes pralable. Voil quelques algorithmes symtriques : AES (Advanced Encryption Standard) Blowfish DES (Data Encryption Standard) IDEA (International Data Encryption Standard) RC2, RC4, RC5, RC6 (Rivest Cipher) SEAL (Software Optimized Encryption Algorithm) TripleDES

Les algorithmes asymtriques aussi appels algorithmes cls publiques et cls prives. C'est dire que pour crypter un message, on utilise la cl publique (connue de tous) et le message cod est envoy au destinataire. Ce dernier se sert de sa cl prive (cense tre connue de lui seul) pour dcrypter le message. On vite enfin dchanger cls de chiffrement et cls de dchiffrement, ce qui est un avantage. Voil quelques algorithmes asymtriques : Diffie-Hellman DSA (Digital Signature Algorithm) RSA (Rivest, Shamir et Adleman)

Les algorithmes de hachage sont des fonctions mathmatiques qui convertissent une chane de caractres d'une longueur quelconque en une chane de caractres de taille fixe (appele digest ou empreinte). On appelle emprunte le rsultat dune fonction de hachage. MD2, MD4, MD5 (Message Digest) RIPE-MD 128 SHA1 (Secure Hash Algorithm) Tiger 4

1.3

Histoire de la Cryptographie
[Antiquit]

Les premires mthodes de chiffrement


1900 av. J.-C.

Un scribe gyptien utilise des hiroglyphes qui ne sont pas standards racontant la vie de son matre. Le but n'tait pas de rendre le texte incomprhensible mais plutt de lui donner un caractre plus solennel. Le premier document chiffr connu remonte l'Antiquit. Il s'agit d'une tablette d'argile, retrouve en Irak. Un potier y avait grav sa recette secrte en supprimant des consonnes et en modifiant l'orthographe des mots. Un roi de Babylone crit sur le crne ras de ses esclaves, attend que leurs cheveux aient repouss, et les envoie ses gnraux. Il suffit ensuite de raser nouveau le messager pour lire le texte. La Msopotamie, grande civilisation de l'antiquit, avait atteint un niveau cryptologique tonnamment moderne. On a retrouv en Iran des fragments de tablettes o des nombres correspondaient des mots. Des scribes hbreux emploient le ATBASH, un simple algorithme de chiffrement par substitution utilisant l'alphabet renvers, afin de transcrire le livre de Jeremiah. (Par exemple bonjour devient ruojnob ). Des grecs utilisent une scytale, aussi appel bton de Plutarque (historien et moraliste de la Grce Antique). Il sagit dun bton autour duquel on enroulait une longue et mince bande de cuir sur laquelle on crivait notre message secret (souvent cod). Une fois la bande droule, il tait difficile de retrouver le message. Seule le destinataire, connaissant le diamtre du bton de celui ayant servi crire le message, pouvait le dchiffrer. La principale faiblesse de ce systme est quun bton de diamtre approximativement gal suffit dchiffrer le texte. La scurit reste donc sur le secret autour du procd de chiffrement du message.

1600 av. J.-C.

600 av. J.-C.

~ 600 av. J.-C.

500 av. J.-C.

487 av. J.-C.

Les premiers systmes cryptographiques


150 av. J.-C.

[Ancien ge]

Polybe, historien grec, imagine procd de chiffrement trs innovant pour son temps. Cette mthode utilise un systme de transmission bas sur un carr de 25. Cependant lalphabet franais contient 26 lettres donc il faut supprimer une lettre, en gnral il sagit du W. Les cryptologues modernes ont vu dans cette mthode plusieurs caractristiques trs intressantes dont la conversion de lettres en chiffres, la reprsentation de chaque lettre par deux lments spars. Jules Csar utilise une substitution dans l'alphabet pour les communications gouvernementales. En effet il dcalait la lettre quil souhaitait coder de 3 lettres vers la droite (en revenant au dbut de lalphabet si besoin). Le papyrus de Leyde est le plus ancien manuscrit connu concernant l'alchimie. Il utilise un algorithme de chiffrement pour cacher les parties importantes de certaines recettes. Jean Trithme (1462-1516), ancien abb, est considr comme un des pres de la cryptographie. En effet, il est lauteur dun des premiers systmes poly-alphabtiques et il a cr une technique de stganographie (fait de cacher un message au sein d'un autre message) o les lettres sont remplaces par des mots choisis de manire former, par leur runion, une prire par exemple Blaise de Vigenre (1523 - 1596) est l'auteur de lun des premiers systmes de substitution poly-alphabtique, il utilise donc une cl. Cette mthode restera dominante pendant trois sicles. Sa particularit est quil nutilise non pas un alphabet, mais 26 alphabets dcals pour chiffrer un message. On peut rsumer ces dcalages avec un carr de Vigenre. Ce chiffre utilise une cl qui dfinit le dcalage pour chaque lettre du message.

50 av. J.-C.

200

1499

1560

La Cryptographie moderne
1918

[Temps Modernes Nos Jours]

Gilbert Vernam met au point lalgorithme One Time Pad (traduisez masque jetable) aussi appel chiffre de Vernam. En effet il fonctionne sur le mme principe que le chiffrement de Vigenre, avec quelques rgles supplmentaires : Une cl ne doit tre utilise qu'une seule fois, elle doit tre de la mme taille que le message et elle doit tre gnre alatoirement. Ce systme est donc reconnu comme tant l'algorithme de chiffrement le plus scuritaire. Cependant la communication des cls pose problme car noublions pas que la cl doit tre de la mme taille que le message cod, il est donc hors de question dutiliser Internet comme passerelle. Pour donner un exemple, on peut penser la valise diplomatique que les gouvernements utilisent pour communiquer les cls prives de faon sre leurs ambassades. Le Dr Arthur Scherbius, hollandais rsidant en Allemagne, met au point une machine nomme Enigma qui sert encoder des messages. Pendant la guerre, des versions d'Enigma sont utilises pour pratiquement toutes les communications radio allemandes ainsi que pour les communications tlgraphiques. Mme les bulletins mtos sont cods avec Enigma. Elle continuera tre utilise dans larme encore jusquen 1939 (date laquelle le code de cette machine t cass). IBM publie un algorithme bas sur Lucifer (lune des premires mthodes de chiffrement moderne destin un usage civil). Il devient le DES (Data Encryption Standard). C'est un chiffrement qui transforme des blocs de 64 bits avec une cl secrte de 56 bits au moyen de permutations et de substitutions. Le DES est considr comme tant raisonnablement scuritaire. Le RSA est invent par Ronald L. Rivest, Adi Shamir et Leonard M. Adleman. Il est un des plus populaire des systmes cls publiques. Le MD5 (Message Digest 5) est dvelopp par Ronald L. Rivest. Il sagit dune fonction de hachage. Trs utilise sur lInternet mais nest pas considr comme tant un algorithme sr. L'AES (volution de lalgorithme Rijndael) devient le standard du chiffrement avanc pour les organisations du gouvernement des EtatsUnis. La cryptographie quantique, qui repose sur la physique quantique, serait considre comme sre presque 100%. Ce sera peut-tre la mthode du futur car elle est toujours en cours dexprimentation.

1923

1976

1978

1992

2000

2005

1.4

Observations Et Conclusion

La liste ci-dessus est bien videmment un rsum des plus grandes avances et des dcouvertes les plus significatives concernant la cryptographie. Il y a bien dautres personnes qui ont cr des cryptosystmes plus ingnieux les uns que les autres. Jai dcrit ceux qui, daprs-moi, taient les plus importants et ceux qui ont permis damliorer lintgrit et la scurit des informations cryptes. Ce quon peut constater, cest que depuis environs le dbut du 20e sicle, les techniques et les recherches se sont dcuples. La cryptographie est rapidement passe de science secrte outil public. Depuis les rcentes tudes sur la cryptographie quantique, on peut sattendre une scurit quasi inviolable et donc, srement une baisse du piratage informatique. Dveloppons un peut le point de la cryptographie quantique. Afin de se donner une ide du fonctionnement de cette mthode, on sait quelle repose sur la physique quantique, quil est, daprs cette dernire, thoriquement impossible de connatre la vitesse et lendroit o se site un lectron par rapport un atome un moment prcis. Plus on essaie de dfinir la vitesse, plus le lieu est incertain et vice-versa. Noublions pas que pour lanne 2005, il est impossible de trouver ces deux paramtres, mais peut-tre que dans 10ans, 20ans, voir 200ans (pourquoi pas), on aura trouv le moyen de les dfinir. Cela pour dire que les mthodes de cryptages se complexifient au fil du temps, mais les mthodes de cassages galement. Donc peut-tre que dans quelques annes, certaines mthodes seront obsoltes alors dautres les remplaceront et ainsi de suite. La cryptographie est une technique qui change progressivement en fonction des conditions politiques, conomiques et des lgislations des pays (loi concernant la protection de la vie prive etc). On peut aussi dire que la cryptographie nvoluerait pas si personne nessayait de casser les codes de cryptages, car il ny aurait plus aucune raison de les amliorer tant donn que personne ne parviendrait les casser. Les mthodes de cryptage seraient donc juges sres 100% et elles le resteraient en attendant que quelqu'un russisse passer les mesures de scurits

2.1

Le RSA - Introduction

Le RSA est lun des plus connus des algorithmes asymtriques. Cest dire quon utilise une cl publique que tout le monde connat qui permet de crypter le texte et une cl prive, dont seul le destinataire du message est cens la connatre afin de dcrypter le message. Ce qui est important avec ce systme, cest quon ne peut pas retrouver la cl prive partir de la cl publique. Il a t invent en 1978 par Ronald L. Rivest, Adi Shamir et Leonard M. Adleman, des chercheurs au MIT (Massachusetts Institute of Technology). Cette mthode est trs utilise de nos jours par exemple, dans les navigateurs Internet afin de garantir la scurit de certains sites ou encore pour chiffrer des emails. Il est aussi le standard de chiffrement du secteur bancaire de plusieurs pays. Afin de crypter, nous avons besoin dun message cod (il faut donc que le message dorigine soit transform en nombres). Le RSA utilise larithmtique des congruences modulos n, cest dire quil utilise les restes des divisions. Il est alors possible, pour certains nombres, de trouver deux autres entiers qui nous permettent, par le calcul de puissance, de retomber sur le reste de dpart (ainsi un premier calcul crypte et un second nous ramne sur ce chiffre de dpart, donc dcrypte). Un des principaux avantages du RSA, cest quil crypte par blocs de caractres, donc il ne conserve pas la frquence d'apparition des lettres.

Ce quutilise le RSA
Ci-dessous, nous allons voir quelques notions de mathmatiques afin de comprendre ce qui est utilis avec le RSA.

Les nombres entiers naturels


On dit quun nombre est entier naturel quand ce nombre existe dans la nature (quon peut lutiliser pour compter des objets). Par exemple, on peut dire quil ya 1 arbre ou 2 arbres mais pas 1.5 arbre ou 0,8 arbre. 0, 1, 2, 4, 5, 6, 7 25, 904 etc sont des entiers naturels. Avec le RSA on considrera uniquement les nombres entiers naturels.

Les nombres premiers


Un nombre premier est un entier naturel plus grand que 1 et qui ne possde que deux diviseurs : lui-mme et 1. Tout nombre entier est le produit de deux nombres premiers. Les premiers permettent alors de produire tous les entiers. Par exemple, les nombres 2, 3, 5, 7, 11, 13 sont premiers. 9

Le modulo
La notation du modulo est : a _ b (mod, c) Soit b est le reste de la division de a par c Pour donner un exemple de lutilisation du modulo, on peut imaginer de partager 269 francs entre 11 personnes. On souhaite distribuer largent quitablement. Chaque personne doit donc recevoir le plus possible et la mme somme. On commence par donner un franc chaque personne, et ceci tour de rle. Au bout de 11 tours, on aura remis 24 francs chacune des 11 personnes mais il reste encore 5 francs qui ne peuvent pas tre partages quitablement. Ces 5 francs restant, cest 269 modulo 11 (o 5 est le rsultat de la division euclidienne, car 269 = 24*11 + 5) On sait aussi que 11 _ 1 (mod, 5) car si prend le reste de la division de 11 par 5 on obtient : 1 1 - 1 0 _____ 1 _5 __ 2

Ce qui donne 11 = 5*2 + 1 Essayons avec une division sans reste : 3 6 - 3 6 _____ 0 _6 __ 6

Ce qui donne 36 = 6*6 + 0 et donc, 36 _ 0 (mod, 6).

Les thormes et algorithme


Avec le RSA, afin de prouver lexistence de certains nombres, on devra utiliser des thormes. Ils seront dcrits au moment voulu. Cependant, voici les deux thormes qui sont utiliss : o Le Petit Thorme de Fermat o Le Thorme de Bezout

10

2.2
Le Cryptage

Fonctionnement

On travaille principalement avec des nombres premiers (donc entiers naturels). A priori, il est assez facile de dire si un petit nombre est premier ou non. Cependant, ds que ce nombre devient plus consquent, il est trs rapidement difficile de dire sil sagit dun premier ou non. Voici un atout principal du RSA. On choisit donc deux nombres premiers trs grand p et q qui serviront former les cls publiques et prives. On calcul n, qui est un constituant de la cl publique et de la cl prive en faisant : n = p*q. Ensuite on calcul e, qui fait partie de la cl publique, avec : e est un nombre premier avec (p-1)*(q-1). La couple (n, e) forme ainsi la cl publique de chiffrement.

On peut commencer le cryptage. On va se servir de la cl publique de chiffrement. Tout dabord, il faut un message pralablement cod. On doit donc transformer en nombres le message dorigine (en utilisant la valeur ASCII de chaque lettre ou encore en remplaant chaque lettre par son rang dans lalphabet par exemple). On a un message cod nomm M. Il faut ensuite dcouper le message en blocs strictement infrieurs n. On nomme alors chacun des bloques cods Mi, le texte crypt C et chacun des bloques crypts Ci. Dans la ralit, les blocs sont trs longs et les cls contiennent une centaine de chiffres (voir plus). Afin de crypter, on fait Ci _ Mie (mod, n). Autrement dit, Ci (tant le bloc de texte crypt), quivaut au reste de la division de Mie par n.

11

Le Dcryptage
Il sagit dsormais de calculer, partir de p et q, la cl prive d. Pour cela, il faut satisfaire lquation e*d (mod, (p-1)*(q-1)) = 1. Avec la cl d gnre, on peut dcrypter bloc par bloc le texte crypt. On retrouve alors le message M. Mi _ Cid (mod, n). Autrement dit, Mi (tant le bloc de texte dcrypt), quivaut au reste de la division de Cid par n. On retrouve alors nos blocs cods et il ne reste plus que les transfrer vers leur quivalant dans lalphabet dfini.

Dans la Pratique
La norme RSA tait de choisir un nombre n de 155 chiffres. En 1999, un nombre de 155 chiffres (qui servait justement de cl un systme RSA) a t dcompos en produit de deux premiers de 78 chiffres chacun. Le temps cumul de calcul a t valu 8'000 millions dinstructions par secondes durant un an. Depuis, la Socit RSA Data Security recommande des nombres de 309, voire 617 chiffres. Les deux nombres premiers secrets p et q sont si grands (ils dpassent les 100 chiffres) qu'il est quasi impossible de les retrouver connaissant le nombre public n et donc il est quasi impossible de retrouver la cl prive d. Pour le chiffrement, on utilise gnralement une combinaison de RSA et dun algorithme symtrique. On chiffre tout dabord les donnes laide dune cl symtrique alatoire puis ensuite on chiffre cette cl laide de la cl. Le destinataire dchiffrera cette cl symtrique avec sa cl RSA prive et ensuite il dchiffrera les donnes avec sa cl symtrique. Si on souhaitait doubler la taille de la cl RSA, on multiplierait par 3 le temps des oprations utilisant la cl publique, par 8 le temps des oprations utilisant la cl prive et par 16 le temps de gnration des cls. On voit encore une fois pourquoi il est prfrable quon utilise le RSA avec un algorithme symtrique.

Standards
Le RSA fait partie de nombreux standards tels que : ISO 9796 ANSI X9.31 rDSA ITU-T X.509 (standard de scurit) ETEBAC 5 (standard franais du secteur bancaire et financier) X9.44 draft (standard amricain du secteur bancaire et financier) SWIFT (standard interbancaire international) 12

2.3 Dmonstration Mathmatique


On commence donc par dfinir p et q qui :
o Doivent tre des nombres entiers naturels premiers. o Doivent tre le plus grand possible et ils ne doivent pas tre trs proches lun de lautre par question de scurit, de faon quils ne soient pas facilement retrouvs laide de n. o Doivent tre connus que par le rcepteur du message, puisquils constituent la solution de gnration des cls.

On dfinit la cl publique n avec :


n = p*q

On dfinit la cl publique e avec :


e [est premier avec] (p1)*(q1) Il y a alors plusieurs possibilits pour le choix de e mais il doit bien videmment tre infrieur (p1)*(q1)

Le couple (n, e) forme la cl publique de cryptage.


Tout le monde peut la connatre afin de crypter un message, mais personne ne peut dcrypter les messages sans la cl prive.

On nomme M, Mi, C, Ci
M est le message dorigine dj cod. Mi est un bloc du message dorigine M (avec Mi < n) C est le message crypt Ci est un bloc du message crypte C (avec Ci < n)

13

Maintenant il faut trouver la cl prive d. o Preuve de lexistence de d et k


Le petit thorme de Fermat dit que si p est un nombre premier alors 1 est le reste de la division de Mip-1 par p, soit Mip-1 _ 1 (mod, p) (Pour 1 < Mi < n). Le fait que e et d soient des entiers naturels tel que : ed k(p1)*(q1) = 1 et e premier avec (p1)*(q1) est prouv avec le Thorme de Bezout. Thorme de Bezout : x et y sont premiers entre eux sil existe u et v dans _ tel que : xu + vy = 1. On donne : x=e et y=(p1)*(q1) donc pour que e*u + v(p1)*(q1) = 1 il faut que e soit premier avec (p1)*(q1) et justement, cest le cas. Avec e*u + v(p1)*(q1) = 1 on a alors u et v dans _, cest dire quils ne sont pas forcment rels. Comment alors trouver u et v entiers rels de manire que u=d et v=k ? On peut avoir u comme entier rel mais alors v serait forcment ngatif, et donc il ne pourrait pas valoir k Notons tout de mme ce que cela donnerait : e*d + (v) * ((p1)*(q1)) = 1 Afin davoir v entier, la solution est vidente : e*d v(p1)*(q1) = 1 v peut dsormais valoir k tel que e*d k(p1)*(q1) = 1 Thorme de Fermat : Ce thorme utilise la notion de factoriel et de combinaisons dlments, ce qui dpasse mon niveau de mathmatique. Cest pourquoi je ne prouverai que brivement ce thorme. Brve preuve du Thorme de Fermat : Puisque e est premier avec (p-1)*(q-1) il existe des entiers d et k tel que e*d k(p1)(q-1) = 1.

14

On peut enfin rsoudre d avec : e*d = k(p1)(q1) +1 ou encore e*d = 1 (mod, (p1)(q1)) Car : k(p1)(q1) +1 _ 1 (mod, (p1)(q1)) Par exemple avec p = 3, q = 5, (p1)(q1) = 8. Donc k*8 +1 _ 1 (mod, 8) k*8 +1 = 2*8 +1 = 17 Ainsi : 1 7 - 1 6 _____ 1 _8 __ 2

Et 17 _ 1 (mod, 8) donc e*d k(p1)(q1) = 1 (avec 0 < d < (p-1)*(q-1))

Afin de trouver d, il faut connatre (p1)(q1). Si on connat p et q, il est facile de le calculer, or si quelquun voulait dcoder un message, il lui sera difficile de trouver p et q seulement laide de n (Evidemment p, q et n doivent tre trs grands). Nanmoins il existe des algorithmes pour trouver p et q mais ils sont trs lents surtout si n lest aussi

Preuve que si p et q sont premiers on a :


Pour tout Mi < n : Mi k * (p-1)(q-1) +1 _ Mi (mod, n) (modulo n, car n = p*q) Preuve : Mi k * (p-1)(q-1) +1 _ Mi * Mi k * (p-1)(q-1) (mod, n) (loi des exposants) Donc Mi k * (p-1)(q-1) _ 1(mod, n) O Mied _ Mi (mod, n) car : k(p1)(q1) +1 = e*d Car d'aprs le thorme de Fermat Mip-1 _ 1 (mod, p) et Miq-1 _ 1 (mod, q) (Evidemment, avec p<n, et donc q<n) 15

Donc Mied _ Mi (mod, p) et Mied _ Mi (mod, q)


Dans ce cas, Mi (p-1)(q-1) _ 1 (mod, n) 1 modulo n car n = p*q, et 1 car le PGDC (Plus Grand Diviseur Commun) de deux nombres premiers est forcment 1

Mi est le reste de la division de Mi k * (p-1)(q-1) +1 par n. (o p*q = n et k(p1)(q1) +1 = e*d). On peut alors dire que Mi k * (p-1)(q-1) +1 = Mied

On revient donc au point o :


Mied _ Mi (mod, n)

Dans ce cas si Ci _ Mie (mod, n) Alors pour retrouver la valeur initiale de Mi on utilise : Mi _ Cid (mod, n)

Le cryptage se fait alors avec Ci _ Mie (mod, n) Et le Dcryptage avec Mi _ Cid (mod, n)

16

2.3

Un Exemple Simple
On prend un alphabet simple de quatre lettres : ABC On code cet alphabet de faon que : A=1 B=2 C=3 On choisit les deux nombres premiers p et q : p=2 q=5 On calcule la cl publique n avec : n = p*q = 2*5 = 10 On dfinit la cl publique e de manire que e soit premier avec (p1)*(q1). On a alors : (p1)*(q1) = (21)*(51) = 1*4 = 4 e [premier avec] 5 e=3 On calcul d avec e*d k((p1)(q1)) _ 1 par exemple : e*d k((p1)(q1)) _ 1 3*d k(4) _ 1 3*3 2*4 _ 1 car 9 = 3 * 3 + 1 o donc la cl prive d = 3

Cl publique : (n, e) = (10, 3) Cl prive : (n, d) = (10, 3) (dans la pratique, la cl publique nest jamais gale la cl prive) Cryptage du message : Ci _ Mie (mod, n) Message : BAC Message Cod : 3 2 4 o Crypter A : o Crypter B : Mi = A = 1 Ci _ 13 (mod, 10) = 1 Mi = B = 2 Ci _ 23 (mod, 10) = 8 17

o Crypter C :

Mi = C = 3 Ci _ 33 (mod, 10) = 7

Message Crypt : 8 1 7

Dcryptage du message : Mi _ Cid (mod, n) Message Crypt : 8 1 7 o Dcrypter 8 : o Dcrypter 1 : o Dcrypter 7 : Ci = 8 Mi _ 83 (mod, 10) = 2 Ci = 1 Mi _ 13 (mod, 10) = 1 Ci = 7 Mi _ 73 (mod, 10) = 3

Message Cod retrouv : 2 1 3 Message dcod : B A C

18

2.4

A Propos

Les atouts principaux du RSA sont le fait que ce langage travaille avec les nombres premiers. Or factoriser un trs grand nombre premier en deux autres prend beaucoup de temps. Trouver de grands nombres premiers est lent. Dans la plupart des cas on utilise des algorithmes probabilistes de primalit afin de dterminer p et q, comme le test de Miller-Rabin. Ces nombres ont donc une certaine probabilit de primalit. Le fait que le RSA utilise une cl publique et une cl prive est un bon point tant donn que le problme de communications des cls est rsolu (contrairement aux algorithmes symtriques). De plus, avec cette mthode, on crypte par bloc de caractres, ce qui empche un cryptanalyste dutiliser lanalyse des frquences afin dessayer de casser les cls. Le problme avec une telle mthode, cest quil faut utiliser de grandes cls, et leur gnration prend quand mme un certain temps. De plus le cryptage galement, puisquon travaille avec de trs grandes cls, donc puissances (cest pourquoi on lutilise avec un algorithme symtrique, comme cit plus haut) Il existe des algorithmes pour casser les cls, mais ceux-ci sont trs lents et donc la plupart des fois inefficaces dans des dlais raisonnables.

19

Annexe

Le C++

Le C++ est un langage de programmation volu du C , invent par un ingnieur nomm Dennis Ritchie puis amlior par un autre chercheur. La particularit de ce langage tait le fait quil tait la fois un langage systme, cest dire quon pouvait lutiliser pour accder toutes les ressources systmes dun ordinateur (mmoire, registres, ports etc) et la fois un langage volu (qui utilise des syntaxes trs proche de langlais, facilitant lcriture et la mise jour des programmes). Dbutant en programmation, je me suis aid des ouvrages Le Langage C++, par Stphane Dupin, aux ditions CampusPress ainsi que C++ par la pratique, par Jean-Cdric Chappelier et Florian Seydoux, des presses polytechniques et universitaires romandes . Dans mon programme, il sagit de programmation procdurale (ou modulaire), consistant partager le code en plusieurs fonctions (ou procdures). Chaque fonction contient un certain nombre dinformations. En bref, le programme correspond lassemblage de plusieurs fonctions qui communiquent entre elles.

Voici un plan du programme :

20

Annexe La Partie Programmation


Ce programme propose de gnrer la cl publique ainsi que la cl prive. Concernant la gnration de la cl publique, le programme prend deux nombres au hasard, quil nommera p et q. Ensuite, p et q sont entrs dans une fonction qui teste leur primarit, et sils ne le sont pas, ils sont modifis dans une boucle jusqu ce quils soient des nombres premiers.

Gnration des cls


Ensuite e et n sont gnrs pour former la cl publique, puis ils sont enregistrs dans un fichier texte. Ensuite il est temps de gnrer la cl de dchiffrement d. Pour ce faire, jai cr une boucle qui assigne d la valeur de (p-1)*(q-1) (qui dont tre un nombre impair, puisque d est premier) et qui dcrmente d de 2 tant que lquation e*d modulo (p-1)*(q-1)==1 nest pas correcte. Cette technique est de loin efficace, surtout ds quon travaille avec de plus grands nombres, le calcul est trs long. Continuons, d et n forment la cl prive et sont galement enregistrs dans un fichier texte. Il ne reste plus que le cryptage.

Cryptage du texte
Afin de crypter les lettres dun message, jai dcid de leur donner leur valeur ASCII. Par exemple, la lettre A vaut 65, le signe ! vaut 33 ou encore le chiffre 4 vaut 52. Lors du cryptage, il faut donc faire : [Valeur ASCII de la lettre Crypter]e modulo n. Jai rencontr beaucoup de problmes ce niveau l, car travailler avec des grands chiffres, soit une grande puissance, surcharge rapidement lordinateur et prend trop de temps. Jai essay plusieurs faons pour programme quelque chose qui fasse ce calcul sans prendre trop de temps mais en vain, jai donc cherch sur lInternet et dans des livres et jai fini par trouver quelque chose qui semblait faire ce que je souhaitais. Je prcise aussi que ce nest pas moi qui aie cr ce bout de code, je lai simplement adapt et jai rflchi afin de comprendre comment il fonctionne.

21

Conclusion Personnelle
En crivant ce dossier, jai appris quil existait plusieurs types de cryptages, jai appris voir les diffrences entre tel ou tel cryptage. Je me suis galement rendu compte de la place qua la cryptographie de nos jours. Jai aussi appris travailler avec les classes de restes (modulos) et avec les nombres premiers. Ceci ma permis dapprendre utiliser quelques thormes et travailler avec lalgorithme dEuclide (pas prsent dans le dossier, faute de temps pour faire une dmonstration qui tienne la route). Jai donc eu du plaisir crire ces lignes et rflchir comment les crire, mme si quelques-unes unes dentres-elles mont pos quelques petits problmes. Je pense que ce qui est important cest de bien comprendre le rle de la cryptographie et de bien comprendre le procd de fonctionnement du RSA. Pourquoi avoir choisi le RSA ? Cest simple, jen avais dj entendu parl et un de mes objectifs principaux tait damliorer mes connaissances en mathmatiques, notamment avec les nombres premiers et les modulos (et un peu de factorisation) mais surtout au niveau programmation en C++, le RSA tait donc bienvenu. La partie programmation en C++ du projet ma permis de correctement comprendre le fonctionnement de la technique du RSA, mme si la scurit de mon cryptage est quasiment nulle tant donn que le programme crypte caractre par caractre, et donc en quelques sortes, reste un algorithme de substitution simple (dans ce cas il suffit dutiliser lanalyse de frquences des caractres dans un texte et davoir les bases en cryptanalyse afin de dcrypter). Cependant lefficacit du cryptage nest pas trs importante (en tout cas pour un code de niveau dbutant). Ce qui est important cest de russir gnrer les cls de chiffrement et de dchiffrement ainsi que de russir crypter un caractre. En conclusion, ce travail ma t trs agrable et si ctait refaire, je le referai.

Vincent S.

22

Bibliographie
La cryptographie cl publique Principe de fonctionnement http://www.bibmath.net Tutoriel sur la cryptographie http://www.uqtr.ca Comprendre lordinateur Cryptographie : lalgorithme RSA http://www.sebsauvage.net Histoire de la cryptographie - Wikipedia http://fr.wikipedia.org Le cryptosystme RSA http://www.apprendre-en-ligne.net Arithmtique modulo m http://www.apprendre-en-ligne.net La cryptographie et le RSA http://www.cryptosec.lautre.net Cryptographie_dossier_college http://mathadora.free.fr Donne dun TP de Terminale S Spcialit (France) La cryptographie cls publique : le systme RSA DcryptOr 32 Jeux de dcodage par substitution simple (aux ditions Hatier A.F.J) Le langage C++ (aux ditions CampusPress) C++ par la pratique (des presses polytechniques et universitaires romandes)

23