CS642 Fall 2011: Computer Security

Instructor: Thomas Ristenpart
Email: rist at cs dot wisc dot edu
Office hours: Thomas Ristenpart 3:45-4:45 Tues (7387 CS)
Office hours: Sanjib Das 3:45-4:45 Thurs (3393 CS)
Lectures: TR 2:30 - 3:45 pm
Location: 1207 Computer Science and Statistics
Final exam: 12/21/2011 10:05am - 12:05pm (1207 Computer Science and Statistics)



Computer security is the study of computing systems in the presence of adversaries. This course will introduce students to security across a range of areas, including operating systems, low-level software, networks, cryptography, and the web. We'll study the techniques attackers use to break into systems and networks as well as the defense mechanisms used by security engineers to combat threats in the real world. We will discuss ethics.


Students should have a reasonably good understanding of concepts from networking and operating systems. Familiarity with Intel assembly, C programming, the UNIX/Linux shell, one or more scripting languages (shell, python, perl, etc.) will be very helpful. Security is cross-cutting: understanding vulnerabilities and defenses against them will require diving deeply into perhaps unfamiliar topics. We'll try to cover in lecture the basic tools needed, but the ability to seek out and teach oneself will be requisite.


The class will consist of readings, homework assignments, a final, and (if you are a graduate student) a term project.

Collaboration policy:

Homework assignments may sometimes be completed individually or with one partner, and the assignment will clearly specify which. If it is the former, discussing the assignment with a classmate is prohibited. If it is the latter, discussing the assignment with a classmate beyond your partner is prohibited. Of course we encourage discussion of topics in the class, so use your judgement.

Searching for general information on security topics is encouraged, but finding solutions to homework problems is academic misconduct.

If you have found a security tool not discussed in class and want to use it to aid you in the assignments, please email me with a link to the tool, a short description of the tool, and what you intend to use it for.

When work is done with a partner, a single write up will be handed in. It is expected that both members be able to answer impromptu questions regarding all aspects of an assignment's solution.

Grading policies:

Assignments will be graded at some indeterminite and undisclosed time after the due date. You can turn in your assignment: If you feel that we have erred in our grading or you want to attempt to get a late assignment graded, then your task is now to convince me of this. In computer security this is referred to as "social engineering". You might approach me at office hours or after a lecture and make a case. You might also send a "phishing" email whose goal is to trick me into thinking your demands be met. For my part, I will feel free to ignore your attempts. Cleverness will be appreciated, wasting my time will not.

Tentative syllabus:

The expected lecture schedule is below. We undoubtedly will modify the schedule as the class progresses.

A lot (if not the bulk) of lecture material will be drawn from the indicated readings. The readings are a combination of academic papers, industry reports, presentation slides, surveys, RFCs, etc. The expectation is that you skim readings before lecture to at least familiarize yourself with the broad outlines of the topics, and read them in more detail later as you see fit. Being prepared to say something intelligent about (some) of the indicated readings at lecture will be an easy way to get your participation credit.

Texts that would be useful for the course are:
Dates and Areas Lecture topic and reading
Sep 6, 2011
Computer security, ethics, disclosure, security principles
Slides (PDF)
OS security basics
Sep 8, 2011
Access controls, capabilities, privilege levels, Biba and Bell-Lapadula Slides (PDF)
Low-level software security
Sep 13, 2011
Buffer overflows, format string vulnerabilities, integer overflows, heap overflows Slides (PDF)
Low-level software security
Sep 15, 2011
Tutorial for getting started on HW1. Starts at 2:45pm in the mumble lab.
Low-level software security
Sep 20, 2011
Fuzzing, reverse engineering, static analysis, dynamic analysis Slides (PDF)
Low-level software security
Sep 22, 2011
Memory protection mechanisms (e.g., StackGuard, StackGhost, W^X, etc.), address randomization, sandboxing, containment, host IDS Slides (PDF)
Sep 27, 2011
Lecture cancelled.
Sep 29, 2011
Guest lecture by Matt Fredrikson: rootkits, privacy, tracking on the web
Network security
Oct 4, 2011
ARP spoofing, 802.11, evil-twins, packet sniffing, man-in-the-middle Slides (PDF)
Network security
Oct 6, 2011
IP fragmentation attacks, UDP, TCP, Denial of service Slides (PDF)
Network security
Oct 11, 2011
Port scanning, host fingerprinting, stealth scans, IDS Slides (PDF)
Network security
Oct 13, 2011
BGP/S-BGP, DNS/DNSsec, Slides (PDF)
Network security
Oct 18, 2011
Guest lecture by David Parter
Network security
Oct 20, 2011
Guest lecture by David Parter
Oct 25, 2011
Overview of TLS (HTTPS), symmetric encryption, classical encryption, Shannon security, one-time pad encryption Slides (PDF)
Oct 27, 2011
TLS record layer, security goal, block ciphers, modes of operation, hash functions, HMAC Slides (PDF)
Nov 1, 2011
Public-key encryption, RSA basics, RSA key encapsulation, PKCS#1.5, Diffie-Hellman, Digital signatures, PKI
Slides (PDF)
Nov 3, 2011
RNGs, password-based cryptography, WPA and aircrack Slides (PDF)
Web security
Nov 8, 2011
Browser security, same origin, SQL injection, Slides (PDF)
Web security
Nov 10, 2011
Click-jacking, cross-site scripting, cross-site request forgery, Slides (PDF)
Privacy and anti-censorship
Nov 15, 2011
Onion routing, TOR, great firewall of China, deep packet inspection Slides (PDF)
Ethics, privacy, and policy
Nov 17, 2011
Guest lecture by Alan Rubel
Slides (PDF)
Hardware security
Nov 22, 2011
Guest lecture on hardware security by Chris Meyer and Anton Kapela
Nov 24, 2011 NO LECTURE (Thanksgiving)
Virtualization security
Nov 29, 2011
Virtualization security, reset vulnerabilities, VM introspection, covert channels Slides (PDF)
Cloud security
Dec 1, 2011
Public cloud risk models, cloud cartography, placement abuse, side channels Slides (PDF)
Dec 6, 2011
Spam, "crimeware", SEO, cloaking, traffic selling, phishing, credit-card fraud, cashing out
Dec 8, 2011
Empirical methods, measurement studies
Student presentations
Dec 13, 2011
Student presentations
Dec 15, 2011