On-Card Bytecode Verification for Java Card

  • Xavier Leroy
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2140)


This paper presents a novel approach to the problem of bytecode verification for Java Card applets. Owing to its low memory requirements, our verification algorithm is the first that can be embedded on a smart card, thus increasing tremendously the security of post-issuance downloading of applets on Java Cards.


Virtual Machine Smart Card Method Code Dictionary Entry Code Size 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    P. Briggs, K. D. Cooper, and L. Torczon. Improvements to graph coloring register allocation. ACM Trans. Prog. Lang. Syst., 16(3):428–455, 1994.CrossRefGoogle Scholar
  2. 2.
    P. Brisset. Vers un vérifieur de bytecode Java certifié. Seminar given at École Normale Supérieure, Paris, Oct 2nd 1998.Google Scholar
  3. 3.
    G. J. Chaitin. Register allocation and spilling via graph coloring. SIGPLAN Notices, 17(6):98–105, 1982.CrossRefMathSciNetGoogle Scholar
  4. 4.
    Z. Chen. Java Card Technology for Smart Cards: Architecture and Programmer’s Guide. The Java Series. Addison-Wesley, 2000.Google Scholar
  5. 5.
    R. Cohen. The defensive Java virtual machine specification. Technical report, Computational Logic Inc., 1997.Google Scholar
  6. 6.
    S. N. Freund and J. C. Mitchell. A type system for object initialization in the Java bytecode language. ACM Trans. Prog. Lang. Syst., 21(6):1196–1250, 1999.CrossRefGoogle Scholar
  7. 7.
    L. Gong. Inside Java 2 platform security: architecture, API design, and implementation. The Java Series. Addison-Wesley, 1999.Google Scholar
  8. 8.
    J. A. Gosling. Java intermediate bytecodes. In Proc. ACM SIGPLAN Workshop on Intermediate Representations, pages 111–118. ACM, 1995.Google Scholar
  9. 9.
    G. Grimaud, J.-L. Lanet, and J.-J. Vandewalle. FACADE-a typed intermediate language dedicated to smart cards. In Software Engineering-ESEC/FSE’ 99, volume 1687 of LNCS, pages 476–493. Springer-Verlag, 1999.CrossRefGoogle Scholar
  10. 10.
    T. Lindholm and F. Yellin. The Java Virtual Machine Specification. The Java Series. Addison-Wesley, 1999. Second edition.Google Scholar
  11. 11.
    G. McGraw and E. Felten. Securing Java. John Wiley & Sons, 1999.Google Scholar
  12. 12.
    G. C. Necula. Proof-carrying code. In POPL’97, pages 106–119. ACM Press, 1997.Google Scholar
  13. 13.
    T. Nipkow. Verified bytecode verifiers. In Foundations of Software Science and Computation Structures (FOSSACS’01), volume 2030 of LNCS, pages 364–378. Springer-Verlag, 2001.CrossRefGoogle Scholar
  14. 14.
    J. Posegga and H. Vogt. Java bytecode verification using model checking. In OOPSLA Workshop Fundamental Underpinnings of Java, 1998.Google Scholar
  15. 15.
    C. Pusch. Proving the soundness of a Java bytecode verifier specification in Isabelle/HOL. In W. R. Cleaveland, editor, TACAS’99, volume 1579 of LNCS, pages 89–103. Springer-Verlag, 1999.Google Scholar
  16. 16.
    Z. Qian. A formal specification of Java virtual machine instructions for objects, methods and subroutines. In J. Alves-Foss, editor, Formal syntax and semantics of Java, volume 1523 of LNCS. Springer-Verlag, 1998.Google Scholar
  17. 17.
    Z. Qian. Standard fixpoint iteration for Java bytecode verification. ACM Trans. Prog. Lang. Syst., 22(4):638–672, 2000.CrossRefGoogle Scholar
  18. 18.
    E. Rose and K. Rose. Lightweight bytecode verification. In OOPSLA Workshop Fundamental Underpinnings of Java, 1998.Google Scholar
  19. 19.
    R. Stata and M. Abadi. A type system for Java bytecode subroutines. ACM Trans. Prog. Lang. Syst., 21(1):90–137, 1999.CrossRefGoogle Scholar
  20. 20.
    Sun Microsystems. Java 2 platform micro edition technology for creating mobile devices. White paper, 2000.Google Scholar
  21. 21.
    Sun Microsystems. Java Card 2.1.1 runtime environment specification, 2000.Google Scholar
  22. 22.
    Sun Microsystems. Java Card 2.1.1 virtual machine specification, 2000.Google Scholar
  23. 23.
    G. Vigna, editor. Mobile Agents and Security. Number 1419 in Lecture Notes in Computer Science. Springer-Verlag, 1998.Google Scholar
  24. 24.
    F. Yellin. Low level security in Java. In Proc. 4th World Wide Web Conference, pages 369–379. O’Reilly, 1995.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • Xavier Leroy
    • 1
  1. 1.Trusted LogicVersaillesFrance

Personalised recommendations