CIS 800/002, Fall 2013
Topics in Cryptography


Instructor:
  Nadia Heninger (nadiah at cis dot upenn.edu, 464 Levine GRW)

Lectures:
  Wednesday 3-6 pm, Towne 307


Course Overview

This course is a research seminar on selected topics in cryptography, both applied and theoretical. A tentative list of topics includes:

Grading will be based on class participation (10%), a paper presentation (30%), and a research project (60%).

Project Guidelines

For the research project, you should try to do something nontrivial but tractable. If you're more applied, an implementation or experiments are fine; if you're more theoretical, you can understand a difficult area or try to prove an extension of existing work. You will write a research report describing the papers you read, what you tried to do, and any results, in the format of a conference paper. 10-15 pages if you're working alone, 15-20 pages if you're working with a partner.

You should come talk to me for help identifying a suitable project.

Project reports are due December 11.


Tentative Schedule

The course schedule is highly tentative. Lecture notes are scans of the unpolished and sketchy notes I'm preparing to use in lecture.

Topic Readings Hands-on Exploration
8/28 Introduction; practical cryptography overview: stream ciphers, block ciphers, hash functions

Notes from lecture

Optional additional references:

When you visit a https web site, look at the connection and certificate information and make a note of what ciphers and key sizes are being used.

Try installing Wireshark, capturing some of your traffic, and inspecting a few cryptographic protocols (https, ssh, etc.).

9/4 Practical cryptography overview continued: message authentication codes, public-key cryptography, digital signatures

Notes from lecture

Optional additional references:
9/11 Guest lecture: Brett Hemenway on oblivious transfer and multiparty computation

Brett's slides

9/18 Factoring and discrete log algorithms

Notes from lecture

Optional further reading: Install CADO-NFS and try your hand at factoring some large numbers.
9/25 How is SSL broken? Let us count the ways: MD5, BEAST, RC4...

Notes from lecture

Hamidhasan's presentation notes

Hamidhasan's slides

Optional further reading: Use HashClash to construct your own MD5 collision.
10/2 Side-channel attacks

Notes from lecture

Optional further reading Use a memory extracting tool to dump the contents of your RAM to a file. Then browse through it to see what you can find. You can try the strings utility or the tools here.
10/9 Random number generation; entropy failures Take a look at OpenSSL's random number generation code. Take a look at the Linux random number generation code.
10/16 Introduction to lattices

Notes from lecture

Optional additional references: Install Sage and use it to explore lattices and lattice basis reduction algorithms.
10/23 Lattices and public-key cryptanalysis; Coppersmith's method

Notes from lecture

10/30 Lattice-based cryptography

Notes from lecture

11/6 Fully-homomorphic encryption

Notes from lecture

11/13 Polynomial lattices and error-correcting codes

Notes from lecture

11/20 Privacy-enhancing technologies Try using the Tor browser. Try using OTR.
11/27 No class; Thanksgiving schedule
12/4 Probably no class.

Additional Resources

No textbook is required, but if you would like additional resources the following may be useful: