en INFORMATIQUE et COMMUNICATION

Slides:



Advertisements
Présentations similaires
CRÉER UNE APPLICATION INTERNET RELIEE A UNE BASE DE DONNEES
Advertisements

13/04/05 - RB1 Montpellier 24/03/2005 Les interactions entre le SSO ESUP et le mécanisme de propagation d'identité
Université Nancy 2 - CRI Propositions de mécanisme de SSO dans un environnement d’applications web.
M2: Fondements de la Sécurité :authentification
Conception de Site Webs dynamiques Cours 6
TOUQUET Arnaud ▪ GI05 BLONDEEL Igor ▪ GM05
- Couche 7 - Couche application. Sommaire 1)Introduction 1)DNS 1)FTP et TFTP 1)HTTP 1)SNMP 1)SMTP 1)Telnet.
Exposé de Système - Informatique et Réseau
APACHE HTTP SERVER Formation TRANSFER ALGER Mai 2002.
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
1 Les technologies XML Cours 4 : Les Web Services et XML- RPC Février Version 1.0 -
Xavier Tannier Yann Jacob Sécurite Web.
HTML Les types de balises
Cours d'administration Web - juin Copyright© Pascal AUBRY - IFSIC - Université de Rennes 1 Mandataires, caches et filtres Pascal AUBRY IFSIC - Université
Web dynamique : solutions Sessions sous HTTP
Le mécanisme de Single Sign-On CAS (Central Authentication Service)
Commission Web de l'Université de Rennes 1 9 mai Copyright© 2000 Pascal AUBRY - IFSIC - Université de Rennes 1 Le serveur web de lIFSIC Pascal AUBRY.
Single Sign-On open source avec CAS (Central Authentication Service)
TP 3-4 BD21.
FLSI602 Génie Informatique et Réseaux
11:16:331 Programmation Web Programmation Web : Formulaires HTML Jérôme CUTRONA
La configuration Apache 2.2 Lhébergement virtuel.
Soutenance de stage · Par : Guillaume Prévost · Entreprise : Cynetic
Sécurité Informatique
Common Gateway Interface
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Formation à PHP version Copyright© Pascal AUBRY - IFSIC - Université de Rennes 1 Formation à PHP Pascal AUBRY IFSIC - Université de Rennes.
SSL (Secure Sockets Layer) (couche de sockets sécurisée)
SECURITE DU SYSTEME D’INFORMATION (SSI)
Le langage ASP Les variables d'environnement HTTP avec Request.
1 Sécurité Informatique : Proxy Présenter par : Mounir GRARI.
Comprendre l’environnement Web
Développement Rapide dApplications Web avec.NET « Mon premier site »
Les instructions PHP pour l'accès à une base de données MySql
Xavier Tannier Sécurite Web.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Gestion des bases de données
Atelier « Créations de sites » : Les techniques de réalisation de sites EPN :...
Développement dapplications web Authentification, session.
SSO : Single Sign On.
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
Web dynamique PhP + MySQL AYARI Mejdi 2006
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Initiation au web dynamique
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
PHP & My SQL.
JavaScript Nécessaire Web.
PHP 5° PARTIE : LES COOKIES
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Cours de programmation web
Erreurs commises couramment dans le domaine de la sécurité 1.Sensibilisation aux questions de sécurité 2.Suivi des incidents 3.Gestion déficiente des.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
Installation et Configuration Internet Information Server (IIS 6)
S'initier au HTML et aux feuilles de style CSS Cours 5.
Page 1Dernière mise à jour: 17 avril 2015 Service de l'enseignement des technologies de l'information, © HEC Montréal, Tous droits réservés.
S'initier au HTML et aux feuilles de style CSS Cours 5.
 Formulaires HTML : traiter les entrées utilisateur
Installation et gestion d'un site Web avec Linux et Apache
Séance /10/2005 CSS et Dreamweaver. CSS : principes Cascading Style Sheet = feuille de style en cascade Norme du W3C :
Les évolutions du WEB Des technologies,... et un peu plus...
Architecture Client/Serveur
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Sécurité des Web Services
TWP Toolkit Formation 21/10/2009.
Installation du PGI – CEGID
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Développement d’applications Web
Transcription de la présentation:

en INFORMATIQUE et COMMUNICATION INSTITUT DE FORMATION SUPÉRIEURE en INFORMATIQUE et COMMUNICATION UNIVERSITE DE RENNES 1 UNIVERSITATIS SIGILUM REDONENSIS Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 Web et sécurité Pascal AUBRY IFSIC - Université de Rennes 1 http://perso.ifsic.univ-rennes1.fr/aubry

Introduction Le protocole HTTP Le web dynamique Le protocole CGI Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 Le protocole HTTP Le web dynamique Le protocole CGI Les solutions côté serveur (FastCGI, Perl, PHP, Servlets, JSP, ASP)

Exemple de transaction HTTP % telnet www.ifsic.univ-rennes1.fr 80 . . . . . . . . . . . . . . . . . . . . . .connexion au serveur web Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple de transaction HTTP % telnet www.ifsic.univ-rennes1.fr 80 . . . . . . . . . . . . . . . . . . . . . .connexion au serveur web Trying 148.60.4.30... Connected to apollon.univ-rennes1.fr. Escape character is '^]'. Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple de transaction HTTP % telnet www.ifsic.univ-rennes1.fr 80 . . . . . . . . . . . . . . . . . . . . . .connexion au serveur web Trying 148.60.4.30... Connected to apollon.univ-rennes1.fr. Escape character is '^]'. GET /index.html HTTP/1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . demande de transfert Host: apollon.univ-rennes1.fr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nom du serveur From: pa@ifsic.univ-rennes1.fr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . adresse demandeur (optionnelle) (ligne blanche = fin de l’entête HTTP de la requête) Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple de transaction HTTP % telnet www.ifsic.univ-rennes1.fr 80 . . . . . . . . . . . . . . . . . . . . . .connexion au serveur web Trying 148.60.4.30... Connected to apollon.univ-rennes1.fr. Escape character is '^]'. GET /index.html HTTP/1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . demande de transfert Host: apollon.univ-rennes1.fr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nom du serveur From: pa@ifsic.univ-rennes1.fr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . adresse demandeur (optionnelle) (ligne blanche = fin de l’entête HTTP de la requête) HTTP/1.1 200 OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . réponse du serveur Date: Tue, 02 Jun 2001 14:11:17 GMT Server: Apache/1.3b6 Last-Modified: Mon, 07 Apr 2001 10:39:08 GMT . . . . . . . . . . . . . informations sur la ressource ETag: "b3dd-524-33b78ccc" Content-Length: 1316 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . taille de la ressource Accept-Ranges: bytes Content-Type: text/html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . type MIME (ligne blanche = fin de l’entête HTTP de la réponse) <DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> (contenu) <HTML> …. </HTML> Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple de transaction HTTP % telnet www.ifsic.univ-rennes1.fr 80 . . . . . . . . . . . . . . . . . . . . . .connexion au serveur web Trying 148.60.4.30... Connected to apollon.univ-rennes1.fr. Escape character is '^]'. GET /index.html HTTP/1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . demande de transfert Host: apollon.univ-rennes1.fr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nom du serveur From: pa@ifsic.univ-rennes1.fr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . adresse demandeur (optionnelle) (ligne blanche = fin de l’entête HTTP de la requête) HTTP/1.1 200 OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . réponse du serveur Date: Tue, 02 Jun 2001 14:11:17 GMT Server: Apache/1.3b6 Last-Modified: Mon, 07 Apr 2001 10:39:08 GMT . . . . . . . . . . . . . informations sur la ressource ETag: "b3dd-524-33b78ccc" Content-Length: 1316 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . taille de la ressource Accept-Ranges: bytes Content-Type: text/html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . type MIME (ligne blanche = fin de l’entête HTTP de la réponse) <DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> (contenu) <HTML> …. </HTML> Connection closed by foreign host. fermeture de la connexion Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Délivrer un document statique système front-end démon HTTPD données système de fichiers Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Web dynamique : qui fait quoi ? Le serveur exécute, le client reçoit SSI, XSSI, CGI, FastCGI, PHP, ASP, JSP indépendance vis-à-vis du client (navigateur) interactivité limitée Le serveur envoie, le client exécute JavaScript embarqué (DHTML), Applet Java dépendance vis-à-vis du client plus d’interactivité Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

SSI, XSSI : le premier pas vers la dynamique <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head><title>Exemple XSSI</title></head> <body bgcolor="#FFFFFF"> <!--#config errmsg="erreur de syntaxe dans un (x)SSI" --> <!--#set var="x" value="test"--><!--#echo var="x"--><br> Fichier modifié le : <!--#echo var="LAST_MODIFIED" --> <br> Nom du serveur : <!--#echo var="SERVER_NAME" --> <br> <!--#if expr="$HTTP_USER_AGENT = 'Mozilla/2.0 (compatible; MSIE 3.01; Windows 95)'" --> Il est temps de se mettre à jour ! <!--#endif --> </body> </html> Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

CGI : Common Gateway Interface Un standard pour l’interface entre applications et serveurs d’informations Permet de passer des paramètres aux requêtes dans l’URL avec la méthode GET http://serv.dom.org/cgi-bin/script?arg1=val1&arg2=val2 comme des données avec la méthode POST Exécution d’un programme sur le serveur Les informations renvoyées au client sont statiques Des requêtes successives permettent le dynamisme Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exécution via HTTP d’un programme CGI compilé système démon HTTPD front-end démon HTTPD fork, exec exécutable exécution terminaison Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 système de fichiers

Exécution via HTTP d’un programme CGI interprété système démon HTTPD front-end démon HTTPD fork, exec interpréteur interprétation source exécution Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 terminaison système de fichiers

FastCGI : une solution au coût des programmes externes système front-end démon HTTPD prog. FastCGI exécution Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 système de fichiers

L’approche modulaire (PHP, Perl) système front-end démon HTTPD module [chargement du source] [interprétation,] exécution Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 système de fichiers

Java Les servlets JSP (Java Server Pages) Programme Java exécuté côté serveur Transformation en byte-code avant exécution Servies par un serveur dédié (ex : Tomcat) JSP (Java Server Pages) Pages HTML avec Java embarqué Transformation en Servlets Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Le mécanisme JSP système démon HTTPD moteur JSP JVM Serveur Servlets front-end démon HTTPD test.jsp (HTML/Java) moteur JSP JVM Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 Serveur Servlets test.jar (byte-code) test.java (Java)

Le mécanisme JSP système démon HTTPD moteur JSP JVM Serveur Servlets front-end démon HTTPD test.jsp (HTML/Java) moteur JSP JVM Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 Serveur Servlets test.jar (byte-code) test.java (Java)

ASP Tourne nativement sur IIS (MicroSoft) JavaScript ou VBScript ASP.NET (ASP+) : support langages compilés (VB, C++, C#) compilation intermédiaire JS et VBS mécanisme de cache des objets compilés configuration format XML contrôle accru des formulaires Accès aux bases de données amélioré Développement de web services Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Une comparaison rapide… [Java|VB]Script (+ASP) Java (+JSP) Perl (+mod_perl) PHP Python (+Zope) Installation Apprentissage Puissance Portabilité Outils Ressources Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 …et subjective !

Un critère supplémentaire : la sécurité Tous les serveurs ont (eu) des trous de sécurité Déni de service Prise de contrôle Tous les navigateurs ont (eu) des trous de sécurité Liés à Javascript essentiellement Piratage de données (souvent) Déni de service (parfois) On est au courant plus ou moins rapidement Dans le monde du libre : correctifs rapides Ailleurs : ? Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Un peu de technique Formulaires HTML et paramètres CGI Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 Formulaires HTML et paramètres CGI Les redirections HTTP Les cookies La gestion de sessions Sécurité et CGI

Formulaires HTML Exemple : Action : URL cible <form action="prog.php" method="get"> <input type="submit" name="go"> </form> Action : URL cible Method : dans la pratique GET ou POST Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Entrées des formulaires HTML Boutons d’action <input type="submit" name="nom" value="valeur"> <input type="reset" name="nom" value="valeur"> <input type="image" name="nom" src="source"> Entrées textuelles <input type="text" name="nom" value="valeur"> <input type="hidden" name="nom" value="valeur"> <input type="password" name="nom" value="valeur"> Boites de saisie <textarea name="nom" rows="r" cols="c"> texte... </textarea> Listes à choix <select [multiple] name="nom"> <option value="valeur">texte</option> ... </select> Boutons radio <input type="radio" name="nom" value="valeur" [selected] > Boutons à cocher <input type="checkbox" name="nom" value="valeur" [checked] > Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple <form action="test_cgi.php" method="GET"> Texte :<br> <input type="text" name="texte_court" value="blabla"><hr> Sélection simple :<br> <select name="sel_simple"> <option value="1">Choix 1</option> <option value="2">Choix 2</option> <option value="3">Choix 3</option> </select><hr> Sélection multiple :<br> <select multiple name="sel_multiple[]"> <option value="1">Choix 1</option> <option value="2">Choix 2</option> <option value="3">Choix 3</option> </select><hr> <input type="reset" name="bouton_reset" value="Annuler"> <input type="submit" name="bouton_submit" value="Valider"> </form> Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple 'texte_court' => "blabla" 'sel_simple' => "2" <input type="text" name="texte_court" value="blabla"> 'texte_court' => "blabla" <select name="sel_simple"> <option value="1">Choix 1</option> <option value="2">Choix 2</option> <option value="3">Choix 3</option> </select> 'sel_simple' => "2" <select multiple name="sel_multiple[]"> <option value="1">Choix 1</option> <option value="2">Choix 2</option> <option value="3">Choix 3</option> </select> 'sel_multiple' => { [0] => "1", [1] => "3" } Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 'bouton_submit' => "Valider" <input type="reset" name="bouton_reset" value="Annuler"> <input type="submit" name="bouton_submit" value="Valider">

Redirection sous HTTP serveur client requête réponse : erreur 30x GET /ancien HTTP/1.1 Host: zappeur.com HTTP/1.1 301 Moved permanently Location: /nouveau requête réponse : erreur 30x serveur client réponse nouvelle requête HTTP/1.1 200 OK <html> ... </html> Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 GET /nouveau HTTP/1.1 Host: zappeur.com réponse : code 200

Les cookies Ce sont des lignes particulières de l’entête HTTP qui permettent de véhiculer des informations entre client et serveur Caractéristiques : nom (UTILISATEUR) valeur (Pascal.Aubry) date de validité (Sunday, 04-Nov-01 23:12:40 GMT) domaine/serveur (www.zappeur.com) chemin (/public) Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Les cookies serveur client requête réponse requête HTTP/1.1 200 OK Set-Cookie: h_cookie=00; \ path=/rep/; \ expires=Friday, 09-Nov-01 05:23:12 GMT GET /rep/fichier.html HTTP/1.1 Host: zappeur.com requête réponse serveur client réponse requête Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 GET /rep/fichier2.html HTTP/1.1 Cookie: h_cookie=00

Les cookies (limitations) La taille 4Ko par cookie Le nombre 300 cookies par navigateur 20 cookies par serveur (pour un même client) Les clients peuvent « refuser » des cookies Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Transmettre des variables d’état Objectif : propager des variables entre les requêtes identité du visiteur informations de connexion ... Le problème HTTP est un protocole sans état Les solutions paramètres CGI cachés cookies sessions Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Solution 1 : paramètres CGI cachés Dans chaque formulaire et chaque lien hypertexte, on ajoute un (des) paramètre(s) caché(s) : <form ...> <input type="hidden" name="ident" value="durand"> <input type="hidden" name="pass" value="xx98yy"> ... </form> <a href="action.php?ident=durand&pass=xx98yy">texte</a> Problèmes : Les liens hypertextes et les grosses variables d’état on transmet toutes les variables d’état à chaque requête ça marche, mais ça va bien un moment… ;-) Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Solution 2 : cookies À chaque changement d’une variable d’état, on envoie un cookie au client qui pourra nous le renvoyer lors de la requête suivante Intérêts : on ne transmet les variables que lorsqu’elles changent on ne fait pas de ré-écriture des formulaires et des liens Problèmes : nombre et longueur des cookies il faut encore le faire « à la main » certains ne supportent pas les cookies... Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Solution 3 : les sessions Affectation d’un ID unique pour chaque visiteur non connu (sans ID) de forme aléatoire Liaison (identifiant - données sur le serveur) stockage mémoire, disque, base de données, ... format propriétaire, XML (WDDX), ... Transmission de l’identifiant par cookie, ré-écriture (automatique) Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Transmission des IDs de session Ré-écriture automatique : <form …> <input type="hidden" name="SESS_ID" value="5kj81l12yhs3"> ... </form> <a href="…?…&SESS_ID=5kj81l12yhs3"> <img src="…?…&SESS_ID=5kj81l12yhs3"> <frame src="…?…&SESS_ID=5kj81l12yhs3"> ... Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Sécurité et CGI Tout ce qui provient de l’utilisateur doit être considéré comme suspect : URL Il ne suffit pas de protéger le point d’entrée d’une application Paramètres CGI L’utilisateur ne passe pas forcément par un formulaire de l’application Cookies Ils peuvent être « trafiqués » Fichiers téléchargés Leur contenu est a priori quelconque Certificats X509 S’appuyer sur une autorité de confiance et une liste de révocation Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Sécurité et CGI : exemple <form ...> ... <input type="text" name="cle"> <input type="submit" name="go" value="chercher"> </form> Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Sécurité et CGI : exemple <form ...> ... <input type="text" name="cle"> <input type="submit" name="go" value="chercher"> </form> $req_sql = "SELECT DesChamps FROM UneTable WHERE cle = '$cle' "; Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 J’essaierai bien la clé suivante : 4' ; SELECT * FROM … ; DROP DATABASE … ; SELECT '1

Sécurité et CGI Rappel : tout ce qui provient de l’utilisateur doit être considéré comme suspect Il existe des solutions $req_sql = " SELECT DesChamps FROM UneTable WHERE cle = '". Addslashes($cle) ."'" ; Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Confidentialité et intégrité (chiffrement et signature) Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 SSL + HTTP = HTTPS

Le chiffrement de HTTP (HTTPS) SSL : Secured Socket Layout HTTPS : HTTP sur SSL Objectifs de HTTPS : crypter les communications identifier le serveur le serveur auquel je suis connecté est-il le bon ? Identifier le client la personne qui se connecte au serveur est-elle la bonne ? Certificats (X509) HTTP HTTPS SLL TCP/IP Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Chiffrement symétrique Chiffrement : f (message , clé) = message_chiffré message + Déchiffrement : f (message_chiffré,clé) = message Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 message + message

Chiffrement symétrique Avantages : Une seule clé pour chiffrer/déchiffrer Algorithme de chiffrement léger Inconvénient : Comment se passer la clé ? Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 message message message

Chiffrement asymétrique Chiffrement : f (message , clé_pub) = message_chiffré message + PUB Déchiffrement : f (message_chiffré,clé_pri) = message Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 message + PRI

Communication chiffrée asymétrique PUB PUB PRI message message message Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 Inconvénient : L’algorithme de chiffrement/déchiffrement est lourd

La solution On utilise un chiffrement asymétrique pour se communiquer une clé symétrique On communique ensuite avec un chiffrement symétrique Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

La solution PUB PUB PRI clé génération aléatoire PUB PUB Passage de la clé avec chiffrement asymétrique PRI clé Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

La solution PUB PUB PRI clé message message message génération aléatoire PUB PUB Passage de la clé avec chiffrement asymétrique PRI clé Chiffrement symétrique Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 message message message

La signature Être sûr que la personne/machine avec laquelle on communique est bien la bonne Être sûr que les données reçues sont bien celles qui ont été envoyées (intégrité) Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

La signature (fonctionnement) message hachage empreinte message PUB déchiffrement asymétrique PRI empreinte message empreinte empreinte Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 chiffrement asymétrique message comparaison envoi empreinte hachage

Le problème de l’authentification Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 La problématique Des exemples

L’authentification sur le web Quelle information d’authentification utilise-t-on ? Comment transporte-t-on les informations ? Qui vérifie les informations ? Par rapport à quoi les vérifie-t-on ? Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Quelles informations d’authentification utiliser ? Un couple user/password Méthode traditonnelle Attention à son transport et à son utilisation ! Est-ce bien nécessaire ? Un jeton opaque Rejouable ou non rejouable Limité ou illimité dans le temps Pour une gestion de session ou une authentification externalisée Un certificat X509 Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Comment transporte-t-on les informations d’authentification ? Sous HTTP Par le protocole HTTP (royaumes) Codage base64 => non sûr Par paramètre CGI Pas de chiffrement => non sûr Log possible avec la méthode GET Par cookie Piratage possible sur le client Par certificat personnel X509 Sous HTTPS Tout est bon… Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Qui vérifie les informations d’authentification ? Le démon HTTPD (le serveur web) Ou un de ses modules mod_ssl, mod_auth_ldap, mod_auth_dbm, mod_auth_mysql, … Authentification gérée par l’administrateur Peut être déléguée aux développeurs (.htaccess) L’application elle-même L’application a en général accès aux informations d’authentification (royaumes HTTP, paramètres CGI, cookies, certificats X509) Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Par rapport à quoi vérifie-t-on l’authentification ? Annuaire LDAP (ex : mod_auth_ldap) Fichier Séquentiel (ex : mod_auth_digest) Format DBM (ex : mod_auth_dbm) Base de données Ex : mod_auth_mysql Codage « en dur » dans l’application if ( ($_SERVER["PHP_AUTH_USER"] != "titi") || ($_SERVER["PHP_AUTH_PW"] != "toto") ) { header('WWW-Authenticate: Basic realm="zappeur"'); header("HTTP/1.0 401 Unauthorized"); echo "Vous n’êtes pas autorisé...\n" ; exit ; } Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple 1 Mise à jour des pages web de l’IFSIC Protocole : HTTP (en fait webDAV) Informations : user/password Transport : royaume HTTP Vérification : serveur web Référence : fichiers de mots de passe Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple 1 serveur client requête réponse : erreur 401 nouvelle requête HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="private zone" Vous n’êtes pas autorisé... GET /prive/index.html HTTP/1.1 Host: zappeur.com requête réponse : erreur 401 serveur client httpd.conf <Directory "/var/www/html/prive"> AuthType Basic AuthUserFile /etc/prive.users AuthName "private zone" require valid-user </Directory> nouvelle requête Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Exemple 1 serveur client requête réponse : erreur 401 nouvelle requête HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="private zone" Vous n’êtes pas autorisé... GET /prive/index.html HTTP/1.1 Host: zappeur.com requête réponse : erreur 401 serveur client réponse nouvelle requête HTTP/1.1 200 OK <html> ... </html> Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 GET /prive/index.html HTTP/1.1 Host: zappeur.com Authorization: Basic dG90bzp0aXRp réponse : code 200 (ou 401)

Exemple 2 Le Helpdesk de l’IFSIC Protocole : HTTPS Informations : certificats personnels Transport : SSL Vérification : application PHP Référence : liste « en dur » des administrateurs Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Le Single Sign-On Besoin de SSO Les acteurs du marché Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003 Besoin de SSO Les acteurs du marché Présentation de CAS Et l’inter-opérabilité ?

Besoin de SSO Un seul mot de passe : un objectif en général atteint Par synchronisation des modes Unix et Windows Par utilisation d’un annuaire unique (LDAP) Risque accru au niveau sécurité Plusieurs authentifications Une par système d’exploitation Une par application Différents mécanismes LDAP, PDC, NIS, certificats X509, … Abstraction nécessaire D’autres problématiques encore Aspects multi-établissements (inter-opérabilité) Gestion d’autorisations Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003

Les acteurs du marché MicroSoft Passport Sun Liberty Alliance Yale CAS Solution centralisée Sun Liberty Alliance Plus un standard qu’une implémentation De nombreux industriels impliqués Solution répartie (relations de confiance) Yale CAS La solution libre émergente Adoptée par ESUP-Portail Journées pédagogiques de l'IFSIC - ENSSAT (Lannion) - 17 juin 2003