Home

Secure Java Card for Federate Identity Management

image

Contents

1. 121 6 4 4 Servlet de t l chargement 122 6 4 5 Pages de Management 123 6 4 6 Pages accessibles s o ens ees else ae ue de de a es Bw pe tee 123 6 437 R sultatides best eu ea aw are eS eee amp EAN ge 123 GAS CorrectiOns 2 5 eee ae ee ee BOA REPRE RE LE 123 6 5 Visualisations des donn es chang es 125 6 5 1 Authentification Identity Provider 125 6 5 2 Envoi d une requ te SAML depuis le SP l IdP 126 6 5 3 Envoi d une r ponse avec authentification depuis l IdP au SP 127 6 5 4 R sultats siaa 0 NE mener ot ha ee de LE a A Le dus 127 7 D ploiement 128 7 1 Compilation et assemblage 129 7 2 Installation et configuration 131 7 2 1 Installation d un fournisseur d identit 131 7 2 2 Installation d un fournisseur de service 131 7 2 3 Installation du client 132 7 3 Mise en place des environnements de d veloppement 133 As tes logiciels a at dome hot Roches es nat AA 134 FAT Eclipse et JOOP tas aana a e a e he a tre E 134 7 4 2 JavaScript Form Validation 134 AS J rsigner big eh ah a ae me ae Bk raies ace GE Lt Re ES 135 TAA O E 135 8 Conclusion 137 9 Remerciements 139 10 Figures 140 11 Bibliog
2. 67 5 2 1 Interface de l applet WEB d administration 67 5 2 2 Interface de l applet WEB d authentifcation 68 b 2 3 Contraintes Le MU eA ANR aa 69 5 2 4 Communication avec la carte 70 5 2 5 Communication avec l Identity Provider 71 5 2 6 Transfert du pilote jct dll et du fichier StyxWebSecurity cap 72 5 2 7 Installation de StyxWebSecurity cap 73 5 2 8 Traitement et processus 74 5 3 Identity Provider sr Eo D mienne rota a d ce ne uma 75 Did Lintertace 2 40 eee co sn uns nn a osa BOE Matt 75 5 3 2 Les servlets d authentification et d administration 78 53 37 Logique metier e Li AA LEE Da MA 81 5 3 4 Signature des applets WEB 81 30 SAME a atA a a de dr Capers amp So A A 82 54 Service Provider w isana a hs A A ee gaa 86 DAA Interfaces de 2 em eee d ie de da A AR ERS oe eee ee RG 86 5 4 2 Chargement des cl s dans keytool pour SSL 87 dra SAMA ii tote he nasi ie a eves i tet o Gah ee Goatees 88 5 4 4 Modification du toolkit SAML pour la signature des requ tes d authen ULATION case ter ree ge rat neh Teste a ala ae de Bok Tse Dl ete 89 5 5 S curisation des fournisseurs d identit et de service 92 5 01 Tomcat tSSLi oom Rede Bra aa eee a YAS a De 92 5 5 2 Politique de s curit pour l
3. https styxidp 8443 StyxWebSecurity_IdP check_auth jsp Permet de savoir si l on poss de le cookie correspondant l utilisateur s il est authentifi ou non au fournisseur d identit https styxidp 8443 StyxWebSecurity_IdP login_control jsp Ne permet pas d effectuer des operations nuisibles https styxidp 8443 StyxWebSecurity_IdP login jsp Ne permet pas d effectuer des operations nuisibles https styxidp 8443 StyxWebSecurity_IdP saml_auth jsp Ne permet pas d effectuer des operations nuisibles https styxidp 8443 StyxWebSecurity_IdP recv_saml_auth_request jsp Ne permet pas d effectuer des op rations nuisibles mais permet de voir une exception qui indique quel framework est utilis ce qui pourrait aider des personnes malveillantes a trouver des failles org opensaml saml2 binding decoding HTTPRedirectDeflateDecoder doDecode HTTPRedirectDeflateDecoder java 96 org opensaml ws message decoder BaseMessageDecoder decode BaseMessageDecoder java 71 net clareitysecurity websso idp HttpHandler decodeSAMLRequest HttpHandler java 114 https styxidp 8443 StyxWebSecurity_IdP admin jsp Il faut d j pouvoir y acc der mais aucune erreur SQL n est retourn e il n est donc pas possible de faire du SQL injection facilement R sultats Il faut traiter les exceptions qui remonte car elles divulguent des informations sur les framework utilis s et permettent peut tre une pers
4. David Olivier Page 14 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg AOL Novell Sun Intel Oracle NTT franceTelecom Librairies ou produits libres OpenSAML librairie bas niveau permettant de g rer des objets SAML en Java Clareity Security SSO 1 framework bas sur OpenSAML pour cr er des IdP et SP en Java Shibboleth FIM complet bas sur OpenSAML en Java Sun OpenSSO FIM complet utilisant SAML en Java LASSO Librairie en C avec binding en Java permettant d impl menter un Service Provider Authentic Identity Provider en Python SourceID SAML 1 1 Toolkit framework pour faire du SSO avec SAML en Java 3 1 4 InfoCard D finition du principe d InfoCard Digital identity repr sente une identit avec toutes ces informations Il y en a 2 types les g r es qui sont obtenues par un Identity Provider SAML ou OpenID et les autres entr es la main avec des informations personnelles Identity Selector Permet de regrouper les identit s dans un gestionnaire qui autorise leur s lection lors d une identification Windows CardSpace seulement pour Windows Windows CardSpace est un programme qui stocke des digital identities et des r f rences vers des identit s g r es Il permet aussi de s lectionner ces identit s c est aussi un identity selector Chaque identit est repr sent e par u
5. 4 5 Service Provider Le fournisseur de service n a pas beaucoup de fonctionnalit s La premi re est de fournir un service La seconde la plus importante est d utiliser un fournisseur d identit pour authentifier les utilisateurs de ce service La logique m tier est enti rement contenue dans les pages JSP a l exception du toolkit websso et de toutes les librairies requises pour le faire fonctionner Voici donc les pages n cessaires recv_saml jsp Re oit et traite une r ponse d authentification envoy e par le fournis seur d identit request_auth jsp Envoi une requ te d authentification au fournisseur d identit install_keys jsp Permet d installer les cl s et certificats relatifs l utilisation de Tomcat en version s curis e SSL protected jsp La page qui ne peut tre acc d e qu apr s authentification login jsp Connexion de l utilisateur si il n est pas d j authentifi au fournisseur de service Dans ce cas il appelle request_auth jsp logout jsp D connexion de l utilisateur en cours du fournisseur de service index html Page de d monstration qui appelle login jsp lorsque l on veut se connec ter l espace s curis Voici le processus simplifi de traitement des communications SAML entre le fournisseur de service et le fournisseur d identification David Olivier Page 57 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Service
6. Applet WEB d authentification Le fichier g n r est un jar qui doit seulement com prendre les fichiers suivants META INF MANIFEST MF Il faut ajouter cette ligne Class Path rmioffcard jar offcard jar StyxWebSecurity AuthApplet StyxAppletAuth class GUI de l applet StyxWebSecurity AuthApplet StyxAuthProcess class Processus d authentification StyxWebSecurity AuthApplet StyxContinueActionListenner class Action qui contine Vauthentification StyxWebSecurity AuthApplet StyxIDPConnector class Connecteur vers l Identity Provider StyxWebSecurity AuthApplet StyxJCConnector class Connecteur vers la JavaCard StyxWebSecurity AuthApplet StyxModifyActionListenner class Action qui mo difie PIN StyxWebSecurity AuthApplet StyxStartActionListenner class Action qui lance Pauthentification StyxWebSecurity StyxJCInterface class Interface pour RMI et la JavaCard jct d11 Pilote obligatoire Avec Eclipse cliquez sur le projet avec le bouton droit puis export to jar file Base de donn es Il faut g n rer le fichier SQL pour recr er les tables On peut le g n rer avec MySQL Administrator Il faut bien entendu ne pas reprendre les donn es d j ins r es mais juste la structure des tables et les proc dures stock es David Olivier Page 129 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Service Provider et Identity Provider Il faut cliquer sur le projet Eclipse et exporter sous la forme d ar
7. Shibboleth est utilis par les universit s de beaucoup de pays et par SWITCH en Suisse On peut d velopper des extensions pour ce logiciel qui permettent de modifier la fa on dont un utilisateur peut s identifier aupr s de l Identity Provider Le code source et la documentation n cessaire sont disponibles sur le site officiel du projet OpenASelect est une solution open source de Federate Identity Management qui rem place A Select une solution pr c dente qui est utilis e par le gouvernement Danois Il est possible d obtenir le code source et de modifier l identification des utilisateurs N anmoins la documentation est moins abondante que pour Shibboleth et OpenSSO de plus le projet ne parait pas vraiment mature manque d informations disponibles Ce produit n est donc pas retenu pour une impl mentation Java Card Safe for Digital Identity Une Java Card est un espace s curis o les identit s digitales pourraient tre stock es et contr l es seulement les identit s qui doivent se connecter un Identity Server SAML ou OpenID Plusieurs projets et applications existent sur le march et stockent les identit s digitales sur le disque de la machine h te Hors nous savons que la machine h te n est pas forc ment une plateforme s re c est pour cela qu on pourrait augmenter la s curit d une de ces solutions en utilisant une Java Card pour stocker et utiliser les identit s Les 2 solutions existantes sont
8. Windows CardSpace Eclipse Higgins Du point de vue technique cela d pend bien entendu du choix de la solution car elles n offrent pas toutes les m me fonctionnalit s et API de d veloppement bien entendu Higgins est une solution open source contrairement Windows CardSpace Concernant l architecture la carte sert de stockage de donn e pour l application de gestion d identit Il n y a qu une machine qui comprend l application Higgins ou CardSpace et un middleware qu il faut r aliser pour stocker les identit s digitales dans la carte On peut aussi 40 http www openaselect org trac openaselect David Olivier Page 33 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg imaginer porter a l int rieur de la carte la fonctionnalit permettant de v rifier les identit s digitales qui sont reli es un Identity Provider Higgins or CardSpace Middleware to store data in Java Card FIGURE 3 15 Architecture pour Java Card Safe David Olivier Page 34 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Conclusion Le choix de la technologie d pend fortement des attentes li es au projet Les 2 technologies principales OpenID et SAML ont chacune leur force et leur faiblesse Elles ont aussi leur propre contexte d utilisation OpenID sert identifier mais ne sert pas interdire toute personne qui s authentifie acc s au ser
9. priv e 5 L IdP r cup re le challenge et le d crypte avec la cl publique pr sente dans le cer tificat r cup r 6 L IdP contr le la signature du certificat et valide ou non l identification Generate challenge decrypt response amp control check certificate validity with IdP public key end challenge Response challenge encrypted with private key public certificate e S Browser applet Public key to check signed user cert User gt Identity Provider Private key amp Public signed certificate ign user certificate with private IdP Private key to assure identity key FIGURE 3 13 Processus d authentification avec le certificat sign sur la carte 3 3 2 LDAP vs Base de donn es Le choix entre une solution bas e sur la technologie LDAP ou une bas e sur une base de donn es au design propri taire est influenc par les points suivants La facilit de prise en main Une base de donn e propri taire est plus rapidement mise en place qu un LDAP et ne n cessite pas de prendre en compte les diff rentes interfaces d acc s et d utilisation d un LDAP De plus le design peut tre facilement adapt par rapport au besoin de l application L inter op rabilit Dans ce cas la solution du LDAP est avantageuse car elle permet de s int grer dans une architecture existante sans trop de probleme mis a part la gestion des cl s priv publique et
10. protocol HTTP 1 1 maxThreads 150 SSLEnabled true clientAuth false keystorePass styxsp keystoreFile C Documents and Settings olivid05 keystore scheme https secure true sslProtocol TLS gt Dans ce code il faut pr ter attention aux attributs qui d pendent de l installation du keystore keystorePass Le mot de passe du keystore keystoreFile Le chemin o se trouve le keystore 5 5 2 Politique de s curit pour l acc s au pages Par d faut on peut acc der au pages pr sentes sur le serveur soit en HTTP soit en HTTPS Il est int ressant de bloquer l acc s certaines pages avec le mode HTTPS Pour se faire il faut modifier le fichier web xml pr sent dans le dossier WEB INF Service Provider Voici les contraintes de s curit minimum conseill es pour le Service Provider lt security constraint gt lt web resource collection gt lt web resource name gt request auth jsp lt web resource name gt lt url pattern gt request auth jsp lt url pattern gt lt web resource collection gt lt user data constraint gt lt transport guarantee gt CONFIDENTIAL lt transport guarantee gt lt user data constraint gt lt security constraint gt lt security constraint gt lt web resource collection gt lt web resource name gt recv saml jsp lt web resource name gt David Olivier Page 92 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg lt url pattern gt
11. rsp getResponseXML String actionURL rsp getActionURL responseXML responseXML replace lt amp lt responseXML responseXML replace gt amp gt Cette r ponse est ensuite envoy e par un HTTP Post et du Java script pour automatiser lt body onload document forms 0 submit gt lt noscript gt Your browser does not support Javascript or you have disabled Please press the continue button to proceed lt noscript gt lt form action lt out print actionURL gt David Olivier Page 83 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg method post gt lt input type hidden name RelayState value lt out print relayState gt gt lt input type hidden name SAMLResponse value lt out print samlResponse gt gt lt noscript gt lt input type submit value Continue gt lt noscript gt lt form gt lt body gt Fichier de metadata Le fichier de metadata est t l charg par le fournisseur de service pour v rifier la signature de la r ponse d authentification Il est propos au t l chargement par le servlet download java Il est cr avec le certificat courant du fournisseur d identit et son nom dans la classe IdentityProviderManager avec la m thode getMetadata Voici un exemple de ce fichier lt xml version 1 0 encoding UTF 8 gt lt md EntityDescriptor xmlns md urn oasis names tc SAML 2 0 metadata entityI
12. 6 5 4 R sultats Les tests ont prouv s que toutes les donn es sensibles et confidentielles sont transf r es travers des tunnel SSL qui permettent de s curiser les transactions Aucune donn e confiden tielle n est donc directement visible ce qui assure une plus grande s curit de infrastructure Conclusion Tous ces tests et leurs analyse ont permis de mettre jour plusieurs probl mes et de les r soudre dans des nouvelles versions Aucun grand probl me de conception ou de sp cification a t relev et l infrastructure globale parait coh rente sur la partie test e qui est le fournisseur d identit Plusieurs autres parties dont le fournisseur de service n ont pas t test es Le fournisseur de service n est pas optimal et ne peut pas tre test dans son tat actuel cause du syst me de gestion de la p rennit de l authentification entre lui et le fournisseur d identit Actuellement c est un syst me haut niveau en Java script pour les besoins de la d monstration qui est utilis mais pour une s curit accrue il faudrait utilis des services WEB pour que les 2 fournisseurs communiquent directement entre eux David Olivier Page 127 sur 146 7 D ploiement Introduction Ce chapitre explique comment g n rer les fichiers ex cutables et package pour distribuer l application comment installer un nouveau syst me depuis les packages g n r s et comment installer les sources dans les envi
13. Identity Provider Tomcat Server StyxSPBankDemo 192 168 1 2 Service Provider Tomcat Server StyxClient 192 168 1 3 Client qui se connecte l aide du navigateur WEB Trois cas de figure sont essentiellement trait s dans ce sous chapitre ce sont les plus impor tants car les donn es transites par des connexions non s curis es Internet Les donn es qui transite sur le fournisseur d identit uniquement sont beaucoup moins vuln rable et ne sont pas trait es dans ces tests 6 5 1 Authentification l Identity Provider Etat avant la mesure La page login jsp et son applet sont charg dans le navigateur web On se connecte sur la carte avec le PIN aucune transmission n est effectu e jusqu au clique sur continuer D roulement 1 Applet WEB vers IdP appelle du challenge 2 IdP vers Applet WEB envoi le challenge 3 Applet WEB vers IdP Envoi la r ponse R sultat On ne voit aucune information tout est crypt on voit juste les trames SSL de version 3 Dans la mesure en annexe idp_authentification pcap les trames 12 15 15 16 19 23 27 et 27 transporte des donn es crypt es En voici un exemple David Olivier Page 125 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 12 0 005743 192 168 e Frame 12 403 bytes on wire 403 bytes captured Ethernet II Src Intel_25 38 17 00 19 d1 25 38 17 Dst Intel_25 2d 5c 00 19 d1 25 2 Internet Protocol src 192 168
14. Liverpool John Mores Uni versity 2006 IEEE Security and Privacy Identity Management March April 2008 Volume 6 Number 2 Java Card Security Projet de semestre 2008 Aeschlimann Johann et Olivier David EIA FR OpenID 2 0 A Platform for User Centric Identity Management David Recordon VeriSign Inc et Drummond Reed Cordance Corporation Next Steps for Security Assertion Markup Language SAML Samir Saklikar and Subir Saha Motorola India Research Labs 11 2 Sites WEB Apache Tomcat SSL Howto http tomcat apache org tomcat 6 0 doc ssl howto html http tomcat apache org tomcat 3 3 doc tomcat ssl howto html http java4it blogspot com 2007 01 how to configurer tomcat avec https html 143 Secure Java Card for Federate Identity Management HES SO Fribourg Applet and Server Communication http www j nine com pubs applet2servlet Applet2Servlet html http manu e3b org Java Tutoriels ProgrammationReseau AppletServlet htm Blog IDEA http identity centric architecture blogspot com 2006_12 01 archive html CardManager Keys http forums sun com thread jspa messagelD 10025872 Clareity SSO Toolkit http code crt realtors org projects websso wiki WikiStart Cryptographic Authentification with Java Card http www personal umich edu lsiden tutorials signed applet signed applet html Firefox Extensions http www softwaredeveloper com features firefox extension resource 072307 IdentityMeme SAML vs OpenID http
15. fonctionnalit s pr c dentes n ont pas pu tre impl ment es faute de temps cr ation d une CSR sur la carte stockage des certificats de l utilisateur et de l Identity Provider sur la carte impossible de r cup rer les cl s publiques de ses certificats sur la carte dans les d lais impartis ONCARD Applet WEB authentfication Applet WEB admi FIGURE 4 1 Cas d utilisations pour l application on card Les fonctionnalit s peuvent tre regroup es en 2 groupes celles qui servent l administra tion du syst me et celles qui servent l authentification de Putilisateur Les premi res sont utilis es par l applet d administration et les secondes par l applet d authentification Voici une description de chacune d elle Traiter un challenge d authentification lors de la proc dure d authentification ex pliqu e dans le rapport d analyse Strong Authentication on d crit l utilisation d un challenge qui est crypt avec la cl publique de l utilisateur et envoy la carte C est cet instant pr cis que le cas d utilisation est actif car il d crypte avec sa cl priv e 1 Certificate Signing Request requ te de signature de certificat http en wikipedia org wiki Certificate_ signing_request David Olivier Page 38 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg le challenge et le crypte ensuite avec la cl publique du fournisseur po
16. identitymeme org doc draft hodges saml openid compare 06 html JavaScript Form Validation http www javascript coder com html form javascript form validation phtml Jarsigner in java http www onjava com pub a onjava 2001 04 12 signing_jar html page 2 Keystore and Private key http www agentbob info agentbob 79 AB html Lasso http lasso entrouvert org OpenASelect http www openaselect org trac openaselect wiki DevelopingAuthenticationMethods OpenID4Java http code sxip com openid4java OpenID Libraries http wiki openid net Libraries OpenID Howitworks http www clickpass com docs howopenidworks http www windley com archives 2006 04 how_does_openid shtml OpenID Specification http openid net developers specs OpenSAML http www opensaml org OpenSSO http opensso org OReilly Applet communication http www unix com ua orelly java ent servlet ch10_01 htm SAML Community http saml xml org SAML IBM myths http www ibm com developerworks xml library x samlmyth html David Olivier Page 144 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg SAML Implementations http saml xml org wiki saml open source implementations SAML 1 0 Toolkit http www sourceid org projects saml_1_1_toolkit cfm Signed Applet http www personal umich edu lsiden tutorials signed applet signed applet html Shibboleth http shibboleth internet2 edu Switc
17. ne doit pr alablement tre tablie entre les Identity Provider et Service Provider Voici le d roulement standard d une authentification avec OpenID 1 L utilisateur envoi au Relaying Party le User Supplied Identifier pour initialiser le processus de login Cela se passe travers un formulaire de login h berg sur le RP Relaying Party David Olivier Page 10 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Relaying Party demande le document XRDS avec le protocole Yadis 6 aupr s de liden tifieur fourni par l utilisateur l tape 1 Optionnel Relaying Party cr e et partage une cl avec Identity Provider en utilisant Diffie Hellman Key Exchange Cela permet au Relaying Party de v rifier les signatures du OpenID Identity Provider Cela enl ve aussi la n cessit de requ tes pour v rifier la signature apr s chaque requ te et r ponse d authentification 4 Relaying Party redirige le navigateur WEB vers Identity Provider L utilisateur est redirig vers l Identity Provider s identifie la mani re n est pas d finie dans OpenID et compl te la relation de confiance L Identity Provider redirige l utilisateur avec une preuve cryptographique de son iden tification et les donn es personnelles qu il a choisi de transmettre vers la Relaying Party L utilisateur est redirig et est maintenant identifi la Relaying Party apr s v rification de s
18. oreme des restes Chinois La paire de cl a une longueur de 2048 bits ce qui impose que la taille de son modulo soit de 256 bytes Elle est entrepos e l int rieur de la m moire persistante de l applet dans l eprom de la carte et est r f renc e l aide d une r f rence vers un objet KeyPair Cette technique fonctionne correctement vu que les objets sont persistants entre les connexion d connexion alimentation de la carte Voici donc comment elle est cr e private static final short RSA_KEY_LENGTH 2048 kp new KeyPair KeyPair ALG_RSA_CRT RSA_KEY_LENGTH kp genKeyPair Le g n rateur utilis comporte un probl me qu il faudrait r soudre manuellement en chan geant l exposant avant la g n ration car il est toujours de 65535 Le traitement d un challenge consiste 1 Recevoir le challenge public void sendChallengeFHalf byte tmp public void sendChallengelHalf byte tmp Deux m thodes sont employ es car RMI sur la JavaCard ne peut pas s rialiser ou d s rialiser des tableaux de bytes de plus de 254 bytes 2 D crypter le challenge re u avec sa cl priv e pr sent dans processChallenge Decrypt challenge Cipher cipherde Cipher getInstance Cipher ALG_RSA_PKCS1 true cipherde init kpriv Cipher MODE_DECRYPT byte t new byte MODULO_2048_SIZE short l cipherde doFinal challenge short 0 short challenge length t short 0 byte decryted new byt
19. recv saml jsp lt url pattern gt lt web resource collection gt lt user data constraint gt lt transport guarantee gt CONFIDENTIAL lt transport guarantee gt lt user data constraint gt lt security constraint gt lt security constraint gt lt web resource collection gt lt web resource name gt protected jsp lt web resource name gt lt url pattern gt protected jsp lt url pattern gt lt web resource collection gt lt user data constraint gt lt transport guarantee gt CONFIDENTIAL lt transport guarantee gt lt user data constraint gt lt security constraint gt Il s agit de prot ger les pages sensibles s occupant de l authentification et les pages qu elle protege Identity Provider Voici les contraintes de s curit minimum conseill es pour 1 Identity Provider lt security constraint gt lt web resource collection gt lt web resource name gt SecureApp lt web resource name gt lt url pattern gt jsp lt url pattern gt lt web resource collection gt lt user data constraint gt lt transport guarantee gt CONFIDENTIAL lt transport guarantee gt lt user data constraint gt lt security constraint gt Sur l Identity Provider toutes les pages sont prot g es car leur contenu doit rester confidentiel 5 5 3 Protection de l acc s au page de gestion L acc s aux pages de gestion est prot g depuis le code JSP car aucune configuration n est possible dans le fichier web xml ou server
20. 1 3 192 168 1 3 Dst 192 168 1 1 192 168 1 1 SSLv3 Application Data E Secure Socket Layer E SSLV3 Record Layer Application Data Protocol Application Data content Type Application Data 23 version SSL 3 0 0x0300 00 19 d1 01 85 03 10020 01 01 04 0030 43 de 84 a 15 4 FIGURE 6 4 Exemple de trame de donn es SSL 6 5 2 Envoi d une requ te SAML depuis le SP l IdP Etat avant la mesure La page index html est charg e au d part D roulement 1 or ie a SP Chargement de la page de login jsp SP Redirection vers la page d envoi de requ te SP Redirection de la requ te SAML vers le Service Provider IdP r ception de la requ te pas recv_saml_auth_request jsp IdP Affichage de la page de login avec l applet WEB R sultat La mesure est disponible en annexe send_saml_request pcap Le navigateur demande d abord la page login jsp dans la trame 8 ensuite il est redirig avec la page request_auth jsp puis encore une fois redirig avec la trame 12 vers la version https de la page pr c dente Donc une connexion SSL s ouvre entre le client et le SP Depuis lors aucune des donn es n est visible trame 24 Une autre connexion SSL s ouvre depuis le client vers PIdP lorsque que la requ te est redirig mais rien n est visible en clair trame 38 41 Les derni re connexion SSL servent transporter la page de login de l IdP et son applet Java David Olivier Page 126 sur
21. 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 5 3 Envoi d une r ponse avec authentification depuis l IdP au SP Etat avant la mesure La page login jsp et son applet sont charg s dans le navigateur web On se connecte sur la carte avec le PIN aucune transmission n est effectu e jusqu au clique sur continuer D roulement 1 Applet WEB vers IdP appelle du challenge IdP vers Applet WEB envoi le challenge Applet WEB vers IdP Envoi la r ponse IdP saml_auth jsp renvoi la r ponse au SP PS SP recv_saml jsp recoit la r ponse et affiche la page des cadres Attention durant cette tape le fichier de m ta donn es est t l charg pour contr ler la signature de la r ponse R sultat La mesure se trouve dans le fichier send_saml_response_and_service_access pcap Appel du challenge commence a la trame 6 Le challenge est transf r partir de la trame 15 et 20 21 22 23 Ensuite la r ponse au challenge est transmise depuis l applet WEB au serveur d identit En voit a partir de la trame 37 une communication entre le poste client et le fournisseur de service l acc s la page recv_saml jsp est donc clair En voit le t l chargement non prot g du fichier de m tadonn e ce qui est normal trame 53 54 et 55 La suite des trames est utilis pour le t l chargement des pages du fournisseur de service ainsi que pour les challenge response chang s durant l authentification
22. 48 4 11 Diagramme d tat pour le processus d authentification 49 4 12 Cas d utilisations pour les applets 50 4 13 SAML Communication du c t du fournisseur d identit 53 4 14 Diagramme de classe des Servlets 54 4 15 Diagramme de classe de la logique m tier de l identity provider 55 4 16 SAML Processus de traitement du c t du fournisseur de service 58 4 17 D ploiement des composants 59 5 1 Applet d administration impl mentation demande du pin 67 141 Secure Java Card for Federate Identity Management HES SO Fribourg 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 5 12 5 13 5 14 5 15 5 16 6 1 6 2 6 3 6 4 Applet d administration impl mentation carte en cours de cr ation 67 Applet d administration impl mentation cr ation de la carte termin e 68 Applet d authentification impl mentation demande du pin 68 Applet d authentification impl mentation auhtentifi la carte mais pas en core l Identity Provider 69 Applet d authentification impl mentation authentifi l Identity Provider 69 Applet d authentification impl mentation d connect cause du retrait de la Carts AE a Se edd aa e EN Se wees we EC MN Mt a 69 Identity Provider impl mentation page d acc s l e
23. A to verify user cert signed signature certificate le User agent B Identity Provider Bertrand Private key QD amp Public signed certificate y IdP Alice Private Private key key amp Public signed User agent C certificate FIGURE 3 11 Architecture d centralis e Voici ci dessous la proc dure de cr ation du certificat 1 La carte envoi une requ te de signature de certificat 2 L IdP signe le certificat avec sa cl priv e 3 L IdP envoi le certificat sign la carte 4 La carte stocke le certificat S end CertificationRequest with public key to CA gt Receive the request amp sign the certificate with the private key Answer with signed certificate Generate a certificateRequest amp store the signed certificate e Browser applet User i i a ED Identity Provider amp Public signed certificate IdP Private key FIGURE 3 12 Signature du certificat depuis la carte Voici ci dessous la proc dure d identification entre la carte et l IdP 1 L IdP g n re et un challenge David Olivier Page 29 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 2 L IdP envoi le challenge la carte 3 La carte r cup re le challenge et le crypte avec sa cl priv e 4 La carte envoi le challenge crypt et son certificat publique sign par l IdP et sa cl
24. Add 2 Le champs est bien obligatoire 3 Le champs ne contient pas d espace 4 Le champs a une longueur max de 50 R sultat Le test s est d roul avec succ s G n ration d une nouvelle paire de cl s IdP et certificat Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Sc nario Dans l espace d administration de l Identity Provider sous Provider Generate new keys ensuite Start generation of new certificate Ecrasement du keytool avec les nouvelles cl s Red marrage du serveur Connexion SSL revalidation du certificat Essai d utilisation d une ancienne carte impossible Cr ation d une nouvelle carte Nane wn nm Connexion avec la nouvelle carte r ussie R sultat Le test s est d roul avec succ s 6 2 2 Test des fonctions du Service Provider Installation Situation intiale aucun programme n est install sur l ordinateur P Sc nario 1 Adresse IP 192 168 1 2 Nom du PC StyxSPBankDemo 2 Installation de Java Developement Kit dans d jdk15 3 Installation de Tomcat dans c Program File Apache Software Foundation Tomcat 6 0 utilisateur admin et mot de passe dipl08 4 Copie des librairies endorsed dans Tomcat 6 0 endorsed David Olivier Page 108 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 8 9 10 D ploiement de l
25. Email mm nes FIGURE 5 10 Identity Provider impl mentation page d ajout de nouvel utilisateur David Olivier Page 76 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Edit user First Name Country Phone Email olivier david MW Suomi FIGURE 5 11 Identity Provider impl mentation page de modification d un utilisateur David Olivier Page 77 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Logout Selected user Here are the data to the user First Name Route de Fribourg Phone Email FIGURE 5 12 Identity Provider impl mentation page de visualisation d utilisateur Logout Registered Service Providers Service Provider Name Actions BankingDerno Public e ttificate Delete FIGURE 5 13 Identity Provider impl mentation page de visualisation des Service Providers 5 3 2 Les servlets d authentification et d administration Fonctions du servlet d authentification Voici ses principales fonctions Fournir des challenges crypt s avec la cl publique de V utilisateur qui les demande et les garder en m moire Les challenges sont cr s avec un SecureRandom et garder en m moire dans la session Ils sont crypt s avec la cl publique pr sente dans le certificat David Olivier Page 78 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg de Putilisateur
26. Provider Service Provider need to authenticates the authenticate an user user Service Provider Certificate SP URL to send response P SP examines the response Authentication Request creation Metadata with x509 of IdP to check sign Service Provider Private Key Service Provider must sign Authentication Request SP controls response signature SP sends the authentication request Service Provider recelves response Identity Provider analyzes and responds FIGURE 4 16 SAML Processus de traitement du c t du fournisseur de service 1 Le fournisseur a besoin d authentifier un utilisateur Pour se faire il contacte un four nisseur d authentification 2 Le contact s tablit seulement apr s la cr ation d une requ te d authentification do cument XML qui contient principalement le certificat du fournisseur de service et Vadresse o le fournisseur d identit doit lui soumettre la r ponse 3 Le fournisseur de service signe la requ te en utilisant sa cl priv e pour garantir la provenance des donn es 4 La requ te est ensuite transmise selon un des bindings pr vu dans SAML soit dans un HTTP POST soit dans un HTTP Redirect 5 Le fournisseur d identit traite la demande et envoi la r ponse au fournisseur de service 6 Le fournisseur de service re oit la r ponse 7 Il contr le la signature du document X
27. XP SP3 Firefox 3 Pilote SCR3310 install Java JDK et JRE 1 5 Update 8 MySQL Community Server 5 0 67 si serveur Identiry Provider Apache Tomcat 6 0 18 si serveur Il y a plusieurs types de test qui ont t effectu s les premiers sont les tests durant le d veloppement de l application pour chaque fonctionnalit ou partie de l application les seconds sont les tests fonctionnels sur un d ploiement d une premi re version de l application Ces tests sont charg s de tester toutes les fonctionnalit s de l application Pour les finaliser des analyses de s curit sur l infrastructure sur certaines parties du prototype et sur le m dium donn es transf r es ont t effectu es 96 Secure Java Card for Federate Identity Management HES SO Fribourg 6 1 Validation durant le d veloppement Les tests durant le d veloppement sur un logiciel utilisant beaucoup de composant ne sont pas facile mettre en place Chaque composant n a pas t test s par ment car ils interagissent tous entre eux Il aurait t possible d muler les composants n cessaires mais cela revenait les cr er aussi Applet NXP JCOP Une premi re version sans communication avec en applet WEB mais avec une application standalone a t cr e Application dans la carte public class test extends Applet implements Samplelnterface private Dispatcher dispatcher private KeyPair kp private RSAPrivateCrt
28. analyse d information tel que existence d un utilisateur pour un id 6 4 4 Servlet de t l chargement Faits Le servlet de t l chargement doit tre accessible que par l administrateur sauf le fichier de m tadonn es qui est en libre acc s Tests https styxidp 83443 StyxWebSecurity_IdP Management download type meta Ok on obtient le fichier de m tadonn es mais il doit tre en libre acces donc ce n est pas une faille de s curit https styxidp 8443 StyxWebSecurity_IdP Management download type pri amp name StyxSPBankDemo Acc s prot g https styxidp 8443 StyxWebSecurity_IdP Management download type pub amp name StyxSPBankDemo Acc s prot g https styxidp 8443 StyxWebSecurity_IdP Management download type cer amp name StyxSPBankDemo Acc s prot g https styxidp 8443 StyxWebSecurity_IdP Management download type downloadcert Acc s prot g R sultats Le servlet est s curis correctement David Olivier Page 122 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 4 5 Pages de Management Totes les pages sont bien prot g es et seulement accessible en local ou avec admin_ip du web xml 6 4 6 Pages accessibles Faits Les pages ne doivent pas divulguer d l ment d erreur ou permettre de faire des op rations nuisibles avec le logiciel Tests https styxidp 8443 StyxWebSecurity_IdP admin jsp inaccessible acc s non autoris
29. application StyxWebSecuritySP war l aide du Tomcat Manager Inscription du Service Provider dans l Identity Provider obtention du certificat private key et public key avec le nom de la machine Modification du web xml IdPMetadataFileURL http StyxldP 8080 StyxWebSecurity_IdP Management download type meta IdPLoginControlURL https StyxldP 8443 StyxWebSecurity_IdP login_control jsp IdPRecvSAMLURL https StyxldP 8443 StyxWebSecurity_IdP recv_saml_auth_request jsp IdPName StyxWebSecurityldentityProvider SPRecvSAMLURL https StyxSPBankDemo 8443 StyxServiceProvider recv saml jsp SPName StyxSPBankDemo Copie des cl s dans c cr ation d un keystore avec install_keys jsp Configuration de SSL sur Tomcat dans server xml Acc s au Service Provider avec ou sans SSL R sultat L installation s est bien pass e mais une erreur a t d couverte dans le certificat du Service Provider qui ne retrouve pas sa cha ne de certification car le nom de issuer n est pas StyxWebSecurityldentityProvier mais StyxWebSecurity Identity Provier Il faut aussi corriger cette erreur SP Logout d un utilisateur Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Sc nario 1 Connexion sur le Service Provider 11 12 RA NA O ES Demande de connexion dans l espace e banking Transmission de la requ te d authentification a l Iden
30. de cl sur la carte T l charger la cl publique depuis la carte Transf rer les informations de l utilisateur sur la carte G n rer un certificat avec la cl publique pr c dente sur le fournisseur d identit Stocker le certificat Obtenir la cl publique du fournisseur d identit Ins rer cette cl dans la carte Voici la s quence d installation mat riel d une carte Connexion la carte Connexion au CardManager Authentification au CardManager soit avec les cl s JCOP soit avec les cl s STYX et soit avec les cl s fournies par l utilisateur S curisation du CardManager avec les cl s STYX Suppression des anciens packages et applet STYX T l chargement du CAP de l application on card Installation du package et de l applet depuis le fichier CAP sur la carte 5 Application pr sente dans toutes les JavaCards qui permet de g rer les applications installation sup pression et la s curit 6 D nomination du prototype StyxWebSecurity David Olivier Page 43 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 4 2 4 Structure La structure de l applet se compose des classes suivantes StyxAppletAdmin GUI de l applet StyxIDP Connector Interface de connexion au fournisseur d identit StyxJCConnector Interface de connexion la carte puce StyxNewCardProcess Processus se chargeant
31. efficace qu il soit chang de temps en temps et connu seulement par le possesseur de la carte c est pour cela que cette fonction doit tre offerte S authentifier aupr s du fournisseur d identit ce cas d utilisation est une proc dure qui fait appel des fonctions de la la carte puce et du fournisseur d identit Ce processus sert essentiellement au transport du challenge et de sa r ponse David Olivier Page 45 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 4 3 2 Communications composants Les communications entre l applet WEB et la carte et entre l applet WEB et le fournisseur d identit ont t abstraites dans des classe g rant elles m me la connexion et l interfacage avec leur entit respectives Cela permet de cacher la complexit des diff rents transfert de parame tres et de valeurs de retour ainsi que diff rentes actions demand es pour un processus transfert de cl demande de challenge etc EJ StyxJavaCardApplet EJ StyxAppletAuth EJ StyxIdP JSP pages ES O StyxJCConnector ees StyxIdPConnector processChallenge challenge tn A A getUserID getUserChallengetid getUserWame sendResponsetid resp sendPIN modifyPIN FIGURE 4 8 Composants de communication applet d authentification 4 3 3 S quence d authentification Le diagramme suivant montre la s quence d authentification compl te incluant l
32. est automatique et ne n cessite aucune connaissance de Vutilisateur D un point de vue technique l applet et le plugin Firefox sont assez semblables m me si le plugin introduit une couche tampon entre l interface XUL avec du Java script et le jar du programme Par contre l application autonome n utilise pas la m me architecture et devrait soit tre fortement li e au navigateur web soit elle m me tre un navigateur web Cela rajoute une couche de complexit mais favorise aussi la s curit de l application car elle n est pas proprement ex cut e dans le browser Cha ne de certification est g r e par le browser et peut tre corrompu par exemple Il existe plusieurs m thodes pour communiquer entre un applet et le serveur qui l a t l charg HTTP travers les pare feu lent pas forc ment Java sur le serveur il faut former des requ tes il faut former des r ponses seul l applet forme des requ tes Raw Socket Connection filtr par les firewalls rapide pas forc ment Java sur le ser veur Communication bidirectionnelle programme plus efficace du c t serveur plus compliqu coder JDBC pour communiquer avec un serveur de base de donn es David Olivier Page 26 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg RMI permet l invocation de m thodes sur un objet distant sur le serveur ou sur un objet distant sur l applet Peut passer a travers les firew
33. expos car on sait que l al a n est jamais vraiment al atoire Si l on ne crypte pas le challenge envoy la carte et que la carte le crypte avec sa cl priv on peut obtenir des couples challenge challengecrypt qui sont tr s int ressant car ils peuvent tre r employ s si le g n rateur de challenge est pauvre Int grer la technologie Java Card lors d une identification travers un navigateur Internet peut tre r aliser par plusieurs techniques Applet WEB Une application se charge dans le navigateur et acc de au driver d acc s du lecteur de carte sur le PC h te Apr s quelques tests il est possible de certifier qu on est capable d acc der au drivers du lecteur de carte et la carte avec RMI depuis un applet web pr sent dans une archive jar sign e Plugin Mozilla Une application contenu dans un jar dans un plugin Firefox permet d acc der au driver du lecteur de carte Cette m thode n a pas t test car elle limite Vutilisation de la solution a Firefox Application autonome Une application autonome se charge de l authentification avec Identity Provider L utilisation des syst mes de Federate Identity Management sert premi rement simplifier la vie des utilisateurs Il va de soi qu il ne faut pas rajouter une couche de complexit par l installation d une partie cliente sur le poste qui doit s identifier M me si l installation d un plugin Firefox est simple un applet
34. la cr ation des certificats X 509 26 qui est souvent propri taire au serveur LDAP utilis et qui ne peut pas vraiment tre fait sur la carte La s curit Un produit en moins quivaut aussi ses failles de s curit en moins mais dans notre cas le LDAP est remplac par une base de donn es ce qui ne change rien Par contre s il on utilise une base de donn es on peut se permettre de cr er la paire de cl s sur la carte et de g n rer nous m me le certificat Contrairement celle ci LDAP offre directement la cr ation de la paire de cl et ne permet souvent pas de rajouter ses propres certificats 25 Lightweight Directory Access Protocol protocole permettant l interrogation et la modification des ser vices d annuaire http fr wikipedia org wiki Lightweight_Directory_Access_Protocol 26 Certificat num rique pour l change de cl publique http tools ietf org html rfc3280 David Olivier Page 30 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg La base de donn es est la meilleure solution si le temps est limit car la solution d un LDAP comporte encore plusieurs risques 1 Impossibilit d importation de nos propres certificats publics ou impossibilit d expor tation de la cl publique pr sente dans un certificat dans le LDAP 2 Impossibilit d exportation de la cl priv e car la paire doit peut tre tre g n r e dans le LDAP et non dans la carte Cela remet en cau
35. le cryptage et d cryptage on et off card Applet WEB Administration Voici la liste des tests Test de la pr sence d un code PIN Test de la longueur du code PIN et des chiffres uniquement Test de connexion chaque op ration de la carte avec le d bugger StyxJCConnector Test de connexion chaque op ration sur le serveur d identit avec le d bugger StyxIdPConnector Installation du CAP File test en externe puis en interne impl ment dans l applet d administration Installation du driver et du CAP File sur le poste test avec le d bugger Applet WEB Authentification Voici la liste des tests Test de la pr sence d un code PIN Test de la longueur du code PIN et des chiffres uniquement Test de la modification du code PIN Test du transport des challenges reponse Test de connexion chaque op ration de la carte avec le d bugger StyxJCConnector Test de connexion a chaque op ration sur le serveur d identit avec le d bugger StyxIdPConnector Test de dur e 500 authentification la suite sans aucune erreur environ 10 minutes Test de l envoi du message de logout Test de la d tection du logout Identity Provider Voici la liste des tests Test de la classe SecurityFunctionsProvider Test de la classe RegisteredSPManager Test de la classe IdentityProviderManager Test du servlet download java t l chargement de tous les fichiers depuis Firefox ou Internet Explorer et contr le de cor
36. le nom de la machine de l Identity Provider IdPRecvSAMLURL modifier le nom de la machine du Service Provider IdPName modifier le nom de la machine de l Identity Provider SPRecvSAMLURL modifier le nom de la machine du Service Provider SPName modifier le nom du Service Provider 4 Utiliser install_keys jsp pour installer les cl s dans le keystore et pour utiliser SSL 5 Modifier le fichier server xml pour ajouter le SSL Plus de d tails sont fournis dans le chapitre Impl mentation S curisation des fournisseurs d identit et de service 6 N oubliez pas de relancer le serveur 7 2 3 Installation du client Le client doit obligatoirement avoir installer le JDK et JRE 1 5 sur son poste C est aussi la version de Java qui doit tre employ avec Internet Explorer et Firefox Ne pas oubliez d installer le pilote Windows lors du branchement du lecteur de carte SCR3310 David Olivier Page 132 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 7 3 Mise en place des environnements de d veloppement Il est n cessaire d installer au moins 3 versions d Eclipse 1 2 3 Eclipse avec plugin JCOP Pour l applet NXP JCOP et pour les 2 applets WEB StyxWebSecurityAdminApplet et StyxWebSecurityAuthApplet Eclipse Java EE Pour le Service Provider Eclipse Java EE Pour l Identity Provider Il faut ensuite importer les projets correspondants dans chaque une des vers
37. les enregistrer et pour finalement les employer avec le jarsigner public void createStorelnKeyTool String password tryt String keystorename System getProperty keystore if keystorename null keystorename System getProperty user home System getProperty file separator keystore especially this KeyStore ks KeyStore getInstance JKS SUN ks load null password toCharArray ks store new FileOutputStream keystorename password toCharArray ks load new FileInputStream keystorename password toCharArray java security cert Certificate certs David Olivier Page 81 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg new java security cert Certificate 1 certs 0 java security cert Certificate getIdPCertificateJava ks setKeyEntry StyxIdP Key getPrivate_key password toCharArray certs ks store new FileOutputStream keystorename password toCharArray catch Exception e e printStackTrace Avant la version 5 0 de Java Il tait possible d utiliser la classe sun security util SignatureFile qui n est plus disponible pour signer directement depuis le code java des fichiers jar Plusieurs exemples sont pr sents sur Internet mais le plus pertinent reste disponible cette adresse http www onjava com pub a onjava 2001 04 12 signing_jar html page 1 Signature des jars il faut signer les f
38. management et IP qui y acc de Situation initiale L Identity Provider est install par d faut Sc nario Connexion sur les pages suivantes depuis le poste du client son ip n est pas gal l admin_ip du web xml une message d erreur devrait appara tre 1 Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management provider_admin jsp Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management sp_add jsp Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management sp_del jsp AN Det FF Ww YH ph op Rh Connexion sur http styxidp 8080 StyxWebSecurity_IdP admin jsp Connexion sur http styxidp 83080 StyxWebSecurity_IdP Management sp_view jsp Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_add jsp Connexion sur http styxidp 3080 StyxWebSecurity_IdP Management user_del jsp Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_gsc jsp Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_man jsp Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_mod jsp Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_view jsp R sultat Impossible d acc der toutes ces pages Le message d erreur est Unauthorised access Le test est donc pass avec succ s Mot de passe administrateur incorrect Situation initiale L Identity Provider est install par d faut
39. me est que la JavaCard ne traite pas les objets comme cela Un objet ou tableau cr avec new est cr dans la m moire eprom et est persistant n est pas d truit quand sa r f rence n existe plus Si l on ne s occupe pas de ce probl me la m moire de la carte sature rapidement et l applet devient inutilisable Il faut ce moment d sinstaller l applet et son contexte pour pouvoir r utiliser la carte Heureusement plusieurs solutions ce pr sentaient lors de la d tection du probl me Utiliser des objets statiques instanci s une seule fois Cela implique de refaire le design de l application Mais l avantage est la rapidit car il n y a pas de garbage collector Utiliser une sorte de garbage collector en invoquant la m thode dont le r le est de supprimer les objets persistants qui ne sont plus r f renc s JCSystem requestObjectDeletion Utiliser des objets transient les r f rences sont stock es dans l eprom le contenu dans la ram Le seul probl me c est que ces objets et leurs contenus ne sont effac s que lors d une s lection d applet ou d un red marrage de la carte Malgr la diff rence de performance c est la deuxi me solution qui a t choisie car elle vitait une restructuration compl te de l application Mais pour les futures utilisations de la plate forme JavaCard il est recommander de r fl chir directement lors du design de l application surtout si la per
40. personne en rapport avec le syst me Les mesures de quarantaine et de d tection de virus ne sont pas utiles dans le cas du test de l Identity Provider car on cherche en premier lieu tester le prototype De m me aucun envoi ou r ception d email est g r par le serveur ces tests sont donc inutiles 6 3 1 Profil r seau Plage IP de test 192 168 1 1 192 168 1 3 Informations de domaine et configuration aucune domaine tous dans le Workgroup STYXWEBSECURITY DNS pas de serveur DNS r seau de test non connect a Internet Liste des serveur 1 192 168 1 1 StyxIdP Windows XP SP3 2 192 168 1 2 StyxSPBankDemo Windows XP SP3 3 192 168 1 3 vecteur d attaque dans le sous r seau 6 3 2 StyxIdP information sur le serveur Adresse IP 192 168 1 1 Nom r seau StyxIdP Liste des ports ouverts Avec le logiciel NMAP david master laptop sudo nmap sS 192 168 1 1 Starting Nmap 4 53 http insecure org at 2008 11 04 15 19 CET Interesting ports on 192 168 1 1 Not shown 1706 closed ports PORT STATE SERVICE 135 tcp open msrpc 139 tcp open netbios ssn 445 tcp open microsoft ds 3306 tcp open mysql 8009 tcp open ajp13 8080 tcp open http proxy 8081 tcp open blackice icecap 8443 tcp open https alt MAC Address 00 19 D1 25 2D 5C Intel Nmap done 1 IP address 1 host up scanned in 15 078 seconds Liste des ent tes Avec le logiciel NMAP David Olivier Page 115 sur 146 Secure Java Card for Federate Identity Mana
41. pr voit dans tous ses profils ainsi que ses bindings des mesures de s curit Tous les messages chang s sont aussi sign s xmldsig 73 Plusieurs organismes ont valu la s curit des 2 standards sur ce point SAML semble avoir une longueur d avance car la prise en compte de ses valuations et leurs int grations dans le standard semble tre mieux organis es Phishing La constitution d OpenID a un grand d savantage dans ce domaine car c est Putilisateur qui indique au moyen de son OpenID Identifier l adresse du OpenID Identity Provider L utilisateur doit avoir confiance dans la Relaying Party laquelle il soumet son identifiant car c est elle qui peut l induire en erreur en le redirigeant vers un faux Identity Provider L association entre le RP et IdP est bas sur Diffie Hellman anonyme pour l change des cl s on ne peut donc pas v rifier r ellement qui on parle et il est possible qu on subisse une tentative de phishing Avec SAML il est conseill d employer la signature des messages bas sur les cl s publiques car cela permet de combattre les tentatives de phishing Signature des messages OpenID ne signe pas tous les messages et par cons quent ceux qui ne le sont pas peuvent tre modifi s sans que l on s en rend compte La seule d fense d OpenID fasse ses attaques est d utiliser TLS SSL pour prot ger les transmissions entre RP IdP et navigateur de l utilisateur Mais cela ne prot ge pas enti rem
42. s Suppression d un Service Provider et authentification Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Sc nario 1 Dans Vinterface d administration suppression du deuxi me Service Provider 2 Essai de connexion sur ce deuxi me Service Provider 3 Message d erreur Service Provider not found or certificate not valid R sultat Le test s est d roul avec succ s 6 2 3 Test des fonctions de l applet On card et applet d authentifi cation ou d administration Modification PIN Situation initiale L Identity Provider est install par d faut Un utilisateur et sa carte est cr Sc nario 1 Connexion sur l Identity Provider sur la page de login Insertion de la carte Insertion du PIN d installation 1234 Clique sur Modify PIN Insertion du PIN 9876 moe wy David Olivier Page 110 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Red marrage du navigateur et connexion sur la page login Insertion du PIN 1234 R ception d un message d erreur ce qui est normal Insertion du PIN 9876 10 L utilisateur est logu O R sultat Le test s est d roul avec succ s Blocage de la carte apr s 3 PIN faux Situation initiale L Identity Provider est install par d faut Un utilisateur et sa carte est cr Sc nario Connexion sur l Identity Provider sur la page de log
43. signature de la requ te Cette partie est reprise de la signature de la r ponse d authentification faite par le fournisseur d identit Ces objets sont cr s dans cette m thode buildAuthnRequest car c est l que la requ te est pr par e org opensaml xml security x509 BasicX509Credential credential null org opensaml xml signature impl KeyInfolmpl keyInfo null Set up the signing credentials if we have been given them if privateKeyCache null try org opensaml xml signature impl SignatureBuilder signatureBuilder new org opensaml xml signature impl SignatureBuilder signature signatureBuilder buildObject credential new org opensaml xml security x509 BasicX509Credential O credential setPrivateKey privateKeyCache getPrivateKey if publicKeyCache null credential setPublicKey publicKeyCache getPublicKey KeyInfoBuilder keyInfoBuilder new KeyInfoBuilder keyInfo KeyInfolmpl keyInfoBuilder buildObject KeyInfoHelper addCertificate keyInfo publicKeyCache getX509Certificate signature setKeyInfo keyInfo if log isDebugEnabled log debug SAMLResponse java KeyInfo added to signature signature setSigningCredential credential signature setSignatureAlgorithm SignatureConstants ALGO_ID_SIGNATURE_RSA_SHA1 signature setCanonicalizationAlgorithm David Olivier Page 90 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Signat
44. tous les services D un autre c t la s curit des identit s sur Internet est tr s peu fiable Dans la plupart des cas elles sont m me facilement usurp es Le concept d authentification forte avec quelque chose que l utilisateur poss de permet de s curiser plus fortement l authentification La technologie JavaCard dans ce projet donc t tr s utile pour renforcer la coh sion du syst me fournir une plateforme de gestion d identit et fournir une authentification forte Perspectives de d veloppement Les perspectives d avenir pour ce projet sont assez cons quentes car le march ne dispose pas encore de grand monopole dans ce domaine et aucun produit qui m lange ces 2 technologies dans le but de la SSO est disponible Par contre plusieurs produits soit pour l authentification forte JavaCard et WEB soit pour les FIM SAML existent Bien entendu le prototype pourrait d abord tre enrichi de quelques fonctionnalit s comme par exemple Offrir la possibilit au utilisateurs de modifier leurs informations personnelles travers une interface de gestion de leur compte Ou ajouter la notion de groupe d utilisateur permettant de regrouper les utilisateurs ayant les m me droits Et m me ajouter les gestions des droits par fournisseur de service Par exemple tel groupe ou tel utilisateur le droit de se connecter Et aussi transf rer et utiliser les droits groupes du c t du fournisseur de service Mais le plus impor
45. xml Le code de protection suivant a t rajout au d but de chaque page Restricted access to administration area if request getRemoteAddr equals 127 0 0 1 request getRemoteAddr equals getServletContext getInitParameter admin_ip 1 out print Unauthorized access return Il est possible de pr ciser une autre adresse IP qui est configur dans le web xml pour Vadministration David Olivier Page 93 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg lt context param gt lt param name gt admin_ip lt param name gt lt param value gt 160 98 21 203 lt param value gt lt context param gt David Olivier Page 94 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 5 6 Librairies Librairies endorsed sont les librairies qui doivent tre mises dans le r pertoire 1ib endorsed de la machine virtuelle utilis e par les serveurs resolver 2 9 1 jar serializer 2 9 1 jar xalan 2 7 1 jar xercesImpl 2 9 1 jar xml apis 2 9 1 jar Librairies Voici les autres librairies utilis es par les serveurs bcprov jdk15 141 jar commons codec 1 3 jar commons collections 3 1 jar commons lang 2 1 jar httpclient 3 0 1 commons codecs 1 3 jar httpclient 3 0 1 jar jargs 1 0 jar javolution jar jcl104 over slf4j 1 4 3 jar joda time 1 5 1 jar log4j 1 2 14 jar lo
46. 2008 11 05 15 26 14 9 seconds 1 host s tested Et nikto en version https qui n a pas abouti correctement bt nikto nikto pl host 192 168 1 1 port 8443 Nikto 2 02 2 03 cirt net Target IP 192 168 1 1 Target Hostname 192 168 1 1 Target Port 8443 SSL Info Ciphers EDH RSA DES CBC3 SHA Info CN StyxIdP Subject CN StyxIdP Start Time 2008 11 05 15 27 30 Server Apache Coyote 1 1 Allowed HTTP Methods GET HEAD POST PUT DELETE TRACE OPTIONS OSVDB 397 HTTP method Allow Header PUT method could allow clients to save files on the web server OSVDB 5646 HTTP method Allow Header DELETE may allow clients to remove files on the web server OSVDB 877 HTTP method Allow Header TRACE is typically only used for debugging and should be disabled This message does not mean it is vulnerable to XST OSVDB 39272 favicon ico file identifies this server as Apache Tomcat OSVDB 0 GET Appears to be a default Apache Tomcat install Nessus a aussi t employ mais aucun r sultat assez probant pour figurer dans ce David Olivier Page 118 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg rapport a t obtenu Aucune vuln rabilit pour la version 6 0 18 de Tomcat n a t trouv sur les sites suivants 6 3 3 http nvd nist gov http www securityfocus com http www frsirt com searche
47. D ENTITYNAME gt lt md IDPSSODescriptor WantAuthnRequestsSigned false protocolSupportEnumeration urn oasis names tc SAML 2 0 protocol gt lt md KeyDescriptor use signing gt lt ds KeyInfo xmlns ds http www w3 org 2000 09 xmldsig gt lt ds X509Data gt lt ds X509Certificate gt HERECERTIFICATEBASE64 lt ds X509Certificate gt lt ds X509Data gt lt ds KeyInfo gt lt md KeyDescriptor gt lt md NameIDFormat gt urn oasis names tc SAML 2 0 nameid format persistent lt md NameIDFormat gt lt md Name IDFormat gt urn oasis names tc SAML 2 0 nameid format transient lt md NameIDFormat gt lt md SingleSignOnService Binding urn oasis names tc SAML 2 0 bindings HTTP POST Location URLSAMLRECVONIDP gt lt md IDPSSODescriptor gt David Olivier Page 84 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg lt md EntityDescriptor gt David Olivier Page 85 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 5 4 Service Provider 5 4 1 Interface Les figures suivantes montrent les principales pages du fournisseur de service BankingDemo gt About Us gt Services gt E Banking Contact Us Try our new E banking Now secure with smart cards Top Links Latest News SAML amp SSO Service Provider Demo Site 27th OCTOBER 2008 14th NOVEMBER 2008 Security Assertion Markup Langage Demonstration site that shows the use of
48. DEFGHIJKLMNO GABCDEFGHIJKLMNO ABCDEFGHIJKLMNO https styxidp 8443 StyxWebSecurity_IdP Management admin type genStoCert amp eid 3 amp efn firstname amp eln lastname On pourrait en ayant le code source et un ID utilisateur d ja inscrit modifier son cer tificat et donc l emp cher de se loguer R sultats Il faut donc absoluement resteindre l acc s au servlet en local seulement ou avec Vip d administration dans le web xml 6 4 3 Servlet d authentificaton Faits Le servlet d authentification ne doit tre accessible que par l applet WEB d authen tification Tests https styxidp 8443 StyxWebSecurity_IdP auth type request_uc amp eid 1 Permet de voir un challenge crypt dont on ne connait pas l orginal ce n est pas un risque de s curit On connait par contre l utilisateur et on peut donc voir si un uti lisateur avec 1 ID en param tre existe ce qui peut s av rer dangereux Par exemple avec https styxidp 8443 StyxWebSecurity_IdP auth type request_uc amp eid 1 On pourrait donc savoir combien d utilisateur sont inscrit dans identity provider Challenge de Putilisa teur inscrit 2 http java decompiler free fr David Olivier Page 121 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg i Dur 0 B 60 00T 0 xp 0 O0R F909 BE gt AE0 xa CO1 ibrO02 xx DDEATADE Ey28p AcoT2A9 0sxb fG kbyog 241 04118 DABDXA Coxyequ IELOKU greso ny pGt pUT
49. David Olivier Page 105 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Sc nario 1 Connexion sur l espace d administration de l Identity Provider avec un mot de passe vide 2 Erreur pas possible 3 Connexion sur l espace d administration de l Identity Provider avec un mot de passe faux 4 Erreur pas possible or COND 10 Connexion sur l espace d administration de l Identity Provider avec un mot de passe faux tres grand Erreur max 30 de longueur Connexion sur l espace d administration de l Identity Provider avec utilisateur vide Erreur utilisateur obligatoire Connexion sur l espace d administration de l Identity Provider avec faux utilisateur et mot de passe juste Erreur pas possible R sultat Le test a t pass avec succ s Modification des Card Manager Keys recr ation des cartes Situation initiale L Identity Provider est install par d faut Sc nario ES UA Ser ite eae SEOs a Connexion sur l espace d administration de Identity Provider Dans Provider Dans CardManagerKey 16x1 devient 16xA On re g n re une carte pour un utilisateur Le programme de demande les cl s du CM donc 16x1 16x2 et 16x3 La carte est g n r e On modifie dans Provider et remet 16x1 On re g nere la m me carte Le programme demande les cl s du CM donc 16xA 16x2 et 16x3 R sultat Le test est pass avec succ s Si le program
50. E 4 2 Classes pour l application on card Cette application a un structure relativement simple du fait du peu de fonctionnalit s disponibles dans la plateforme de d veloppement NXP JCOP41 JavaCard 2 2 1 David Olivier Page 40 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 4 2 Applet WEB Administration 4 2 1 Fonctionnalit s Cet applet WEB sert essentiellement de passerelle entre le fournisseur d identit et la carte pour son initialisation Les fonctions principales sont expos es dans le diagramme de cas d utilisation suivant A Utilisateur IdP Application Administrateur FIGURE 4 3 Cas d utilisations pour les applets Voici les divers cas d utilisations pour l applet d administration dans le d tail G n ration de la carte pour Putilisateur ce cas d utilisation est une proc dure qui d pend de plusieurs fonctionnalit s appartenant soit la carte soit au fournisseur d identit G n ration d une paire de cl dans la carte Obtention de la cl publique de la carte et cr ation d un certificat correspondant son utilisateur sur le fournisseur d identit Stockage des informations de l utilisateur et de la cl publique du fournisseur d iden tit dans la carte Pr ciser le nouveau code PIN de la carte permet de personnaliser le code PIN de la carte son initialisation pour plus de s curit 4 2 2 Communications comp
51. Key kpriv private RSAPublicKey kpub private byte challenge private byte response private test CardRemoteObject export this dispatcher new Dispatcher short 1 dispatcher addService new RMIService this Dispatcher PROCESS_COMMAND public static void install byte bArray short bOffset byte bLength new test register bArray short bOffset 1 bArray bOffset public void process APDU apdu dispatcher process apdu public void genKey throws RemoteException kp new KeyPair KeyPair ALG_RSA_CRT short 2048 kp genKeyPair kpriv RSAPrivateCrtKey kp getPrivate kpub RSAPublicKey kp getPublic public byte getPublicKeyExponent throws RemoteException byte buffer new byte 10 short len kpub getExponent buffer short 0 byte res new byte len for short i 0 i lt res length i res i buffer i return res David Olivier Page 97 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg public byte getPublicKeyModulusFHalf throws RemoteException byte buffer new byte 256 kpub getModulus buffer short 0 byte ret new byte 128 for short i 0 i lt 128 i ret i buffer i return ret public byte getPublicKeyModulusLHalf throws RemoteException byte buffer new byte 256 kpub getModulus buffer short 0 byte ret new byte 128 for short i 0 i lt 128 i
52. L Web Browser SSO Profile Unsolicited Response J Hodges identity M ME OIB sa a AE ee ee Se als 24 3 9 Java Card Technology Strong Authentication Cryptographic Authentication with Java Card Technology Ellen Siegel and Matt Hill JavaOne Sun Session TS 2 dt a E es BAA da 25 3 10 Architecture avec gestion centrale 28 3 11 Architecture d centralis e 29 3 12 Signature du certificat depuis la carte 29 3 13 Processus d authentification avec le certificat sign sur la carte 30 3 14 Architecture globale pour OpenID ou SAML 32 3 15 Architecture pour Java Card Safe 34 41 Cas d utilisations pour l application on card 38 42 Classes pour application on card 40 43 Cas d utilisations pour les applets 41 4 4 Composants de communication applet d administration 42 45 S quence g n ration de carte applet d authentification 43 4 6 Classes pour applet d administration 44 4 7 Cas d utilisations pour les applets 45 48 Composants de communication applet d authentification 46 49 S quence authentification applet d authentification 46 4 10 Classes pour applet d authentification
53. ML re u avec le certificat du fournisseur d iden tit qu il t l charge dans un fichier de metadata 8 Il examine ensuite la r ponse 9 Il authentifie ou non l utilisateur pour le service David Olivier Page 58 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 4 6 D ploiement FIGURE 4 17 D ploiement des composants Le diagramme de d ploiement ci dessus montre les diff rentes plateformes utilis es pour cr er le syst me d crit dans ce rapport Les JavaCard sont utilis es du c t client ainsi que les applets WEB qui sont ex cut s dans le navigateur Internet Ils facilitent la connexion la carte travers le lecteur L Identity Provider et le Service Provider sont des serveurs d appli cation WEB Tomcat Le serveur de base de donn e permet l Identity Provider d enregistrer et de traiter les donn es relatives la gestion des utilisateurs des Service Provider et de ses param tres Les composants pr sents dans l Identity Provider sont construit avec de servlets de diff rentes classes java et de diff rentes pages WEB Voici le contenu de ces composants StyxIdPSAML recv_saml_auth_request jsp saml_auth jsp le toolkit de Clareity Security StyxIdPAuthentication login jsp le servlet auth java la classes du package StyxWebSecurity IdP StyxIdP Management toutes les pages pr sentes dans Management les servlets admin java et download java la
54. OException throwIt SW_PIN_VERIFICATION_REQUIRED Architecture avec gestion centrale Voici dans la figure suivante la place que les Ja vaCard peuvent prendre dans le projet Chaque utilisateur en poss de une qui contient sa propre cl priv e qu il ne partage jamais Pour plus de s curit l Identity Provider en a aussi une Dans le cas de cette architecture la strong authentication est appliqu e David Olivier Page 27 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Marcel Private key 8 Issuer IdP User 298 A public key SS User agent B Bertrand Private key amp Issuer IdP f public 1 key Marcel public key Bertrand public key Alice public key Alice y IP fi Private Private key amp key Issuer IdP public User agent C key FIGURE 3 10 Architecture avec gestion centrale Architecture d centralis e La grande diff rence avec l architecture pr c dente est qu il n y a pas de stockage des certificats par l Identity Provider Ils sont stock s sur la carte et sign s par l Identity Provider Chaque carte poss de donc sa paire de cl dont la publique se trouve dans un certificat sign par l Identity Provider ce qui assure son identification David Olivier Page 28 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg eq Public key use Private key amp Public User agent
55. OK Method DELETE gt 403 FORBIDDEN END Ensuite nikto en version http bt nikto nikto pl host 192 168 1 1 port 8080 Nikto 2 02 2 03 Si cirt net Target IP 192 168 1 1 Target Hostname 192 168 1 1 Target Port 8080 Start Time 2008 11 05 15 26 05 David Olivier Page 117 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Server Apache Coyote 1 1 Allowed HTTP Methods GET HEAD POST PUT DELETE TRACE OPTIONS OSVDB 397 HTTP method Allow Header PUT method could allow clients to save files on the web server OSVDB 5646 HTTP method Allow Header DELETE may allow clients to remove files on the web server OSVDB 877 HTTP method Allow Header TRACE is typically only used for debugging and should be disabled This message does not mean it is vulnerable to XST OSVDB 39272 favicon ico file identifies this server as Apache Tomcat OSVDB 0 GET Appears to be a default Apache Tomcat install OSVDB 6659 GET ELDeadQuoFhinnhsYBEZ6q13csan00iN6JQRjeilcihetj3C GIbxQImAfRByYX2kLpfsdzaH6xbrL20Hv749Y1yr3xUq0ECjWTraYjLmlep01Hs9EBm njHhdfKZHsCQreM116xAf4DRtFSbdLBpHNKXiWlweKWIHyftvdnRiCGQSHN5DhNXCkyk PtmXntqiBpe6bpoFV9yw47SCGROuosolayBQudaW8C lt font 20size 50 gt DEFACED lt MyWebServer 1 0 2 is vulnerable to HTML injection Upgrade to a later version 2967 items checked 7 item s reported on remote host End Time
56. ON pM ze nn o 45 amp i Q1708 f 0 0 f gt TU AEA D 108 87 dUTZRO AUSKI EYi gt 2 0 ev wO6A0 0 0 1E50h cop766 OfL dwon fzho0dtz0aiQ anA rea FIGURE 6 2 Servlet d authentification challenge plein Challenge d un utilisateur non inscrit i Op FIGURE 6 3 Servlet d authentification challenge vide Il est donc tr s facile de conna tre l inscription d un utilisateur identitfiant dans le systeme https styxidp 8443 StyxWebSecurity_IdP auth type openSPconnection Permet de savoir s il on a le cookie du HTTPSession si un utilisateur poss de une requ te d authentification sur le serveur d identification traiter envoy r ponse un service https styxidp 8443 StyxWebSecurity_IdP auth type response_ amp eid 1 Un hacker peut tenter sa chance mais pour qu il crypte le bon challenge et l envoi en post avec cette commande les chances sont nulles https styxidp 8443 StyxWebSecurity_IdP auth type logout amp eid 1 Grande faille de s curit un petit script qui d connecte tous les utilisateurs est tr s facile a faire il suffit d incr menter le eid Bien entendu cette fonction est en libre acc s Mais elle d connecte l utilisateur qui a la session en cours et pas celui avec le eid pr cis R sultats Il faut absolument s curiser l acc s cette applet ou au moins certaines fonc tions pour emp cher la d connexion sauvage d utilisateur ou l
57. SECURE JAVA CARD FOR FEDERATE IDENTITY MANAGEMENT Projet de diplome 2008 David Olivier Hes Responsables internes Philippe Joye Rudolf Scheurer Responsable externe Francois Weissbaum Expert Etudiant Lieu Fili re Pierre Alain Mettraux David Olivier Ecole d ing nieurs et d architectes de Fribourg Suisse Informatique Table des mati res Introduction Cahier des charges 21 lt Objectits a a a Len menu AS AE a We ey ee Ea Bae ee SS 22 SV ACH CS Al es e ET tt AES a oat at ane SAMU a A 203 Milestones i i02 e ete eae a lea aa Ge a Ey AAA ES 2 4 Planning s A Pare te a Madera da oak ee Rene ANA 2 0 Contraintes cima dd Ed dd a g 8 OR ee ee ds Analyse 3 1 Description des technologies Sl SSONS A cou 3122 Openl Dims La A fu D Ge A AS 3 1 3 SAML Security Assertion Markup Language ILL Into Cards Yoana aoa a e ee ebb AS 3 2 Comparaison des technologies 3 2 1 Architectures et utilisations diff rentes 3 2 2 SAML vs OpenID Sia ATChit ctures a Es al O ASS Em der ea 3 3 1 Strong Authentication place de la Java Card 3 3 2 LDAP vs Base de donn es 3 3 3 Propositions d architecture Sp cification dl Applet JavaCard sairi dare gitea Ad Re a aaa i 4 1 1 Fonctionnalit s tenida ee 2k oe de a Alls SOU
58. UCUUTE ids put pee D a ias e ts 4 2 Applet WEB Administration 4 21 Fonctionnalit s 4 244 Reda aaa RR a o 8 4 2 2 Communications composants 4 2 3 S quence de g n ration de carte 12 45 SUMMIT SL l ue DA EU das de ea cdl he oh enr ae a he ME 43 Applet WEB Authentification 43 1 Fonctionnalit s ist es ee Ae h ee md 4 3 2 Communications composants 4 3 3 S quence d authentification ASA Structure ne gg duo arrange D A NAN AAA 4 3 5 Processus d authentification Secure Java Card for Federate Identity Management HES SO Fribourg dd Identity Provider 3 4 5 ach oe Gg Pee un da m 50 44 1 Fonctionnalit s canica oo ODES a bes 50 AM2 Structure 242 che a ds o e EE ante et 51 ALD Service Provider 4 4 is a E A AA 57 46 D plojement s aa Ee ee ee eR Ra AS le 59 AT Base de donn es stunt de a bo BI ee Red See oe Bae Pts 59 5 Impl mentation 61 Salt Applet JavaCatd traia OMe aa ta eR ae A 62 Dalek Contraintes di ee te Ge ee ee a eee ae ARREARS ER ES 62 5 1 2 Stockage des informations utilisateurs 63 5 1 3 G n ration de cl et traitement du challenge 64 5 1 4 S curisation des cartes et de l application applets WEB 65 5 2 Applets Web Administration et Authentification
59. a mod liser soit un serveur LDAP capable de stocker et fournir des certificats publiques PKI Cette architecture comprend aussi la mise en place du concept de strong authentication entre la Java Card et Identity Provider Java Card Strong Authentication dans un produit libre Plusieurs produits libres existent sur le march Certain impl mente les 2 standards de SSO SAML et OpenID Le but de cette architecture serait de modifier l authentification David Olivier Page 32 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg d un de ses produits pour qu il utilise la Strong Authentication que des tokens Java Card peuvent offrir Voici une liste de solutions open source qui semblent tre les plus influentes sur le march Sun OpenSSO Shibboleth Alfa and Ariss OpenASelect Du point de vue technique cela d pend bien entendu du choix de la solution car elles n offrent pas toutes les m me fonctionnalit s et API de d veloppement OpenSSO est une solution open source fournie par Sun sur la base d un produit commer cial Sun Java System Access Manager Elle est compos e d un API client pour les Service Provider NET Java et d une partie serveur pour Identity Provider Il est possible de cr er des modules d authentification suppl mentaires La documentation est abondante et poss de m me des exemples Des API sont disposition pour utiliser LDAP et les certificats
60. a part 1 send user supplied identifier p gt D gt lt 4 redirect to dP Client web browser 7 accept authentification _j gt o request to NP H7 respons 3 optional shared key exchange 2 RP get the YADIS doc to the OldP OpenID Identity Provider FIGURE 3 2 Identification OpenID Format des donn es Les messages de protocole sont du texte encod en UTF 8 8 convertis en bytes La forme du texte est par ligne une paire de cl valeur s par e par une colonne Les cl s valeurs sont sign es pour s assurer de leur authenticit Type de communication Il y a plusieurs types de communication qui sont d velopp es dans les points suivants Communication directe initialis e par le RP vers OIIdP OpenID Identity Provider Requ te Elles sont encod es dans le corps d un POST 0 JO eXtensible Resource Descriptor Sequence document de m ta donn es sur une ressource WEB Service discovery system Echange de cl s curis entre deux entit s Format de codage de caract re David Olivier Page 11 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg R ponse Elles sont encod es dans le corps d une r ponse HTML au format text plain avec le code 200 en cas de succ s et avec un code 400 en cas d chec mal form e ou arguments invalides Communication indirecte les messages qui sont pass s par le navigateu
61. abord tre situ es dans les systemes de Federate Identity Management Les chapitres suivants proposent une comparai son plus pr cise de SAML et d OpenID sur ces divers points perspectives pour les diff rents acteurs utilisateurs impl menteurs et d ployeurs confiance et confidentialit s curit et similitude des patterns de connexion 3 2 1 Architectures et utilisations diff rentes SAML Langage qui facilite la communication profil SSO OpenID m thode compl te langage protocole technique InfoCard solution de stockage et de s lection d identit Les 3 solutions se situent des niveaux diff rents et sont difficilement comparables SAML se trouve un tr s bas niveau niveau langage des donn es chang es entre les diff rents intervenants Il se peut donc que diff rents produits utilisant SAML ne soient pas directement compatibles m me s ils parlent le m me langage car ils ne suivent pas forc ment le m me profil OpenID quant lui est une solution complete et concr te contrairement SAML chaque Relaying Party peut communiquer sans adaptation avec un Identity Provider L inter op rabilit est donc renforcer au d triment de la personnalisation fournis par SAML InfoCard ou plut t les applications offrant cette technologie tel que Higgins ou Windows CardSpace se trouve un autre niveau du c t du client Cette technologie permet de stocker plusieurs identit s digitales qui peuven
62. acc s au pages 92 5 5 3 Protection de l acc s au page de gestion 93 b 6 librairies o A tet Pe oh ee ta Bee a 95 6 Validation et tests de s curit 96 6 1 Validation durant le d veloppement 97 6 2 Validation fonctionnelle 102 6 2 1 Test des fonctions de l Identity Provider 102 6 2 2 Test des fonctions du Service Provider 108 6 2 3 Test des fonctions de l applet On card et applet d authentification ou d administration 22 2 3 44 a te dut ae de tutti 110 6 2 4 Test du syst me dans sa globalit 112 6 2 5 R sultats de la validation fonctionnelle 114 6 3 Tests de s curit du fournisseur d identit avec la m thode OSSTMM 115 David Olivier Page 2 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 31 Proul r s au oa n AA due annee 115 6 3 2 StyxIdP information sur le serveur 115 6 3 3 Analyse de confiance 119 6 3 4 Protection de la vie priv e 119 6 3 5 R sultats des tests 120 6 4 Test d acc s l Identity Provider faille dans le code 121 64 1 Principes E A a ete 121 6 4 2 Servlet d administration 121 6 4 3 Servlet d authentificaton
63. administration dans Provider Modification du mot de passe dipl08 D connexion Re connexion avec le nouveau mot de passe R sultat Le test s est d roul avec succ s il est possible de changer facilement de mot de passe IdP Modification de chaque une des valeurs d un utilisateur et visualisation Situation initiale L Identity Provider est install par d faut Sc nario 1 Connexion l espace d administration du serveur d identification SO ORY ET AE LE S N N NO NO DN NO pp pp ppp Modification de Putilisateur John Smith Changement de son pr nom et validation Visualisation du changement ok Modification de Putilisateur John Smith Changement de son nom et validation Visualisation du changement ok Modification de Putilisateur John Smith Changement de son adresse et validation Visualisation du changement ok Modification de l utilisateur John Smith Changement de sa ville et validation Visualisation du changement ok Modification de l utilisateur John Smith Changement de son num ro postal et validation Visualisation du changement ok Modification de l utilisateur John Smith Changement de son pays et validation Visualisation du changement ok Modification de l utilisateur John Smith Changement de son t l phone et validation Visualisation du changement ok Modification de l utilisateur John Smith Changement de son email et validation Visuali
64. alable pour les 2 applets StyxNewCardProcess et StyxAuthProcess Ces 2 classes impl mentent donc Thread Il est n cessaire pour certaines fonctionnalit s des applications de mettre les processus en pause certain moment de leur traitement Hors maintenant les m thodes simples qui taient suspend et resume sont d pr ci es Il faut donc utiliser d autres fonctionnalit s de Java pour mettre en pause les threads synchronized this wait Et ensuite pour les relancer exemple concernant le processus d authentification synchronized app AuthProcess app AuthProcess notify David Olivier Page 74 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 5 3 Identity Provider 5 3 1 L interface Voici interface du fournisseur d identit les figures suivantes montrent ses principales pages Administration space ithe admin FIGURE 5 8 Identity Provider impl mentation page d acc s l espace d administration Styx New user Provider Registered SP Manage users Last name First name Status Actions card valid a L 4 JE a ax ia i ey a Olivier David ca ax Ta no card xy a FIGURE 5 9 Identity Provider impl mentation page principale de l espace d administration David Olivier Page 75 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg New user First Name Zip Country Phone
65. alls cause d un transport sur le protocole http qui ralentit la connexion Le serveur est oblig d tre crit en Java L utilisation de l applet devient la solution la plus correcte par rapport au arguments nonc s pr c demment Cette utilisation sera d velopp moins que des incompatibilit s techniques surgissent et nous oblige changer de voie JavaCard du c t de l Identity Provider Il est aussi possible d utiliser une JavaCard du c t de l Identity Provider car il poss de aussi une paire de cl qui est importante et bien entendu la cl priv doit tre prot g e Pour se faire on peut utiliser la carte du c t du serveur pour effectuer les op rations de cryptage des challenges envoy s aux cartes des utilisateurs Par contre du c t du serveur plusieurs requ tes peuvent arriver en m me temps et dans ce cas une tude pr alable de la charge maximale possible sur la carte et le nombre de requ te maximale support e en m me temps devrait tre effectu e La carte ne permet pas d acc s concurrentiel et encore moins de processus interne il faudrait donc stocker les demandes de challenge et ex cuter leur cryptage une a une Code PIN sur JavaCard lest possible de prot ger un applet avec un code PIN repr sent par l objet OwnerPIN Lors de l entr e dans une m thode il faut tester si le code est valide pour la session par exemple access authentication if pin isValidated IS
66. aml xml validation ValidationException ve if we get here the assertion is not valid 5 4 4 Modification du toolkit SAML pour la signature des requ tes d authentification Le toolkit SSO de Clareity Security n est vraiment pas complet Il est en constante volution et donne plus une mani re d utiliser OpenSAML pour faire de la SSO Lors de son utilisation une fonction importante manquait il tait impossible de signer les requ tes d authentification envoy es par les Service Providers Il tait donc impossible pour le four nisseur d identit de savoir avec certitude quel fournisseur de service le contactait et surtout David Olivier Page 89 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg si le message n avait pas t intercept et modifi par un tiers Voici donc les modifications apport es au toolkit net clareitysecurity websso sp AbstractHttpHandler Ajout de la cl priv e et publique private PrivateKeyCache privateKeyCache private PublicKeyCache publicKeyCache public PrivateKeyCache getPrivateKeyCache return privateKeyCache public void setPrivateKeyCache PrivateKeyCache privateKeyCache this privateKeyCache privateKeyCache public PublicKeyCache getPublicKeyCache return publicKeyCache public void setPublicKeyCache PublicKeyCache publicKeyCache this publicKeyCache publicKeyCache Cr ation des objets n cessaires la
67. ateur WEB RP signifie Relaying Party fournisseur de service n cessitant une identification et OP IDP signifie OpenID Identity Provider fournisseur d identification David Olivier Page 20 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Avec SAML FIGURE 3 5 SAML HTTP Redirect or POST based Web Browser SSO Profile J Hodges identitymeme org On remarque qu avec SAML la proc dure est exactement la m me qu avec la pr c dente qui utilisait OpenID La phase de demande et de r ponse sur une ressource du Service Pro vider est aussi omise SP signifie Service Provider On peut faire appara tre la similitude suivante Relaying Party correspond Service Provider David Olivier Page 21 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg SSO sans association tablie Avec OpenID FIGURE 3 6 OpenID Authentification without Established Association J Hodges identity meme org S il n y a pas d association pr alable on remarque que l Identity Provider et la Relaying Party doivent communiquer pour que la RP s assure que la r ponse de l IdP soit valide Cette communication se produit apr s la r ception de la r ponse de l Identity Provider par la RP Lors de l tape 4 la r ponse 3 est enti rement renvoy e pour v rifier la signature du message David Olivier Page 22 sur 146 Secure Java Card for Federate Identity Management HES SO Fribour
68. authen tification la carte et l authentification au fournisseur d identit 1 getPIN cct StyxJavaCard pplet StyxAuthProcess StyxAuthApplet StyxIdPConnector StyxIdP auth servlet IdentityProviderManager 3 sendPIN a 2 return 4 sendPIN Doai 5 getUserIDandLastName 6 getUserID 9 i 0 7 return 8 return 9 getChallenge i 10 getChallenge 11 getChallenge ro OOOO 12 gerlerate 13 store e a p st i 14 H 16 return A 15 retum o e R aa 1 17 processChallenge 1 18 processChallenge 5 19 process q 20 response i SS 21 response i d 22 responseChallenge 23 responseChallenge 24 responseChallenge _ 25 getOrdinalChallenge 126 process 27 redirect FIGURE 4 9 S quence authentification applet d authentification David Olivier Page 46 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Voici les principales actions requises lors de la proc dure d authentification L utilisateur doit d abord s identifier aupr s de la carte pour pouvoir l utiliser Une fois authentifi il r cup re les param tres lui correspondant l int rieur de la carte et les affiche Ensuite il demande un challenge au serveur qui le crypte pour que seulement lui puisse le lire La carte s occupe de d crypter le challe
69. authentication with the StyxidentityProvider Principle of operation has a specific binding to resolve the between the service provider and the identity provider single sign on problem The user connects to the service that request authentication Read More gt The service provider requests the identity provider authentication of the user n a The user authenticates with the smart card to the Indentity Provider Stro ng The identity provider transmits the response to service provider Authentication The service provider provides the service requiring authentication 20th OCTOBER 2008 Share am encrypted challenge between 2 entities so that only the receiver can read it Read More gt FIGURE 5 14 Service Provider impl mentation page d accueil David Olivier Page 86 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg BankingDemo Protected Page This page is only accessible with authentication Youruserid 1 FIGURE 5 15 Service Provider impl mentation page prot g e BankingDemo You have been disconnected Please close this window FIGURE 5 16 Service Provider impl mentation page de d connexion 5 4 2 Chargement des cl s dans keytool pour SSL Pour utiliser SSL avec Tomcat du c t du fournisseur de service il est n cessaire d ins rer la cl priv e et le certificat publique dans le keytool de la machine o le serveur se trouve Il es
70. avaCard 12 11 Rendu du rapport 18h 13 11 Pr paration poster pour 12h 14 15 11 Exposition 20 21 11 D fense 2 4 Planning La planning est en annexe 2 5 Contraintes Les contraintes techniques sont d finies dans les objectifs Il faut absolument int grer la technologie JavaCard et il faut aussi utiliser une technologie de Federate Identity Mana gement Sinon aucune autre contrainte t d finie par les professeurs responsable externe et expert Le projet Secure Java Card For Federate Identity Management a clairement t d finit comme prospectif et assez libre ceci permettant des d cisions durant son ex cution comme le choix de la technologie de FIM ou le choix d int gration de JavaCard 1 Plateforme de d veloppement de JavaCard fournie par IBM et reprise par NXP 2 Plateforme de d veloppement de JavaCard fournie par Oberthur David Olivier Page 7 sur 146 3 Analyse Introduction La phase d analyse consiste dans un premier temps une recherche et une valuation des systemes de Federate Identity Management pr sents sur le march En second lieu une proposition d architecture permettant au moyen de la technologie JavaCard de s curiser le syst me choisi pr c demment Les syst mes de Federate Identity Management qui vont tre pr sent s et compar s dans ce rapport sont OpenID SAML et InfoCard InfoCard n est pas un syst me en soi mais un concept Une InfoCard est une iden
71. avec le certificat du fournisseur de service qu il a dans sa base de donn e et qu il a d ailleurs aussi sign 3 Il doit ensuite authentifier l utilisateur dans notre cas l aide de l authentification forte et d une carte puce 4 Apres cette identification le fournisseur d identit doit cr er une r ponse d authentifi cation qui doit tre sign e avec sa cl priv e et qui doit poss der son certificat publique 5 Cette r ponse est ensuite envoy e au fournisseur de service qui a fait la requ te Utilisateur toujours authentifi D une certaine mani re l utilisateur est toujours li au fournisseur d identit avec l applet d authentification Mais il est aussi toujours li au fournisseur d identit depuis le fournisseur de service Car si l utilisateur se d connecte du fournisseur d identit il doit se d connecter du fournisseur de service Hors pour que cette fonctionnalit soit possible le fournisseur de service doit communiquer avec le fournisseur d identit Il faudrait utiliser des Web services pour la communication entre les 2 fournisseurs C tait impossible dans les d lais impartis Une solution de remplacement pour les besoins de la d monstration a donc t adopt e Cette solution est h berg e sur l Identity Provider et est David Olivier Page 53 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg appel e et charg e a la connexion d un utilisateur a
72. avigateur Internet de l utilisateur Ce projet a t passionnant Il a permis de d couvrir un environnement de d veloppement JCOP sans conteste totalement diff rent du simulateur JCWDE avec ses multiples contraintes taille maximale des tableaux sur RMI garbage collector Le point le plus critique tait claire ment l architecture tr s complexe impos e par tous les composants de diff rente nature Une remarque est tout de m me faire sur ma d ception d un projet g r compl tement seul et qui n habitue pas les gens collaborer entre eux Bien entendu si le projet avait t fait par 2 personnes le prototype aurait peut tre pu donner un produit Un autre l ment captivant dans le projet tait l aspect s curitaire O placer la JavaCard pour rendre plus imperm able le syst me Comment s curiser une carte Comment proc der au tests Quel algorithme utiliser et pourquoi Toutes ses questions ne se posent pas dans tous les projet de dipl me et m ont permis d accro tre mon exp rience dans ce domaine Un autre l ment int ressant tait le d veloppement d application riche WEB travers des applets Il est tr s utile pour acc der au ressource d un PC client depuis une page Internet et dans le projet nous offre la possibilit d acc der au lecteur de carte du client et par cons quent sa carte pour tablir l authentification 137 Secure Java Card for Federate Identity Management HES SO Fr
73. chive war David Olivier Page 130 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 7 2 Installation et configuration 7 2 1 Installation d un fournisseur d identit Il faut d abord installer Apache Tomcat et MySQL sur le serveur d identit Ces 2 logiciels sont pr sent sur le CD ou disponible sur leur site Internet respectif Mysql et configuration Voici les principales tapes 1 Cr er un utilisateur local 2 Il faut bloquer les acc s au utilisateur local seulement 3 Il suffit d ex cuter le script d installation SQL Tomcat et configuration Voici les principales tapes 1 Ajoutez les libraires endorsed la base du dossier tomcat dans un dossier endorsed 2 D ployez le war depuis le Tomcat Manager 3 Modifiez le web xml de l application d ploi e webapps StyxWebSecurity_IdP WEB INF web xml dataBaseURL devrait tre le m me car il est conseill d installer MySQL en local dataBaseUser selon configuration MySQL dataBasePassword selon configuration MySQL IdPName nom de la machine de l Identity Provider IdPCheckAuth modifier le nom de la machine IdPRecvSAMLURL modifier le nom de la machine admin_ip IP suppl mentaire pour l acc s l administration Modifier lt transport guarantee gt CONFIDENTIAL lt transport guarantee gt en lt transport guarantee gt NONE lt transport guarantee gt N oubliez pas de relancer le serveur 5 Allez dans l admi
74. classes du package StyxWebSecurity IdP 4 7 Base de donn es La base de donn es est simple et comporte peu de donn es voici les 3 tables utilis es Users stocke les utilisateurs un tuple par utilisateur ID auto increment number primary key David Olivier Page 59 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg First name varchar Last name varchar Address varchar Zip varchar Country varchar Phone varchar Email varchar PublicCert blob public certificate in PEM format RegSP stocke les fournisseurs de service enregistr s un tuple par fournisseur de service Name varchar primary key Private key blob private key in PEM format Public key blob public key in PEM format Certificate blob public certificate in PEM format IdPSettings Ne stocke qu un tuple qui sont les param tres du fournisseur d identit Admin login varchar Admin password varchar Java Public Key blob serialized java object Java Private Key blob serialized java object Certificate public certificate in PEM format CardManager key 1 varchar CardManager key 2 varchar CardManager key 3 varchar Conclusion La phase de sp cification s est bien d roul e Elle a permis de faciliter la compr hension et m me l impl mentation de certaines parties complexes de l infrastruc
75. correspondant en utilisant un algorithme semblable celui pr sent dans la carte SecureRandom rand new SecureRandom rand setSeed System nanoTime byte clear_challenge new byte 128 rand nextBytes clear_challenge Cipher cipher Cipher getInstance RSA None PKCSiPadding X509Certificate usercert getUserCertificate userid cipher init Cipher ENCRYPT_MODE usercert getPublicKey byte crypted cipher doFinal clear_challenge session setAttribute challenge clear_challenge session setAttribute user Integer toString userid Traiter une r ponse un challenge en le d cryptant et le comparant celui en m moire Il faut garder en m moire que l utilisateur est authentifi pendant une dur e maximale de 20 seconde Voila comment on r cup re ce challenge byte s_challenge byte session getAttribute challenge Il est ensuite compar au challenge d crypt avec la cl priv e du fournisseur d identit Cipher cipher Cipher getInstance RSA None PKCS1Padding cipher init Cipher DECRYPT_MODE private_key byte clear cipher doFinal response if Arrays equals clear s_challenge Finalement on indique la session que l utilisateur est authentifi Mais cela n est permanent pour des raisons videntes de s curit Si un utilisateur retire la carte et que l ordre de d connexion envoy par l applet n arrive jamais au serveur l authentificat
76. cteurs d identification parmi les suivants Ce que l utilisateur conna t mot de passe nip Ce qu il d tient carte RFID cl USB soit une authentifieur Token Ce qu il est empreinte yeux Ce qu il sait faire signature manuscrite O il se trouve Plusieurs techniques peuvent se pr ter l authentification forte One Time Password OTP Certificat num rique PKT Biom trie Authentifieur ou Token OTP Secret partag entre le Token et le serveur d identification PKI La cl priv est s curis e dans la carte Une authentification forte en utilisant la JavaCard est possible car Vutilisateur d tient phy siquement une carte qui contient par exemple une cl priv e et connait aussi un PIN La JavaCard est une plateforme s re qui permet d effectuer des op rations sensibles dans un syst me embarqu vitant ainsi les problemes de s curit li s la machine h te machine laquelle la JavaCard est connect e Le concept de Strong Authentication consiste uti liser une paire de cl dont une est priv e celle ci ne sort pas de la carte et dont l autre est publique stock e dans une base de donn e ou un LDAP avec la correspondance l utilisa teur Le but de la JavaCard est donc de prot ger cette cl et de l utiliser pour d montrer que l utilisateur est bien qu il pr tend tre Ci dessous voici une sch ma extrait du site de Sun qui d montre l
77. d dans le projet et finalement de propositions d architectures impliquant les JavaCard et les technologies de Federate Identity Management David Olivier Page 9 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 3 1 Description des technologies Les technologies pr sentes dans ce chapitre sont principalement utilis es pour r soudre le probl me du single sign on SSO Ce chapitre le d crit bri vement ainsi que les technologies pr c demment cit es 3 1 1 SSO Single Sign On Principe d authentification permettant un utilisateur d utiliser un seul identifiant unique pour se connecter plusieurs sites WEB diff rents ou applications WEB Les buts principaux sont la simplification de la gestion de mot de passe et de la gestion des donn es personnelles pour l utilisateur Has one id Bob ID Is the same for IBM Google Amazon Authentification Google FIGURE 3 1 SSO single sign on 3 1 2 OpenID Principe de fonctionnement OpenID n est pas seulement une syntaxe de message comme SAML mais s est un pro tocole complet dont le but est le SSO Dans ce sens il est beaucoup plus contraignant que SAML Son avantage principal c est qu il est imm diatement inter op rable Ce n est pas le langage qui est compatible mais aussi la mani re d utiliser ce langage N importe quel Identity Provider est utilisable avec n importe quel client aucune relation de confiance
78. de l initialisation d une nouvelle carte StyxStartActionListener Gestionnaire d v nement permettant de lancer le processus StyxNewCardProcess FIGURE 4 6 Classes pour applet d administration David Olivier Page 44 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 4 3 Applet WEB Authentification 4 3 1 Fonctionnalit s Les fonctionnalit s de applet authentification sont principalement utiles l authentifi cation de Putilisateur la carte Code PIN et ensuite au fournisseur d identit Strong Authentication challenge response 2 paires de cl s Une autre fonctionnalit qui est aussi n cessaire pour le confort des utilisateurs est la possibilit de modifier le code PIN de leur carte facilement Ces fonctionnalit s sont d crites dans le diagramme des cas d utilisation suivant JavaCard IdP Application Administrateur Pr ciser le nouveau PIN d FIGURE 4 7 Cas d utilisations pour les applets Voici les divers cas d utilisations pour l applet d authentification dans le d tail S authentifier la carte Code PIN ce cas d utilisation permet d ouvrir les fonction nalit s de la carte et donc par la m me occasion de les prot ger lorsque que l utilisateur de la carte n a pas le code PIN correspondant comme pour les cartes de banque par exemple Modifier le code PIN il est bien entendu n cessaire pour qu un code PIN soit
79. e Distribuer les cl s du CardManager stock es dans la base de donn es Afin que lP applet d administration puisse installer le fichier CAP Donner la cl publique du fournisseur d identit pour son stockage dans la carte Envoi d objet vers un applet WEB Il est tr s simple d envoyer un objet s rialis depuis le servlet vers l applet car on peut utiliser le flux de sortie de la HttpServletResponse Voici un exemple du transfert de l objet RSAPublicKey ObjectOutputStream answer new ObjectQutputStream response getQutputStream answer writeObject im getIdPPublicKkey answer flush answer close R ception d un objet depuis un applet WEB La r ception d objet travers un servlet est aussi commode que l envoi il faut employer le flux d entr de la HttpServletRequest Voici un exemple lorsque l on re oit la cl publique de l utilisateur de la carte InputStream is null ObjectInputStream ois null is request getInputStream ois new ObjectInputStream is RSAPublicKey pk RSAPublicKey ois readObject David Olivier Page 80 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg R ception des param tres transmis dans URL Il est tres simple de r cup rer ces param tres String nompara request getParameter nompara 5 3 3 Logique m tier La logique m tier se trouve dans les diff rentes pages JSP mais aussi dans les class
80. e Running scan engine Primary guess Host 192 168 1 1 Running OS Microsoft Windows 2003 Server Standard Edition Guess probability 100 Other guesses Host 192 168 1 1 Running OS Microsoft Windows 2003 Server Enterprise Edition Guess probability 100 Host 192 168 1 1 Running OS Microsoft Windows XP SP2 Guess probability 100 David Olivier Page 116 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Host 192 168 1 1 Running OS Microsoft Windows 2000 Workstation Guess probability 100 Host 192 168 1 1 Running OS Microsoft Windows 2000 Server Guess probability 100 Execution completed Ensuite avec httpprint pour identifier le serveur WEB le r sultat devient plus int ressant m me si la version n est pas correcte He web server fingerprinting report Y ZA CO 192 168 1 1 8080 Apache Coyote 1 1 Apache Tomcat 4 1 29 SSL an FIGURE 6 1 Httpprint analyse du fournisseur d identit Vuln rabilit Plusieurs d tecteurs de vuln rabilit ont t utilis s en ce qui concerne le ser veur WEB Tout d abord metoscan pour quel type de requ te est allou sur le serveur bt metoscan http 192 168 1 1 8080 MetoScan Simple HTTP Method Scanner Method GET gt 200 OK Method POST gt 200 OK Method HEAD gt 200 OK Method PUT gt 403 FORBIDDEN Method OPTIONS gt 200
81. e System getProperty java home String fileSeparator System getProperty file separator charAt 0 File outFile null try David Olivier Page 72 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg BufferedInputStream binStream new BufferedInputStream fileInputStream outFile new File javaHometfileSeparatortfile Buffered0utputStream boutStream new BufferedOutputStream new FileOutputStream outFile int b 1 while b binStream read 1 1 boutStream write b binStream close binStream close boutStream flush boutStream close catch Exception e e printStackTrace Elle t l charge le fichier dans le dossier bin de la machine virtuelle Java utilis e par l applet Une autre m thode presque semblable copie le fichier soumis vers le dossier System32 de Windows Il est aussi envisageable de l utiliser pour copier un pilote Linux ou tout autre fichier sur le poste client Attention elle ne marche pas avec Windows Vista car les r pertoires syst mes sont prot g s en criture 5 2 7 Installation de StyxWebSecurity cap Pour initialiser une carte vierge il faut copier l application sur la carte et l installer Sur la plateforme JavaCard c est le CardManager qui s en occupe Il faut donc s y enregistrer avant de commencer la copie CapFile cap new CapFile javaHome fileSeparator StyxWebSecurity cap null byte cardMana
82. e 1 Util arrayCopy t short 0 decryted short 0 1 L algorithme de padding utilis est le PKCS1 car il tait le seul directement utilisable avec le c t off card pr sente dans l Identity Provider Pour employer correctement cet algorithme et selon sa sp cification dans l APT de la JavaCard les challenge n exc de pas 256 11 bytes 3 Crypter le challenge d crypt pr c demment avec la cl publique de l Identity Provider pr sent dans processChallenge David Olivier Page 64 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Encrypt the decrypted challenge Cipher cipheren Cipher getInstance Cipher ALG_RSA_PKCS1 true cipheren init IDPPublicKey Cipher MODE_ENCRYPT response new byte MODULO_2048_SIZE cipheren doFinal decryted short 0 short decryted length response short 0 4 Transmettre la r ponse public byte getResponseFHalf public byte getResponseLHalf O La contrainte des 2 m thodes est la m me que pour recevoir le challenge Apr s chaque traitement de challenge il faut vider la m moire des objets persistants qui ne sont plus r f renc s et donc plus utilis s avec cette m thode public void cleanMemory JCSystem requestObjectDeletion 5 1 4 S curisation des cartes et de l application applets WEB L acc s applet est prot g par un code PIN qui est v rifi chaque appel de fonction Il es
83. e Identity Management 2 Effectuer des tests de s curit selon la m thode OSSTMM afin d identifier les points faibles de l application 2 2 T ches Cr er une bibliographique Se documenter sur FIM SAML OpenID InfoCard et autres concurrents Se documenter sur les possibilit entre JavaCard et Browser Evaluer des FIM D finir une architecture entre FIM et JavaCard peut tre plusieurs possibilit s Mod liser une application on et off card se basant sur cette architecture peut inclure les taches suivantes Chercher et s lectionner les fonctionnalit s UML use case Fournir une architecture UML d ploiement composant D finir les divers l ments UML classe Secure Java Card for Federate Identity Management HES SO Fribourg D finir les divers tats UML tats Choisir et installer une plateforme de d veloppement JCOP ou Cosmo D velopper application mod lis e peut tre en plusieurs versions Valider l application d velopp e test fonctionnel Analyser les risques de s curit avec la m thode OSSTMM D finir des scopes Analyser Fournir un rapport complet et une documentation sur l application 2 3 Milestones Voici les dates importantes relatives au projet 15 09 Rendu du planning 24 09 Rendu du document d analyse 24 30 09 D terminer un rendez vous pour le choix du FIM et de l emplacement de la J
84. e JavaCard Pour conclure cette phase d analyse a permis de d couvrir et de connaitre a un niveau assez avanc les protocoles OpenID et SAML pour continuer la sp cification d une solution les utilisant Les solutions bas es sur InfoCard quand elles ne requiert pas l utilisation d une JavaCard mais plut t d une simple Smartcard C est pour cela qu elles ont naturellement t mises de c t apres leurs analyses David Olivier Page 36 sur 146 4 Specification Introduction La sp cification s est d roul e en m me temps que l impl mentation 4 cause des incon nus li s aux technologies qui pouvaient intervenir dans l architecture du prototype Tous les diff rents composants sont trait s dans ce chapitre applet JavaCard Applet WEB d ad ministration Applet WEB d authentification fournisseur d identit fournisseur de service L infrastructure d ploiement ainsi que la base de donn es sont aussi trait s dans ce chapitre 37 Secure Java Card for Federate Identity Management HES SO Fribourg 4 1 Applet JavaCard Cette application est pr sente sur la carte ses fonctionnalit s sont tr s limit es et per mettent de s curiser les informations de son authentification aupr s d un fournisseur d iden tit L authentification est aussi s curis e l int rieur de la carte 4 1 1 Fonctionnalit s Les fonctionnalit s pr sentent dans le diagramme suivant ont t impl ment es Certaines
85. e pr caution Art 7 Les donn es personnelles doivent prot g es contre tout traitement non auto ris par des mesures organisationnelle le compte administrateur et des techniques appropri l application Cet article est respect Art 7a Si SAML transmet des donn es personnelles l utilisateur doit absolument tre avertit de la transmission de ces donn es et de leur utilisation Art 8 L utilisateur n a pas directement le droit d acc s ces donn es avec le logiciel existant le ma tre doit lui donner ce droit d acc s sinon ce n est pas l gal Art 11a Le registre doit tre d clar aupr s du pr pos la protection des donn es Art 16 25 traitement des donn es par des organes f d raux Ces articles sont im portants relever si un jour un syst me de ce type devait tre mis en place 1 RS35 1 loi f d rale sur la protection des donn es http www admin ch ch f rs 235_1 index html David Olivier Page 119 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 3 5 R sultats des tests Les tests de POSSTMM ne s appliquent pas vraiment pour s curiser un prototype d ap plication web car ils s occupent plus g n ralement des failles du systeme d exploitation ou des services mis en place sur le syst me tel que Tomcat La s curit de Tomcat a donc t valu e m me si cela n est pas objectif car rien n a t mis en oeuvre pour le prot ger et pour prot g
86. e principe de base de ce pattern 1 PIN used to open card Challenge 2 Challenge User s Certificate aa A 4 Response Private Key 5 Validate 3 Encrypt Response Challenge FIGURE 3 9 Java Card Technology Strong Authentication Cryptographic Authentication with Java Card Technology Ellen Siegel and Matt Hill JavaOne Sun Session TS 5251 24 Grandement inspir de cette source http fr wikipedia org wiki Authentification forte David Olivier Page 25 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Les op rations n cessaires la Strong Authentification sont les suivantes 1 L utilisateur a entr sa carte et compose le PIN 2 L Identity Provider cr e un challenge donn es al atoires crypt es avec la cl publique du possesseur de la carte et envoi du challenge vers la carte 3 La carte d crypte le challenge avec sa cl priv e et le crypte avec la cl publique de l Identity Provider 4 Le challenge de r ponse est envoy l Identity Provider 5 L Identity Provider apr s d cryptage contr le si le challenge correspond bien celui qui l a envoy Si oui l utilisateur est authentifi La double encryption vite que le challenge soit transmis en clair entre l Identity Provider et la carte et renforce la s curit Si le challenge est transmis en clair c est le g n rateur de challenge qui peut tre
87. e suivant d montre 3 Application Protocol Data Unit http www cardwerk com smartcards smartcard_standard_ISO7816 4_ annex a aspx 4 format de fichier contenant une application JavaCard David Olivier Page 42 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg StyxJavaCard pplet StyxJCConnector StyxNewCardProcess StyxAppletAdmin StyxIdPConnector Servlet admin S quence HW se base avant avec installation du cap file 1 getPIN DB E ot T 2 return 3 createPin 4 createPin 5 generateKeys 6 generateKeys 7 gen rateKeys 9 getPublicKey H 8 getPublickey 11 return pe 10 return 13 SaveUserInfos 12 saveLiserInfos 14 generateStoreCertificate TP generateStoreCertificat 16 generate certifichte 175 SorfCertificatpO 181 saveCertificate i gt i 19 getIdPPublicKey H gt 20 getPublickey _ OP 21 getrdpPk 22 f H i _ ist 4 23 p E 24 return i 25 insertIdPPublickey APEE E FEAN OT 1 26 insertIdPPublickey FIGURE 4 5 S quence g n ration de carte applet d authentification Voici la proc dure d initialisation d une carte Il faut obtenir le PIN que l administrateur veut donner a la carte Il faut changer le PIN de l applet on card par celui fourni pr c demment G n rer la paire
88. ent la transmission car m me si les connexions sont s curis es elles traversent toujours le navigateur qui les d cryptent et qui peut les modifier browser cracking SAML de son c t signe tout les mes sages par cons quent aucunes modifications de leurs contenus est possible de plus TLS SSL est aussi employ pour s curiser les transmissions se qui rend SAML plus s curis qu OpenID Les diff rents pattern d authentification que OpenID et SAML peuvent r aliser Il existe plusieurs patterns communs aux 2 standards que nous allons d crire dans les sous chapitres suivants 23 Sp cification conjointe du W3C et de PIETF utilisant XML pour contenir les signatures lectroniques On la d signe plus g n ralement sous le nom de XML Signature David Olivier Page 19 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg SSO avec association Avec OpenID FIGURE 3 4 OpenID Authentification with esthablished Association J Hodges www identitymeme org Ce sch ma se situe apr s la demande du client navigateur d une ressource la Relaying Party La Relaying Party demande alors par l interm diaire du browser l Identity Provider l identification de l utilisateur Ensuite l Identity Provider se charge de l authentification et renvoi la r ponse la Relaying Party La phase de r ponse a Putilisateur par la ressource demand e est aussi omise sur ce sch ma UA signifie User Agent navig
89. equest jsp re Connexion sur http styxidp 8080 StyxWebSecurity_IdP login_control jsp redirig en SSL dirig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP saml_auth jsp redirig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management provider_admin jsp redirig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management sp_add jsp redi rig en SSL David Olivier Page 104 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 10 11 12 13 14 15 16 Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management sp_del jsp redirig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management sp_view jsp redi rig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_add jsp redi rig en SSL Connexion sur http styxidp 3080 StyxWebSecurity_IdP Management user_del jsp redi rig en SSL Connexion sur http styxidp 3080 StyxWebSecurity_IdP Management user_gsc jsp redi rig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_man jsp re dirig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_mod jsp re dirig en SSL Connexion sur http styxidp 8080 StyxWebSecurity_IdP Management user_view jsp re dirig en SSL R sultat Toutes les pages attendues ont t redirig es avec succes en SSL Espace de
90. er Connexion de Jane Smith acc s au service prot g d connexion correcte Red marrage du navigateur Connexion de John Smith acc s au service prot g d connexion correcte Red marrage du navigateur AS OR Connexion de Marcel Durant acc s au service prot g d connexion correcte R sultat Le test s est d roul correctement Il faudrait que lorsqu on tape sur entr l action de login s active automatiquement et que l on aie pas le besoin de cliquer Cr ation de 2 utilisateurs cartes comprises et authentification en m me temps Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Ce test est limit 2 utilisateur car nous n avons que 2 lecteurs de carte Sc nario 1 Jane Smith se connecte sur le Service Provider 2 Marcel Durant se connecte sur le Service Provider 3 Les 2 utilisateurs sont connect s correctement sur 2 PCs diff rents et sur le m me Service Provider 4 Retrait de la carte de Marcel Durant il se d connecte Jane Smith est toujours connect e 5 Retrait de la carte de Jane Smith elle se d connecte correctement R sultat Le test s est d roul avec succ s Suppression d un utilisateur et authentification Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut David Olivier Page 112 sur 146 Secure Java Card for Federate Identity Ma
91. er le serveur David Olivier Page 120 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 4 Test d acc s Identity Provider faille dans le code 6 4 1 Principes Le principe de ces tests se base sur le code source de l application Le but est de changer de point de vue et ne plus voir le code comme un moyen de r aliser une fonction mais comme un moyen d entrer ou de perturber l application Il est souvent possible d obtenir le code d une application assez facilement par exemple par du Social Engineering Ou du d compilage de classes avec Java Decompiler pour java par exemple Le but est donc de trouver pour chaque partie de l application les failles qui sont visibles en utilisant son code source Pour le fournisseur d identit voici les grandes parties analys es servlet d administration servlet d authentification pages du dossier management et pages directement visibles la racine 6 4 2 Servlet d administration Faits Le servlet d administration ne doit normalement pas tre visible pour le commun des utilisateurs mais seulement par l administration Tests https styxidp 83443 StyxWebSecurity_IdP Management admin type getldPPK On obtient la cl public ce n est pas grave https styxidp 8443 StyxWebSecurity_IdP Management admin type getCMKeys On obtient les cl s du CardManager des cartes c est tres grave Voici les donn es obte nues ABC
92. er peuvent se connecter La grande diff rence avec SAML c est qu il est enti rement configurable par contre il est clair que l inter op rabilit en souffre car il faut d finir des liens de confiance entre les diff rents Identity Provider et l usage des donn es qu ils contiennent SAML est donc plus lourd mettre en place mais beaucoup plus personnalisable Comparaison technique Crit re OpenID SAML Logiciel ou librairie open source disponible disponible Style de sp cification monolithique seule 2 modules assertions ment pour SSO requ te r ponse Ils sont utilis s dans des profils Design fixe d centralis et compl tement confi inter op rable entre gurable plusieurs RP et IdP profils autre que SSO Structure des message paire cl valeur en assertions et message plain text de protocole en XML Profitable SSO concret sp cification abstraite qui peut tre utilis dans d autres cas Extensible difficilement seule facile gr ce XML ment nouvelle cl valeur Confiance et s curit n y apporte pas d at tention regarder dans les pro fils d utilisation Lien au protocole seulement HTTP GET et POST aussi SOAP et autres protocole d crit dans les bindings d pend de l impl mentation Identification bas sur URL Comparaison au niveau de la confiance et de la confidentialit Pour OpenID le mod le de co
93. es qui sont d crites ci dessous SecurityFunctionsProvider Cette classe a toute les fonctions de cryptage n cessaires au traitement des diff rentes requ tes Elle utilise la librairie BouncyCastle RegisteredSPManager Cette classe permet de g rer les Service Providers cr ation cl s certificats enregistrement dans la base IdentityProviderManager Cette classe permet de g rer les param tres du serveur et la gestion des utilisateurs cr ation suppression visualisation g n ration de carte 5 3 4 Signature des applets WEB Les applets WEB qui servent soit l authentification StyxWebSecurityAuthApplet jar soit l administration StyxWebSecurity AdminApplet jar doivent tre sign s pour acc der au syst me de fichier du PC client et pour utiliser le pilote du lecteur de carte Depuis la derni re version de Java 5 0 il n existe plus qu une mani re pour signer les fichiers dans lesquels les applets mentionn s pr c demment et les librairies d acc s la JavaCard off card jar et rmioffcard jar sont contenus Il faut employer le keytool de Java pour enre gistrer les cl s servant la signature dans un keystore Ensuite il faut signer les jars avec jarsigner Pour plus de s curit il faut pouvoir signer les fichiers jars et les contr ler avec la cl priv e et le certificat du fournisseur d identit Une fonction t d velopp e en employant le keytool pour
94. etDocumentBase admin type genStoCertkeid teidt kefn efnt amp eln t eln cnx HttpURLConnection url openConnection cnx setRequestMethod POST cnx setDoInput true cnx setDoOutput true cnx setUseCaches false cnx setDefaultUseCaches false cnx setRequestProperty Content Type application octet stream cnx connect out new ObjectOutputStream cnx getOutputStream out writeObject pk reader new BufferedReader new InputStreamReader cnx getInputStream String ligne while ligne reader readLine null System out println ligne out flush out close reader close cnx disconnect catch Exception e System out printin e toString Les servlets sont d crits plus en d tails dans le chapitre concernant l Identity Provider 5 2 6 Transfert du pilote jct dll et du fichier StyxWebSecurity cap Les 2 fichiers sont transf r s sur le poste qui poss de le lecteur de carte Le fichier CAP est seulement transf r lors de l utilisation de applet d administration car il contient l appli cation qui doit tre install e sur la carte Pour les transf rer sur le poste client l applet doit tre sign et contenir ses fichiers dans son archive jar Ensuite on utilise la m thode suivante public void copyResourceFromJarToBinDir String file InputStream fileInputStream getClass getClassLoader getResourceAsStream file String javaHom
95. ete du prototype pour cela le diagramme de d ploiement dans la partie sp cification peut tre utile Le d veloppement ou le d ploiement sur d autre systeme d exploi tation n ont pas t test s mais sont tout a fait envisageable car seul Java est utilis comme langage de programmation et il est multi plateforme Toute modification d un composant remet en cause tous les composants du syst me car certaines fonctions sont compl mentaires C est pour cela qu il est recommand de comprendre compl tement l infrastructure avant toute modification David Olivier Page 136 sur 146 8 Conclusion Le projet Secure Java Card for Federate Identity Management a atteint les objectifs tablis dans le cahier des charges et dans les d lais impartis Le r sultat est tout d abord une ana lyse d taill e des principales technologies de Federate Identity Management pr sentes sur le march Cette analyse permis de choisir SAML pour son ouverture et sa s curit lev e afin de concevoir un prototype Lui m me compl tement document et fonctionnel il d montre son utilisation L analyse a aussi permis de placer la JavaCard pour s curiser le prototype L authentification forte est le concept qui a t retenu et mis en place a l aide des cartes JCOP et de Valgorithme cl asym trique RSA ainsi que du concept de challenge response La principale innovation est l utilisation des cartes puce JavaCard travers le n
96. ette requ te est ensuite envoy e par un HTTP Redirect vers le fournisseur d identit en utilisant le actionURL et en appelant la m thode suivante o response est le HttpServletResponse redirectHandle sendSAMLRedirect response R ception de la r ponse d identification La r ception des r ponses aux requ tes d au thentification est prise en charge par la page recv saml jsp Dans un premier le fournis seur de service t l charge le fichier de metadata pour obtenir le certificat du fournisseur d identit Il sert contr ler la requ te de certification Le t l chargement et le stockage des m ta donn es sont op r s grace la classe metadataCache java du toolikt SSO de Clareity Security Ensuite on recoit la r ponse et controle sa signature Create our object to receive the response from the IdP RecvResponse recvResponse new RecvResponse Attach our signature validator object to it recvResponse setSignatureValidator metaDataCache getSignatureValidator Finalement on v rifie la validit du message SAML en r cup rant les param tres transf r s try recvResponse processRequest request loginld recvResponse getLoginId relayState recvResponse getRelayState messageXML recvResponse getResponseXML session setAttribute userid loginld messageXML messageXML replace lt amp lt messageXML messageXML replace gt amp gt catch org opens
97. eulement avec des requ tes GET ou POST sur le fournisseur d identification Les processus de traitement lourd doivent tre s par s du processus de gestion de Vinterface 5 2 4 Communication avec la carte La communication avec la carte dans les 2 applets WEB se fait par l interm diaire d in terface personnalis es et nomm es StyxJCInterface Il faut bien entendu d abord acc der au pilote du lecteur de carte jct dll qui doit tre install sur le syst me Dans cette inter face on retrouve le code suivant qui permet d acc der l objet distant dans notre cas c est l applet StyxWebSecurity StyxJCInterface styxcard Remote object interface JCTerminal term Card Terminal object JCard card Java card object Open connection term JCTerminal getInstance pcsc 4 null term open card new JCard term null 5000 Get applet amp distant object JCApplet jca new JCApplet card AID jca select styxcard StyxWebSecurity StyxJCInterface RMIObjectFactory getInitialReference jca Maintenant que l objet distant est accessible la classe StyxJCInterface peut appeler toutes les m thodes d finies dans l interface suivante public interface StyxJCInterface extends Remote Key methods public void generateKeyPair throws RemoteException public byte getPublicKeyModulusFHalf throws RemoteException public byte getPublicKeyModulusLHalf throws RemoteE
98. formance est cruciale aux objets static ou transient David Olivier Page 62 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 5 1 2 Stockage des informations utilisateurs Plusieurs param tres externes sont stock s dans la carte certains d pendent de l utilisateur de la carte et un autre du fournisseur d identit Voici donc ces param tres et la fa on dont ils sont stock s et transf r s dans la carte Id nom et pr nom de l utilisateur Stockage interne Sous la forme d objets persistants tableau de bytes car String indisponible Vser information private byte user_id User id private byte user_fn User FirstName private byte user_ln User LastName Envoi sur carte transformation de String en tableau de bytes public void sendUserInfos String Id String firstName String lastName throws Exception styxcard sendUserInfos Id getBytes firstName getBytes lastName getBytes R ception depuis carte transformation de tableau de bytes en String public String getUserName throws Exception return new String styxcard getUserFirstName new String styxcard getUserLastName Cl publique du fournisseur d identit Stockage interne Dans un objet persistant RSAPublicKey et aussi 2 tableaux pour la cl avant g n ration modulo et exposant private RSAPublicKey IDPPublicKey IdP Public Key private b
99. g Avec SAML FIGURE 3 7 SAML Web Browser SSO Flow with Artifact Binding used on Reply form IdP J Hodges identitymeme org On remarque que la proc dure est de nouveau la m me avec SAML qu avec OpenID expliqu pr c demment Dans ce cas SAML emploie Artifact Binding pour communique entre le SP et PIdP Cela consiste d r f rencer la SAML Artifact re ue au point 3 pour obtenir la SAML Assertion associ e Le RP v rifie ensuite les signatures de l assertion David Olivier Page 23 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg R ponse non sollicit e connexion direct au IdP puis redirection vers RP OpenID et SAML FIGURE 3 8 SAML Web Browser SSO Profile Unsolicited Response J Hodges identity meme org Dans cette solution l utilisateur se connecte d abord l IdP pour s identifier et ce fait rediriger par la suite vers la Relaying Party SAML supporte ce profil et le d finit dans OASIS SAML Profiles 2 0 mais OpenID est beaucoup moins loquent son sujet Pour plus d information ce sujet SAML and OpenID comparison de Hodges sur identitymeme org David Olivier Page 24 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 3 3 Architectures 3 3 1 Strong Authentication place de la Java Card L authentification forte est une proc dure d identification qui requiert au moins deux fa
100. g4j over slf4j 1 4 3 jar mysql connector java 5 0 8 bin jar not yet commons ssl 0 3 9 jar opensaml jar openws jar slf4j api 1 4 3 jar slf4j log4j12 1 4 3 jar velocity 1 5 jar xmlsec 1 4 1 commons logging jar xmlsec 1 4 1 jar xmltooling jar La librairie du toolkit SSO de Clareity Security est directement int gr e au code de l appli cation pour faciliter sa compr hension De plus la version jar ne comprend pas les derni res volutions Conclusion L impl mentation s est d roul e avec succ s malgr quelques fonctionnalit s qui ont du tre abandonn es faute de temps par exemple le stockage et traitement des certificats dans la carte Il faut relever que le toolkit SSO de Clareity Security tait tr s basique Il a du tre modifi pour proposer de nouvelles fonctionnalit s Il n est pas remis en cause car il simplifie grandement l utilisation de la librairie OpenSAML qui doit tre utilis e pour travailler correctement en suivant le standard avec SAML sur la plateforme Java David Olivier Page 95 sur 146 6 Validation et tests de s curit Introduction Les tests de application qu ils soient fait en cours de codage ou sa la fin permettent de v rifier son fonctionnement ses fonctionnalit s Tous les tests se sont d roul s sur des PC avec les sp cifications suivantes Intel Core 2 DUO 6400 2 13GHz 2 Go de m moire RAM Microsoft Windows
101. gement HES SO Fribourg david master laptop sudo nmap sV 192 168 1 1 Starting Nmap 4 53 http insecure org at 2008 11 04 15 21 CET Interesting ports on 192 168 1 1 Not shown 1706 closed ports PORT STATE SERVICE VERSION 135 tcp open msrpc Microsoft Windows RPC 139 tcp open netbios ssn 445 tcp open microsoft ds Microsoft Windows XP microsoft ds 3306 tcp open mysql MySQL unauthorized 8009 tcp open ajp137 8080 tcp open http Apache Tomcat Coyote JSP engine 1 1 8081 tcp open http Network Associates ePolicy Orchestrator Computername STYXIDP Version 3 6 0 574 8443 tcp open ssl http Apache Tomcat Coyote JSP engine 1 1 MAC Address 00 19 D1 25 2D 5C Intel Service Info OS Windows Host script results _ Discover OS Version over NetBIOS and SMB Windows XP Service detection performed Please report any incorrect results at http insecure org nmap submit Nmap done 1 IP address 1 host up scanned in 56 442 seconds gt fingerprint Avec l analyse nmap pr c dente on voit que Windows XP est le syst me d exploitation de la machine Avec Xprobe2 le r sultat est plus flou mais on constate quand m me que le systeme d exploitation est Windows bt xprobe2 192 168 1 1 Xprobe2 v 0 3 Copyright c 2002 2005 fyodor o0o nu ofir sys security com meder o0o nu Target is 192 168 1 1 Loading modules Following modules are loaded 13 modules registered Initializing scan engin
102. gerAid cardManager getAID cardManager installForLoad cap pkgId 0 cap pkgld length cardManagerAid 0 cardManagerAid length null 0 null 0 O null 0 cardManager load cap null CardManager LOAD_ALL null cardManager getMaxBlockLen Ensuite il faut rendre l applet s lectionnable pour y acc der byte capaid cap aids 0 cardManager installForInstallAndMakeSelectable cap pkgld 0 cap pkgId length capaid 0 capaid length capaid 0 capaid length 0 defaultInstallParam 0 defaultInstallParam length null 0 David Olivier Page 73 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Apr s ces op rations l applet est install et accessible dans la carte On peut communiquer avec lui facilement en utilisant la technologie RMI 5 2 8 Traitement et processus Pour des questions relatives a la s curit principalement la connexion la JavaCard ne doit pas tre coup e durant tout le traitement Sinon le code PIN devrait tre stock dans la partie applicative ou tre re demand l utilisateur ce qui n est pas envisageable C est d une part pour cela que tout le traitement ce fait dans un processus Ensuite il y a aussi la question de l interface graphique qui est paralys e si des actions demandant des ressources sont trait es dans le m me processus que l affichage C est donc la deuxi me raison qui nous oblige utiliser un processus de traitement Ceci est v
103. gth i tocryptlil byte i System out println CLEAR Arrays toString tocrypt try obj genKey RSAPublicKey pk getPublicKey obj Cipher cipher Cipher getInstance RSA None PKCS1Padding cipher init Cipher ENCRYPT_MODE pk byte crypted cipher doFinal tocrypt System out println CRYPT Arrays toString crypted byte ch_f new byte 128 for int i 0 i lt 128 i ch_flil cryptedlil byte ch_1 new byte 128 for int i 0 1 lt 128 i ch_1 i crypted i 128 obj sendChallengeFPart ch_f obj sendChallengeLPart ch_1 byte decrypt obj process System out println DECRY Arrays toString decrypt catch Exception e e printStackTrace protected static RSAPublicKey getPublicKey rsatest SampleInterface obj throws Exception byte exp obj getPublicKeyExponent byte fh 0bj getPublicKeyModulusFHalf byte lh obj getPublicKeyModulusLHalf byte mod new byte 256 for int i 0 i lt 128 i mod i fh i for int i 0 i lt 128 i mod i 128 lh i BigInteger modulus new BigInteger 1 mod BigInteger exponent new BigInteger 1 exp RSAPublicKeySpec rpks new RSAPublicKeySpec modulus exponent KeyFactory kf KeyFactory getInstance RSA return RSAPublicKey kf generatePublic rpks David Olivier Page 99 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Cette premi re version a permis de tester
104. hA AI http www switch ch aai Verisign JOID http code google com p joid Wikipedia http en wikipedia org wiki Federated_identity http en wikipedia org wiki Identity_Metasystem http en wikipedia org wiki Information_Card http en wikipedia org wiki Identity Selector http en wikipedia org wiki Higgins trust framework http fr wikipedia org wiki Lightweight_Directory_Access_Protocol http en wikipedia org wiki List_of_OpenID_providers http en wikipedia org wiki Cardspace http en wikipedia org wiki OpenlD http fr wikipedia org wiki Open D http en wikipedia org wiki SAML http en wikipedia org wiki SAML_2 0 http fr wikipedia org wiki Security_assertion_markup_language X509Certificate conversion http www exampledepot com egs javax security cert ConvertCert html X509Certificate to PEM http forums sun com thread jspa threadID 5130710 amp messagel D 9469397 XML SAML Coverpage http xml coverpages org saml html David Olivier Page 145 sur 146 12 Annexes Tous les annexes sont pr sents sur le CD DVD et ne sont pas imprim s La documentation JavaDoc est pr sente pour chaque version dans les sources 12 1 Plan du CD DVD Documents Rapport Planning PV des r unions Sources Logiciels Mesures de s curit Mesures WireShark Prototype Version 1 0 Binaires Librairies Sources Version 1 1 Version 1 2 146
105. hallenge c est dire le d crypter Sortir la cl publique pour cr er un certificat ce cas d utilisation est assez explicite ce certificat sera ensuite stock et utilis par le fournisseur d identit Importer la cl publique du fournisseur d identit cette cl publique sera ensuite utilis e pour renvoyer le challenge de mani re s curis e au fournisseur d identit 4 1 2 Structure Le diagramme de classe suivant indique la structure de l application on card qui est com pos e d un applet qui se conforme la StyxJClInterface Celle ci permet ensuite d utiliser RMI pour appeler les m thodes pr sentes dans la carte 2 Java Remote Method Invocation http java sun com javase technologies core basic rmi index jsp David Olivier Page 39 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg StyxJCInterfa generateKeyPair getPublicKeyModulusFHalf byte getPublicKeyModulusLHalf byte getPublicKeyExponent byte setIDPPublicKeyModulusFHalf tmp byte setIDPPublicKeyModulusLHalf tmp byte setIDPPublicKeyExponent tmp byte generatelDPPublicKey sendChallengeFHalf tmp byte sendChallengeLHalf tmp byte processChallenge getResponseFHalf byte getResponseLHalf byte sendUserInfostid byte fn byte In byte getUserID byte getUserFirstName byte getUserLastName byte modifyPIN pin byte enterPIN pin byte FIGUR
106. hentification aupr s de l Identity Provider 3 Utilisateur 1 Affichage de la page s curis e 4 Utilisateur 1 Connexion dans un nouvelle fen tre au 2 i me Service Provider 5 Utilisateur 1 Affichage direct de la page s curis car le client est d j authentifi au fournisseur d identit 6 Utilisateur 2 Connexion au premier Service Provider 7 Utilisateur 2 Authentification aupr s de l Identity Provider 8 Utilisateur 2 Affichage de la page s curis e 9 Utilisateur 2 Connexion dans un nouvelle fen tre au 2 i me Service Provider David Olivier Page 113 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 10 Utilisateur 2 Affichage direct de la page s curis car le client est d ja authentifi au fournisseur d identit 11 Utilisateur 1 d connexion 12 Utilisateur 2 d connexion R sultat Le test s est d roul avec succ s Logout d un utilisateur de 2 Service Providers Situation initiale L Identity Provider est install par d faut Un premier Service Provider est install par d faut Un second Service Provider est install par d faut Sc nario 1 Connexion avec un utilisateur 2 Service Providers 2 Retrait de la carte 3 Les Service Providers sont d connect s dans les 10 secondes R sultat Le test s est d roul avec succ s 6 2 5 R sultats de la validation fonctionnelle La plupart des tests se sont d roul s avec succ s U
107. i byte Object generateStoreCertificate user int fn String In String pk PublicKey getUserCertificate user int XSO9Certificate getIdPCertificate X509Certificate getIdPCertificateJava java security cert x509Certificate generateKeyPair createldPCertificate validityDays int getUserChallenge userid int session HttpSession byte sendResponse userid String response byte session HttpSession boolean getPrivate_key RSAPrivateKey getPublic_key RSAPublicKey getCMKeys String setCMKeys k1 String k2 String k3 String createStorelnKeyTool password String getMetadata entity String recv_location String byte RegisteredSPManager CERT VALIDITY DAYS int 720 idpm IdentityProviderManager null sfp SecurityFunctionsProvider null username String password String url String driverclass String lt lt create gt gt RegisteredSPManager username String password String url String driverclass String idpm IdentityProviderManager getSPList String createNewSP name String deleteSP name String getSPrivateKeyPEM name String byte getSPPublickeyPEM name String byte getSPCertificate name String X509Certificate getSPCertificatePEM name String byte SecurityFunctionsProvider KEY LENGTH int 2048 sr SecureRandom new SecureRandom lt lt create gt gt SecurityFunctionsProvider generateKeyPai
108. ibourg Finalisation du prototype Pour obtenir relativement rapidement un produit avec le pro totype existant il faut rajouter ou modifier des fonctionnalit s Premi rement il faut utiliser des services WEB pour que les fournisseur d identit puissent communiquer directement avec les fournisseur de service et vice versa Dans un deuxi me temps on devrait modifier le syst me de d connexion des utilisateurs en utilisant des services WEB et pas de Java script non s curis comme actuellement L change d information sur les utilisateurs est importante c est pour cela qu il faudrait permettre au fournisseur de demander certaines informations en plus de l authentification au fournisseur de service en obligeant bien entendu l utilisateur autoriser ce transfert Le bug de l exposant fixe des cl s g n r es dans la plateforme JCOP doit absolument tre corrig pour des raisons videntes de s curit Et finalement il fau drait aussi prot ger l applet WEB d authentification et ses communications avec le serveur en l identifiant par exemple avec un challenge Perspectives conomique L identification num rique des personnes travers Internet est pour l instant peu s curis e et r barbative Les utilisateurs on des centaines d identifiants et de mots de passe diff rents ce qui rend l identification compliqu e et peu fiable SAML apporte une ouverture car il permet de n avoir qu une identit qu on peut utiliser avec
109. ication et possede diverses fonctions selon son implica tion dans le logiciel La plupart des systemes complets maintiennent leurs propres bases de donn es avec leurs propres informations SAML permet de partager ces informations entre diverses applications de mani re s curis e Le confidentialit des informations Privacy peut galement tre g r e SAML utilise des assertions pour valider l authenticit et l acc s aux ressources 9 http openid net specs openid authentication 2_0 html 10 http code google com p openid4java 11 http code google com p joid David Olivier Page 12 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Service Provider SP C est une application qui propose des services ou des ressources des utilisateurs Le SP redirige les utilisateurs vers le IdP pour leur authentification et attend leur retour authentifi l adresse qu il a fourni au IdP Une application peut avoir les 2 fonctions SP et IdP Assertions Objets XML qui fournissent des informations par rapport une entit Plu sieurs classes d information existent D clarations d authentification Authentication statements Ils sont cr s par le IdP qui authentifie l utilisateur Ils donnent des informations propos de l identification du statut de la validit et de la mani re d authentification D clarations d attributs Attribute statements Ils d crivent plusieurs ca
110. ichiers avec ces commandes mais attention il faut avoir dans le path le dossier bin du JDK jarsigner StyxWebSecurityAdminApplet jar styxidp jarsigner StyxWebSecurityAuthApplet jar styxidp jarsigner offcard jar styxidp jarsigner rmioffcard jar styxidp 5 3 5 SAML R ception de requ te d identification La requ te est r ceptionn par la page JSP recv_saml_auth_request jsp Le framework SSO de Clareity Security est utilis pour fa ciliter le traitement du SSO Il est bas sur OpenSAML HttpHandler httpPost new HttpHandler AuthnRequest authnRequest httpPost decodeSAMLRequest request String relayState httpPost getRelayState Ensuite on extrait le document XML de la requ te String messageXML httpPost getXMLSAMLRequest messageXML messageXML replace lt amp lt messageXML messageXML replace gt amp gt Contr le des fournisseurs de service Le contr le de l exp diteur de la requ te d au thentification se fait aussi dans la page JSP recv_saml_auth_request jsp Dans un premier on regarde l metteur de la requ te et on va chercher son certificat dans la base de donn es Issuer is authnRequest getIssuer X509Certificate cert rspm getSPCertificate is getValue Ensuite on contr le la validit du certificat et on cr e le validateur de signature David Olivier Page 82 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg org ope
111. igitales Le choix de l architecture d pend aussi fortement des attentes li es au projet N anmoins plusieurs contraintes sont n cessaires Le d ploiement d une infrastructure compl te com prenant au minimum un Service Provider celui qui demande l identification un Identity Provider celui qui authentifie l utilisateur une Java Card qui permet l identification s r aupr s de l Identity Provider et un fournisseur de donn es sur les utilisateurs LDAP ou DB propri taire Un des choix qui doit tre fait concerne soit l impl mentation d un Identity Provider en utilisant un framework avec l utilisation du concept de Strong Authentication sur une carte Java soit l int gration de ce concept dans une solution open source existante N anmoins une solution construite depuis un librairie est plus adaptable qu une solution existante m me s il est open source De plus l utilisation du protocole n est pas automatique en utilisant une librairie et permet d en avoir une meilleure connaissance Un second choix concerne le stockage de la cl publique elle m me stock e dans un certificat sign par l Iden tity Provider Il y a 2 possibilit s soit dans la base de donn es ou LDAP du Identity Provider soit sur la carte de l utilisateur Ce choix d pend d o le client pr f re stocker le certificat publique Dans un cas ou l autre le stockage du certificat ne remet pas en cause la pertinence de Videntificatio
112. in Insertion de la carte Insertion du PIN faux 9999 Insertion du PIN faux 9999 Insertion du PIN faux 9999 Insertion du PIN vrai 1234 Le PIN vrai n est pas accept SU OP A MED Re R sultat Le test s est d roul avec succ s Authentification sans carte Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Sc nario 1 Connexion sur l Identity Provider sur la page de login 2 Insertion du PIN 3 L authentification est refus e R sultat Le test s est d roul avec succ s mais il faudrait afficher un message qui demande l insertion de la carte G n ration d un carte Situation initiale L Identity Provider est install par d faut Sc nario 1 Connexion sur l espace d administration 2 Cr ation d une carte pour un utilisateur 3 Connexion avec la carte sur la page de login David Olivier Page 111 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg R sultat Le test s est d roul avec succ s 6 2 4 Test du syst me dans sa globalit Cr ation de 3 utilisateurs cartes comprises et authentification Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Sc nario Cr ation de 3 utilisateurs avec cartes John Smith Jane Smith Marcel Durant Connexion de Jane Smith Autoriser les popups depuis l Identity Provid
113. ings utilis s pour la SSO d pendant du d ploiement choisi sont les 3 premiers HTTP Redirect HTTP Post et HTTP Artifact Profiles Un profil rassemble les assertions protocoles et bindings pour effectuer un cas d utilisation Des contraintes ont t introduites dans les profils afin de promouvoir l inter op rabilit entre les diff rentes impl mentations Dans ce projet nous allons nous concentrer sur un des profils fourni par SAML Web SSO Profile Les autres profils ne sont pas comparables avec OpenID Ce profil sp cifie comment utiliser un navigateur Internet pour faire du SSO en utilisant le Authentication Request Protocol et les SAML Responses messages and Assertions Voici une proc dure d utilisation du SSO avec HTTP Redirect 12 http www oasis open org committees download php 4647 sstc saml bindings 2 0 draft 02 pdf David Olivier Page 13 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 1 L utilisateur effectue un requ te au SP 2 Le SP construit un objet SAML de type Authentication Request Protocol Cette requ te inclue la description de l entit qui la cr e l adresse o envoyer la r ponse URL et une variable d tat du relai Le XML est compress en utilisant l algorithme DEFLATE et encod en utilisant BASE64 Il est ensuite plac dans le HTTP Location header comme un param tre de requ te 3 L utilisateur redirige cette req
114. ion sera de toute mani re expir e car il n aura pas recu de challenge depuis plus de 20 secondes private static final int MAX_ELAPSEDTIME_AUTH 20 in sec request getSession setAttribute authenticated eid request getSession setMaxInactivelnterval MAX_ELAPSEDTIME_AUTH Supprimer la session de l utilisateur imm diatement apr s le retrait de la carte Pour David Olivier Page 79 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg cette fonctionnalit on utilise l invalidation de session request getSession invalidate Il faut contr ler la validit du certificat correspondant Vutilisateur Il est pr sent dans la base de donn es de l Identity Provider Le contr le s effectue par rapport au certificat public du fournisseur d identit qui a sign le certificat et par rapport la date courante La m thode suivante est appel e avant chaque utilisation d un certificat d utilisateur public boolean verifyCertificate X509Certificate cert try cert checkValidity cert verify certIdP getPublicKey return true catch Exception e return false Fonctions du servlet d administration Voici ses principales fonctions G n rer un certificat avec la cl publique de l utilisateur et ses informations person nelles Cela inclut la signature de ce certificat avec la cl priv e de Identity Provider et son stockage dans une base de donn
115. ionUID long 1L lt lt create gt gt download doGet request HttpServletRequest response HttpServletResponse doPost request HttpServletRequest response HttpServletResponse doProcess request HttpServletRequest response HttpServletResponse FIGURE 4 14 Diagramme de classe des servlets Les 3 servlets servent comme leurs noms l indiquent communiquer avec l applet d au thentification avec l applet d administration et a t l charger des fichiers qui sont pr sents en m moire ou dans la base de donn es Tous les servlets ont 3 m thodes pour plus de commo dit les requ tes arrivant dans les doGet et doPost sont transf r es dans les doProcess ou les classes de la logique m tier sont utilis es pour traiter les diff rentes demandes David Olivier Page 54 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg IdentityProviderManager CERT VALIDITY DAYS int 720 sfp SecurityFunctionsProvider username String password String url String driverclass String certidP X509Certificate private_key RSAPrivateKey public_key RSAPublickey rand SecureRandom new SecureRandom CMKey1 String CMKey2 String CMKey3 String lt lt create gt gt IdentityProviderManager username String password String url String driverclass String session HttpSession StoreParalnDb convertObjectToByte obj Object byte convertByteToObject ser
116. ions 1 2 Sous General Existing Projects into Workspace 3 4 Sous Select root directory indiquez le chemin du dossier projet Eclipse dans les aL Dans le Project Explorer clique droit puis Import enfin Import Ensuite Next sources Ensuite Next le projet est finalement import En ce qui concerne les projets des Services Provider et Identity Provider il faut confi gurer les serveurs Tomcat onglet server clique droit new indiquer la version et l emplacement dans Server Runtime et la configuration du server xml avec SSL pour que ils soient r ellement actifs Plus de d tails sont fournis dans le chapitre Impl mentation S curisation des fournisseurs d identit et de service David Olivier Page 133 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 7 4 Les logiciels 7 4 1 Eclipse et JCOP Deux versions d Eclipse ont t employ es pour ce projet Eclipse avec JCOP fourni sur le cd livr avec les cartes NXP Eclipse Java EE t l charg sur le site http www eclipse org downloads Installation Voici la proc dure d installation a suivre 1 Installez le Sun JDK 1 4 avec le JRE dans c jdk14 Installez le Sun JDK 1 5 avec le JRE dans c jdk15 Installez le pilote SCR3310 pr sent sur le cd D compressez Eclipse dans un dossier de votre choix ee DS Cr ez un racco
117. its moins s curis e avait t choisie ses probl mes auraient t vit s car le modulo aurait t de 128 bytes Challenge L algorithme RSA avec le padding PKCS1 a t choisi Le challenge crypt prend de toute mani re 256 bytes avec un cl de 2048bit Cela aurait aussi t vit avec une cl de 1024bit car il prendrait 128 bytes Response la r ponse est aussi crypt et subit donc les m mes contraintes que le challenge Avec cette contrainte on voit donc appara tre plusieurs m thodes pour la m me action mais aussi des variables temporaires pour stocker les donn es entre les op rations Le stockage des certificats n est pas facilit sur la carte Aucune fonction de PAPI permet de le traiter La seule possibilit imm diate est de les enregistrer dans la m moire de la carte mais ce n est d aucune utilit car la carte n a aucune fonctions pour les traiter C est pour cela qu aucun certificat n est stock sur la carte Les JavaCard ne poss dent que tr s peut de types utilisables les string ou integer sont stock s sous forme de tableau de bytes Cette contrainte concerne l identifiant utilisateur son nom et son pr nom Les JavaCard n ont pas de garbage collector automatique lorsqu on utilise le mot cl new dans une m thode on s attend ce que les objets ayant des r f rences internes ou non statiques soient supprim s la sortie de la m thode Mais le probl
118. l mentation de OpenGroup s Distributed Auditing System CASA Composant permettant d enregistrer les donn es confidentielles qui peuvent tre utilis es pour le SSO par exemple Novell IBM Higgins Higgins est framework qui contient plusieurs composants permettant de faciliter le d ploiement de solutions de gestion d identit s Voici les solutions propos es par Higgins Identity Selectors GTK and Cocoa Selector pour Firefox ou autre application sur Linux FreeBSD and OSX RCP Selector une application RCP Eclipse Firefox Embedded Selector pour Firefox sur Windows Linux and OSX Identity Provider web services STS IdP WS Trust Identity Provider webapp and web service SAML2 IdP SAML2 Identity Provider webapp and web service Relaying Party web site Extensible Protocol RP Website 1 0 I Card enabled Relying Party site webapp Identity Attribute service IdAS Solution Identity Attribute Service uses Context Provider plugins to adapt existing data sources to the Context Data Model David Olivier Page 16 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 3 2 Comparaison des technologies La comparaison des technologies s lectionn es n est pas une tache facile car elles different par leurs fonctions et leurs places au niveau des systemes de Federate Identity Management Dans le premier chapitre OpenID SAML et InfoCard vont d
119. lizeUpdate 255 0 CardManager SCP_02_15 cardManager externalAuthenticate OPApplet APDU_ENC Une fois authentifi on peut modifier les cl s pr sentes cardManager storeKeyset Keys_STYX 0x01 Mais attention on ne peut pas modifier les cl s pr sentes en position 255 par contre s il l on ajoute un triplet de cl s entre 1 et 254 le triplet pr sent en 255 n est plus en service David Olivier Page 66 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 5 2 Applets Web Administration et Authentification 5 2 1 Interface de l applet WEB d administration SmartCard creation fy nt to crea ard for Please insert a blank smardcard in the cardreader enter the new pin and click on start Smart Card Configurator New PIN Code FIGURE 5 1 Applet d administration impl mentation demande du pin Smart Card Configurator StyxApplet installed FIGURE 5 2 Applet d administration impl mentation carte en cours de cr ation David Olivier Page 67 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Smart Card Configurator SmartCard sucessfully generated FIGURE 5 3 Applet d administration impl mentation cr ation de la carte termin e 5 2 2 Interface de applet WEB d authentifcation er you pin and click on login if you want to be Smart Card Login FIGURE 5 4 Applet d authentification impl mentatio
120. me n a pas les cl s du CardManager il les demande part si les cl s sont les cl s JCOP par d faut Formulaire d insertion d utilisateur Situation initiale L Identity Provider est install par d faut David Olivier Page 106 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Sc nario Zones de texte requises 1 First Name 2 Last Name 3 Email Zones de texte avec longueurs maximale 1 First Name Last Name Address Zip City Country Phone 8 Email Zones de texte typ es 1 Adresse NO ER wn 2 Zip 3 Phone 4 Email R sultat La longueur maximale du champs adresse n est pas contr l e Formulaire de modification d utilisateur Situation initiale L Identity Provider est install par d faut Sc nario Zones de texte requises 1 First Name 2 Last Name 3 Email Zones de texte avec longueurs maximale 1 First Name Last Name Address Zip City Country Phone 8 Email Zones de texte typ es 1 Adresse NOR wn 2 Zip 3 Phone 4 Email David Olivier Page 107 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg R sultat La longueur maximale du champs adresse n est pas contr l e Formulaire d ajout de Service Provider Situation initiale L Identity Provider est install par d faut Sc nario 1 Dans l espace d administration sous Registered Service Provider puis
121. n La place de la Java Card dans le projet est une contrainte de taille car elle doit appor ter un plus une solution de Federate Identity Management J ai donc pens int grer un concept connu Strong authentication travers un navigateur WEB pour renforcer la phase d identification de l utilisateur avec l Identity Provider A la fin de la phase d analyse j ai d couvert un papier Pluggin a Scalable Authentication Framework into Shibboleth qui conforte mon analyse et les possibilit s de la r aliser Cet article parle d un prototype pour Vauthentification au moyen d un Java Card qui a t con u par l universit de Manchester en 2005 Des lors les technologies WEB et Java Card ont volu es et permettent certaines am liorations comme l utilisation de RMI entre l applet WEB et l applet on card la place David Olivier Page 35 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg de commandes APDU La possibilit d utiliser une Java Card du c t de l Identity Provider servant aux t ches de cryptage n est pas exclue mais n est pas consid r comme primordiale L utilisation de cette m me carte pour g n rer un challenge donn es al atoires n est pas raisonnable quand on conna t son manque puissance en la mati re La solution retenue apr s discussion avec les diff rents intervenants est une architecture utilisant SAML avec une identification forte bas e sur la technologi
122. n Le diagramme d tat suivant nous montre les diff rents tats dans lesquels le processus StyxAuthProcess peut se trouver lors de son utilisation David Olivier Page 48 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg A SS Cais 4 Dans l applet et pas directement L dans le processus incorrecte lt 3 C ntinueAuth IdP Authentification Alth_ok J Utilisateur authentifi la carte amp au fournisseur d identit Auth_no carte_non_pr se FIGURE 4 11 Diagramme d tat pour le processus d authentification Ce diagramme d tat est n cessaire la compr hension du processus Car pour des raisons videntes de s curit une seule et unique connexion la carte est initialis e De se fait le PIN n est pas directement stock dans l applet apr s l initialisation de la connexion avec la carte Cela nous oblige donc garder la connexion avec la carte ouverte durant toutes les tapes de l authentification de Vutilisateur A la fin de la s quence des tats la connexion n est pas coup e avec la carte et le processus n est pas suspendu Ceci pour que le fournisseur d identit s assure que la carte est toujours pr sente dans le lecteur de lutilisateur et aussi pour que l change de challenge response continue David Olivier Page 49 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 4 4 Identity Provider L Ide
123. n short 0 DEFAULT_PIN_LENGTH La cartes de type JavaCard poss dent toutes un gestionnaire de carte CardManager qui permet d installer de s lectionner de supprimer des applets Il permet aussi de configurer la s curit de la carte Pour acc der ce gestionnaire il faut entrer les 3 cl s n cessaires Pour les cartes JCOP elles sont l origine toutes de cette valeur 404142434445464748494a4b4c4d4e4f Dans un premier temps il faut se connecter la carte et obtenir l objet CardManager protected static byte JCOP_CARD_MANAGER_AID byte Oxa0 0x00 0x00 0x00 0x03 0x00 0x00 0x00 Initialize connection to card manager JCTerminal terminal JCTerminal getInstance pcsc 4 null terminal open JCard card new JCard terminal null 100 card reset CardManager cardManager new CardManager card JCOP_CARD_MANAGER_AID Ensuite il faut cr er les cl s et les soumettre au CardManager protected static byte JCOP_KEY1 ABCDEFGHIJKLMNO getBytes protected static byte JCOP_KEY2 ABCDEFGHIJKLMNO getBytes protected static byte JCOP_KEY3 ABCDEFGHIJKLMNO getBytes OPKey key4 new OPKey 255 1 OPKey DES_ECB JCOP_KEY1 OPKey key5 new OPKey 255 2 OPKey DES_ECB JCOP_KEY2 OPKey key6 new OPKey 255 3 OPKey DES_ECB JCOP_KEY3 cardManager setKey key4 cardManager setKey key5 cardManager setKey key6 cardManager select cardManager initia
124. n demande du pin David Olivier Page 68 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Welcome Card user logged Modify PIN Continue Identification FIGURE 5 5 Applet d authentification impl mentation auhtentifi la carte mais pas encore a l Identity Provider Authenticated Card amp IdP user logged FIGURE 5 6 Applet d authentification impl mentation authentifi Identity Provider Logout Auhtentification possible in 10 sec FIGURE 5 7 Applet d authentification impl mentation d connect cause du retrait de la carte 5 2 3 Contraintes Installer le JRE 1 5 ainsi que ses plugins pour le navigateur car le pilote JCOP ne fonctionne pas avec les versions suivantes Les applets doivent se trouver dans des archives jar sign es pour avoir acc s au pilote David Olivier Page 69 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Les applets doivent avoir le MANIFEST modifi pour acc der aux jars offcard jar et rmioffcard jar qui sont aussi sign s Il faut que le fichier jct dll se trouve dans le dossier system32 de Windows sur la machine qui utilise les applets Il faut accepter la signature des applets pour pouvoir les utiliser Le connecteur de la carte doit toujours rester ouvert sinon il faut r entrer le code PIN Les communications travers les firewalls sont utilisables s
125. nagement HES SO Fribourg Sc nario O e RTE Connexion sur l espace d administration de Identity Provider Suppression de Marcel Durant Sur le poste de client connexion au Service Provider Insertion de la carte de Marcel Durant Insertion du code PIN de Marcel Durant Connexion a la carte ok et proposition de changement de PIN Continuer l authentification Message d erreur Incorrect identification please contact our administrator R sultat Le test s est d roul avec succ s Cr ation de 2 Service Providers avec 1 utilisateur sur les 2 Situation initiale L Identity Provider est install par d faut Un premier Service Provider est install par d faut Un second Service Provider est install par d faut Sc nario 1 O e DS Connexion au premier Service Provider Authentification aupr s de l Identity Provider Affichage de la page s curis e Connexion dans un nouvelle fen tre au 2 i me Service Provider Affichage direct de la page s curis car le client est d j authentifi au fournisseur d identit R sultat Le test s est d roul avec succ s Cr ation de 2 Service Providers avec 2 utilisateurs sur les 2 Situation intiale L Identity Provider est install par d faut Un premier Service Provider est install par d faut Un second Service Provider est install par d faut Sc nario 1 Utilisateur 1 Connexion au premier Service Provider 2 Utilisateur 1 Aut
126. ne InformationCard Il existe plusieurs li brairies pour cr er des Relaying Party acceptant des InformationCard pour Ruby Java C CSHARP et PHP Principes 1 Le site ou application web demande une identit 2 L application de choix d identit apparait 3 L utilisateur s lectionne l identit qu il veut 15 http www opensaml org 16 http code crt realtors org projects websso 17 http shibboleth internet2 edu 18 https opensso dev java net 19 http lasso entrouvert org 20 http authentic labs libre entreprise org 21 http www sourceid org David Olivier Page 15 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 4 Le logiciel CardSpace contacte l Identity Provider correspondant pour obtenir un token sign qui prouve l identit de l utilisateur 5 Communique avec le Relaying Party pour prouver l identit de Putilisateur Novell IBM Bendit Bendit est un projet qui contient plusieurs solutions open source permettant de faciliter la gestion de l identification OTIS Onramp to Identity Services permet d acc der des OTIS Identity Server DigitalME Identity selector pour Linux et MacOSX Identity Provider Identity provider permet de g rer les utilisateurs et leurs identifica tions Higgins framework permettant de mettre en place des identit s digitales et des s lecteurs d identit s OpenXDAS est une imp
127. ne grande partie des fonctions de l application ne posent aucun probl me Mais il reste des petites modifications effectuer pour augmenter la qualit du prototype G n ration des certificats avec le nom IdPName qui se trouve dans le web xml cela pour viter d utiliser les certificats pour signer les applets ou SSL alors qu ils ne correspondent pas au nom d h te Modification de l applet d authentification et d administration pour que lorsque on tape sur entrer on continue automatiquement lorsqu on saisi le PIN Modification de l applet d authentification et d administration pour afficher un mes sage d erreur lorsque la carte n est pas pr sente Modification des pages user_add jsp et user_mod jsp pour que la longueur de l adresse soit contr l e correctement Ces derni res modifications ont t rajout es dans la version 1 1 du prototype Elles ont toutes t contr l es David Olivier Page 114 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 3 Tests de s curit du fournisseur d identit avec la m thode OSSTMM L analyse de s curit ne comporte que l analyse du fournisseur d identit Un r seau de test a t mis en place il ne comporte ni firewall ni IDS ces l ments ne seront donc pas analys Les m thodes de Social Engineering ne sont pas test es car aucune infrastructure de personnel utilisant les syst me est en place pas de
128. nfiance par d faut est de faire confiance tous le monde contrairement SAML qui sp cifie que toutes les entit s devraient faire les bonnes choses en respect avec la s curit OpenID Identifier est un pointeur vers l OpenID Identity Provider de l utilisateur et n cessite que l on fasse confiance toutes les Relaying Party avec lesquelles il est uti lis Selon certain sp cialiste c est une invitation au phishing Du c t de SAML si les m canismes de d couverte d Identity Provider ne sont pas impl ment s et que des relations de confiance sont cr es entre les SP et IdP il n y a pas ces probl mes de phishing et de confiance dans les SP SAML a donc un avantage certain dans ce domaine m me si l inter op rabilit en est fortement r duite 22 technique utilis e par des fraudeurs pour obtenir des renseignements personnels dans le but de perp trer une usurpation d identit http fr wikipedia org wiki Phishing David Olivier Page 18 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Comparaison au niveau de la s curit G n ralit s OpenID pr voit des m canismes de s curit qui ne sont pas obligatoires et qui sont donc a la charge des impl menteurs et d veloppeurs Ils permettent de s curiser et par cons quent de v rifier l tablissement des cl s et la signature des messages L utilisation de SSL TLS est aussi conseill e SAML quant lui
129. nge et de le re crypter pour qu il soit seulement lisible par le fournisseur d identit Le fournisseur d crypte le challenge et valide ou non l identification de l utilisateur si le challenge re u est gale au challenge g n r 4 3 4 Structure La structure de l applet WEB d authentification est fournie dans le diagramme suivant Mais voici une description g n rale des classes utilis es StyxAppletAuth GUI de l applet StyxAuthProcess Processus d authentification la carte et au fournisseur d identit Il inclut aussi le changement du code PIN Pour plus d informations sur ce processus r f rez vous au chapitre suivant StyxContinueActionListener Gestionnaire d v nement qui indique au processus StyxAu thProcess de continuer l authentification avec le fournisseur d identit StyxIDP Connector Interface de connexion au fournisseur d identit StyxJCConnector Interface de connexion la carte puce StyxModifyActionListener Gestionnaire d v nement qui indique au processus StyxAu thProcess de continuer par la modification du code PIN StyxStartActionListener Gestionnaire d v nement qui indique au processus StyxAu thProcess de s authentifier la carte puce David Olivier Page 47 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg FIGURE 4 10 Classes pour applet d authentification 4 3 5 Processus d authentificatio
130. ngine php http insecure org http neworder box sk http www milw0rm com search php Analyse de confiance Adresse IP 192 168 1 1 Nom de la machine StyxIdP Description de la confiance Le certificat du serveur est auto sign et n implique donc pas de tier pour v rifier le lien de confiance cha ne de certification La relation de confiance avec le fournisseur d identiti est cr e lors de la g n ration des cartes Car une carte ne peut divulguer des informations seulement son cr ateur cause de la double encryption de l authentification forte De plus le code PIN n est jamais transmis au serveur et n est stock que dans la carte ce qui augmente la confiance 6 3 4 Protection de la vie priv e Adresse IP 192 168 1 1 Nom de la machine StyxIdP Police de protection de la vie priv e Aucune information personnelle n est transmise par le fournisseur d identit des tiers La seule informations transmise par SAML est l identifiant de Vutilisateur Le nom et pr nom qui sont stock dans la carte ne sont jamais transmis des tiers et son prot g par un code PIN personnel que seul Vutilisateur possede Violation de la vie priv Aucune atteinte la vie priv n a t trouv dans le syst me faille de s curit permettant de recup rer des donn es N anmoins il faut que la LPD soit respect e Art 3 Les donn es trait es sont des donn es personnelles Ce qui nous oblige avoir certain
131. nistration du serveur sans SSL admin et styx sous Provider et KeyTool installation of keystore cr er en un nouveau 6 Re modifier le web xml NONE redevient CONFIDENTIAL 7 Copier les applet WEB StyxWebSecurityAdminApplet jar et StyxWebSecurityAuthApplet jar dans le dossier du serveur Tomcat webapps StyxWebSecurity_IdP Applets 8 Signer les fichiers pr c dent avec jarsigner nomfichier jar styxidp 9 Modifier le fichier server xml pour ajouter le SSL Plus de d tails sont fournis dans le chapitre Impl mentation S curisation des fournisseurs d identit et de service 10 Ne pas oubliez d installer le pilote Windows lors du branchement du lecteur de carte SCR3310 7 2 2 Installation d un fournisseur de service Il faut d abord installer Tomcat sur la machine qui fournit le service David Olivier Page 131 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Tomcat et configuration Voici ensuite les tapes de configuration 1 Ajoutez les libraires endorsed la base du dossier tomcat dans un dossier endorsed 2 D ployez le war depuis le Tomcat Manager 3 Modifiez le web xml de l application d ploi e webapps StyxServiceProvider WEB INF web xml privatekeyfile emplacement de la cl publique publickeyfile emplacement de la cl priv e IdPMetadataFileURL modifier nom de la machine de l Identity Provider IdPLoginControlURL modifier
132. nsaml xml security x509 BasicX509Credential publicCredential new org opensaml xml security x509 BasicX509Credential if spf verifyCertificate cert idpm getIdPCertificate throw new Exception cert not valid publicCredential setPublicKey cert getPublicKey O SignatureValidator signvalid new org opensaml xml signature SignatureValidator publicCredential Et finalement on controle la signature de la requ te try signvalid validate authnRequest getSignature catch Exception e out println Authentication request signature not valid return Envoi de r ponse d identification La r ponse a la requ te d identification se d roule dans la page saml_auth jsp Dans un premier temps il faut obtenir la cl publique et la cl priv e du fournisseur d identit pour signer la requ te Les classes PublicKeyCache et PrivateKeyCache sont utilis es pour obtenir et stocker les cl s dans le cache de l application Ensuite si l utilisateur est authentifi au fournisseur d identit on cr e la r ponse SAMLResponse rsp new net clareitysecurity websso idp SAMLResponse rsp setAuthnRequest auth rsp setLoginId authenticated String issuerName application getInitParameter IdPName rsp setIssuerName issuerName rsp setPrivateKeyCache pkCache rsp setPublicKeyCache pubCache rsp setSignAssertion true String samlResponse rsp createSuccessResponse String responseXML
133. nse envoy par l applet WEB un challenge D connecter l utilisateur en cours Savoir si le serveur une demande de redirection vers un Service Provider en cours ou non afin de connecter l utilisateur Communication SAML Les communications avec les fournisseurs de service se font par Vinterm diaire des pages suivantes recv_saml_auth_request jsp Re oit et contr le la validit signature du Service Pro vider d une requ te d authentification saml_auth jsp R pond une requ te d authentification apr s sa r ception et son contr le Voici plus en d tail le processus de r ponse une requ te d authentification d un fournisseur de service au fournisseur d identit avec l aide du graphique de flux suivant David Olivier Page 52 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Identity Provider receives a SAML authentication request X509 SP certificate to check sign IdP controls the request signature User X509 authentication to identity the identity Provider provider certificate identity Provider Private Key IdP creates SAML response IdP sends response to SP FIGURE 4 13 SAML Communication du c t du fournisseur d identit 1 Le fournisseur d identit recoit une requ te d authentification du fournisseur de service 2 Il contr le ensuite la signature de cette requ te
134. ntity Provider est le serveur qui fourni l identit de l utilisateur qu il authentifie pr alablement des fournisseurs de service Il comporte une partie permettant d authentifier les utilisateurs une autre permettant de communiquer de mani re s curis e avec les four nisseur de service et finalement une partie s occupant de la gestion des utilisateurs de leurs cartes et des Service Provider autoris s Ce chapitre traitera principalement des fonctionna lit s et de leurs mod lisations 4 4 1 Fonctionnalit s Administrateur AppletWEB Admin FIGURE 4 12 Cas d utilisations pour les applets Voici d abord en d tail les fonctionnalit s du module d authentification Authentifier Le fournisseur d identit doit tre capable d authentifier les utilisateurs de mani re forte Cela implique aussi une communication avec la carte travers un applet WEB vu que le client doit tre authentifi sur un site Internet G n rer un challenge Pour authentifier un utilisateur la m thode challenge response a t choisie Cela implique la g n ration d un challenge al atoire Ce challenge est David Olivier Page 50 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg crypt et envoy dans la carte de Putilisateur qui le traitera pour le renvoyer au serveur d identification Contr ler la r ponse Pour authentifier l utilisateur il faut contr ler que le challenge envoy p
135. ntre la Java Card et l Identity Provider OpeniD or SAML Client OpenID oF SAML Identity Provider Storage of user data Browser Database EL LDAP Server Identity Provider OPENID or SAML Client CardReader fe JavaCard FIGURE 3 14 Architecture globale pour OpenID ou SAML SAML Identity Provider and Service Provider Cette architecture consiste a la cr ation d un Identity Server permettant d authentifier un utilisateur l aide de la JavaCard et de la Strong authentication expliqu e au chapitre pr c dent SAML permet de simplifier la gestion de l authentification et peut tre employ par l Identity Provider et le Service Provider Vue que SAML est un standard il n est pas n cessaire de cr er le systeme d authentification du c t du Service Provider car plusieurs parties clientes sont d j disponibles et permettrons d utiliser notre Identity Provider D un point de vue technique il existe plusieurs librairies frameworks ou toolkits per mettant d impl menter plus facilement un Identity Provider ainsi qu un Service Provider OpenSAML Clareity Security SSO LASSO SourceID SAML 1 1 Toolkit Voici une architecture possible en cr ant un SAML Identity Provider et un SAML Service Provider avec une des librairies disposition L identity Provider peut utiliser comme source de donn es pour les utilisateurs soit une base de donn es priv e qu il faudr
136. onne malveillante d utiliser les failles de ses frameworks l insu du logiciel 6 4 7 R sultat des tests Plusieurs failles de s curit ont t relev es par ces tests Ces failles permettent d obtenir des informations utiles des personnes malveillantes mais aussi de paralyser le syst me ce qui pose vraiment un probleme L acc s aux diff rents servlets doit donc tre plus s curis 6 4 8 Corrections Les corrections des principales failles de s curit ont t appliqu a la version 1 2 David Olivier Page 123 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg S curisation du servlet d administration S curisation des exceptions des pages JSP S curisation du servlet d authentification sauf l obtention du challenge crypt qui n cessite la mise en place de l authentification de l applet par exemple par un challenge donn au chargement de l applet pour l authentifier lors de l appel de m thode Il est aussi important de pr ciser qu apr s un examen plus approfondi la faille de la fonction de logout tait un faux positif David Olivier Page 124 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 5 Visualisations des donn es chang es Le sniffage du r seau s est d roul a l aide du logiciel WireShark sur le PC client Voici un rappel de la structure du r seau priv relatifs aux tests StyxIdP 192 168 1 1
137. osants Les communications entre l applet WEB et la carte et entre l applet WEB et le fournisseur d identit ont t abstraites dans des classes g rant elles m me la connexion et l interfa age avec leur entit respective Cela permet de cacher la complexit des diff rents transferts David Olivier Page 41 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg de param tres et de valeurs de retour ainsi que des diff rentes actions demand es pour un processus transfert de cl demande de challenge etc Voici ci dessous les composants de la communication EJ StyxJavaCardApplet EJ StyxAppletAdmin C StyxIdP JSP pages Ej E O O StyxJCConnector StyxIDPConnector createPin generateStoreCertificate generateKeys getIdPPublicKey getPublicKey insertIdPPublicKey sendUserInfos FIGURE 4 4 Composants de communication applet d administration 4 2 3 S quence de g n ration de carte Deux s quences distinctes sont n cessaires la g n ration des cartes Tout d abord il faut s assurer d installer l applet dans la carte et de la rendre s lectionnable pour l utiliser depuis l ext rieur Cela se fait par des commandes APDU et le t l chargement du fichier CAP 4 fichier contenant l application installer sur la carte Dans un second temps il faut configurer la carte pour un utilisateur et la personnaliser c est ce que le diagramm
138. ossible d utiliser des librairies et des frameworks open source permettant de faciliter le d veloppement d un Identity Provider ou d un Service Provider OpenID4Java et JOID sont 2 frameworks qui peuvent le faciliter 27 http directory apache org 28 http www apple com fr server macosx technology opendirectory html 29 http www criticalpath net en 43 news news 186850 30 http directory fedoraproject org 31 http www redhat com directory_server 32 http www openldap org 33 http www novell com products edirectory 34 http www sun com software products directory_srvr_ee dir_srvr index xml 35 http www opends org 36 http www ibm com servers eserver iseries Idap schema 37 http www ibm com software tivoli products directory server 38 http www ibm com software fr lotus 39 http www microsoft com france technet produits win2003 AD_ADAM mspx David Olivier Page 31 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Voici une architecture possible en cr ant un OpenID Identity Provider et un OpenID Service Provider avec une des 2 librairies 4 disposition L Identity Provider peut utiliser comme source de donn es pour les utilisateurs soit une base de donn es priv e qu il faudra mod liser soit un serveur LDAP capable de stocker et d livrer des certificats publiques PKI Cette architecture comprend aussi la mise en place du concept de strong authentication e
139. ouvelle identit la g n ration d une nouvelle identit se fait avec la commande keytool genkey alias duke keypass dukekeypasswd Ensuite il faut r pondre au diff rentes questions pour g n rer le certificat Attention les cl s RSA ont une longueur maximal de 1024bit Tapez le mot de passe du keystore Quels sont vos pr nom et nom Unknown David Olivier Quel est le nom de votre unit organisationnelle Unknown Java Card Fed Man Quel est le nom de votre organisation Unknown EIF Quel est le nom de votre ville de r sidence Unknown Fribourg Quel est le nom de votre tat ou provinc Unknown Fribourg Quel est le code du pays a deux lettres pour cette unit Unknown CH Est ce CN David Olivier OU Java Card Fed Man O EIF L Fribourg ST Fribourg C CH non oui Liste des identit s pr sentes dans le keystore Il suffit de taper la commande suivante et d entrer le mot de passe du keystore keytool list Voici un exemple d affichage David Olivier Page 135 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Type Keystore jks Fournisseur Keystore SUN Votre Keystore contient 1 entr e s mike 28 oct 2008 keyEntry Empreinte du certificat MD5 AA 88 A7 45 E0 00 0B 1A 17 A1 FO AC 99 87 6D 37 Conclusion L installation du logiciel en soit est assez simple Ce qui est complexe c est s imaginer l in frastructure compl
140. r KeyPair createSelfSignCertificate dn String public_key RSAPublicKey private_key RSAPrivateKey validityDays int X509Certificate createSignedCertificate issuerdn String subjectdn String pub_subject PublicKey pk_issuer PrivateKey validity_days int X509Certificate writeCertificatePEM cert XSO9Certificate byte writePrivateKeyPEM pk PrivateKey byte writePublicKeyPEM pk PublicKey byte getCertificateFromPEM cer byte xS09Certificate od Senna cert PETIT priv PrivatekKey verifyCertificate cert X509Certificate certIdP X509Certificate boolean FIGURE 4 15 Diagramme de classe de la logique m tier de l identity provider La logique m tier est s par e en trois grandes classes SecurityFunctionsProvider Cette classe a toute les fonctions de cryptage n cessaires au traitement des diff rentes requ tes RegisteredSPManager Cette classe contient toute la logique m tier permettant de g rer David Olivier Page 55 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg les Service Providers cr ation cl s certificats enregistrement dans la base IdentityProviderManager Cette classe contient la logique m tier relative aux pa ram tres du serveur et la gestion des utilisateurs cr ation suppression visualisa tion g n ration de carte David Olivier Page 56 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg
141. r c demment soit bien trait et donc que la r ponse soit correcte C est seule ment apr s ce contr le que l utilisateur sera correctement authentifi Obtenir la cl publique de l utilisateur Avant d envoyer un challenge il faut le crypter avec la cl publique de l utilisateur dans ce cas seul l utilisateur peut d crypter le challenge Valider le certificat La cl publique de l utilisateur est stock e dans un certificat et doit tre valid e en contr lant la cha ne de certification du certificat ainsi que sa p riode de validit Les fonctionnalit s du module de gestion sont aussi importantes G rer les utilisateurs On doit pourvoir ajouter modifier supprimer un utilisateur On doit aussi pouvoir consulter son statut sans carte carte valide carte expir e Cr er une carte pour un utilisateur Cr er une carte est une proc dure complexe expliqu e dans le sous chapitre S quence de g n ration d une carte dans le chapitre Applet WEB Administration Voici cette proc dure simplifi e Installation de l application dans la carte Modification du code PIN Inscription d informations utilisateur identifiant nom pr nom G n ration d un paire de cl s RSA 2048bit Exportation de la cl publique hors de la carte CN QUES Cee ND at Cr ation d un certificat avec cette cl et signature du certificat par le fournisseur d identit 7 Enregistrement de la publique d
142. r du client et qui sont initialis s par le RP ou le OIIdP HTTP Redirect utilis pour passer travers le navigateur du client HTML FORM Redirection la redirection est en fait automatis e par un Java script Indirect Error response ces messages sont utilis s en cas de requ te mal form e ou contenant des valeurs incorrectes D tails Les d tails relatifs aux types de message voqu s peuvent tre trouv s facilement dans la sp cification du protocole OpenID Authentication 2 09 Utilisateurs IBM AOL BBC GOOGLE MICROSOFT MYSPACE ORANGE VERISIGN YAHOO Librairies ou produits libres java OpenID4Java librairie permettant de cr er un Identity Provider ainsi qu un Service Provider Joid de Verisign librairie permettant de cr er un Identity Provider ainsi qu un Service Provider 3 1 3 SAML Security Assertion Markup Language Principe de fonctionnement SAML est comme son nom l indique un langage qui est utilis pour des changes d in formations relatives a la s curit entre divers systemes Plusieurs profils d utilisations sont possibles et d crits dans le langage Les l ments importants de la sp cification ainsi que le profil correspondant au SSO sont d crit en d tails dans la suite de ce chapitre Identity Provider IdP Un IdP est responsable d authentifier les utilisateurs Normale ment il est pr sent dans chaque appl
143. ract ristiques a propos de l utilisateur authentifi Protocols Les protocoles d finissent les requ tes et les r ponses entre les IdP et les SP Plusieurs protocoles sont d finis dans SAML Authentication Request Protocol Single Logout Protocol Assertion Query and request Protocol Artifiact Resolution Protocol Name Identifier Mapping Protocol Name Identifier Management Protocol Le protocole utilis en premier pour le SSO est Authentication Request Protocol Il permet un SP de faire une requ te authentication assertion a propos d un utilisateur particulier a un IdP Bindings Les Bindings d crivent comment les protocoles sont transport s entre les divers intervenants Voici les Bindings que SAML d finit HTTP Redirect Binding Sp cifie comment transporter des messages de protocole avec des HTTP 302 redirect response HTTP POST Binding Sp cifie comment transporter des messages encod s en BASE64 avec une HTML Form dans un HTTP POST HTTP Artifact Binding Les artifacts sont des identifiants Le Binding correspond au HTTP Post et Redirect SAML SOAP Binding Sp cifie comment transporter des messages de protocole avec avec SOAP 1 1 sur HTTP Reverse SOAP PAOS Binding Utilis par les passerelles WAP pour qu un client HTTP soit un SOAP responder SAML URI Binding Permet d obtenir une SAML assertion en r solvant un URI Les bind
144. raphie 143 11 1 Livres revues rapports 143 Tl2 mes WEBS al nee A AA A ss 143 12 Annexes 146 12 1 Plan dw CD DVD ia ae einen a Spb aa 146 David Olivier Page 3 sur 146 1 Introduction Une des probl matiques actuelles sur Internet est la prolif ration des donn es d authenti fication car pour chaque service un utilisateur a un identifiant et un mot de passe diff rent Cette surcharge de donn es oblige les utilisateurs crire ou stocker leurs donn es souvent de mani re non s curis e Les systemes de Federate Identity Management ont t invent s pour r soudre ce probl me en permettant d enregistrer les utilisateurs aupr s d un serveur et de lui d l guer l authentification Ainsi diff rents fournisseurs de service peuvent authentifier les utilisateurs en communicant avec leur serveur d authentification respectif Cet change n cessite bien entendu une relation de confiance ainsi qu une authentification fiable sur le serveur d identification Secure Java Card for Federate Identity Management est projet prospectif permettant d tablir le lien entre une technologie de s curisation d information JavaCard et une tech nologie d infrastructure relative l authentification des utilisateurs Federate Identity Ma nagement Il permet d explorer les diff rents produits existants et technologies sur le march afin d tablir la meilleure infrastructure et cohabitation possible ent
145. re la JavaCard et une tech nologie de Federate Identity Management Cette tude est r alis e dans le chapitre d analyse de ce rapport L aspect principal de cette analyse porte sur la d couverte l valuation et le choix d une technologie de Federate Identity Management Seul deux de ces technologies sont vraiment int ressantes SAML et OpenID La phase d analyse consiste aussi placer les JavaCard dans la technologie choisie pour aug menter sa s curit palier a ses faiblesses et faciliter son utilisation La technologie JavaCard est d j connu dans un pr c dent projet Java Card Security qui consistait explorer les 1 Security Assertion Markup Language http www oasis open org committees tc_home php wg_abbrev security 2 Identity System http openid net Secure Java Card for Federate Identity Management HES SO Fribourg fonctionnalit s utilisables lors du cryptage de fichier l aide d un simulateur et non de carte physique La suite du projet est une sp cification et impl mentation d un prototype aboutissant l illustration des concepts et contraintes exprim s durant la phase d analyse UML est le principal outil de sp cification utilis En ce qui concerne l impl mentation des diff rents composants sp cifi s plusieurs outils et technologies sont n cessaires car l infrastructure du prototype est complexe et compos e de diff rents l ments serveur fournisseur d identifica tion ser
146. ret i buffer i 128 return ret public byte process throws RemoteException Cipher cipher Cipher getInstance Cipher ALG_RSA_PKCS1 true cipher init kpriv Cipher MODE_DECRYPT byte t new byte 256 short l cipher doFinal challenge short 0 short challenge length t short 0 byte res new byte 1 for short i 0 i lt l i res i t il return res public void sendChallengeFPart byte tmp throws RemoteException challenge new byte 256 for short i 0 i lt 128 i challenge i tmp i public void sendChallengeLPart byte tmp throws RemoteException for short i 0 i lt 128 i challenge i 128 tmp i Voici ensuite l application de test standalone public class Test public static void main String args Security addProvider new org bouncycastle jce provider BouncyCastleProvider David Olivier Page 98 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg byte Applet AID i 8899889981 AID byte 0x88 byte 0x99 byte 0x88 byte 0x99 byte 0x81 JCTerminal term term JCTerminal getInstance pcsc 4 null term open JCard card new JCard term null 5000 JCApplet jca new JCApplet card AID jca select rsatest SampleInterface obj rsatest SampleInterface RMIObjectFactory getInitialReference jca byte tocrypt new byte 128 for int i 0 i lt tocrypt len
147. rmvalidator addValidation FIELDNAME maxlen 60 ERRORMSG lt script gt Cette balise est utilis e pour pr ciser ot les messages d erreur sont affich s lt div id FORNAME_errorloc class error_strings gt lt div gt Plus de pr cisions peuvent tre trouv es sur le site de l diteur http www javascript coder com html form javascript form validation phtml David Olivier Page 134 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 7 4 3 Jarsigner Cet outils est fournis avec la plateforme Java et permet de signer des archives JAR et par cons quent des applets WEB Il est utilis dans le projet pour signer les archives des applets d administration et d authentification ainsi que les archives des API d acc s la JavaCard Pour signer un JAR il faut pr alablement avoir une identit dans le keytool Ensuite un peu signer une archive avec cette commande jarsigner jar file jar alias_in_keystore On peut aussi v rifier une signature jarsigner verify jar file jar Des informations plus pr cises sur cet outil sont disponible cette adresse http java sun com j2se 1 3 docs tooldocs win32 jarsigner html 7 4 4 Keytool Le keytool est un outil de la plateforme Java qui permet de g rer des identit s Toutes les identit s sont sauv es par d faut dans le keytsore fichier keytsore qui se trouve dans le dossier de l utilisateur courant G n ration d une n
148. ronnement de d veloppement 128 Secure Java Card for Federate Identity Management HES SO Fribourg 7 1 Compilation et assemblage Les fichiers sont auto compil avec Eclipse Il faut bien entendu v rifier qu ils soient tous compiler avant des cr er les packages Applet NXP JCOP Card Le fichier binaire important mettre de c t est StyxWebSecurity cap Il contient l application qui doit tre install sur la carte Il se trouve dans le projet Eclipse plus pr cis ment dans le dossier bin StyxWebSecurity javacard Applet WEB d administration Le fichier g n r est un jar qui doit seulement com prendre les fichiers suivants META INF MANIFEST MF Il faut ajouter cette ligne Class Path rmioffcard jar offcard jar StyxWebSecurity AdminApplet StyxAppletAdmin class GUI de l applet StyxWebSecurity AdminApplet StyxIDPConnector class Connecteur vers l Identity Provider StyxWebSecurity AdminApplet StyxJCConnector class Connecteur vers la Java Card StyxWebSecurity AdminApplet StyxNewCardProcess class Processus de cr ation d une nouvelle carte StyxWebSecurity AdminApplet StyxStartActionListenner class Action qui lance le processus StyxWebSecurity StyxJCInterface class Interface pour RMI et la JavaCard jct d11 Pilote obligatoire StyxWebSecurity cap Fichier de l application on card disponible dans le projet Java Card Avec Eclipse cliquez sur le projet avec le bouton droit puis export to jar file
149. ruption des donn es Test du servlet auth java Essai d obtention de challenge de renvoi de r ponse de r ception de logout et d ouverture d une connexion au Service Provider ou non depuis un navigateur Internet ou depuis l applet d authentification durant le codage Test du servlet administration java Envoi de requ te de certificat obtention de certificat du IdP obtention des cl s du CardManager depuis un navigateur Internet ou depuis applet d administration durant le codage Test du contr le des exceptions sur chaque page JSP Test de tous les liens et bouton pr sents Test du login de l espace d administration ressemble au test fonctionnel Test de la protection des pages d administration Test d ajout suppression modification d utilisateur ressemble au test fonctionnel Test de toutes les fonctions d administration ressemble au test fonctionnel Test de toutes les fonctions relatives au Service Provider Test de communication SAML et traitement avec le d bugger David Olivier Page 100 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Test des fonctions de login logout d utilisateur et p rennit de l authentification avec la page login jsp et le d bugger sur le serveur Service Provider Voici la liste des tests Test de traitement SAML avec le d bugger sur le serveur Test de r ception de fausse authentification SAML Test de la p rennit de l au
150. sation du changement ok David Olivier Page 103 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg R sultat Le test s est d roul avec succ s IdP Logout de l espace d administration Situation initiale L Identity Provider est install par d faut Sc nario 1 Connexion dans l espace d administration 2 D connexion de l espace d administration 3 Tentative infructueuse de r entrer dans l espace sans se re connecter P R sultat Le test s est d roul avec succ s IdP Logout d un utilisateur Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Sc nario NOR WN E Sur la page de login de l Identity Provider Insertion de la carte Insertion du PIN Continuer l identification L utilisateur est authentifi Retrait de la carte L utilisateur est directement d connect R sultat Le test s est d roul avec succ s SSL forc sur les pages Situation initiale L Identity Provider est install par d faut Sc nario 1 ND Connexion sur http styxidp 8080 StyxWebSecurity_IdP admin jsp redirig en SSL 2 Connexion sur http styxidp 8080 StyxWebSecurity_IdP login jsp redirig en SSL 3 Connexion sur http styxidp 8080 StyxWebSecurity_IdP check_auth jsp redirig en SSL 4 5 Connexion sur http styxidp 8080 StyxWebSecurity_IdP recv_saml_auth_r
151. se l utilisation de la JavaCard Voici plusieurs serveurs LDAP commercial ou non Apache Directory Server 27 Open Directory d Apple 7 Critical Path Directory Server et Meta Directory Server Fedora Directory Server Red Hat Directory Server 3 OpenLDAP Novell eDirectory 93 Sun Directory Server Enterprise Edition OpenDS a Sun Open Source Directory Server 3 IBM SecureWay Directory IBM Tivoli Directory Server formerly IBM Directory Server IBM Lotus Domino 38 Active Directory de Microsoft 39 9 4 5 ie 3 3 3 Propositions d architecture Plusieurs architectures se sont profil es en utilisant les technologies tudi es dans les chapitres pr c dents elles sont d crites dans les sous sections suivantes OpenID Identity Provider and Service Provider Cette architecture consiste a la cr ation d un Identity Server permettant d authentifier un utilisateur l aide de la Java Card et de la Strong authentication expliqu e au chapitre pr c dent Vue qu OpenID est un standard il n est pas n cessaire de cr er le syst me d au thentification du c t du Service Provider car plusieurs parties clientes sont d ja disponibles et permettrons d utiliser notre Identity Provider Pour les tests il sera n anmoins n cessaire d avoir une deux parties clientes afin de valider notre OpenID Identity Provider D un point de vue technique il est p
152. serveur on emploie 2 servlets un pour l applet d administration et l autre pour l applet d authentifi cation Les transferts de donn es qui sont pour la plupart du temps des objets s rialis s sont effectu s par de requ te HTTP de type GET ou POST Cela permet d viter des problemes de communication Voici donc comment on r cup re un objet s rialis et envoy depuis le serveur public RSAPublicKey getIdPPublicKey try URL url new URL applet getDocumentBase admin type getIdPPK RSAPublicKey puk RSAPublicKey new ObjectInputStream url openStream readObject return puk catch Exception e System out printin e toString return null On peut aussi transmettre des param tres simples dans URL URL url new URL applet getDocumentBase admin type genStoCert amp eid eid amp efn efnt amp eln eln Et finalement on peut aussi transmettre des objets s rialis s au serveur a travers une requ te POST public void generateStoreCertificate String user_id String fn String 1n RSAPublicKey pk try ObjectOutputStream out David Olivier Page 71 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg BufferedReader reader HttpURLConnection cnx base settings String eid URLEncoder encode user_id IS0 8859 1 String efn URLEncoder encode fn IS0 8859 1 String eln URLEncoder encode 1n IS0 8859 1 URL url new URL applet g
153. space d administration 75 Identity Provider impl mentation page principale de l espace d administration 75 Identity Provider impl mentation page d ajout de nouvel utilisateur 76 Identity Provider impl mentation page de modification d un utilisateur 77 Identity Provider impl mentation page de visualisation d utilisateur 78 Identity Provider impl mentation page de visualisation des Service Providers 78 Service Provider impl mentation page d accueil 86 Service Provider impl mentation page prot g e 87 Service Provider impl mentation page de d connexion 87 Httpprint analyse du fournisseur d identit 117 Servlet d authentification challenge plein 122 Servlet d authentification challenge vide 122 Exemple de trame de donn es SSL 126 David Olivier Page 142 sur 146 11 Bibliographie 11 1 Livres revues rapports IEEE WETICEO5 Pluggin a Scalable Authentication Framework into Shibboleth N Zhang L Yao J Chin Q Shi A Nenadic A McNab A Rector and C Goble Uni versity of Manchester and Liverpool John Moores University 2005 John Wiley and Sons Achieving fine grained access control in virtual organizations N Zhang L Yao A Nenadic J Chin C Goble A Rector D Chadwick S Otenko and Q Shi University of Manchester University of Kent
154. sword toCharArray O 5 4 3 SAML Envoi de la requ te d identification La requ te d authentification est envoy e avec la page JSP request auth jsp Le toolkit SSO de Clareity Security est bien entendu uti lis mais il a t modifi pour permettre la signature de la requ te Sa modification est abord e au sous chapitre suivant Dans un premier temps on r cup re les cl s avec les classes PrivateKeyCache et PublicKeyCache Ensuite on cr e la requ te avec tout les l ments n cessaires To create a HTTP redirect RedirectHandler redirectHandle new RedirectHandler The location of the recv auth request on the IdP actionURL application getInitParameter IdPRecvSAMLURL Our unique name issuerName application getlInitParameter SPName Where receive response on this SP assertionConsumerServiceURL application getInitParameter SPRecvSAMLURL David Olivier Page 88 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Prepare amp sending of the auth request redirectHandle setActionURL actionURL redirectHandle setAssertionConsumerServiceURL assertionConsumerServiceURL redirectHandle setIssuerName issuerName redirectHandle setProviderName application getInitParameter IdPName redirectHandle setBindindUriFormat RedirectHandler POST_BINDING redirectHandle setPrivateKeyCache pkCache redirectHandle setPublicKeyCache pubCache C
155. t tre fournies par diff rents Identity Provider comme OpenID ou SAML mais aussi directement par l utilisateur 3 2 2 SAML vs OpenID Perspectives au niveau de l utilisateur SAML est un framework abstrait et ne d finit pas ce que Putilisateur va voir ou faire contrairement OpenID qui d crit les actions que l utilisateur va faire Il est possible d utiliser SAML pour qu il r agisse exactement comme OpenID Perspectives au niveau des impl menteurs OpenID utilise des messages qui contiennent des donn es sous la forme de valeur cl ce qui le rend plus simple que SAML qui utilise des fichiers XML pour communiquer les informations Par contre OpenID est stricte dans sa syntaxe et son utilisation comme le transfert des documents dans des requ tes HTML tandis que SAML ne le pr cise pas Les 2 standards sont impl mentables avec beaucoup de langage et poss de aussi beaucoup de librairies aidant leur impl mentation Perspectives au niveau du d ployeur OpenID est tr s simple a d ployer et ne n cessite quasi aucune configuration Il est support par beaucoup de script et est directement inter op rable Il suit le pattern accepter tous les incomers Il est plus difficile de changer ce pattern pour faire voluer un site avec des David Olivier Page 17 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg s curit s suppl mentaires par exemple seul les membres de tel Identity Provid
156. t initialis lors de l installation de la carte avec une valeur choisie par l administrateur L utilisateur peut le changer lors d une de ces phases d authentification D claration du code PIN en attribut de l applet private static OwnerPIN pin Applet PIN Code Ensuite il est initialis l installation de l applet private static final byte PIN_TRYLIMIT 0x03 private static final byte PIN_MAXSIZE 0x04 private static final byte DEFAULT_PIN byte 0x12 byte 0x34 private static final byte DEFAULT_PIN_LENGTH 0x02 pin new OwnerPIN PIN_TRYLIMIT PIN_MAXSIZE pin update DEFAULT_PIN short 0 DEFAULT_PIN_LENGTH Avant d utiliser applet l utilisateur doit entrer le pin et peut le faire grace cette m thode private static final byte DEFAULT_PIN_LENGTH 0x02 pin check pin short 0 DEFAULT_PIN_LENGTH Pour s curiser chaque m thode on ins re comme premi re instruction de chaqunes d elles Vinstruction suivante if pin isValidated false ISOException throwlt IS07816 SW_CONDITIONS_NOT_SATISFIED Voici finalement la m thode pour le modifier David Olivier Page 65 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg public void modifyPIN byte pin throws RemoteException if thi pin isValidated false ISOException throwIt 1S07816 SW_CONDITIONS_NOT_SATISFIED if pin length 2 return New PIN size error muste be 4 digits this pin update pi
157. t malheureusement impossible de faire a manuellement avec l outil keytool car il n accepte que les importations de certificat publique SSL a bien entendu aussi besoin de la cl priv e C est pour cela que la page install_keys jsp a t cr e Elle permet d ins rer la cl priv e et le certificat du fournisseur de service dans son keytool Ainsi SSL peut tre utilis avec les cl s du fournisseur d identit Dans un premier temps on r cup re la cl et le certificat sur le serveur et ensuite on cr e le nouveau keystore David Olivier Page 87 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Insert in key store String password String request getParameter pass String keystorename System getProperty keystore if keystorename null keystorename System getProperty user home System getProperty file separator keystore especially this KeyStore ks KeyStore getInstance JKS SUN ks load null password toCharArray ks store new FileOutputStream keystorename password toCharArray ks load new FileInputStream keystorename password toCharArray java security cert Certificate certs new java security cert Certificatel1 certs 0 java security cert Certificate cf generateCertificate bis ks setKeyEntry StyxSP Key pkCache getPrivateKey password toCharArray certs ks store new FileOutputStream keystorename pas
158. tant reste l ouverture sur l utilisation des JavaCard pour par exemple stocker et utiliser les certificats l int rieur d une carte cela incluant la validation de la cha ne de certification et l extraction de leur cl publique David Olivier Page 138 sur 146 9 Remerciements Je remercie toutes les personnes ayant contribu au projet plus particuli rement Les professeurs M Joye et M Scheurer pour l accompagnement du projet et leurs conseils et leurs implications Le responsable externe M Weissbaum pour ses conseils avis s Les collaborateurs techniques M Roche et M Nguyen pour le support logistique mat riel salle 139 10 Figures Ce chapitre recense toutes les images et sch mas pr sents dans le document Ils sont r pertori s dans l ordre de leur apparition 140 310 ISSO e e AE A A RC ES Serres 10 3 2 Identification OpenID 11 3 3 Identification SAML 14 3 4 OpenID Authentification with esthablished Association J Hodges www identitymeme org 20 3 5 SAML HTTP Redirect or POST based Web Browser SSO Profile J Hodges identitymeme Org ome a A ee 21 3 6 OpenID Authentification without Established Association J Hodges identity Meme OLE 2 a a A A aaa Be ee 22 3 7 SAML Web Browser SSO Flow with Artifact Binding used on Reply form IdP J Hodges identitymeme org 23 3 8 SAM
159. thentification avec Java script logout du Service Provider Test de la protection des pages s curis es David Olivier Page 101 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 6 2 Validation fonctionnelle La validation consiste d abord d ployer l infrastructure de test et tester toutes les fonc tionnalit s en utilisant l infrastructure au complet pour les tests de concurrence par exemple L infrastructure de test est constitu e de 3 machines ayant les caract ristiques techniques cit pr c demment 2 fournisseurs de service et un fournisseur d identit Un des fournis seurs de service fait aussi office de client La validation fonctionnelle est divis e en 3 parties la validation du fournisseur d identit du Service Provider et de l infrastructure globale 6 2 1 Test des fonctions de l Identity Provider Installation Situation initiale aucun programme n est install sur l ordinateur Sc nario 1 Adresse IP 192 168 0 1 Nom du PC StyxIdP 2 Installation de MySQL 5 0 avec utilisateur local root et mot de passe dipl08 dans d MySQL 3 Installation de Java Developement Kit dans d jdk15 4 Installation de Tomcat dans c Program File Apache Software Foundation Tomcat 6 0 utilisateur admin et mot de passe dipl08 5 Copie des librairies endorsed dans Tomcat 6 0 endorsed 6 Installation de styxdb sql avec la commande sui
160. tit digitale Plusieurs solutions emploient ce concept Windows CardSpace et Bendit OpenID est un standard qui a t invent pour emp cher les spams sur les blog en identifiant les utilisateurs avant qu ils puissent d poser leurs com mentaires SAML est un standard de communication ne servant pas qu la SSO comme OpenID Ces 3 standards sont support s par des multinationales ce qui d montre leur importance sur le march et qui assure leur p rennit La technologie JavaCard servira s curiser les faiblesses de la technologie choisie Les JavaCard sont beaucoup plus que des simples SmartCard qui stockent des informations Elles permettent d ex cuter des programmes l int rieur d une machine virtuelle qui leur est propre et dont elles garantissent la s curit Le syst me de Strong authentication est un concept explor dans cette phase 1 M ta syst me d identit http msdn microsoft com fr fr netframework aa663320 aspx 2 Communaut disposant de divers outils opensource pour la gestion d identit http www bandit project org 3 Abr viation de Single Sign on expliqu plus en d tails dans ce chapitre 4 Carte puce au sens g n ral dans ce rapport carte m moire sans microprocesseur Secure Java Card for Federate Identity Management HES SO Fribourg Elle se compose d une description des diff rentes technologies de leur comparaison de l ap port de la technologie Java Car
161. tity Provider Insertion de la carte Insertion du PIN Continuer identification Affichage de l espace prot g Attente du 3 minutes de navigation Retrait de la carte Apparition du message de d connexion maximum 10 seconde apr s le retrait de la carte Affichage de la page de d connexion du fournisseur de service Impossible d acc der a la page prot g e d avant R sultat Le test s est d roul avec succ s SP SSL forc sur les pages Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut David Olivier Page 109 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Sc nario Le test consiste ce connecter sur les pages suivantes et voir si elles sont redirig es dans le mode SSL 1 http StyxSPBankDemo StyxServiceProvider request auth jsp 2 http StyxSPBankDemo StyxServiceProvider recv saml jsp 3 http StyxSPBankDemo StyxServiceProvider protected jsp R sultat Toutes les pages ont t redirig es Le test est un succ s Fausses cl s donn es au Service Provider Situation initiale L Identity Provider est install par d faut Un Service Provider est install par d faut Sc nario 1 Remplacement des cl s ne correspondant pas au Service Provider 2 Essai d authentification 3 Message d erreur Authentification request signature not valid R sultat Le test s est d roul avec succ
162. ture tels les applets web d administration et d authentification La mod lisation UML est outil puissant qui permet de vaincre la complexit a travers des sch mas structur s Elle est tr s utile m me si elle n est pas appliqu e compl tement tout le projet David Olivier Page 60 sur 146 5 Impl mentation Introduction Ce chapitre a pour but d exprimer les difficult s rencontr es lors de l impl mentation Il permet aussi de mieux comprendre le fonctionnement global du prototype Chaque l ment de l infrastructure est pr sent en sous chapitre Applet JavaCard Applet WEB d adminis tration Applet WEB d authentification Identity Provider et Service Provider Pour chacun de ses l ments les points importants de leur codage sont d velopp s 61 Secure Java Card for Federate Identity Management HES SO Fribourg 5 1 Applet JavaCard 5 1 1 Contraintes Il y a plusieurs contraintes importantes noter Elles nous emp chent de coder proprement et de sp cifier simplement certaines fonctionnalit s La taille maximum des tableaux de bytes pass sur RMI lors d un appel de m thode que cela soit en tant que param tre ou en temps que r ponse est de 254 Cela implique plusieurs m thodes pour envoyer ou r cup rer des donn es sur la carte Voici plus pr cis ment les donn es posant probl mes Cl publique La cl RSA en 2048bits qui a t choisie a un modulo de 256 bytes Si une cl en 1024b
163. u te au IdP Lors de la r ception l IdP d code en BASE64 et d compresse le XML avec DEFLATE Il se charge d authentifier l utilisateur et cr e un objet SAML Response pour signaler que l utilisateur est authentifi correctement Bien entendu le XML suit la m me proc dure DEFLATE et BASE64 4 L IdP redirige le token au browser 5 Le browser la redirige ensuite vers le SP 1 initial request gt D 2 redirect to bp Se 1 Pro Client web browser 5 accept SAML Token tp Lo request to dP _ __ response with SAML Token Identity Provider FIGURE 3 3 Identification SAML La proc dure est la m me avec HTTP POST sauf que la SAMLRequest est plac e dans un champs cach d un formulaire HTML Il en va de m me pour la r ponse Pour le binding HTML Artifact les requ tes et les r ponses ne passent pas par le browser mais directement entre le SP et le IdP La seule valeur qui passe par le browser est un artifact petit identifiant L change direct entre le SP et l IdP est ensuite r gi par le profil Artifact Resolution Profile D tails Les d tails relatifs aux assertions protocols et bindings peuvent tre trouv s dans les documents relatifs pr sents dans la sp cification de SAML 2 018 Utilisateurs Liberty Alliance 4 13 Sous r f rences http en wikipedia org wiki SAML_2 0 14 http www projectliberty org
164. u fournisseur d identit dans la carte Toutes ces op rations se d rouleront travers un applet WEB Obtenir la cl publique de la carte et la certifier Ce cas d utilisation est d crit dans le pr c dent C est au fournisseur d identit de s en charger G rer les fournisseurs de service Il faut pouvoir autoriser seulement certain fournis seur de service demander une identification d utilisateur Les fournisseurs de service doivent donc tre authentifi s avec le fournisseur d identit Cette gestion se fait par l Identity Provider qui cr e et fournit les paires de cl s et certificats mais aussi qui enregistre et certifie les fournisseurs de service autoris s 4 4 2 Structure Le fournisseur d identit est avant tout une application web qui peut se diviser en plusieurs parties distinctes telles que gestion communication applet d administration communication applet d authentification authentification et communication SAML Authentification Le module d authentification comporte une seule page qui contient l ap plet charg d acc der au lecteur de carte et de transmettre les challenge r ponse entre le fournisseur d identit et la carte de l utilisateur Cette page est login jsp Gestion Pour la gestion plusieurs pages sont n cessaires En voici un aper u admin jsp Identification pour rentrer dans l espace d administration Management provider_admin jsp Modification des options d
165. u fournisseur de service Elle est compos e de 2 pages login_control jsp Contient un java script qui fait des requ tes asynchrones au four nisseur d identit pour savoir si Vutilisateur courant est toujours identifi Sinon il d connecte l utilisateur du fournisseur de service check_auth jsp Fournit au Java script pr sent dans la page pr c dente les informations concernant la connexion de l utilisateur au fournisseur d identit La page login_control jsp est charg par le fournisseur de service et est invisible luti lisateur cadre Elle appelle une page de d connexion pr sente sur le fournisseur de service Logique m tier La logique m tier se trouve en partie dans le code des pages JSP mais aussi dans les classes pr sentent dans le package StyxWebSecurity IdP sserialVersionUID long 1L im IdentityProviderManager null lt lt create gt gt admin doGet request HttpServletRequest response HttpServletResponse doPost request HttpServletRequest response HttpServletResponse doProcess request HttpServletRequest response HttpServletResponse serialYersionUID long 1L MAX ELAPSEDTIME AUTH int 20 im IdentityProviderManager null lt lt create gt gt auth doGetirequest HttpServletRequest response HttpServletResponse doPostirequest HttpServletRequest response HttpServletResponse doProcess request HttpServletRequest response HttpServletResponse serialYers
166. u serveur d identification David Olivier Page 51 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Management sp_add jsp Ajout d un Service Provider Management sp_del jsp Confirmation de suppression et suppression d un Service Pro vider Management sp_view jsp Visualisation des Service Providers enregistr s Management user_add jsp Ajout d un utilisateur Management user_del jsp Confirmation de suppression et suppression d un utilisa teur Management user_gsc jsp Cr ation d une carte pour un utilisateur Management user_man jsp Visualisation des utilisateurs et de leurs statuts Management user_mod jsp Modification d un utilisateur Management user_view jsp Visualisation des d tails concernant un utilisateur Communication avec l applet d administration Les communications avec l applet d administration sont les suivantes et sont g r es par StyxWebSecurity Servlets admin java Cr er et enregistrer un certificat pour l utilisateur dans le fournisseur d identit Obtenir le certificat du fournisseur d identit stock dans la base de donn es Obtenir les cl s du CardManager stock es dans la base de donn es Communication avec l applet d authentification Les communications avec l applet d authentification sont les suivantes et sont g r es par StyxWebSecurity Servlets auth java Obtenir un challenge pour l utilisateur qui le demande Traiter la r po
167. ur le renvoyer Vexp diteur Obtenir les informations de Putilisateur Dans la carte il ne suffit pas d avoir une cl priv e celle de l utilisateur et un cl publique celle du fournisseur d identit Mais il faut aussi une r f rence a l utilisateur pour retrouver sont certificat sur le serveur d identification ou ses informations personnelles C est dans ce but que certaines donn es sont stock es sur la carte Un identifiant unique ainsi que le nom et le pr nom correspondant l utilisateur sont donc stock s dans la carte Modifier le code PIN s il on d sire prot ger l acc s la carte par un code PIN il est inutile de ne pas offrir la possibilit l utilisateur de le modifier S authentifier l utilisateur de la carte doit aussi pouvoir d verrouiller les fonctionnalit s de la carte qu il souhaite utiliser pour s authentifier aupr s du fournisseur d identit Pour simplifier on peut dire que l utilisateur 2 niveaux d authentification au niveau de la carte avec son code PIN et au niveau du fournisseur d identit avec sa paire de cl s priv e publique Enregistrer les informations de l utilisateur les informations de l utilisateur identifiant nom pr nom sont ins r es l initialisation de la carte G n rer la paire de cl s les cl s sont g n r es sur la carte La cl priv e ne sort jamais de la carte et n est accessible que pour traiter un c
168. urci pour lancer eclipse avec le JRE 1 4 par exemple D eclipse eclipse exe vm c jdk14 jre bin javaw exe 6 Lancez Eclipse et dans Help Software Update Find and install s lectionnez Search for new features to install et cliquez sur next 7 D compressez JCOP Tools et PH Targets Pack dans des dossiers temporaires 8 Cliquez sur New local site pour ajouter un site correspondant au dossier d compress de JCOP Tools et PH TargetPack 9 Accepter les certificats durant l installation Lors de la cr ation d un projet ins rer une carte NXP JCOP pour activer le plugin 7 4 2 JavaScript Form Validation Pour valider les formulaires avant de les soumettre la bibliotheque JavaScript Form Validation a t utilis e Elle permet facilement de contr ler le type de valeur alpha numeric alphanumeric withspace withoutspace email la longueur max la longueur min les champs requis Pour Putiliser il faut copier le fichier gen_validatorv31 js et ins r ce code dans la balise lt head gt lt script language JavaScript src gen_validatorv31 js type text javascript gt Ensuite pour chaque formulaire il faut d clarer un formvalidator lt SCRIPT language JavaScript gt var frmvalidator new Validator FORMNAME frmvalidator EnableOnPageErrorDisplaySingleBox frmvalidator EnableMsgsTogether frmvalidator addValidation FIELDNAME req ERRORMSG f
169. ureConstants ALGO_ID_C14N_EXCL_OMIT_COMMENTS catch Exception e e printStackTrace Ajout de la signature la requ te Cette op ration se d roule toujours dans la m me m thode auth setSignature signature net clareitysecurity websso sp RedirectHandler Dans la m thode sendSAMLRedirect il faut r ellement donner l ordre de signature apr s avoir s rialis l objet pour le transfert par HTTP Redirect Cette cr ation de signature s obtient par l instruction suivante org opensaml xml signature Signer signObject signature David Olivier Page 91 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg 5 5 S curisation des fournisseurs d identit et de service 5 5 1 Tomcat et SSL Pour s curiser le serveur Tomcat il faut au pr alablement installer une cl priv e et un certificat dans un keystore On peut g n rer automatiquement un keystore avec la commande keytool mais attention la taille maximale des cl s est de 1024bit Il est aussi impossible d importer une cl priv e dans un keystore avec keytool C est pour ces raisons que l on emploie directement le Service Provider install_keys jsp ou l Identity Provider interface d administration Provider Settings administration pour cr er les keystores Par contre il faut configurer les serveurs Tomcat Pour se faire il faut diter le fichier server xml et rajouter le code suivant lt Connector port 8443
170. vante mysql u root p lt styxdb sql 7 D ploiement de l application StyxWebSecurity_IdP war l aide du Tomcat Manager 8 Dans le web xml passez de confidential none dataBaseUser root dataBasePassword dipl08 IdPName StyxIdP IdPCheckAuth https StyxldP 8443 StyxWebSecurity_IdP check_auth jsp IdPRecvSAMLURL https StyxldP 8443 StyxWebSecurity_IdP recv_saml_auth_request Jsp admin_ip 192 168 1 1 9 Connexion avec IE7 sur http localhost 8080 StyxWebSecurity_IdP admin jsp 10 Dans Vespace d administration le cr ation du keytool le keystore se trouve dans le dossier utilisateur 11 Modification de server xml pour SSL 12 Dans le web xml passez de none a confidential 13 Signature des jars dans Applets avec le keystore 14 Acc s l espace d administration en SSL 15 Contr le des signature des applets R sultat L installation s est d roul e avec succ s Il faut modifier le nom du certificat par celui du nom de la machine dans le web xml et non pas par le nom fixe actuel lors de la g n ration cela n cessite une nouvelle version de la g n ration de certificat David Olivier Page 102 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg Changement du mot de passe administrateur Situation initiale L Identity Provider est install par d faut Sc nario 1 OF ABACO BS Connexion l espace d administration de l Identity Provider Dans l espace d
171. veur fournisseur de service applets web permettant de communiquer avec les cartes a puce et finalement application a l int rieur de la carte a puce La validation du prototype est effectu e dans le chapitre qui lui est consacr grace princi palement des tests fonctionnels Elle comprend aussi des tests de s curit selon la m thode OSSTMM et des tests personnalis s selon l applicatif Finalement le dernier chapitre aborde le d ploiement environnement de d veloppement compilation cr ation des packages installation des serveurs d ploiement et installation du prototype C est une sorte de manuel d installation qui permet de mettre en place facilement les diff rents l ments du syst me 3 Open Source Security Testing Manual manuel de test de s curit open source http www isecom org osstmm David Olivier Page 5 sur 146 2 Cahier des charges Le cahier des charges a pour but de d finir les objectifs les principales t ches et contraintes du projet Le planning en fait aussi partie et d finit le plan de travail la dur e de travail pour accomplir chaque t che Il permet d estimer et de diriger le projet durant son d roulement 2 1 Objectifs Voici les objectifs du projet Secure Java Card for Federate Identity Management 1 Concevoir et d velopper une application dont l architecture profite de l utilisation d une JavaCard pour augmenter la s curit d une solution ad quate de Federat
172. vice Cela peut bien entendu tre modifi mais plus difficilement que dans SAML qui quant lui est beaucoup plus facilement personnalisable gr ce une sp cification plus ouverte Les 2 syst mes se situent aussi des niveaux diff rents OpenID est directement visible login avec URL SAML quant lui laisse beaucoup plus de libert s aux d veloppeurs Il va de paire que si SAML est beaucoup plus libre il est aussi plus dur impl menter qu OpenID m me si au niveau de l utilisateur la ressemblance est assez proche Malgr cela l impl mentation est grandement facilit e par la pr sence de framework libres pour les 2 technologies En lisant plusieurs avis d utilisateurs et de d ployeurs ainsi quand analysant ces technologies on arrive la conclusion qu OpenID est moins s curis et moins param trable que SAML C est aussi prouv par des tentative r ussi de phishing sur le syst me OpenID Pour plus de flexibilit et de s curit il est recommand d utiliser SAML Pour plus de simplicit et moins flexibilit et de s curit il est recommand d utiliser OpenID La technologie InfoCard a aussi t analys mais est tr s difficilement comparable car elle se trouve une autre niveau et est plut t compl mentaire Elle permet d employer OpenID et SAML dans la gestion d identit s personnelles qu elle propose Il est aussi dommage d utiliser une JavaCard comme un simple espace de stockage d identit s d
173. xception public byte getPublicKeyExponent throws RemoteException public void setIDPPublicKeyModulusFHalf byte tmp throws RemoteException public void setIDPPublicKeyModulusLHalf byte tmp throws RemoteException public void setIDPPublicKeyExponent byte tmp throws RemoteException public void generateIDPPublicKey throws RemoteException Challenge methods public void sendChallengeFHalf byte tmp throws RemoteException David Olivier Page 70 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg public void sendChallengeLHalf byte tmp throws RemoteException public void processChallenge throws RemoteException public byte getResponseFHalf throws RemoteException public byte getResponselLHalf throws RemoteException User infos methods public void sendUserInfos byte id byte fn byte 1n throws RemoteException public byte getUserIDO throws RemoteException public byte getUserFirstName throws RemoteException public byte getUserLastName throws RemoteException PIN methods public void modifyPIN byte pin throws RemoteException public void enterPIN byte pin throws RemoteException public void cleanMemory throws RemoteException 5 2 5 Communication avec l Identity Provider La communication avec l Identity Provider dans les 2 applets WEB se fait par lin term diaire d interfaces personnalis es et nomm es StyxIDPInterface Du c t du
174. yte IDPpkmod new byte MODULO_2048_SIZE private byte IDPpkexp Envoi sur carte travers plusieurs m thodes 2 pour le modulo et une pour l expo sant public void setIDPPublicKeyModulusFHalf byte tmp public void setIDPPublicKeyModulusLHalf byte tmp public void setIDPPublicKeyExponent byte tmp Mais du c t serveur il faut d abord d couper la cl en modulo et exposant byte buffer key getModulus toByteArray byte exponent key getPublicExponent toByteArray R ception depuis carte On r cup re d abord le modulo et exposant et on re g n re la cl BigInteger modulus new BigInteger 1 buffer_modulo BigInteger exponent new BigInteger 1 buffer_expo David Olivier Page 63 sur 146 Secure Java Card for Federate Identity Management HES SO Fribourg RSAPublicKeySpec rpks new RSAPublicKeySpec modulus exponent KeyFactory kf KeyFactory getInstance RSA return RSAPublicKey kf generatePublic rpks G n ration de la cl sur la carte On cr e une cl vide et on lui donne le modulo et l exposant IDPPublicKey RSAPublicKey KeyBuilder buildKey KeyBuilder TYPE_RSA_PUBLIC KeyBuilder LENGTH_RSA_2048 false IDPPublicKey setExponent IDPpkexp short 0 short IDPpkexp length IDPPublicKey setModulus IDPpkmod short 0 short 256 5 1 3 G n ration de cl et traitement du challenge Les cl s sont g n r es a l int rieur de la carte avec le th

Download Pdf Manuals

image

Related Search

Related Contents

Defi WEB - Eduscol  Hoefer SE600 Chroma  USO DE ADOBE CONNECT Requisitos de uso Reserva de salas  Peavey Q User's Manual    IP Strage TN  Samsung SC8200 Bezsáčkový vysavač s nejvyšším sacím výkonem, 2200 W Uživatelská přiručka (Windows 7)  HP PSC 1600 All-in  (Preliminary) Direct Access System User's Guide  User`s Manual of ISaGRAF Embedded Controllers  

Copyright © All rights reserved.
Failed to retrieve file