Lecture Schedule

Date Subject Resources
Sept. 5th Week 1: Course intro. Security goals and principles, secret keys, brute force, bits of security
Sept. 10th and 12th Week 2: Thinking Securely. Classical ciphers, formal security notions, attack games
Sept. 17th and 19th Week 3: Encrypting data. Block ciphers, AES, cipher modes of operation, randomized encryption
Sept. 24th and 26th Week 4: Fingerprinting data. Random oracles, hash functions, the SHA family, birthday paradox, collisions, pre-image and second-preimage resistance
Oct. 1st and 3rd Week 5: Authenticating data. Message authentication, message authentications codes, authenticated encryption, AES-GCM
Oct. 8th and 10th Week 6: Bootstrapping a shared secret. Public-key cryptography, public-key agreement, Diffie-Hellman, forward secrecy
Oct. 15th and 17th Fall reading week. No lectures.
Monday, Oct. 21st Midterm. In-person during the tutorial session. Location TBA.
  • Midterm covers course material from Weeks 1-5 inclusive.
Oct. 22nd and 24th Week 7: Linking data to a public key. Digital signatures, forgeries, RSA signatures and padding
Oct. 29th and 31st Week 8: Linking a public key to an identity. Trust-on-first-use (SSH), Digital certificates, X.509
Nov 5th and 7th Week 9: Server authentication. Public-key infrastructure, certificate authorities, revocation, pinning, trust stores
Nov. 12th and 14th Week 10: Securing the Transport Layer. Transport Layer Security (TLS), TLS handshake, ciphersuites, HTTP over TLS (HTTPS).
Nov. 19th and 21st Week 11: Client authentication. Secure password generation and storage.
Nov. 26th and 28th Week 12: Special topic in cryptography. Pt. 1: The technology and design goals of Bitcoin. Pt. 2: Smart contracts.
Dec. 3rd Week 13: Course Review. Final lecture is Tuesday, Dec. 3rd (No lecture Thursday Dec. 5th)