Chapitre3 : Gestion des aspects de sécurité




                     MASTER PROFESSIONNEL
    NOUVELLES TECHNOLOGIES DES TELECOMMUNICATIONS ET RESEAUX
                             (N2TR)



                                    Cours JAVA © FST
                              Gestion des aspects de sécurité



Objectif :

       Ce chapitre vous permettra de connaître les principes de base de la
       sécurité en JAVA :
       Les problèmes de sécurité que peut rencontrer le langage JAVA et de
       comprendre les différents mécanismes proposés pour y remédier.




                                                                             1
Riadh BOUHOUCHI
Chapitre3 : Gestion des aspects de sécurité




                                                         Sommaire
Concept de base ....................................................................................................................................... 3
   Qu’est ce que la sécurité ? ................................................................................................................... 3
   La Sécurité informatique : ................................................................................................................... 3
Les problèmes de sécurité que peut rencontrer JAVA : .......................................................................... 3
   Mécanismes de sécurité Java :............................................................................................................. 3
       Le Bac à sable : ............................................................................................................................... 3
       Le vérificateur du bytecode : ........................................................................................................... 5
       Chargeur de classe : ......................................................................................................................... 5
       Manager de sécurité : ...................................................................................................................... 5




                                                                                                                                                            2
Riadh BOUHOUCHI
Chapitre3 : Gestion des aspects de sécurité


Concept de base

Qu’est ce que la sécurité ?

       Prévention : prendre les mesures empêchant les biens (matériels, immatériels) d’être
        endommagés.
       Détection : prendre les mesures pour détecter quand, comment et par qui les biens ont
        été endommages.
       Réaction : prendre les mesures pour récupérer les biens avant leur détérioration.

La Sécurité informatique :

La sécurité informatique assure :

       Confidentialité des données
       Intégrité des données
       Disponibilité des services



Les problèmes de sécurité que peut rencontrer JAVA :

Les problèmes de sécurité peuvent être classifiés comme suit :

       Problème de développement : problème de sécurité qui s’est présenté dans le code de
        l’application ou, lors de son interprétation en bytecode ou, pendant sa conversion par
        la machine virtuelle.
       Problème web : lors de l’exécution d’une applet celle-ci peut contenir un programme
        malveillant, un virus, etc. …).
       Etc. …

Mécanismes de sécurité Java :
Le Bac à sable :
 C’est le fait d’introduire dans la machine virtuelle un système d’exécution sécurisé, il
permet :
    D’interdire les accès au système de fichiers local de l’utilisateur
    D’interdire la divulgation d’informations personnelles sur l’utilisateur (nom de
       l’utilisateur, adresse mail, configuration de la machine, ...)
    D’interdire des connections réseaux différentes du serveur contenant l’applet
    D’interdire l’ouverture de fenêtre non marquée ”dangereuse”
    D’interdire les modifications de la configuration du système

Exemple du comportement du bac à sable avec une applet :




                                                                                                 3
Riadh BOUHOUCHI
Chapitre3 : Gestion des aspects de sécurité




                                              Serveur Web

                                                Bytecode




        Client



                 Navigateur
            Verificateur de
              bytecode

                                                            Compilateur
             Chargeur de
               classe


             Manageur de
              sécurité


                                                             Code JAVA




                 Exécutable




                                                                          4
Riadh BOUHOUCHI
Chapitre3 : Gestion des aspects de sécurité


Le vérificateur du bytecode :
Le vérificateur du bytecode permet d’analyser les fichiers bytecode par ses syntaxes et ses
flots de données.

Ce qui garantit :

       bytecode dans le format correct
       pas de dépassement de taille de pile
       types corrects des arguments des instructions du bytecode
       pas de conversion illégale entre types
       utilisation correcte des opérateurs de visibilité (private, public, protected)


Chargeur de classe :
Le chargeur de classe permet la protection de l’intégrité de l’environnement d’exécution comme
la non redéfinition des bibliothèques systèmes.

Ce qui interdit le contournement des mécanismes de sécurité mit en place.

Manager de sécurité :
Le manager de sécurité permet la vérification dynamique des appels aux méthodes
potentiellement dangereuses comme, lors d’un accès au système de fichier local ou, l’accès
aux variables de l’environnement utilisateur.




                                                                                                 5
Riadh BOUHOUCHI

JAVA Chapitre3

  • 1.
    Chapitre3 : Gestiondes aspects de sécurité MASTER PROFESSIONNEL NOUVELLES TECHNOLOGIES DES TELECOMMUNICATIONS ET RESEAUX (N2TR) Cours JAVA © FST Gestion des aspects de sécurité Objectif : Ce chapitre vous permettra de connaître les principes de base de la sécurité en JAVA : Les problèmes de sécurité que peut rencontrer le langage JAVA et de comprendre les différents mécanismes proposés pour y remédier. 1 Riadh BOUHOUCHI
  • 2.
    Chapitre3 : Gestiondes aspects de sécurité Sommaire Concept de base ....................................................................................................................................... 3 Qu’est ce que la sécurité ? ................................................................................................................... 3 La Sécurité informatique : ................................................................................................................... 3 Les problèmes de sécurité que peut rencontrer JAVA : .......................................................................... 3 Mécanismes de sécurité Java :............................................................................................................. 3 Le Bac à sable : ............................................................................................................................... 3 Le vérificateur du bytecode : ........................................................................................................... 5 Chargeur de classe : ......................................................................................................................... 5 Manager de sécurité : ...................................................................................................................... 5 2 Riadh BOUHOUCHI
  • 3.
    Chapitre3 : Gestiondes aspects de sécurité Concept de base Qu’est ce que la sécurité ?  Prévention : prendre les mesures empêchant les biens (matériels, immatériels) d’être endommagés.  Détection : prendre les mesures pour détecter quand, comment et par qui les biens ont été endommages.  Réaction : prendre les mesures pour récupérer les biens avant leur détérioration. La Sécurité informatique : La sécurité informatique assure :  Confidentialité des données  Intégrité des données  Disponibilité des services Les problèmes de sécurité que peut rencontrer JAVA : Les problèmes de sécurité peuvent être classifiés comme suit :  Problème de développement : problème de sécurité qui s’est présenté dans le code de l’application ou, lors de son interprétation en bytecode ou, pendant sa conversion par la machine virtuelle.  Problème web : lors de l’exécution d’une applet celle-ci peut contenir un programme malveillant, un virus, etc. …).  Etc. … Mécanismes de sécurité Java : Le Bac à sable : C’est le fait d’introduire dans la machine virtuelle un système d’exécution sécurisé, il permet :  D’interdire les accès au système de fichiers local de l’utilisateur  D’interdire la divulgation d’informations personnelles sur l’utilisateur (nom de l’utilisateur, adresse mail, configuration de la machine, ...)  D’interdire des connections réseaux différentes du serveur contenant l’applet  D’interdire l’ouverture de fenêtre non marquée ”dangereuse”  D’interdire les modifications de la configuration du système Exemple du comportement du bac à sable avec une applet : 3 Riadh BOUHOUCHI
  • 4.
    Chapitre3 : Gestiondes aspects de sécurité Serveur Web Bytecode Client Navigateur Verificateur de bytecode Compilateur Chargeur de classe Manageur de sécurité Code JAVA Exécutable 4 Riadh BOUHOUCHI
  • 5.
    Chapitre3 : Gestiondes aspects de sécurité Le vérificateur du bytecode : Le vérificateur du bytecode permet d’analyser les fichiers bytecode par ses syntaxes et ses flots de données. Ce qui garantit :  bytecode dans le format correct  pas de dépassement de taille de pile  types corrects des arguments des instructions du bytecode  pas de conversion illégale entre types  utilisation correcte des opérateurs de visibilité (private, public, protected) Chargeur de classe : Le chargeur de classe permet la protection de l’intégrité de l’environnement d’exécution comme la non redéfinition des bibliothèques systèmes. Ce qui interdit le contournement des mécanismes de sécurité mit en place. Manager de sécurité : Le manager de sécurité permet la vérification dynamique des appels aux méthodes potentiellement dangereuses comme, lors d’un accès au système de fichier local ou, l’accès aux variables de l’environnement utilisateur. 5 Riadh BOUHOUCHI