Puncte:2

Modulul p în Criptografia cu curbă eliptică

drapel vn

Pentru a realiza criptografia cu curbe eliptice între părți, toate ecuațiile curbei eliptice sunt considerate a fi sub forma $\bmod p$?

De exemplu, cel $secp256k1$ Curba Bitcoin a ecuației $y^2=x^3+7$ utilizări $\bmod p$, Unde $p=2^{256}-2^{32}-977$.

Puncte:5
drapel ng

Pentru a efectua criptografia cu curbe eliptice între părți, toate ecuațiile curbei eliptice sunt considerate a fi sub forma $\bmod p$?

Da pentru secp256k1 când vine vorba de coordonatele punctului, dar nu pentru fiecare curbă.

Curbele eliptice utilizate pentru criptografie operează cu coordonatele în a Câmpul Galois $\mathbb F_q$. Trebuie să țină $q=p^m$ pentru unele prime $p$, și $m\ge1$. The $\bmod p$ cazului corespunde $m=1$și este cel mai comun și recunoscut (Ed25519, secp256k1, secp256r1 sunt exemple). O altă alegere relativ comună este $q=2^m$, vezi de ex. sec2v2 secțiunea 3. Sunt folosite și alte valori, de ex. $q=9767^{19}$ Acolo.

$2^m$ are avantaje de viteză în hardware sau atunci când multiplicarea numerelor întregi este costisitoare din cauza propagării pe biți. Mai general, $p^m$ cu un echilibru în mărime de $p$ și $m$ poate ușura implementarea paralelă.


În plus: chiar și pentru curbe cu coordonate în $\mathbb F_p$ cu $p$ prim ca secp256k1, unele calcule care implică scalari care înmulțesc punctele curbei (inclusiv calculele care implică cheia privată) sunt efectuate modulo ordinea curbei, notată adesea $n$ și prim, și diferit de $p$.

poncho avatar
drapel my
Da, puteți utiliza curbe eliptice definite peste câmpuri de extensie (care, pentru public, sunt câmpuri $\mathbb{F}_{p^k}$ pentru $k > 1$); pe de altă parte, curba secp256k1 despre care a întrebat și, de altfel, pentru curbele pe care le folosim în prezent 99% din timp, sunt curbe prime - adică curbe pe care le putem face calculele modulo $p$
Puncte:3
drapel in

Primul în definiția curbei Secp256k1

Primul $p$ face parte din proiectarea, analiza și definiția curbei care definesc $\mathbb{F_P}$. Dacă cineva folosește un alt $p$ apoi au curbe diferite care trebuie analizate apoi publicate și distribuite pentru a comunica cu această curbă.

Pentru a comunica $p$, ecuația curbei ( aici $(a,b)$), punctul de bază $G$, punctul de la infinit, ordinea curbei $n$, și co-factor $h$ sunt prevăzute în standard.

Acesta este sextupul $T = (p,a,b,G,n,h)$ si pentru Secp256k1 este;

  • ''p'' = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
  • = $2^{256} - 2^{32} - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1$

Curba $E: y^2 = x^3+ax+b$ peste $\mathbb{F}_p$ este definit de:

  • „a” = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  • „b” = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000007

Punctul de bază G în formă comprimată este:

  • „G” = 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 și în formă necomprimată este:
  • ''G'' = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBD108FC 08E4817FBD4 08E4817FB48FD108FD4F8F81FD4 În cele din urmă, ordinea „n” a lui „G” și cofactorul sunt:
  • ''n'' = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
  • ''h'' = 01

The $a,b,p,G$ sunt suficiente pentru a comunica, cu toate acestea, nu este nevoie să recalculăm restul.


Un mic exemplu pentru a demonstra că sunt complet diferiți.

K = GF(19)
E = Curba eliptică(K,[0,7])
imprimare(E)
print(E.order())
print(E.abelian_group())

atunci $n = 12$ iar grupul curbei este izomorf la $\mathbb{Z}_6 \oplus \mathbb{Z}_2$

K = GF(31)
E = Curba eliptică(K,[0,7])
imprimare(E)
print(E.order())
print(E.abelian_group())

atunci $n = 21$ iar grupul curbei este izomorf la $\mathbb{Z}_{21}$

Desigur, este posibil să găsiți două tupluri, $(p_1,a_1,b_1)$ și $(p_2,a_2,b_2)$ astfel încât să aibă aceleași grupuri de puncte.Aceasta nu este preocupare, este nevoie doar de sextupul standardizat.

Suntem limitati la $\mathbb{F}_p$?

Dacă întrebați, ar trebui să folosim întotdeauna câmpul prim $\mathbb{F}_p$ atunci raspunsul este nu. Orice câmp finit $\mathbb{F}_{p^m}$ este bine atâta timp cât sigur și rapid. Vedea a lui Fgrieu raspunde pentru detalii.

Ordinea grupului de curbe

Unele curbe precum secp256k1 sunt proiectate pentru a avea ordine primă (adică numărul de puncte este prim). Alții precum Curve25519 și Curve448 nu au comenzi prime. Acest lucru îi ajută să aibă o reprezentare Montgomery care are o înmulțire scalară rapidă cu Montgomery Ladder. Alții pot avea o scară Joyce mai puțin eficientă.

Nu vrem ca ordinea curbei să fie egală cu $p$ în acest caz, curba este o curbă anormală și nu este sigură.

Modulul în înmulțirea scalară

The înmulțirea scalară $[k]P$ aceasta înseamnă de fapt adăugarea $P$ în sine $k$-ori. Mai formal;

lăsa $k \in \mathbb{N}\backslash\{ 0\}$

\begin{align} [k]:& E \la E\ &P\mapsto [k]P=\underbrace{P+P+\cdots+P}_{\text{$k$ ori}}.\end{align}

și prin a fi identitate $[0]P = \mathcal{O}$.

Când calculăm acest lucru, folosim ordinea punctelor $P$, dacă curba are ordine primă ca secp256k1, atunci toate elementele, cu excepția identității, au aceeași ordine primă. Avem această egalitate

$$[k]P = [k \bmod \text{ord}(P)]P$$

iar noi folosim $P$este cu ordinul principal pentru a atenua atacurile.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.