Home

Course description

Lecture notes

Assignments

Projects

Reference

 

 

 

CS 380S - Theory and Practice of Secure Systems (54910)

Fall 2009

Projects

Proposals. Project proposals are due September 29. A proposal should be 2-3 pages long, and include the following:

  • Names of team members (no more than 2 members per team).
  • Description of the system or network protocol that you are planning to analyze or implement, or the tool that you intend to build or extend.
  • Description of security properties you intend to investigate.
  • Tools and/or analysis techniques you are planning to use.
  • Clear description of project deliverables. Possible deliverables are a software prototype, a substantial case study, or, in the case of a purely theoretical study, proofs (manual or machine-assisted).

Evaluation. At the end of the project, each team should produce a workshop-quality 10-page paper with novel research results.

Project ideas. Some ideas are suggested below, but you may propose your own topic.

Sample projects from past years

  • Static analysis tool for finding cross-site scripting vulnerabilities in Web applications implemented using the Django framework.
  • Formal study of authentication in Bluetooth device pairing.
  • Virtual environment for safely extracting shellcodes from malware and determining their function.
  • Privacy-preserving graph algorithms.
  • Secure checking of mobile devices' locations.
  • Formal analysis of network denial of service.
  • Authentication system based on semantic features of images.
  • New kernel rootkit for FreeBSD.
  • Security analysis of an open-source Voice-over-IP PBX (private branch exchange).
  • Modeling and verification of the Internet Key Exchange protocol with ACL2.
  • Security analysis of an open-source game engine.

Analyze a software system

Analyze a substantial program or suite of programs. Your objective is to verify the presence of known vulnerabilities, or try to find new ones. Look for both design and implementation vulnerabilities. I suggest choosing a popular open-source program from, for example, SourceForge. Pick a program that you find interesting and would like to learn more about.

I recommend using an analysis tool to start. Sample tools include Pixy, MOPS, Cqual, flawfinder, and Splint. Feel free to use a tool not from the list, or even develop your own tool. If you use an existing tool, your report should include a detailed evaluation of its strengths and weaknesses.

Implement a software protection method

Design and implement a prototype of a new tool for preventing or containing execution of malicious code. Evaluate its usefulness against various attacks. Examples:
  • Implement a novel containment mechanism and/or reference monitor for untrusted applications. Possibilities include virtual machines, system transactions, privilege separation, run-time sandboxes that restrict usage of system resources, etc.
    • For example, use system transactions to efficiently implement reference monitors around untrusted processes.
  • Build a tool for detecting when a Web application's behavior deviates from "normal."
  • Create a tool for verifying whether the observed behavior of a program or a network protocol complies with its specification.

Design a secure software system

You have a lot of freedom choosing your system, but your proposal must be very specific about the project's goals and deliverables.
  • Design a defense against distributed denial of service attacks staged by zombie "botnets" that does not require any modifications to the existing TCP/IP clients and servers.
  • Analyze security requirements of attached network storage and propose a practical method for achieving these requirements.
  • Design a practical logging system to support secure audit and forensic analysis.
  • Design a new distributed application that takes advantage of tamper-proof "trusted computing" hardware.
  • Add security and privacy protections to a realistic RFID application.
  • Define what HTTP security means, and implement a network filter for securing HTTP communications.
  • Implement a tool for inferring the global "security perimeter" of the network from the local policies of firewalls, intrusion detection systems, and so on.

Design and/or investigate a privacy protection system

Choose an existing or proposed privacy-enhancing system, and rigorously analyze its strengths and/or weaknesses. You may also propose and implement a new tool for protecting privacy. Examples:
  • Develop an enforcement mechanism for enterprise privacy policies based on decentralized information flow control.
  • Investigate privacy aspects of a popular networking protocol, and design a new, privacy-preserving version.
  • Investigate algorithmic aspects (decidability, complexity, etc.) of some legally mandated privacy policy. For example, what does it take to enforce HIPAA for medical data, or Gramm-Leach-Bliley for financial data?
  • Develop a method for enforcing user accountability in an existing anonymity network such as Tor or JAP.
  • Implement a prototype of a privacy-preserving data mining system, or propose a new privacy-preserving data mining algorithm.

Perform formal analysis of a network protocol

Using a formal verification method to analyze a network protocol for the presence of security flaws.
Examples of protocols (ask instructor for specific references):
  • Secure voice-over-IP protocols (for example, Skype)
  • 802.11i wireless security
  • Secure multicast and group key management
  • Authentication in Bluetooth
  • Secure location verification for mobile devices
  • Secure routing in ad-hoc networks

Examples of protocol analysis tools: ProVerif; Murphi; AVISPA; Constraint solver (see also CoProVe); MOCHA.

Do a theoretical study

Examples:
  • Develop a cryptographic proof of security for a network protocol such as TLS, IKE, or Kerberos.
  • Apply algorithmic techniques for efficient analysis of large datastreams to the detection of distributed botnet activity.
  • Design and analyze a privacy-preserving version of some common distributed protocol.
Talk to the instructor if you are interested in a more theoretical project.