% CVSId: $Id: adulau.tex,v 1.1 2003/02/07 17:51:53 adulau Exp adulau $
%
%
%     Copyright (c)  2001,2002,2003  Alexandre Dulaunoy <adulau@foo.be>
%     Permission is granted to copy, distribute and/or modify this document
%     under the terms of the GNU Free Documentation License, Version 1.2
%     or any later version published by the Free Software Foundation;
%     with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
%     A copy of the license is included in the section entitled "GNU
%     Free Documentation License".
\documentclass[%
pdf,
%nocolorBG,
colorBG,
slideColor,
%slideBW,
%draft,
frames
%azure
%contemporain
%nuancegris
%troispoints
%lignesbleues
%darkblue
%alienglow
%autumn
]{prosper}
\usepackage{amsmath}
\usepackage[T1]{fontenc}
\usepackage{pslatex}
\usepackage[french,english]{babel}
\begin{document}
\title{Sécurité en ingénierie du Logiciel}
\subtitle{Le cadre des Web Services \\ {\em Partie 1 : Introduction}}
\author{Alexandre Dulaunoy}
\email{adulau@foo.be}
\maketitle

\begin{slide}{Agenda (partie 1) 1/2}
\begin{itemize}
\item Introduction
\item Services Web
\begin{itemize}
\item Introduction
\item Historique {\tiny de Sun RPC à CORBA}
\item L'avenir ?
\end{itemize}
\item Sûreté du logiciel
\begin{itemize}
\item Simple ? non !
\item Architecture et Design
\item Réalisation
\end{itemize}
\end{itemize}
\end{slide}

\begin{slide}{Agenda (partie 2) 2/2}
\begin{itemize}
\item Sûreté des Services Web
\begin{itemize} 
\item Risques
\item Introduction aux éléments sécurités
\item Introduction aux Bonnes pratiques
\end{itemize}
\item Conclusion
\item Bibliographief/réf/link
\item Acronymes
\item Q\&R
\end{itemize}
\end{slide}

\begin{slide}{Introduction 1/2}
Pourquoi les Web Services ? L'historique...
\begin{itemize}
\item Protocoles de communication liés aux SEs, applications,
\item API accessible à un type uniquement de SE,
\item Complexité (structure base de données, langage utilisé,...) ,
\item Interfaçage difficile,
\item Services distribués,
\end{itemize} 
\end{slide}

\begin{slide}{Introduction 2/2}
Pourquoi les Web Services ? Internet
\begin{itemize}
\item Tim Berner Lee créa le premier client Web en 1990,
\item Conçu pour une interface Homme-Machine,
\item Evolution vers machine-machine,
\item Parsing automatique difficile,
\item Interface instable et propre à chaque technologie/site, 
\end{itemize}
\end{slide}

\begin{slide}{Services Web}
Une longue route...
\begin{itemize}
\item Plusieurs tentatives,
\begin{itemize}
\item -> SOAP, XML-RPC, WSDL, ...
\end{itemize}
\item Evolution constante (!) des standards,
\end{itemize}
\end{slide}

\begin{slide}{Services Web - Origines}
Les origines du concept...
\begin{itemize}
\item SUN Remote Procedure Call
\begin{itemize}
\item Première approche de standardiser les interactions entre un client et un serveur via un modèle de Remote Procedure Call,
\item Le serveur offre des procédures (identifiées par un nom) et le client demande au serveur l'accès à une procédure donnée avec les valeurs (paramètres), 
\item XDR (eXternal Data Representation) solutionne le (une partie) problème de la représentation binaire des données,
\end{itemize}
\end{itemize}
\end{slide}


\begin{slide}{Services Web - Origines}
Microsoft DCOM (Distributed Component Object Model) (COM -> DCOM -> COM+)
\begin{itemize}
\item Pas uniquement des procédures (comme SUN RPC) mais aussi un interfaçage avec des objets ou appels de méthodes,
\item DCOM se veut neutre par rapport à la plateforme, au langage et même au Transport,
\item DCOM est resté dans l'environnement Microsoft pour des questions de standardisation,
\item DCOM est propriétaire.
\item (-> .NET normalisé ECMA) 
\end{itemize}
\end{slide}

\begin{slide}{Services Web - Origines}
CORBA (Common Object Request Broker Architecture)
\begin{itemize}
\item Fonctionne avec un 'dispatcher' (ORB) pour les requêtes et les transferts vers un serveur donné, 
\item Utilisé sur des très larges projets,
\item IDL (Interface Design Language) est un langage de description des services offerts par l'application, 
\item La complexité de CORBA est souvent une source de problèmes (IDL complexes, transport IIOP \& securité,...),
\end{itemize}
\end{slide}

\begin{slide}{Services Web - Avenir}
\begin{itemize}
\item Insatisfaction avec DCOM, SUN RPC, DCOM, RMI,...
\begin{itemize}
\item Sortir des problèmes de compatibilités systèmes, langage et format,
\item Sortir du problème propriétaire et créer des standards, 
\item Utiliser l'infrastructure Internet existante,
\item Simplifier et limiter le temps de développement,
\end{itemize}
\item -> XML-RPC, SOAP, ...
\item Un rêve ? Les questions de performances, de gestion des erreurs, de sécurité des infrastructures distribuées utilisant les Services Web existent toujours...
\end{itemize}
\end{slide}

\begin{slide}{Sûreté du logiciel}
{\it If our software is buggy,  what does that say about its
    security ?}
\flushright
    Robert H. Morris\\
\flushleft
Pourquoi est-il si difficile de réaliser des logiciels sûrs ?
\begin{itemize}
\item Questions techniques,
\item Facteurs humains,
\item Facteurs économiques,
\end{itemize}
\end{slide}

\begin{slide}{Sûreté du logiciel}
Architecture et Design : quelques bonnes questions...
\begin{itemize}
\item Contre qui se protéger ?
\item Que voulez-vous protéger dans votre logiciel ?
\item Quel est le point faible de votre logiciel ?
\item Que peut-il arriver de pire à votre logiciel ?
\item Quelle est votre architecture de sécurité ?
\item Quelles sont vos standards ?
\item Avez-vous utilisé les bonnes pratiques ?
\item Avez-vous testé la sécurité du logiciel ?
\end{itemize}
\end{slide}

\begin{slide}{Sûreté du logiciel}
quelques bonnes pratiques...
\begin{itemize}
\item Pensez à la sécurité de votre logiciel au début du design,
\item Pensez à vos ennemis lors du design,
\item Utilisez le minimum de privilèges pour votre logiciel,
\item Utilisez une gestion solide et simple des erreurs,
\item La simplicité sera votre maître mot,
\item Utilisez des actions minimales par défaut,
\item N'utilisez pas l'obscurcissement,
\item ...
\end{itemize}
\end{slide}


\begin{slide}{Sûreté du logiciel}
Postfix MTA (Wietse Venema) un exemple de design sécurité pour un serveur de mail :
\begin{itemize}
\item Privilèges minimums (p.ex. chroot) surtout pour les composants en contact avec l'extérieur,
\item Isolation des processus (aucun accès direct),
\item Environnement contrôlé (p.ex. master qui contrôle les autre processus),
\item Confiance minimale entre les composants,
\item Contrôle des entrées importantes et tronquées,
\item Contrôle du nombres du processus,
\item Clarté du design et du code source (cf. le Logiciel),
\end{itemize}
\end{slide}

\begin{slide}{Sûreté des services web}
Les services web sont des logiciels donc vous avez tous les problèmes du logiciel plus :
\begin{itemize}
\item Une architecture décentralisée,
\item Une administration décentralisée,
\item Environnement hétérogène,
\item (souvent) Ouvert à Internet,
\item Des connections entre plusieurs points,
\end{itemize}
Ainsi que tous les problèmes relatifs au différentes couches de transport utilisées (TCP/IP) par les services web...
\end{slide}


\begin{slide}{Sûreté des services web}
Les points critiques :
\begin{itemize}
\item Authentification,
\item Autorisation / Access Control,
\item Single Sign On,
\item Chiffrage (Encryption),
\item Non-Repudiation (messages),
\item Mesures de protection,
\end{itemize}
\end{slide}

\begin{slide}{Conclusion}
Les standards autour des services web évoluent encore et ils existent encore un nombre important de risques sécurités (comme tous les logiciels, c'est inevitable).\\
Une bonne compréhension de l'architecture des services web permet de mieux prévenir les risques et de créer des logiciels utilisant ces services. Le but majeur du cours est de créer un esprit de sécurité lors de la
mise en pratique.
\end{slide}


\begin{slide}{Bibliographie}
\begin{itemize}
\item The Practice of Programming, Brian W. Kernighan, Rob Pike - Addison Wesley. 1999. ISBN 0-201-61586-X.
\item Building Secure Software, John Viega, Gary McGraw - Addison Wesley. Summer, 2001. ISBN 020172152X.
\item Web Services Essentials, Ethan Cerami - O'Reilly. ISBN 0-596-00224-6.
\item Programming Web Services with XML-RPC, Simon St. Laurent, Joe Johnston, Edd Dumbill - O'Reilly. June 2001. ISBN 0-596-00119-3.
\end{itemize}
\end{slide}

\begin{slide}{Liens}
\begin{itemize}
\item http://www.w3.org/ (W3C) (de XML à SOAP en passant par HTTP)
\item http://www.xmlrpc.com/ (de XML-RPC à XML-RPC)
\item http://www.soapware.org/ (de SOAP à SOAP (librairies, serveur,...)
\item http://www.w3.org/2002/ws/ (Services Web)
\item http://www.webservices.org/
\end{itemize}
\end{slide}

\begin{slide}{Acronymes}
\begin{itemize}
\item XML : Extensible Markup Language
\item XML-RPC : XML-Remote Procedure Call
\item SOAP : Simple Object Access Protocol 
\item WSDL : Web Service Definition Language 
\item UDDI : Universal Description, Discovery, and Integration
\item SSL/TLS : Secure Socket Layer / Transport Layer Security 
\end{itemize}
\end{slide}


\begin{slide}{Q\&R}
\begin{itemize}
\item adulau@foo.be
\item http://www.foo.be/cours/securite-webservices/
\item 3B12 DCC2 82FA 2931 2F5B  709A 09E2 CD49 44E6 CBCD
\end{itemize}

\end{slide}

\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t%%% End: 
