*The Joy of Cryptography* is a textbook that I've been writing for CS427, my undergraduate course in cryptography.

## What's so special about it?

It's free and will always be free (Creative Commons license)! It is supported by the Oregon State University open textbook initiative.

The pedagogical approach is anchored in formal definitions/proof of security, but in a way that I believe is more accessible than what is "traditional" in crypto. All security definitions are written in a unified and simplified "game-based" style. For an example of what security definitions look like in this style, see the index of security definitions (which will make more sense after reading chapters 2 & 4). For example proofs of security in this style, see the supplementary material below.

It contains over 120 exercises.

## Disclaimers:

Everything here is in draft form. This will become evident as you read through the text. Still, I've been successful using the text as the primary reference in an actual course.

My course CS427 is only a 10-week course. For that reason, much important material is still missing from the text!

"*The Joy of Cryptography*" is a silly title, but all the sensible titles were already taken. It was at least better than "*You Can't Spell Cryptography without Cry*". Anyway, __actual joy not guaranteed.__

# Contents

**Download the current draft** (PDF, Jan 3, 2017)

Current table of contents (links are for PDFs of individual chapters):

- Foreword
- Review of Concepts & Notation
- One-Time Pad
- Syntax & Correctness for Encryption
- One-Time Pad
- Properties

- The Basics of Provable Security
- Reasoning about Information Hiding via Code Libraries
- One-time Secrecy for Encryption
- Hybrid Proofs of Security
- Demonstrating Insecurity with Attacks

- Secret Sharing
- Definitions
- A Simple 2-out-of-2 Scheme
- Polynomial Interpolation
- Shamir Secret Sharing
- Visual Secret Sharing

- Basing Cryptography on Limits of Computation
- Polynomial-Time Computation
- Negligible Probabilities
- Indistinguishability
- Sampling with Replacement & the Birthday Bound

- Pseudorandom Generators
- Definition
- Application: Shorter Keys in One-Time-Secret Encryption
- Taking the Contrapositive Point-of-View
- Extending the Stretch of a PRG

- Pseudorandom Functions
- Definition
- Attacking Insecure PRFs
- A Theoretical Construction of a PRF from a PRG

- Pseudorandom Permutations
- Definitions
- Switching Lemma
- Feistel Ciphers
- Strong Pseudorandom Permutations

- Security against Chosen Plaintext Attacks
- Implications of CPA Security
- Pseudorandom Ciphertexts
- CPA-Secure Encryption from PRFs

- Block Cipher Modes of Operation
- Common Modes
- CPA Security for Variable-Length Plaintexts
- Security of OFB Mode
- Padding & Ciphertext Stealing

- Chosen Ciphertext Attacks
- Padding Oracle Attacks
- What Went Wrong?
- Defining CCA Security
- CCA Insecurity of Block Cipher Modes
- A Simple CCA-Secure Scheme

- Message Authentication Codes
- Security Definition
- A PRF is a MAC
- CBC-MAC
- Encrypt-Then-MAC

- Hash Functions
- Defining Security
- Hash-Then-MAC
- Merkle-Damgård Construction
- Length-Extension Attacks

- The RSA Function
- Modular Arithmetic & Number Theory
- The RSA Function
- Chinese Remainder Theorem
- The Hardness of Factoring
*N* - Malleability of RSA, and Applications

- Diffie-Hellman Key Agreement
- Cyclic Groups
- Diffie-Hellman Key Agreement
- Decisional Diffie-Hellman Problem

- Public-Key Encryption
- Security Definitions
- One-Time Security Implies Many-Time Security
- ElGamal Encryption
- Hybrid Encryption

- Index of security definitions

# Supplementary Material

I have also provided some slide decks that visually illustrate the steps of some hybrid proofs from the text:- One-time secrecy of one-time pad (§2.2)
- Security of additive 2-out-of-2 secret sharing (§3.2)
- One-time secrecy of "pseudo-one-time pad" (§5.3)
- Security of extending a PRG's stretch via a feedback construction (§5.5)
- CPA security of the classical PRF-based encryption scheme (§8.3)
- CCA security of encrypt-then-MAC (§11.4)
- CPA security public-key hybrid encryption (§15.4)

# Other

For a **second opinion**, you might want to check out these other excellent references. They are also the reason I had to choose a silly name for mine -- all the good names were taken.

- A Course in Cryptography, Rafael Pass & abhi shelat (free)
- Cryptography, An Introduction, Nigel Smart (free)
- Introduction to Modern Cryptography, Jonathan Katz & Yehuda Lindell
- Introduction to Modern Cryptography, Mihir Bellare & Phil Rogaway (free)