
This self-contained introduction to modern cryptography emphasizes the mathematics behind the theory of public key cryptosystems and digital signature schemes. The book focuses on these key topics while developing the mathematical tools needed for the construction and security analysis of diverse cryptosystems. Only basic linear algebra is required of the reader; techniques from algebra, number theory, and probability are introduced and developed as required. The book covers a variety of topics that are considered central to mathematical cryptography. Key topics include: * classical cryptographic constructions, such as Diffie-Hellmann key exchange, discrete logarithm-based cryptosystems, the RSA cryptosystem, and digital signatures; * fundamental mathematical tools for cryptography, including primality testing, factorization algorithms, probability theory, information theory, and collision algorithms; * an in-depth treatment of important recent cryptographic innovations, such as elliptic curves, elliptic curve and pairing-based cryptography, lattices, lattice-based cryptography, and the NTRU cryptosystem. This book is an ideal introduction for mathematics and computer science students to the mathematical foundations of modern cryptography. The book includes an extensive bibliography and index; supplementary materials are available online.
For online stuff, man is there a ton, and plenty comes up on HN with some regularity. I guess I've been a fan of a lot of the work Quanta Magazine does on explaining interesting science and math topics, so you could look through their cryptography-tagged articles [0]. As I think about it more, honestly though it might almost seem cliche but reading the Wikipedia entries on cryptography and following that along with reference to the links if you want isn't bad either.
Just keep in mind there's plenty of pieces that go into it. There's the mathematics of the algorithms themselves. Then a lot of details around the implementations of them into working software, with efforts like the HACL* project [1] at formal mathematical verification for libraries, which then has gone on to benefit projects like Firefox [2] in both security and performance. Then how that interacts with the messy real world of the underlying hardware, and how details there can create side channels can leak data from a seemingly good implementations of perfect math. But then also that such attacks don't always matter, it depends on the threat scenarios. OTP, symmetric and asymmetric/pub-key (all data preserving), and cryptographic hash functions (which are data destroying) are all very different things despite falling under the overall banner of "cryptography" with different uses and tradeoffs.
Finally, there is lots and lots of history here going back to well before modern computers at all. Humans have always desired to store and share information with other humans they wish while preventing other humans from gaining it. There certainly have been endless efforts to try to subvert things as well as simple mistakes made. But we've learned a lot and there's a big quantitative difference between what we can do now and in the past.
>My (rudimentary, layman) understanding is that encryption is almost like a last line of defense and should never be assumed to be unbreakable.
Nope. "We", the collective of all humanity using the internet and a lot of other stuff, do depend on encryption to be "unbreakable" as a first and only line of defense, either truly and perfectly unbreakable or at least unbreakable within given specified constraints. It's the foundation of the entire the global e-commerce system and all the trillions and trillions flowing through it, of secure communications for business and war, etc.
Honestly, I'm kind of fascinated that apparently there are people on HN who have somehow internalized the notion of cryptography you describe here. I don't mean that as a dig, just it honestly never occurred to me and I can't remember really seeing it before. It makes me wonder if that feeds into disconnects on things like ChatControl and other government backed efforts to try to use physical coercion to achieve what they cannot via peaceful means. If you don't mind (and see this at some point, or even read this far since this has turned into a long-ass post) could you share what you think about the EU's proposal there, or the UK's or the like? Did you think they could do it anyway so trying to pass a law to force backdoors to be made is a cover for existing capabilities, or what? I'm adamantly opposed to all such efforts, but it's not typically easy to get even the tech literate public on-side. Now I'm curious if thinking encryption is breakable anyway might somehow play a role.
----
0: https://www.quantamagazine.org/tag/cryptography/
1: https://github.com/hacl-star/hacl-star
2: https://blog.mozilla.org/security/2020/07/06/performance-imp...
Jean-Philippe Aumasson's _Serious Cryptography_: https://nostarch.com/seriouscrypto
Ferguson and Schneier's _Cryptography Engineering_: https://www.amazon.com/Cryptography-Engineering-Principles-P... --- dated, a little wrong about some things, but not insane (like _Applied Cryptography_ is).
Hoffman, Pipher, and Silverman's _Introduction to Mathematical Cryptography_: https://www.amazon.com/Introduction-Mathematical-Cryptograph... --- a good first step into theoretical cryptography.
- "Extremal Combinatorics" by Staysys Jukna
- "Convex Optimization" by Boyd and Vandenberghe
- "Delay Insensitive Circuits" [1]
- "An Introduction to Mathematical Cryptography" by Hoffstein, Pipher, and Silverman
- "Quantum Computing since Democritus" by Scott AAronson
[1] https://www.delayinsensitive.com
disclosure: I'm the author.
If you're interested in crypto or linear algebra but don't know what a lattice is, a great starting point is Hoffstein's _Introduction to Mathematical Cryptography_:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.182...
(If you know what a vector space is, you know what a lattice is; it's a vector space where only integers are allowed as coefficients in linear combinations).
Here's Antoine Joux, one of the world's most renowned cryptanalysts, talking about applications of LLL to crypto attacks. Amusingly, he sort of opens by making fun of cryptographers for using LLL without really understanding it:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.7...
Here's Babai's application of LLL to finding close lattice points:
http://www.csie.nuk.edu.tw/~cychen/Lattices/On%20lovasz%20la...
From here you're a [boneh hidden number problem] Google search away from attacking dlog/ecdlog crypto from vulnerabilities like biased nonces.
Hoffstein et al.'s An Introduction to Mathematical Cryptography is a wonderful text, highly thought of, that really is a better choice than the above link for this sort of thing. Another shorter text is Koblitz's A Course in Number Theory and Cryptography, but I think all of the material in that is also in Hoffstein et al.'s Introduction.
For a practical implementation-oriented treatment, Cryptography Engineering by Ferguson, Schneier, and Kohno is a good text. It's especially great as a launching point for someone interested in cryptography, especially from a systems-building perspective.
For a mostly-rigorous treatment of the basics and theory of modern cryptography, I am a huge fan of Katz and Lindell's Introduction to Modern Cryptography; I've espoused its virtues several times here on HN. If you want the theoretical background with some application still thrown in, this is a good choice.
For a deep theoretical treatment, requiring an already-built background in theoretical computer science and probability theory, see Goldreich's Foundations of Cryptography volumes. They are very dense, very dry works, but packed with information.
For a specific focus on elliptic curve cryptography, Menezes et al. have published Guide to Elliptic Curve Cryptography, though elliptic curves are also treated in the above two references (Hoffstein et al. and Koblitz). Still, I appreciate the focus on ECC, which is large enough to merit entire books.
For a reference text, Menezes et al.'s Handbook of Applied Cryptography contains a lot of information, although it's starting to show its age. Still, if you need to find a definition or something, it's a great place to look.
For an understanding of the (roughly) state-of-the-art in block ciphers, see Rijmen and Daemen's The Design of Rijndael. (Rijndael is perhaps better known as "AES" today, modulo some minor differences; Rijmen and Daemen are the creators of Rijndael).
For a treatment of the history of cryptology, the seminal work is Kahn's The Codebreakers. It is a massive text, but covers cryptologic history relatively well - up until recent times, anyway. For a shorter but still good text, see Singh's The Code Book.
Then, there are areas of mathematics and theoretical computer science that are used heavily in cryptography. The above already include some references to that (quite a few of the above text include an intro to number theory section, for example), but of course, there are always the textbooks designed specifically for that field. For instance, Dummit and Foote's Abstract Algebra, Baker's Comprehensive Course in Number Theory, Papadimitriou's Computational Complexity, and so on. Those are pretty easy to find with Google, though, if you search for influential textbooks in those fields.
This list is hopelessly incomplete, but I think it is quite a good broad survey of some different textbooks. If you studied all of the above in their entirety, you would be quite knowledgeable, at least.
Edit: Well, uh, here at 5am I realized you were probably talking about ones that were available online or what have you. Oops. Of the above, I think only the Handbook of Applied Cryptography is (legally) free. Still, I'll leave this here for future reference.