Course Project Notes

advertisement
Computer Security Foundations
COS 597B
Prof David Walker
Welcome!
• Computer Security Foundations is for
– students interested in programming languages
and how to apply them to solving systems
security problems
– students interested in systems security problems
and how to use programming languages to
solve them
Class Style
• Some lectures given by me on technical topics
• Some discussions of papers on security
– class participation is important
• Occasional 1-page writing assignment summarizing
or critiquing a paper
• You can take this course for software systems
competency
Background
• It will be useful to have some background in logic
or language semantics
– Appel’s theorem proving class
– Programming languages (COS 510 or 441)
• If you have never taken such courses I recommend
– Benjamin Pierce “types and programming languages”
– Chapters 1-9 (approx 100 pages of fairly easy reading)
• I will try to fill in background as I go
– Next Monday, we will have a tutorial on this
background material
Topics of Interest:
Foundations
• what is security?
– safety, liveness, secrecy, authenticity, integrity
• what principles are available that help us
build secure systems?
– open design, economy of mechanism, minimal
trusted computing base, etc
Topics of Interest:
Language Mechanisms
• dynamic program monitoring
– theory: what kind of properties can we
enforce?
– practice: languages for writing program
monitors
• static program analysis
– type systems for safe virtual machines
– enforcing information flow properties
Topics of Interest:
Logic and Security
• specifying security properties logically
– authentication logics
– proof-carrying authorization
– security for distributed logic programs
Topics of Interest:
Cryptographic Protocols
• Specification of cryptographic protocols
– make assumptions about the power of
cryptographic primitives
– nothing about cryptography itself (see Ed’s
course if you are interested in how
cryptography works)
– reasoning about cryptographic protocols using
types
Topics of Interest:
Current Techniques
• Java security
– class loaders, security managers, security policies for
Java
– stack inspection: what is it? How does it work? What
kind of security does it really provide?
• Program analysis and security
– model checkers: how to analyze one million lines of
code for security flaws!
– language designs: CQual, Vault
Grading
• Taking the course for a grade:
– course project, final report: approx 50%
– assignments, project progress reports, pop
quizzes, class participation, class presentation:
approx 50%
• Not taking the course for grade:
– reading and class participation
– a presentation on a topic of interest
Course Project
• A substantial project involving
programming languages and security in
some fashion
– work in pairs
– once you get started: work steadily every week
of the term (5-10 hours/week, perhaps more)
• note: I deleted the journal idea
Course Project: Milestones
• Sept 24: Form groups & pick area
• Oct 8: analysis of related work
– ~ 5-page analysis of related work
– minimum 2 papers/person (hand-in a joint summary)
• Nov 1: Progress Report I
– ~ 5-page description of one component of the project
– idea summary and justification, a partial formalization, a proof, a tool description and
performance evaluation, a language design and justification, a software design and
explanation etc
• Nov 22: Progress Report II
– ~ 5-page description of a second element of the work
• Last month of class: Presentation on research in your area
– assign 1 or 2 papers to the class to read; give a lecture and discuss
• Jan 11, Deans date: Final submission
– submit final report which includes introduction, problem description, technical
accomplishments, any code, performance evaluation, related work, and summary
Project Ideas
• The course web site contains a list of project ideas
and some papers you can read as starting points;
• Feel free to choose an idea from the web site or try
an idea of your own, possibly connected with
other research in the department
• Some of the projects mentioned on the web site
are very open-ended.
– identify small subgoals that can be accomplished each
week or every two weeks
– be sure to have multiple fall-back positions
– plan realistically
Example Project
• Cryptographic programming in Jif:
– Jif is a programming language based on Java equipped
with a type system for detecting information-flow.
– Learn about how Jif works, its features and semantics
– Use Jif:
• Design an interface to a cryptographic library using Jif's
decentralized label model.
• Use the resulting library to implement the cryptographic
protocols used in a secure client-server setting.
– Evaluate: What did you learn? Jif pros and cons?
• Starting points on the projects page:
– eg: Jif Homepage http://www.cs.cornell.edu/jif/
Example Final Project Outline
• Abstract
• Section I: Introduction
– Motivation (argument that makes the contributions seem inevitable!)
- Information security is important.
- Cryptographic primitives are crucial for network-based security.
- Language-based security is practical way to increase confidence in security
- Current support for cryptographic primitives in languages is not good.
– Contributions
- Design of a cryptographic library in Jif
- Show how type system can encode desirable invariants
- Investigation of event driven vs. threaded programs with information flow
- Implementation of a (reasonably) substantial system using Jif
• Section II: Background material
– Jif and Decentralized Label Model
- Important features (label abstraction, first-class principals, declassification,
endorsement), syntax, semantics
– Cryptographic operations
Example Final Project Outline
• Section III: Design of the Cryptographic Library
– Problems: Keeping keys secret; Dependency between keys and
encrypted values; Authentication information encoded in the types;
Integrity Constraints in Jif
– Solutions: Dynamic Principals; Label polymorphism; Fancy
programming
• Section IV: Evaluation of the Library
– Description of the test case
- Bank/ATM simulation with interesting authentication protocols
- Taken from CSE331 course implementation
– Implementation details/examples
– Insights learned? Design choices you would have changed?
• Section V: Related Work
• Section VI: Conclusion
– Summarize introduction
– Reiterate contributions
Other Project Topics
• secure distributed programming & PlanetLab
– implement a service for PlanetLab using an interesting
programming model
• tuple spaces (see Klaim for Java)
• join calculus (see JoCaml)
• distributed logic programming (see SD3, Sophia)
– consider the security threats and the mechanisms necessary
to compensate
– implement a security monitoring service (as opposed to an
arbitrary service)
Other Project Topics
• security monitors
– a security monitor watches a program, virtual machine or
distributed system and interrupts the system when it
detects a security violation
– consider security monitors based on transactions
• theory of what is enforceable in the transactional model
• practice of implementing the system
– consider concurrent or distributed security monitors
– consider hardware/compiler support for parallelizing
execution of security monitors with the mainline
application
– consider type-system support for making security monitors
compose with one another; implement it in the context of
Polymer
Other Project Topics
• Verifying availability properties
– recently, researchers have a great progress
verifying cryptographic protocols and establishing
authenticity & secrecy properties
• Multi-set writing protocols (Cervesato et al.)
• Types for protocols (Gordon & Jeffrey)
– can we do the same for availability properties and
developing robust distributed algorithms?
• eg: can we developed techniques for verifying
consensus and other group communication protocols?
Under what failure models?
Other Project Topics
• Study the effectiveness of security analysis
tools
– How do we evaluate security analysis tools to
determine how effective they are?
– What properties should they have?
– What metrics can we use to analyze tools?
– Can we develop a benchmark for testing these
tools?
– Take two or more existing tools and analyze them.
Extend a programming language
• Polymer is a compiler framework for extending
Java
– add some form of program monitors based on automata
– add Cryptic-like support to Java for verifying
cryptographic protocols
• Binder is a logic-programming language with
built-in secuiry
– implement a linear-logic programming version of
binder
Other Project Topics
• information flow
– consider tracking information flow in a unique
programming model
• tuple space model
• distributed logic programming model
• typed assembly language
Other Project Topics
• Survey paper option
– choose a relatively broad area and do an in-depth
analysis of the research in the area
• come up with a creative way to classify the work in the area
• summarize the major contributions
• determine the most important avenues for future research
– focus on producing a particularly well-written report
by working on multiple drafts
– eg: software program monitors; hardware support for
security; security in distributed programming models
Other Project Topics
• Come up with a own topic related to your
own research
• Good topics may bridge gaps between areas
– Networking & distributed programming
– Algorithms for reliable computing and
cryptography & languages to support their
implementation or verification
– Architecture or compilers to improve
performance of security mechanisms
Your Job
• In the next two weeks, figure out who you want to
work with and what general topic you want to
work on
– work with someone who has the same level of
commitment to the course
– cross-area partnerships can be a great idea (eg: PL
person with a systems person or algorithms person)
– visit the course web page for ideas; talk with your
friends or other people in the department; skim a couple
of papers
– meet with me 22-24th of September
• set up an appointment by e-mail
Download