projet de fin d
16 pages
FrançaisFrançais

projet de fin d'anné-ensit-habiba kessraoui&mouna jaballah

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Remerciement Remerciement Nous tenons à remercier les membres de jury, Mr Mehrez BOULAARES qui acceptent d’évaluer notre projet de fin d’année. Nous remercions également notre encadrant Mme Wafa NAFTI, pour ses conseils, son aide précieuse, son soutien, sa bienveillance et son encouragement continu tout au long de ce projet. Nous adressons également nos remerciements à tous ceux qui nous ont aidés et nous ont encouragés à élaboré ce travail. i Table des matières Table des matières Chapitre 1 : Etude théorique ....................................................................................................... 2 1. Introduction ..................... 2 2. Notion de la cryptographie .............................................................................................. 2 2.1. Terminologie et Définition .......................... 2 2.2. Historique .................................................................................................................... 2 2.3. Les types de chiffrement .............................. 2 3. Le système RSA .............. 4 3.1. Historique et définition ............................................................................................ 4 3.2. Principe .................................................... 5 3.3. Les points forts du RSA ........................... 6 3.4. Les Points faibles du RSA ..................................................................

Sujets

Informations

Publié par
Publié le 27 août 2012
Nombre de lectures 2 015
Langue FrançaisFrançais
Remerciement
Remerciement
Nous tenons à remercier les membres de jury, Mr Mehrez BOULAARES qui acceptent d’évaluer notre projet de fin d’année.
Nous remercions également notre encadrant MmeWafa NAFTI,pour ses conseils, son aide précieuse, son soutien, sa bienveillance et son encouragement continu tout au long de ce projet.
Nous adressons également nos remerciements à tous ceux qui nous ont aidés et nous ont encouragés à élaboré ce travail.
i
Table des matières
Table des matières
Chapitre 1 : Etude théorique....................................................................................................... 2 1. Introduction ..................................................................................................................... 2 2. Notion de la cryptographie .............................................................................................. 2 2.1. Terminologie et Définition .......................................................................................... 2 2.2. Historique .................................................................................................................... 2 2.3. Les types de chiffrement.............................................................................................. 2 3. Le système RSA .............................................................................................................. 4 3.1. Historique et définition ............................................................................................ 4 3.2. Principe .................................................................................................................... 5 3.3. Les points forts du RSA ........................................................................................... 6 3.4. Les Points faibles du RSA ....................................................................................... 7 4. Conclusion....................................................................................................................... 7 Chapitre 2 : Etude pratique......................................................................................................... 8 1. Introduction ..................................................................................................................... 8 2. La réalisation ................................................................................................................... 8 2.1. Classe principale ...................................................................................................... 8 2.2. Explication ............................................................................................................... 8 3. Conclusion..................................................................................................................... 12 Conclusion Générale ................................................................................................................ 13 Bibliographie ............................................................................................................................ 14
ii
Introduction générale
Introduction générale
Des protections sont nécessaires dès que l’on éprouve le besoin de transmettre des informations confidentielles, que ce soit pour des raisons privées ou militaires comme on l’imagine généralement, mais aussi pour des raisons commerciales. En effet, aujourd’hui, par réseau informatique ou cartes bancaires, la plupart des échanges financiers ont besoin de cette science :cryptographie »« la pour éviter toutes fraudes, ainsi qu’en télécommunication, parun biais des cartes à puce des portables, par exemple. Pour cela, il existe des nombreuses méthodes de cryptage, mais peu d’entre elles sont reconnues comme sûres. La méthode RSA fait depuis longtemps partie de cette catégorie [1].
Dans ce projet, nous allons développer un petit programme de cryptage et décryptage basé sur l’algorithme« RSA ».Le but ne sera pas de développer un programme au code « incassable », mais plutôt de comprendre comment fonctionne cet algorithme.
Le présent rapport est organisé comme suit :
la notion deLe premier chapitre présente une étude théorique globale sur cryptographie et une représentation détaillée du système RSA.
Le deuxième chapitre sera consacré à l’implémentation et la réalisation de l’application en langage C++.
Nous clôturons avec une conclusionet quelques perspectives.
1
Etude théorique
Chapitre 1 : Etude théorique
1.Introduction Nous commencerons ce chapitre par une représentation générale de la cryptographie : terminologie et définition.Nous passons, ensuite, àune présentation globale du l’algorithme du cryptage RSA: définition, principe, avantages et limites.
2.Notion de la cryptographie
2.1.Terminologie et Définition La cryptographie est une science mathématique qui manipule un texte dont le but d’assurerla sécurité de l’information. Il se base sur le chiffrement qui rende la compréhension de cette texte impossible à toute personne qui n’admet pas la clé nécessaire.Il s’intègre au niveau de la science de cryptanalyse qui s’intéresse à étudier ce type de système à fin de le tester ou le casser.[2]
2.2.HistoriqueL’une des premières applications de l’informatiqueest le cryptage. Pour quelques années, ce domaine était réservé aux militaires et aux grandes entreprises,alors qu’il concerne aujourd’hui tous ceux qui souhaitent transmettre des données protégées, qu’ils soient professionnels ou particuliers. Pour cela, il existe de nombreuses méthodes de cryptage.[4]
2.3.Les types de chiffrement Dans l’univers du cryptage on distingue deuxprincipaux types de chiffrements :
SymétriqueIl utilise une seule clé pour chiffrer et déchiffrer : d’où la nécessité de transmission de la clé avec le message envoyé, comme représenté dans le schéma suivant
2
Etude théorique
Figure 1 Principe de cryptographie symétrique
Exemple : Le chiffrement de césar Il se base sur unesubstitution monoalphabétiqueselon un certain décalage. Chaque lettre est substitué par une seulede 3autre ("monoalphabétique").Pour César le décalage était lettres :AdevientD,BdevientE,CdevientF, etc. Exemple : en appliquant cette méthode« Cryptage »devient donc« Fubswajh » [7].
Asymétrique: Ce type de chiffrementutilise deux clés un pour chiffrer et l’autre pour déchiffrer. Le premier clé estpublique : C’est celui qui serve à chiffrer, il est visible pour tous le mondes. Elle est une espèce de boite aux lettres (où n’importequi, peut mettre chiffremessage. Et seulement le propriétaire de la clé de boite peut lire (déchiffre les messages)).Concernant la deuxième, il n’est connueque par son propriétaire il est privée.
3
Etude théorique
Figure 2  Principe de la cryptographie asymétrique Exemple:DiffieHellmanIl est développé par Whitfield Die et Martin Hellman. Ils proposent la définition d’une clé secret entre deux personnes A et B même s’il existe un troisième personne E qui écoute leur communicatio n
3.Le système RSA 3.1.Historique et définition
Le cryptage RSA, du nom de ses concepteurs,Ron Rivest,Adi Shamir etLeonard Adleman, est le premier algorithme de chiffrement asymétrique. Il a été découvert en 1977 au Massachusetts Institute of Technology, à la suite de la découverte de la cryptographie à clé publique parDiffie et Hellman.Il est utilisé dans le monde entier et sert aujourd’hui à des protections de toutes sortes notamment dans les cartes bancaires [3]. C’est un cryptosystème à clé publique et privée à la fois pour le chiffrement et l’authentification (Concept permettant de s’assurer que l’information ne peut être lue que par les personnes autorisées). C’est un système de chiffrement asymétrique.
4
Etude théorique
3.2.Principe
Clé public et clé privée:
Figure 3 :les inventeurs du RSA[1]
A partir de deux nombres premiers p et q qui doivent être très grandspuisqu’ils sont la clé de voûte de notre cryptage, on note n le produit, n = et m = (p1) × (q1). Cherchons maintenant un nombre e inférieur à m et qui doit premier avec m. Calculons ensuite l’inverse de e modulo m1, que nous noterons d. d = e^ Pour généraliser :
5
Nombres Descriptions
p,q
n
m
E
D
2 grands nombres premiers
p*q
(p1)*(q1)
p, q < e <m,pgcd (m, e) = 1
p, q < d <m, e*d modm= 1
Tableau 1 : paramètres des clés publiques et privé[6]
Etude théorique Le couple est la clé publique, et Cryptage etdécryptage :
 est la clé privée.
Pour crypter un nombre, il suffit de le mettre à la puissance e. Le reste modulo n représente le nombre une fois crypté (t est la lettre du texte à crypté puisque on va C = t^e mod n crypter le texte lettre par lettre)
Pour décrypter, on utilise la même opération, mais en mettant à la puissance d : T = c^d mod n
(c correspond a la partie du texte à décrypté puisqu’on vadécrypter partie par partie comme pour le cryptage). Une fois e, d et n calculés, on peut détruire p, q et m, qui ne sont pas nécessaires pour crypter et décrypter. Pire encore, on peut calculer très rapidement la clé privée d à partir de p et q, il ne faut donc pas conserver ces nombres. [1]
Conditions d'utilisation optimale du R.S.A. :
Il faut savoir qu’un mauvais choix des paramètresp,q,detepeut rendre le système relativement vulnérable. Pour cela, les concepteurs du système ont proposé un certain nombre de contraintes :
 Il faut choisirn = p. qde taille supérieure ou égale à 512 bits (155 chiffres décimaux environ).  Il faut prendrepetqde taille sensiblement égale.
 Il faut choisir, si possible, des nombres premiers p et q, tels que p1, p+1, q 1 et q+1 possèdent de grands facteurs premiers [5].
3.3.
Les points forts du RSA
Grâce à ces deux clés publique et privée RSA n’est pas besoin de transmettre de clé entre l’expéditeur et ledestinataire, contrairement au système symétrique. Comme tous les systèmes asymétriques, RSA est basé sur les fonctions à sens uniques simple à appliquer mais il est extrêmement difficile de retrouver la fonction à partir de 6
Etude théorique son image .En effet, le RSA est basé sur la théorie des nombres premiers, et sa robustesse tient du faitqu’il n’existe aucun algorithme de décomposition d’un nombre en facteurs premiers. Alors qu’il est facile de multiplier deux nombres premiers, il est
très difficile de retrouver ces deux entiers si l’on en connaît le produit.3.4.Les Points faibles du RSA existe plusieurs attaquesComme tout système dans ce monde, RSA n’est pas infaillible. Il contre lui commeWiener, Hastedet l’attaque du milieu qui représente l’attaque type des systèmes asymétriques.Le RSA possède également quelquesinconvénients d’ordre mathématiquepuisqueon ne peut pas choisir unn inférieur à la valeur maximale à coder. Ainsi, si on code caractère par caractère, on code des valeurs comprises entre0 et 255. Sin<255, notre cryptage ne sera pas bijectif. Cela s’expliquepar l’utilisation demodulo ndu lors cryptage et du décryptage car si n est trop petit, plusieurs caractères pourront être cryptés par le même nombre, et ne pourront donc plus être différenciés lors du décryptage. En plus, lorsqu’il s’agit deprogrammer un logiciel de cryptage / décryptage RSA, nous nous heurtons à un nouveau problème : le dépassement de capacité des variables. En effet, le plus grand type d’entier prévu dans le langage C++ est le typeunsignedlong int, qui ne peut gérer que des nombres de 32 bits au maximum. Ceci est insuffisant pour un cryptage efficace.[1]
4.Conclusion
Dans ce chapitre, nous avons essayé de présenter d’unefaçongénérale qu’estcequ’un cryptage et en particulil’algorithme RSA, étant doner nous avons défini né le sujet du projet, ainsi que son principe et ces caractéristiques.
7
Etude pratique
 Chapitre 2 : Etude pratique
1.Introduction
Après avoir placé le projet dans son cadre théorique, le présentchapitre, s’intéresse à l’implémentation du l’algorithme RSA en langage C++.Pour pouvoir atteindre cet objectif, nouscommençons par présenter l’implémentation de l’algorithme RSA en langage C++, à travers la classe RSA du programme et ses méthodes.
2.La réalisation 2.1.Classe principale
Nous présentons, ici, le fruit du travail au cours de chapitre précédent. Class RSA {  Char* txt;  long taille ;  Public:  RSA (char *);  Void cle_public (long &, long &, long &, long &, long &);  Void cle_privee (long &, long &, long &, long &, long &);  Void Cryptage (long &, long &, long &, long &, long &,long double []);  Char* Decryptage (long double []);  ~RSA (); }; 2.2.Explication
C'est ici que nous allons utiliser ce que nous avons vu dans la partie théorique. 8
Etude pratique Première méthode : le constructeur RSA Entête:RSA : : RSA (char * t)Dans cette méthode, nous intéressons à initialiser les attributs du la classe, qui sont le texte à crypté, et la variable taille ,qui est la taille de cette texte , ainsi que l’allocation dynamique du texte.
Deuxième méthode : la clé publique
Entête:void RSA :: cle_public (long &n, long &p, long &q, long &e, long &m) La clé publique est déterminéeà l’aide d’une suitedes fonctionsqu’on va les détailler cidessous Génération de p et q Comme on a mentionné dans l’étude théorique les deux nombre p et q doivent êtres premiers et puisque notre implémentation va se limiter aux petits nombres, on va s’appuyer sur la formule suivante : « un nombre est premier si et seulement si il ne possède aucun diviseur hormis 1 et luimême».Cette condition va être vérifié par la fonctionayant l’entête:
 Premier (n : entier long ; premier : booléen) Calcul de nCette valeur représente la première partie de la clé public aussi bien que pour la clé privé Elle est déterminé par la fonction ayant le prototype : calcul_n (long int p, long int q) Calcul de m Cette méthode est nécessaire pour le calcul du reste de la clé. Il s’agit d’une simple instruction calculant (1p)*(1q) d’où l’entête suivante: calcul_m (long int p, long int q) Génération de e E représente la deuxième partie de notre clé privée. Elle doit être premier avec m et cela est assurer par la fonction pgcd(e, m) qui vérifie cette condition en calculant PGCD(e, m) qui doit être égal à 1 selon le théorème de Euclide On obtient enfin notre clé publique (e, n)
Troisième méthode : Cryptage Entête: char*RSA : : Cryptage (long& p, long& q, long& m, long& e, long& n) Cette étape consiste en premier lieu detranscrire chaque lettre en son code ASCII encherchant la taille de la chaîne de caractères à crypter. Ensuite on implémente une petite
9