Spring 2016
121 Brogden Psychology Building
MW 2:30-3:45pm
Piazza discussion board for this course.
Code and instructions for the demos from the software vulnerability lecture (Feb 1) are available on GitHub.
In-class crypto worksheet.
Final exam study guide key.
Final exam answers.
This is a senior-level undergraduate course in computer security: the study of computing systems in the presence of adversaries. This course introduces students to security across a range of areas including operating systems, low-level software, networks, cryptography, and the web. We'll study techniques attackers use to break into computer systems and networks as well as defense mechanisms used to combat real-world threats.
Security cuts across many aspects of computer science. Students should have a reasonably good understanding of concepts from networks and operating systems. Familiarity with Intel assembly, C programming, a Unix shell, and a scripting language (like shell or python) will be very helpful.
I intend this course to be challenging. Understanding vulnerabilities and defenses requires diving deeply into topics. Some areas may be unfamiliar. I will try to cover basics in lecture, but the ability to seek out and understand topics is required.
We will have 4 or more assignments throughout the semester. Class participation will be based on in-class discussion. Feel free to bring laptops to class.
Date: May 8, 2016, 7:25-8:25pm
Location: Mechanical Engineering 1106
ADAM EVERSPAUGH (ace at cs dot wisc dot edu)
Office: Computer Sciences office 7378
Office hours: Fridays, 2:30-3:30p, or by appointment
TEJASWI AGARWAL (agarwalt at cs dot wisc dot edu)
ARJUN SINGHVI (asinghvi at cs dot wisc dot edu)
Office: Computer Sciences office 1301
Office hours: Tuesdays, 2-3p
Expected lecture schedule is below. The schedule will be adjusted as the course continues.
Skimming the reading materials before lecture to understand the context and main points will be very useful. Being prepared to ask intelligent questions about the readings is an easy way to get participation credit.
Date | Topic | Details |
---|---|---|
January 20 | Introduction |
Course overview, computer security, ethics, security principles. Slides: [pdf] Further reading:
|
January 25 | OS Security |
Access control, capabilities, privilege levels, Unix permissions. Slides: [pdf] Further reading:
|
January 27 | x86 Review |
Lecture by Drew Davidson |
February 1 | Low-level Software Security |
Buffer overflows, format string vulnerabilities, integer overflows, heap overflows. Slides: [pdf] Further reading:
|
February 3 | Finding Security Vulnerabilities |
Fuzzing, reverse engineering, static analysis, and dynamic analysis. Slides: [pdf] Further reading:
|
February 8 | Memory Protection Mechanisms |
Data execution prevention, address space layout randomization, stack protector, sandboxing, and containment. Slides: [pdf] Further reading:
|
February 10 | Web Security |
Browser security, same origin policy, cookies. Slides: [pdf] Further reading:
|
February 15 | Web Security |
Cookies, session hijacking. Slides: [pdf] Further reading:
|
February 17 | Class Canceled |
No class |
February 22 | Web Security |
Cross-site scripting, cross-site request forgery, SQL injection. Slides: [pdf] |
February 24 | Cryptography Intro |
Intro to crypto, symmetric/assymetric encryption, MACs, digital signatures, key exchange, TLS. Slides: [pdf] Further reading:
|
February 29 | Symmetric Cryptography |
Provable security, Shannon security, one-time pad encryption, block ciphers, modes of operations Slides: [pdf] Further reading:
|
March 2 | Symmetric Cryptography |
Symmetric encryption continued: hash functions, HMAC. Slides: [pdf] |
March 4 | Midterm Review Session |
Review selected topics before midterm exam. |
March 7 | Midterm Exam |
In-class midterm |
March 9 | Public Key Cryptography |
HMAC, authenticated encryption, public key encryption, digital signatures, certificates, hybrid encryption. |
March 14 | Passwords |
Password-based cryptography, password based key derivation Slides: [pdf] Further reading:
|
March 16 | Network Security |
ARP Spoofing, 802.11, evil-twins, packet sniffing, man-in-the-middle attacks. Slides: [pdf] Further reading:
|
March 21 | Spring Break |
No class |
March 23 | Spring Break |
No class |
March 28 | Network Security |
IP fragmentation attacks, UDP, TCP, denial of service. Slides: [pdf] Further reading:
|
March 30 | DNS Security |
Domain names system (DNS) Slides: [pdf] Further reading:
|
April 11 | Network Scanning and Detection |
Border gateway protocol, route-hijacking, port scanning, host fingerprinting, stealth scans, intrusion detection systems. Slides: [pdf] Further reading:
|
April 13 | Privacy, Censorship, and Surveillance |
Mass surveillance, Anonymous browsing, The Onion Router (TOR), deep packet inspection. Further reading:
|
April 18 | Virtualization Security |
Virtual machines, reset vulnerabilities, VM introspection, covert channels. Slides: [pdf] Further reading:
|
April 20 | Cloud Computing |
Public cloud risk models, cloud cartography, VM placement gaming, side channels. Slides: [pdf] Further reading:
|
April 25 | Botnets |
Malware ecosystem, botnets, command and control, domain flux C&C, sinkholing. Slides: [pdf] Further reading:
|
April 27 | Botnets |
Malware ecosystem, botnets, command and control, domain flux C&C, sinkholing. |
May 2 | Bitcoin |
Basic mechanism underlying Bitcoin, proof-of-work, blockchain, privacy implications. Further reading:
|
May 4 | Android Security |
Guest lecture: Drew Davidson Slides: [pdf] Further reading:
|
May 6 | Final Exam Review Session |
Review selected topics in preparation for the final exam. |