# Cryptography I Summer 2016

Date:
Monday, June 13, 2016
Platform:

Cryptography is an indispensable tool for protecting information in computer systems. In this course you will learn the inner workings of cryptographic systems and how to correctly use them in real-world applications. The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. We will examine many deployed protocols and analyze mistakes in existing systems. The second half of the course discusses public-key techniques that let two parties generate a shared secret key. Throughout the course participants will be exposed to many exciting open problems in the field and work on fun (optional) programming projects. In a second course (Crypto II) we will cover more advanced cryptographic tasks such as zero-knowledge, privacy mechanisms, and other forms of encryption.

## Syllabus

### WEEK 1

Course overview and stream ciphers
Section 1: what is cryptography about?
Section 2: crash course in discrete probability
Stream Ciphers 1: the one-time pad and stream ciphers
Stream Ciphers 2: attacks and common mistakes
Stream Ciphers 3: real-world examples
Stream Ciphers 4: what is a secure cipher?
Week 1 Review Questions and Programming Project
Quiz: Week 1 - Problem Set

### WEEK 2

Block Ciphers
Block Ciphers 1: overview
Block Ciphers 2: The Data Encryption Standard
Block Ciphers 3: AES and other constructions
How to Use Block Ciphers 1: one-time key
How to Use Block Ciphers 2: many-time key
Week 2 Review Questions and Programming Project
Quiz: Week 2 - Problem Set

### WEEK 3

Message Integrity
Message Integrity 1: definitions
Message Integrity 2: constructions
Message Integrity 3: more constructions
Collision Resistance 1: what is a collision resistant function?
Collision Resistance 2: constructions
HMAC: a MAC from a hash function
Week 3 Review Questions and Programming Project
Quiz: Week 3 - Problem Set

#### WEEK 4

Authenticated Encryption
Authenticated Encryption 1: why is it so important?
Authenticated Encryption 2: standard constructions
Authenticated Encryption 3: pitfalls
Odds and Ends 1: how to derive keys
Odds and Ends 2: searching on encrypted data
Odds and Ends 3: disk encryption and creditcard encryption
Week 4 Review Questions and Programming Project
Quiz: Week 4 - Problem Set

#### WEEK 5

Basic Key Exchange
Basic Key Exchange 1: problem statement
Basic Key Exchange 2: two solutions
Number Theory 1: modular arithmetic
Number Theory 2: easy and hard problems
Week 5 Review Questions and Programming Project
Quiz: Week 5 - Problem Set

#### WEEK 6

Public-Key Encryption
Public Key Encryption from Trapdoor Permutations
Public Key Encryption from Trapdoor Permutations: RSA
Public Key Encryption from Trapdoor Permutations: attacks
Public Key Encryption From Diffie-Hellman: ElGamal
Public Key Encryption: summary
Week 6 Review Questions and Programming Project
Quiz: Week 6 - Problem Set

#### WEEK 7

Final exam
Final exam covering the entire course
Quiz: Final Exam

## Dan Boneh

### Professor of Computer Science, Stanford University

Professor Dan Boneh heads the applied cryptography group at the Computer Science department at Stanford University. Professor Boneh's research focuses on applications of cryptography to computer security. His work includes cryptosystems with novel properties, web security, security for mobile devices, digital copyright protection, and cryptanalysis. He is the author of over a hundred publications in the field and a recipient of the Packard Award, the Alfred P. Sloan Award, and the RSA award in mathematics. Last year Dr.