Abstract
The JavaCard transaction mechanism can ensure that a sequence of statements either is executed to completion or is not executed at all. Transactions make verification of JavaCard programs considerably more difficult, because they cannot be formalised in a logic based on pre- and postconditions. The KeY system includes an interactive theorem prover for JavaCard source code that models the full JavaCard standard including transactions. Based on a case study of realistic size we show the practical difficulties encountered during verification of safety properties. We provide an assessment of current JavaCard source code verification, and we make concrete suggestions towards overcoming the difficulties by design for verification. The main conclusion is that largely automatic verification of realistic JavaCard software is possible provided that it is designed with verification in mind from the start.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Ahrendt, W., Baar, T., Beckert, B., Bubel, R., Giese, M., Hähnle, R., Menzel, W., Mostowski, W., Roth, A., Schlager, S., Schmitt, P.H.: The KeY tool. Software and Systems Modeling (April 2004), Online First issue, to appear in print
Beckert, B.: A dynamic logic for the formal verification of JAVA CARD programs. In: Attali, I., Jensen, T. (eds.) JavaCard 2000. LNCS, vol. 2041, pp. 6–24. Springer, Heidelberg (2001)
Beckert, B., Giese, M., Habermalz, E., Hähnle, R., Roth, A., Rümmer, P., Schlager, S.: Taclets: a new paradigm for constructing interactive theorem provers. In: Revista de la Real Academia de Ciencias Exactas, Fýsicas y Naturales, Serie A: Matemáticas. Special Issue on Symbolic Computation in Logic and Artificial Intelligence, vol. 98(1) (2004)
Beckert, B., Mostowski, W.: A program logic for handling JAVA CARD’s transaction mechanism. In: Pezzé, M. (ed.) FASE 2003. LNCS, vol. 2621, pp. 246–260. Springer, Heidelberg (2003)
Beckert, B., Schlager, S.: A sequent calculus for first-order dynamic logic with trace modalities. In: Goré, R.P., Leitsch, A., Nipkow, T. (eds.) IJCAR 2001. LNCS (LNAI), vol. 2083, pp. 626–641. Springer, Heidelberg (2001)
Beckert, B., Schlager, S.: Software verification with integrated data type refinement for integer arithmetic. In: Boiten, E.A., Derrick, J., Smith, G.P. (eds.) IFM 2004. LNCS, vol. 2999, pp. 207–226. Springer, Heidelberg (2004)
Beckert, B., Schmitt, P.H.: Program verification using change information. In: Proceedings, Software Engineering and Formal Methods (SEFM), Brisbane, Australia, pp. 91–99. IEEE Press, Los Alamitos (2003)
Bieber, P., Cazin, J., Wiels, V., Zanon, G., Girard, P., Lanet, J.-L.: Checking secure interactions of Smart Card applets. Journal of Computer Security 10(4), 369–398 (2002)
Boyer, R.: Proving theorems about JAVA and the JVM with ACL2. In: Broy, M., Pizka, M. (eds.) Models, Algebras and Logic of Engineering Software, pp. 227–290. IOS Press, Amsterdam (2003)
Bretagne, E., Marouani, A.E., Girard, P., Lanet, J.-L.: PACAP purse and loyalty specification v0.4. Technical report, GemPlus (January 2001)
Burdy, L., Requet, A., Lanet, J.-L.: JAVA applet correctness: a developer-oriented approach. In: Araki, K., Gnesi, S., Mandrioli, D. (eds.) FME 2003. LNCS, vol. 2805, pp. 422–439. Springer, Heidelberg (2003)
Chen, Z.: JAVA CARD Technology for Smart Cards. Addison Wesley, Reading (2000)
Corbett, J.C., Dwyer, M.B., Hatcliff, J., Robby: A language framework for expressing checkable properties of dynamic software. In: Proc. SPIN Software Model Checking Workshop. LNCS, pp. 205–223. Springer, Heidelberg (2000)
Darvas, Á., Hähnle, R., Sands, D.: A theorem proving approach to analysis of secure information flow. Technical Report 2004-01, Department of Computing Science, Chalmers University of Technology and Göteborg University (2004)
Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for JAVA. In: Proc. ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation, Berlin, pp. 234–245. ACM Press, New York (2002)
Hähnle, R., Wallenburg, A.: Using a software testing technique to improve theorem proving. In: Petrenko, A., Ulrich, A. (eds.) FATES 2003. LNCS, vol. 2931, pp. 30–41. Springer, Heidelberg (2004)
Harel, D., Kozen, D., Tiuryn, J.: Dynamic Logic. MIT Press, Cambridge (2000)
Hubbers, E., Poll, E.: Reasoning about card tears and transactions in JAVA CARD. In: Wermelinger, M., Margaria-Steffen, T. (eds.) FASE 2004. LNCS, vol. 2984, pp. 114–128. Springer, Heidelberg (2004)
Jacobs, B., Marché, C., Rauch, N.: Formal verification of a commercial smart card applet with multiple tools. In: Rattray, C., Maharaj, S., Shankland, C. (eds.) AMAST 2004. LNCS, vol. 3116, pp. 241–257. Springer, Heidelberg (2004)
Jacobs, B., Poll, E.: JAVA program verification at Nijmegen: Developments and perspective. Technical report, University of Nijmegen, 20003. NIII Technical Report NIII-R0316. To appear in the proceedings of International Symposium on Software Security (ISSS 2003)
Leino, K.R.M., Stata, R.: Checking object invariants. Technical Note #1997-007, Digital Systems Research Center, Palo Alto, USA (January 1997), Available from, ftp://ftp.digital.com/pub/DEC/SRC/technical-notes/SRC-1997-007.ps.gz
Marché, C., Paulin-Mohring, C., Urbain, X.: The KRAKATOA tool for certification of JAVA/JAVA CARD programs annotated in JML. Journal of Logic and Algebraic Programming 58(1-2), 89–106 (2004), http://krakatoa.lri.fr
Marlet, R., Mesnil, C.: Demoney: A demonstrative electronic purse – Card specification. Technical Report SECSAFE-TL-007, Trusted Logic S.A. (November 2002)
Marlet, R., Métayer, D.L.: Security properties and JAVA CARD specificities to be studied in the SecSafe project. Technical Report SECSAFE-TL-006, Trusted Logic S.A. (August 2001)
Meyer, B.: Applying Design by Contract. IEEE Computer 25(10), 40–51 (1992)
Meyer, J., Müller, P., Poetzsch-Heffter, A.: The Jive system—implementation description (2000), Available from, http://softech.informatik.uni-kl.de/old/en/publications/jive.html
Mostowski, W.: Rigorous development of JAVA CARD applications. In: Clarke, T., Evans, A., Lano, K. (eds.) Proc. Fourth Workshop on Rigorous Object- Oriented Methods, London (2002), Available from, http://www.cs.chalmers.se/~woj/papers/room2002.ps.gz
Pratt, V.R.: Semantical considerations on Floyd-Hoare logic. In: Proceedings, 18th Annual IEEE Symposium on Foundation of Computer Science (1977)
Rodrýguez-Carbonell, E., Kapur, D.: Automatic generation of polynomial loop invariants for imperative programs (November 2003), Available from, http://www.lsi.upc.es/~erodri/ijcar04ex.ps
Stenzel, K.: Verification of JAVA CARD Programs. Technical report 2001-5, Institut für Informatik. Universität Augsburg, Germany (2001)
Sun Microsystems, Inc. JAVA CARD 2.2 Application Programming Interface (2002)
Sun Microsystems, Inc. JAVA CARD 2.2 Runtime Environment Specification (2002)
Sun Microsystems, Inc. JAVA CARD 2.2 Virtual Machine Specification (2002)
Trentelman, K., Huisman, M.: Extending JML specifications with temporal logic. In: Kirchner, H., Ringeissen, C. (eds.) AMAST 2002. LNCS, vol. 2422, pp. 334–348. Springer, Heidelberg (2002)
von Oheimb, D.: Analyzing JAVA in Isabelle/HOL. PhD thesis, Institut für Informatik, Technische Universität München (January 2001)
Ziemann, P., Gogolla, M.: An OCL extension for formulating temporal constraints. Technical Report 1/03, Universität Bremen, Fachbereich für Mathematik und Informatik (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hähnle, R., Mostowski, W. (2005). Verification of Safety Properties in the Presence of Transactions. In: Barthe, G., Burdy, L., Huisman, M., Lanet, JL., Muntean, T. (eds) Construction and Analysis of Safe, Secure, and Interoperable Smart Devices. CASSIS 2004. Lecture Notes in Computer Science, vol 3362. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-30569-9_8
Download citation
DOI: https://doi.org/10.1007/978-3-540-30569-9_8
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-24287-1
Online ISBN: 978-3-540-30569-9
eBook Packages: Computer ScienceComputer Science (R0)