This small book offers a deep-dive introduction on cryptography. Where possible it focuses on conceptual, rather than formal exposition of the material.
It is difficult to find many materials that offer a good middle ground in cryptography education.
On the one hand, there are lengthy, formal treatises, really only accessible to those with a strong background in mathematics, logic, or some other formal discipline. On the other hand, there are very high-level introductions that really hide too many of the details for anyone that is at least a bit curious.
This introduction to cryptography seeks to capture the middle ground. While it should be relatively challenging and detailed for anyone new to cryptography, it is hardly the rabbit hole of a typical foundational treatise.
From developers to the intellectually curious, this book can be useful for anyone that wants more than a superficial understanding of cryptography. If your aim is to master the field of cryptography, then this book might also be a good starting point.
The book contains four chapters: "What is Cryptography?" (Chapter 1), "Mathematical Foundations of Cryptography" (Chapter 2), "Symmetric Cryptography" (Chapter 3), and "Asymmetric Cryptograpy" (Chapter 4).
Unless you have a strong background in mathematics, number theory is probably the most difficult topic in this book. I offer an overview of number theory in the last section of Chapter 2, and it also appears in the exposition of the RSA cryptosystem in Chapter 4.
If you are really struggling with the details in these parts of the book, I recommend you settle for a high-level reading of them the first time around.
The most influential book in shaping this overview has been Jonathan Katz and Yehuda Lindell’s Introduction to Modern Cryptography, CRC Press (Boca Raton, FL), 2015.
The main additional sources that have been helpful in creating the overview in this book are Simon Singh, The Code Book, Fourth Estate (London, 1999); Christof Paar and Jan Pelzl, Understanding Cryptography, Springer (Heidelberg, 2010) and a course based on the book by Paar called “Introduction to Cryptography” (available at https://www.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg); and Bruce Schneier, Applied Cryptography, 2nd edn, 2015 (Indianapolis, IN: John Wiley & Sons).
I will only cite very specific information and results I take from this sources, but want to acknowledge my general indebtedness to them here.
For those readers who wish to seek out more advanced knowledge on cryptography after this introduction, I highly recommend Katz and Lindell’s book. Katz also has a Coursera course called “Cryptography” which is based on the book. It is somewhat more accesible. For anyone that wants to learn more at a beginner level, I highly recommend Singh’s entertaining book.
Please have a look at the contributions file in the repository for some guidelines on how to support the project.