Fall 2015
Profs: | David Brumley and Vyas Sekar |
TAs: | Dominic Chen, Alison Kao, and Anita Zhang |
Where: | HH B103 |
When: | M/W 2:30pm-4:20pm |
Forum: | Piazza |
This course will introduce students to the fundamentals of computer security. We will focus on software security, applied cryptography, network security, OS security, and privacy. A recurring theme will be security definitions, what kinds of security vulnerabilities may arise, and how to spot and fix vulnerabilities.
David: Mon. 4:30-5:30, CIC 2202
Dominic: Tues. 2:30-3:30, CIC 2312
Anita: Thurs. 4:30-5:30, HH 1300 Wing
Alison: Fri. 2:00-3:00, GHC Citadel Commons
We shift total points with respect to the highest cumulative score achieved by a single student (not considering extra credit). In more detail, let the highest cumulative score by a student be highest, and the total possible points be max. Define delta = max - highest. If you have cumulative points z, then your score is calculated as z + delta, and your percentage as (z + delta)/max. We then translate a percentage into a letter grade as follows:
The total points possible are allocated as follows:
Note that there are three exams: we will drop your lowest exam score.
Late days interfere with the ability of course staff to quickly turn around assignment grades and solutions. The problem is we cannot give out solutions or graded assignments until everyone has turned in their work. Therefore, we only offer late days in emergency or exceptional circumstances, such as hospitalization. We do not offer late days for personal scheduling issues such as interviews, class load, etc.
The course staff will treat all students ethically and fairly. We, in turn, expect the same from all students.
Any lapse in ethical behavior will immediately result in −1,000,000 points, as well as be immediately reported to the appropriate university disciplinary unit. Really. No matter what. The course staff looks at students who cheat or plagiarize as far beneath someone who fails the course.
This course will follow CMU’s policy on cheating and plagiarism. Note that the policy gives several examples of what constitutes cheating and plagiarism. If you have any questions, you should contact the instructors.
Students should behave ethically. This means obeying the law, but that is not enough. Behaving ethically means you avoid activities that do harm or may do harm to people, the environment, or other computers. In short, don't be a nuisance.
Note just because you can do something (or you read about others doing it) does not make it ok. For example, scanning a network may not be illegal (I am not a lawyer, so I shy away from definitive statements). However, scanning can crash computers. For example, we know of several very popular commodity-grade IP cameras that crash when you scan them. Sure, the camera software is buggy. But is there any reason for you, not being a professional, to crash a camera monitoring a baby? Launching exploits, “testing” the security of a system without explicit permission from all necessary parties, and so on are all unethical for the purpose of this course.
Collaboration. Students are encouraged to talk to each other, to the course staff, or to anyone else about any of the assignments. Assistance should be limited to discussion of the problem and sketching general approaches to a solution. Each student must turn in his or her own solution, derived from his or her own thoughts. Course staff may verify a student did the prescribed work by asking for a verbal explanation, and failure to correctly re-explain a submitted solution is considered a strong indication of cheating.
31 Aug 2015 | dbrumley | 01-introduction.pptx
This lecture will give a high-level overview of the course, including topics covered, learning goals, and course mechanics.
Reading: On Trusting Trust
02 Sep 2015 | dbrumley | 02-compilation.pptx
This lecture will review the material up through Chapter 3 of CS:APP from 15-213. We will cover the parts of the compilation tool chain and operations at the assembly level, including control flow, the memory model, and stack frames.
Reading: Chapter 3 of Computer Systems: A Programmers Perspective Volume 2.
07 Sep 2015 | dbrumley
University holiday: labor day. Enjoy the day off!
09 Sep 2015 | vyas | 03-controlflow-attacks.pptx
In this lecture we will present control flow hijack attacks that gain control of the instruction pointer. We focus on buffer overflows and format string exploits.
Reading:
14 Sep 2015 | dbrumley
We will do an in-class activity where the goal is to think through vulnerable code and develop an exploit — all without the help of a computer.
16 Sep 2015 | vyas | 05-controlflow-defense.pptx
This lecture will focus on control flow hijack defenses found in practice today, including canaries, DEP, and randomization (ASLR). We will also discuss methods for bypassing these defenses.
Reading:
21 Sep 2015 | dbrumley
This lecture will talk about tools that help find vulnerabilities, including fuzzing, static analysis, and symbolic execution.
Reading:
23 Sep 2015 | dbrumley | 06-ROP.pptx
This lecture will cover Return Oriented Programming.
Reading: The Geometry of Innocent Flesh on the Bone: Return-into-libc without Calls (on the x86)
To learn more:
28 Sep 2015 | dbrumley | 07-CFI.pptx
Control Flow Integrity (CFI) is a security property that specifies real executions should follow the static CFG. We will explore CFI, focusing on what “the” CFG is.
Reading: Control Flow Integrity: Principles, Implementations, and Applications
To learn more:
30 Sep 2015 | dbrumley | 08-Software-Security-Review.pptx
This class will be a review period. We will provide approximately a 30 minute review, and then will open up the class for questions. Please think ahead of class what would be good questions; we are happy to answer anything. If there are no questions, it will be a short class.
05 Oct 2015
We will have the first exam of the course. It will cover all information covered to date. This will be a closed book, closed note, closed neighbor exam.
07 Oct 2015 | dbrumley | 09-crypto-intro.pptx
In this lecture we will provide a high-level introduction to cryptography, including an overview of primitives and security models.
Reading: Handbook of Applied Cryptography Chapter 1
To learn more: Watch the Coursera Course on Cryptography
12 Oct 2015 | vyas | 10-prf-prp-hash-prng.pptx
We will cover the principles of pseudorandom functions, permutations, and introduce the notion of adversarial games to prove security properties of cryptographic constructions.
14 Oct 2015 | dbrumley | 11-crypto-block-ciphers.pptx
We will cover the principle of secrecy (sometimes called privacy), stream ciphers, block ciphers, and block cipher modes.
19 Oct 2015 | vyas | 12-crypto-mac-authenc.pptx
This lecture will look at the property of integrity, and the crypto primitives hashes and macs. We will also cover basics of authenticated encryption, which is a commonly used operation.
21 Oct 2015 | dbrumley | 14-crypto-public-key.pptx
In this lecture we will cover the fundamentals of public key cryptography, focusing on RSA and Diffie-Hellman as examples. We will also provide an overview of all the primitives in action, using TLS as an example.
Reading:
26 Oct 2015 | vyas | 15-crypto-review.pptx
This will be a review session for all lectures on cryptography. Please think ahead of time what questions you may have.
28 Oct 2015 | vyas | 15-netsec-intro.pptx
This lecture will give a broad overview of network security.
Optional Reading:
02 Nov 2015
This is the second exam on the course. The exam is closed book, closed note, closed neighbor. Any material from class to date will be in scope, but the focus will be on cryptography.
04 Nov 2015 | vyas | 17-netsec-firewalls-ids.pptx
This lecture will discuss intrusion detection (and prevention) systems. We will cover design considerations in stateful vs stateless detection systems. Finally, we will cover some basic detection theory, focusing on the base rate fallacy.
Reading:
09 Nov 2015 | vyas | 18-routing-ddos.pptx
This lecture will cover BGP and DDoS.
Optional Readings:
Beware of BGP Attacks
11 Nov 2015 | vyas | 19-web-security-part1.pptx
This lecture will cover web security, including vulnerabilities such as injection attacks, XSS, and CSRF.
16 Nov 2015
We will have no class
18 Nov 2015 | vyas | 20-web-security-part2.pptx
This lecture will cover web security, including vulnerabilities such as injection attacks, XSS, and CSRF.
23 Nov 2015 | vyas | 21-system-security.pptx
This lecture will focus on OS security and the three “AU”’s: authentication, authorization, and audit.
Optional Readings:
25 Nov 2015
Today is a University holiday. Enjoy the day off!
30 Nov 2015 | ddchen | 19-f15-mobile-security.pptx
This lecture will discuss issues on mobile security.
30 Nov 2015 | vyas
This lecture will discuss issues on mobile security.
02 Dec 2015 | vyas | 22-course-review.pptx
We will have about a 30 minute review of all material in the third part of this class. The rest of the time will be devoted to questions and answers, so make sure you bring good questions.
07 Dec 2015
This will be our third and final exam. Like previous exams it will be closed book, closed note, closed neighbor. The exam will focus on the last third of the course, but any material over the entire semester is game.
09 Dec 2015 | dbrumley
We will have an end-of-course special topics session.
Assignment 1 | Due: September 23, 2015 |
Assignment 2 | Due: October 29, 2015 |
Assignment 3 | Due: November 24, 2015 |