The schedule is tentative and subject to change (e.g., if we want to dig deeper into a specific topic).

Date Topic Readings Notes
08/24 Introduction
08/26 Introduction
Security Threats
2, 8, 28, 29 2, 28, and 29 are suggested
(May refer to them over time)
08/31 Security Threats 10, 26
09/02 Principles 1
09/07 Operating Systems 5 (Due) Project Team
09/09 Operating Systems 3, 4
09/14 Virtual Machines 19, 30
09/16 Trusted Hardware - Introduction 6 Sections 3 and 4
09/21 Trusted Hardware - TPMs 7, 11
09/23 Project Pre-Proposal Presentations
Trusted Hardware - TEEs (Intel SGX)
6 Sections [5, 5.4) and [5.6, 5.8]
09/28 Trusted Hardware - TEEs (Intel SGX) 6 Sections [5, 5.4) and [5.6, 5.8]
09/30 Trusted Hardware - TEEs (Intel SGX) 6 (Due) Project Proposal
10/05 No Class
10/07 Trusted Hardware - HW vs SW 12, 13
10/12 Trusted Hardware - TEE Abstractions 14
10/14 Trusted Hardware - Unmodified Apps 15, 16 (Due) Midterm Exam
10/19 Trusted Hardware - Untrusted Compute 17
10/21 Trusted Hardware - Applications 18, 20
10/26 Trusted Hardware - Applications 25
10/28 Memory Protections 27, 31 (Due) Project Status Report
#31 is optional
11/02 Runtime Protections 9, 24
11/04 Languages 23
11/09 Languages - Verification 21
11/11 Languages - Verification 22
11/16 Languages - Verification 5, 12 Revisiting papers
11/18 Project Presentations
11/23 Project Presentations (Due) Project Writeup

Reading List (From HotCRP)
# Paper
1The Protection of Information in Computer Systems
2How to Read a Paper
3Light-Weight Contexts: An OS Abstraction for Safety and Performance
4Efficiently Mitigating Transient Execution Attacks using the Unmapped Speculation Contract
5seL4: Formal Verification of an OS Kernel
6Intel SGX Explained
7Bootstrapping Trust in Commodity Computers
8The Security Mindset
9TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones
10Spectre Attacks: Exploiting Speculative Execution
11TrInc: Small Trusted Hardware for Large Distributed Systems
12Komodo: Using verification to disentangle secure-enclave hardware from software
13Sanctum: Minimal Hardware Extensions for Strong Software Isolation
14Keystone: An Open Framework for Architecting Trusted Execution Environments
15Graphene-SGX: A Practical Library OS for Unmodified Applications on SGX
16TrustShadow: Secure Execution of Unmodified Applications with ARM TrustZone
17Ryoan: A Distributed Sandbox for Untrusted Computation on Secret Data
18SeCloak: ARM Trustzone-based Mobile Peripheral Control
19Overshadow: A Virtualization-Based Approach to Retrofitting Protection in Commodity Operating Systems
20SchrodinText: Strong Protection of Sensitive Textual Content of Mobile Applications
21Dafny: An Automatic Program Verifier for Functional Correctness
22Noninterference specifications for secure systems
23RedLeaf: Isolation and Communication in a Safe Operating System
24Control-Flow Integrity Principles, Implementations, and Applications
25Ekiden: A Platform for Confidentiality-Preserving, Trustworthy, and Performant Smart Contracts
26The Matter of Heartbleed
27ERIM: Secure, Efficient In-process Isolation with Protection Keys (MPK)
28The Task of the Referee
29How (and How Not) to Write a Good Systems Paper
30Protecting Cloud Virtual Machines from Hypervisor and Host Operating System Exploits
31Mondrian Memory Protection