Securing Software: Languages

Goals

  • Type systems
    • Connect type safety to security
  • Verification
    • Explain what it means to verify a program
    • Understand basic techniques for program verification
    • Calculate a weakest precondition

Types

  • From safety to security
    • How can types be used to encode safety properties?
    • What is non-interference? Why does it match our intuitive notion of secrecy?

Verification

  • Why can’t program analysis be sound and complete?
    • How does verification circumvent this result?
  • How can you specify that a program is correct?
  • What is a valid Hoare triple?
  • What is the definition of a weakest precondition?
    • How can we calculate a weakest precondition?
    • How are weakest preconditions used in verification?
  • What are some limitations of verification?
  • Where/when is verification used in the real world?