skip to main content
research-article
Open Access

Abstract extensionality: on the properties of incomplete abstract interpretations

Published:20 December 2019Publication History
Skip Abstract Section

Abstract

In this paper we generalise the notion of extensional (functional) equivalence of programs to abstract equivalences induced by abstract interpretations. The standard notion of extensional equivalence is recovered as the special case, induced by the concrete interpretation. Some properties of the extensional equivalence, such as the one spelled out in Rice’s theorem, lift to the abstract equivalences in suitably generalised forms. On the other hand, the generalised framework gives rise to interesting and important new properties, and allows refined, non-extensional analyses. In particular, since programs turn out to be extensionally equivalent if and only if they are equivalent just for the concrete interpretation, it follows that any non-trivial abstract interpretation uncovers some intensional aspect of programs. This striking result is also effective, in the sense that it allows constructing, for any non-trivial abstraction, a pair of programs that are extensionally equivalent, but have different abstract semantics. The construction is based on the fact that abstract interpretations are always sound, but that they can be made incomplete through suitable code transformations. To construct these transformations, we introduce a novel technique for building incompleteness cliques of extensionally equivalent yet abstractly distinguishable programs: They are built together with abstract interpretations that produce false alarms. While programs are forced into incompleteness cliques using both control-flow and data-flow transformations, the main result follows from limitations of data-flow transformations with respect to control-flow ones. A further consequence is that the class of incomplete programs for a non-trivial abstraction is Turing complete. The obtained results also shed a new light on the relation between the techniques of code obfuscation and the precision in program analysis.

Skip Supplemental Material Section

Supplemental Material

a28-bruni.webm

References

  1. S. Abramsky. 2014. Intensionality, Definability and Computation. In Johan van Benthem on Logic and Information Dynamics, A. Baltag and S. Smets (Eds.). Springer, 121–142. Google ScholarGoogle ScholarCross RefCross Ref
  2. A. Asperti. 2008. The intensional content of Rice’s theorem. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2008, G. C. Necula and P. Wadler (Eds.). ACM, 113–119. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S.P. Vadhan, and K. Yang. 2012. On the (im)possibility of obfuscating programs. Journal of the ACM 59, 2 (2012), 6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. M. Ben-Amram and N. D. Jones. 2000. Computational complexity via programming languages: constant factors do matter. Acta Inf. 37, 2 (2000), 83–120. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. R. Bruni, R. Giacobazzi, and R. Gori. 2018. Code obfuscation against abstraction refinement attacks. Formal Asp. Comput. 30, 6 (2018), 685–711. Google ScholarGoogle ScholarCross RefCross Ref
  6. C. Collberg and J. Nagra. 2009. Surreptitious Software: Obfuscation, Watermarking, and Tamperproofing for Software Protection. Addison-Wesley Professional.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. C. Collberg, C. D. Thomborson, and D. Low. 1998. Manufactoring Cheap, Resilient, and Stealthy Opaque Constructs. In Proc. of Conf. Record of the 25st ACM Symp. on Principles of Programming Languages (POPL ’98). ACM Press, 184–196. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. P. Cousot and R. Cousot. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proc. of the 4th ACM Symp. on Principles of Programming Languages (POPL ’77). ACM Press, 238–252. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Cousot and R. Cousot. 1979. Systematic design of program analysis frameworks. In Conference Record of the 6th ACM Symposium on Principles of Programming Languages (POPL ’79). ACM Press, 269–282. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. P. Cousot and R. Cousot. 2014. Abstract interpretation: past, present and future. In Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS), CSL-LICS ’14, 2014, T. A. Henzinger and D. Miller (Eds.). ACM, 2:1–2:10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. P. Cousot, R. Giacobazzi, and F. Ranzato. 2018. Program Analysis Is Harder Than Verification: A Computability Perspective. In Computer Aided Verification - 30th International Conference, CAV 2018, Part of the Federated Logic Conference, FloC 2018, Oxford, UK, July 14-17, 2018, Proceedings, Part II (Lecture Notes in Computer Science), H. Chockler and G. Weissenbacher (Eds.), Vol. 10982. Springer, 75–95. Google ScholarGoogle ScholarCross RefCross Ref
  12. U. Dal Lago. 2011. A Short Introduction to Implicit Computational Complexity. In Lectures on Logic and Computation -ESSLLI 2010 and ESSLLI 2011, Selected Lecture Notes (Lecture Notes in Computer Science), N. Bezhanishvili and V. Goranko (Eds.), Vol. 7388. Springer, 89–109. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Dalla Preda and R. Giacobazzi. 2009. Semantics-based code obfuscation by abstract interpretation. Journal of Computer Security 17, 6 (2009), 855–908. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. S. Drape, C. Thomborson, and A. Majumdar. 2007. Specifying Imperative Data Obfuscations. In ISC - Information Security (Lecture Notes in Computer Science), J. A. Garay, et al. (Eds.), Vol. 4779. Springer Verlag, 299 – 314. Google ScholarGoogle ScholarCross RefCross Ref
  15. Y. Futamura. 1999. Partial Evaluation of Computation Process–An Approach to a Compiler-Compiler. Higher-Order and Symbolic Computation 12, 4 (1999), 381–391. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. R. Giacobazzi. 2008. Hiding Information in Completeness Holes - New perspectives in code obfuscation and watermarking. In Proc. of the 6th IEEE Int. Conferences on Software Engineering and Formal Methods (SEFM ’08). IEEE Press, 7–20. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. R. Giacobazzi, N. D. Jones, and I. Mastroeni. 2012. Obfuscation by Partial Evaluation of Distorted Interpreters. In Proc. of the ACM SIGPLAN Symp. on Partial Evaluation and Semantics-Based Program Manipulation (PEPM’12). ACM Press, 63–72. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. R. Giacobazzi, F. Logozzo, and F. Ranzato. 2015. Analyzing Program Analyses. In Proc. of the 42nd ACM Symp. on Principles of Programming Languages (POPL ’15). ACM Press, 261–273. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. R. Giacobazzi and I. Mastroeni. 2012. Making Abstract Interpretation Incomplete: Modeling the Potency of Obfuscation. In Static Analysis - 19th International Symposium, SAS, 2012. Proc. (Lecture Notes in Computer Science), A. Miné and D. Schmidt (Eds.), Vol. 7460. Springer, 129–145. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. R. Giacobazzi and I. Mastroeni. 2016. Making abstract models complete. Mathematical Structures in Computer Science 26, 4 (2016), 658–701. Google ScholarGoogle ScholarCross RefCross Ref
  21. R. Giacobazzi, F. Ranzato, and F. Scozzari. 2000. Making Abstract Interpretations Complete. Journal of the ACM 47, 2 (March 2000), 361–416. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. N. D. Jones. 2004. Transformation by interpreter specialisation. Science of Computer Programming 52, 17(1) (2004), 307–339. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. G. A. Kavvos. 2017. On the Semantics of Intensionality. In Foundations of Software Science and Computation Structures - 20th International Conference, FOSSACS 2017, Proceedings (Lecture Notes in Computer Science), J. Esparza and A. S. Murawski (Eds.), Vol. 10203. 550–566. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. V. Laviron and F. Logozzo. 2009. Refining Abstract Interpretation-Based Static Analyses with Hints. In Proc. of APLAS’09 (Lecture Notes in Computer Science), Vol. 5904. Springer-Verlag, 343–358. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. A. Majumdar, C. D. Thomborson, and S. Drape. 2006. A Survey of Control-Flow Obfuscations. In Information Systems Security, Second International Conference, ICISS 2006, Kolkata, India, December 19-21, 2006, Proceedings (Lecture Notes in Computer Science), A. Bagchi and V. Atluri (Eds.), Vol. 4332. Springer, 353–356. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. N. Partush and E. Yahav. 2013. Abstract Semantic Differencing for Numerical Programs. In Static Analysis - 20th International Symposium, SAS 2013. Proceedings (Lecture Notes in Computer Science), F. Logozzo and M. Fähndrich (Eds.), Vol. 7935. Springer, 238–258. Google ScholarGoogle ScholarCross RefCross Ref
  27. H.G. Rice. 1953. Classes of Recursively Enumerable Sets and Their Decision Problems. Trans. Amer. Math. Soc. 74 (1953), 358–366. Google ScholarGoogle ScholarCross RefCross Ref
  28. H. Rogers. 1992. Theory of recursive functions and effective computability. The MIT press.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. A. Venet. 1996. Abstract Cofibered Domains: Application to the Alias Analysis of Untyped Programs. In Static Analysis, Third International Symposium, SAS’96, Aachen, Germany, September 24-26, 1996, Proceedings (Lecture Notes in Computer Science), R. Cousot and D. A. Schmidt (Eds.), Vol. 1145. Springer, 366–382. Google ScholarGoogle ScholarCross RefCross Ref
  30. G. Winskel. 1993. The formal semantics of programming languages: an introduction. MIT press.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Abstract extensionality: on the properties of incomplete abstract interpretations

            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

            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!