1 / 43

Sécurité JAVA et JAAS

Sécurité JAVA et JAAS. Fabien Sanglard – Yang Cao. Plan. Les différents aspects de la sécurité JAVA. Évolution de la sécurité depuis JAVA 1.0 La protection de l’utilisateur. La protection du système (JAAS). Authentification Autorisation Étude détaillé Démo. La sécurité JAVA.

laurel
Télécharger la présentation

Sécurité JAVA et JAAS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sécurité JAVA et JAAS Fabien Sanglard – Yang Cao

  2. Plan • Les différents aspects de la sécurité JAVA. • Évolution de la sécurité depuis JAVA 1.0 • La protection de l’utilisateur. • La protection du système (JAAS). • Authentification • Autorisation • Étude détaillé • Démo

  3. La sécurité JAVA. • Aspect fondamentale, dès la première version. • Principe de Sand-Box. • Évolution => Granularité très fine: • Définition de stratégies de sécurité.

  4. La sécurité JAVA. • Nouveaux dans JDK 1.4 : • JCE 1.2 (Java Cryptography Extension). • JSSE (Java Secure Socket Extension). • JAAS (Java Authentification & Autorisation Service).

  5. Évolution de la sécurité JAVA • JAVA 1.0 (1995) • But : Protéger l’utilisateur du système. • Concernait principalement les applets. • Apparition du principe « SandBox » . • Un code non approuvé est limité • Pas d’accès aux systèmes de fichiers. • Pas d’accès réseaux.

  6. Évolution de la sécurité JAVA La SandBox 1.0

  7. Évolution de la sécurité JAVA • JAVA 1.1 (1996) • Raffinement du modèle de SandBox. • Possibilité de «signer» une applet. • Le code approuvé possède alors les même droits qu’un code local. • Problème : Violation du principe du « moindre privilège ».

  8. Évolution de la sécurité JAVA

  9. Évolution de la sécurité JAVA • JAVA 1.2 (1997) • Évolution majeur en terme de sécurité • Possibilité de définir une politique de sécurité par l’intermédiaire des fichiers « policy ».

  10. Évolution de la sécurité JAVA

  11. La protection de l’utilisateur

  12. La protection de l’utilisateur • Quelques exemples de tout cela : • Une applet critique exécutée localement fonctionne sans problème. C:\> java WriteFileApplet

  13. La protection de l’utilisateur • Quelques exemples de tout cela : • Une applet critique exécutée localement fonctionne sans problème. • Si on ajoute un « Security Manager », rien ne va plus. C:\>java -Djava.security.manager WriteFileApplet

  14. La protection de l’utilisateur • Quelques exemples de tout cela : - Un outil permettant d’écrire facilement des fichiers « policy » : Policytool.exe

  15. La protection de l’utilisateur • Quelques exemples de tout cela : • Avec un fichier de configuration, le SecurityManager ne pose plus de problème. grant { permission java.io.FilePermission "<<ALL FILES>>", "write"; }; java -Djava.security.manager -Djava.security.policy=all.policy WriteFileApplet

  16. La protection de l’utilisateur • Quelques exemples de tout cela : • Un dernier exemple avec un browser. • Il est plus difficile de spécifier le fichier « policy » à utiliser…..

  17. Authentification Subject Autorisation Interactions Java Authentification & Autorisation • But : • Protéger le système de l’utilisateur. • Comment : • Créer un objet partagé par l’authentification et l’autorisation. • Étendre le modèle de sécurité standard ( security policy) pour gérer cet objet.

  18. Java Authentification & Autorisation • Comment ça marche ? • Authentification • On « branche » des modules de connexion à une entité. • Si l’utilisateur « passe » tout ces modules, il acquière alors une identité virtuel. • Autorisation • Il peut alors tenter d’exécuter des actions « critiques ». • Ces actions sont soumises au système de restrictions d’accès.

  19. JAAS : L’authentification • Les classe importantes pour l’identification: • Subject: • Représente un individu ou une organisation avec plusieurs identités de principale. L’authentification consiste à authentifier un sujet, tandis que les décisions en matières d’autorisation sont prises en fonction d’un sujet authentifié. • Logincontext: • Fournit une API de base, permettant aux sujets de se connecter/déconnecter du système. • LoginModule: • Définit l’interface que les fournisseurs de services d’authentifications qui supportent JAAS doivent implémenter. • Configuration: • Encapsule l’entité utilisée pour configurer une application avec des connexion particulièrs.

  20. JAAS : L’authentification • Les classe importantes pour l’identification: • CallbackHandler: • Définit l’interface à implémenter par les applications qui souhaitent autoriser le service d’authentification à leur passer des informations. • Callback: • Définit une interface de marqueurs implémentée par les objets qui sont passés à une implémentation CallbackHandler. L’objet Callback contient les données à passer à l’application. • PrivilegedAction: • Les actions critiques y sont stockées

  21. Configuration.jaas (liste des modules JAAS : L’authentification (chronologie) LoginContext Configuration new LoginContext( "Nom de configuration", MyCallbackHandler);

  22. Configuration.jaas (liste des modules) JAAS : L’authentification (chronologie) LoginContext Configuration LoginModule 1 LoginModule 2

  23. Configuration.jaas (liste des modules) JAAS : L’authentification (chronologie) LoginContext Configuration Login( ) Login( ) LoginModule 1 USER CallBackHandler Login( ) LoginModule 2

  24. JAAS : L’authentification (chronologie) LoginContext Login( ) LoginModule 1 USER CallBackHandler LoginModule 2 Subject Droits.policy

  25. JAAS : L’authentification (chronologie) LoginContext Login( ) LoginModule 1 USER CallBackHandler LoginModule 2 Subject DoAsPrivileged( ) PrivilegedAction

  26. Focus sur les CallbackHandler • Le but de l’authentification est de créer un objet « Subject ». • Plusieurs attributs doivent être remplies: • Principals: Noms du sujet • publicCredentials: informations publics ( publicPassword) • privateCredentials: informations privées ( privtePassword) • Pour communiquer, les objects utilisent des Callback. • Ces Callback sont gérés par les CallbackHandler.

  27. LoginContext CallBack[] LoginModule CallbackHandler USER Focus sur les CallbackHandler - Le dialogue est délégué :

  28. LoginContext Subject GetSubject() LoginModule CallbackHandler CallBack[] Focus sur les CallbackHandler • Les callback sont utilisés pour compléter le « Subject ».

  29. Focus sur les Callback • Les differents types de Callbacks : • Language Callback • Name Callback • Password Callback • TextInput Callback • TextOutput Callback • Choice Callback • Confirmation Callback

  30. JAAS : L’authentification • Le fichier de configuration des modules de connexion: configuration.jaas Nom de configuration { JndiLoginModule Requisite Krb5LoginModule Sufficient NTLoginModuleOptional UnixLoginModuleOptional SampleLoginModule Required debug=true; }; Autre type d’analyse{ AnalyseRetineModule Required };

  31. JAAS : L’authentification • Les mots clés du fichier .jaas : • Required : non bloquant • Requisite : bloquant • Sufficient : bloquant • Optional : non bloquant

  32. Failed Module Criterion Pass/Fail SampleLoginModule Required OK NTLoginModule Sufficient !OK SmartCard Requisite OK Kerberos Optional !OK Overallauthentication OK JAAS : L’authentification • Exemple :

  33. Failed Module Criterion Pass/Fail SampleLoginModule Required !OK NTLoginModule Sufficient OK SmartCard Requisite Kerberos Optional Overallauthentication OK JAAS : L’authentification • Exemple :

  34. JAAS : L’authentification • Comment définir l’emplacement du fichier .jaas ? • Ligne de commande : • Java –Djava.security.auth.login.config=<location> • Modification du fichier java.security : • Login.config.url.1=<location>

  35. JAAS : L’ autorisation • Une fois l’utilisateur reconnu... • JAAS étend le modèle de sécurité JAVA2. • On définit donc une politique de sécurité pour un utilisateur spécifique ou pour un domaine.

  36. JAAS : L’ autorisation Pour cela, on utilise des fichiers .policy : Exemple : grant Principal Administrateur "root" { permission java.util.PropertyPermission "java.home", "read"; permission java.util.PropertyPermission "user.home", "read"; permission java.io.FilePermission "c:\\foo.txt", "write,read"; }; grant Principal Etudiant { permission java.io.FilePermission "c:\\foo.txt", "read"; };

  37. JAAS : L’ autorisation • Une fois identifié, le «Subject » utilise des « PrivilegedAction ». • On lance le traitement avec la méthode static suivante : Static Subject.doAsPrivileged(SujetCourant s, PrivilegeAction x);

  38. JAAS : L’ autorisation • Exemple : public class SampleAction implements PrivilegedAction { public Object run() { try{ FileWriter writer = new FileWriter(new File("c:/foo.txt")); writer.write("blabla"); }catch (IOException ioe){} return null; } }

  39. JAAS : L’ autorisation • Comment définir la source du fichier .policy ? • Ligne de commande : • Java –Djava.security.policy=<location> • Modification du fichier java.security : • auth.policy.url1=<location>

  40. JAAS: la démo (enfin)…

  41. JAAS : Mise en place • Mise en place d’une authentification JAAS : • Implémenter les interfaces suivants : • CallBackHandler • Handle() • LoginModule • initialize() • login() • commit() • Abort()

  42. JAAS : Mise en place • Mise en place d’une authentification JAAS : • Implémenter les interfaces suivants : • Principal • getName() • PrivilegedAction • run()

  43. Java Authentification & Autorisation • Où trouver JAAS ? • API d’extension pour JAVA 1.3 • Incorporé à JAVA 1.4 • Incorporé aux spécifications J2EE 1.3

More Related