Cryptography I - Symmetric Cryptography and Public Key Exchange

Welcome to the first Cyptography course: Symmetric Cryptography and Public Key Exchange. We will start from the basics, seeing what cryptography is and its many applications in real word. Then we will start analyzing the various topics of the course, which are divided in Weeks, because we think that every portion can be followed in a week of study and practise.

Lessons List

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

Message Integrity

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.

Authenticated Encryption

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.

Public-Key Encryption

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).

Final exam

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.