EC Cryptography Tutorials - Herong's Tutorial Examples - v1.03, by Herong Yang
"sect283r1" - For 256-Bit ECC Keys
This section describes 'sect283r1' elliptic curve domain parameters for generating 256-Bit ECC Keys as specified by secg.org.
What Is "sect283r1"? "sect283r1" is a specific elliptic curve and associated domain parameters selected and recommended by SECG (Standards for Efficient Cryptography Group). See "SEC 2: Recommended Elliptic Curve Domain Parameters" at secg.org/sec2-v2.pdf.
The "t283r1" part of the "sect283r1" name indicates:
t Field type = Binary field 283 Key size = 283 r Curve type = Verifiably Random 1 Sequence = 1
"sect283r1" domain parameters (m, f(x), b, G, n, h)
m: The degree of the binary field:
m = 283
f(x): The primitive polynomial of the field:
f(x) = x^283 + x^12 + x^7 + x^5 + 1 The associated elliptic curve: y^2 + xy = x^3 + ax^2 + b
a: The first coefficient of the elliptic curve:
a = 0x01
b: The second coefficient of the elliptic curve:
b = 0x027B680AC8B8596DA5A4AF8A19A0303FCA97FD7645309FA2A581485AF6263E313B79A2F5
G: The generator (base point) of the subgroup:
G =(0x05F939258DB7DD90E1934F8C70B0DFEC2EED25B8557EAC9C80E2E198F8CDBECD86B12053,
    0x03676854FE24141CB98FE6D4B20D02B4516FF702350EDDB0826779C813F0DF45BE8112F4)
n: The order of the subgroup:
n = 0x03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF90399660FC938A90165B042A7CEFADB307
h: The cofactor of the subgroup:
h = 2
Verify domain parameters with Python - There is no easy way to perform arithmetic operations on binary polynomials. I need to find a Python package to do this later.
Generate a "sect283r1" key pair with OpenSSL
herong> openssl ecparam -genkey -name sect283r1 \
  -out sect283r1.pem -param_enc explicit
herong> openssl ec -in sect283r1.pem -noout -text
Private-Key: (282 bit)
priv:
    00:bf:68:27:3f:c9:5e:a9:08:c7:94:51:01:f4:0d:
    b3:79:26:11:81:30:27:af:eb:8a:2d:1b:a3:ca:33:
    e7:ff:64:5f:8a:5f
pub:
    04:05:83:51:2b:0b:16:9d:61:11:3d:95:13:fb:89:
    7f:bd:8f:bd:23:6b:a2:07:b2:bd:78:65:2b:a5:97:
    44:fa:fb:3d:ea:57:55:00:ab:ce:72:6a:91:38:ac:
    25:46:36:e3:0f:8f:f7:18:e3:d9:1e:69:14:86:78:
    1d:8f:fc:a0:68:8e:fb:dd:c3:dd:00:a9:4f
Field Type: characteristic-two-field
Basis Type: ppBasis
Polynomial:
    08:00:00:00:00:00:00:00:00:00:00:00:00:00:00:
    00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:
    00:00:00:00:10:a1
A:    1 (0x1)
B:
    02:7b:68:0a:c8:b8:59:6d:a5:a4:af:8a:19:a0:30:
    3f:ca:97:fd:76:45:30:9f:a2:a5:81:48:5a:f6:26:
    3e:31:3b:79:a2:f5
Generator (uncompressed):
    04:05:f9:39:25:8d:b7:dd:90:e1:93:4f:8c:70:b0:
    df:ec:2e:ed:25:b8:55:7e:ac:9c:80:e2:e1:98:f8:
    cd:be:cd:86:b1:20:53:03:67:68:54:fe:24:14:1c:
    b9:8f:e6:d4:b2:0d:02:b4:51:6f:f7:02:35:0e:dd:
    b0:82:67:79:c8:13:f0:df:45:be:81:12:f4
Order:
    03:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:
    ff:ff:ff:ef:90:39:96:60:fc:93:8a:90:16:5b:04:
    2a:7c:ef:ad:b3:07
Cofactor:  2 (0x2)
Seed:
    77:e2:b0:73:70:eb:0f:83:2a:6d:d5:b6:2d:fc:88:
    cd:06:bb:84:be
The printed domain parameters (A, B, Generator, Order, Cofactor) match well with (a, b, G, n, h) specified by secg.org. Remember that OpenSSL prints "Generator" as 0x04<G.x><G.y>.
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)
ECES (Elliptic Curve Encryption Scheme)
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