About
Overview
This text was written for use in an introductory course in cryptography. It starts with a discussion of classical cryptosystems (like the Caesar cipher), followed by the mathematics of breaking these classical cryptosystems. It then moves on to modern cryptosystems (like RSA or elliptic curve cryptography). Along the way, there’s a discussion of a variety of mathematical ideas, including the basics of number theory and probability theory.
I began writing this text on 2022-10-28 and it was last updated on 2024-06-13.
There are likely many typos and errors. They are entirely my fault, and alerting me to any you find would be much appreciated!
Acknowledgments
This text was written with Math 187A at UC San Diego in mind. This course was designed Adriano Garsia and Alina Bucur. I drew content from course materials (eg, lecture slides) prepared by them. In addition to this, I also drew content from materials by Matthias Strauch for a similar course he teaches at Indiana University, and from many other resources, including the SageMath Wiki as well as the following books:
- Hoffstein, Pipher, and Silverman. An Introduction to Mathematical Cryptography.
- Goldreich. Foundations of Cryptography I.
- Focca. Cryptology through History and Inquiry.
- Singh. The Code Book.
- Stein. Elementary Number Theory: Primes, Congruences, and Secrets.
- Menezes, van Oorschot, and Vanstone. Handbook of Applied Cryptography.
- Diez, Cetinkaya-Rundel, and Barr. OpenIntro Statistics.
- Burton. Elementary Number Theory.
Comments and feedback from the students and TAs of Math 187A in Winter 2023 and in Spring 2024, and from Aranya Lahiri and his Math 187A students in Spring 2023 and Fall 2023, were indispensable.
Software used in the making of this text includes SageMath (and SageCell), KaTeX, Jekyll (with jekyll-pandoc), and probably other things I’m forgetting to mention.
License
This text is open-source and copylefted under CC BY-SA 4.0.