Comp 527: Final Project Ideas

up to final project page

A course similar to this one was done at U.C. Berkeley. You might want to visit their final project ideas page as well as the work their students actually did.

Below are various ideas you might also consider.

Operating Systems

Build ACLs
Windows NT supports fairly complex access control lists, but only very expensive ``secure'' versions of Unix have ACLs. Build support for ACLs into the filesystem of a free Unix. How can your ACLs be backward-compatible with traditional applications like rcs that read and write the security bits? How should you handle the sticky bits in traditional Unix? What about umasks?
MLS
Classified, secret, top-secret, and so forth. Building a complete multilevel system for Unix is far too big for a final project, but there are a number of interesting sub-problems you might consider.
  • Add security labels to the file system and to users and build the appropriate security checks into the kernel.
  • Measure the bandwidth of various timing channels. This could be anything from modulating the system load, the disk load, the virtual memory load, or even the cache hit rate.
Firewalls
Add firewall-style support to an operating system. You could try developing application-level gateways for several of the common protocols. You could also look at building an efficient router. Rather than just hacking away, you might also look at the software engineering aspect and look at some kind of firewall architecture that has inherent strengths against attacks on any of its protocols.
Replace Setuid
Too many Unix tools are setuid root. Clark-Wilson recommends having certain types of data files restricted to only being accessible by certain programs. Do this for Unix.

Cryptography / Networking

Login authentication
Modern Unix systems support pluggable authentication modules (PAM). Write a PAM that uses a smart card or a PalmPilot or some other interesting technique.
Transparent cryptography
SSL can be added on an application-by-application basis, but it does not happen for free. Add SSL (or equivalent) to the shared library to make all networking calls encrypted. Find a way for the client machine to interrogate the server machine to see if it supports transparent encryption and gracefully fall back to non-encrypted communication (or optionally fail, depending on an environment variable).
High performance ciphers
How fast can you go? RC4 can theoretically be tuned to go the speed of memcpy(3C). What if you wire together gzip (or some other compression system) with an encryption system? Can you go faster with the two systems optimized together than running them separately? Compare the performance of several different ciphers (either with code you get from the net or from Schneier's book). Fine tune the inner loop at the raw assembly level if you have to.
Cryptanalysis
Did you like the RC4 assignment? There's a whole world of cryptosystems waiting to be broken. You can make statistical studies (as you did in assignment 4) or you can apply yourself to the raw algorithms. Remember, the output of a good cryptosystem should resemble ``perfect'' random numbers.
One-time pad management
Assume the worst case: all traditional cryptosystems have been broken, P=NP, and evil attackers are actively in control of every network. This means the only remaining cryptosystem is the one-time pad. How would you do the equivalent of digital signatures? How would you do the equivalent of public key infrastructure? How would you securely exchange pad bits? Work out the models on paper and write a program that implements them.
TCP/IP protocol stuff
Generic TCP/IP is vulnerable to all kinds of attacks. Design and implement other protocols that might be stronger, but still preserve the efficiency of TCP/IP. For example, an attacker can emit a RST packet which closes the connection. That's a denial-of-service attack. Can you build an efficient networking protocol that's resistant to this attack? What about session hijacking?

Applications

Auditing infrastructure
The DIDS paper discussed a networked audit facility for intrusion detection. But what happens if the centralized audit machine is successfully attacked? Build a truly decentralized system where, even if some number of systems go down, you still have a complete record of what happened.
Spam filtering
Write a classification system that can distinguish spam from normal mail. I have several years of spam saved that you can use to train your system. Another related project would be writing a Web proxy server that filters out advertisements.

Dan Wallach, CS Department, Rice University
Last modified: Mon Mar 8 11:51:40 CST 1999