Cryptography is an indispensable tool used to protect information in computing systems. It is used everywhere and by billions of people worldwide on a daily basis. It is used to protect data at rest and data in motion. Cryptographic systems are an integral part of standard protocols, most notably the Transport Layer Security (TLS) protocol, making it relatively easy to incorporate strong encryption into a wide range of applications.
While extremely useful, cryptography is also highly brittle. The most secure cryptographic system can be rendered completely insecure by a single specification or programming error. No amount of unit testing will uncover a security vulnerability in a cryptosystem.
Instead, to argue that a cryptosystem is secure, we rely on mathematical modeling and proofs to show that a particular system satisfies the security properties attributed to it. We often need to introduce certain plausible assumptions to push our security arguments through.
This book is about exactly that: constructing practical cryptosystems for which we can argue security under plausible assumptions. The book covers many constructions for different tasks in cryptography. For each task we define a precise security goal that we aim to achieve and then present constructions that achieve the required goal. To analyze the constructions, we develop a unified framework for doing cryptographic proofs. A reader who masters this framework will be capable of applying it to new constructions that may not be covered in the book.
This open book is out of copyright. You can download A Graduate Course in Applied Cryptography ebook for free in PDF format (9.5 MB).
Table of Contents
Secret key cryptography
Chosen plaintext attacks
Message integrity from universal hashing
Message integrity from collision resistant hashing
Public key cryptography
Public key tools
Public key encryption
Chosen ciphertext secure public-key encryption
Fast signatures from one-way functions
Elliptic curve cryptography and pairings
Post-quantum cryptography: lattices and isogenies
Analysis of number theoretic assumptions
Protocols for identification and login
Identification and signatures from sigma protocols
Proving properties in zero-knowledge
Modern proof systems
Authenticated key exchange
Two-party and multi-party secure computation
Basic number theory
Basic probability theory
Basic complexity theory