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 d´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 v´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 v´erification de structure . . . . . . . . . . . . . . . . . 24
3.2.3 V´erification de type . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.4 Exemples de v´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