La Cryptographie - es-beausobre.ch

24
ES Morges-Beausobre Concours de vacances 2005 Vincent S. – 9VSB 3 La Cryptographie & Le RSA

Transcript of La Cryptographie - es-beausobre.ch

Page 1: La Cryptographie - es-beausobre.ch

ES Morges-Beausobre Concours de vacances 2005

Vincent S. – 9VSB 3

La Cryptographie

&

Le RSA

Page 2: La Cryptographie - es-beausobre.ch

1

1.1 Introduction

Depuis toujours, l’homme a éprouvé le besoin de cacher ou de protégerdes informations privées ou confidentielles. Pour ce faire, il s’est alorsservi de la cryptographie.

Lors de l’Antiquité, la cryptographie était restreinte à un petit groupe de personnesqui avaient les capacités d’imaginer et de développer une telle idée (n’oublions pasqu’il n’y avait là aucun manuel ou aucune aide quelconque car la cryptographien’existait pas encore vraiment). Ainsi, le risque que les messages codés ne soientdécouverts et décodés par d’autres personnes était faible. En effet, la plus grandepartie des gens n’auraient même pas pu imaginer ce concept et même s’ils y avaientsongé, les risques restaient minimes étant donné que la majorité de la populationétait illettrée. Par exemple en Egypte, seuls les scribes et les personnes importantes ayantreçues une certaine éducation savaient lire et écrire les hiéroglyphes. Dans le reste du monde la situation restait à peu près semblable jusqu’à environs50 av. J.-C. L’homme prend enfin l’initiative de développer les techniques deprotections des informations confidentielles de façon plus efficace.

Après la seconde guerre mondiale la situation a considérablement changé.L’éducation, l’accès à l’information et la connaissance sont devenus accessibles àpresque tout le monde, avantageant énormément la créativité et la nouveauté etdonc la complexité. Les méthodes de cryptographies se sont décuplées et la difficultéde cassage du code également. Cependant, la cryptographie a évolué uniquementdans des milieux fermés tels les gouvernements, les services secrets ou les armées.C’est pourquoi, pendant tant d’années, elle est restée une science secrète.

De nos jours en revanche, il y a de plus en plus d’informations dans les milieuxpubliques qui doivent rester confidentielles (les informations échangées par lesbanques par exemple). La cryptographie a commencé à être utilisée à des finspersonnels peu après la création de l’Internet. En effet le cyberespace s’esténormément développé et s’est ouvert au grand public permettant par exemplel’envois de messages électroniques. Certaines personnes désirent alors que lecontenu de ces messages reste discret. Cela est devenu possible grâce à certainslogiciels qui sont distribués gratuitement sur l’Internet, permettant au grand publicde se servir de la cryptographie.

Dans ce document se situe à la première partie, des explications concernant lacryptographie en général, il y a quelques définitions qui permettent de mieuxcomprendre les termes techniques. Il y a également une liste des algorithmes decryptographie les plus connus, un historique assez vigoureux permettant deconstater l’évolution des techniques au fil du temps et cette partie se conclu avecune observation de la place de la cryptographie de nos jours.

Page 3: La Cryptographie - es-beausobre.ch

2

Ensuite, dans la seconde partie, se trouve décrite une technique de cryptage, leRSA. Son historique est décrit. si cette méthode est semblable à une autre, etpourquoi elle est ou n’est plus efficace de nos jours. L’algorithme y est démontré enexpliquant chaque opération et en les commentant.

En annexe se trouve le code source d’une une petite application en langage C++que j’ai créé afin d’aider à comprendre le fonctionnement de cet algorithme. Unebrève description de ce que fait ce programme est aussi présente. Evidemment, lalecture du code n’aidera pas quelqu’un ne connaissant pas ce langage, même si leniveau de ce programme est débutant.

Voici comment est organisé mon dossier :

1ère Partie p. 1 – 81. Introduction p. 1 – 22. Définitions p. 3 – 4

• Terminologie p. 3• Le Chiffrement p. 4• Les Algorithmes p. 4

3. Historique p. 5 – 74. Observations et Conclusion p. 8

2ème Partie p. 9 – 191. Le RSA (introduction) p. 9

• Ce qu’utilise le RSA p. 9 – 102. Fonctionnement de l’Algorithme p. 11 – 12

• Le Cryptage p. 11• Le Décryptage p. 12• Dans la Pratique p. 12• Standards et Protocoles p. 12

3. Démonstration Mathématique p. 13 – 164. Un Exemple Simple p. 17 – 185. A Propos p. 19

Annexe p. 20 – 291. Le C++ p. 202. La Partie Programmation p. 21

Conclusion Personnelle p. 22

Bibliographie p. 23

Page 4: La Cryptographie - es-beausobre.ch

3

1.2 Définitions

La cryptographie désigne l'ensemble des techniques permettant de chiffrerdes messages, c'est-à-dire permettant de les rendre incompréhensibles. Le faitde coder un message de telle façon à le rendre secret s'appelle chiffrement. Laméthode inverse, consistant à retrouver le message original, est appeléedéchiffrement.

La cryptanalyse est le fait d'essayer de déchiffrer ou de trouver une fonctionqui permette le déchiffrement du message, que la clé de déchiffrement soitconnue ou non. On peut aussi appeler cette action le « cassage ».

La cryptologie est la science qui étudie les différents aspects de lacryptographie et de la cryptanalyse.

Coder un message est le fait de transformer un message en une suite denombres tandis que Crypter un message est le fait transformer, à l’aide d’unalgorithme de chiffrement, un message déjà codé.

Le chiffrement

Le chiffrement est l'action de transformer une information claire, compréhensiblede tout le monde, en une information chiffrée, incompréhensible. Le chiffrement esttoujours associé au déchiffrement, l'action inverse. Pour ce faire, le chiffrement estopéré avec un algorithme à clé publique ou avec un algorithme à clé privée.

Le chiffrement par substitution consiste à remplacer dans un message un ouplusieurs bloc (de lettres par exemple) par d’autres blocs.Il existe entre autre quatre types de substitutions :

• Mono-alphabétique – Cette méthode remplace chaque lettre du message parune autre lettre de l'alphabet. (par exemple César)

• Poly-alphabétique – Cette méthode utilise une suite de chiffres mono-alphabétiques (la clé) réutilisée périodiquement. Le principe est très simple :on chiffre la première lettre avec un premier alphabet, la seconde avec unsecond alphabet etc... (par exemple Trithème et Vigenère)

• Homophonique – Cette méthode fait correspondre à chaque lettre dumessage en clair un ensemble d'autres caractères. Par exemple la lettre Apourrait être chiffrée par 21, 25 et 26 et la lettre B 22, 23 et 24. Ainsi aucunchiffre n’apparaît plus souvent qu’un autre et donc rend le décryptage plusdifficile.

• Polygramme – substitue un groupe de caractères dans le message par unautre groupe de caractères.

Page 5: La Cryptographie - es-beausobre.ch

4

Les algorithmes

L’algorithme est une suite d'opérations et d’instructions à suivre pour exécuter uneopération précise. Il est la structure de base d’un programme informatique mais onpeut le trouver dans la vie de tous les jours comme par exemple les recettes decuisine

Les algorithmes symétriques aussi appelés algorithmes à clés privées (ousecrètes). Lorsque l'on crypte une information à l'aide d'une clé secrète, ledestinataire utilisera la même clé secrète pour décrypter. Il est donc nécessaire queles deux interlocuteurs se soient mis d'accord sur une clé privée auparavant, ce quiest un fort désavantage. Les algorithmes asymétriques ont été inventé afin d’éviterce problème d'échange de clés secrètes préalable.

Voilà quelques algorithmes symétriques :

• 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 asymétriques aussi appelés algorithmes à clés publiques et àclés privées. 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 sertde sa clé privée (censée être connue de lui seul) pour décrypter le message. On éviteenfin d’échanger clés de chiffrement et clés de déchiffrement, ce qui est unavantage.

Voilà quelques algorithmes asymétriques :

• Diffie-Hellman• DSA (Digital Signature Algorithm)• RSA (Rivest, Shamir et Adleman)

Les algorithmes de hachage sont des fonctions mathématiques qui convertissentune chaîne de caractères d'une longueur quelconque en une chaîne de caractères detaille fixe (appelée digest ou empreinte). On appelle emprunte le résultat d’unefonction de hachage.

• MD2, MD4, MD5 (Message Digest)• RIPE-MD 128• SHA1 (Secure Hash Algorithm)• Tiger

Page 6: La Cryptographie - es-beausobre.ch

5

1.3 Histoire de la Cryptographie

Les premières méthodes de chiffrement [Antiquité]

1900 av. J.-C. Un scribe égyptien utilise des hiéroglyphes qui ne sont pas standardsracontant la vie de son maître. Le but n'était pas de rendre le texteincompréhensible mais plutôt de lui donner un caractère plus solennel.

1600 av. J.-C. Le premier « document » chiffré connu remonte à l'Antiquité. Ils'agit d'une tablette d'argile, retrouvée en Irak. Un potier y avait gravésa recette secrète en supprimant des consonnes et en modifiantl'orthographe des mots.

600 av. J.-C. Un roi de Babylone écrit sur le crâne rasé de ses esclaves, attendque leurs cheveux aient repoussé, et les envoie à ses généraux. Ilsuffit ensuite de raser à nouveau le messager pour lire le texte.

~ 600 av. J.-C. La Mésopotamie, grande civilisation de l'antiquité, avait atteint unniveau cryptologique étonnamment moderne. On a retrouvé en Irandes fragments de tablettes où des nombres correspondaient à desmots.

500 av. J.-C. Des scribes hébreux emploient le ATBASH, un simple algorithme dechiffrement par substitution utilisant l'alphabet renversé, afin detranscrire le livre de Jeremiah. (Par exemple bonjour devient« ruojnob »).

487 av. J.-C. Des grecs utilisent une scytale, aussi appelé bâton de Plutarque(historien et moraliste de la Grèce Antique). Il s’agit d’un bâton autourduquel on enroulait une longue et mince bande de cuir sur laquelle onécrivait notre message secret (souvent codé). Une fois la bandedéroulée, il était difficile de retrouver le message. Seule le destinataire,connaissant le diamètre du bâton de celui ayant servi à écrire lemessage, pouvait le déchiffrer.

La principale faiblesse de ce système est qu’un bâton de diamètreapproximativement égal suffit à déchiffrer le texte. La sécurité restedonc sur le secret autour du procédé de chiffrement du message.

Page 7: La Cryptographie - es-beausobre.ch

6

Les premiers systèmes cryptographiques [Ancien Âge]

150 av. J.-C. Polybe, historien grec, imagine procédé de chiffrement très innovantpour son temps. Cette méthode utilise un système de transmissionbasé sur un carré de 25. Cependant l’alphabet français contient 26lettres donc il faut supprimer une lettre, en général il s’agit du W. Les cryptologues modernes ont vu dans cette méthode plusieurscaractéristiques très intéressantes dont la conversion de lettres enchiffres, la représentation de chaque lettre par deux éléments séparés.

50 av. J.-C. Jules César utilise une substitution dans l'alphabet pour lescommunications gouvernementales. En effet il décalait la lettre qu’ilsouhaitait coder de 3 lettres vers la droite (en revenant au début del’alphabet si besoin).

200 Le papyrus de Leyde est le plus ancien manuscrit connu concernantl'alchimie. Il utilise un algorithme de chiffrement pour cacher lesparties importantes de certaines recettes.

1499 Jean Trithème (1462-1516), ancien abbé, est considéré comme undes pères de la cryptographie. En effet, il est l’auteur d’un despremiers systèmes poly-alphabétiques et il a créé une technique destéganographie (fait de cacher un message au sein d'un autremessage) où les lettres sont remplacées par des mots choisis demanière à former, par leur réunion, une prière par exemple

1560 Blaise de Vigenère (1523 - 1596) est l'auteur de l’un des premierssystèmes de substitution poly-alphabétique, il utilise donc une clé.Cette méthode restera dominante pendant trois siècles. Saparticularité est qu’il n’utilise non pas un alphabet, mais 26 alphabetsdécalés pour chiffrer un message. On peut résumer ces décalagesavec un carré de Vigenère. Ce chiffre utilise une clé qui définit ledécalage pour chaque lettre du message.

Page 8: La Cryptographie - es-beausobre.ch

7

La Cryptographie moderne [Temps Modernes à Nos Jours]

1918 Gilbert Vernam met au point l’algorithme One Time Pad (traduisezmasque jetable) aussi appelé chiffre de Vernam. En effet il fonctionne sur le même principe que le chiffrement deVigenère, avec quelques règles supplémentaires : Une clé ne doit êtreutilisée qu'une seule fois, elle doit être de la même taille que lemessage et elle doit être générée aléatoirement. Ce système est doncreconnu comme étant l'algorithme de chiffrement le plus sécuritaire. Cependant la communication des clés pose problème car n’oublionspas que la clé doit être de la même taille que le message codé, il estdonc hors de question d’utiliser Internet comme passerelle. Pourdonner un exemple, on peut penser à la valise diplomatique que lesgouvernements utilisent pour communiquer les clés privées de façonsûre à leurs ambassades.

1923 Le Dr Arthur Scherbius, hollandais résidant en Allemagne, met aupoint une machine nommée Enigma qui sert à encoder des messages.Pendant la guerre, des versions d'Enigma sont utilisées pourpratiquement toutes les communications radio allemandes ainsi quepour les communications télégraphiques. Même les bulletins météossont codés avec Enigma. Elle continuera à être utilisée dans l’arméeencore jusqu’en 1939 (date à laquelle le code de cette machine à étécassé).

1976 IBM publie un algorithme basé sur Lucifer (l’une des premièresméthodes de chiffrement moderne destiné à un usage civil). Il devientle DES (Data Encryption Standard). C'est un chiffrement quitransforme des blocs de 64 bits avec une clé secrète de 56 bits aumoyen de permutations et de substitutions. Le DES est considérécomme étant raisonnablement sécuritaire.

1978 Le RSA est inventé par Ronald L. Rivest, Adi Shamir et Leonard M.Adleman. Il est un des plus populaire des systèmes à clés publiques.

1992 Le MD5 (Message Digest 5) est développé par Ronald L. Rivest. Ils’agit d’une fonction de hachage. Très utilisée sur l’Internet mais n’estpas considéré comme étant un algorithme sûr.

2000 L'AES (évolution de l’algorithme Rijndael) devient le standard duchiffrement avancé pour les organisations du gouvernement des Etats-Unis.

2005 La cryptographie quantique, qui repose sur la physique quantique,serait considérée comme sûre à presque 100%. Ce sera peut-être laméthode du futur car elle est toujours en cours d’expérimentation.

Page 9: La Cryptographie - es-beausobre.ch

8

1.4 Observations Et Conclusion

La liste ci-dessus est bien évidemment un résumé des plus grandes avancées etdes découvertes les plus significatives concernant la cryptographie. Il y a biend’autres personnes qui ont créé des cryptosystèmes plus ingénieux les uns que lesautres. J’ai décrit ceux qui, d’après-moi, étaient les plus importants et ceux qui ontpermis d’améliorer l’intégrité et la sécurité des informations cryptées.

Ce qu’on peut constater, c’est que depuis environs le début du 20e siècle, lestechniques et les recherches se sont décuplées. La cryptographie est rapidementpassée de science secrète à outil public. Depuis les récentes études sur lacryptographie quantique, on peut s’attendre à une sécurité quasi inviolable et donc,sûrement une baisse du piratage informatique. Développons un peut le point de lacryptographie quantique. Afin de se donner une idée du fonctionnement de cetteméthode, on sait qu’elle repose sur la physique quantique, qu’il est, d’après cettedernière, théoriquement impossible de connaître la vitesse et l’endroit où se site unélectron par rapport à un atome à un moment précis. Plus on essaie de définir lavitesse, plus le lieu est incertain et vice-versa. N’oublions pas que pour l’année 2005,il est impossible de trouver ces deux paramètres, mais peut-être que dans 10ans,20ans, voir 200ans (pourquoi pas), on aura trouvé le moyen de les définir. Cela pour dire que les méthodes de cryptages se complexifient au fil du temps,mais les méthodes de cassages également. Donc peut-être que dans quelquesannées, certaines méthodes seront obsolètes alors d’autres les remplaceront et ainside suite.

La cryptographie est une technique qui change progressivement en fonction desconditions politiques, économiques et des législations des pays (loi concernant laprotection de la vie privée etc…). On peut aussi dire que la cryptographie n’évolueraitpas si personne n’essayait de casser les codes de cryptages, car il n’y aurait plusaucune raison de les améliorer étant donné que personne ne parviendrait à lescasser. Les méthodes de cryptage seraient donc jugées sûres à 100% et elles leresteraient en attendant que quelqu'un réussisse à passer les mesures de sécurités

Page 10: La Cryptographie - es-beausobre.ch

9

2.1 Le RSA - Introduction

Le RSA est l’un des plus connus des algorithmes asymétriques. C’est à dire qu’onutilise une clé publique que tout le monde connaît qui permet de crypter le texte etune clé privée, dont seul le destinataire du message est censé la connaître afin dedécrypter le message. Ce qui est important avec ce système, c’est qu’on ne peut pasretrouver la clé privée à 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 méthode est très utilisée de nos jours par exemple, dans les navigateursInternet afin de garantir la sécurité de certains sites ou encore pour chiffrer desemails. Il est aussi le standard de chiffrement du secteur bancaire de plusieurs pays. Afin de crypter, nous avons besoin d’un message codé (il faut donc que le messaged’origine soit transformé en nombres). Le RSA utilise l’arithmétique des congruencesmodulos n, c’est à dire qu’il utilise les restes des divisions. Il est alors possible, pourcertains nombres, de trouver deux autres entiers qui nous permettent, par le calculde puissance, de retomber sur le reste de départ (ainsi un premier calcul crypte et unsecond nous ramène sur ce chiffre de départ, donc décrypte). Un des principauxavantages du RSA, c’est qu’il crypte par blocs de caractères, donc il ne conserve pasla fréquence d'apparition des lettres.

Ce qu’utilise le RSA

Ci-dessous, nous allons voir quelques notions de mathématiques afin decomprendre ce qui est utilisé avec le RSA.

• Les nombres entiers naturels

On dit qu’un nombre est « entier naturel » quand ce nombre existe dans lanature (qu’on peut l’utiliser pour compter des objets). Par exemple, on peutdire qu’il y’a 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 considérerauniquement les nombres entiers naturels.

• Les nombres premiers

Un nombre premier est un entier naturel plus grand que 1 et qui ne possèdeque deux diviseurs : lui-même et 1. Tout nombre entier est le produit de deuxnombres premiers. Les premiers permettent alors de produire tous les entiers.Par exemple, les nombres « 2, 3, 5, 7, 11, 13 » sont premiers.

Page 11: La Cryptographie - es-beausobre.ch

10

• 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 l’utilisation du modulo, on peut imaginer departager 269 francs entre 11 personnes. On souhaite distribuer l’argentéquitablement. Chaque personne doit donc recevoir le plus possible et lamême somme. On commence par donner un franc à chaque personne, et cecià tour de rôle. Au bout de 11 tours, on aura remis 24 francs à chacune des 11personnes mais il reste encore 5 francs qui ne peuvent pas être partagéeséquitablement. Ces 5 francs restant, c’est 269 modulo 11 (où 5 est le résultatde 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 11par 5 on obtient :

1 1 _5 __- 1 0 2_____ 1

Ce qui donne 11 = 5*2 + 1

Essayons avec une division sans reste :

3 6 _6 __- 3 6 6_____ 0

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

• Les théorèmes et algorithme

Avec le RSA, afin de prouver l’existence de certains nombres, on devrautiliser des théorèmes. Ils seront décrits au moment voulu. Cependant, voiciles deux théorèmes qui sont utilisés :

o Le Petit Théorème de Fermato Le Théorème de Bezout

Page 12: La Cryptographie - es-beausobre.ch

11

2.2 Fonctionnement

Le Cryptage

On travaille principalement avec des nombres premiers (donc entiers naturels). Apriori, il est assez facile de dire si un petit nombre est premier ou non. Cependant,dès que ce nombre devient plus conséquent, il est très rapidement difficile de dire s’ils’agit d’un premier ou non. Voici un atout principal du RSA.

• On choisit donc deux nombres premiers très grand p et q qui serviront àformer les clés publiques et privées.

• On calcul n, qui est un constituant de la clé publique et de la clé privée enfaisant : 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 d’abord, il faut un message préalablement codé. On doit donc transformer ennombres le message d’origine (en utilisant la valeur ASCII de chaque lettre ou encoreen remplaçant chaque lettre par son rang dans l’alphabet par exemple).

On a un message codé nommé M. Il faut ensuite découper le message en blocsstrictement inférieurs à n. On nomme alors chacun des bloques codés Mi, le textecrypté C et chacun des bloques cryptés Ci. Dans la réalité, les blocs sont très longs etles clés contiennent une centaine de chiffres (voir plus).

• Afin de crypter, on fait Ci _ Mie (mod, n). Autrement dit, Ci (étant le bloc detexte crypté), équivaut au reste de la division de Mie par n.

Page 13: La Cryptographie - es-beausobre.ch

12

Le Décryptage

• Il s’agit désormais de calculer, à partir de p et q, la clé privée d. Pour cela, ilfaut satisfaire l’équation e*d (mod, (p-1)*(q-1)) = 1.

• Avec la clé d générée, on peut décrypter bloc par bloc le texte crypté. Onretrouve alors le message M.

• Mi _ Cid (mod, n). Autrement dit, Mi (étant le bloc de texte décrypté),équivaut au reste de la division de Cid par n. On retrouve alors nos blocs codéset il ne reste plus que les transférer vers leur équivalant dans l’alphabet défini.

Dans la Pratique

La norme RSA était de choisir un nombre n de 155 chiffres. En 1999, un nombrede 155 chiffres (qui servait justement de clé à un système RSA) a été décomposé enproduit de deux premiers de 78 chiffres chacun. Le temps cumulé de calcul a étéévalué à 8'000 millions d’instructions par secondes durant un an. Depuis, la SociétéRSA Data Security recommande des nombres de 309, voire 617 chiffres. Les deuxnombres premiers secrets p et q sont si grands (ils dépassent les 100 chiffres) qu'ilest quasi impossible de les retrouver connaissant le nombre public n et donc il estquasi impossible de retrouver la clé privée d.

Pour le chiffrement, on utilise généralement une combinaison de RSA et d’unalgorithme symétrique. On chiffre tout d’abord les données à l’aide d’une clésymétrique aléatoire puis ensuite on chiffre cette clé à l’aide de la clé. Le destinatairedéchiffrera cette clé symétrique avec sa clé RSA privée et ensuite il déchiffrera lesdonnées avec sa clé symétrique.

Si on souhaitait doubler la taille de la clé RSA, on multiplierait par 3 le temps desopérations utilisant la clé publique, par 8 le temps des opérations utilisant la cléprivée et par 16 le temps de génération des clés. On voit encore une fois pourquoi ilest préférable qu’on utilise le RSA avec un algorithme symétrique.

Standards

Le RSA fait partie de nombreux standards tels que :

• ISO 9796• ANSI X9.31 rDSA• ITU-T X.509 (standard de sécurité)• ETEBAC 5 (standard français du secteur bancaire et financier)• X9.44 draft (standard américain du secteur bancaire et financier)• SWIFT (standard interbancaire international)

Page 14: La Cryptographie - es-beausobre.ch

13

2.3 Démonstration Mathématique

• On commence donc par définir 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 très

proches l’un de l’autre par question de sécurité, de façon qu’ils nesoient pas facilement retrouvés à l’aide de n.

o Doivent être connus que par le récepteur du message, puisqu’ilsconstituent la solution de génération des clés.

• On définit la clé publique n avec :

n = p*q

• On définit la clé publique e avec :

e [est premier avec] (p–1)*(q–1)

Il y a alors plusieurs possibilités pour le choix de e mais il doit bienévidemment être inférieur à (p–1)*(q–1)

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

Tout le monde peut la connaître afin de crypter un message, mais« personne » ne peut décrypter les messages sans la clé privée.

• On nomme M, Mi, C, Ci

M est le message d’origine déjà codé.Mi est un bloc du message d’origine M (avec Mi < n)C est le message cryptéCi est un bloc du message cryptée C (avec Ci < n)

Page 15: La Cryptographie - es-beausobre.ch

14

• Maintenant il faut trouver la clé privée d.

o Preuve de l’existence de d et k

Le petit théorème de Fermat dit que si p est un nombre premier alors1 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(p–1)*(q–1) = 1 et e premier avec (p–1)*(q–1) est prouvéavec le Théorème de Bezout.

Théorème de Bezout : x et y sont premiers entre eux s’il existe u et v dans _ tel que :xu + vy = 1. On donne : x=e et y=(p–1)*(q–1)donc pour que e*u + v(p–1)*(q–1) = 1 il faut que e soit premieravec (p–1)*(q–1) et justement, c’est le cas.

Avec e*u + v(p–1)*(q–1) = 1 on a alors u et v dans _, c’est à direqu’ils ne sont pas forcément réels. Comment alors trouver u et v entiersréels de manière que u=d et v=k ? On peut avoir u comme entierréel mais alors v serait forcément négatif, et donc il ne pourrait pasvaloir k… Notons tout de même ce que cela donnerait :e*d + (–v) * ((p–1)*(q–1)) = 1

Afin d’avoir v entier, la solution est évidente :e*d – v(p–1)*(q–1) = 1

v peut désormais valoir k tel que e*d – k(p–1)*(q–1) = 1

Théorème de Fermat :Ce théorème utilise la notion de factoriel et de combinaisonsd’éléments, ce qui dépasse mon niveau de mathématique. C’estpourquoi je ne prouverai que brièvement ce théorème.

Brève preuve du Théorème de Fermat :Puisque e est premier avec (p-1)*(q-1) il existe des entiers d etk tel que e*d – k(p–1)(q-1) = 1.

Page 16: La Cryptographie - es-beausobre.ch

15

On peut enfin résoudre d avec :

e*d = k(p–1)(q–1) +1ou encoree*d = 1 (mod, (p–1)(q–1))

Car : k(p–1)(q–1) +1 _ 1 (mod, (p–1)(q–1))

Par exemple avec p = 3, q = 5, (p–1)(q–1) = 8.Donc k*8 +1 _ 1 (mod, 8)k*8 +1 = 2*8 +1 = 17

Ainsi :

1 7 _8 __- 1 6 2_____ 1

Et 17 _ 1 (mod, 8)

donc e*d – k(p–1)(q–1) = 1 (avec 0 < d < (p-1)*(q-1))

Afin de trouver d, il faut connaître (p–1)(q–1). Si on connaît p et q, ilest facile de le calculer, or si quelqu’un voulait décoder un message, illui sera difficile de trouver p et q seulement à l’aide de n (Evidemmentp, q et n doivent être très grands). Néanmoins il existe des algorithmespour trouver p et q mais ils sont très lents surtout si n l’est 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(p–1)(q–1) +1 = e*d

Car d'après le théorème de Fermat Mip-1 _ 1 (mod, p)et Miq-1 _ 1 (mod, q)(Evidemment, avec p<n, et donc q<n…)

Page 17: La Cryptographie - es-beausobre.ch

16

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 DiviseurCommun) de deux nombres premiers est forcément 1…

Mi est le reste de la division de Mi k * (p-1)(q-1) +1 par n.(où p*q = n et k(p–1)(q–1) +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 Décryptage avec Mi _ Cid (mod, n)

Page 18: La Cryptographie - es-beausobre.ch

17

2.3 Un Exemple Simple

• On prend un alphabet simple de quatre lettres :A – B – C

• On code cet alphabet de façon que :A = 1B = 2C = 3

• On choisit les deux nombres premiers p et q :p = 2q = 5

• On calcule la clé publique n avec :n = p*q = 2*5 = 10

• On définit la clé publique e de manière que e soit premier avec (p–1)*(q–1).On a alors :(p–1)*(q–1) = (2–1)*(5–1) = 1*4 = 4e [premier avec] 5e = 3

• On calcul d avec e*d – k((p–1)(q–1)) _ 1 par exemple :e*d – k((p–1)(q–1)) _ 13*d – k(4) _ 13*3 – 2*4 _ 1 car 9 = 3 * 3 + 1

o donc la clé privée d = 3

• Clé publique : (n, e) = (10, 3)• Clé privée : (n, d) = (10, 3)

(dans la pratique, la clé publique n’est jamais égale à la clé privée)

• Cryptage du message : Ci _ Mie (mod, n)

Message : BACMessage Codé : 3 2 4

o Crypter A : Mi = A = 1Ci _ 13 (mod, 10) = 1

o Crypter B : Mi = B = 2Ci _ 23 (mod, 10) = 8

Page 19: La Cryptographie - es-beausobre.ch

18

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

Message Crypté : 8 1 7

• Décryptage du message : Mi _ Cid (mod, n)

Message Crypté : 8 1 7

o Décrypter 8 : Ci = 8Mi _ 83 (mod, 10) = 2

o Décrypter 1 : Ci = 1Mi _ 13 (mod, 10) = 1

o Décrypter 7 : Ci = 7Mi _ 73 (mod, 10) = 3

Message Codé retrouvé : 2 1 3Message décodé : B A C

Page 20: La Cryptographie - es-beausobre.ch

19

2.4 A Propos

Les atouts principaux du RSA sont le fait que ce langage travaille avec les nombrespremiers. Or factoriser un très grand nombre premier en deux autres prendbeaucoup de temps.

Trouver de grands nombres premiers est lent. Dans la plupart des cas on utilisedes algorithmes probabilistes de primalité afin de déterminer p et q, comme le testde Miller-Rabin. Ces nombres ont donc une certaine probabilité de primalité.

Le fait que le RSA utilise une clé publique et une clé privée est un bon point étantdonné que le problème de communications des clés est résolu (contrairement auxalgorithmes symétriques).

De plus, avec cette méthode, on crypte par bloc de caractères, ce qui empêche àun cryptanalyste d’utiliser l’analyse des fréquences afin d’essayer de casser les clés.

Le problème avec une telle méthode, c’est qu’il faut utiliser de grandes clés, et leurgénération prend quand même un certain temps. De plus le cryptage également,puisqu’on travaille avec de très grandes clés, donc puissances (c’est pourquoi onl’utilise avec un algorithme symétrique, comme cité plus haut)

Il existe des algorithmes pour casser les clés, mais ceux-ci sont très lents et doncla plupart des fois inefficaces dans des délais raisonnables.

Page 21: La Cryptographie - es-beausobre.ch

20

Annexe Le C++

Le C++ est un langage de programmation évolué du « C », inventé par uningénieur nommé Dennis Ritchie puis amélioré par un autre chercheur. Laparticularité de ce langage était le fait qu’il était à la fois un langage système, c’est àdire qu’on pouvait l’utiliser pour accéder à toutes les ressources systèmes d’unordinateur (mémoire, registres, ports etc…) et à la fois un langage évolué (qui utilisedes syntaxes très proche de l’anglais, facilitant l’écriture et la mise à jour desprogrammes).

Débutant en programmation, je me suis aidé des ouvrages « Le Langage C++, parStéphane Dupin, aux éditions CampusPress » ainsi que « C++ par la pratique, parJean-Cédric Chappelier et Florian Seydoux, des presses polytechniques etuniversitaires romandes ». Dans mon programme, il s’agit de programmationprocédurale (ou modulaire), consistant à partager le code en plusieurs fonctions (ouprocédures). Chaque fonction contient un certain nombre d’informations. En bref, leprogramme correspond à l’assemblage de plusieurs fonctions qui communiquententre elles.

Voici un plan du programme :

Page 22: La Cryptographie - es-beausobre.ch

21

Annexe La Partie Programmation

Ce programme propose de générer la clé publique ainsi que la clé privée.Concernant la génération de la clé publique, le programme prend deux nombres auhasard, qu’il nommera p et q. Ensuite, p et q sont entrés dans une fonction qui testeleur primarité, et s’ils ne le sont pas, ils sont modifiés dans une boucle jusqu’à cequ’ils soient des nombres premiers.

Génération des clés

Ensuite e et n sont générés pour former la clé publique, puis ils sont enregistrésdans un fichier texte. Ensuite il est temps de générer la clé de déchiffrement d. Pource faire, j’ai créé une boucle qui assigne à d la valeur de (p-1)*(q-1) (qui dont êtreun nombre impair, puisque d est premier) et qui décrémente d de 2 tant quel’équation e*d modulo (p-1)*(q-1)==1 n’est pas correcte. Cette technique est deloin efficace, surtout dès qu’on travaille avec de plus grands nombres, le calcul esttrès long…. Continuons, d et n forment la clé privée et sont également enregistrésdans un fichier texte. Il ne reste plus que le cryptage.

Cryptage du texte

Afin de crypter les lettres d’un message, j’ai décidé de leur donner leur valeurASCII. 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.

J’ai rencontré beaucoup de problèmes à ce niveau là, car travailler avec des grandschiffres, soit une grande puissance, surcharge rapidement l’ordinateur et prend tropde temps. J’ai essayé plusieurs façons pour programme quelque chose qui fasse cecalcul sans prendre trop de temps mais en vain, j’ai donc cherché sur l’Internet etdans des livres et j’ai fini par trouver quelque chose qui semblait faire ce que jesouhaitais. Je précise aussi que ce n’est pas moi qui aie créé ce bout de code, je l’aisimplement adapté et j’ai réfléchi afin de comprendre comment il fonctionne.

Page 23: La Cryptographie - es-beausobre.ch

22

Conclusion Personnelle

En écrivant ce dossier, j’ai appris qu’il existait plusieurs types de cryptages, j’aiappris à voir les différences entre tel ou tel cryptage. Je me suis également renducompte de la place qu’a la cryptographie de nos jours. J’ai aussi appris à travailleravec les classes de restes (modulos) et avec les nombres premiers. Ceci m’a permisd’apprendre à utiliser quelques théorèmes et à travailler avec l’algorithme d’Euclide(pas présent dans le dossier, faute de temps pour faire une démonstration qui tiennela route).

J’ai donc eu du plaisir à écrire ces lignes et à réfléchir comment les écrire, même siquelques-unes unes d’entres-elles m’ont posé quelques petits problèmes. Je penseque ce qui est important c’est de bien comprendre le rôle de la cryptographie et debien comprendre le procédé de fonctionnement du RSA.

Pourquoi avoir choisi le RSA ? C’est simple, j’en avais déjà entendu parlé et un demes objectifs principaux était d’améliorer mes connaissances en mathématiques,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 m’a permis de correctementcomprendre le fonctionnement de la technique du RSA, même si la sécurité de moncryptage est quasiment nulle étant donné que le programme crypte caractère parcaractère, et donc en quelques sortes, reste un algorithme de substitution simple(dans ce cas il suffit d’utiliser l’analyse de fréquences des caractères dans un texte etd’avoir les bases en cryptanalyse afin de décrypter). Cependant l’efficacité ducryptage n’est pas très importante (en tout cas pour un code de niveau débutant).Ce qui est important c’est de réussir à générer les clés de chiffrement et dedéchiffrement ainsi que de réussir à crypter un caractère.

En conclusion, ce travail m’a été très agréable et si c’était à refaire, je le referai.

Vincent S.

Page 24: La Cryptographie - es-beausobre.ch

23

Bibliographie

• La cryptographie à clé publique – Principe de fonctionnement http://www.bibmath.net

• Tutoriel sur la cryptographie http://www.uqtr.ca

• Comprendre l’ordinateur – Cryptographie : l’algorithme RSA http://www.sebsauvage.net

• Histoire de la cryptographie - Wikipedia http://fr.wikipedia.org

• Le cryptosystème RSA http://www.apprendre-en-ligne.net

• Arithmétique 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

• Donnée d’un TP de Terminale S Spécialité (France) – La cryptographie à cléspublique : le système RSA

• Décrypt’Or – 32 Jeux de décodage 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)