# Cryptography Resources

## Introduction

The following is my curated list of Cryptography Resources that I found useful while studying the subject and its application. This list is actively maintained and will be extended and updated regularly.

## Books

### Real-World Cryptography

Real-World Cryptography by David Wong is the best book to get started with your learning journey.

It’s especially useful if you have zero knowledge (pun intended) about anything Cryptography related and want to learn all the concepts, algorithm and protocols from scratch in an easy to digest manner without getting overwhelmed by advanced mathematics and notation-heavy security proofs.

Real-World Cryptography teaches you everything you need to know about Cryptography primitives, protocols as well as advanced topics such as Post-Quantum Cryptography, Hardware Cryptography and Blockchains among other things.

### Serious Cryptography

In Serious Cryptography, Jean-Philippe Aumasson teaches you everything there is to know about core Cryptography primitives as well as protocols such as TLS which is used to secure web traffic.

Every chapter follows the same structure while also making sure that common pitfalls and implementation mistakes are discussed.

Serious Cryptography strikes the right balance between “still easy to read” while also not shying away from the necessary mathematics to explain how and why the design being discussed is secure.

### Understanding Cryptography

Understanding Cryptography by Christof Paar and Jan Pelzl is a textbook that focuses on “Students and Practitioners”. This book is used in different university courses, one of which was recorded and published alongside the book on its website.

Understanding Cryptography articulates the ideas and inner workings of Cryptographic primitives and protocols very clearly while also introducing the mathematical background as needed in a very approachable way.

Chapters conclude with a list of “Lesson’s Learned” and Exercises. If you’re working through this book make sure to check the Solution Manual on the website.

### Introduction to Modern Cryptography

Introduction to Modern Cryptography by Jonathan Katz and Yehuda Lindell is a classic Cryptography textbook that’s used in many universities across the globe.

Reading through this book requires some mathematical maturity and grit as topics are presented and examined with a focus on security proofs.

Don’t shy away from diving in as (slowly) working your way through this book will teach you a lot about modern Cryptography.

Cryptography Made Simple by Nigel Smart is a rework of his earlier book “Cryptography: An Introduction” that was used in classrooms to teach students Cryptographic concepts.

The book covers a wide range of topics including more advanced and exotic constructions such as Lattice-Based Cryptography (Learning With Errors) or Zero-Knowledge Proofs.

While the title says “simple” I’d say that reading the book definitely requires some knowledge in advanced mathematics (the preface talks more about the prerequisites).

What I personally really like about the book is the usage of colors and diagrams to convey how a primitive / protocol is used and why an attacker won’t be able to exploit it.

### An Introduction to Mathematical Cryptography

As the name implies, An Introduction to Mathematical Cryptography by Jeffrey Hoffstein, Jill Pipher and Joseph Silverman is a math-heavy textbook that solely focuses on Asymmetric Cryptography.

The target audience for this book is clearly knowledgeable in advanced mathematics, however the clear writing style makes it exceptionally accessible for anyone interested and willing to spend some time with the text.

The authors are well-known cryptographers who invented the NTRUEncrypt and NTUSign cryptosystems. NTRU and Lattice-Based Cryptography in general is explained in detail in this book as well.

### A Graduate Course in Applied Cryptography

The freely available A Graduate Course in Applied Cryptography by Dan Boneh and Victor Shoup is one of the most ambitious Cryptography books out there as it covers a wide range of topics including advanced concepts such as Zero-Knowledge Proofs, Threshold Cryptography and Post Quantum Cryptography among other things.

While its focus is on the applied side of Cryptography, the book itself requires some level of mathematical maturity as it discusses topics with an emphasis on theorems and proofs.

Every chapter ends with exercises one can work through to solidify the acquired knowledge.

### The Joy of Cryptography

The Joy of Cryptography by Mike Rosulek is a freely available book that teaches Cryptography concepts using a “Code-Based Games” approach (see the following papers for more information) which is a definition- and proof style that focuses on ease of understanding.

Throughout the book a lot of diagrams are used to show constructions and convey ideas. Every chapter concludes with exercises (and sometimes hints) one can work through.

The relaxed writing style of this book makes it a joy to read indeed. One of my favorite quotes from the book is:

In particular, never ever write $(x^{a})(x^{b}) = x^{ab}$. If you write this, your cryptography instructor will realize that life is too short, immediately resign from teaching, and join a traveling circus.

### An Intense Introduction to Cryptography

An Intense Introduction to Cryptography by Boaz Barak is a freely available collection of Barak’s lecture notes for a course on Cryptography he teaches at Harvard.

Reading through these notes you’ll learn everything there is to know about modern Cryptography basics as well as advanced topics such as Zero-Knowledge Proofs and Fully Homomorphic Encryption (among other things).

Chapters sometimes have a “Pause and think” section that encourages the reader to test their understanding. Some chapters also include (solved) exercises and additional reading material.

## Courses

### Cryptography I

The course Cryptography I by Dan Boneh is a well known online class hundreds of thousands of students enrolled in since it’s inception.

Although this class might look “dated” to some, it’s one of the best introductions to the theoretical side of Cryptography.

### Cryptography

Cryptography by Jonathan Katz is another great university-level online class that introduces the student to the theoretical analysis of Cryptographic primitives and protocols.

### Applied Cryptography

The class Applied Cryptography by Dave Evans is a great introductory course to Cryptography that strikes a good balance between theory and applicability.

Most of the videos you’ll watch end with short quizzes to test your understanding.

The content in this course covers a lot of topics ranging from Symmetric- to Asymmetric Cryptography while also educating the student about widely deployed Protocols as well as Blockchains.

## Websites

### Cryptopals

One of the best ways to learn how ciphers work is to figure out how to break them!

This is what Cryptopals is all about. Visiting their website you’ll see various challenges in which an imaginary pen pal instructs you to break ciphers and their (wrong) usage.

If you ever get stuck you can just Google around to find most of the solutions, however it’s much more educational and fun to struggle through the problems yourself without any help.

### CryptoHack

CryptoHack is a platform that helps you learn modern Cryptography by breaking bad implementations of well-known primitives and protocols such as AES, RSA or TLS.

Learning can take place by either doing individual challenges or taking one of the existing courses that teach you everything you need to know step-by-step. There are also Capture the Flag tournaments you can participate in.

The CryptoHack team created a Docker container you can use that allows for frictionless onboarding.

### An Overview of Cryptography

The website An Overview of Cryptography by Gary Kessler is a single-page documentation that features a lot of interesting topics from the world of Cryptography and its applications.

On the page a lot of ground is covered as the content ranges from Password Protection to AES to Quantum Cryptography.

Though the content was initially published as a paper it’s now considered a “living document” and gets updated regularly.

## Blogs

### Schneier on Security

Bruce Schneier is a well known Cryptography and Cybersecurity researcher.

His blog Schneier on Security on which he regularly publishes news commentary and research posts is a must read for anyone who wants to stay up-to-date with all the developments in the field.

His legendary “Friday Squid Blogging” posts in which he discusses their various life aspects make for a good excuse to learn about something other than Cryptography and Cybersecurity.

### Krebs on Security

Krebs on Security by Brian Krebs is a blog focused on Cybersecurity News as well as Investigative journalism of security breaches and incidents.

Following his blog ensures that you’ll get updates on the broader Cybersecurity and Data Privacy landscape.

### Cryptologie

David Wong’s Cryptologie blog is a great resource to stay up-to-date with up-and-coming topics discussed in the Cryptography community.

Given that David worked in the Blockchain space for a while (he worked at Facebook on Libra / Diem as well as at O(1) labs), a lot of material covers topics such as Zero-Knowledge Proofs, zkVMs and zkApps.

While following his blog you should also make sure to subscribe to his list of bookmarked links he updates regularly.

### A Few Thoughts on Cryptographic Engineering

Matthew Green is a cryptographer and professor at the Johns Hopkins University in Baltimore, Maryland.

On his blog A Few Thoughts on Cryptographic Engineering he shares long-form posts on everything related to the functioning and analysis of cryptographic primitives and protocols.

Given his research background he oftentimes covers upcoming, more advanced cryptographic constructions before they “hit the mainstream” discussion.

### The cr.yp.to blog

Daniel J. Bernstein’s The cr.yp.to blog is a must read for everyone who is interested in the theoretical side of Cryptography. A lot of his posts discuss cryptographic primitives and protocols while also analyzing their security (or lack thereof).

You should also check out his microblog which lists Daniel’s posts from various microblogging platforms such as Mastodon.

Daniel also regularly analyzes standardization candidates (or existing standards) for Cryptography to be used in the industry with an emphasis on important weaknesses that might render usage of such insecure.

Daniel created the ChaCha20 stream cipher, Poly1305 MAC and constructed Curve2559 which is used for signatures (via ed25519 or edDSA) as well as key exchange (via x25519) as a response to prior constructions that were developed behind closed doors with (sometimes questionable) parameter selection.

### Dhole Moments

Soatok’s Dhole Moments is a blog that covers everything related to information security and Cryptography with a strong focus on its usage to solve real-world problems.

Browsing through the posts you’ll not only learn how primitives and protocols work from a theoretical point-of-view, but also what to watch out for when using them in software solutions.

### Filippo Valsorda’s Blog

Filippo Valsorda’s personal blog is a great way to stay in touch with the most recent developments in the Cryptographic ecosystem.

On his blog he not only explains important topics every cryptographer stumbles upon at some point (e.g. the “ECB Penguin” or the “Bleichenbacher Attack”) but also discusses current events and explores new cryptographic constructions.

### Lúcás Meier’s Blog

Lúcás Meier’s personal blog has a variety of great posts on the theory as well as the implementation of Cryptographic primitives and protocols.

His posts strike a great balance between theoretical correctness while also explaining the main ideas in a way that’s easy to follow and understand for novices.

Lúcás also implemented different cryptosystems himself, so you’ll also find posts that summarize his lessons learned while doing so (e.g. how to prevent side-channel attacks, how to implement Arbitrary-precision arithmetic, etc.).

### The Cryptography Caffè

The Cryptography Caffè is the engineering tech blog by SandboxAQ.

While you’ll also learn about more traditional topics such as the Number Theoretic Transform (NTT) while reading through their posts, you’ll also find discussions about advanced cryptography such as Fully Homomorphic Encryption or Post Quantum Cryptography.

### Ellipticnews

As the name implies, Ellipticnews is a blog dedicated to everything related to Elliptic Curve Cryptography.

Their posts cover everything from the basics of Elliptic Curve Cryptography to recommended books and papers to news such as the successful attack on Supersingular Isogeny Diffie-Hellman Key Exchange (SIDH).

### Security Pitfalls

Security Pitfalls by Hubert Kario covers topics at the intersection of Cryptography and security.

Browsing through his posts you’ll find interesting reads on side-channel attacks as well as implementations of algorithms in constant-time.

## Elliptic Curves

The book Roll your own crypto* by Anirudha Bose is a step-by-step guide that teaches you everything you need to know about Elliptic Curve Cryptography to implement it yourself in Python.

Once you read through it, you’ll have a working implementation of ECDSA so that you can create valid signatures through a CLI tool using only code you wrote.

It also covers some important aspects to ensure that ECDSA is implemented in a secure way with some trivia about the infamous Playstation 3 Hack that exploited nonce reuse.

### The Animated Elliptic Curve

The Animated Elliptic Curve by Michael Driscoll is a great, interactive tutorial that explains step-by-step how Elliptic Curve Cryptography works.

You might want to take out a sheet of paper and work through the math examples while reading along.

### Hands-on: X25519 Key Exchange

Hands-on: X25519 Key Exchange by Michael Driscoll is an interactive tutorial that teaches you how Elliptic Curve Diffie-Hellman works and how it can be implemented on top of Curve25519 as x25519.

I’d recommend that you read through his other, interactive tutorial on Elliptic Curves called The Animated Elliptic Curve first in order to better understand how Elliptic Curves can be used for key agreement.

### Elliptic Curve Cryptography Blog Post Series

This four part blog post series on Elliptic Curve Cryptography by Andrea Corbellini is one of the best ways to get introduced to Elliptic Curves, their underlying math as well as the steps one needs to take to implement them in Python.

The series features a lot of interactive diagrams, formulas and code snippets that’ll help you write your own implementation of ECDSA and ECDH in Python.

Andrea also worked on visual tools so you can explore Elliptic Curve point addition and multiplications in $\mathbb{R}$ and $\mathbb{F}_p$.

### Implementing Curve25519/X25519

The paper Implementing Curve25519/X25519 by Martin Kleppmann is an in-depth guide that explains Curve25519 as well as the Elliptic Curve Diffie-Hellman (ECDH) implementation on such called x25519.

Reading through it you’ll not only learn the mathematics and security assumptions Curve25519 / x25519 is based on but also see how it’s implemented through code snippets that can be found in the TweetNaCL implementation.

When reading through the math sections, I’d highly recommend to sharpen your pencil and work out the math yourself. That way you’ll get the most mileage out of this phenomenal writeup.

### Guide to Elliptic Curve Cryptography

Guide to Elliptic Curve Cryptography by Darrel Hankerson, Alfred Menezes and Scott Vanstone is a great read that summarizes everything there is to know about Elliptic Curve Cryptography and how to implement it.

This book has some of the best mathematical as well as algorithmic descriptions that’ll help you throughout your implementation journey.

### Handbook of Elliptic and Hyperelliptic Curve Cryptography

The Handbook of Elliptic and Hyperelliptic Curve Cryptography by Henri Cohen and Gerhard Frey is another great resources that shouldn’t be missing on any implementer’s bookshelf.

This reference includes a list with all the algorithms necessary to “roll your own [elliptic curve] crypto”. Examples that follow the detailed descriptions allow the reader to check their understanding and can furthermore be used as test cases one can implement against.

### Hyperelliptic

Hyperelliptic is a great resources if you’re looking for a database of formulas used in Elliptic Curve Cryptography.

The Explicit-Formulas Database is a joint effort by Daniel J. Bernstein and Tanja Lange to gather all the useful formulas for various curves such as the one’s written in the Short Weierstrass notation.

## Zero Knowledge Proofs

### The RareSkills Book of Zero Knowledge

The RareSkills Book of Zero Knowledge is a programmer-friendly introduction to the world of Zero-Knowledge proofs.

Working through it, you’ll learn the mathematical foundations while slowly ramping up your skills to be able to implement a Groth16-based zk-SNARK prover and verifier from scratch.

### Why and How zk-SNARK Works: Definitive Explanation

The paper Why and How zk-SNARK Works: Definitive Explanation by Maksym Petkus is one of the best resources to learn the basics of Zero-Knowledge Proofs and zk-SNARKs.

While some exposure to mathematics makes reading it easier, the paper focuses on an audience that isn’t too familiar with advanced mathematical concepts.

### ZK Whiteboard Sessions

The ZK Whiteboard Sessions by ZK Hack is an educational video series that covers the basics as well as advanced concepts of everything Zero-Knowledge.

The introductory modules are taught by Dan Boneh, a well-known and widely respected cryptographer and academic researcher in the Zero-Knowledge space.

### PLONK by Hand

The three part blog post series on the PLONK Zero-Knowledge Proof System by Metastate explains in-depth how PLONK works with an emphasis on the mathematical aspects of it.

I highly encourage you to take out a sheet of paper and pen to follow along while the authors run through PLONK by hand.

### Anatomy of a STARK

This seven part series by Alan Szepieniec explains everything you need to know about the STARK proof system.

The main target audience are technical readers with some understanding of basic mathematics.

Reading through it, you’ll not only see how the underlying concepts are expressed mathematically, but also how they can be translated into Python code which can be found in the project’s GitHub Repository.

### BrainSTARK

This six part tutorial series by Alan Szepieniec teaches you how to implement your own Turing-complete zk-STARK engine that can be used to create and verify proofs for programs written in Brainfuck and executed on the zk-VM.

The code for this project can be found in its GitHub Repository.

To get the most out of this tutorial, one should work through Anatomy of a STARK first.

### STARK 101

STARK 101 is the “official STARK tutorial” by StarkWare, the inventors of STARKs.

The workshop is a recording of a live event that was held in Tel Aviv. Video recordings, lecture slides as well as the code are available online for download. There’s also a Jupyter Notebook that contains all the necessary code that can be run online in the browser via Binder.

### STARK Math Blog Post Series

This five part blog post series by the StarkWare team explains everything you need to know to understand the math used in STARK proof generation and verification.

## Post Quantum Cryptography

### Post Quantum Cryptography YouTube Videos

This series of YouTube videos by Chalk Talk is one of the best introductions to Post Quantum Cryptography and its Lattice-based constructions that rely on the Learning with Errors (LWE) problem.

### Cloudflare’s Post Quantum Cryptography Blog Post Series

Cloudflare has published two in-depth blog posts that explain how a Key Encapsulation Mechanism (KEM) for key exchange as well as a signature algorithm can be implemented based on the Learning with Errors (LWE) problem that is believed to be hard to solve even with a Quantum Computer.

### Lattices for Programmers Blog Post Series

Mark Schultz’s three part blog post series is a step-by-step guide in which the reader gradually gets introduced to Post Quantum Cryptography, the Learning with Errors (LWE) problem and the Key Encapsulation Mechanism to securely establish a shared secret over an insecure channel.

Working through it, you’ll not only learn the underlying math but also implement a simpler version of the FrodoKEM in Python.

### Intuitive Quantum Computation and Post-Quantum Cryptography

Quan Thoi Minh Nguyen’s very readable paper explains how Quantum Computers work, why they’ll be able to break most of Asymmetric Cryptography and how Post Quantum Cryptography based on the Learning with Errors (LWE) problem can be used to create new, secure cryptographic primitives that are future proof and can withstand even attacks from Quantum Computers.

## Fully Homomorphic Encryption

### Craig Gentry’s PhD Thesis

Craig Gentry’s PhD Thesis A Fully Homomorphic Encryption Scheme is a must-read for anyone who is interested in Fully Homomorphic Encryption.

Craig’s thesis was the breakthrough which proved that a Homomorphic Encryption Scheme that can compute any kind of functions with arbitrary depth is possible.

### Computing Arbitrary Functions of Encrypted Data

Craig Gentry’s paper Computing Arbitrary Functions of Encrypted Data is a simplified version of his breakthrough PhD Thesis which proved that Fully Homomorphic Encryption is possible.

Reading this paper you’ll get introduced to the big ideas behind Fully Homomorphic Encryption in an intuitive way with the help of a story that takes place in an imaginary jewelry store.

### FHE.org

FHE.org is a community of researches and developers interested in Fully Homomorphic Encryption.

On its website you can find a curated list with resources that’s regularly updated with new content. FHE.org also hosts an annual conference and manages an active Discord server you can join to get in touch with other community members.

### Exploring Fully Homomorphic Encryption

Vitalik Buterin published a good writeup about Fully Homomorphic Encryption on his blog.

He also gave a talk called Exploring Fully Homomorphic Encryption (FHE) for which you can find the slides here.

### Shai Halevi’s Homomorphic Encryption Paper

Shai Halevi wrote a tutorial paper that gradually introduces Fully Homomorphic Encryption by examining its history, its properties and use cases as well as relations to other topics in Cryptography.

While the target audience for this paper are mathematicians and cryptographers, you should also be able to understand the big ideas if you’re not too familiar with advanced mathematics.

## Threshold Signature Schemes

The article Threshold Signatures in Chainlink written by Alex Coventry from Chainlink Labs gives a very intuitive introduction to Threshold Signature Schemes.

The writeup starts with an overview of Elliptic Curve Cryptography which is expanded upon to explain how Threshold Signature Schemes can be implemented with primitives and protocols such as Shamir Secret Sharing, Verifiable Secret Sharing, Distributed Key Generation and Schnorr Signatures.

### nChain’s Shared Secrets and Threshold Signatures Paper

The nChain project published a paper written by Michaella Pettit called Shared Secrets and Threshold Signatures which explains everything you need to know to implement a Threshold Signature Scheme from scratch.

The paper is very readable as it focuses on the intuitions behind the big ideas using a lot of graphs, examples and sequence diagrams.

### DKGs in Groups

DKGs in Groups is a blog post by Lúcás Meier that describes how a Distributed Key Generation (DKG) protocol can be implemented via cryptographic groups such as Elliptic Curves.

It slowly guides the reader towards building a secure protocol while making, fixing and explaining problems that might arise along the way.

### Walking Through Distributed Key Generation (DKG)

In Walking Through Distributed Key Generation (DKG) Thor Kamphefner explains step-by-step how a Distributed Key Generation (DKG) protocol works from a mathematical point-of-view.

Reading through it, you should be able to implement a basic, educational version of DKG yourself.

## Blockchain / Cryptocurrency

### Nakamoto

Nakamoto is a collection of quality technical, philosophical and cultural writeups that focus on topics related to Blockchains and Cryptocurrencies.

Reading through the articles, you’ll not only learn about the history of Bitcoin but also how Bitcoin and Blockchains in general work from a technical and economic perspective.

### Vitalik Buterin’s Blog

Vitalik Buterin’s website and blog has a lot of useful articles on everything related to Blockchains and Cryptocurrencies.

While some articles focus on the (crypto)economy, others are highly technical and e.g. dive deep into the math behind Zero-Knowledge Proofs.

### Mastering Bitcoin: Unlocking Digital Cryptocurrencies

Mastering Bitcoin: Unlocking Digital Cryptocurrencies by Andreas Antonopoulos gives you a great overview of the technological- as well as economic aspects of Bitcoin, Blockchains and Cryptocurrencies.

Reading through it, you’ll slowly build an intuitive understanding of how and why the Bitcoin Blockchain works.

### Programming Bitcoin: Learn How to Program Bitcoin from Scratch

Programming Bitcoin: Learn How to Program Bitcoin from Scratch by Jimmy Song is a technical deep dive into Bitcoin and Blockchains in general.

The book walks you through the development of a Bitcoin light client written in Python.

A lot of what’s usually abstracted away through 3rd party libraries and packages will be built from scratch which means that right in the beginning you’ll write your own ECDSA implementation by translating the underlying math into code.

## Misc

### Implementing SSL / TLS Using Cryptography and PKI

Joshua Davies’ Implementing SSL / TLS Using Cryptography and PKI teaches you everything you need to know to implement the Transport Layer Security protocol (TLS) in version 1.2 yourself.

Working through the book, you’ll implement a TLS 1.2 client and server from scratch in C. This includes cryptographic primitives such as DES, AES, ECDH among others.

Quan Thoi Minh Nguyen’s paper Intuitive Advanced Cryptography is a great read if you want to get a distilled overview of andvanced cryptographic primitives and protocols.

The paper starts with basic algorithms such as Elliptic Curve Diffie-Hellman while gradually working towards more advanced topics such as Oblivious Transfer or Lattice-Based Cryptography.

### IACR Cryptology ePrint Archive

The IACR Cryptology ePrint Archive is the go-to resource if you want to stay on top of the current research being done in the field of Cryptography.

### Semantic Scholar

Semantic Scholar is a search engine and research tool for scientific literature. Thanks to its usage of Natural Language Processing it can understand articles as well as relate them to each other.

If you create a free account you can also create “Research Feeds” which allow you to bookmark articles and get recommendations as well as alerts when new research is published.