automata-based programming technology extension for generation of jml annotated java card code...

26
ГОСУДАРСТВЕННЫ Й УНИВЕРСИТЕТ Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly Shalyto, Ph. D, prof. CTD, SPb SU ITMO

Upload: sophia-swim

Post on 29-Mar-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Automata-Based Programming Technology Extension for

Generation of JML Annotated Java Card Code

Andrey Klebanov, CTD, SPb SU ITMO

supervised by Anatoly Shalyto, Ph. D, prof. CTD, SPb SU ITMO

Page 2: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

2

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Outline

Smart CardsAutomata-based programming technologyJava modelling language (JML)Approach descriptionCase studyOpen questions

Page 3: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

3

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Outline

Smart CardsAutomata-based programming technologyJava modelling language (JML)Approach descriptionCase studyOpen questions

Page 4: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

4

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Smart Cards

«Stupid» cards – cards with just magnetic stripe;

Smarts cards – chip and memory are embedded: Mobile and secure credit card size computers; Very limited recourses – 1-4Kb RAM, 48-64Kb

NVM (ROM) + 8-32Kb EEPROM; Main domains of use are secure storage of data,

business transactions, authentication, ... Vendor specific, difficult to develop applications.

Page 5: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

5

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Java Card

Java platform for smart cards; Provides all the benefits of Java and also

Allows to abstract away from low-level features of different cards;

Applet isolation mechanism; Post-issuance applet downloading, ...

Java Card API 2.2.2 is a superset of Java API subset;

Java Card 3.0 will be discussed in «Open questions» section.

Page 6: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

6

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Formal methods for JC

Several reasons to attract formal methods researchers:

Java Card domain of use, industry support;Complexity of updating;Relatively small, but real-world applications.

Page 7: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

7

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Outline

Smart CardsAutomata-based programming technologyJava modelling language (JML)Approach descriptionCase studyOpen questions

Page 8: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

8

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Automata-based programming overview

Introduced by A. Shalyto in 1991;

Sort of synchronous programming;

Programs are treated as systems of automated controlled objects;

Each system consists of control system and controlled objects;

Control system - system of co-operating automata.

Xi – input action;

Zi – output action;

E – event;

Controlsystem

ControlledobjectE Z X

Page 9: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

9

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Automata-based programming benefits

Formally describes application logic and behaviour; Perfect solution for reliable application development

for reactive and embedded systems; Defines two types of diagrams for application

description – connectivity schema and transition graphs;

Fully supported by the UniMod tool Closes the gap between model and implementation via

Java code generation; Finite state machine validation.

Page 10: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

10

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Automata-based programming for Java Card

Half-duplex communication channel, master-slave model;

Event driven interaction Host application – event

provider; Smart card – controlled

object. Standard structure of

applet, logic is incapsulated in one method.

«Java Card applet is a state machine.»

Wikipedia

Host application Java CardRuntime

Environment

(JCRE)

Applet

Command APDU

Command APDU

Responce APDU

Responce APDU

Smart cardCAD

Passivestate

Activestate

install Commsndhandling(process)

select

deselect

Page 11: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

11

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Outline

Smart CardsAutomata-based programming technologyJava modelling language (JML)Approach descriptionCase studyOpen questions

Page 12: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

12

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

JML

JML is a behavioural interface specification language;

JML is based on design by contract, but extends it greatly;

Designed to be used by Java programmers;Tailored to Java;Doesn’t require programs to be OO;A lot of tools are developed to support JML.

Page 13: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

13

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

JML (cont.)

Preconditions (requires), postconditions (ensures) and invariants (invariant);

\old(var) – variable var value before method execution;

Logical constructions (ex. implication) and constaraint consruction – constraints variable's value change in time;

pure and assignable keywords.

Page 14: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

14

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

JML (cont.)

private fields could be declared as spec_public;

Quantifiers – \forall, \exists;\min, \sum expressions;Allows to describe behaviour in exceptional

situations; And much more!

Page 15: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

15

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Outline

Smart CardsAutomata-based programming technologyJava modelling language (JML)Approach descriptionCase studyOpen questions

Page 16: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

16

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Approach description

Problem: Java Card code should be trustworthy and bug-free.

Solution: automata-based programming + JML!

Sub-problems to be solved: Extend automata-based programming code

generation technologies; Convert state machine model to JML annotations; Explore different verification tools designed to

work with JML.

Page 17: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

17

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Approach overview

Page 18: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

18

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Annotated code generation stage

Model's XML description

Templates

Convertor application +Apache Velocity

Java Card code + JML

Java Card code + JML

Page 19: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

19

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Verification stage

jmlc Fully automatic; Full language coverage; Doesn’t prove errors

absence. ESC/Java2

Fully automatic; Not sound, not complete; Good for common errors.

KeY, Loop, Jack, ... Powerful; Interactive.

Model checking (SPIN, Bogor)

Source code verification (JML tools)

Byte codeverification (BML tools)

Tasks

Type checking

Static checking

Verification

Decidability level

Source code verification on

conformance to the model(JML tools)

Page 20: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

20

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Outline

Smart CardsAutomata-based programming technologyJava modelling language (JML)Approach descriptionCase studyOpen questions

Page 21: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

21

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Case study – description

Page 22: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

22

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Case study – several results

Convinient notation for commands vs. byte arrays; /*@ invariant

(state == APPLET_INITIALIZATION) ||(state == VERIFY_PIN) ||(state == DO_SOMETHING) || (state == SIM_CARD_IS_LOCKED);

@*/ Precondition for the on enter to state SIM card is

locked – //@ requires x1 > 3; (if x1 has no side effects).

Page 23: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

23

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Case study – several results (cont.)

Transitions between states:/*@ constraint

((state == APPLET_INITIALIZATION) ==> (\old(state) == APPLET_INITIALIZATION)) &&((state == VERIFY_PIN) ==> ((\old(state) == VERIFY_PIN) || (\old(state) == APPLET_INITIALIZATION))) &&((state == DO_SOMETHING) ==> ((\old(state) == VERIFY_PIN) || (\old(state) == DO_SOMETHING))) && ((state == SIM_CARDS_IS_LOCKED) ==> ((\old(state) == VERIFY_PIN) || (\old(state) == SIM_CARDS_IS_LOCKED))) && ((\old(state) == APPLET_INITIALIZATION) ==> ((state == VERIFY_PIN) || (state == APPLET_INITIALIZATION))) && ((\old(state) == VERIFY_PIN) ==> ((state == VERIFY_PIN) || (state == DO_SOMETHING) ||(state == SIM_CARDS_IS_LOCKED))) &&((\old(state) == DO_SOMETHING) ==> (state == DO_SOMETHING)) && ((\old(state) == SIM_CARDS_IS_LOCKED) ==> (state == SIM_CARDS_IS_LOCKED));

@*/

Page 24: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

24

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Outline

Smart CardsAutomata-based programming technologyJava modelling language (JML)Approach descriptionCase studyOpen questions

Page 25: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

25

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Open questions

Java Card 3.0 Great new opportunities

close to «big» Java!.. But possible problems for

formal methods.

Java ME Midlets are running on

constraint devices... But much more powerful

then smart cards.

APDUApplet Container

Applets

Classic API

HTTPWeb Container

Servlets

Connected API

JavaCard APIs

Page 26: Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code Andrey Klebanov, CTD, SPb SU ITMO supervised by Anatoly

26

ГОСУДАРСТВЕННЫЙУНИВЕРСИТЕТ

Thank you!

Thank you!