TODO:
- Intro
- Why I learnt?
- Struggle
- What’s the future looks like?
- Syllabus
- Resources
Started learning cryptography end of 2023 rigorously, i.e. getting deeper into core of how and why things work, the way they work. This is a compilation of my thoughts, challenges, resources, notes, everything that I know about cryptography.
I'm not an expert in any way, still learning, and breaking things. Most of the implementations that I've done are broken and were done for toy purposes, and still yet to write production grade cryptographic software.
First of all, learning cryptography hasn’t been easy. It’s a paradigm of information theory that has been in use since the information age began, and it’s the only technology I know of, that has gone through countless failures to get to a point where it powers literally all of internet, and will power verifiable computing age in the coming decade.
Why Cryptography
- Open
- Control shift
- Standard-based
Struggle
I hope you do not relate with this section, but if you’re struggling, this might help :)
Things I struggled with
- Basic primitives: Perfect Secrecy, One-time PAD, hash-functions
- Read history of why it was needed or invented. How it was broken.
- Problem assumptions: Integer Factorisation, Discrete Logarithm, owf, diffie-hellman,
- Difference between instantiations: like difference between SHA2, SHA3, Blake2, etc. Or encryption algorithms like DES, AES, RC4, RSA, ElGamal, etc.
- Leave everything and implement it.
- Reading formal proofs
- Most of the time you’re just missing primitive knowledge required to understand the proof.
- History: I kinda tried skipping this when started initially, but reading these works are inevitable. I know how amazing I felt when I read the 2-page long Adi Shamir’s secret-sharing paper.
Things I currently struggle with
- Writing Formal proofs
- Reading papers quickly (although my speed has improved tremendously)
- Auditing implementations
- Implementation pitfalls
- High-Performance implementations
Things that helped
- Writing Concisely
- Depicting pictorially
- Using more formal language for beginner level explanations like those found in wikipedia.
- Writing proofs by myself, re-reading them when not able to recall
Syllabus
- Number theory
- Applied Cryptography
- Mathematical Cryptography
- Abstract algebra
- Coding Theory
- Complexity Theory
- Post-Quantum Cryptography
- Zero Knowledge
- MPC
- FHE
Resources
These are the resources that I used to understand basic applied cryptography and advanced mathematical cryptography:
Basic
- Mike Rosulek’s PhD advice: This list is goated. Apart from a basic cryptography syllabus, It contains advice that is universal to any topic. Please go through this if you’re starting cryptography.
- Wikipedia: helped a lot when trying to understand how any algorithm, used references section extensively.
- CS255: very nice introduction
- Luca Trevisan’s notes: follows CS255 closely, and contain good theoretical explanations
- CIS 5560
- [Mike Rosulek’s JoC]: awesome book for a beginner, with really detailed examples and comprehensible explanations.
- Understanding Cryptography: exercises are good for any beginner.
- Handbook of Applied Cryptography by Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone
- Cryptopals: Best applied crypto exercises
Intermediate
- CS355
- Introduction to Mathematical cryptography: Loved the beginner friendly introduction to mathematical proofs for protocols.
- Introduction to Modern Cryptography: First cryptography book that I completed and loved every minute of it. Please don’t skip the exercises (I made the mistake of skipping them, only to go back and do them diligently).
- An Intensive Introduction to Cryptography
- Mathematics of Public Key Cryptography: Content beyond undergraduate level.
advanced
- eprint archive
- A Graduate Course in cryptography: Don’t need anything else if you complete this one, but currently in draft mode. Still worth it to go through the exercises. Have only used it as reference when not able to understand from primary resource.
- Proofs, Arguments and Zero Knowledge by Justin Thaler: Following it to learn anything about Interactive Proofs.
- A pragmatic introduction to MPC
- Bar-Ilan winter schools
Miscellaneous
Resources that I love consuming periodically:
- FiloSottile’s blog
- crypto stackexchange: Not everyday you get explanations from Yehdua Lindell in a concise form.