Skip to content
Skip to navigation
# Cryptography I Summer 2016

Go to Course## About this course

## Syllabus

### WEEK 1

### WEEK 2

### WEEK 3

#### WEEK 4

#### WEEK 5

#### WEEK 6

#### WEEK 7

Date:

Monday, June 13, 2016

Course topic:

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.

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

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

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

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

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

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

Final exam

Final exam covering the entire course

Quiz: Final Exam

Instructor(s):

Dan Boneh