Course overview and stream ciphers
An overview of what cryptography is about as well as our first example ciphers. You will learn about pseudo-randomness and how to use it for encryption. We will also look at a few basic definitions of secure encryption.
Week 1 - Block Ciphers
An introduction of new primitive called a block cipher that will let us build more powerful forms of encryption. We will look at a few classic block-cipher constructions (AES and 3DES) and see how to use them for encryption.
Section 1: what is cryptography about?
Section 2: crash course in discrete probability
Section 3: one-time-pad and stream cipher
A number of classic constructions for MAC systems that are used to ensure data integrity. For now we only discuss how to prevent modification of non-secret data.
Encryption methods that ensure both confidentiality and integrity. We will also discuss a few odds and ends such as how to search on encrypted data. This is our last week studying symmetric encryption.
Basic Key Exchange
How to setup a secret key between two parties. For now we only consider protocols secure against eavesdropping. This question motivates the main concepts of public key cryptography, but before we build public-key systems we need to take a brief detour and cover a few basic concepts from computational number theory. We will start with algorithms dating back to antiquity (Euclid) and work our way up to Fermat, Euler, and Legendre. We will also mention in passing a few useful concepts from 20th century math.
How to encrypt using a public key and decrypt using a secret key. The lessons will cover two families of public key encryption systems: one based on trapdoor functions (RSA in particular) and the other based on the Diffie-Hellman protocol. We construct systems that are secure against tampering, also known as chosen ciphertext security (CCA security).
At the end of the course there will be an "exam" that will let you check your learning progress regarding all the course topics.
Boneh, Dan. Cryptography I. Course at Standford University, 2016.
Kahn, David. The codebreakers. Weidenfeld and Nicolson, 1974.
WikiBooks. High School Mathematics Extensions/Discrete Probability.