Vous êtes sur la page 1sur 19

1

Université Cadi Ayyad Marrakech


Ecole Normale Supérieur de Marrakech
Département informatique
Au 2019/2020

Rapport de projet de fin


d’étude
Pour l’obtention du dut en génie informatique

Oussama rachiq
Sous la tutelle de M.Laanaoui My Driss

‫ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ‬
Développement d’un programme de cryptage
2

Remerciement

Je tiens à remercier dans un premier temps, toute l’équipe pédagogique de


l'école normale supérieure et les intervenants professionnels responsables de la
formation génie des informatiques.
Je tiens à remercier tout particulièrement et à témoigner toute ma
reconnaissance à M. LAANAOUI MY DRISS pour le temps qu'il m'a consacré
tout au long de cette période de confinement.
Je remercie également M. ZAHID NOUREDDINE pour son soutien, sa
disponibilité, son efficacité et ses conseils et qui n’a pas cessé de nous encourager
en ce moment critique.
Je remercie également toutes les personnes qui m’ont donné des conseils,
émis des avis critiques, mon frère qui m’a offert son tout.
Enfin, merci à toutes les personnes que j’ai rencontré à Marrakech, qui
m’ont fait apprécier mon séjour, et merci à mes colocataires qui ne m’ont jamais
réveillé.
3

INTRODUCTION
Dans le cadre du formation DUT génie informatique à l’école normale
supérieure de Marrakech en vue de l’obtention du diplôme en fin d’année j’ai
été chargées de réaliser un projet complet en situation professionnelle qui
marque la fin des études pour but développer l’autonomie et la responsabilité
des étudiants, et mettre en pratique les enseignements reçus et permettre ainsi
aux étudiants d'affirmer leurs savoir-faire et à considérer leurs compétences.
De nos jours, l’'informatique est considérée comme un outil indispensable
à toute entreprise qui ne veut pas rester en marge de la mondialisation. Mais nul
ne peut nier qu’il y a encore une absence des système informatiques dans le
parcours des plupart des étudiants, même des filières de l'informatique.
Mon travail a consisté à régler la problématique d'avoir la réponse juste
des exercices de la matière de cryptologie étudiée dans la plupart des DUT
informatique, tant qu'ils y ont nombreux exercices non corrigés aux classes,
cryptage et décryptage des textes donnés en utilisons des règles de
mathématique et arithmétique.
Le présent rapport explique nettement les différentes étapes suivies pour
réaliser le travail demandé. Nous commençons le rapport par une présentation
générale, dans laquelle nous présentons le sujet de l’application.
Dans le second chapitre, nous nous intéressons à faire une étude théorique
basée essentiellement sur deux modules à savoir l’étude de l’existant et l’étude
de la solution proposée.
Le chapitre suivant est réservé à la conception détaillée. Nous présentons
dans ce chapitre les différents aspects conceptuels de l’application.
4

Sommaire
Remerciement ----------------------------------------------------------- 2
Introduction -------------------------------------------------------------- 3
Problématique ----------------------------------------------------------- 5
Solution ------------------------------------------------------------------- 6
LikeAnEnigma------------------------------------------------------------ 7
Histoire de la cryptologie------------------------------------------------ 7
Chiffrement de Cesar---------------------------------------------- 7
Chiffrement de veginere------------------------------------------- 8
Chiffrement d’Enigma--------------------------------------------- 10
Methode informatique --------------------------------------------------- 12
Chiffrement DES--------------------------------------------------- 12
Chiffrement AES--------------------------------------------------- 14
Chiffrement RSA--------------------------------------------------- 14
Mathématiques ------------------------------------------------------------ 17
Théorème d'Euclide------------------------------------------------- 17
Theoreme de Bezout ----------------------------------------------- 18
Modulo--------------------------------------------------------------- 19
Conception----------------------------------------------------------------- 20
5

Problématique
La cryptologie : Mécanisme permettant de camoufler des messages, de le
rendre incompréhensible pour quiconque n’est pas autorisé. Elle fait partie d’un
ensemble de théories et de techniques liées à la transmission de l’information
(théorie des ondes électromagnétiques, théorie du signal, théorie des codes
correcteurs d’erreurs, théorie de l’information, théorie de la complexité, ...).
Ce cours, qui est un cours optionnel de première année, deuxième semestre,
DUT génie informatique a l’objectif d'étudié les problématiques liées `a la
sécurité des ´échanges d’information, en particulier cherche des solutions aux
problèmes de confidentialité et d’authentification. Le célèbre trio Alice, Bob et
Oscar joue un scenario vieux comme le monde : Alice et Bob veulent échanger
un message m à l’insu d’Oscar, qui, lui, va faire tout ce qui est en son pouvoir
pour en prendre connaissance. Il peut aussi tenter d’autres actions déplaisantes
comme de communiquer avec Alice en prétendant être Bob, ou bien de
remplacer, à leur insu bien sûr, m par un message de son choix. D'autre cotée
répond au problème de la fiabilité, en cherchant à protéger l’information d’une
détérioration due à la présence de bruit. La solution consiste `a apporter de la
redondance `a l’information transmise, afin que celle-ci puisse être restaurée -
complètement ou du moins autant que possible - même si elle a été perturbée.
Le problème le plus reconnu aux étudiants de cette matière c’est l’absence
d’une réponse exacte aux exercices travaillés, les séances du TD existe pour
combler cet écart mais parfois le temps est plus précieux pour corriger tous ces
exercices, parfois c’est la période de préparations pour les examens quand tu
dois travailler nombreux exercices prier de trouver un entre eux sur la feuille le
jour de l’exam, malheureusement un exercice non corrigé ne sert à rien.
Plus que ça dans nos jours, le chat en ligne est une nécessite quotidienne, certes
a trouvé ça une moyenne pour trouver des nouveaux amis (Facebook,
Instagram, …), discuter et échanger des informations (WhatsApp ,Telegram,…)
d’autres allaient plus loin que ça (Tinder , Grinder, …) bien sûr que tous ces
personnage que nous venons de citer ne veulent pas un Oscar dans ses
discussions privés, malheureusement avec toute sécurité pris, parfois un
troisième personne trouve un moyen .
6

Solution
Le cours de la cryptologie est basé sur plusieurs notions de mathématique
d’arithmétique, division euclidienne théorème de Bézout les fonctions sur les
nombres premiers, les notions de modulo plus des opérations dans Z/nZ , qu’on
doit passer par pour obtenir notre chiffrement RSA, AES, DES, etc.... le langage
la plus connu pour regler notre programme est java avec sa classe prédéfinis
java.math que nous allons parler de tout ça dans les prochains chapitres.
Si nous parlons d’un chiffrement inviolable, nous parlons également d’Enigma
la raison principale qu’Alan Turing a construit le premier ordinateur, machine
de Turing, les combinaisons d'Enigma était énorme presque il peut prendre des
dizaines d’années pour trouver toute les décryptions possible pour un petit texte.
Le système des rotors était inattendu ce qu'il a élevé la difficulté mais les
positions étaient dans des feuilles et par jours ce qu’il a facilité la procession de
décryptage, et déjà le code du système Enigma est sur internet donc je propose
un système rassemblant au dernier mais avec des modifications qui élèvera
bientôt la sécurité et mettra le décryptage a jour entre l’émetteur et le récepteur
pour que l’interruption d’une troisième personne sera inutile.
7

LikeAnEnigma
Histoire de la cryptologie
Pourtant, l’histoire du chiffrement ne date pas d’aujourd’hui puisqu’il faut
remonter à la civilisation babylonienne, environ 3 000 ans avant notre ère ,
L’histoire du chiffrement retrace une épopée passionnante dans laquelle
cryptographes (« crypteurs ») et cryptanalystes (« décrypteurs ») se livrent une
bataille acharnée, éternel recommencement de développement d’un algorithme
par les uns, de décodage par les autres, de développement d’un nouvel algorithme
plus puissant, il a passé par 4 période principales ,

Période antiquité : chiffrement de César


Connu par le chiffrement par décalage consiste a remplacer la lettre prise dans la
première ligne par la lettre correspondante dans le second placé au-dessous et
décalées d'un certain nombre de rang donné.

-Prenant exemple : la phrase connue du César “veni vidi vici” Selon


le tableau au-dessus : v -->Y , e -->H , n -->Q , … , c -->F ,i -->L et le
résultat final sera : YHQL YLGL YLFL
Information supplémentaire : cette phrase veut dire « je suis venu, j'ai vu, j'ai
vaincu » César n’avait pas besoin de la crypter.
Difficulté : Facile à décrypter puisqu’il y a 25 décryptions possible. Faut juste
décaler les lettres du texte chiffré chaque fois jusqu’au avoir un texte compris.
Dans le programme : la méthode César crée deux tableaux de 26 cases
-stocker les alphabets par ordre dans les deux tableaux T1[], T2[].
8

-demander à l’utilisateur de donner le nombre de décalage nbDecal , et appliquer


l’opération nbDecal = nbDecal % 26 ; pour que le résultat soit dans l’intervalle
[0-26].
- appliquer le décalage dans le deuxième en appliquant T2[i] =
T1[(i+nbDecal)%26] ; dans une boucle de 26 tours // les premiers case possible à
décaler par addition de l’indice et le nombre décalage mais il y aura un bug pour
les derniers puisqu’il n’y a pas des cases de plus c’est pour ça (i+nbDecal)%26
pour continuer le calcule de 0 chaque qu’il dépasse 26
- maintenant que les deux tableaux sont créés, demander à l’utilisateur de
donner le texte à crypter, prenant chaque fois une lettre du texte, cherchant dans
une boucle de 26 tours la lettre dans T1, une fois trouver remplacer la case texte[j]
par la lettre T2[i], i l’indice correspondant à l’indice de la lettre trouvé dans T1
- une fois la boucle du texte terminé le programme affiche le texte décrypté a
l’utilisateur
-utilisant le même algorithme pour le décryptage sauf que la valeur du nombre de
decalage donné nbDecal =26 - nbDecal ;

Période classique : chiffrement de Vigenère


Contrairement au chiffrement césar les lettres de la deuxième ligne sont aléatoire
ce qui élèvera la probabilité d’avoir la clé utilisée à 26! ≈ 4*10^26.
Difficulté : La décryptions de ce chiffrement peut être aussi facile en utilisant la
méthode de la fréquence des lettres en texte français et la logique de la langue.
9

Dans le programme : contrairement au méthode César La méthode Vigenère


créer le deuxième tableau manuellement en demandant à l'utilisateur chaque
fois de donner la lettre correspondant à la lettre du premier tableau, et
vérifiant l’absence de la lettre entrée dans les cases précédentes.
-après avoir compléter les deux tableaux le programme demande le texte à
crypter, comme l’algorithme de César, chercher la lettre dans le premier
tableau et le remplacer par la lettre correspondante dans le deuxième.
-retourner le texte crypté.
-Et pour ce qui est de décrypter un texte crypté, le programme demande une
chaine de 26 lettres de deuxième tableau donné par l’émetteur par ordre .
-stocker la chaine dans un tableau de 26 ce qui deviendra la clé pour décrypter
le texte.
10

Période moderne : machine Enigma


Le principe de ce chiffrement est le même que César sauf qu’il y a 3 rotors, voyant
chaque rotor comme les deux lignes données dans l'exemple de César, les
premières lignes du deuxième et troisième tableau sont les deuxièmes lignes du
premier et deuxième tableau successivement, donc une lettre est décryptée trois
fois avant avoir un résultat final, c’est encore plus difficile quand chaque fois une
lettre est tapée la deuxième ligne du premier tableau se décale d'une case, après
compléter 26 décalage la deuxième ligne du deuxième rotor fait de son tour une
décalage d’une case , ainsi que la deuxième ligne du troisième rotor quand celle
du deuxième complète 26 décalage. Ce que nécessite un texte de 26*26*26=
17576 mots pour ce qu’il se décrypte de la même manière avec la même position
des rotors de départs, ce qu'elle-même a une 17576 positions possibles. Le
système de rotation se varie entre modèle de machine.
Difficulté : Le décryptage est presque impossible sans possession de position de
départ et le système des rotations plus les machines avec le plugboard . Il est
difficile mais possible de déchiffrer les codes en connaissant ces derniers, par
inverser les tableaux et commencer par la première lettre qui sera connu et
ajoutant chaque fois des décalages nous aurions l’origine de la lettre codée.
Enigma aujourd’hui : la méthode Enigma était une méthode mécanique , les
positions de départs était sur feuille, chaque jour a sa position, il ne pourra pas
changer puisque la distance entre l’émetteur et le récepteur aux WWII était fatale,
par contre le temps est changé il y a plusieurs moyens de transporter
l’information, le système mécanique et les feuilles deviendra inutile. C'est ici ou
j’ai mon idée du méthode LikeAnEnigma.
Methode LikeAnEnigma : cette méthode est inspirée d’Enigma, 3 rotors ,
le décalage d’un rotor dépends au numéro du lettre , pour bien expliquer
11

Prenant la Lettre ‘O’ le 15ème lettre de l’alphabet, après cette lettre le 2eme rotor
se décale de 5 cases, on doit voir les lettres comme des nombres 01,02,03...,26 le
chiffre des douzaines pour le numéro du rotor et les unités pour le nombre de
décalage. Les lettres de A-I de l’ordre 1-9 responsable de mouver le 1er rotor ,
passant au 2eme rotor ou on peut confronter le problème du nombre 10 , lettre ‘J’
, on abandonne ce cas tant que la lettre J est le quatrième en comptant de la fin
dans la fréquence des lettres françaises , et pour le reste des lettres K-S de l’ordre
11-19 , maintenant au troisième débutant de son cas particulier la lettre T chiffre
20 , difficile à ignorer connaissant que son ordre dans le tableau des fréquence est
le 5eme d’une valeur presque égale aux fréquences des lettres a ,s et i , donc on
prend 0 comme 10 , et le reste est U-Z de l’ordre 21-26. Donc la méthode traite
le texte lettre par lettre changeant la clé après chacun ce que donne la possibilité
d’avoir un 25^100 cryptages diffèrent d’un texte de 100, presque égale à
6*10^139, là nous avons dépassé le nombre Gogol, nous avons dépassé même la
prédiction de Carl Sagan des nombres des atomes dans l’univers. Les nombre des
clés de départs est le même que celle d’Enigma 25^3 , ce qui donne à l'utilisateur
le choix de personnaliser les clés.
Dans le programme : La méthode LikeAnEnigma prend une grande partie de
l’algorithme César, le système de créations des tableaux, le système de décalage
et le système de remplacement mais dans des différentes manières. On explique :
-L’utilisateur obligé d’entrer 3 nombres [1-25], qui représentent les positions de
départs des rotors. Il peut ignorer cette option et entrer la clé manuelle a la
manière de la méthode Vigenère.
-Six tableaux sont créer là T11, T12, T21, T22, T31 et T32, comme déjà prévu le
tableau T11 stocker par les alphabets dans l’ordre, puis stocker la première clé
dans le tableau T12 à la méthode de César ou Vigenère par rapport aux choix de
l’utilisateur avant, après le tableau T21 est stocké par les données du T12, la
deuxième clé est stockée dans T22 et T31, puis la troisième clé dans T32.
12

-dès que le texte est entré le programme commence à traiter le texte lettre par
lettre, prenant son indice dans le tableau T11, r=i/10 ; //numéro du rotor d=i%10
; //nombre de décalage à appliquer a condition que 0 vaut 10 , donc le changement
s’applique sur la lettre suivante ainsi de suite, jusqu’au avoir un texte crypté.
-le passage entre T11 et T12 est par indice
-le passage entre T12 et T21 est par lettre équivalente, donc l’indice de traitement
reçois la valeur de l’indice de la lettre dans T21 équivalente à celle de de T12.
-le passage entre T21 et T22 est par la nouvelle indice.
-le passage entre T22 et T31 a le même concept que T12 et T21.
-appliquant le même algorithme de T21 et T22 sur T31 et T32 pour avoir
finalement la lettre cryptée.
-le programme retourne un texte crypté.
-et pour le décryptage il suffit avoir la clé, la première lettre décryptée dans le
sixième tableau aura le même indice que la lettre originale dans le premier et puis
appliquer les algorithmes précédents pour trouver le texte complet.

Période actuelle : cryptage informatique


Algorithme DES
Les DES pour Data Encryptions Standard est un algorithme qui a été le
standard de chiffrement symétrique entre 1977 et 2001. Le DES est basé
sur un schéma de Feistel.
Génération du clé : C’est un algorithme de cryptage à clé secrète. La clé
sert donc à la fois à crypter et à décrypter le message. Cette clé a ici une
longueur de 64 bits, c’est-à-dire 8 caractères, mais seulement 56 bits sont
utilisés en utilisant le tableau de la permutation initiale.
13

Chaque nombre de cette représente le numéro du bits qu’on doit prendre pour
créer les 56 bits par ordre du tableau. (Par exemple, le bit 1 se retrouve à la place
du bit 40, le bit 40 se retrouve à la place du bit 28, etc.). Ce bloc de 56 bits est
découpé en deux blocs de 28 bits, Les deux blocs subiront chacun un décalage
vers la gauche, en fonction du niveau d'itération (le numéro d'étape, de 0 à 15),
selon l'ordre suivant : 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1. Ensuite, les 2 blocs de 28
bits sont rassemblés en un bloc de 56 bits. puis il subira une série de transpositions
avec oubli pour obtenir un bloc de 48 bits selon la table :

Nous aurons a la fin 16 clés ,K1 ,K2 ,K3...


14

Algorithme AES
L'AES (Advanced Encryption Standard) est, comme son nom l'indique, un
standard de cryptage symétrique destiné à remplacer le DES (Data
Encryption Standard) qui est devenu trop faible au regard des attaques
actuelles.
L'algorithme offre des tailles de blocs et de clés qui sont des multiples de
32 (compris entre 128 et 256 bits). Ces différentes opérations sont répétées
plusieurs fois et définissent un « tour ». A chaque tour, une clé unique est
calculée à partir de la clé de cryptage et incorporée dans les calculs.
L'algorithme prend en entrée un bloc de 128 bits (16 octets), la clé fait donc
entre 128, 192 ou 256 bits. De ce fait, l'AES remplace l'algorithme DES
qui utilisait des clés de 56 bits seulement

Chiffrement RSA
• Principe RSA
15

Comme dans l’exemple dessus Le principe du RSA est relativement simple. En


utilisant les deux utilisateurs classiques, Alice et Bob, avec Bob qui veut envoyer
un message à Alice en utilisant le RSA. Alice va générer deux clés : Une clé
publique qu'elle diffusera aux personnes voulantes lui parler. Cette clé sert à
crypter et uniquement crypter les messages, comme nous le verront plu tard on
ne peut pas décrypter les messages avec la clé publique. Une clé privée qu’Alice
gardera bien cacher des autres utilisateurs. Cette clé sert à décrypter tous les
messages qui ont été crypté avec sa clé publique. Alice envoie donc sa clé
publique à Bob pour qu'il puisse lui envoyer en message crypté. Puis Alice
récupère le message crypté de Bob et le décrypter à l'aide de sa clé Privé.

• Génération des Clés.


Maintenant que le principe est compris passons maintenant à l'aspect
mathématique du RSA, comment génère-t-on les clés, comment crypter le
message et comment le décrypter. Soit m le message en clair (non crypté). Soit c
le message encrypté.
Soit (e,n) le couple qui constitue la clé publique.
Soit (d,n) le couple qui constitue la clé privé.
- On choisit deux grands nombres premiers p et q du même ordre de grandeur.
- On calcule n : n= p*q
- On calcul e tel que e n'ai aucun facteur commun avec (p-1)(q-1).
// Pour cela on va utiliser l'algorithme de Bachet - Bézout. (Vous trouverez
les notions après). Après avoir calculé e, on a la clé publique (e,n).
- On calcule d tel que ed mod (p-1)(q-1) = 1
//(l'opération modulo (mod) est décrite dans les Compléments
Mathématiques).
//Après avoir calculer d, on a la clé privé (d,n).
Maintenant que nous avons nos couples de clés (publique et privé) nous pouvons
encrypter nos messages et les décrypter.
16

Pour cela on effectue les opérations suivantes :


Pour encrypter le message : c = m^e mod n
Pour décrypter le message : m = c^d mod n

• Exemple
-On choisit d'illustrer l'algorithme sous forme d'un exemple simple :
-On prend deux nombres premier : p = 47 et q = 71
-On calcul n = p*q = 47 * 71 = 3337 (p-1)(q-1) = 3220 e = 79 (Théorème de
Bézout)
-On calcul d = = 1019 On vérifie que e*d = 80501 = 1 mod 3220
-Prenons un message préalablement transformé en nombre garce par exemple à
la table ASCII m = 6882326879666683
-On découpe m : m1=688 m2=232 m3=687 m4=966 m5=668 m6=3
-On calcul chaque bloc : cx=mx e mod n (Grace a au couple (e,n), clé publique)
-On trouve c1=1570 c2=2756 c3=2091 c4=2276 c5=2423 c6=158 ,Le message
crypter est donc : c = 15702756209122762423158
-On retrouve m en calculant mx=cx d mod n (Grace a au couple (d,n), clé privé)

Notions de mathématiques
• Théorème d'Euclide
Pour bien comprendre et passer au théorème de Bézout faut d'abord comprendre
l’algorithme d’Euclide.
L'algorithme d'Euclide sert à calculer le PGCD (Plus Grand Commun Diviseur)
mais aussi à calculer les différents coefficients dans la formule de Bezout.
Le calcul du PGCD de a et b, deux nombres entiers naturels utilise la division
euclidienne de a par b, tel que a=b*q+r avec r
17

Exemple : Prenons deux nombres : 599 et 215 599 > 215 donc :
599 = 215*2 + 169 , 215 > 169 donc
215 = 169*1 + 46 , 169 > 46 donc
169 = 46*3 +31 , 46 > 31 donc
46 = 31*1 +15 , 31 > 15 donc
31 = 15*2 +1 , q=1 donc PGCD( 599 ; 215 ) = 1
On rappelle que si le PGCD de deux nombres est égale à 1, alors ils sont
premiers entre eux.

• Théorème de Bachet-Bézout
Le théorème prouve l'existence d'une solution a*u + b*v = PGCD(a,b).
Et a et b sont premiers entre eux si et seulement s'il existe deux entiers u et v
tels que a*u + b*v = 1.
Conclusion a*u + b*v = 1 <=> PGCD(a,b)=1.
Pour le RSA on cherche à calculer e tel qu'il n'est aucun facteur commun avec
(p-1)(q-1), c'est à dire que le PGCD est égal à 1 (premier entre eux).
Reprenons l'exemple précédent avec 599 et 215.
On cherche à calculer u et v tel que 599*u + 215*v = 1
(a) 1 = 31 - 2 * 15 (Démontré précédemment avec Euclide)
Remplaçons 15 et 31 dans a par ses équivalents dans les résultats précédents
jusqu’au avoir une solution.
(a) 1= 31 – 2*(46-31) on développe
1=31-2*46+2*31
1=3*(169-46*3)-2*46
1=3*169-11*(215-169)
1=-11*215+14*(599-215*2)
1=14*599-39*215
Vérifiant 14*599=8386 et 39*215=8385.
Donc on a bien 599*u + 215*v = 1 avec u= 14 et v= -39
Pour le RSA, on prendra e=u=14 car v<0.
18

• L'opération Modulo (mod).


L'opération Modulo est une fonction fondamentale dans l'arithmétique
modulaire en mathématique utilisé par exemple dans le RSA également très
utilisé en informatique car une très grande partie des calculs réalisés en
informatique sont des calculs d'arithmétique modulaire.
L’opération Modulo est tout simplement le reste d’une division euclidienne. Par
exemple, en divisant 5 par 2 l’on obtient 5= 2*2+1 ceux qui correspond à 5 =
1[2].
19

Schémas du programme
Créer un schéma pour un programme nous permet de définir facilement les
fonctions à mettre ne place dans notre programme.