Détection de vulnérabilités appliquée à la vérification de code

UNIVERSITÉ DE LIMOGES
ECOLE DOCTORALE Science et Ingénierie pour l'Informatique
FACULTÉ DES SCIENCES ET TECHNIQUES
Année : 2016 Thèse N X
Thèse
pour obtenir le grade de
DOCTEUR DE L'UNIVERSITÉ DE LIMOGES
Discipline : Informatique
présentée et soutenue par
Aymerick Savary
le 30 juin 2016
Détection de vulnérabilités appliquée à la
vérification de code intermédiaire de Java
Card
Thèse dirigée par Jean-Louis Lanet et Marc Frappier
JURY :
Jean-Louis Lanet
Professeur, Université de Limoges
Directeur
Marc Frappier
Professeur, Université de Sherbrooke
Directeur
Regine Laleau
Professeur, Université Paris-Est Créteil
Rapporteur
Jacques Julliand
Professeur, Université de Besançon
Rapporteur
Christophe Clavier
Professeur, Université de Limoges
Examinateur
Gabriel Girard
Professeur, Université de Sherbrooke
Examinateur
Remerciements
Je tiens `a remercier mon directeur canadien, le professeur Marc Frappier de l’Universit´e
de Sherbrooke, pour tout le travail accompli durant ces trois ann´ees de doctorat ainsi
que les deux pr´ec´edentes. Outre la transmission des connaissances relatives `a mes
exp´erimentations, il m’a montr´e la voie pour devenir un chercheur accompli. Je remercie
´egalement mon directeur fran¸cais, le professeur Jean-Louis Lanet de l’Universit´e de
Limoges, qui ma offert l’opportunit´e de pouvoir travailler avec lui et toute son ´equipe
depuis mes premi`eres ann´ees `a l’Universit´e. La collaboration avec le professeur Michael
Leuschel de l’Universit´e de D¨usseldorf, que je remercie, m’a permis d’obtenir des r´esultats
exp´erimentaux tr`es int´eressants. De plus, cette collaboration m’a permis de d´ecouvrir
une nouvelle m´ethode de recherche permettant de r´eunir des chercheurs acad´emiques et
industriels. Je remercie Mathieu Lassale pour le travail r´ealis´e, qui m’a permis d’´etendre
mon cas d’´etude. Pour tous ces d´eplacements, je remercie l’´
Ecole doctorale de Limoges de
m’avoir soutenu financi`erement. Finalement, je remercie ma famille de m’avoir soutenu et
avoir cr´e´e un contexte favorable `a la bonne r´eussite de mon ´epanouissement depuis mon
plus jeune ˆage.
Table des mati`eres
Table des mati`eres
Table des figures ............................... 5
Chapitre 1 : Introduction ..................... 8
Chapitre 2 : Revue de litt´erature .............. 11
2.1 S´ecurit´e des cartes `a puce Java . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.1 Les trois classes d’attaques pour Java Card . . . . . . . . . . . . . . 12
2.1.2 Les attaques logiques . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.2.1 Attaque de cartes ouvertes . . . . . . . . . . . . . . . . . . 13
2.1.3 M´ecanismes de efense . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.3.1 V´erification statique . . . . . . . . . . . . . . . . . . . . . 14
2.1.3.2 M´ecanisme de chargement d’application . . . . . . . . . . 14
2.1.3.3 V´erification dynamique . . . . . . . . . . . . . . . . . . . 15
2.2 Sˆuret´e de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Deux types de fautes . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.2 Diagnostic................................ 15
2.2.3 D´efaillances exploitables . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 V´erification du erifieur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.1 V´erification formelle . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.1.1 Formalisations de la sp´ecification . . . . . . . . . . . . . . 17
2.3.1.2 Impl´ementation embarqu´ee prouv´ee formellement . . . . . 17
2.3.1.3 Impl´ementation bas´ee sur un v´erifieur de mod`ele . . . . . 18
2.3.2 Test d’impl´ementation . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.3 Test `a base de mod`ele . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3.1 OutilsdeMBT........................ 19
2.3.4 Mutation de sp´ecification . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Positionnement g´en´eral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Chapitre 3 : Fondements ..................... 22
3.1 JavaCard .................................... 23
3.2 V´erifieur de code interm´ediaire Java Card . . . . . . . . . . . . . . . . . . 23
3.2.1 V´erification de structure . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.2 Exemple de erification de structure . . . . . . . . . . . . . . . . . 24
3.2.3 V´erification de type . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.4 Exemples de erification de type . . . . . . . . . . . . . . . . . . . . 25
3.3 Lam´ethodeEvent-B .............................. 27
3.3.1 V´erification d’un mod`ele . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 Test`abasedemod`ele ............................. 29
3.4.1 Crit`eres de couverture des donn´ees . . . . . . . . . . . . . . . . . . 29
3.4.1.1 Pour une seule donn´ee . . . . . . . . . . . . . . . . . . . . 29
3.4.1.2 Pour une combinaison de donn´ees . . . . . . . . . . . . . . 30
3.4.1.3 Pour un pr´edicat . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.1.4 Pour une combinaison de pr´edicats . . . . . . . . . . . . . 30
3.4.2 Crit`eres de couverture du graphe de transition . . . . . . . . . . . . 30
3.4.2.1 Crit`eres sur les transitions et les ´ev´enements . . . . . . . . 31
3.4.2.2 Crit`eres sur la modification du flot de contrˆole . . . . . . . 31
3.4.3 Algorithmes de recherche de solution . . . . . . . . . . . . . . . . . 32
D´etection de vuln´erabilit´es appliqu´ee au VCI Java Card Page 2
1 / 157 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !