diff --git a/README.md b/README.md index dde2ae09d..80f4c4b81 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,10 @@ To serve the documentation locally, first install both [mdbook](https://rust-lan make docs ``` +## Learning resources + +If you want to learn about proof systems/cryptography, we have a list of resources available [here](./bootcamp/learning_resources.md) + ## 📚 References and acknowledgements The following links, repos, companies and projects have been important in the development of this library and we want to thank and acknowledge them. diff --git a/bootcamp/learning_resources.md b/bootcamp/learning_resources.md new file mode 100644 index 000000000..6dcc37302 --- /dev/null +++ b/bootcamp/learning_resources.md @@ -0,0 +1,94 @@ +# Roadmap + +## 1. Fundamentals of Cryptography and Mathematics + +### Key Concepts: +- What is cryptography. + - [Cryptography I - Dan Boneh: Videos 1, 2 and 3.](https://youtube.com/playlist?list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&si=M8qItPK_HUy3WR7b) +- Symmetric ciphers: the one time pad and stream ciphers. + - [Cryptography I - Dan Boneh: Videos 6, 7, 8 and 9.](https://www.youtube.com/watch?v=pQkyFJp2eUg&list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&index=7) +- Exclusive or. + - [Crypto101: Chapter 5](https://www.crypto101.io/) +- Block ciphers. + - [Crypto101: Chapter 6](https://www.crypto101.io/) +- Number Theory: Modular arithmetic and prime numbers + - [An Introduction to Mathematical Cryptography: Chapter 1](https://link.springer.com/book/10.1007/978-0-387-77993-5) +- Public key cryptography: Discrete logarithms and Diffie-Hellman. + - [An Introduction to Mathematical Cryptography: Chapters from 2.1 to 2.4](https://link.springer.com/book/10.1007/978-0-387-77993-5) +- Abstract Algebra: Group Theory. + - [An Introduction to Mathematical Cryptography: Chapter 2.5](https://link.springer.com/book/10.1007/978-0-387-77993-5) +- Abstract Algebra: Rings and finite fields. + - [An Introduction to Mathematical Cryptography: Chapter 2.10](https://link.springer.com/book/10.1007/978-0-387-77993-5) +- Finite Field Theory: Operations and applications in cryptography. +- RSA. + - [How RSA Works](https://www.youtube.com/watch?v=qph77bTKJTM&t=1060s) +- Basic Cryptography: hash functions, and digital signatures. + - [What are Digital Signatures?](https://www.youtube.com/watch?v=s22eJ1eVLTU) + + +## 2. Theory and Application of Elliptic Curves + +### Key Concepts: +- Elliptic Curves over Finite Fields: Definition and operations. + - [Elliptic Curves - Computerphile](https://www.youtube.com/watch?v=NF1pwjL9-DE) +- Elliptic Curve Cryptography (ECC): Applications and advantages. +- Points and Operations on Elliptic Curves: Point addition and scalar multiplication. +- Pairing + - [Pairing for Beginners](https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf) Chapter 1 & 2 + + +## 3. Introduction to Zero-Knowledge Proofs + +### Key Concepts: +- Definition and Properties: Completeness, soundness, and zero-knowledge. + - [Computer Scientist Explains One Concept in 5 Levels of Difficulty](https://www.youtube.com/watch?v=fOGdb1CTu5c) + + +## 4. SNARKs (Succinct Non-Interactive Arguments of Knowledge) + +### Key Concepts: +- Introduction to SNARKs: Concepts and uses. + - [What is a zk-SNARK?](https://www.youtube.com/watch?v=gcKCW7CNu_M) +- Components of SNARKs: Arithmetization, constraint systems, and quadratic arithmetic programs (QAP). + - [SNARKs vs. STARKs](https://zkhack.dev/whiteboard/module-four/) + +Related Papers +[Pinocchio: Nearly Practical Verifiable Computation](https://eprint.iacr.org/2013/279.pdf) + +## 5. STARKs (Scalable Transparent ARguments of Knowledge) + +### Key Concepts: +- Fundamentals of STARKs: Differences with SNARKs and applications. + - [ZK-STARKs: Scalable Transparent Zero Knowledge Proofs](https://eprint.iacr.org/2018/046.pdf) + - [Diving into Starks](https://www.youtube.com/watch?v=cDzTm3clrEo) + - Multipart tutorial by Vitalik Buterin [I](https://vitalik-eth-limo.translate.goog/general/2017/11/09/starks_part_1.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es-419&_x_tr_pto=sc) [II](https://vitalik.eth.limo/general/2017/11/22/starks_part_2.html) & [III](https://vitalik.eth.limo/general/2018/07/21/starks_part_3.html) +- Protocols and Security in STARKs: FRI (Fast Reed-Solomon IOPP) and AIR (Algebraic Intermediate Representation) + +# Other learning resources + +This list contains papers, videos, books, and links to resources that we found useful to learn about zero-knowledge proofs and cryptography. The list is by no means exhaustive and we will be updating it. + +## Videos + +- [ZK Whiteboard](https://zkhack.dev/whiteboard/) +- [All the MATH you need to understand SNARKs and STARKs](https://www.youtube.com/playlist?list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ) + +## Books + +- [Thaler - Proofs, Arguments and Zero-knowledge](https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf) + +## Papers + +- [Pinocchio](https://eprint.iacr.org/2013/279.pdf) +- [Plonk](https://eprint.iacr.org/2019/953.pdf) +- [Square Span Programs with Applications to Succinct NIZK Arguments](https://eprint.iacr.org/2014/718.pdf) +- [KZG Polynomial Commitment Scheme](https://cacr.uwaterloo.ca/techreports/2010/cacr2010-10.pdf) + +## Courses +- [Modern Zero Knowledge Cryptography - MIT IAP 2023](https://zkiap.com) +- [Zero Knowledge Proofs](https://zk-learning.org) Dan Boneh, Shafi Goldwasser, Dawn Song, Justin Thaler & Yupeng Zhang + +## Links + +- [STARK-101 - Python](https://starkware.co/stark-101/) +- [BabySnark Protocol](https://github.com/lambdaclass/lambdaworks/tree/main/examples/baby-snark)