
Explore finite groups with concrete examples: addition modulo four forms an abelian group, while multiplication modulo four fails due to missing inverses for some elements.
Explore cyclic groups, their order, and generators using modulo 11 to show how a generator yields all elements and how a non-generator differs, foundational for elliptic curve cryptography.
Visualize elliptic curve operations such as point addition and doubling on a well-known curve with an Ubuntu program. Observe line reflections, inverses, and abelian group properties like commutativity and associativity.
Implement the top layer of elliptic curve cryptography in Rust, coding point addition and multiplication, with coordinates or identity and on-curve checks via y^2 = x^3 + 8x mod p.
Demonstrate adding opposite points on the elliptic curve yields the identity when x1 = x2 and y1 + y2 = 0, with a test using 16 and 5.
Identify and address the overlooked case where a point has an x coordinate and the other coordinate is zero, involving point doubling, the tangent line, and the identity.
We reorganize the elliptic curve cryptography library into a standalone crate named generic, exporting elliptic curve, finite field, and point structures for flexible use in digital signatures, version 0.1.9.
Generate a private key as a random positive number within a bound, then derive the public key by multiplying the elliptic curve generator by the private key in Rust.
Explore ecdsa secp256k1 implementation in Rust, creating private and public keys, signing and verifying messages with sha-256, using a crate elliptic curve library, and testing tamper scenarios.
This course teaches you how elliptic curve groups work together with finite fields and how to implement a Rust library from scratch to perform basic groups' operations. Additionally, you will learn how to use EC groups in digital signature algorithms and extend its usage to other crypto-systems. The course provides both: theoretical and practical examples on every topic that is discussed.
The course is divided into three main sections:
1. A theory section where I explain what finite cyclic groups are. In particular, we will see some theorems that will help us to understand, for example, why it is important to use a group with "prime order".
2. A practical implementation in Rust of the Elliptic Curve library using Finite Fields in the bottom layer. You can in this part additionally create your one GitHub repository and use it as a showcase to recruiters or firms.
3. A digital signature application of the elliptic curve library developed so far. This is the moment where you use everything together to build something that solves a real-world problem.
The intended audience consists of curious people who want to dive into cryptography, maybe for the first time, and those who want to increase their knowledge of them. I promise you that after finishing the course, you will not have any more fear when you see abbreviations such as "EC" and "DSA" and will be substantially more literate in cryptography and Rust.