Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0....

33
Compilation Certifi´ ee Martin Strecker ´ Equipe SVF eminaire IRIT 10.11.2004

Transcript of Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0....

Page 1: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

Compilation Certifiee

Martin Strecker

Equipe SVF

Seminaire IRIT 10.11.2004

Page 2: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

1

Seminaire IRIT 10.11.2004

Page 3: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

2

Seminaire IRIT 10.11.2004

Page 4: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

3

Seminaire IRIT 10.11.2004

Page 5: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

4

Comment eviter ces problemes ?

Souhaitable: Processus de developpement base sur

• Formalismes / langages avec semantique precise

• Mecanismes de verification / analyse statique

• Preservation des proprietes par compilation

• Formalisation et verification assistees par ordinateur

Etat actuel:

• pas encore pratique industrielle

• . . . mais postulat de normes de developpement:ISO 61508, DO-178B, Common Criteria . . .

Seminaire IRIT 10.11.2004

Page 6: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

5

Contenu

0. Motivation

1. Compilation verifiee

• MicroJava: Typage, semantique• Compilation; Correction• Compilateur executable

2. Compilation avec certificats

• Java Bytecode: Typage• Certificats de type• Preservation des types

Seminaire IRIT 10.11.2004

Page 7: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

6

1. Compilation verifiee

• Langage source: Typage, semantique

• Langage bytecode: Semantique

• Compilateur: Definition et correction

Seminaire IRIT 10.11.2004

Page 8: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

7

Java & Co.

− threads− gestion mémoire− chaînes de caractères

+ transactions

+ firewalls

− interfaces

− tableaux

µJava

JavaCardJava

Desormais: Java := µJava

Seminaire IRIT 10.11.2004

Page 9: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

8

Java: Termes

datatype expr = ...| NewC cname

| Cast cname expr

| vname ::= expr

| {cname} expr . vname ::= expr

| BinOp binop expr expr

| {cname} expr . mname {(ty) list} (expr) list

datatype stmt = ...| Expr expr

| If (expr) stmt Else stmt

| While (expr) stmt

Seminaire IRIT 10.11.2004

Page 10: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

9

Java: Semantique (1)

Etat: σ = (xc, hp, lvars) avec:

• Exception (optionnelle): xc : xcpt option

• Memoire (heap) hp: loc ⇀ obj

• Variables locales lvars: vname ⇀ val

Seminaire IRIT 10.11.2004

Page 11: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

10

Java: Semantique (2)

Semantique operationnelle: Evaluation de

• commandes: P ` (σ, c) −→S σ′

• expressions: P ` (σ, e) −→E (v, σ′)

=⇒ Semantique “a grands pas” (“naturelle”)

Regles:P ` (Norm s0, e) −→E (Bool True, σ1)

P ` (σ1, c1) −→S σ2

P ` (Norm s0, If( e ) c1 Else c2) −→S σ2

Seminaire IRIT 10.11.2004

Page 12: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

11

Java: Typage

Regles de typage (relations inductives)

• pour expressions: E ` e :: T

• pour commandes: E ` s√

E ` e :: PrimT boolean E ` s1√

E ` s2√

E ` If( e ) s1 Else s2√

Seminaire IRIT 10.11.2004

Page 13: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

12

1. Compilation verifiee

• Langage source: Typage, semantique

• Langage bytecode: Semantique

• Compilateur: Definition et correction

Seminaire IRIT 10.11.2004

Page 14: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

13

Java Virtual Machine: Instructions

JVM: Machine a pile, operant sur bytecode.

Instructions:

datatype instr

= Load nat

| Store nat

| New cname

| Invoke cname mname (ty list)| Pop| Dup| ...

bytecode = instr list

Seminaire IRIT 10.11.2004

Page 15: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

14

JVM: Semantique Operationnelle (1)

heapxcpt? frames opstack

locvars

cname

sig

pc

...

...

C

jvm state =xcpt option ×heap ×frame list

frame =opstack × locvars ×cname × sig × nat

Execution (un pas) ... par ex. Load:

exec_instr (Load idx) hp stk vars C sig pc frs =(None, hp, ((vars ! idx) # stk, vars, C, sig, pc+1)#frs)

Execution (rel. transitive) P `s -jvm→t

Seminaire IRIT 10.11.2004

Page 16: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

15

JVM: Semantique Operationnelle (2)

42

Load 0 Getf n C Lit 7 Putf n C ...... Lit 4 Store 1Ifcmpeq 3

5

c 42 42

7

5

4

False

heap

byte−code

locvars

stackop−

c c c

a a

4

... ...

Seminaire IRIT 10.11.2004

Page 17: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

16

1. Compilation verifiee

• Langage source: Typage, semantique

• Langage bytecode: Semantique

• Compilateur: Definition et correction

Seminaire IRIT 10.11.2004

Page 18: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

17

Compilateur: Definition

compExpr :: java_mb ⇒ expr ⇒ instr listcompStmt :: java_mb ⇒ stmt ⇒ instr list

compExpr jmb (vn::=e) = compExpr jmb e @ [Dup, Store (index jmb vn)]

compExpr jmb ({cn}e1.mn {Ts}(ps)) =compExpr jmb e1 @ compExprs jmb ps @ [Invoke cn mn Ts]

compStmt jmb (c1;; c2) = (compStmt jmb c1) @ (compStmt jmb c2)

Seminaire IRIT 10.11.2004

Page 19: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

18

Compilateur: Correction

Expressions:

E

(hp’, # os, lvars’, pc’) v

(xc, hp, lvars) e (xc’, hp’, lvars’)v

(hp, os, lvars, pc)

= =?

exec_all

... ...compExpr e

Commandes: Pareil

Seminaire IRIT 10.11.2004

Page 20: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

19

Compilateur: Preuve

Idee: Induction sur relation d’execution du langage source

...

...Invariants:

• Programme source bien type

• Programme source bien forme (relation de sous-typage acyclique, . . .)

• Typage dynamique du heap consistent avec typage statique(; type soundness)

Seminaire IRIT 10.11.2004

Page 21: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

20

Extraction d’un Compilateur Executable

*.classprint jasmin

*.java

compilewelltyped

parse

correctioncompilateur

Compiler.thy

*.jcompiletypecheck

Compiler.ML

Typing.thy

extraction

Isab

elle

ML

sém. opér.

Java

sém. opér.

Bytecode

Seminaire IRIT 10.11.2004

Page 22: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

21

2. Compilation avec certificats

• Bytecode: Typage

• Compilation de types

Seminaire IRIT 10.11.2004

Page 23: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

22

Bytecode: Typage – Introduction

But: Analyse statique du bytecode pour prevenir:

• manipulation illicite de pointeurs (“pointer forging”)

• overflow de la pile des operandes

• sauts dehors la liste d’instructions

Procedure (verification du bytecode)

1. Inference de type du bytecode

2. Verification du type infere

Seminaire IRIT 10.11.2004

Page 24: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

23

Bytecode: Typage – Description

C

A

C

A Int

CC

A

Load 0 Getf n C Lit 7 ...Ifcmpeq 3

C Int Int

Int

byte−code

Stack

...Store 1Lit 4

Bool

...

IntOp.

Types

LocalVar.Types

Bytecode bc est bien type par rapport a type BT si pour tout pc < length bc:

• app (bc!i) (BT!i)

• eff (bc!i) (BT!i) est “sous-type” de tous les types successeurs de bc!i

app (Store idx, (ts#ST, LT)) = (idx < length LT)

eff (Store idx, (ts#ST, LT)) = (ST, LT[idx:= OK ts])

Seminaire IRIT 10.11.2004

Page 25: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

24

Bytecode: Inference de Types

Idee: Reiterer eff jusqu’a atteindre un point fixe

AB

B B B

A A A

New B Store 0 Load 1 Goto

AA

B A A

A A A

Seminaire IRIT 10.11.2004

Page 26: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

25

2. Compilation avec certificats

• Bytecode: Typage

• Compilation de types

Seminaire IRIT 10.11.2004

Page 27: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

26

Compilation avec Certificats

Bytecode Certificat=?=

Vérificationde types

compTpcomp

Compression

ProgrammeSource

• Compilateur de types pareil a uncompilateur de termes

• Technique appropriee pour cartesa puces, tel. cellulaires etc.

Seminaire IRIT 10.11.2004

Page 28: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

27

Semantiquement correct, mais mal type ?

Exemple 1 (hypothetique)

Goto ... Goto

AA

B B

... Return

B B

...

Exemple 2 (empirique [Stark et al])Probleme fondamental: Traduction de try-finally; Langage source et cible ont des systemes de typage incompatibles

Seminaire IRIT 10.11.2004

Page 29: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

28

Traduction de Types

compTpExpr :: java_mb ⇒ java_mb prog ⇒ expr ⇒state_type ⇒ method_type × state_type"

compTpExpr jmb P (BinOp Eq e1 e2) =

(compTpExpr jmb P e1) 2 (compTpExpr jmb P e2) 2

popST 2 2 pushST [PrimT Boolean] 2 popST 1 2 pushST [PrimT Boolean]

Comparer avec:

compExpr jmb (BinOp Eq e1 e2) =

(compExpr jmb e1) @ (compExpr jmb e2) @[Ifcmpeq 3, LitPush(Bool False), Goto 2, LitPush(Bool True)]

Seminaire IRIT 10.11.2004

Page 30: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

29

Correction

Theoreme:

wf_java_prog P =⇒ wt_jvm_prog (comp P) (compTp P)

Seminaire IRIT 10.11.2004

Page 31: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

30

3. Resume et Perspectives

Seminaire IRIT 10.11.2004

Page 32: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

31

Resume

Verification de compilateur; preservation de semantique

Compilateur a certificats; verification de proprietes specifiques

Verification de la generation de certificats; adequation de differents mecanismes d’analyse

Seminaire IRIT 10.11.2004

Page 33: Compilation Certifi´ee - irit.frMartin.Strecker/Talks/seminaire_irit_2004_11_10.pdf5 Contenu 0. Motivation 1. Compilation v´erifi´ee • MicroJava: Typage, s´emantique • Compilation;

32

Perspectives

Compilateur preservant proprietes non-fonctionnelles

• . . . temporelles

• . . . de memoire

Transformation et raffinement de modeles

• . . . par exemple AADL

Seminaire IRIT 10.11.2004