Projet :
LANDE

Précédent : Action TWO Remonter :
Contrats industriels
(nationaux, européens et Suivant : Actions régionales, nationales et
internationales
Action Java-Sécurité
Participants : Pascal Fradet, Thomas Jensen, Daniel Le
Métayer, Tommy Thorn.
Mots clés : Téléchargement, Vérification,
Analyse, Sécurité, Sûreté, Chargement dynamique, Visibilité,
Typage, Java .
Résumé :
Dans le cadre de l'action VIP du
GIE Dyade, nous avons proposé une formalisation
de la sémantique de certains aspects du langage Java. Nous nous
sommes focalisés sur les règles de visibilité (des classes et
de leurs membres) et leur évolution lors du chargement
dynamique de classes. Nous avons ensuite proposé un cadre pour
spécifier des politiques de sécurité basé sur une logique
temporelle linéaire à deux niveaux. Nous avons conçu une
méthode pour vérifier qu'un programme Java, réprésenté comme un
système de transition, satisfait une politique exprimée dans ce
cadre. La méthode répose sur un résultat qui permet de limiter
la taille du système en fonction de la propriété à
vérifier.
Nous participons à l'action VIP du
GIE Bull-Inria Dyade. Le thème de cette
collaboration est la formalisation de certains aspects de la
sémantique de Java et la preuve de propriétés de sécurité de
programmes (cf. module 6.1.3). L'étude des problèmes de
sécurité (au sens de confidentialité et d'intégrité notamment)
dans le contexte du langage Java représente un défi de première
importance pour plusieurs raisons:
- La sûreté (au sens du typage) et la sécurité sont
présentées comme des arguments pour la promotion d'un langage
qui a vocation à être utilisé dans des contextes mettant en jeu
des coopérations entre des codes issus de sites
différents.
- Le langage inclut des caractéristiques complexes (comme le
chargement dynamique ou des règles de visibilité inhabituelles)
qui justifient le besoin de définition formelle. Une telle
définition permettrait de clarifier certains aspects du langage
et servirait de base à un raisonnement rigoureux sur des
propriétés cruciales comme la sûreté du typage ou la garantie
de politiques de sécurité.
- Le développement de Java Card, la version de Java dédiée
aux cartes à puces, augmente encore l'importance des défis
cités plus haut et permet de les aborder dans un cadre
restreint, permettant l'application de techniques (analyse,
preuve) plus sophistiquées.
Nous nous sommes attaqués à cette formalisation en nous
focalisant sur les règles de visibilité (des classes et de leurs
membres) et leur évolution lors du chargement dynamique de
classes [[32]]. Il s'agit
en effet de caractéristiques particulières de Java qui ont un
impact direct sur la sécurité et dont les définitions informelles
ne sont pas exemptes d'ambiguïtés ou d'insuffisances. Cette
formalisation en terme de systèmes d'inférence nous a permis de
décrire de manière rigoureuse l'origine d'une erreur de sécurité
qui avait été découverte empiriquement par des chercheurs d'
ATT.
Nous avons ensuite proposé un cadre pour spécifier des
politiques de sécurité basé sur une logique temporelle linéaire à
deux niveaux. Nous avons conçu une méthode pour vérifier qu'un
programme Java, réprésenté comme un système de transition,
satisfait une politique exprimée dans ce cadre. La méthode répose
sur un résultat qui permet de limiter la taille du système en
fonction de la propriété à vérifier. Notre objectif actuel est
d'étudier l'effet d'une politique (c'est à dire les exigences
qu'elle impose) sur les composants d'une application Java (comme
le chargeur de classes).
Notre effort de formalisation des différents aspects de Java
et de sa mise en oeuvre se concrétise également à travers une
collaboration entamée avec le fabricant de cartes à puces
Bull-CP8 sur la vérification d'optimisations pour Java Card. Ce
projet (ref. Inria: 1 98 C 144), commencé en février 1998, doit
durer une année.

Précédent : Action TWO Remonter :
Contrats industriels
(nationaux, européens et Suivant : Actions régionales, nationales et
internationales