the mondex case study
play

The Mondex Case Study Verifying a Java Implementation Peter H. - PowerPoint PPT Presentation

The Mondex Case Study Verifying a Java Implementation Peter H. Schmitt, Isabel Tonin Institute for Theoretical Computer Science Department of Computer Science Universit at Karlsruhe (TH) KeY Symposium, June, 2007 The Mondex Case Study


  1. The Mondex Case Study Verifying a Java Implementation Peter H. Schmitt, Isabel Tonin Institute for Theoretical Computer Science Department of Computer Science Universit¨ at Karlsruhe (TH) KeY Symposium, June, 2007 The Mondex Case Study

  2. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver The Mondex Case Study

  3. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming The Mondex Case Study

  4. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming The Mondex Case Study

  5. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming covering all features needed to built practical and reliable programs The Mondex Case Study

  6. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming covering all features needed to built practical and reliable programs 2. A coherent tool set The Mondex Case Study

  7. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming covering all features needed to built practical and reliable programs 2. A coherent tool set The Mondex Case Study

  8. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming covering all features needed to built practical and reliable programs 2. A coherent tool set automating the theory and scaling up to large code The Mondex Case Study

  9. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming covering all features needed to built practical and reliable programs 2. A coherent tool set automating the theory and scaling up to large code 3. A repository of verified programs. Contains at this time mostly contributions to the Mondex Case Study. The Mondex Case Study

  10. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming covering all features needed to built practical and reliable programs 2. A coherent tool set automating the theory and scaling up to large code 3. A repository of verified programs. Contains at this time mostly contributions to the Mondex Case Study. The Mondex Case Study

  11. Verified Software Grand Challenge a concerted effort of the global scientific community to deliver 1. A comprehensive theory of programming covering all features needed to built practical and reliable programs 2. A coherent tool set automating the theory and scaling up to large code 3. A repository of verified programs. Contains at this time mostly contributions to the Mondex Case Study. You can’t say any more it can’t be done. Here, we’ve done it! The Mondex Case Study

  12. The Mondex Card ◮ Smart card for electronic financial transactions The Mondex Case Study

  13. The Mondex Card ◮ Smart card for electronic financial transactions ◮ Issued by Natwest in 1996 The Mondex Case Study

  14. The Mondex Card ◮ Smart card for electronic financial transactions ◮ Issued by Natwest in 1996 ◮ First product certified to ITSEC Level E6 The Mondex Case Study

  15. The Mondex Card ◮ Smart card for electronic financial transactions ◮ Issued by Natwest in 1996 ◮ First product certified to ITSEC Level E6 ◮ Sanitised documentation publicly available The Mondex Case Study

  16. A model refinement Previous Work using B model Z , ASM, refinement RSL, Alloy C model Our implementation Contribution using JML Java code The Mondex Case Study

  17. Our Contribution ◮ Reference Implementation in Java Card The Mondex Case Study

  18. Our Contribution ◮ Reference Implementation in Java Card ◮ Specification using Design by Contract paradigm The Mondex Case Study

  19. Our Contribution ◮ Reference Implementation in Java Card ◮ Specification using Design by Contract paradigm ◮ Annotation using Java Modeling Language (JML) The Mondex Case Study

  20. Our Contribution ◮ Reference Implementation in Java Card ◮ Specification using Design by Contract paradigm ◮ Annotation using Java Modeling Language (JML) ◮ Full verification using the KeY prover The Mondex Case Study

  21. The Principal Classes of Mondex Card public class ConPurseJC extends Applet { private short name; private short balance; private byte status; private PayDetails transaction; private short nextSeq; private PayDetails [] exLog; private byte logIdx; ... } public class PayDetails { short fromName; short toName; short value; short fromSeq; short toSeq; ... } The Mondex Case Study

  22. Mondex Protocol Automata View ToPurse FromPurse idle StartFrom idle Epr StartTo Req Epv Epa Val Ack Endt Endf The Mondex Case Study

  23. The Protocol (Modified) central authority From Purse To Purse Idle Idle StartFrom StartTo req Epr Req Epv balance = val balance −value Val Epa balance = ack balance +value Ack Endf Endt The Mondex Case Study

  24. Architecture of a Java Card Application Reader Side Card Side Applet Applet Applet Back−End Host Application Application and Response Command System(s) APDUs Response Command Vendor or Industry specific APDUs Extensions Command Java Card Framework and APIs Card APDUs Acceptance Java Card Device Java Card VM Runtime Environment Response Card OS The Mondex Case Study

  25. Z Specification of the Val Operation ValPurseOkay ∆ ConPurse m ? , m ! : Message AuthenticValMessage status = epv Ξ ConPurseVal balance ′ = balance + pdAuth . value status ′ = esTo m ! = ackpdAuth The Mondex Case Study

  26. ASM Specification of the Val Operation VAL# if msg = val ( pdAuth ( receiver )) ∧ ¬ fail ? balance ( receiver ) := then balance ( receiver ) + pdAuth ( receicer ) .value state ( receiver ) := idle outmsg := ack ( pdAuth ( receiver )) else outmsg := ⊥ The Mondex Case Study

  27. JML Specification of the Val Operation /*@ public behavior 1 @ requires apdu != null; 2 @ assignable balance , status; @ ensures 3 @ (balance == \old(balance) @ + transaction.value) && @ (\old(status) == Epv) && (status == Endt ); @ signals only ISOException ; @ signals (ISOException e) 4 @ (( balance == \old(balance )) @ && (status == \old(status ))); @*/ private void val_operation (APDU apdu) throws ISOException JML keyword in red. The Mondex Case Study

  28. Top Level ASM Specification BOP# choose msg, fail ? , rec with msg ∈ ether ∧ auth ( rec ) in isStartTo ( msg ) ∧ state ( rec ) = idle then STARTO # if else if isStartFrom ( msg ) ∧ state ( rec ) = idle then STARTFROM # else if isreq ( msg ) ∧ state ( rec ) = epr then REQ # isval ( msg ) ∧ state ( rec ) = epv then V AL # else if else if isack ( msg ) ∧ state ( rec ) = epa then ACK # ABORT # else ether := ether + + outmsg seq The Mondex Case Study

  29. Top Level ASM Specification BOP# choose msg, fail ? , rec with msg ∈ ether ∧ auth ( rec ) in isStartTo ( msg ) ∧ state ( rec ) = idle then STARTO # if else if isStartFrom ( msg ) ∧ state ( rec ) = idle then STARTFROM # else if isreq ( msg ) ∧ state ( rec ) = epr then REQ # isval ( msg ) ∧ state ( rec ) = epv then V AL # else if else if isack ( msg ) ∧ state ( rec ) = epa then ACK # ABORT # else ether := ether + + outmsg seq The Mondex Case Study

  30. Top Level JML Specification First Installment /*@ public behavior @ requires apdu != null; @ assignable ... @ ensures @ ((\ old(logIdx) != logIdx) ==> @ (( logIdx ==0) && @ (status == Idle) && @ (\old(status )== Idle ))) @ && @ ((\ old(status )== status) ==> @ (\old(balance )== balance) && @ (\old(nextSeq )== nextSeq )) @ && The Mondex Case Study

  31. Top Level JML Specification Second Installment && @ ((\ old(status )!= status) ==> @ @ \old(apdu._buffer[I.OFFSET_INS ]) @ == apdu._buffer[I.OFFSET_INS] @ && (\old(status )== Epa ==> @ (status == Endf && @ apdu._buffer[I.OFFSET_INS ]== Ack @ && balance ==\ old(balance ))) @ && The Mondex Case Study

  32. Top Level JML Specification Third Installment @ signals_only ISOException; @ signals (ISOException e) ( @ \old(balance )== balance && @ \old(status )== status && @ \old(logIdx )== logIdx && @ \old(nextSeq) == nextSeq ); @*/ public void process(APDU apdu) The Mondex Case Study

  33. Top Level Z Specification Security Property 1 No value creation: no value may be created in the system. The sum of all purses’ balance does not increase. The Mondex Case Study

  34. Top Level Z Specification Security Property 1 No value creation: no value may be created in the system. The sum of all purses’ balance does not increase. Security Property 2.1 All value accounted: all values must be accounted in the system. The sum of all purses’ balance and lost components does not change. The Mondex Case Study

Recommend


More recommend