Implémentation d une extension Thunderbird pour CADDISC Rapport de Projet de Fin d Études



Documents pareils
Créer et partager des fichiers

Configuration du nouveau Bureau Virtuel (BV) collaboratif de Lyon I

Comment utiliser mon compte alumni?

cbox VOS FICHIERS DEVIENNENT MOBILES! INTERFACE WEB MANUEL D UTILISATION

0.1 Mail & News : Thunderbird

PROCÉDURE D AIDE AU PARAMÉTRAGE

SOMMAIRE ÉTAPES OBLIGATOIRES. Récupérer le connecteur... 3

sommaire ÉTAPES OBLIGATOIRES Récupérer le connecteur... 3

Atelier Le gestionnaire de fichier

Utiliser un client de messagerie

IPS-Firewalls NETASQ SPNEGO

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Vous pouvez à présent à reconfigurer votre messagerie en cliquant ici.

Installation et utilisation du client FirstClass 11

Manuel d utilisation du logiciel Signexpert Paraph

Guide de configuration. Logiciel de courriel

Préparation à l installation d Active Directory

CONTACT EXPRESS 2011 ASPIRATEUR D S

SOUMETTRE DES OFFRES VIA INTERNET E-PROCUREMENT POUR LES ENTREPRISES

Mettre en place un accès sécurisé à travers Internet

Guide Utilisateur Transnet

Utilisation du client de messagerie Thunderbird

Configuration des logiciels de messagerie

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

Public Key Infrastructure (PKI)

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards

Thunderbird est facilement téléchargeable depuis le site officiel

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

SOMMAIRE. Comment se connecter?

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Les cahiers pratiques de Anonymat.org. SocksCap32. Edition du 20 Octobre 2000

Perso. SmartCard. Mail distribution. Annuaire LDAP. SmartCard Distribution OCSP. Codes mobiles ActivX Applet. CRLs

Utiliser le service de messagerie électronique de Google : gmail (1)

Module d anonymisation

Groupe Eyrolles, 2005,

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Qu est ce qu un ?

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Manuel d utilisation de l outil collaboratif

Manuel d utilisation du web mail Zimbra 7.1

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

TP01: Installation de Windows Server 2012

Sécurisation des accès au CRM avec un certificat client générique

Etude d Exchange, Google Apps, Office 365 et Zimbra

LAB : Schéma. Compagnie C / /24 NETASQ

E.N.T. Espace Numérique de Travail

Informations sur l utilisation du webmail du CNRS. Webmail du CNRS. Manuel Utilisateur

Installation et utilisation d'un certificat

Nous souhaitons fournir un service sécurisé sans pour autant chiffrer sans garantir la fiabilité du chiffrement.

L accès à distance du serveur

cbox VOS FICHIERS DEVIENNENT MOBILES! POUR CLIENT MAC OS X MANUEL D UTILISATION

Fonctionnement du courrier électronique

cbox VOS FICHIERS DEVIENNENT MOBILES! POUR ORDINATEURS DE BUREAU ET PORTABLES WINDOWS ÉDITION PROFESSIONNELLE MANUEL D UTILISATION

Guide d administration de Microsoft Exchange ActiveSync

Manuel d'installation de GESLAB Client Lourd

La mémorisation des mots de passe dans les navigateurs web modernes

Disque Dur Internet «Découverte» Guide d utilisation du service

- CertimétiersArtisanat

Manuel d utilisation du site web de l ONRN

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 20/06/2007. AUTEUR : Equipe technique Syfadis

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 12/09/2008. AUTEUR : Equipe technique Syfadis

Documentation utilisateur "OK-MARCHE" Historique des modifications. 3.0 Mise à jour complète suite à version OK-MARCHE V2.2. de marchés publics

Serveur de messagerie sous Debian 5.0

Documentation Honolulu 14 (1)

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Les dossiers compressés (ou zippés)

Comment se connecter au dossier partagé?

Outlook Présentation.

Création de votre compte de messagerie IMAP

SE CONNECTER A LA MESSAGERIE ACADEMIQUE ET A CIRCON SCRIPT

Formation. Module WEB 4.1. Support de cours

Procédure Platine Exchange 2010 Accompagnement à la migration de votre compte 09/08/ Version 1.0 Hébergement web professionnel

CTIconnect PRO. Guide Rapide

Guide d installation et d utilisation

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

UltraBackup NetStation 4. Guide de démarrage rapide

DELEGATION ACADEMIQUE AU NUMERIQUE FORMATION ADMINISTRATEUR SCRIBE 2.3 ET CARTABLE EN LIGNE (CEL)

- CertimétiersArtisanat

SOMMAIRE. 3. Comment Faire? Description détaillée des étapes de configuration en fonction du logiciel de messagerie... 3

CONFIGURATION DE LA RECEPTION DES MAILS EN POPS.

Guide de l utilisateur du Centre de gestion des licences en volume LICENCES EN VOLUME MICROSOFT

OFFICE OUTLOOK QUICK START GUIDE

La sécurité des Réseaux Partie 7 PKI

Accès à la messagerie électronique HES

Installation d un manuel numérique 2.0

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

GUIDE D UTILISATION DES SERVICES PACKAGES

Guide Utilisateur. Edition Mars Agenda. s. Evènements. Synchroniser avec les identités de gestion, de. Messagerie interne. Post-it.

1. Mise en œuvre du Cegid Web Access Server en https

Comment déposer les comptes annuels des associations, fondations et fonds de dotation.

ACCEDER A SA MESSAGERIE A DISTANCE

Connecteur Zimbra pour Outlook 2007 et 2010 (ZCO) w

LA CARTE D IDENTITE ELECTRONIQUE (eid)

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Tropimed Guide d'installation

Serveur mail sécurisé

Configuration des téléphones VoIP via le web

sommaire Archives... Archiver votre messagerie... Les notes... Les règles de messagerie... Les calendriers partagés Les listes de diffusions...

Transcription:

Implémentation d une extension Thunderbird pour CADDISC Rapport de Projet de Fin d Études Grégory Ferrin Salma Ferjani Thibault Jahan Loïc Paquette Yves Yoseph Encadré par M me Maknavicius-Laurent (lor) Institut National des Télécommunications Évry juin 2005

ARAD & SSR Résumé Ce rapport est le fruit du travail conjoint de deux élèves de l option arad, de deux élèves de l option ssr, et d un étudiant en mastère spécialisé ssr dans le cadre de leurs projet de fin d études. Il présente le résultat du développement d une extension pour le client de courrier électronique Mozilla-Thunderbird permettant la récupération et la vérification de certificats en ligne. Le projet était encadré par M me Maknavicius-Laurent (département lor), M me Gastellier-Prévot (département rst) et MM. Gardie et Hennequin (département lor), à l Institut Nationat des Télécommunications. Extension Thunderbird pour CADDISC

ARAD & SSR Sommaire 1 Introduction 1 2 Création d une extension 3 3 Récupération d un certificat 10 4 Vérification d un certificat 17 5 Industrialisation 22 6 Conclusion 25 A Questionnaire 26 B Références 31 Extension Thunderbird pour CADDISC

Introduction Chapitre 1 Introduction Le projet caddisc a été développé en 2003 par quatre écoles du Groupement des Écoles de Télécommunications (le get) : enic de Lille, enst de Bretagne, enst de Paris et l int. Dans un article 1, David Wheeler propose de combiner les travaux effectuer dans les domaines de dnssec et de ldap pour implémenter une pki (Public Key Infrastructure Infrastructure à Clef Publique, ou icp) sécurisée. Puisque le standard dnssec rencontre plusieurs problèmes, ldap semble être la solution pour gérer localement les clefs publiques des certificats affectés à des utilisateurs comme à des appareils (serveurs, station de travail...). Fig. 1.1 icp à deux niveaux 1 une url est proposée en section B.1 Extension Thunderbird pour CADDISC 1

Introduction On peut ainsi définir une icp à deux niveaux (présentée dans la figure 1.1) : une globale gérer à l aide de dnssec, et une locale gérée par des serveurs ldap, et utilisable pas des entreprises, ou des écoles. caddisc fournit une infrastructure à clef publique qui permet de vérifier des certificats et des clefs publiques. Le projet a développé pour cela un client scvp (Simple Certificate Validation Protocol Protocole Simple de Validation de Certificat). Le problème majeur des icp est le passage de l état de modèle éprouvé et stable à celui de produit industriel et facilement déployable à grande échelle. Leur déploiement repose donc sur la facilité qu auront les futurs utilisateurs à l utiliser. C est dans cette optique que ce projet de fin d études conjoint à l option arad et ssr a été mis en place, et que l extension a été développée. Elle devrait permettre de récupérer un certificat de manière explicite, de vérifier si ce dernier est valable. S il ne l est pas l utilisateur devrait être notifié de cet état de fait. De plus nous avons interrogé 2 différents responsables de l administration de la messagerie électronique au sein des différentes écoles du get. Ils nous ont exposé les systèmes en production, donné leur avis sur les infrastructures pki et les évolutions envisagées. Les clients mail majoritairement utilisés sont Mozilla, Mozilla-Thunderbird ainsi qu Eudora (enst) et Outlook Express. Cependant, tous les établissement ont étudié un éventuel déploiement de Thunderbird. Notre extension csc, développée pour Thunderbird pourrait donc être à terme être installé sur un nombre significatif de postes. Les problêmes liés à l usurpation d identité dans la messagerie électronique ne sont pas répandus mais existent. Il faut savoir que la sécurité au niveau de la messagerie électronique est la même que celle du courrier traditionnel. En dehors du cadre pédagogique, les outils de chiffrement authentification (gpg, Gnupg,...) ne sont pas utilisés. Pour la plupart, l investissement (temps, moyens,...) serait trop lourd par rapport au résultat attendu. D autant plus que ces outils sont difficilement administrables. Les responsables interrogés savent vérifier un certificat, mais ne le font que rarement. Ces personnes étant des utilisateurs avancés, on est en droit de se poser la question sur les utilisateurs courants de la messagerie. Une extension vérifiant les certificats pourrait s avérer utile. Le nombre moyen de courriers électroniques échangés sur le serveur d un établissement est de 50 000 par jour (int et équivalent pour enst et enst-b). Dans l ensemble, les responsables nous font part de leur intérêt pour une solution simple d authentification et de vérification de certificats facilement administrable. s2ia-int pense mettre en place un système de vérification et d échange électronique sécurisé dans un futur proche. 2 Le détail de cette enquête est présenté dans l annexe A Extension Thunderbird pour CADDISC 2

Création d une extension Chapitre 2 Création d une extension Mozilla utilise une combinaison de technologies pour la création d extension. Un langage spécifique, le xul (pour Xml User-interface Language langage Xml d interface utilisateur) et des langages de script parmis lesquels le javascript. xpi (Cross-Platform Install Installation ) est un format permettant aux applications de la fondation Mozilla (Seamonkey la suite Mozilla, Thunderbird le client de courrier électronique, Firefox le navigateur web...) ou tout autre application basée sur xul d installer des extensions pour celles-ci. Un fichier xpi est en fait un fichier compressé au format zip qui contient un script d installation (install.rdf, voir le listing 2.1) à la racine de l archive. Le paquetage contient une archive jar qui contient elle même l arborescence de l extension. 2.1 Création de l arborescence L arborescence L arborescence d une extension écrite pour un composant de Mozilla suit des règles bien précises (celle que nous avons développée est présentée dans le listing 2.2). Le répertoire content contient le cœur de l extension. La description de l interface (présentée dans la section 2.2), ainsi que les fichiers de script (qui sont présentés au chapitre 4, section 4.2.1) qui la feront fonctionner. Le répertoire locale contient les données de localisation (l adaptation à l environnement linguistique de l utilisateur, comme expliqué en section 2.3). Enfin le répertoire skin contient des données de mise en forme et d allure. Nous n avons pas développé cet aspect de l extension et cela ne sera donc pas traité dans ce rapport. Extension Thunderbird pour CADDISC 3

Création d une extension Listing 2.1 Le fichier install.rdf type <?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <Description about="urn:mozilla:install-manifest"> <em:id> {identifiant unique} </em:id> <em:version>0.1</em:version> <em:targetapplication> <Description> <em:id>{identifiant de thunderbird}</em:id> <em:minversion>0.9</em:minversion> <em:maxversion>1.0.2</em:maxversion> </Description> </em:targetapplication> <em:name> nom de l extension </em:name> <em:description> description de l extension </em:description> <em:creator> auteur(s) de l extension </em:creator> <em:homepageurl> URL du site de l extension </em:homepageurl> <em:abouturl> chemin chrome vers les informations sur l extension </em:abouturl> <em:file> <Description about="urn:mozilla:extension:file:extension.jar"> <em:package>content/extension/</em:package> <em:locale>locale/en-us/extension/</em:locale> <em:locale>locale/fr-fr/extension/</em:locale> <em:skin>skin/classic/extension/</em:skin> </Description> </em:file> </Description> </RDF> Extension Thunderbird pour CADDISC 4

Création d une extension Listing 2.2 L arborescence de l extension csc/ csc.xpi csc/fichier.xpi csc/install.rdf csc/chrome/ csc/chrome/csc.jar csc/chrome/content/ csc/chrome/content/csc/ csc/chrome/content/csc/contents.rdf csc/chrome/content/csc/csc.xul csc/chrome/content/csc/csc.js csc/chrome/locale/en-us/csc/ csc/chrome/locale/en-us/csc/contents.rdf csc/chrome/locale/en-us/csc/csc.dtd csc/chrome/skin/classic/csc/ csc/chrome/skin/classic/csc/contents.rdf csc/chrome/skin/classic/csc/csc.css Les fichiers content.rdf Chaque répertoire contient un fichier content.rdf décrivant l ensemble des fichiers qu il contient et leur fonction. Ainsi, le listing 2.3 décrit comment certaines parties de l interface de Thunderbird décrites dans les fichiers globaloverlay.xul et messengercompose.xul seront surimprimées par l interface décrite dans le fichier cscmessengeroverlay.xul de notre extension. 2.2 Création du menu supplémentaire Le menu dédié à l extension, appelé «csc», sera disponible dans la fenêtre principale à partir du menu «Outils» comme le montre la figure 2.1. Il comprendra un certain nombre d actions, et des références d information et d aide : Récupérer un certificat Vérifier un certificat Préférences de csc À propos de csc Pour cela il faut utiliser la technique des overlays de Mozilla. Cette technique permet de redéfinir tout élément en en superposant de nouveaux. Les fichiers contenant ces éléments sont écrits en xul. Chaque élément d une application de Mozilla est décrit dans un fichier unique par rapport à l espace de nommage chrome. Nous avons donc défini un fichier contenant une réécriture du menu «Outils» de Thunderbird. Ce fichier est appelé cscmessengeroverlay.xul. Le menu «Outils» a pour identifiant taskpopup. On ajoute donc l élément <menu> avec comme indentifiant menucsc et en précisant qu on veut qu il soit positionné après le menu de la console Javascript dont l identifiant est Extension Thunderbird pour CADDISC 5

Création d une extension Listing 2.3 Le fichier content.rdf type <?xml version="1.0"?> <rdf:rdf xmlns:chrome="http://www.mozilla.org/rdf/chrome#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:seq about="urn:mozilla:package:root"> <rdf:li resource="urn:mozilla:package:csc"/> </rdf:seq> <rdf:description about="urn:mozilla:package:csc" chrome:displayname="caddisc SCVP Client 0.1" chrome:author="les auteurs" chrome:authorurl="http://www-lor.int-evry.fr/~maknavic/csc/" chrome:description="description du paquet" chrome:extension="true" chrome:name="csc"/> <rdf:seq about="urn:mozilla:overlays"> <rdf:li resource="chrome://global/content/globaloverlay.xul"/> <rdf:li> chrome://messenger/content/messengercompose/messengercompose.xul </rdf:li> </rdf:seq> <rdf:seq about="chrome://global/content/globaloverlay.xul"> <rdf:li> chrome://csc/content/cscmessengeroverlay.xul </rdf:li> </rdf:seq>--> <rdf:seq about="chrome://messenger/content/messengercompose/messengercompose.xul"> <rdf:li> chrome://csc/content/cscmessengeroverlay.xul </rdf:li> </rdf:seq> </rdf:rdf> Extension Thunderbird pour CADDISC 6

Création d une extension Fig. 2.1 Le menu de l extension en Français Listing 2.4 Le menu dans le fichier cscmessengeroverlay.xul <menupopup id="taskpopup"> <menu id="menucsc" label="&csc.messengermenu.value;" accesskey="&csc.messengermenu.accesskey;" insertafter="javascriptconsole"> <menupopup id="menucscpopup"> <menuitem id="csc_get" label="&csc.get.value;" accesskey="&csc.get.accesskey;" oncommand="cscgetcertificate();"/> <menuitem id="csc_verif" label="&csc.verif.value;" accesskey="&csc.verif.accesskey;" oncommand="cscverifycertificate();"/> <menuseparator/> <menuitem id="csc_prefs" label="&csc.prefs.value;" accesskey="&csc.prefs.accesskey;" oncommand="cscpreferencesstartup();"/> <menuitem id="csc_about" label="&csc.about.value;" accesskey="&csc.about.accesskey;" oncommand="cscviewabout();"/> </menupopup> </menu> </menupopup> Extension Thunderbird pour CADDISC 7

Création d une extension JavascriptConsole. Pour avoir les quatre sous-menus, on doit définir aussi un élément <menupopup> pour contenir les éléments <menuitem> qui sont les derniers de la chaîne. On associe à chaque <menuitem> une fonction Javascript qui sera appelée lorsqu on cliquera sur le menu correspondant. 2.3 Création des données locales Fig. 2.2 Le menu de l extension en Anglais Listing 2.5 L appel aux références pour les menus <menuitem id="csc_get" label="&csc.get.value;" accesskey="&csc.get.accesskey;" oncommand="cscgetcertificate();"/> <menuitem id="csc_verif" label="&csc.verif.value;" accesskey="&csc.verif.accesskey;" oncommand="cscverifycertificate();"/> Cette extension est écrite pour pouvoir être utilisée facilement dans le cadre du get, elle est donc disponible en Français. Mais afin de ne pas perdre de vue des objectifs à plus long terme (voir la chapitre 5, section 5.1.1), nous Extension Thunderbird pour CADDISC 8

Création d une extension avons, dès le départ, mis au point une version en Anglais, comme le montre la figure 2.2. Cela est possible par l utilisation de références dans le code xul (comme montré dans le listing 2.5) de l interface utilisateur. Ces références sont disponibles dans les deux langues et c est le mécanisme interne de Thunderbird qui sélectionne la bonne langue. Les fichiers contenant les données locales sont appelés csc.dtd et sont composés d éléments tels que : <!ENTITY csc.verif.value "évrifier un certificat"> 2.4 Installation de l extension CSC 1. allez dans le menu «Outils» («Tools» pour la version anglaise) et choisissez le sous-menu «Extensions». 2. une nouvelle fenêtre s ouvre et vous devez alors choisir cliquer sur la commande «Install». 3. choisissez ensuite l extension csc dans le répertoire où vous l avez téléchargée. 4. Confirmez que vous voulez bien installer cette extension en cliquant à nouveau sur «Install». 1 5. Redémarrez maintenant le programme Thunderbird, et l extension sera totalement installée. 2.5 Configuration de l extension Pour que l extension fonctionne, vous devez renseigner les champs suivants après avoir cliqué sur le menu «Préférences» de csc : l emplacement du programme de récupération de certificat ; l emplacement du programme «clt» qui est le client scvp (ce petit programme va nous permettre d envoyer les requêtes scvp spécifiques en destination du serveur scvp) ; l adresse du serveur scvp (dans le cadre de l int, il s agit de l adresse http ://jars) ; le port d écoute du serveur scvp. Dans le cadre du serveur scvp de l int il s agit du port 8 000. 1 Nous n avons pas signé l extension alors ne vous inquiétez pas si le terme «Unsigned» apparaît. Extension Thunderbird pour CADDISC 9

Récupération d un certificat Chapitre 3 Récupération d un certificat La partie du projet développée ici est consacrée à la fonction permettant la récupération du certificat. Dans un premier temps nous nous consacrerons à la phase d analyse qui présentera la pertinence d un tel outil et les choix d implémentation afin d adapter la solution aux projets caddisc et vericert. Puis nous décrirons les différentes parties des programmes créés. Enfin nous présenterons les limites et les difficultés présentes dans notre projet. 3.1 Analyse du problème L introduction nous a permis de voir l importance d une pki pour la sécurité dans l échange des mails. Cependant avant de pouvoir faire confiance à un certificat, il faut être sûr que celui-ci est associé à la personne avec qui l on veut communiquer. Le projet caddisc et la deuxième partie de ce rapport traitent de la vérification des certificats. Pour pouvoir mettre en œuvre cette fonction, il est nécessaire de récupérer le certificat de la façon la plus simple possible et nous nous intéressons à cette problématique. La récupération automatique du certificat à partir de l adresse mail permet principalement de faciliter l utilisation des services de sécurité et d essayer de les rendre les plus transparents possibles à l utilisateur. Actuellement l échange des certificats s effectuait principalement par des procédures compliquées et sécurisées (utilisées par exemple dans Openpgp) ou très simples mais sans réelle garantie de validité du certificat (envoie par mail en pièce jointe). L implémentation de cette extension Thunderbird permet de rajouter une fonction supplémentaire à cet utilitaire de mail, de plus en plus utilisé, fournissant la récupération du certificat. Extension Thunderbird pour CADDISC 10

Récupération d un certificat 3.1.1 Hypothèses initiales Dans un premier temps, nous avons choisi de restreindre les possibilités de stockages des certificats. En effet bien qu il existe plusieurs possibilités de stockages (bases de données standard, ldap, etc.) le projet caddisc qui sera en charge de la vérification des certificats ne supporte que le cas où ceux-ci sont stockés dans une base ldap. Nous nous limiterons donc dans ce projet aux cas où les certificats sont stockés dans un annuaire ldap public Le but du programme créé est donc dans un premier temps de retrouver l adresse du serveur ldap à partir d une adresse mail. Pour cela, nous avons réfléchi aux différents endroits où l on pouvait trouver des informations concernant ces serveurs. Le projet caddisc qui vérifie le certificat utilise l adresse du serveur ldap qu il trouve directement dans le certificat, cependant dans notre cas nous ne possédons pas celui-ci. Notre idée a été d utiliser le dns associé au nom de domaine associé à l adresse mail. En effet un rr (Ressource Record) facultatif, le rr srv, permet de préciser sur le dns les références des serveurs classiques dont ldap fait partie. Ainsi ce projet repose sur deux hypothèses importantes : les certificats sont stockés dans un serveur ldap ; le rr srv du dns contient l adresse du serveur ldap. 3.1.2 Démarche à suivre Si ces conditions sont respectées, pour obtenir le certificat de login@int-evry.caddisc.enst.idsa.prd.fr nous devons suivre les étapes suivantes : envoyer une requête concernant les rr srv au dns int-evry.caddisc.enst.idsa.prd.fr et obtenir l adresse du serveur ldap associé ; envoyer une requête au serveur ldap afin d obtenir le certificat associé à l adresse mail (qui est unique). La figure 3.1 décrit ces étapes. 3.2 Implémentation Comme vu dans la section 2 sur la création d extension pour Thunderbird, l ajout de fonctionnalités dans les barres de menu nécessite l appel à des fonctions écrites en Javascript. Ainsi dans un premier temps nous avons essayé de réaliser notre programme en Javascript, puis nous avons réalisé un script Shell (unix) et enfin un programme en C permettant la récupération du certificat. Extension Thunderbird pour CADDISC 11

Récupération d un certificat Fig. 3.1 Démarche de récupération d un certificat 3.2.1 Utilisation du langage Javascript Dans un premier temps nous avons essayé de développer notre application en utilisant le langage Javascript. En effet la création d extension pour les logiciels Mozilla s appuie sur le langage xul et Javascript. Cependant nous nous sommes vite retrouvé confronté aux limites de ce langage très orienté Internet. Il fut très performant pour l analyse de caractères ou les applications fenêtrées, mais nous n avons pas réussi à envoyer une requête autre que http en utilisant ce langage. Or, nous avons besoin d envoyer des requêtes dns et ldap et nous avons donc décidé d abandonner ce langage et de chercher une autre solution. Comme le projet de vérification de certificats est fondé sur l utilisation d un exécutable appelé par la suite par un script en Javascript, nous avons opté pour cette méthode afin de réaliser notre application. 3.2.2 Script Shell (unix) Après avoir tenté la programmation en Javascript, nous avons décidé de faire un premier script Shell sous unix. Le principal rôle de celui-ci étant de pouvoir vérifier les résultats des requêtes et de confirmer ainsi nos différentes hypothèses sur les champs du dns et sur la possibilité d obtenir un certificat grâce à l adresse mail. Ce script prend en argument l adresse mail du destinataire, récupère son certificat au format «.pem» et le stocke dans un fichier. Les deux principales commandes utilisées dans ce script sont : Extension Thunderbird pour CADDISC 12

Récupération d un certificat La commande dig Cette commande permet de tester et d interroger un serveur dns. Elle permet de construire différentes sortes de requêtes pour accéder aux informations stockées dans le dns. L option «-t» permet de spécifier le type du «Ressource Record» que l on souhaite atteindre. Pour notre cas, nous utilisons la commande «dig» pour obtenir les informations sur le serveur ldap (nom, port...). Ainsi, à partir de l adresse mail, nous pouvons accéder au nom de domaine correspondant. Si un service ldap est disponible pour ce domaine, le nom respecte la syntaxe suivante : _ldap._tcp.nomdedomainemail Cette règle étant générique (définie dans le rfc 2782), nous pouvons l utiliser pour interroger le nom de domaine ainsi construit. Exemple d utilisation : dig t SRV_ldap._tcp.micro.int-evry.fr renvoie les deux entrées suivantes : 0 100 389 carpates.micro.int-evry.fr 0 100 389 oural.micro.int-evry.fr qui correspondent aux deux serveurs ldap disponibles pour le nom de domaine micro.int-evry.fr. Pour chaque réponse, la première colonne correspond à la priorité, la deuxième au poids, la troisième au numéro de port et la dernière au nom du serveur. La commande ldap_search Cette commande permet d interroger un serveur ldap pour obtenir les informations qui y sont stockées. Pour notre cas, nous avons besoin d obtenir le certificat d une personne connaissant son adresse mail. À titre d exemple, nous exécutons les deux commandes suivantes : Ldap_search -x -H ldap:// jars:9009/ -b -s base namingcontexts renvoie la base suivante : o=int-evry, c=fr Ldap_search -x -H ldap://jars:9009/ -b o=int-evry,c= FR (mail=*gardie *) usercertificate Cette commande interroge le serveur ldap en précisant la base de recherche, le filtre (qui porte sur l adresse mail) et les enregistrements cherchés (ici le certificat usercertificate) Le script en Shell a été testé sur le serveur ldap du projet caddisc. Extension Thunderbird pour CADDISC 13

Récupération d un certificat 3.2.3 Le programme en C Nous avons ensuite essayé de réaliser un programme en C qui permet de réaliser les mêmes fonctionnalités. L avantage étant qu un module en C s intègre plus facilement dans les projets caddisc et vericert (développés eux-mêmes en C) et permet de rajouter d autres fonctionnalités et d apporter des optimisations par la suite. La programmation en C est beaucoup plus complexe que le script en Shell. Nous avons essayé de nous inspirer des parties déjà développées dans le cadre du projet caddisc. La première phase de notre travail a donc consisté à comprendre le code source déjà existant et à en extraire les parties dont nous avons besoin. Les principales fonctions de notre programme sont les suivantes : récupération d une adresse mail et vérification de sa validité ; extraction du nom de domaine correspondant et construction du nom du service ldap associé ; interrogation du nom de domaine ainsi construit et récupération du champ srv ; traitement des résultats obtenus afin de ne garder que les réponses correspondantes au champ srv ; obtention à l aide d une analyse syntaxique du nom du serveur. ldap et du numéro de port ; construction de l adresse url du serveur ldap à partir des informations obtenues ; établissement d une connexion ldap ; lorsque cette connexion se déroule avec succès, envoi de la requête ldap qui permet de récupérer le résultat ; traitement du résultat de la commande. 3.3 Limites et problèmes 3.3.1 Difficultés rencontrées, problèmes L environnement utilisé pour les tests est celui mis à notre disposition dans le cadre du projet caddisc. Ainsi, nous avons utilisé comme zone de nom du serveur dns int-evry.caddisc.enst.idsa.prd.fr, nous avons ensuite demandé au responsable de cette zone de rajouter le rr srv qui redirigeait vers le serveur ldap associé à caddisc et disponible sur la machine jars.int-evry.fr. Cependant ce serveur ldap n est rempli que de personnes imaginaires dont seulement trois possèdent des adresses mails sans aucune logique avec le nom de domaine (toto@int.fr ou fabien.moulin@int-evry.fr par exemple). Dans un cas réel où le serveur ldap serait utilisé pour stocker les certificats des personnes associées à un nom de domaine, on trouverait dans les champs mail de ces personnes l adresse avec ce nom de domaine. Extension Thunderbird pour CADDISC 14

Récupération d un certificat Pour pointer vers ce serveur ldap notre programme a besoin de recevoir en argument une adresse mail de la forme login@int-evry.caddisc.enst.idsa.prd.fr. Pour réaliser nos tests nous avons donc du faire un arrangement pour que le nom de domaine recherché soit toujours celui des serveur de caddisc. Dans un deuxième temps il faudrait rajouter des personnes dans la base ldap avec un certificat et une adresse mail de la forme login@int-evry.caddisc.enst.idsa.prd.fr pour réaliser des tests réels. Nous avons également rencontré un problème d intégration du module que nous avons programmé à Thunderbird : dans notre module, les certificats sont récupérés en format pem (format classique) ou der (format moins répandu utilisé par le projet caddisc et donc par la deuxième partie du projet), or le menu de Thunderbird gérant les certificats nécessite l utilisation du format pkcs12 dont la conversion passe par l extraction des clés et la saisie d un mot de passe. Afin que l utilisateur n intervienne pas dans cette procédure de récupération de certificat nous avons décidé de ne pas gérer cette conversion. 3.3.2 Contraintes d utilisation Le programme nécessite l utilisation des librairies ldap, dns et Openssl, donc pour être utilisable, ces libraires doivent être installées au préalable chez le client Il existe quelques contraintes à l utilisation de ce programme. Dans un premier temps, aucun de nos exécutable n a été testé sous Windows et il semblerait qu il ne marche pas avec ce système d exploitation. Il serait donc possible de perfectionner notre programme afin de le rendre inter opérable. De plus, les programmes -aussi bien celui développé en C que le script Shell- nécessitent l utilisation des librairies ldap, dns et Openssl. Ceci implique des installations qui peuvent être contraignantes, d autant plus qu après avoir cherché quelques renseignements, il semblerait que ces logiciels évoluent rapidement et que notre programme puisse demander une mise à jour pour suivre ces évolutions. 3.3.3 Limites du projet Notre programme repose sur des hypothèses fortes qui consistent en l utilisation d un annuaire ldap pour le stockage des résultats et l utilisation du champ srv pour stocker les informations sur le ldap. Ces hypothèses que nous avons établies dés le départ sont loin d être réalisées dans tous les cas. En effet, ldap n est pas le seul moyen utilisé aujourd hui pour le stockage d informations mais nous espérons que son déploiement se développe dans les années à venir vu les différentes fonctionnalités qu il offre et qui en font un annuaire performant. Extension Thunderbird pour CADDISC 15

Récupération d un certificat D autre part, l utilisation du champ srv dans les dns est facultative et très peu déployée actuellement. De part ces hypothèses, nous pouvons rencontrer d autres cas où notre programme ne peut fonctionner : en effet, la connexion au serveur ldap se fait actuellement en anonyme car nous supposons que les certificats étant publics sont accessibles à toute personne, donc si des listes de contrôle d accès existent (acl), le champ certificat peut ne plus être disponible, et nous devrons dans ce cas disposer d un couple login, mot de passe valides pur accéder à l information. Extension Thunderbird pour CADDISC 16

Vérification d un certificat Chapitre 4 Vérification d un certificat 4.1 SCVP scvp (Simple Certificate Validation Protocol) est un protocole de vérification de certificats, défini dans le draft ietf 1 Le protocole scvp permet à un client de se décharger de la vérification de certificats à un serveur. Le serveur scvp peut fournir au client différentes informations relatives au certificat vérifié, tel que la validité du certificat, le chemin de confiance de la certification, et le statut concernant une éventuelle révocation. Le protocole scvp a été créé dans le but de simplifier l implémentations de client et de permettre aux entités utilisarices de centraliser la vérification et la politique de sécurité. 4.2 XPCOM Le code écrit en javascript implémentant les fonctionnalités ne peut pas appeler de programme externe. Nous devons utiliser pour cela les composants xpcom intégrés à Mozilla-Thunderbird. xpcom (Cross Platform Component Object Model Modèle d Objet à Composant?) est le système de composants de mozilla. XPCOM permet de développer des composants externes en C=C + + ou d autres languages/scripts et de les intégrer à Mozilla tout en assurant une portabilité de ces composants. 4.2.1 Fonctions utilisées Nous utilisons les composants suivant nsilocalfile. Ce composant permet de faire un appel externe à un éxécutable ou script. Ce composant nous permet d accéder à un fichier en lecture. Cela nous permet de récupérer le résultat en sortie du programme appelé. 1 Voir le lien dans l annexe B Extension Thunderbird pour CADDISC 17

Vérification d un certificat Listing 4.1 Utilisation de XPCOM Components.classes["@mozilla.org/file/local;1"].createInstance(Compon ents.interfaces.nsilocalfile); file.initwithpath("/home/thibaut/test.sh"); var klass = {}; var psdata = nul; klass.file = Components.classes["@mozilla.org/file/local;1"]; klass.process = Components.classes["@mozilla.org/process/util;1"]; klass.stream = Components.classes["@mozilla.org/network/file-input-stream;1"]; klass.jsstream = Components.classes["@mozilla.org/scriptableinputstream;1"]; var path = "/home/loic/test_ping.txt"; var mode_mask = 0x01, perm_mask = 0; // open(2) var file = klass.file.createinstance(components.interfaces.nsilocalfile); file.initwithpath(path); var stream = klass.stream.createinstance( Components.interfaces.nsIFileInputStream); stream.init(file, mode_mask, perm_mask, 0); var jsstream = klass.jsstream.createinstance( Components.interfaces.nsIScriptableInputStream); jsstream.init(stream); 4.3 Analyse des fonctions de la vérification d un certificat La vérification d un certificat auprès d un serveur scvp se fait à l aide d un client scvp (programme «clt»). Le client scvp enverra une requête au serveur scvp de la forme suivante :./clt cetificat_a_verifier.der URI_du_serveur:port_de_communication et le serveur répondra en donnant une certaine valeur au champs «cr» suivant l état du certificat. Le fichier csc contient trois fonctions associées à la vérification d un certificat. Le principe de ces fonctions est de récupérer les arguments à envoyer au serveur scvp, de lui envoyer, de récupérer les résultats de la requête et de les interpréter. Pour cela nous utilisons une fonction qui va nous permettre d exécuter un script (ou un programme). Nous utilisons un script plutôt qu un programme car celui-ci nous permet de stocker les résultats dans un fichier. Voici la description des trois fonctions utilisées dans la vérification d un certificat. 4.3.1 Fonction cscverify() La fonction cscverify() est la fonction qui va permettre d exécuter le programme client scvp «clt». La première phase de cette fonction est de récupérer les champs nécessaires au Client scvp afin de s exécuter. Nous allons donc récupérer les Extension Thunderbird pour CADDISC 18