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

Terminology

List of terms used in this book.

**Abelian Group** -
An Abelian Group is a set of elements with a binary operation
that satisfy 5 conditions: Closure, Commutativity, Associativity,
Identity Element, and Symmetry.

**DLP (Discrete Logarithm Problem)** -
DLP is the reverse operation of the scalar multiplication operation
in an Abelian Group.
There is no efficient algorithm for the DLP in an elliptic curve field.
This makes the scalar multiplication in an elliptic curve field a good
trapdoor function.

**Domain Parameters** -
A set of parameters, (p,a,b,G,n,h), which specifies an elliptic curve and a subgroup
to be used to generate private keys and their associated public keys.

**Double-and-Add** -
Double-and-Add is efficient algorithm to perform scalar multiplications
in an elliptic curve field.

**EC (Elliptic Curve)** -
An EC is the set of 2 dimensional points of (x, y)
that satisfy the following mathematical equation with given values of a and b:

y^{2}= x^{3}+ ax + b

**EC Group** -
An EC Group is an Abelian group defined with all points of an elliptic curve
and the addition operation defined by the rule of chord.

**EC Group on Finite Field** -
An EC Group on a Finite Field can also be called reduced EC group,
which contains all integer points of an elliptic curve equation
reduced by a modulo. The addition operation is also reduced by the same modulo.

**EC Subgroup Generated from a Base Point** -
An EC Subgroup Generated from a Base Point is a subgroup of
an EC Group on Finite Field with all points are generated
from scalar multiplications of a given base point.

**ECC (Elliptic Curve Cryptography)** -
ECC is an approach to public-key cryptography based on the algebraic
structure of elliptic curves over finite fields.

**ECDH (Elliptic Curve Diffie-Hellman)** -
ECDH is a secret key exchange protocol that uses the Elliptic Curve group
property to establish a shared secret key without sending it directly to
each other.

**ECDSA (Elliptic Curve Digital Signature Algorithm)** -
ECDSA is an algorithm that uses elliptic curve subgroup properties to
generate digital signatures of any given messages.

**ECES (Elliptic Curve Encryption Scheme)** -
ECES is a schema that uses elliptic curve subgroup properties to encrypt
a plaintext into a ciphertext using receiver's EC public key. The
ciphertext can only be decrypted back to the plaintext by the receiver
using his/her EC private key.

**Finite Field** -
A Finite Field is a set of finite number of elements with two operations,
one called addition and the other called multiplication, that
satisfy conditions: Additive Abelian Group, Multiplicative Abelian Group
and Distributivity.

**Rule of the Chord** -
The Rule of the Chord is geometrical definition
of the addition operation of the elliptic curve field.

**Subgroup** -
A Subgroup is a subset of the Abelian Group that
itself is an Abelian Group. The subgroup and its parent group are using
the same operation.

**Scalar Multiplication** -
The Scalar Multiplication is a derived operation
from the addition operation of an Abelian Group by adding
the same element multiple times.
Scalar Multiplications in elliptic curve fields are good trapdoor functions.

**Trapdoor Function** -
A Trapdoor Function is an operation that is much easier to perform
than its reverse operation.

Table of Contents

Geometric Introduction to Elliptic Curves

Algebraic Introduction to Elliptic Curves

Abelian Group and Elliptic Curves

Discrete Logarithm Problem (DLP)

Generators and Cyclic Subgroups

tinyec - Python Library for ECC

ECDH (Elliptic Curve Diffie-Hellman) Key Exchange

ECDSA (Elliptic Curve Digital Signature Algorithm)