International Symposium on Code Generation and Optimization
San Francisco, California, March 23-26, 2003

Tutorial: Security through Languages and Compilers

Andrew Myers (Cornell)


A recent, active area in computer security research aims to use program analysis and transformation to ensure security. This tutorial is an overview aimed at researchers and practitioners with a background in compilers.


Conventional computer security mechanisms such as firewalls, access control, and encryption treat programs as black boxes and as a result are unable to effectively address the emerging threats to security and privacy that arise from program behavior. Language-based enforcement of security offers a new set of tools for ensuring that our increasingly complex computing systems satisfy the security needs of their users. Program analyses and transformations, carried out at compile time or load time, can be used to detect or prevent security violations with low cost. Security analyses based in a rigorous notion of language semantics offer the possibility of fundamentally stronger security guarantees, while also presenting a framework in which unresolved foundational issues in security can be addressed.

This tutorial presents an overview of current research on using program analysis and transformation to provide assurance of security properties such as confidentiality, secrecy, integrity, availability, and memory safety. Topics covered include:

  • security type systems
  • analyses for safe, secure low-level code
  • security-driven code instrumentation
  • certifying compilation and code verification
  • language-based security protocol analysis
  • automated security protocol generation
  • information flow analysis for confidentiality and integrity


Andrew Myers is an Assistant Professor in the Computer Science Department, Cornell University, Ithaca, NY. His research interests include computer security, programming languages, and distributed object systems. His work on computer security has focused on practical, sound, expressive languages and systems for enforcing information security.