Skip to content

Commit

Permalink
add learning resources (#878)
Browse files Browse the repository at this point in the history
* add learning resources

* update learning_resources

* update learning resources

* Update learning_resources.md

* update learning resources

* add link

---------

Co-authored-by: jotabulacios <45471455+jotabulacios@users.noreply.github.com>
Co-authored-by: Mario Rugiero <mrugiero@gmail.com>
Co-authored-by: Iñaki Garay <igarai@gmail.com>
  • Loading branch information
4 people authored Sep 9, 2024
1 parent d728a83 commit 94c2293
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 0 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
94 changes: 94 additions & 0 deletions bootcamp/learning_resources.md
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 94c2293

Please sign in to comment.