Introduction
This book is an ongoing effort to gather some notes about cryptography with a focus on schemes which are relevant to the decentralized web such as multiparty signatures, zero-knowledge proofs, etc.
For now it consists of the following parts:
- Mathematics:
- Cryptography:
- Proof Systems:
- ZK Hack Puzzles Walk-through:
We assume that the reader has some basic knowledge of arithmetic and algebra and of common concepts from cryptography (hash functions, signatures, ...).
Here are a number of freely available textbooks to learn more (we will point to specific sections of them when needed):
- A Computational Introduction to Number Theory and Algebra by Victor Shoup
- the Boneh-Shoup cryptography textbook
- lecture notes for an advanced graduate cryptography course by Jonathan Katz
- The Joy of Cryptography by Mike Rosulek
- Mathematics of Public Key Cryptography by Steven Galbraith
- Least Authority's MoonMath manual
- Proofs, Arguments, and Zero-Knowledge by Justin Thaler
Mathematical Notation
- Given a set we let denote the set of strings of length over and the set of all strings, i.e., where denotes the singleton consisting of the empty string; the length of a string is denoted
- Given a non-empty finite set the sampling of a variable according to the uniform distribution is denoted
- Unless specified otherwise, groups are denoted additively.
- Main algebraic structures:
notation | algebraic structure |
---|---|
arbitrary group | |
arbitrary ring | |
integral domain | |
arbitrary field | |
natural numbers | |
integers | |
rational numbers | |
real numbers | |
complex numbers |
Note that all proofs throughout the book are collapsible:
Acknowledgments
This book is built with mdBook using the following preprocessors:
- mdBook-KaTeX
- mdbook-toc
- mdbook-footnote
- mdbook-mermaid
- mdbook-admonish
- mdbook-numthm
- mdbook-numeq
- mdbook-mathpunc
If you spot anything off, I'd be happy to get your feedback and acknowledge it here.