Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Oussama rachiq
Sous la tutelle de M.Laanaoui My Driss
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
Développement d’un programme de cryptage
2
Remerciement
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 ,
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.
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 :
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
• 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
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.