Learning cryptography is very rewarding, but it’s best approached step-by-step, because it sits at the intersection of mathematics, computer science, and security thinking. Given your past interest in abstract algebra and philosophy of mathematics, you actually have a good foundation for the theoretical side.
Below is a clear roadmap, from beginner to advanced, with concrete resources.
⸻
1. Prerequisites (don’t skip these)
(a) Mathematics you need
Focus on understanding, not memorizing proofs at first.
Essential
• Modular arithmetic
• Number theory basics
• gcd, Euclidean algorithm
• prime numbers
• Euler’s φ function
• Linear algebra basics
• vectors, matrices
• matrix multiplication
• Probability basics
Later (for advanced crypto)
• Abstract algebra: groups, rings, fields
• Finite fields \mathbb{F}_p, \mathbb{F}_{2^n}
📘 Good resources
• Elementary Number Theory – David Burton
• MIT OCW: Mathematics for Computer Science
• Khan Academy (for modular arithmetic refresher)
⸻
2. Learn Classical Cryptography (to build intuition)
Start here before modern crypto.
Topics
• Caesar cipher
• Vigenère cipher
• Substitution & transposition ciphers
• Frequency analysis
• Kerckhoffs’s principle
🎯 Goal: Understand why simple systems fail
📘 Resource:
• Cryptography and Network Security – William Stallings (early chapters)
⸻
3. Modern Cryptography (core phase)
This is the heart of cryptography.
(a) Symmetric Cryptography
• Block ciphers: AES
• Stream ciphers
• Modes of operation: ECB, CBC, CTR, GCM
• Hash functions: SHA-256
• MACs and HMAC
🎯 Key ideas:
• Confusion & diffusion
• Why ECB is insecure
• Integrity vs confidentiality
⸻
(b) Asymmetric Cryptography
• RSA (number theory heavy, very important)
• Diffie–Hellman key exchange
• Elliptic Curve Cryptography (ECC)
• Digital signatures
🎯 Key ideas:
• One-way functions
• Trapdoor functions
• Computational hardness assumptions
📘 Excellent book:
• Understanding Cryptography – Christof Paar & Jan Pelzl
(Very beginner-friendly and mathematically honest)
⸻
4. Learn Cryptography by Doing (very important)
(a) Programming
Pick Python or C.
Practice:
• Implement RSA (small numbers only!)
• Implement AES using a library
• Hash passwords securely
• Simulate a Diffie–Hellman exchange
⚠️ Rule:
Never invent your own cryptographic algorithm for real use
Libraries:
• Python: cryptography, PyNaCl
• C: OpenSSL (advanced)
⸻
(b) Practical Exercises
• Cryptopals Crypto Challenges
• OverTheWire (Bandit, Krypton)
These teach how crypto breaks in practice.
⸻
5. Formal / Theoretical Cryptography (optional but deep)
If you like proofs and rigor:
Topics
• Security definitions (IND-CPA, IND-CCA)
• Provable security
• Random oracles
• Zero-knowledge proofs
📘 Advanced books:
• Introduction to Modern Cryptography – Katz & Lindell
• A Course in Cryptography – Goldreich
This is where cryptography becomes almost philosophy of knowledge and secrecy, which may interest you.
⸻
6. Applied Cryptography & Systems
Learn how crypto is actually used:
• TLS / HTTPS
• Public Key Infrastructure (PKI)
• Password storage
• Blockchain basics (hashes, signatures, consensus)
📘 Book:
• Applied Cryptography – Bruce Schneier (conceptual, not fully up-to-date, but insightful)
⸻
7. Suggested Learning Path (12–16 weeks)
Weeks 1–3
• Modular arithmetic, number theory
• Classical ciphers
Weeks 4–6
• Symmetric crypto, hashing
Weeks 7–9
• RSA, Diffie–Hellman
Weeks 10–12
• Programming crypto exercises
• Cryptopals challenges
Weeks 13–16
• Security proofs OR real-world protocols
(Courtesy: OpenAI)