Part I: Cryptographic Foundations

Course overview: How to think like an attacker.

Reading: Reflections on Trusting trust

Symmetric-Key Cryptography

Key exchange, Public-key cryptography

Crypto pitfalls: how and why crypto fails in practice

Supplemental reading:

Security analysis of voting machines: http://avirubin.com/vote.pdf
Crypto implementation pitfalls: http://cseweb.ucsd.edu/~mihir/cse107/yoshi.pdf
Crypto misuse in Android apps: http://www.cs.ucsb.edu/~chris/research/doc/ccs13_cryptolint.pdf


Part II: Systems Security

Buffer Overflow

Reading: Smashing the stack for fun and profit

Format String Vulnerability

Reading: Return-Oriented Programming:Systems, Languages, and Applications

Access Control

Information flow

Isolation

Side channel attack

Trusted computing, code attestation

Internet Security: How the internet works and some basic vulnerabilities



Part III: Web Security

Integer Overflow & SQL Injection

Cross-domain security issues

HTTPS



Part IV: Privacy, Case Studies, Misc

Web Accessibility