EC Cryptography Tutorials - Herong's Tutorial Examples

https://www.herongyang.com/EC-Cryptography

Copyright © 2019-2024 Herong Yang. All rights reserved.

EC Cryptography Tutorials This EC (Elliptic Curve) cryptography tutorial book is a collection of notes and sample codes written by the author while he was learning cryptography technologies himself. Topics include rule of chord and point addition on elliptic curves; Abelian groups with additive/multiplicative notations; EC as Abelian groups; DLP (Discrete Logarithm Problem) and trapdoor function; Galois fields or finite fields with Additive/Multiplicative Abelian Group; Prime fields, binary fields, and polynomial fields; EC fields reduced with modular arithmetic; EC subgroup and base points; EC private key and public key pairs; ECDH (Elliptic Curve Diffie-Hellman) protocol; ECDSA (Elliptic Curve Digital Signature Algorithm); ECES (Elliptic Curve Encryption Scheme) protocol; Java tool/program to generate EC keys. Updated in 2024 (Version v1.03) with minor changes.

Table of Contents

About This Book

Geometric Introduction to Elliptic Curves

What Is an Elliptic Curve?

Elliptic Curve Geometric Properties

Addition Operation on an Elliptic Curve

Prove of Elliptic Curve Addition Operation

Same Point Addition on an Elliptic Curve

Infinity Point on an Elliptic Curve

Negation Operation on an Elliptic Curve

Subtraction Operation on an Elliptic Curve

Identity Element on an Elliptic Curve

Commutativity of Elliptic Curve Operations

Associativity of Elliptic Curve Operations

Elliptic Curve Operation Summary

Algebraic Introduction to Elliptic Curves

Algebraic Description of Elliptic Curve Addition

Algebraic Solution for Symmetrical Points

Algebraic Solution for the Infinity Point

Algebraic Solution for Point Doubling

Algebraic Solution for Distinct Points

Elliptic Curves with Singularities

Elliptic Curve Point Addition Example

Elliptic Curve Point Doubling Example

Abelian Group and Elliptic Curves

What Is Abelian Group

Niels Henrik Abel and Abelian Group

Multiplicative Notation of Abelian Group

Additive Notation of Abelian Group

Modular Addition of 10 - Abelian Group

Modular Multiplication of 10 - Not Abelian Group

Modular Multiplication of 11 - Abelian Group

Abelian Group on Elliptic Curve

Discrete Logarithm Problem (DLP)

Doubling or Squaring in Abelian Group

Scalar Multiplication or Exponentiation

What Is Discrete Logarithm Problem (DLP)

Examples of Discrete Logarithm Problem (DLP)

What Is Trapdoor Function

DLP and Trapdoor Function

Scalar Multiplication on Elliptic Curve as Trapdoor Function

Finite Fields

Generators and Cyclic Subgroups

What Is Subgroup in Abelian Group

What Is Subgroup Generator in Abelian Group

What Is Order of Element

Every Element Is Subgroup Generator

Order of Subgroup and Lagrange Theorem

What Is Cyclic Group

Element Generated Subgroup Is Cyclic

Reduced Elliptic Curve Groups

Converting Elliptic Curve Groups

Elliptic Curves in Integer Space

Python Program for Integer Elliptic Curves

Elliptic Curves Reduced by Modular Arithmetic

Python Program for Reduced Elliptic Curves

Point Pattern of Reduced Elliptic Curves

Integer Points of First Region as Element Set

Reduced Point Additive Operation

Modular Arithmetic Reduction on Rational Numbers

Reduced Point Additive Operation Improved

What Is Reduced Elliptic Curve Group

Reduced Elliptic Curve Group - E23(1,4)

Reduced Elliptic Curve Group - E97(-1,1)

Reduced Elliptic Curve Group - E127(-1,3)

Reduced Elliptic Curve Group - E1931(443,1045)

What Is Hasse's Theorem

Finite Elliptic Curve Group, Eq(a,b), q = pn

Elliptic Curve Subgroups

tinyec - Python Library for ECC

What Is tinyec

Download and Install tinyec

Build New Curves with tinyec

Perform Point Addition with tinyec

Find Subgroup with Point Addition

Set Subgroup Order to Higher Value

EC (Elliptic Curve) Key Pair

EC Private and Public Key Pair

Is EC Private Key Secure

EC Private Key Example - secp256k1

Generate secp256k1 Keys with OpenSSL

EC Key in PEM File Format

EC Key File with Curve Name

Create EC Public Key File

ECDH (Elliptic Curve Diffie-Hellman) Key Exchange

What Is ECDH Key Exchange

Is ECDH Key Exchange Secure

ECDSA (Elliptic Curve Digital Signature Algorithm)

ECES (Elliptic Curve Encryption Scheme)

EC Cryptography in Java

"keytool -keyalg EC" - Generate EC Key Pair

"keytool -groupname ..." - Select Curve Name

Java Program to Generate EC Keys

"Legacy SunEC curve disabled" Error

EC Curves Supported by Java

Standard Elliptic Curves

What Are Standard Elliptic Curves

"openssl ecparam -list_curves" - Curves Supported by OpenSSL

"secp256r1" - For 256-Bit ECC Keys

"secp256k1" - For 256-Bit ECC Keys

"sect283r1" - For 256-Bit ECC Keys

"brainpoolP256r1"“ - For 256-Bit ECC Keys

"brainpoolP256t1"“ - For 256-Bit ECC Keys

Terminology

References

Full Version in PDF/EPUB

Keywords: Cryptography, EC, Elliptic Curve, Tutorial, Example