Elliptic Curve Cryptography Masterclass From Scratch
3.6 (87 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
444 students enrolled

Elliptic Curve Cryptography Masterclass From Scratch

Learn fundamentals of public key cryptosystem which empowers bitcoin and blockchain. Hands on experience from scratch
3.6 (87 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
444 students enrolled
Last updated 3/2019
English
English
Current price: $69.99 Original price: $99.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 4 hours on-demand video
  • 3 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Learn the math behind elliptic curves
  • Understand the public key cryptography
  • Use elliptic curves for PKI from scratch
  • Apply key exchange, digital signature and symmetric encryption in real world
  • Figure out how bitcoin and blockchain works
Requirements
  • Basic Calculus
  • Basic Java or Python
Description

Elliptic curve cryptography is the most advanced cryptosystem in the modern cryptography world. It lies behind the most of encryption, key exchange and digital signature applications today. It guarantees same security with other public key algorithms such as RSA or Diffie Hellman whereas it can handle the security with smaller keys also in faster way. Today, even bitcoin and other blockchain based cryptocurrencies are based on ECC!

In this course, we will mention on both the math behind elliptic curve cryptography and gain hands on experience in Java and also Python. In other words, the course covers both theory and practice deeply. On the other hand, everything will be developed from scratch. Also, no out-of-the-box of feature of any language will be used. Elliptic curves in Weierstrass, Koblitz and Edwards form (or shortly Edwards Curves) will be covered.

Finally, you can have your own elliptic curve cryptography API when you enrolled the course, and no need to consume any other 3rd party dependency.

Who this course is for:
  • Interested in crypto
  • Be an expert on public key cryptography
  • Enthusiastic about cryptographic engineering
  • Wonder what lies behind bitcoin and blockchain
Course content
Expand all 20 lectures 04:01:12
+ Introduction
1 lecture 03:39

This is the introduction video. We will mention what this course covers and what this course offers.

Preview 03:39
+ Generating public key on elliptic curves
3 lectures 39:26

Previously, we have proven the addition and doubling formulas on an elliptic curve. Now, we would apply this formulas into the real world.

Applying addition formulas in practice
16:31

We will mention how to calculate a specific point from a base point on an elliptic curve faster

Double and Add Method
11:51

Previously, we have mentioned the faster calculation procedure to accessing a sample point. Now, we would apply it.

Applying double and add method in practice
11:04
We've mentioned the addition formulas for the curve y^2 + xy = x^3 + ax^2 + b. Your task is implementing addition formulas for that curve too.
Implement addition formulas for an elliptic curve over binary field
1 question
+ Why Elliptic Curves are Powerful
1 lecture 03:07

What makes elliptic curves different? Why they are powerful? In this lecture, we'll mention it.

Elliptic Curve Discrete Logarithm Problem
03:07
You should test Elliptic Curve Discrete Logarithm Problem really.
Test ECDLP
1 question
+ Key Exchange
2 lectures 19:04

Point addition on an elliptic curve is a tool for us. We will consume this formulas to solve a real world problem. Key exchange is a common solution of ECC. In this way, parties can exchange same key on a insecure channels.

Elliptic Curve Diffie Hellman Key Exchange Algorithm
06:33

We will apply and monitor the key exchange process.

Applying Elliptic Curve Diffie Hellman
12:31
+ Finite Fields
4 lectures 47:13

We'll mention how to adapt modular arithmetic into elliptic curves, and what this adaption provide us.

Modular Arithmetic and Modular Inverses
07:32

There is a faster way to find modular inverse of a number for a mod value. We'll mention how to find it with extended euclidean algorithm.

Finding Multiplicative Inverse Faster: Extended Euclidean Algorithm
08:23

Previously, key exchanging was handled on real numbers. What if parties round the shared keys differently? We will mention how to solve that problem in this lecture.

Finite Fields
21:50

Previously, we've used the out-of-the-box modInverse function under Java BigDecimal class to find the modular inverse. We'd replace this function call to core extended euclidean algorithm.

Applying Extended Euclidean Algorithm
09:28
+ Digital Signature
5 lectures 01:10:57

Elliptic curve cryptography can be used for digital signatures too!

Elliptic Curve Digital Signature Algorithm
22:35

The most common cryptocurrency bitcoin uses ECC to sign and verify signatures. In this lecture, we will mention bitcoin parameters.

Bitcoin
05:03

ECDSA verification operation will be proven in this lecture.

Proof of ECDSA
07:29

In ECDSA, we've used a random key variable. This should be really random? What if this random key variable assigned to a constant value? In this lecture, we'll mention the role of random key in elliptic curve digital signature algorithm.

Role of Random Key in ECDSA
17:57
Previously, we've attacked digital signatures and succeed if two messages are signed with same random key. Try to attack two messages signed with different random keys.
Attack Randomly Generated Elliptic Curve Based Signatures
1 question

In ECDSA, a new modulo named order of group has to be involved in calculations. It means number of points on the finite field. In this lecture, we'll mention how to calculate order of group.

Counting points on a finite field: order of group
17:53
+ Symmetric Encryption and Decryption
1 lecture 17:35

Modified version of ElGamal cryptosystem to Elliptic Curve based one to apply symmetric key encryption

Elliptic Curve ElGamal Cryptosystem
17:35
+ Edwards Curves
1 lecture 14:35
Previously, we have used addition formulas of Weierstrass form. In this assignment, we will use Edwards Curves and find a public key value.
Using Addition Formulas of Edwards Curves
1 question