Lectures
(Note this is a rough schedule and things are subject to change.)
-
Security Principles: Introduction, Ethics, and Course Overview
(Instructor: Parno)
|
[Guide]
This lecture will give a high-level overview of the course, including topics covered, learning goals, and course mechanics. We will also discuss ethical challenges associated with computer security. Optional Reading: -
Security Principles: Threat Models, Trusted Computing Bases, and Design Principles
(Instructor: Parno)
|
[Guide]
This lecture will present techniques to reason systematically about an attacker's capabilities and a system's security dependencies. We will also introduce some fundamental principles of secure system design that will be recurring themes throughout the course. Reading: Optional Reading: -
Software Security: Execution Semantics
(Instructor: Parno)
|
[Guide]
Attackers often exploit the conventions of normal program execution. To understand such exploits, we first must understand the normal conventions. This recitaiton will review the material up through Chapter 3 of CS:APP from 15-213. Consider reviewing the course notes linked below as well. 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. Optional Reading: -
University holiday: Labor day. Enjoy the day off!
: No Class
-
Software Security: Control-Flow Attacks
(Instructor: Parno)
|
[Guide]
|
[Notes]
In this lecture, we explore control-flow-hijacking attacks that gain control of the instruction pointer. We will review buffer overflows that you should have seen in previous classes, as well as introducing new attacks, such as format-string exploits. Optional Reading: -
Software Security: Recitation: Thinking Up Exploits - Part 1
(Instructor: Parno)
We will practice the skills needed to analyze an unknown binary, identify vulnerabilities, and exploit them. -
Software Security: Deployed Mitigations and Return Oriented Programming Attacks
(Instructor: Parno)
|
[Guide]
We will introduce control-flow hijack defenses found in practice today, including canaries, DEP, and randomization (ASLR). We will also discuss methods for bypassing these defenses. Finally, we review Return Oriented Programming attacks. Reading: Optional Reading: -
Software Security: Defenses: CFI and Type Safety
(Instructor: Parno)
|
[Guide]
This lecture will cover techniques to retrofit memory safety on legacy C code, with a focus on Control Flow Integrity (CFI). CFI is a security property that specifies real executions should follow the static CFG. We will explore CFI, focusing on what "the" CFG is. We will also introduce programming language techniques based on type safety that can eliminate entire classes of bugs. Reading: Optional Reading: -
Software Security: Recitation: Thinking Up Exploits - Part 2
(Instructor: Parno)
We will continue to practice the skills needed to analyze an unknown binary, identify vulnerabilities, and exploit them. -
Software Security: Type Systems and Verification
(Instructor: Parno)
|
[Guide]
We will cover programming language techniques that provably eliminate entire classes of vulnerabilities and even prove strong properties about software. Reading: -
Software Security: Verification and Dafny
(Instructor: Parno)
|
[Guide]
We will continue to cover principles of verifying software, and we will introduce Dafny, a program verification language (https://github.com/dafny-lang/dafny). Reading: -
Software Security: Recitation: Provably Correct Software
(Instructor: Parno)
We will practice using the Dafny program verification language (https://github.com/dafny-lang/dafny). -
Software Security: Code Analysis and Isolation Techniques
(Instructor: Parno)
|
[Guide]
This lecture will cover techniques to analyze code for memory vulnerabilities. To mitigate vulnerabilities we cannot or do not find, we will cover various system mechanisms for achieving isolation: sandboxing, Software Fault Isolation (SFI), program partitioning, and airgaps. Reading: Optional Reading: -
Crypto: Introduction to Cryptography
(Instructor: Parno)
|
[Guide]
|
[Notes]
In this lecture we will provide a high-level introduction to cryptography, including an overview of primitives and security models. We will touch on the rich power offered by modern cryptographic tools. Finally, we will discuss (in)secure sources of randomness. Reading: Optional Reading: -
Review: Software & Systems Security
(Instructor: Parno)
This slot will be a review period. We will provide approximately a 30 minute review, and then will open up the floor for questions. Please think ahead of time what would be good questions; we are happy to answer anything. If there are no questions, it will be a short meeting. -
Crypto: (Pseudo)Randomness
(Instructor: Parno)
|
[Guide]
|
[Notes]
We will cover the principles of pseudorandom functions, permutations, and introduce the notion of adversarial games to prove security properties of cryptographic constructions. Reading: -
Exam: Security Principles and Software Security
(Instructor: Parno)
We will have the first exam of the course. It will cover all information covered to date up to but not including cryptography. This will be a closed book, closed notes, closed neighbor exam. -
Crypto: Recitation: Proofs by Reduction
(Instructor: Parno)
We will discuss strategies for deciding if something is secure/insecure and for how to write a proof of security. Students will work in teams on practice problems. -
Crypto: Secrecy and Symmetric Key Ciphers
(Instructor: Parno)
|
[Guide]
|
[Notes]
We will cover definitions of computations secrecy and block ciphers. Reading: -
Crypto: Cipher Modes and Hashes
(Instructor: Parno)
|
[Guide]
We will cover block cipher modes and cryptographic hash functions. Reading: -
Crypto: Integrity and MACs
(Instructor: Parno)
|
[Guide]
|
[Notes]
This lecture will look at the property of integrity and how to achieve it using a Message Authentication Code (MAC). We will also cover basics of authenticated encryption, which is a commonly used operation. Reading: Optional Reading: -
Crypto: Public Key Cryptography
(Instructor: Parno)
|
[Guide]
|
[Notes]
In this lecture we will cover the fundamentals of public key cryptography, focusing on RSA and Diffie-Hellman as examples. Reading: Optional Reading: -
Crypto: Blockchains and Cryptocurrencies
(Instructor: Parno)
|
[Guide]
We will cover the basics of blockchains (what they are, what they are and are not good for), cryptocurrencies and, time permitting, smart contracts Reading: Optional Reading: -
Crypto: Recitation: Cryptocurrencies
(Instructor: Parno)
We will spend some virtual cash and write some smart contracts -
Systems Security: Trusted Computing
(Instructor: Parno)
|
[Guide]
This lecture will cover techniques for bootstrapping trust in systems. Reading: -
Systems Security: Authorization and Access Control
(Instructor: Parno)
|
[Guide]
This lecture will introduce the three "AU"’s; authentication, authorization, and audit. We will cover topics including classic and modern approaches to access control. Reading: Optional Reading: -
Review: Crypto
(Instructor: Parno)
This will be a review session for all lectures on cryptography. Please think ahead of time what questions you may have. -
Network Security: Introduction to Network Security
(Instructor: Parno)
|
[Guide]
This lecture will give a broad overview of network security, including general principles, denial-of-service attacks, and intrusion detection (and prevention) systems. The latter will cover some basic detection theory, focusing on the base rate fallacy. Reading: Optional Reading: -
Exam: Crypto
(Instructor: Parno)
We will have the second exam of the course. It will cover all information covered to date, but it will focus on Crypto. This will be a closed book, closed note, closed neighbor exam. -
Community Engagement Day
: No Recitation
-
Network Security: Protocol Design and Analysis
(Instructor: Parno)
|
[Guide]
This lecture will cover design principles for secure protocols, common failures and defenses, and tools for analyzing protocol security. TLS will be used as a detailed case study. Reading: Optional Reading: -
Web Security: Attacks
(Instructor: Parno)
|
[Guide]
This lecture will cover web security, including vulnerabilities such as injection attacks, XSS, and CSRF. Reading: Optional Reading: -
Web Security: Recitation: Web Hacking
(Instructor: Parno)
-
Web Security: Defenses
(Instructor: Parno)
|
[Guide]
This lecture will cover web security with a focus on principles, such as authentication vs. authorization, and best practices for establishing security on the web. Optional Reading: -
Human Factors: Making Security Usable
(Instructor: Parno)
|
[Guide]
The most secure system in the world can be subverted if users can't employ it correctly (or if they themselves are subverted!). This lecture will cover usable design, with case studies drawn from security warnings, authentication, and phishing. We will also cover attacks and defenses based on social engineering. Reading: Optional Reading: -
Research: Recitation: State-of-the-Art Security Research
(Instructor: Parno)
-
Human Factors: Privacy
(Instructor: Parno)
|
[Guide]
This lecture will cover general concepts and various mathematical definitions of privacy as well as how to achive them. Reading: Optional Reading: -
Thanksgiving! Enjoy the break!
: No Class
-
Thanksgiving! Enjoy the break!
: No Recitation
-
Human Factors: Law and Public Policy
(Instructor: Parno)
|
[Guide]
This lecture will cover legal frameworks and policies that govern security and privacy in practice. Reading: -
Human Factors: Economics
(Instructor: Parno)
|
[Guide]
Many attackers are economically rational. Can we leverage this observation when designing our defenses? Many users are economically rational. What impact does that have on how we design our defenses? Reading: Optional Reading: -
Review: Systems (OS, Web, Network), and Human Factors
(Instructor: Parno)
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. -
Exam: Final Exam
(Instructor: Parno)
This will be our third and final exam. The exact date will be determined by the registrar. 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.