CS 591: Computer Security and Privacy, Spring 2009
Note: this is not a syllabus, and is subject to change.
Instructor: Jedidiah R. Crandall
Prerequisites: No official prerequisites. Some of the material is very technical in nature, the
more you know about networks, operating systems, computer architecture, and assembly language the better, but I won't assume everybody will know
about any particular thing and the less you know about these things the more you'll learn. If you're not comfortable with low-level programming in
a C/UNIX environment, you will be. Math prerequisites are very minimal, when we get to the cryptography portion of the class we'll focus on history and the properties that different cryptosystems can provide, not the mathematical details of their implementation.
Required Texts: Computer Security: Art and Science by Matt Bishop, http://preview.tinyurl.com/6rvefm (this is the graduate version with the brown cover, do not buy the
green undergrad version with a different title.).
Other Readings: We will also read a variety of research papers and white papers.
Grading: There will be four tests and a final, a few light homeworks, and weekly journal entries. There is some core material that everybody that
passes a security and privacy class must know, but the exact grading scheme (still TBD) will be set up so everyone can learn in this class on an
individual basis and have fun. Anyone that attends class regularly should have no problem doing well on the tests. Regarding hands-on projects and journal entries, I don't want your grade to reflect, e.g., your C programming skills or knowledge of network protocols coming into
the class, but rather how much you progress toward being able in the future to deal with security and privacy issues in a professional or research
capacity. I expect to learn a lot this semester, too!
Attacks and journal entries: There will be an ethical component to the class, after which students will be asked to work on a series of
simulated attacks on different systems and networks. Your weekly journal entry should reflect how much you've progressed toward understanding the
attacks and especially the prerequisite knowledge that each requires. I expect some students will complete nearly all of them and some will complete
just a few, but the grade will be based on what your journal entry reflects about what you've learned and not if you were successful in completing
each one.
Material to be covered:
- 1 week on policy and authentication (confidentiality, integrity, availability, hybrid policies, access control matrices, take-grant models, dictionary attacks, salting, password file shadowing, etc.)
- 1 week on typical UNIX system security/authentication mechanisms (virtual memory, filesystems, signals, SELinux, etc.) and concurrency vulnerabilities
- 1 week on various types of vulnerabilities and exploits (memory corruption, gaining root or kernel privileges, web app vulnerabilities, Saltzer and Schroeder's secure deisgn principles, the Ware and Anderson reports, vulnerability analysis, etc.)
- 2 weeks on network security (packet filtering, network IDS, IPS techniques such as RST injection, anomaly detection, BGP attacks, DNS security, etc.)
- 1 week on information flow (basic information theory, noninterference, the unwinding theorem, the confinement problem, dynamic and static information flow tracking, covert channel analysis, timing channels)
- 2 weeks on cryptography and cryptanalysis (classical cryptosystems and history, symmetric cryptography, linear and differential cryptanalysis, asymmetric cryptography and its various applications, identity-based encryption, Shor's algorithm, quantum crypto, etc.)
- 1 week on web security (SQL injections attacks, cross-site scripting, etc.)
- 2 weeks on Internet censorship and privacy issues
- 2 weeks on malicious code detection and analysis (history, appearance- and behavior-based detection, anomaly detection, macro viruses, etc.)
- Anything else that students are interested in, please e-mail me suggestions.
The following are examples of the hands-on simulated attacks students will carry out, and the requisite knowledge that will be gained with each:
- Filesystem race conditions (concurrency bugs, filesystems)
- Using nmap (sockets, network protocols, firewall configuration)
- ARP poisoning (Ethernet)
- Insertion and evasion (TCP/IP, intrusion detection)
- Virus obfuscation (malware detection, string matching algorithms)
- Memory corruption and/or web app exploits (secure programming in C or other languages)
- Linear and/or differential cryptanalysis (probability theory, issues in symmetric cryptosystem design)