Preuve d'un v - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Preuve d'un v

Description:

Ajouter des r gles, n'utiliser aucune commande non g n rique. ... Ajouter des r gles par th ories. Quand une th orie est au point, la mettre dans le ... – PowerPoint PPT presentation

Number of Views:61
Avg rating:3.0/5.0
Slides: 29
Provided by: Gemp8
Category:
Tags: ajouter | preuve

less

Transcript and Presenter's Notes

Title: Preuve d'un v


1
Preuve d'un vérifieur de bytecode JavaCard
métriques et retour d'expérience.
  • Lilian Burdy
  • Gemplus Research Lab
  • 14 juin 2002

2
Plan
  • Vérifieur de bytecode problématique
  • Métriques
  • Retour dexpérience preuve
  • Retour dexpérience génération des obligations
    de preuve
  • Démo(s)

3
Plan
  • Vérifieur de bytecode problématique
  • Métriques
  • Retour dexpérience preuve
  • Retour dexpérience génération des obligations
    de preuve
  • Démo(s)

4
Le vérifieur de bytecode Java
  • Pas de débordement de la pile
  • Contrôle des droits daccès (public, private,
    ...)
  • Contrôle du typage
  • au niveau de chaque bytecode
  • aux appels de méthode ...
  • Pas de conversion de valeurs entières en
    pointeurs

5
Les restrictions de JavaCard
  • Types de données non supportées
  • char, long, double, float
  • Pas de multi threading.
  • Pas de tableaux de dimension supérieure à 2.
  • Limitation de certains bytecodes

6
Exemple (1)
public class AnExample public static boolean
b public static void main(String argv)
if(b) int i 1 else
Object tmp new Object() int
j 2
7
Exemple (2)
Local Variables String String String
String int String String String
String int/\Obj Top Top int
Stack - Bool - int - - UObj UObj
UObj Obj - int -
Proof - - - - - String - - - Top - -
.limit stack 2 .limit locals 1 getstatic
b ifeq Label1
iconst_1
istore_0
goto Label2
Label1 new java/lang/Object
dup
invokespecial
astore_0
Label2 iconst_2
istore_0
return
.end method
8
Architecture à la PCC
  • Off-card
  • Des informations de typage sont produites à
    partir dun fichier CAP et ajoutées au fichier.
  • On-card
  • Vérification de la structure du fichier
  • Vérification de type linéaire bénéficiant des
    informations de typage pré-calculées.

9
Architecture du vérifieur
  • Vérifieur divisé en 2 parties
  • Vérifieur de structure
  • assure la  bonne formation  du fichier chargé
  • fournit un accès aux données
  • Vérifieur de type
  • assure le bon typage du fichier chargé
  • s appuie sur le vérifieur de structure

10
Architecture du Vérifieur
Vérifieur de type Règles de typage des 184
bytecodes
Interface Modèle abstrait du fichier
CAP Propriétés et services
Vérifieur de structure Modèle des 12 composants
Gestion mémoire
CAP file stocké sur la carte
11
Vérifieur de type
  • Modèle abstrait
  • La spécification de plus haut niveau renvoie un
    booléen
  • Définit la boucle sur toutes les méthodes
  • Pour chaque méthode, définit une boucle pour tous
    les bytecodes
  • Spécifie les règles de typages des différents
    bytecodes
  • Modèle concret
  • Fournit une implémentation des règles de typages.
  • Sappuie sur une interface abstraite fournissant
    les données et les propriétés du fichier CAP.

12
Plan
  • Vérifieur de bytecode problématique
  • Métriques
  • Retour dexpérience preuve
  • Retour dexpérience génération des obligations
    de preuve
  • Démo(s)

13
Type Verifier Metrics
  • Nombre de composants 34 (incluant mch, ref and
    imp)
  • Lignes de B environ 20 000
  • Nombre de lemmes produits 18 160 POs
  • Preuve
  • automatique 70
  • status du projet
  • Unproved 125
  • 99 des lemmes prouvés
  • Charge 5 mm

14
Structural Verifier Metrics
  • Composants 116 (incluant mch, ref and imp)
  • Lignes de B environ 35 000
  • Nombre de lemmes produits 11 700 POs
  • Charge 8 mm

15
Comparaison avec Météor
  • Vérifier de bytecode
  • 58 500 lignes of B
  • 30 810 POs
  • Preuve automatique 74
  • Atelier B 3.6 PR 22
  • Météor
  • Météor A Successful Application of B in a Large
    Project FM99
  • 115 000 lignes of B
  • 27 800 POs
  • Preuve automatique 81
  • Atelier B 3.3


16
Plan
  • Vérifieur de bytecode problématique
  • Métriques
  • Retour dexpérience preuve
  • Retour dexpérience génération des obligations
    de preuve
  • Démo(s)

17
(No Transcript)
18
(No Transcript)
19
1er jour 12042 lemmes
20
1ère étape
  • Prouver les lemmes triviaux
  • Prouver les composants aux taux de preuve les
    plus bas.
  • Utiliser des tactiques de manière à réutiliser
    les mêmes preuves soit avec la commande te, soit
    en UserPass.
  • Ajouter des règles, nutiliser aucune commande
    non générique.
  • Dès quun lemme est prouvé, essayer la preuve sur
    la méthode, le composant, le projet.
  • Traiter plusieurs composants en parallèle.

21
5ème jour
  • Composant tyv_update_stack_1_i
  • Nombre de POs générées
  • de 2930 à 771
  • Nombre de POs restant à prouver
  • de 797 à 250
  • Composant tyv_update_stack_2_i
  • Nombre de POs générées
  • de 2448 à 642
  • Nombre de POs restant à prouver
  • de 647 à 363

22
2eme étape
  • Supprimer les lemmes faux
  • Traiter par opérations
  • Ajouter les préconditions manquantes
  • Compléter  grossièrement  les invariants de
    boucle
  • Compléter les invariants
  • Corriger les erreurs
  • reporter les corrections dans les composants
    contenant potentiellement le même type derreurs.
  • Corriger plusieurs erreurs avant de relancer la
    génération
  • Traiter plusieurs composants en parallèle

23
3ème étape
  • Prouver les lemmes faciles
  • Ajouter des règles par théories.
  • Quand une théorie est au point, la mettre dans le
    PatchProver.
  • Faire des tactiques et les essayer sur le projet.
  • Passer rapidement sur tous les lemmes
  • Se faire une opinion
  • faux apporter la correction et régénerer les
    lemmes plus tard
  • facile à prouver
  • difficile le garder pour plus tard

24
4ème étape
  • Prouver les lemmes difficiles
  • Faire une première preuve avec des commandes
    spécifiques pour sassurer que le lemme est juste
  • Essayer de généraliser la preuve avec des règles
    pour faire une tactique.
  • Passer la tactique sur la méthode ou le composant
    suivant son temps de rejeu.
  • Finaliser les invariants de boucle.

25
Plan
  • Vérifieur de bytecode problématique
  • Métriques
  • Retour dexpérience preuve
  • Retour dexpérience génération des obligations
    de preuve
  • Démo(s)

26
Plan
  • Vérifieur de bytecode problématique
  • Métriques
  • Retour dexpérience preuve
  • Retour dexpérience génération des obligations
    de preuve
  • Démo(s)

27
Démo du vérifieur
  • Demo sur une carte ATMEL AT90 SC 6464
  • Caractéristiques
  • Vérifieur de type
  • complet excepté les instructions jsr et ret.
  • Vérifieur de structure
  • manque quelques tests externes
  • manque certains tests internes des composants
    descriptor et proof.
  • Taille du code 45 ko

28
Preuve d'un vérifieur de bytecode JavaCard
  • lilian.burdy_at_gemplus.com
  • ludovic.casset_at_gemplus.com
  • antoine.requet_at_gemplus.com
Write a Comment
User Comments (0)
About PowerShow.com