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

Transcript of Automata-Based Programming Technology Extension for Generation of JML Annotated Java Card Code...

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!