Există confuzie cu privire la terminologia curbei eliptice în această întrebare. Să ne ocupăm de unele dintre ele;
Curba eliptică
Din punct de vedere algebric, o curbă eliptică este
$$E(\mathbb{K}) := \{ (x, y) \in \mathbb{K}^2 \mid y^2+a_1xy+a_3y = x^3+a_2x^2+a_4x+a_6\ } \cup \{\mathcal O\}$$
$\{\mathcal O\}$ este punctul de la infinit adăugat ca extra care nu are reprezentare în forma geometrică a curbei.
Punctele sunt $(x,y)$ tupla asta satisface ecuația curbei deci nu sunt numere întregi!
Adăugarea punctelor
Adăugarea punctului are o semnificație geometrică foarte bine. În poza de mai jos $P,Q,R$ reprezintă punctele de pe curbă şi $\{\mathcal O\}$ este reprezentat ca $0$
și extragem ecuații aritmetice de la aceasta ( regula acordurilor tangente). Pentru detalii despre extracție, uitați-vă la Capitolul 2 din cartea lui Washington.
Punctele unei curbe formează un grup abelian sub operatorul de adăugare de puncte cu elementul de identitate $\{\mathcal O\}$.
Înmulțirea scalară
Când adăugăm un punct $P$ la sine spunem dublarea unei persoane scrie ca $2P$, cu toate acestea, modalitatea comună și mai bună de a o scrie este $[2]P$. Asa de $[2]P = P + P$.
În mod similar, putem vorbi despre adăugarea de trei ori, de patru ori sau $t$ ori.
$$[t]P : = \underbrace{P + P + \cdots + P}_{t-time}$$
Aceasta este ceea ce numim înmulțirea scalară (de fapt un Z-Module pentru grupuri abeliene)
Generator
Un generator al unui grup ciclic este un element $G$ astfel încât când $G$ s-a adăugat din nou și din nou, va genera toate elementele grupului (Ne pare rău pentru teoreticianul grupului, literele majuscule se ciocnesc aici - un element $g$ a unui grup $G$ este generator dacă $\langle g \rangle = G$).
Ordin
Comanda are două utilizări în ECC
Ordinea curbei eliptice $|\#E(\mathbb{K})|$ înseamnă numărul de elemente ale curbei
Ordinea unui element.
Când curba are ordinea primă ca în Secp256k1, atunci fiecare element are aceeași ordine ca și ordinea curbei și aceasta implică că fiecare element este un generator.
Înapoi la întrebarea ta
În Secp256k1, punctul de bază
G = (55066263022277343669578718895168534326250603453777594175500187360389116729240,
83121579216557378445487899878180864668798711284981320763518679672151497189239)
și ordinea punctului de bază $n$ este
n = 115792089237316195423570985008687907852837564279074904382605163141518161494337
Ordinul înseamnă că $[n]G = \mathcal{O}$ și putem folosi acest lucru pentru a deriva ecuația de mai jos
$$[k]P = [ k \bmod n]P$$
Deci ceea ce faci este cu $+2$ este
$$[n-1]G + [2]G = [n-1+2]G = [n+1]G = [1]G = G$$
Deci ceea ce faci este cu $+1$ este
$$[n-1]G + [1]G = [n-1]G = [n]G = \mathcal{O}$$
Să terminăm cu verificarea SageMath;
#secp256k1
p = Integer ("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2F")
a = Integer ("0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
B = INTEGER ("0x0000000000000000000000000000000000000000000000000000000000000007")
K = GF(p)
E = Curba eliptică(K,[a,b])
imprimare(E)
G = E(Integer("0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"),
Număr întreg ("0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8"))
print("\nG =",G)
n = G.ordine()
print("ordinea \nG =",n)
G2 = 2*G
Q = (n-1)*G + 2*G
print("\n[n-1]G+[2]G =",Q)
afirmă (Q == G)
R = (n-1)*G +G
print("\n[n-1]G+G =",Q)
imprimare(R)
iar ieșirea este
Curba eliptică definită de y^2 = x^3 + 7 peste câmp finit de dimensiune 11579208923731619542357098500868790785326998466564056403945758400790868636
G = (55066263022277343669578718895168534326250603453777594175500187360389116729240 : 32670510020758816978083085130507043184471273380659243275938904335757337482424 : 1)
Comanda lui G = 115792089237316195423570985008687907852837564279074904382605163141518161494337
[n-1]G+[2]G = (55066263022277343669578718895168534326250603453777594175500187360389116729240 : 32670510020758816978083085130507043184471273380659243275938904335757337482424 : 1)
[n-1]G+G = (55066263022277343669578718895168534326250603453777594175500187360389116729240 : 32670510020758816978083085130507043184471273380659243275938904335757337482424 : 1)
(0 : 1 : 0)