skip to main content
research-article
Free Access

An Abstract Model of Certificate Translation

Published:01 July 2011Publication History
Skip Abstract Section

Abstract

A certificate is a mathematical object that can be used to establish that a piece of mobile code satisfies some security policy. In general, certificates cannot be generated automatically. There is thus an interest in developing methods to reuse certificates generated for source code to provide strong guarantees of the compiled code correctness. Certificate translation is a method to transform certificates of program correctness along semantically justified program transformations. These methods have been developed in previous work, but they were strongly dependent on particular programming and verification settings. This article provides a more general development in the setting of abstract interpretation, showing the scalability of certificate translation.

References

  1. Albert, E., Puebla, G., and Hermenegildo, M. V. 2005. Abstraction-carrying code. In Proceedings of the 11th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning. F. and A. Voronkov Eds., Lecture Notes in Computer Science, vol. 3452, Springer-Verlag, 380--397.Google ScholarGoogle Scholar
  2. Appel, A. W. 2001. Foundational proof-carrying code. In Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science (LICS’01). J. Halpern Ed., IEEE Press, 247. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Appel, A. W. and Felten, E. W. 2001. Models for security policies in proof-carrying code. Tech. rep. TR-636-01, Princeton University.Google ScholarGoogle Scholar
  4. Bannwart, F. Y. and Müller, P. 2005. A program logic for bytecode. Electron. Notes Theor. Comput. Sci. 141, 255--273. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Barnett, M., Leino, K. R. M., and Schulte, W. 2005. The Spec# programming system: An overview. In Proceedings of the International Workshop on Construction and Analysis of Safe, Secure and Interoperable Smart Devices (CASSIS’04). G. Barthe, L. Burdy, M. Huisman, J.-L. Lanet, and T. Muntean Eds., Lecture Notes in Computer Science Series, vol. 3362, Springer-Verlag, 151--171. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Barrett, C. W., Fang, Y., Goldberg, B., Hu, Y., Pnueli, A., and Zuck, L. D. 2005. Tvoc: A translation validator for optimizing compilers. In Proceedings of the 17th International Conference on Computer-Aided Verification (CAV’05). K. Etessami and S. K. Rajamani Eds., Lecture Notes in Computer Science Series, vol. 3576, Springer-Verlag, 291--295. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Barthe, G. and Kunz, C. 2008. Certificate translation in abstract interpretation. In Proceedings of the European Symposium on Programming. S. Drossopoulou Ed., Lecture Notes in Computer Science Series, vol. 4960, SpringerVerlag, 368--382. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Barthe, G., Rezk, T., and Saabas, A. 2005. Proof obligations preserving compilation. In Proceedings of the Workshop on Formal Aspects in Security and Trust. T. Dimitrakos, F. Martinelli, P. Ryan, and S. Schneider Eds., Lecture Notes in Computer Science, vol. 3866, Springer-Verlag, 112--126. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Barthe, G., Pichardie, D., and Rezk, T. 2007. A certified lightweight non-interference Java bytecode verifier. In Proceedings of the 16th European Symposium on Programming (ESOP’07). Lecture Notes in Computer Science, vol. 4421, Springer-Verlag, 125--140. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Barthe, G., Crégut, P., Grégoire, B., Jensen, T., and Pichardie, D. 2008. The MOBIUS proof carrying code infrastructure. In Proceedings of the 6th International Symposium on Formal Methods for Components and Objects (FMCO’07). Springer-Verlag, 1--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Barthe, G., Grégoire, B., and Pavlova, M. 2008. Preservation of proof obligations from Java to the Java virtual machine. In Proceedings of the International Joint Conference on Automated Reasoning. A. Armando, P. Baumgartner, and G. Dowek Eds., Lecture Notes in Computer Science Series, vol. 5195, Springer, 83--99. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Barthe, G., Grégoire, B., Kunz, C., and Rezk, T. 2009. Certificate translation for optimizing compilers. ACM Trans. Program. Lang. Syst. 31, 5, 18:1--18:45. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Benton, N. 2004. Simple relational correctness proofs for static analyses and program transformations. In Proceedings of the ACM Symposium on Principles of Programming Languages. N. D. Jones and X. Leroy Eds., ACM Press, 14--25. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Beringer, L. and Hofmann, M. 2007. Secure information flow and program logics. In Proceedings of the IEEE Computer Security Foundations Symposium. IEEE Press, 233--248. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Besson, F., Jensen, T., Pichardie, D., and Turpin, T. 2007. Result certification for relational program analysis. Resear. rep. 6333, IRISA.Google ScholarGoogle Scholar
  16. Cachera, D., Jensen, T., Pichardie, D., and Rusu, V. 2004. Extracting a data flow analyser in constructive logic. In Proceedings of the European Symposium on Programming. Lecture Notes in Computer Science Series, vol. 2986, 385--400.Google ScholarGoogle ScholarCross RefCross Ref
  17. Chaieb, A. 2006. Proof-producing program analysis. In Proceedings of the International Colloquium on Theoretical Aspects of Computing. K. Barkaoui, A. Cavalcanti, and A. Cerone Eds., Lecture Notes in Computer Science Series, vol. 4281, Springer-Verlag, 287--301. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Chalin, P. and James, P. R. 2007. Non-null references by default in Java: Alleviating the nullity annotation burden. In Proceedings of the European Conference on Object-Oriented Programming. 227--247. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Chen, J., Chugh, R., and Swamy, N. 2010. Type-preserving compilation of end-to-end verification of security enforcement. In Proceedings of the ACM Conference on Programming Languages Design and Implementation. B. G. Zorn and A. Aiken Eds., ACM, 412--423. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Cousot, P. and Cousot, R. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of the ACM Symposium on Principles of Programming Languages. 238--252. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Cousot, P. and Cousot, R. 1979. Systematic design of program analysis frameworks. In Proceedings of the ACM Symposium on Principles of Programming Languages. 269--282. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Cousot, P. and Cousot, R. 1992. Abstract interpretation frameworks. J. Log. Comput. 2, 4, 511--547.Google ScholarGoogle ScholarCross RefCross Ref
  23. Grégoire, B. and Sacchini, J. 2008. Combining a verification condition generator for a bytecode language with static analyses. In Proceedings of the 3rd Symposium on Trustworthy Global Computing: Revised Selected Papers. Lecture Notes in Computer Science, vol. 4912, Springer-Verlag, 23--40. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Grossman, D. and Morrisett, J. G. 2000. Scalable certification for typed assembly language. In Proceedings of the 3rd International Workshop on Types in Compilation. R. Harper Ed., Lecture Notes in Computer Science Series, vol. 2071, Springer, 117--146. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Hankin, C., Nielson, F., and Nielson, H. R. 2005. Principles of Program Analysis 2nd Ed. Springer-Verlag.Google ScholarGoogle Scholar
  26. Kunz, C. 2010. Certificate translation for the verification of concurrent programs. In Proceedings of the Symposium on Trustworthy Global Computing. M. Hofmann and M. Wirsing Eds., Lecture Notes in Computer Science Series, vol. 6084, Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Lerner, S., Millstein, T., Rice, E., and Chambers, C. 2005. Automated soundness proofs for dataflow analyses and transformations via local rules. In Proceedings of the ACM Symposium on Principles of Programming Languages. ACM, New York, NY, 364--377. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Leroy, X. 2006. Formal certification of a compiler back-end or: Programming a compiler with a proof assistant. In Proceedings of the ACM Symposium on Principles of Programming Languages. J. G. Morrisett and S. L. P. Jones Eds., ACM Press, 42--54. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Logozzo, F. and Fähndrich, M. 2008. On the relative tompleteness of bytecode analysis versus source code analysis. In Proceedings of the International Conference on Compiler Construction. L. Hendren Ed., Lecture Notes in Computer Science Series, vol. 4959, Springer, 197--212. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Morrisett, G., Crary, K., Glew, N., Grossman, D., Samuels, R., Smith, F., Walker, D., Weirich, S., and Zdancewic, S. 1999a. Talx86: A realistic typed assembly language. In Proceedings of the Workshop on Compiler Support for System Software. 25--35.Google ScholarGoogle Scholar
  31. Morrisett, G., Walker, D., Crary, K., and Glew, N. 1999b. From system F to typed assembly language. ACM Trans. Program. Lang. Syst. 21, 3, 527--568. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Müller, P. and Nordio, M. 2007. Proof-transforming compilation of programs with abrupt termination. Tech. rep. 565, ETH Zurich.Google ScholarGoogle Scholar
  33. Myers, A. C. 1999. JFlow: Practical mostly-static information flow control. In Proceedings of the ACM Symposium on Principles of Programming Languages. ACM Press, 228--241. (Ongoing development at http://www.cs.cornell.edu/jif/.) Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Necula, G. C. 1998. Compiling with proofs. Tech. rep. CMU-CS-98-154, Carnegie Mellon University.Google ScholarGoogle Scholar
  35. Necula, G. C. and Lee, P. 1996. Safe kernel extensions without run-time checking. In Proceedings of the USENIX Symposium on Operating Systems Design and Implementation. USENIX Assoc., Berkeley, CA, 229--243. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Necula, G. C. and Lee, P. 1998. The design and implementation ofa certifying compiler. In Proceedings of the Conference on Programming Languages Design and Implementation. ACM Press, New York, NY, 333--344. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Pnueli, A., Singerman, E., and Siegel, M. 1998. Translation validation. In Proceedings of the 4th International Conference on Tools and Algorithms for the Construction and Analysis of Systems. B. Steffen Ed., Lecture Notes in Computer Science Series, vol. 1384, Springer-Verlag, 151--166. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Rival, X. 2003. Abstract interpretation-based certification of assembly code. In Proceedings of the 4th International Conference on Verification, Model Checking and Abstract Interpretation. L. D. Zuck, P. C. Attie, A. Cortesi, and S. Mukhopadhyay Eds., Lecture Notes in Computer Science Series, vol. 2575, Springer-Verlag, 41--55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Rival, X. 2004. Symbolic Transfer Functions-based Approaches to Certified Compilation. In Proceedings of the ACM Symposium on Principles of Programming Languages. ACM, 1--13. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Rose, E. 2003. Lightweight byte code verification. J. Automat. Reason. 31, 3--4,303--334. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Saabas, A. and Uustalu, T. 2007. Type systems for optimizing stack-based code. Electronic Notes Theor. Comput. Sci. 190, 1, Elsevier, 103--119. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Saabas, A. and Uustalu, T. 2008. Proof optimization for partial redundancy elimination. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation. ACM Press, 91--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Seo, S., Yang, H., and Yi, K. 2003. Automatic construction of Hoare proofs from abstract interpretation results. In Proceedings of the Asian Programming Languages and Systems Symposium. A. Ohori Ed., Lecture Notes in Computer Science, vol. 2895, Springer-Verlag, 230--245.Google ScholarGoogle Scholar
  44. Seo, S., Yang, H., Yi, K., and Han, T. 2007. Goal-directed weakening of abstract interpretation results. ACM Trans. Program. Lang. Syst. 29, 6, 39:1--39:39. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Sørensen, M. H. and Urzyczyn, P. 2006. Lectures on the Curry-Howard Isomorphism. Elsevier.Google ScholarGoogle Scholar
  46. Tarditi, D., Morrisett, J. G., Cheng, P., Stone, C., Harper, R., and Lee, P. 1996. TIL: A type-directed optimizing compiler for ML. In Proceedings of the Conference on Programming Languages Design and Implementation. ACM, 181--192. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Wildmoser, M. and Nipkow, T. 2004. Certifying machine code safety: Shallow versus deep embedding. In Proceedings of the 17th International Conference on Theorem Proving in Higher-Order Logics. K. Slind, A. Bunker, and G. Gopalakrishnan Eds., Lecture Notes in Computer Science, vol. 3223, Springer-Verlag, 305--320.Google ScholarGoogle Scholar
  48. Wildmoser, M. and Nipkow, T. 2005. Asserting bytecode safety. In Proceedings of the European Symposium on Programming. M. Sagiv Ed., Lecture Notes in Computer Science, vol. 3444, Springer-Verlag, 326--341. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Wildmoser, M., Chaieb, A., and Nipkow, T. 2005. Bytecode analysis for proof carrying code. Electron. Notes Theor. Comput. Sci. 141, Elsevier. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Wu, D., Appel, A. W., and Stump, A. 2003. Foundational proof checkers with small witnesses. In Proceedings of the ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming. ACM Press, New York, NY, 264--274. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Zuck, L. D., Pnueli, A., Fang, Y., and Goldberg, B. 2002. Voc: A translation validator for optimizing compilers. Electron. Notes. Theor. Comput. Sci. 65, 2.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. An Abstract Model of Certificate Translation

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM Transactions on Programming Languages and Systems
              ACM Transactions on Programming Languages and Systems  Volume 33, Issue 4
              July 2011
              170 pages
              ISSN:0164-0925
              EISSN:1558-4593
              DOI:10.1145/1985342
              Issue’s Table of Contents

              Copyright © 2011 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 1 July 2011
              • Accepted: 1 February 2011
              • Revised: 1 December 2010
              • Received: 1 January 2010
              Published in toplas Volume 33, Issue 4

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article
              • Research
              • Refereed

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!