**EC Cryptography Tutorials - Herong's Tutorial Examples** - v1.02, by Dr. Herong Yang

EC Cryptography Tutorials - Herong's Tutorial Examples

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

Copyright © 2022 Dr. Herong Yang. All rights reserved.

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 2022 (Version v1.02) with minor changes.

Table of Contents

Geometric Introduction to Elliptic Curves

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

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)

Scalar Multiplication on Elliptic Curve as Trapdoor Function

Generators and Cyclic Subgroups

What Is Subgroup in Abelian Group

What Is Subgroup Generator in Abelian Group

Every Element Is Subgroup Generator

Order of Subgroup and Lagrange Theorem

Element Generated Subgroup Is Cyclic

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)

Finite Elliptic Curve Group, Eq(a,b), q = p^n

tinyec - Python Library for ECC

Perform Point Addition with tinyec

Find Subgroup with Point Addition

Set Subgroup Order to Higher Value

EC Private and Public Key Pair

EC Private Key Example - secp256k1

Generate secp256k1 Keys with OpenSSL

ECDH (Elliptic Curve Diffie-Hellman) Key Exchange

ECDSA (Elliptic Curve Digital Signature Algorithm)

ECES (Elliptic Curve Encryption Scheme)

"keytool -keyalg EC" - Generate EC Key Pair

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

Java Program to Generate EC Keys

"Legacy SunEC curve disabled" Error

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

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