
Cryptography plays a key role in ensuring the privacy and integrity of data and the security of computer networks. Introduction to Modern Cryptography provides a rigorous yet accessible treatment of modern cryptography, with a focus on formal definitions, precise assumptions, and rigorous proofs. The authors introduce the core principles of modern cryptography, including the modern, computational approach to security that overcomes the limitations of perfect secrecy. An extensive treatment of private-key encryption and message authentication follows. The authors also illustrate design principles for block ciphers, such as the Data Encryption Standard (DES) and the Advanced Encryption Standard (AES), and present provably secure constructions of block ciphers from lower-level primitives. The second half of the book focuses on public-key cryptography, beginning with a self-contained introduction to the number theory needed to understand the RSA, Diffie-Hellman, El Gamal, and other cryptosystems. After exploring public-key encryption and digital signatures, the book concludes with a discussion of the random oracle model and its applications. Serving as a textbook, a reference, or for self-study, Introduction to Modern Cryptography presents the necessary tools to fully understand this fascinating subject.
- Okasaki, Purely Functional Data Structures https://www.cs.cmu.edu/~rwh/students/okasaki.pdf
- The Garbage Collection Handbook https://gchandbook.org/
- The Dragon Book - https://faculty.sist.shanghaitech.edu.cn/faculty/songfu/cav/... (yes, it's old, but I still like the end-to-end, all-in-one intro)
- Windows Internals - https://learn.microsoft.com/en-us/sysinternals/resources/win...
- Structure and Interpretation of Computer Programs - https://web.mit.edu/6.001/6.037/sicp.pdf
- Concurrency Control and Recovery in Database Systems - https://www.microsoft.com/en-us/research/people/philbe/book/
- Crafting Interpreters - https://craftinginterpreters.com/
- What Every Programmer Needs to Know About Memory - https://people.freebsd.org/~lstewart/articles/cpumemory.pdf (the best thing Ulrich Drepper ever did)
- An Introduction to Modern Cryptography - https://eclass.uniwa.gr/modules/document/file.php/CSCYB105/R...
A good programming book gets better with age. If it's really about ideas and uses this or that technology for exposition, so much the better: the more remote in time the grammar of the examples, the more you can focus on the ideas. SICP being in Scheme is an advantage because you don't know Scheme yet; Windows Internals being about Windows teaches you generally good lessons in OS design by forcing you to contemplate a system alien to the Unix you probably know better.
It's shocking how many of these seminal books are available for free and how few people read them. Yes, yes, you can get the same information from an LLM, but an LLM won't give you the guided tour through the whole rugged ideas-space and show you a reasonable peak. Order, emphasis, and expository style build intuition, so books (especially old ones) are worth reading.
How about some of the following:
- "Real-World Cryptography" is my recommendation for the first book to read, but probably won't work for your friend as it doesn't cover any algorithms in detail. It's a great topic to cover a lot of ground quickly to gain a good understanding of how cryptography is used in practice.
- "Introduction to Modern Cryptography" is used as a textbook on many universities and I recommend it for someone who doesn't mind diving in into the maths. Being a textbook, it's fairly academic.
- "The Code Book: The Secret History of Codes and Code-breaking" covers the history.
- For TLS and PKI, read "Bulletproof TLS and PKI" (disclaimer: I wrote it). It's a good book to understand practical protocol engineering in the context of the evolution of TLS from 1995 until now.
Edits:
- The manga book is very nice and fun, but high level and dated.
- Crypto by Steven Levy also recommended.
- Serious Cryptography is good, but Real-World Cryptography is more recent and provides a better foundation.
- Cryptography Engineering / Practical Cryptography / Applied Cryptography are often recommended, but they're very dated at this point.
- Your friend might enjoy https://cryptopals.com/
I found it had a nice balance of theory and application.
"Introduction to Modern Cryptography" by Katz & Lindell.
It starts from the basics, the proofs are thoroughly elaborated and it has an appendix covering the necessary math prerequisites.