Puncte:2

Transport de la Ed25519 la X25519

drapel ru

Folosind

montgomeryX = (edwardsY + 1)*invers(1 - edwardsY) mod p

este posibil să transportați un punct de curbă Edwards (Ed25519 cheie publică) la curba Montgomery. Are vreun efect secundar dacă Ed25519 cheia publică nu este validă, de exemplu, în cazul unui subgrup mic sau al unui atac de curbă invalid?

Și dacă da, care ar fi cea mai bună soluție pentru a gestiona asta corect?

kelalaka avatar
drapel in
De ce vrei să transformi? Doriți să utilizați aceeași cheie pentru ed25519 și DHKE X25519? Sunt [birațional echiuvalent](https://ed25519.cr.yp.to/ed25519-20110926.pdf) întrebați [validare de 25519 puncte](https://crypto.stackexchange.com/q/87709/18298) sau [schimb de chei X22519](https://crypto.stackexchange.com/a/68129/18298)?
FooBar avatar
drapel ru
Scopul meu este să creez un secret partajat folosind x25519 ECDH, dar protocolul existent partajează cheile ed25519. Deci, pentru a fi puțin confuz, ambele.
kelalaka avatar
drapel in
Despre ce protocol vorbesti? X25519 este proiectat pentru ECDH. Cel care folosește Ed25529 pentru ECDH îl folosește incorect. Vezi libsodium..
FooBar avatar
drapel ru
nu un protocol public, adică o etapă inițială a criptării interne a conexiunii noastre. Planul este de a crea un secret partajat folosind cheia publică ed25519 transportată de curba Montgomery. Desigur, ECDH pe ed25519 nu este scopul.
kelalaka avatar
drapel in
Mai bine generați o cheie aleatorie uniformă și utilizați un KDF, cum ar fi HKDF, care are două chei diferite. Este mai bine decât să folosiți o singură cheie pentru ambele. Unul a dispărut totul!
kelalaka avatar
drapel in
Și conversia este $$x = \frac{u}{v}\sqrt{-486664}, \quad y = \frac{u - 1}{u + 1}$$ și folosește XEd25519 așa cum este folosit de Signal folosește Curve25519?
FooBar avatar
drapel ru
văd punctul tău. Până acum am văzut o mână de implementare care face x25519 ECDH folosind perechea de chei ed25519, care traversează punctul curbei Edwards către curba Montgomery. Este o practică proastă?
kelalaka avatar
drapel in
Fii atent, semnalul folosește [clichet dublu pentru ECHE](https://dspace.cvut.cz/bitstream/handle/10467/76230/F8-DP-2018-Rubin-Jan-thesis.pdf?sequence=-1) astfel încât să se poată avea chei efemere.
knaccc avatar
drapel es
Există vreun motiv pentru care nu puteți să creați o pereche de chei X25519 proaspătă și efemeră pentru fiecare ECDH și să cereți fiecărei părți să semneze cheia publică X25519 cu cheia Ed25519? Asta ar asigura secretul direct. Și dacă există un motiv întemeiat pentru a avea chei pe termen lung pentru ECDH, există vreun motiv pentru care oamenii nu pot prezenta atât o cheie publică Ed25519, cât și o cheie publică X25519 altora? Au doar 32 de octeți fiecare.
kelalaka avatar
drapel in
@knaccc da, așa este. Am văzut comentariul tău acum.
Puncte:3
drapel in

Curve25519 și Ed25519

A curba Montgomery definite pe un câmp $K$ este definit ca; $$M_{A,B}: Bv^2 = u^3 + Au^2 + u$$ cu siguranta $A,B \în K$ si cu $B(A^2-4) \neq 0$.

Curba25519 folosește prim $q = 2^{255} â 19$ pentru a forma câmpul finit $\mathbb{F}_q$ și mai întâi definit pentru ECDH și ulterior denumit X25519. Ecuația Montgomery este $$v^2 = u^3+486662 u^2+u$$ cu $486664$ este un pătrat în $\mathbb{Z}_p$, adică este un reziduu cuadratic (QR). $u = 9$ a ales ca punct de bază. Forma Weierstrass (o nevoie pentru SageMath)

$$y^2 = x^3 + A x + B $$

Această curbă âCurve25519â este echivalent biraţional peste $\mathbb{Z}_p$ la curba Edwards Ed25519 $$x^2 + y^2 = 1 + (121665/121666)x^2y^2$$ cu;

$$x = \frac{\sqrt{486664}u}{v}, \quad y = \frac{(u â 1)}{(u + 1)}$$

Reversul este operațiunile este;

$$u = \frac{(y + 1)}{(1 - y)}, \quad v = \frac{\sqrt{486664}u}{x}$$

Forma Edward are o curbă izomorfă

$$-x^2 + y^2 = 1 - (121665/121666)x^2y^2$$ de cand $-1$ este QR într-un $\mathbb Z_p$


Întrebări

montgomeryX = (edwardsY + 1)*invers(1 - edwardsY) mod p este posibil să transportați un punct de curbă Edwards (ed25519 cheie pubiană) la curba Montgomery.

Da, așa cum este menționat mai sus, de la Montgomery la Edwards $$u = \frac{(y + 1)}{(1 - y)}$$

Are efecte secundare dacă cheia publică ed25519 nu este validă, de exemplu, în cazul unui subgrup mic sau al unui atac de curbă invalid?

Cheia Edward25519 poate fi convertită în Curve25519 și dacă deja cheia secretă este construită cu responsabilitatea legitimă a utilizatorului

  • Se presupune că utilizatorii legitimi generează chei secrete aleatorii uniforme independente. Un utilizator poate, de exemplu, genera 32 de octeți uniformi aleatori, șterge biții 0, 1, 2 ai primului octet, șterge bitul 7 al ultimului octet și setează bitul 6 al ultimului octet.

Într-o definiție setată, vrem cheile secrete ale X25519 ca

$$\{n: n \în 2^{254} +8\{0,1,2,\dots,2^{251}-1 \}\},$$ cu alte cuvinte, selectați un număr aleator uniform între $[0,2^{251}-1]$ inmultiti-l cu $8$ decât adaugă $2^{254}$.

Ordinea punctului de bază este (little-endian);

edd3f55c1a631258d69cf7a2def9de14000000000000000000000000000000010

Poiana $0,1,2$ se asigură că

Mai jos este valoarea maximă (little-endian) și putem vedea că acolo două chei private pot avea aceeași cheie publică, totuși, acesta este un eveniment neglijabil, dar de găsit.

0x8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7

atunci nu este nevoie, deoarece echivalența birațională va produce puncte care nu au o ordine mică dacă utilizatorul legitim a folosit deja regulile.

Sub echivalența birațională a Curve25519 și Edwards25519, fiecare cheie publică X25519 corespunde cu două chei publice Ed25519 posibile). X25519 utilizează numai $x$ coordonată (unde vine numele) și Ed25519 folosește coordonatele punctelor. Când avem doar $x$ coordonata unui punct, există două puncte posibile $(x,y)$ și $(x,-y)$ cu exceptia $y=0$.

Și dacă da, care ar fi cea mai bună soluție pentru a gestiona asta corect?

Nu există pericol de Validarea punctelor.


Câteva în plus

Folosind aceeași cheie

Nu pot spune direct că este nesigur, cu toate acestea, regula noastră generală este să nu folosim aceeași cheie în scopuri diferite. Până când cineva dovedește că nu există niciun pericol să te ții departe de a folosi aceeași cheie în scopuri diferite.

Ar putea fi mai bine să aveți o cheie uniformă aleatorie de 256 de biți și să obțineți două chei cu HKDF-expand atât pentru X25519, cât și pentru Ed25519.

X25519

Amintiți-vă că cheia publică este fixă ​​și când executați un DHKE înseamnă că aveți DHKE static-static. Acest lucru nu are secret. Cu atât mai bine este ceea ce face protocolul Signal; clichet dublu și puteți semna noua cheie publică cu Ed25519.

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.