Amélioration et
sécurisation du Site web
CenTIC-Mada
Filière: Informatique
Niveau: Master II
C’est avec la force qu’Il m’a donnée que j’ai pu finir ce travail. Alors j’exprime mes
déférences au Seul et Unique Créateur de l’univers ; car sans sa bénédiction, cette étude n’a
pu être accomplie.
– Je remercie aussi toutes les personnes que je n’ai pas pu nommer ici et qui ont
participé de près ou de loin à cette épopée.
Enfin, je dédie ce mémoire à mes parents qui m’ont permis de mener à bien cette tâche. Leur
exemplarité, leur sagesse et leur sérénité m’ont aidé à dépasser les limites de mon possible.
I
Sommaire
Introduction...........................................................................................................................................1
Partie I : Environnement.........................................................................................................................2
- CHAPITRE 1:Centre National de Télé-Enseignement de Madagascar........................................2
1.1 Présentation générale..............................................................................................................2
1.2 Organigramme du CNTEMAD...................................................................................................3
1.3 Les formations du CNTEMAD....................................................................................................4
1.4 Illustration du Cursus du CNTEMAD.........................................................................................5
1.5 Répartition des CRTE dans tout Madagascar............................................................................6
- CHAPITRE 2 : Présentation du CenTIC-Mada.............................................................................7
2.1 Historique................................................................................................................................7
2.2 Activités....................................................................................................................................7
2.3 Recensement des outils informatiques....................................................................................8
2.4 Les applications........................................................................................................................9
2.5 Les équipements d’interconnexion..........................................................................................9
- CHAPITRE 3: Présentation du projet........................................................................................10
3.1 Le site web e-Learning du CenTIC-Mada.................................................................................10
3.2 Le Framework.........................................................................................................................11
3.3 Le SGBDR MySQL....................................................................................................................12
Partie II : Etude du système..................................................................................................................16
- CHAPITRE 1: Présentation du système....................................................................................16
1.1 Analyse de l’existant...............................................................................................................16
1.2 Planning prévisionnel.............................................................................................................16
- CHAPITRE 2: Les technologies utilisés......................................................................................17
2.1 Le langage graphique UML2.............................................................................................17
2.2 Les outils...........................................................................................................................18
2.3 Framework Symfony3.......................................................................................................21
- CHAPITRE 3: Sécurisation de l’application...............................................................................31
3.1 Introduction :..................................................................................................................................31
3.2 La cryptographie :....................................................................................................................32
3.3 Sécurisation d’une application Web :......................................................................................45
3.4 Les risques...............................................................................................................................46
3.5 Les techniques de sécurité......................................................................................................51
Partie III : Réalisation et discussion......................................................................................................56
- CHAPITRE 1: Résultat...............................................................................................................56
- 1.1 Analyse orienté objet et son processus.............................................................................56
- 1.2 Phase de réalisation...........................................................................................................62
- CHAPITRE 2 : Problèmes vécues et solutions apportées..........................................................70
2.1 Le contrainte dans la réalisation du projet.............................................................................70
2.2 Les solutions apportées..........................................................................................................71
- CHAPITRE 3 : Discussion..........................................................................................................71
3.1 Les atouts et faiblesses de l’étude..........................................................................................71
3.2 Les perspectives d’avenir du projet........................................................................................72
Conclusion............................................................................................................................................74
Bibliographie........................................................................................................................................75
AVANT-PROPOS
Ce projet est le résultat d’un stage de recherche d’une période de deux mois effectué
au sein du laboratoire de CENTIC Mada auprès de Monsieur Clermont Tovohisandratana,
enseignant-chercheur et directeur du centre de formation CENTIC-MADA.
Son expérience, ses relations et ses interventions m’ont été fortement utiles pour
recadrer une étude dont le champ est très vaste.
Le choix du sujet est en effet directement issu de l’actualité récente avec l’annonce faite par
cet centre même en mai 2015 à l’issue de la mission « Sécurité et framework ».
Abstract
In conclusion, since we are working with the Symfony Framework. This project gave us the
security. To do this, we analyzed the problem with an oriented object programming, which is
a UML modeling approach. We used PHP development practices to design the professional
quality application using Symfony, a very powerful framework that allowed us to quickly
build this complex tool. We knew how to manage the time for the realization.
Figures et tableaux
Figure 1 : Organigramme du CNTEMAD
Figure8: Les différentes briques nécessaires pour accéder à une application web depuis
Internet
Figure 9: Le risque
JS : JavaScript
MVC : Modèle-Vue-Contrôleur
Pour mener à bien ce travail, nous verrons en premier temps la présentation des deux
cadre d`étude qui sont : le Centre National de Télé-enseignement de Madagascar et
l’Etablissement CenTIC-Mada, ensuite nous devrons également tenter d’analyser les
différentes technologies et outils nécessaires pour ce travail et nous terminerons par la
réalisation du projet grâce aux matériels et méthodes que nous avons illustré.
11
Partie I : Environnement
11
MESupReS, œuvrant dans le domaine de l’enseignement supérieur, qui fut fondé, en 1991,
suivant le décret 92-953 du 04/11/92, afin d’assister et d’accompagner, étroitement,
l’administration des universités publiques malgaches dans leurs taches fondamentales, qui
seraient : d’accueillir, de former, puis de valoriser les parcours (via les diplômes) de tout
citoyen bachelier en quête de cursus universitaire.
Le CNTEMAD est régi sous l’administration d’un conseil composé par des
représentants: ministériels (MESupReS, MinFoP), de la fédération des chambres du
commerce malgache et de l’Enseignement Supérieur malgache (présidents et doyens de
facultés). Son système d’administration se base sur les politiques managériales d’un Directeur
National, assisté par cinq sous-directeurs. Afin d’assurer une totale couverture de la grande île
en formation accréditée, le CNTEMAD est déconcentré en trente-quatre (34) centres
régionaux de télé-enseignement (CRTE). Chaque année, on compte dans les seize mille
(16.000) apprenants inscrits au CNTEMAD. Une des particularités du CNTEMAD, pouvant
confirmer sa notoriété, s’avère être le fait que cet institut dispense des formations accréditées,
à moindre coût, à distance et de qualité.
11
FIGURE 1 : ORGANIGRAMME DU CNTEMAD
11
Les formations qui y sont dispensées se distinguent en deux domaines : les Sciences de
l’Ingénieur et les Sciences de la Société.
Toutes ces mentions comprendront par la suite des ensembles de parcours, constitués
par des groupes d’unité d’enseignement.
Aux termes de leurs cursus, le CNTEMAD délivre à ses apprenants des diplômes de
Licence ou de Master, cautionnés par le Ministère de l’Enseignement Supérieur et de la
Recherche Scientifique (MESupReS) et reconnus par le Ministère de la Fonction Publique
(MinFoP).
11
FIGURE 2 : CURSUS DU CNTEMAD
11
FIGURE 3 : RÉPARTITION DES CRTE DANS TOUT MADAGASCAR
11
CHAPITRE 2 : Présentation du CenTIC-Mada
2.1 Historique
11
suffisamment de travaux pratiques ou encore pour des étudiants ou des travailleurs qui veulent
approfondir leurs connaissances en programmations , réseaux , systèmes ou web.
Par la suite, nous allons détailler les activités proposées par CenTIC-Mada.
2.2 Activités
La première activité principale du CenTIC-Mada est la formation des étudiants qui
n’ont jamais touché de l’ordinateur et de donner de cours d’appui (programmation, réseaux et
systèmes, base de données et génie logiciel) pour des étudiants qui n’ont suffisamment de
pratiques tels que des étudiants en ligne, des travailleurs qui veulent approfondir leurs
connaissances.
La deuxième activité c’est la prestation de service :
Développement d’application
Maintenance des systèmes et réseaux
Mise en réseau du parc informatique
Les différents types de formation de CenTIC-Mada sont :
Programmation (Java, C)
Systèmes et réseaux
Cryptographie
Développement Web (Html, CSS, PHP, JavaScript, Java)
11
2.3 Recensement des outils informatiques
Dans la sous-section suivante nous allons exposer les différentes applications utilisées
au CENTIC-MADA.
Les utilisateurs travaillent en temps réel sur ces applications mentionnées dans le
tableau ci-après.
11
2.5 Les équipements d’interconnexion
Types des terminaux et Modèles Nombres
autres
Switch HP 2 (8 ports chacun)
Imprimante Epson EPL-N 300 1
Tablette NVIDIA® TEGRA ® 3 1
Quad Core CPU 1.30 Hz
Tableau n°5 : Listes des équipements d’interconnexion
11
3.1 Le site web e-Learning du CenTIC-Mada
La présentation de ce projet consiste à l’amélioration du site web e-Learning du
CenTIC-Mada réalisé avec du Framework CodeIgniter, une plateforme sociale Learning pour
le compte des personnels (étudiants) qui souhaitent bénéficier du cours accéléré en
informatique chez CenTIC-Mada. Le E-Learning ou encore formation en ligne est une
technique de formation reposant sur la mise à disposition de contenus pédagogiques via un
support électronique (internet, extranet…). De cette manière, mon sujet de stage consiste à
désigner les outils, les applications et l’ensemble des contenus mis à disposition d’un élève
dans le but d’une formation pédagogique
Le principe étant de pouvoir accéder à des cours depuis un poste distant, les lieux
nécessaires au suivi d’un cursus de formation (classes, bibliothèques, université) n’existent
plus physiquement, ils sont remplacés par le système e-Learning.
11
Le e-Learning est le cœur du système de formation à distance, c’est lui qui fait le lien
entre les apprenants, les cursus, les tuteurs, les ressources et les contenus présent dans le
système.
Le formateur se charge de gérer les apprenants qu’il doit suivre. Ainsi il pourra leur
affecter des ressources à consulter, des cours à étudier, des évaluations afin de se rendre
compte de la bonne assimilation des contenus proposés.
3.2 Le Framework
Pendant longtemps, PHP a été décrié et critiqué par les «développeurs professionnels»
pour son côté rustique et simpliste: un langage pour les «développeurs du dimanche».
Pourtant, en dépit de ces critiques et de cette image maintenant datée, PHP est un langage qui
a su évoluer, se structurer, se professionnaliser. Tant et si bien que c'est aujourd'hui de loin le
langage dominant du Web. À lui seul, PHP motorise près de 70% des sites web dans le
monde. De nombreux sites à très fortes audiences sont motorisés par PHP.
Un Framework est une boîte à outils conçue par au moins un développeur à destination
d'autres développeurs. Contrairement à certains scripts tels que WordPress, Dotclear ou
autres, un Framework n'est pas utilisable tel quel. Il n'est pas conçu pour les utilisateurs
finaux. Le développeur qui se sert d'un Framework a encore du travail à fournir.
11
L'objectif premier d'un Framework est d'améliorer la productivité des développeurs
qui l'utilisent. Souvent organisé en différents composants, un Framework offre la possibilité
au développeur final d'utiliser tel ou tel composant pour lui faciliter le développement et ainsi
de se concentrer sur le plus important.
Il existe dans Symfony un composant qui gère les formulaires HTML: leur affichage,
leur validation, etc. Le développeur qui l'utilise se concentre sur l'essentiel dans son
application: chaque formulaire effectue une action et c'est cette action qui est importante, pas
les formulaires. Étendez ce principe à toute une application ou tout un site Internet et vous
comprenez l'intérêt d'un Framework! Autrement dit, le Framework s'occupe de la forme et
permet au développeur de se concentrer sur le fond.
La façon dont nous nous représentons l’ordinateur est une métaphore du cerveau
humain. Sans le stock d’informations que constitue la mémoire humaine, il nous est
impossible de produire le moindre raisonnement, car ce dernier manipule des structures des
éléments connus qui proviennent de notre mémoire. Stocker et retrouver, voilà les défis de la
base de données. Ces deux éléments centraux se déclinent bien sûr en différentes sous-
fonctions importantes, comme assurer la sécurité ou se protéger des incohérences
3.3.1 Historique
L’histoire des bases de données remonte aux années 1960, avec l’apparition des bases
de données réseaux et des bases de données hiérarchiques. Dans les années 1980, ce sont les
11
bases de données «object-oriented» qui a fait leur apparition. Aujourd’hui, les bases de
données prédominantes sont les SQL, NoSQL et les bases de données Cloud.
Il est aussi possible de classer les bases de données en fonction de leur contenu:
bibliographique, textes, nombres ou images. Toutefois, en informatique, on classe
généralement les bases de données en fonction de leur approche organisationnelle. Il existe de
nombreux types de bases de données: relationnelle, Cloud, NoSQL.
11
d’enregistrements. Des relations sont créées entre types d’enregistrements parents et types
d’enregistrements fils, ce qui forme un arbre hiérarchique. La différence majeure entre ce
modèle et le modèle relationnel que nous connaissons maintenant est la limitation de l’arbre.
Il ne peut y avoir qu’un seul arbre et les relations ne peuvent se dessiner que du parent vers
l’enfant.
3.3.3 MySQL
MySQL est à la fois le nom du SGBD et le nom de la société (qui se nomme en fait
MySQL AB, décrite sur http://www.mysql.com) dont le siège se trouve en Suède à Uppsala
compté une cinquantaine de kilomètres au nord de Stockholm. Selon leurs dires, leur serveur
de données, qui est écrit en C et C++, serait installé de façon opérationnelle sur plus de six
millions de sites. D’un point de vue coût, l’utilisation du SGBD sur des projets importants
(entre 250000€ et 500000€) ferait économiser 90% sur le prix des licences du serveur, 60%
sur les ressources système, 70% sur le prix du matériel, 50% sur les tâches d’administration et
de support.
Par analogie avec les systèmes d’exploitation, depuis 1999, MySQL connaît le succès
de Linux. Téléchargée près d’un million de fois en trois semaines (en octobre 2005), la
version production de MySQL doit sa popularité du fait de son caractère open source, de ses
fonctionnalités de plus en plus riches, de ses performances, de son ouverture à tous les
principaux langages du marché, de son fonctionnement sur les systèmes les plus courants (les
distributions classiques de Linux, Windows, MacOs, BSD, Novell et les dérivés d’Unix) et de
sa facilité d’utilisation pour des applications Web de taille moyenne.
11
Bref, la finalité de cette partie est basé sur la présentation des deux cadres d`étude et la
présentation du thème avec déjà un avant-gout du travail qui va être effectué et développé
dans ce mémoire. Le fonctionnement de ces deux organisations et la démonstration du thème
sont alors connue et qui est du moins surprenant de voir la grandeur des deux cadres.
11
1.1 Analyse de l’existant
Comme dans tout projet, avant de commencer la réalisation et avant même la
conception, on se doit d’analyser l’existant.
L’objectif du centre est de créer un Site Web E-Learning pour satisfaire les étudiants
qui ont besoin des formations à distance.
11
CHAPITRE 2: Les technologies utilisées
11
UML est basé sur l’approche par objets. Cette dernière voit le jour bien avant UML
dans le domaine des langages de programmation. Simula, le tout premier langage à objets est
né dans les années 1960. Ce langage connaît de nombreux successeurs : Smalltalk, C++, Java
ou plus récemment C#.
La version 1.0 d’UML est publiée en 1997. Le travail d’évolution de la notation est
devenu trop important pour trois personnes. Les trois amigos demandent l’aide de l’Object
Management Group (OMG), un consortium de plus de 800 sociétés et universités travaillant
dans le domaine des technologies de l’objet. La notation UML est adoptée par l’OMG en
novembre 1997 dans sa version 1.1. L’OMG crée en son sein une Task Force chargée de
l’évolution d’UML
Depuis cette époque, cette Task Force a mis à jour UML plusieurs fois. En mars 2003,
la version 1.5 voit le jour. Cette dernière offre la possibilité de décrire des actions grâce à une
extension d’UML appelée Action Semantics ou sémantique des actions dont l’étude dépasse
le cadre de cet ouvrage.
La version d’UML dont traite cet ouvrage est la version 2.1 qui est désormais sous sa
forme définitive. Elle constitue la première évolution majeure depuis la sortie d’UML en
1997. De nouveaux diagrammes ont été ajoutés et les diagrammes existants ont été enrichis de
nouvelles constructions.
11
Cas d’utilisation
Statiques : Classes
Dynamiques : Etats, Collaborations, Séquences, Activités
Réalisation : Composants, Déploiements
11
2.2.2 Sublimetext
En 2007, son créateur, Jon Skinner, quitta son travail chez Google pour
poursuivre un de ses rêves : créer un meilleur éditeur de texte. Il se donna trois
principes pour ce logiciel:
Bootstrap est une collection d'outils utile à la création du design (graphisme, animation
et interactions avec la page dans le navigateur ... etc. ...) de sites et d'applications web. C'est
un ensemble qui contient des codes HTML et CSS, des formulaires, boutons, outils de
navigation et autres éléments interactifs, ainsi que des extensions JavaScript en option. C'est
l'un des projets les plus populaires sur la plate-forme de gestion de développement Git Hub.
Bootstrap est compatible avec les dernières versions des navigateurs majeurs, mais
peut fonctionner de manière dégradée sur des navigateurs plus anciens.
Bootstrap fournit une feuille de style CSS qui contient des définitions de base pour
tous les composants HTML, ce qui permet de disposer d'une apparence uniforme pour les
11
textes, tableaux et les éléments de formulaires. Il fournit également des éléments graphiques
au format standardisé : boutons, libellés, icônes, miniatures, barres de progression…
Ce répertoire contient tout ce qui concerne le site Internet... sauf son code source. Ce
sont des fichiers qui concernent l'intégralité du site, contrairement aux fichiers de code source
qui sont découpés par fonctionnalités. Dans Symfony, un projet de site Internet est une
application, simple question de vocabulaire. Le répertoire /app est donc le raccourci pour «
application ».
Le répertoire /bin
Le répertoire /tests
Ce répertoire contient tous les tests de l’application. Tester une application est
indispensable, mais la manière d'écrire les tests ne dépend pas du Framework qu’on utilise.
Le répertoire /var
Il contient tout ce que Symfony va écrire durant son activité : les logs, le cache et
d'autres fichiers nécessaires à son bon fonctionnement.
Le répertoire /vendor
Il contient toutes les bibliothèques externes de l’application. Une bibliothèque est une
sorte de boîte noire qui remplit une fonction bien précise et dont on peut se servir dans le
code. Par exemple, la bibliothèque SwiftMailer permet d'envoyer des e-mails. On ne sait pas
comment elle fonctionne (principe de la boîte noire), mais on sait comment s'en servir : on
pourra donc envoyer des e-mails très facilement, juste en apprenant rapidement à utiliser la
bibliothèque.
11
Le répertoire /web
Il contient tous les fichiers destinés des visiteurs : images, fichiers CSS et JavaScript,
etc. Il contient également le contrôleur frontal (app .PHP).
11
les autres composants : les modèles et les vues. Concrètement, un contrôleur va
récupérer, par exemple, les informations sur l'utilisateur courant, vérifier qu'il a le
droit de modifier tel article, récupérer cet article et demander la page du formulaire
d'édition de l'article.
Le Modèle (ou Model) gère les données et son contenu. On reprend l'exemple de
l'article. Lorsqu’on dit « le contrôleur récupère l'article », il va en fait faire appel au
modèle Article et lui dire : « donne-moi l'article portant l'id 5 ». C'est le modèle qui
sait comment récupérer cet article, généralement via une requête au serveur SQL, mais
ce pourrait être depuis un fichier texte ou ce que vous voulez. Au final, il permet au
contrôleur de manipuler les articles, mais sans savoir comment les articles sont
stockés, gérés, etc. C'est une couche d'abstraction
La Vue (ou View) sert à afficher les pages. On reprend encore l'exemple de l'article.
Ce n'est pas le contrôleur qui affiche le formulaire ; il ne fait qu'appeler la bonne vue.
Si nous avons une vue Formulaire, les balises HTML du formulaire d'édition de
l'article y sont et le contrôleur ne fait qu'afficher cette vue sans savoir vraiment ce qu'il
y a dedans. En pratique, c'est le designer d'un projet qui travaille sur les vues. Séparer
vues et contrôleurs permet aux designers et développeurs PHP de collaborer sans
empiéter sur le travail des autres.
2.3.4 Parcours d'une requête dans Symfony
11
On trouvera sur ce schéma les points où on interviendra
11
FIGURE7 : PARCOURS COMPLET D'UNE REQUÊTE DANS SYMFONY
HyperText Preprocessor, plus connu sous son sigle PHP, est un langage de
programmation libre, principalement utilisé pour produire des pages Web dynamiques
via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel
langage interprété de façon locale. PHP est un langage impératif orienté objet.
Ainsi, pour rendre dynamique une application web, PHP est indispensable. De
plus, Symfony (notre outil principal) est fait généralement en PHP.
11
SQL (sigle de Structured Query Language, en français langage de requête
structurée) est un langage informatique normalisé servant à exploiter des bases de
données relationnelles. La partie langage de manipulation des données de SQL permet
de rechercher, d'ajouter, de modifier ou de supprimer des données dans les bases de
données relationnelles.
Créé en 1974, normalisé depuis 1986, le langage est reconnu par la grande
majorité des systèmes de gestion de bases de données relationnelles (abrégé SGBDR)
du marché. SQL fait partie de la même famille que les langages SEQUEL (dont il est
le descendant), QUEL ou QBE (Zloof).
JavaScript a été créé en 1995 par Brendan Eich. Il a été standardisé sous le nom
d'ECMAScript en juin 1997 par Ecma International dans le standard ECMA-262. Le
standard ECMA-262 en est actuellement à sa 7e édition. JavaScript n'est depuis qu'une
implémentation d'ECMAScript, celle mise en œuvre par la fondation Mozilla.
11
L'implémentation d'ECMAScript par Microsoft se nomme JScript, tandis que celle
d'Adobe Systems se nomme ActionScript.
- JQuery
C’est une bibliothèque JavaScript libre créée pour faciliter l'écriture de scripts
côté client dans le code HTML des pages web. La première version est lancée en
janvier 2006 par John Resig.
11
couramment utilisé dans la conception de sites web et bien pris en charge par les
navigateurs web dans les années 2000.
Le concept de feuille de style est présent dès l'origine du World Wide Web : le
premier navigateur web (« World Wide Web », renommé par la suite « Nexus »)
permet de mettre en forme les documents à l'aide de ce qui serait aujourd'hui considéré
comme une « feuille de style utilisateur ». De même, les navigateurs Viola en 1992 et
Harmonyen 1993 recourent à un mécanisme similaire permettant de déterminer le
rendu des polices de caractères, des couleurs ou de l'alignement du texte.
Les templates, ou vues, sont très intéressants. Leur objectif est de séparer le
code PHP du code HTML. Ainsi, lorsque vous faites du PHP, vous n'avez pas 100
balises HTML qui gênent la lecture de votre code PHP. De même, lorsque votre
designer fait du HTML, il n'a pas à subir votre code barbare PHP auquel il ne
comprend rien.
11
La syntaxe est plus concise et plus claire. Rappelez-vous, pour afficher une
variable, {{ mavar }} suffit, alors qu'en PHP il faudrait faire <?php echo $mavar; ?
>.
Il y a quelques fonctionnalités en plus, comme l'héritage de templates. Cela serait
bien entendu possible en PHP, mais il faudrait coder soi-même le système et cela
ne serait pas aussi esthétique
Il sécurise les variables automatiquement : plus besoin de se soucier de
htmlentities(), addslashes(), etc ….
11
CHAPITRE 3: Sécurisation de l’application
3.1 Introduction :
Dès que les hommes apprirent à communiquer, ils durent trouver des moyens assurant la
confidentialité d’une partie de leurs communications, ce qui nous amène à savoir que la
fonction première de la cryptographie est de cacher le sens d’un message à tous ceux qui ne
11
sont pas autorisés à le connaitre. Donc, on peut dire que l’origine de la cryptographie remonte
sans doute aux origines de l’homme.
En effet, le mot cryptographie est un terme générique désignant l’ensemble des techniques
permettant de chiffrer des messages, c’est-à-dire de les rendre inintelligibles sans une action
spécifique. En dépit de l’évolution des moyens de communication depuis l’antiquité, il a
toujours été difficile de garantir la sécurité du canal par lequel transite un message. Un
cavalier transportant un rapport sur la position d’une armée peut être intercepté par des
éclaireurs ennemis ; un employé du télégraphe transmettant des consignes d’investissements
boursiers peut être à la solde d’un actionnaire concurrent ; un ordre militaire transmis par les
ondes radios peut être capté par n’importe quel récepteur réglé sur la bonne fréquence ; un
courrier qui transite sur Internet peut être lu par n’importe quel ordinateur sur la chaîne reliant
l’expéditeur au destinataire. Aussi, la problématique d’établir des communications sécurisées
en utilisant un médium non sécurisé a toujours été d’importance en vue d’applications
militaires, financières, ou simplement du respect de la vie privée.
Un cryptosystème fonctionne de la façon suivante :
3.2La cryptographie :
3.2.1 Quelques définitions [10]
11
dontl’objet est l’´etude des méthodes permettant d’assurer les services d’intégrité,
d’authenticité et de confidentialité dans les systèmes d’information et de communication.
La cryptographie traditionnelle est l’étude des méthodes consistant à transmettre des données
de manière confidentielle. Afin de protéger un message, on lui applique une transformation
qui le rend incompréhensible ; c’est ce qu’on appelle le chiffrement, qui, à partir d’un texte
en clair, donne un texte chiffré ou cryptogramme. Inversement, le déchiffrement est
l’action qui permet de reconstruire le texte en clair à partir du texte chiffré. Dans la
cryptographie moderne, les transformations en question sont des fonctions mathématiques,
appelés algorithmescryptographiques, qui dépendent d’un paramètre appelé clef.
On appelle texte en clair, les données lisibles et compréhensibles sans intervention
spécifique. Le cryptage ou chiffrement est la méthode permettant de dissimuler du texte en
clair enmasquant son contenu. Cela consiste à transformer un texte normal en un charabia
inintelligible appelé texte chiffré. Cette opération permet de s’assurer que seules les personnes
auxquelles les informations sont destinées pourront y accéder. Le processus inverse de
transformation du texte chiffré vers le texte d’origine est appelé le décryptage.
Coder : transformer un texte, une information en remplaçant les mots dans une écriture faite
de signesprédéfinis.
Un cryptosystème est un système matériel ou logiciel effectuant de la cryptographie, il peut
contenir un ou plusieurs algorithmes de chiffrement.
Clef: on appelle clé une valeur utilisée dans un algorithme de cryptographie, afin de chiffrer
un texte. Les clés doivent être stockées de manière sécurisée et demanière à ce que seul leur
propriétaire soit en mesure de les atteindre et de les utiliser.
La cryptographie est donc traditionnellement utilisée pour dissimuler des messages aux yeux
de certaines personnes. Cet intérêt est aujourd’hui d’autant plus grand que les ordinateurs et le
réseau Internet se sont considérablement développés. Elle est désormais indispensable pour
préserver la sécurité et la confidentialité des données, mais aussi leur intégrité et leur
authenticité.
Un service d’intégrité garantit que le contenu d’une communication ou d’un fichier n’a pas
été modifié. Par exemple, on peut souhaiter à vérifier qu’aucun changement du contenu d’un
disque dur n’a eu lieu ; des produits commerciaux, mettant en jeu des méthodes
cryptologiques sont disponibles (voir notamment) à cet effet.
Un service d’authenticité garantit l’identité d’une entité donnée ou l’origine d’une
communicationou d’un fichier. Lorsqu’il s’agit d’un fichier et que l’entité qui l’a créé est la
seule à avoir pu apporter la garantie d’authenticité, en évidence on parle de non-répudiation.
11
Le service denon-répudiation est réalisé par une signature numérique. Une définition précise
sera donneé plus loin ; on s’intéressera ici sur la loi du 20 mars 2000 qui a fait passer ce
conceptdans la vie sociale.
Un service de confidentialité garantit que le contenu d’une communication ou d’un
fichiern’est pas accessible aux tiers. Ainsi, la cryptologiese partage en deux sous-disciplines
également importantes : la cryptographie qui fait l’objet de proposer des méthodes pour
assurer les services définis plus hautet la cryptanalyse qui recherche des failles dans les
mécanismes ainsi proposés.
Recherche exhaustive de la clef,cette technique consiste tout simplement à essayer toutes les
clefs possibles jusqu'à ce qu'on trouve la bonne. Pour les chiffres à alphabet décalé, comme le
chiffre de César, cette recherche est envisageable puisqu'il y a peu de possibilités.
3.2.2 Quelques repères historiques [12] [11] [10]
– La cryptographie classique
Les premiers algorithmes utilisés pour le chiffrement d'une information étaient assez
rudimentaires dans leur ensemble et ils sont trop simples pour offrir la moindre sécurité. Pour
cacher la substance d’un texte, ils utilisent la substitution de caractères par d'autres ou les
11
transposer dans des ordres différents. De ce fait, la confidentialité de l'algorithme de
chiffrement était donc la pierre angulaire de ce système pour éviter un décryptage rapide. On
appelle généralement cette classe de méthodes : le chiffrement à usage restreint.
Exemple : chiffrement par substitution, chiffrement par transposition
– La cryptographie moderne
La cryptographie entre dans son ère moderne avec l'utilisation intensive des ordinateurs à
partir des années septante. Vue la nécessité croissante de sécuriser les données dans tous les
domaines (économique, industriel, informatique,...etc.) …. La cryptographie est appelée à
devenir une technique de plus en plus fondamentale pour la protection des informations
possédées et/ou échangées par des individus ou des organisations. Dans la cryptographie
moderne, on utilise aussi des problèmes mathématiques que l'on ne sait pas (encore) résoudre,
par exemple factoriser des grands nombres (chiffre RSA).
La cryptographie moderne se scinde en deux parties nettement différenciées :
La cryptographie à clef secrète, ou encore appelée symétrique,
La cryptographie à clef publique, dite également asymétrique.
– Cryptographie quantique
11
La cryptographie moderne est principalement liée aux services de confidentialité. Elle réalise
sur les données m une transformation constituée par une formule C = Ek(m), par
l’intermédiaire d’un algorithme de chiffrement E. Cet algorithme prend en entrée le message
clair m et un paramètre secret k, qu’on appelle la clé. Le message m varie dans un ensemble
M et la clé k dans un ensemble K. La restauration du texte clair à partir du chiffré ou
cryptogramme C se fait par un algorithme de déchiffrement Dk, prenant en entrée le chiffré et
la même clé.
On doit avoir la formule suivante :Dk(Ek(m)) = m. En général, le chiffré prend sa valeur dans
le même espaceM et l’on a aussi Ek(Dk(c)) = c, c’est `a dire que les algorithmes Ek et
Dkréalisent unepermutation de M.
La distinction entre l’algorithme et la clé s’est établie il y a fort longtemps, notamment dans
les travaux du cryptologue Auguste Kerckhoffs. Ce dernier a en effet su reconnaitre que
l’algorithme de chiffrement n’exigeait pas le secret, dans la mesure auquelle il risquait de
toute façon de passer aux mains de l’ennemi. La cryptologie moderne recommande même des
méthodes de chiffrement totalement explicites de manière à ce qu’elles soient évaluées et
validées par un débat ouvert entre experts. Du coup, une convention secrète entre entités qui
souhaitent communiquer de façon chiffrée se limite à l’échange d’une clé k.
o Décryptage [10]
L’opération qui consiste à calculer le clair m à partir du chiffré C = Ek(m), mais sans la
connaissance de la clé k est appelée décryptement. La confidentialité est assurée si cette
opération est impossible. On distingue divers scénarios possibles d’attaque
– les attaques à chiffré seul, où l’adversaire dispose d’un certain nombre de
chiffrésEk(mi) ;
– les attaques à clair connu, où l’adversaire dispose d’un certain nombre de
chiffrésEk(mi) et des clairs correspondants mi ;
– les attaques à clair choisi, où l’adversaire dispose d’un certain nombre de
chiffrésEk(mi) correspondant à des clairs de son choix mi ; si de plus chaque message mi est
défini en fonction des chiffrés obtenus antérieurement, on parle d’attaque à clair choisi
adaptative.
Le lecteur pourra définir d’autres variantes, comme l’attaque à chiffré choisi. Le but de
l’attaque est la découverte de la clé ou le décryptement d’un chiffré C, correspondant à un
clair dont on ne dispose pas. Les attaques à chiffré seul sont les plus difficiles, néanmoins
l’adversaire dispose en général d’informations statistiques sur le clair.
11
o Type de cryptosystème actuel [14] [15]
La cryptographie à clefs privées, appelée aussi cryptographie symétrique est utilisée depuis
déjà plusieurs siècles. C’est l’approche la plus authentique du chiffrement de données et
mathématiquement la moins problématique. La clé de chiffrement peut être calculée à partir
de la clé de déchiffrement, et le destinataire doit se mettre d’accord préalablement sur une clé
qui doit être gardée secrète car la sécurité d’un tel algorithme repose sur cette clé.
Le chiffrement à clé publique et le chiffrement symétrique présentent chacun des avantages et
des inconvénients. Par exemple, le temps de chiffrement et déchiffrement de la cryptographie
à clé publique est supérieur à celui de la cryptographie symétrique. Un des problèmes
principaux du chiffrement symétrique est l’échange préalable de la clé secrète : c’est la
transmission de cette clé entre les intervenants qui représente la faiblesse inhérente au
système. S’ils se trouvent à des emplacements géographiques différents, ils devront faire
confiance à une tierce personne ou un moyen de communication sécurisé. Toute personne
interceptant la clé lors d’un transfert peut ensuite lire, modifier et falsifier toutes les
informations cryptées ou authentifiées avec cette clé.
Le chiffrement à clé publique peut être préféré pour générer de petites séquences comme des
signatures ou des clés secrètes pour le chiffrement symétrique. Le chiffrement symétrique
peut être préférer pour chiffrer des grandes quantités de données.
La taille des clés utilisées varie selon le besoin. Elles font en standard 64 ou 128 bits.
11
FIGURE 10 : PRINCIPE DU CHIFFREMENT À CLÉ SECRÈTE
Dans un cryptosystème par flots, le cryptage des messages se fait de caractère à caractère ou
bit à bit au moyen de substitutions de type César générées aléatoirement : la taille de la clef
est donc égale à la taille du message.
La fonction de chiffrement est la même pour chaque bit, mais elle dépend d’une cléK k qui
varie dans le temps, dite dynamique. La génération de la clé dynamique dépend d’une clé
secrète dite statique.
Dans un schéma de chiffrement par flot, lorsqu’Alice et Bob veulent communiquer de façon
sécurisée, ils doivent se rencontrer préalablement et secrètement pour se mettre d’accord sur
la clé secrète qu’ils partagent et qu’ils vont employer lors de la génération de Kk. Quelques
temps plus tard, quand Alice souhaite envoyer un message mkà Bob, elle transforme le
message mktexte chiffré ck= e (Kk, mk), où elle représente une fonction de chiffrement. Elle
envoie le texte chiffré ckà Bob par l’intermédiaire d’un canal qui n’est pas forcement sécurisé.
De son côté, Bob reçoit le texte chiffré ck et calcule mk= d (Kk, ck) où d est une fonction de
déchiffrement. Ainsi, Bob récupère le message initial mk. Ce principe est illustré sur la
figure3.4suivante :
11
FIGURE 11 : CHIFFREMENT PAR FLOT
Un exemple de chiffrement par flot, proposé par Vernam en 1917, est le masque jetable
(« one-time pad »), aussi appelé chiffre de Vernam. Dans ce schéma, le texte chiffré c k est le
résultat d’une combinaison du texte clair mk avec la clé Kk, de même taille, par un OU
exclusif (XOR) :
ck=mkKk (3.01)
A partir du texte chiffré, le texte clair peut être retrouvé par l’opération inverse :
mk= ckKk (3.02)
Ces trois conditions font du chiffrement de Vernam une méthode difficile à utiliser en
pratique.
Dans le chiffrement par flot, il existe deux manières différentes de synchroniser les
générateurs de clé afin de récupérer le message original. La première est appelée chiffrement
par flot synchrone et la seconde est appelée chiffrement par flot autosynchrone.
11
Dans un schéma de chiffrement par flot synchrone, l’émetteur est donné par :
K k =f θ ( K k−1)
{Ck =e (K k , mk )
(3.03)
Où f θ est une fonction, la clé statique, Kk la clé dynamique, mkle texte clair et Ck le texte
chiffré. La clé dynamique Kk est générée par une dynamique interne f θ qui ne dépend ni du
texte clair mk, ni du texte chiffré Ck. Le récepteur est donné par :
K k =f θ^ ( K
^ ^ k−1 )
{m
^ k =d ( K^ k , C k)
(3.04)
La récupération du texte clair nécessite une synchronisation des séquences des clés
dynamiques à l’émission et à la réception. La fonction de chiffrement d est telle que m
^ k = mk si
^
K k = Kk. Le flot de clés étant issus de récurrences autonomes, les générateurs de clés doivent
être initialisés de part et d’autre de façon identique. La clé statique représente la condition
initiale K0. Si, pour une raison quelconque la synchronisation est perdue durant la
transmission, l’émetteur et le récepteur doivent être réinitialisés à la même valeur pour
resynchroniser leur transmission.
Dans un schéma de déchiffrement par flot autosynchrone, l’émetteur est donné par :
¿ (3.05)
11
Où fest une fonction paramétrée par la clé statique, qui génère le flot de clés Kk. A l’inverse
du chiffrement par flot synchrone, Kk dépend seulement des valeurs passées du texte chiffré
Ck. Le récepteur est donné par :
K k =f θ^ ( K k−1 , … , K k− j )
^
{ m
^ k =d ( ^ K k , Ck )
(3.06)
Si un symbole du texte chiffré est perdu ou est erroné, les j clés Kk suivantes seront calculées
de façon erronée par le récepteur, après quoi les clés suivantes ^
K k seront à nouveau correctes.
Comme pour le chiffrement par flot synchrone, la récupération du texte clair nécessite la
synchronisation des séquences des clés dynamiques à l’émission et à la réception, et la
fonction de déchiffrement telle que m
^ k = mksi ^
K k = Kk. A l’inverse du chiffrement par flot
synchrone, les séquences des clés dynamiques se synchronisent automatiquement et est un
paramètre de la dynamique f.
11
Dans un schéma de chiffrement par blocs, le message est divisé en blocs de bits, de longueur
fixe d’où chaque bloc est chiffré l’un après l’autre. Le chiffrement peut être effectué par
substitutions (les bits d’un bloc sont substitués avec d’autres bits) et par transpositions (les
bits d’un bloc sont permutés entre eux). La substitution permet d’ajouter de la confusion,
c'est-à-dire de rendre la relation entre le message et le texte chiffré aussi complexe que
possible. La transposition permet d’ajouter de la diffusion, c'est-à-dire de réarranger les bits
du message afin d’éviter que toute redondance dans le message ne se retrouve dans le texte
chiffré.
Le principe général d’un chiffrement itératif par blocs est le suivant : pour chaque bloc, on
itère r fois une fonction interne F ; à chacun des r tours, la fonction F est paramétrée par une
clef Ki (1≤ i ≤ r ), et la fonction du tour i peut être notée F Ki . Comme on veut que le
chiffrement soit inversible (pour pouvoir déchiffrer), il faut que les fonctions F Ki soient
bijectives.
– DES(Data EncryptionStandard)
Le système de chiffrement par blocs le plus utilisé jusqu’à l’an 2000 est le DES. Il
fait partie de la classe plus générale des chiffrements de Feistel .
Les grandes lignes de l'algorithme sont les suivantes :
Fractionnement du texte en blocs de 64 bits (8 octets) ;
Permutation initiale des blocs ;
Découpage des blocs en deux parties : gauche et droite ;
Etapes de permutation et de substitution répétées 16 fois (appelées rondes) ;
Recollement des parties gauches et des parties droites puis permutation initiale inverse.
11
Pourtant, les longueurs des clés ne permettent pas de résister à des attaques de plus en plus
performantes grâce au progrès des ordinateurs. Pour pallier ce problème, le schéma DES est
amélioré et devient le schéma AES (Advanced EncryptionStandard), en 1997.
En 1997, le NIST (National Institute of Standards and Technology) américain lance un appel
d'offre afin de trouver un remplaçant au DES. 15 algorithmes sont alors étudiés, et en fonction
des différents critères, en 2000, l'algorithme belge Rijndaël (à prononcer raindal), proposé par
Joan Daemen et Vincent Rijmen, est retenu. Il faut savoir que chacun des modèles a été testé
sur plusieurs types de surface et Rijndaël n'a été le premier sur aucune d'elle, mais il a montré
qu'il gardait à chaque fois des performances très intéressantes. Il a donc été choisi autant pour
sonadaptabilité que pour ses performances.
Du fait de son origine, l'AES est un standard. Il est donc libre d'utilisation, sans
restrictiond'usage ni brevet.
o Cryptographie à clefs publiques [4]
Tous les algorithmes évoqués jusqu’à présent sont symétriques en ce sens que la même clef
est utilisée pour le chiffrement et le déchiffrement. Le problème essentiel de la cryptographie
symétrique est la distribution des clefs : pour que n personnes puissent communiquer de
manière confidentielle il faut n (n-1)/2 clefs. Donc, c’est faire face à ces problèmes liés à la
distribution des clés que ce nouveau cryptosystème à clé publique aussi appelée cryptographie
asymétriquea été mis au point.
L’idée de base des cryptosystèmes à clefs publiques a été proposée dans un article
fondamental de Diffie et Hellman en 1976. Le principe fondamental est d’utiliser des clefs de
chiffrement et déchiffrement différentes, non reconstructibles l’une à partir de l’autre :
Une clef publique pour le chiffrement
Une clef secrète pour le déchiffrement
Ce système est basé sur une fonction à sens unique, soit une fonction facile à calculer dans un
sens mais très difficile à inverser sans la clef privée.
Pour faire une explication imagée, la clef publique joue le rôle d’un cadenas. Imaginons que
seul Bob possède la clef (clef secrète), Alice enferme son message dans une boîte à l’aide du
cadenas et l’envoie à Bob. Personne n’est en mesure de lire le message puisque seul Bob
possède la clef du cadenas.
11
Lorsqu’Alice, l’Emetteur, et Bob le destinataire, veulent communiquer de façon sécurisée,
Bob choisit une paire de clés de chiffrement et de déchiffrement (K e, Kd). Il envoie la clé
publique Ke à Alice, par l’intermédiaire d’un canal qui n’est pas forcement sécurisé. Alice
transforme le message m en texte chiffré C= e (Ke, m) où e représente une fonction de
chiffrement, et envoie ce texte chiffré c à Bob. De son côté, Bob reçoit le texte chiffré c et
calcule m= d(Kd, c) où d est une fonction de déchiffrement et Kd est la clé privée connue
uniquement de Bob.
Ainsi, Bob récupère le message initiale m. Ce schéma est illustré sur la figure 3.7 ci-dessous :
Il existe plusieurs exemples de cette cryptographie à clé publique, par exemple l’algorithme
de Diffie-Hellman, RSA, Elgamal 6. Pourtant les deux algorithmes les plus connus et les plus
sûrs restent : RSA et Elgamal 6.
o Cryptographie hybrides
Il existe aussi des systèmes de protection mélangeant les deux techniques pour en garder leurs
avantages, l'idée est d'utiliser la rapidité de l'algorithme symétrique, et la sécurité de
l'asymétrique. On les appelle les systèmes hybrides. L’exemple le plus probant est PGP mais
on peut aussi citerGnuPG et SSL.
Lorsqu’un cryptosystème est synthétisé, il faut s’assurer qu’il est effectivement robuste face à
des attaques pirates. Cette étape de validation ou de vérification est appelée la cryptanalyse.
Elle consiste à tester les cryptosystèmes afin de déceler leurs éventuelles faiblesses. La
cryptanalyse des algorithmes est ainsi essentielle pour trouver les failles des algorithmes.
Faire la cryptanalyse d'un algorithme de chiffrement, c'est étudier sa sécurité en tentant de
11
casser les fonctions cryptographiques qui le composent à l'aide d'attaques.Le processus par
lequel on tente de comprendre un message en particulier est appelé une attaque.
Il est donc avantageux pour un algorithme d'être complètement publié (code source) pour
permettre aux cryptographes d’étudier sa sécurité.
Il existe plusieurs familles d’attaques cryptanalytiques, les plus connues étant l’analyse
fréquentielle, la cryptanalyse différentielle et la cryptanalyse linéaire.
11
3.3Sécurisation d’une application Web :
Sécuriser une application ou un site web revient à mettre en place les mécanismes qui
permettront aux utilisateurs de lui accorder une certaine confiance quant à sa capacité à
assurer un certain degré de confidentialité, de disponibilité ou d’intégrité.
La sécurité d’une application web ne repose pas uniquement sur le code, mais est
dépendante de plusieurs autres facteurs, comme le serveur, l’architecture du réseau, etc.
11
Quant au modèle (et notamment sa composante d’accès à la base de données), il
s’appuie également sur un objet unique, qui garantira la sécurité des informations.
3.4Les risques
Le risque est une notion assez peu évidente à appréhender. Il peut s’exprimer comme
la conjonction entre une possibilité d’événement, une cible et un impact.
Il est ainsi possible de représenter le risque par ces quatre facteurs : la cause ou le
scénario, la probabilité d’occurrence, la cible, et l’impact
Une fois le risque identifié, plusieurs stratégies sont possibles pour éviter qu’il ne se
produise, ou pour en réduire les effets. Pour reprendre notre exemple de la conduite en
montagne, plusieurs pistes sont envisageables. La première serait d’éviter de conduire en
montagne, en utilisant des routes plus sûres, mais qui rallongeraient peut-être le trajet. Il est
également possible d’équiper la voiture de pneus adaptés (pneus-neige en hiver), et s’assurer
que les passagers aient attachés leur ceinture. Enfin, une conduite prudente, en maîtrisant la
vitesse, sera un gage de sécurité.
11
Dans la méthode EBIOS, quatre stratégies sont proposées pour traiter un risque :
l’évitement, sa réduction, le transfert ou son acceptation
L’évitement consiste à choisir une option qui le rendra improbable, par exemple
prendre l’autoroute ou annuler le voyage. En informatique, cela pourra être de décider de ne
pas informatiser une procédure, si les risques qu’elle fait courir à l’entreprise sont
disproportionnés par rapport aux avantages attendus.
Enfin, l’acceptation du risque, en l’état, peut être un choix pertinent. Par exemple, un
logiciel utilisé pour gérer la réservation des salles de réunion d’une entreprise peut très bien
être peu protégé : si les informations sont perdues ou corrompues, le risque de désorganisation
peut être limité. Mais ce choix ne doit être pris qu’en tout état de cause, et surtout pas par
défaut : en cas de problème, l’absence d’une décision serait reprochée à ceux qui auraient mis
en œuvre le traitement
11
3.4.2 Déterminer la cible
Reprenons le schéma présentant l’architecture technique qui est souvent mise en place
quand une application web est déployée
Nous avons représenté deux cibles potentielles. Celle de gauche concerne plutôt les
aspects liés au réseau, au fonctionnement des serveurs, aux mécanismes de protection contre
les intrusions. Elle pourrait être prise en compte lors de l’établissement d’un plan de
continuité d’activité, ou lors de l’étude des risques liés à l’infrastructure du réseau.
La seconde, celle de droite, correspond à notre projet d’application web. Elle intègre
les parties logicielles correspondant au serveur web, à l’application elle-même, et à la base de
données.
11
En général, l’analyse de risque pour un projet de développement informatique se
circonscrit au serveur web, tout au moins en ce qui concerne l’implémentation de
l’application dans celui-ci, le programme lui-même, et les relations qu’il peut avoir avec la ou
les bases de données.
C’est probablement la partie la plus compliquée de l’étude du risque (nous verrons que
l’analyse des scénarios peut être transférée).
Le besoin de sécurité est déterminé, en général, selon trois critères, appelés également
CID (les initiales de chacun) : la confidentialité, l’intégrité et la disponibilité. Les critères sont
notés en général de 1 à 4, le niveau 1 correspond au besoin le plus faible, et le 4 au besoin
maximal.
Ces grilles de critère sont élaborées par les entreprises, qui les adaptent à leur
environnement et leurs besoins réels. Il existe bien sûr des grilles d’exemples, dont celles qui
sont présentées ici et qui ont été proposées par l’ANSSI.
Lors de l’établissement d’un plan de continuité d’activité, il est assez facile de passer
en revue l’ensemble des causes possibles : risque humain, panne électrique ou du réseau,
risque technologique (établissements classés, c’est-à-dire connus pour leur dangerosité
potentielle), risque naturel (inondation, tremblement de terre, incendie, etc.), ou autre.
Pour ce qui concerne les applications informatiques, l’exercice est beaucoup plus
difficile. S’il est possible d’envisager assez facilement les pannes des machines (mais qui sont
intégrées en principe dans le plan de continuité d’activité), les scénarios d’attaque strictement
informatiques sont beaucoup plus complexes à recenser.
11
programmes, mais la manière de les concevoir reste un travail intellectuel, basé fortement sur
l’imagination. D’ailleurs, sans contraintes particulières, pour traiter le même sujet, deux
développeurs créeront des programmes significativement différents, tant dans leur approche
ergonomique que dans leur conception interne.
Les attaques informatiques sont, elles aussi, des inventions de l’esprit, qui vont
chercher à trouver des failles auxquelles personne n’aura pensé initialement. Comme toute
connaissance, elle se complexé au fil du temps : si les attaques simples continuent d’exister
(les injections de code SQL restent les plus fréquentes, en raison de leur facilité de mise en
œuvre), des scénarios beaucoup plus sophistiqués voient le jour. Une personne seule, voire
une entreprise, aura énormément de mal à se tenir au courant ou imaginer toutes les attaques
possibles et préparer des contre-mesures adéquates.
Il est probablement plus simple, moins coûteux et plus sûr de s’appuyer sur des
référentiels déjà existants.
Il existe de nombreuses sociétés commerciales qui ont fait leur métier de la recherche
des vulnérabilités. Au niveau des gouvernements, des CERT (Computer Emer-
gencyResponse Teams [WIK 16a]) ont été mis en place, et informent régulièrement des
alertes de sécurité détectées. En France, le CERT principal est assuré par l’ANSSI, mais des
CERT dédiés, par exemple pour le réseau de la recherche française, existent également.
Les CERT sont utiles pour connaître les vulnérabilités détectées au fil de l’eau, mais
ne permettent que rarement d’avoir une vue d’ensemble.
Il existe également des recueils d’exigences qui vont faciliter le travail des
développeurs. L’ANSSI a publié un document présentant des recommandations pour la
sécurisation des sites web. S’il contient beaucoup d’informations concernant l’organisation
générale ou la gestion des traces, les recommandations restent assez globales et peu précises
pour les aspects liés à la programmation
11
3.5 Les techniques de sécurité
3.5.1 Gérer l’identification des utilisateurs
Identifier les utilisateurs dans l’application est l’un des passages obligés des
applications de gestion. Cela permet de définir les droits d’accès aux modules (lecture,
écriture). Ils sont en général attribués par l’intermédiaire de groupes. Un utilisateur peut être
associé à l’un ou plusieurs d’entre eux pour obtenir des droits d’accès correspondants à ses
besoins.
La première étape consiste à s’assurer que la personne qui se connecte est bien celle
qu’elle prétend être. Le mécanisme le plus simple est d’utiliser un compte de connexion et un
mot de passe. Ce login peut être spécifique au logiciel, mais dans les entreprises, le recours à
un annuaire centralisé est souvent préféré. Ainsi, les employés n’ont pas besoin de retenir des
mots de passe différents selon les applications. De plus, au départ de l’un d’eux, il est facile
d’invalider son compte, et de fermer par cette opération tous les accès aux logiciels qu’il
utilisait.
Depuis quelques années, avec l’essor d’Internet, le login des clients est basé sur
l’adresse mail. Cela présente plusieurs avantages, comme la possibilité d’envoyer un lien
permettant de renouveler le mot de passe en cas de perte. De plus, une adresse mail est
forcément unique, deux personnes ne peuvent obtenir la même.
Ces certificats sont actuellement considérés comme très sûrs, car basés sur le
chiffrement asymétrique. Ils peuvent également être intégrés à des cartes à puce ou des clés
USB chiffrées, ce qui limite encore les risques de vol. Néanmoins, cela impose de mettre en
œuvre des protocoles de vérification bien particuliers, avec soit la lecture du certificat stocké
dans le navigateur, soit l’installation d’un lecteur de carte à puce, etc. Cela complexifie en
général le travail des équipes d’assistance, qui doivent aider les utilisateurs à gérer
correctement ces dispositifs.
11
En restant dans le domaine d’une identification via login/mot de passe, trois méthodes
sont en général utilisées aujourd’hui pour retrouver les comptes : soit en stockant les
informations dans une base de données, soit en interrogeant l’annuaire de l’entreprise, en
général par le biais du protocole LDAP (Lightweight Directory Access Protocol, une norme
de gestion d’annuaire [WIK 15e]), soit en sous-traitant l’identification à un serveur spécialisé,
le serveur CAS (Common Access Service), que nous étudierons dans le détail.
On estime qu’un mot de passe est correct dès lors qu’il présente un risque inférieur à
1/211 d’être découvert (soit 1 sur 2 048). Un code PIN à quatre chiffres, avec trois essais
possibles (et verrouillage ensuite), répond à ce critère : c’est pourquoi les codes des cartes à
puce bancaires sont considérées comme sûrs.
Sans rentrer dans le détail complet d’une implémentation totalement sécurisée, voici
quelques points qu’il est souhaitable de vérifier :
- il faut s’assurer que le mot de passe soit chiffré avec une fonction de calcul
d’empreintes, et qu’il soit salé, c’est-à-dire qu’il soit associé à un texte
complémentaire pour que deux mots de passe identiques, utilisés par deux personnes,
11
ne disposent pas de la même empreinte. En cas de fuite de la liste des mots de passe,
les pirates auront ainsi plus de difficultés pour retrouver les mots de passe les plus
utilisés;
- la procédure de changement du mot de passe doit imposer un certain niveau de
complexité dans son choix. En général, il est conseillé d’imposer une longueur d’au
moins huit caractères, choisis parmi trois jeux de caractères différents parmi les
minuscules, majuscules, chiffres et caractères spéciaux;
- le même mot de passe ne devrait pas pouvoir être réutilisé, et sa durée de vie devrait
être limitée. C’est toutefois rarement le cas pour les applications destinées au grand
public ou à des clients en dehors de l’entreprise. Même les sites bancaires n’imposent
pas son changement;
- si une procédure de recouvrement automatique du mot de passe est prévue, en cas de
perte, elle doit être basée sur l’envoi d’un mail contenant un lien codé, à usage unique
et à durée limitée, qui permettra à l’utilisateur de changer son mot de passe par
l’intermédiaire d’une page spécifique.
Verrouiller les mots de passe
11
Le verrouillage avec déverrouillage facilite, lui, la recherche des mots de passe : si le
déverrouillage intervient au bout de dix minutes, le pirate pourra tester soixante mots de passe
à l’heure, soit 250 000 en six mois. Là encore, si le mot de passe est complexe, il est peu
probable que celui-ci puisse être découvert. Mais s’il peut être déduit facilement (prénom de
l’enfant + chiffre, par exemple, ou transformation d’une minuscule en majuscule), la
probabilité de découvrir le bon mot de passe augmente fortement. Un des bons moyens pour
détecter ce type d’attaque consiste à tracer tous les blocages de mots de passe, et donc de
mettre en place un mécanisme qui les signale.
Le blocage régulier d’un même mot de passe pourra, ainsi, indiquer qu’une tentative
de cassage est potentiellement en cours.
La dernière étape dans la sécurisation d’une application consiste à gérer correcte- ment
les droits.
Avant de commencer à coder, il est important de définir la granularité des droits, c’est-
à-dire la manière de les appliquer. Faut-il gérer un droit global par grand module
(administration de l’application, gestion des tables de référence, gestion des dossiers), ou
plutôt par type d’action (consultation, modification, suppression)? Ou les combiner?
La seconde question doit aborder la manière de gérer les comptes des utilisateurs. Les
droits doivent-ils être attribués individuellement, ou bien en s’appuyant sur des groupes
existants (ceux de l’annuaire de l’entreprise, par exemple), ou en créant des groupes
spécifiques au sein de l’application?
Que protéger?
D’une manière générale, il est possible d’identifier, dans une application, de grands
modules : la gestion des habilitations, la manipulation des tables de paramètres ou de
références, le suivi des dossiers (ou de plusieurs types de dossiers). Les opérations classiques
qui sont réalisées sur ces modules sont, en principe, la consultation des informations, l’ajout
d’une nouvelle information, sa modification ou sa suppression
11
Gérer les droits des utilisateurs à partir des groupes de l’annuaire LDAP
Dans une entreprise, tous les personnels peuvent être autorisés à accéder, en
consultation, à certaines informations. Si l’identification est basée sur un annuaire LDAP ou
un serveur CAS, il suffit d’attribuer le droit correspondant en retour de connexion. L’intérêt
d’une telle démarche est d’éviter d’avoir à déclarer tous les utilisateurs dans une application
accessible à l’ensemble de la société.
Il est également possible de restreindre ces accès à certains groupes déclarés dans
l’annuaire LDAP. Là encore, l’objectif est de faire confiance à l’annuaire de l’entre- prise.
L’application sera ainsi toujours en cohérence avec les changements de personnels.
11
Partie III : Réalisation et discussion
CHAPITRE 1: Résultats
11
1.1 Analyse orienté objet et son processus
L’analyse orienté objet avec son processus est la stratégie qui va nous permettre de
définir nos besoins dans le but d’identifier les Classes qui nous ont nécessaire pour réaliser le
projet.
Les principaux acteurs qui auront à utiliser notre système sont les suivants :
11
Le schéma suivant décrit le lien entre les profils et les fonctionnalités de notre système :
AD : ADMINISTRATEUR :
11
FIGURE 19 : DIAGRAMME DE CAS D’UTILISATION ADMINISTRATEUR
FO : FORMATEUR
11
FIGURE 20 : DIAGRAMME DE CAS D’UTILISATION FORMATEUR
11
ET : Etudiant
11
1.1.4 Diagramme de classe
11
1.2 Phase de réalisation
Toutes les phases qui sont fait avant la phase de réalisations sont des modélisations
orienté objet qui sont concentré sur les idées et les concepts, au final tous ses préparations en
papiers vont se transformer en code que devra exécuter l’ordinateur
base.html.twig
<!DOCTYPE html>
<html lang="en">
<head>
<metacharset="utf-8">
<metahttp-equiv="X-UA-Compatible" content="IE=edge">
<metaname="viewport" content="width=device-width,initial-scale=1">
{% block stylesheets %}{% endblock%}
{% block javascripts_head %}{% endblock%}
</head>
<body>
{% block body %}{% endblock%}
{% block javascripts %}
{% endblock%}
</body>
</html>
layout.html.twig
11
{% extends'::base.html.twig'%}
{% block stylesheets %}
<linkrel = "stylesheet" href = "{{ asset ('bundles/techcorpfront/css/bootstrap.css') }}"
type="text/css" />
<linkrel = "stylesheet" href = "{{ asset ('bundles/techcorpfront/css/style.css') }}"
type="text/css" />
{% endblock%}
{% block javascripts_head %}
{% endblock%}
{% block javascripts %}
<script src = " {{ asset ('bundles/techcorpfront/javascript/jquery-
1.11.0.js') }}"></script>
<script type = "text/javascript" src = " {{ asset
('bundles/techcorpfront/javascript/bootstrap.min.js') }}"></script>
{% endblock%}
{% block body %}
{% include"TechCorpFrontBundle:_components:navigation.html.twig" %}
{% block content %}
{% endblockcontent %}
{% endblock%}
UserController.php
<?php
namespaceTechCorp\FrontBundle\Controller;
11
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class UserControllerextendsController
{
public functionmanageFriendAction($friendId, $addFriend= true)
{
$em= $this->getDoctrine()->getManager();
$friend= $em->getRepository('TechCorpFrontBundle:User')->findOneById($friendId);
$authenticatedUser= $this->container->get('security.token_storage')->getToken()-
>getUser();
if(!$friend) {
return new Response("Utilisateur inexistant", 400);
}
if(!$authenticatedUser) {
return new Response("Authentification nécessaire", 401);
}
if ($addFriend) {
if (!$authenticatedUser->hasFriend($friend)) {
$authenticatedUser->addFriend($friend);
}
} else{
$authenticatedUser->removeFriend($friend);
}
$em->persist($authenticatedUser);
$em->flush();
11
}
public functionaddFriendAction($friendId)
{
return $this->manageFriendAction($friendId, true);
}
public functionremoveFriendAction($friendId)
{
return $this->manageFriendAction($friendId, false);
}
}
Entity : user.php
<?php
namespaceTechCorp\FrontBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mappingas ORM;
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="TechCorp\FrontBundle\Repository\UserRepository")
*/
class User extendsBaseUser
{
/**
* @var int
*
11
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected$id;
public function__construct()
{
parent::__construct();
}
/**
* Get id
*
* @return int
*/
public functiongetId()
{
return $this->id;
}
}
routing.yml
tech_corp_front_user_timeline:
path: /timeline/{userId}
defaults: { _controller: TechCorpFrontBundle:Timeline:userTimeline }
navigation.html.twig
11
<a class = "navbar-brand " href="{{ url('tech_corp_front_homepage')}}">
MEF- Mada
</a>
<ulclass = "navnavbar-nav">
<li><a href="{{ url('tech_corp_front_homepage') }}" > Accueil </a></li>
<li><a href="{{ url('tech_corp_front_about') }}" > A propos </a></li>
</li>
</ul>
</div>
</div>
</div>
11
1.2.2 Les différentes interfaces web
Page d’accueil
11
Page pour les différentes formations
11
Page contact
11
CHAPITRE 2 : Problèmes vécues et solutions
apportées
11
Contrainte dans le codage
Résoudre les quelques bugs lors du codage comme les lignes de commande pour les
bases de données nous ont pris un peu de temps
L’obligation de réapprendre des lignes de commande qui nous ont retardé car la ligne
de commande joue un rôle primordiale en Symfony
Le temps d’apprentissage du Framework Symfony est bien plus élevé que pour un
langage en lui-même, de plus tous les meilleurs documentations sont tous en anglais
Le code
Symfony bénéficie d’une bonne communauté dans le monde (sur internet), donc on
n’est jamais tout seul, en effet, grâce au support de cette communauté, on a toujours trouvé
des réponses à nos question via des blogs pour résoudre les différents bugs du système. Et
aussi les différentes bibliographies
11
CHAPITRE 3 : Discussion
11
Après analyse du problème, on a pu trouver le cas général de l’application gestion de
la formation, après cette modélisation Orienté Object, les idées et les concepts qui sont repris
en diagramme de classe UML seront transformer en code avec un grand atout qui est le
Framework symfony.
Notre code est bien organisé, et on sait qu’un code bien organisé est plus maintenable
et évolutif.
Autre atout, est que notre projet a une longévité grâce à son élaboration avec
symfony, maintenant on pourra prendre en main l’évolution de notre projet. On pourra aussi
prendre en main n’importe quel projet même si on n’a pas participé à son élaboration.
Le virtuel, le point fort du e-Learning est aussi son principal point faible : il empêche
tout contact humain en face en face. Pour ceux qui travaillent en openspace, cela ne pose pas
de problème, mais pour les personnes qui sont déjà isolées (télétravail, petites équipes…),
cela peut apparaître comme un véritable frein.
Aujourd’hui, le e-Learning n’a pas atteint les chiffres annoncés par les analystes il y a
3 ans. Le phénomène « coquille vide » des plates-formes e-Learning en est la cause. En effet,
dans de nombreux projets e-Learning, l’espace de formation que représente la plate-forme n’a
proposé que peu de contenu aux apprenants. Car les formateurs se sont trouvés confrontés à la
complexité technique et à la pauvreté pédagogique des outils mis à leur disposition. Ils n’ont
eu pour seule solution que de traduire leur savoir et savoir-faire par des Quiz ou des QCM.
Ajouter à cela le coût très important des plates-formes, on peut comprendre que le e-Learning
soit soldé dans certains cas par échec. Et pourtant, l’apport pédagogique des supports
multimédias est considérable :
11
Evaluation des prés requis pour mieux cibler les apprentissages.
Personnalisation des parcours de formation.
Accompagnement pendant et après les formations.
Malgré tout, nous pouvons dire qu’il y a un avenir pour le e-Learning, grâce à l’arrivée
des outils auteurs dédiés au e-Learning. Ce type de logiciel conçu pour les formateurs, permet
de mettre en forme rapidement des contenus et des exercices autrement plus pertinents que les
Quiz ou les QCM. Tout comme on utilise PowerPoint pour concevoir des diaporamas, il est
évident que les formateurs utiliseront dès demain des outils comme e-Learning maker pour
accompagner leurs formations.
Une manifestation est entièrement consacrée aux technologies les plus récentes et à
leur application dans la formation. E-éducation 2003(Bernes, le 23 mai 2003, OFFT – l’Office
Fédéral de la Formation et de la Technologies).
Cette dernière partie que nous as permis de voir l’application à jour après le terme de
son développement. Cette partie nous ont aussi permis de voir les difficultés des techniques
dans la réalisation de notre projet et en discuter pour apporter des nouvelles initiatives avec
une perspective d’avenir pour toujours améliorer notre travail.
11
Conclusion
Au cours de la réalisation de notre projet, nous avons étaient astreints par quelques
limites notamment, la contrainte du temps qui était relativement un obstacle devant l’analyse
des besoins et la compréhension du travail à effectuer. Cependant, il était une occasion pour
mettre en évidence et déployer sur le plan pratique nos connaissances.
Le projet peut être surement amélioré, et ce, en lui ajoutant quelques modules et
interfaces pour mieux l’adopter aux besoins de l’utilisateur et pour qu’il soit toujours fiable et
au niveau des progrès.
11
Bibliographie
[3] La sécurisation d’une application web - Eric Quinton - 2017 - ISTE Editions Ltd 27-37
St George’s Road London SW19 4EU UK
[4] Christian SOUTOU, « Apprendre SQL avec MySQL », Librairie Eyrolles, Paris Saint-
Germain, 2006.
[6] Eric Daspet& Cyril Pierre de Geyer, « PHP 5 Avancé », Eyrolles, 2005.
[9] C.C. Chang, M.S. Hwang, et T-S Chen. A new encryption algorithm for image
cryptosystems. The Journal of Systems and Software, p. 83–91, 2001.
[10] Douglas R. Stinson. Cryptography: Theory and Practice, (Discrete Mathematics and Its
Applications) . Chapman & Hall/CRC Press, New York, Novembre 2005.
[11] J.M Shapiro "Embedded Image Coding Using Zerotrees of Wavelet Coefficients", IEEE
Trans. on Signal Processing, Vol 41, No.12, pp.3445-3462, Dec. 1993.
11
[15] W. Puech, J.J. Charre, et M. Dumas. Transfert sécurisé d’images par chiffrement
deVigenère. Dans NimesTic 2001, La relation Homme - Système : Complexe, Nîmes,France,
p. 167–171, 2001.
[17] A. Forouzan., “Cryptography and Network Security ", First Edition. McGraw-Hill,
(2007), USA.
[18] Atul Kahate (2009), Cryptography and Network Security, second edition, McGraw-Hill.
[20] Andreas Ruttor, “Synchronization and Cryptography “, PhD thesis, Bayerische Julius
MaximilianUniversity Wurzburg, 2006.
[21] www.codeproject.com/Articles/39067/Cryptography.
[22] github.com/sagunms/NeuroCrypto.
11
11