Puncte:2

Curve448 - Materialul cheii Ed448 poate fi reutilizat pentru X448?

drapel in

În prezent mă confrunt cu o situație în care perechile de chei Ed448 (cheie privată + cheie publică) sunt disponibile și sistemul ar trebui extins printr-o operațiune Diffie-Hellman (ECDH). În primul rând, permiteți-mi să rezumam ceea ce am înțeles până acum.

Ed448: Este algoritmul de semnătură digitală pe edwards448.

X448: Este construirea funcției Diffie-Hellman pentru Curve448.

Curba448: este o curbă eliptică în format Montgomery, așa cum este specificat în RFC7748.

Edwards448: Este o curbă eliptică care este legată de Curba448 printr-o hartă, așa cum este specificat în RFC7748.

Pentru Curve25519 am citit Curve25519 peste Ed25519 pentru schimbul de chei? De ce? și pentru mine s-a părut că este posibil să transform o cheie publică Ed25519 existentă într-o cheie X25519 prin aplicarea unei hărți definite. Cumva, nu sunt atât de familiarizat cu toată matematica folosită aici. Apoi, după câteva citite, am găsit Ce înseamnă „echivalență birațională” într-un context criptografic? care mi-a oferit mai multe perspective. Apoi am citit RFC7748 din nou și am văzut că echivalența birațională este adevărată și pentru Curve448. În plus, există definiția „edwards448” care oferă și o hartă între punctele curbei Montgomery și Edwards. Harta de utilizat este definită astfel:

$$ (u, v) = (\frac{y^2}{x^2}, \frac{(2 - x^2 - y^2)*y}{x^3}) $$

Dacă am înțeles corect referințele de mai sus, ar trebui să fie capabil să transforme cheia publică într-o coordonată care să fie utilizată în funcția X448. Excepția este că în caz $x$ din ecuația de mai sus este 0, atunci harta nu poate fi aplicată și nu este posibilă transformarea. În plus, capitolul legat de Curve448 în Criptograf cu curbă elipticăx Ecc mă conduce în aceeași direcție în care ar putea fi posibil să transform materialul cheie existent și să îl reutilizam ulterior pentru X448. Dacă am înțeles corect, cheia privată din ECC este un număr întreg în loc de un „punct de curbă”.

Acum sunt curios dacă este într-adevăr posibil să transformi o pereche de chei existentă, astfel încât să poată fi reutilizată pentru ECDH și cum.Sau dacă este necesar să „introduceți” o a doua pereche de chei numai pentru ECDH. Prin urmare, cer ajutor pentru că sunt nou în acest subiect.

Puncte:4
drapel es
  1. Nu trebuie să convertiți cheia publică Edwards448 în cheia publică Curve448 echivalentă birațional pentru a face ECDH. Puteți rămâne doar la Edwards448. Va exista un câștig de performanță dacă utilizați Curve448, dar, în funcție de implementarea dvs., acest câștig de performanță ar putea fi în mare parte compensat de conversia pe care verificatorul va trebui să o facă pentru a obține cheia publică Curve448 din cheia publică Edwards448. Veți folosi funcția de „multiplicare scalară” a bibliotecii dumneavoastră Edwards448 EC pentru a efectua operația ECDH.

  2. Cheile private EC sunt „scalare”, ceea ce înseamnă un număr întreg pozitiv mai mic decât dimensiunea grupului punctului generator de pe curba respectivă. Cheile publice sunt puncte de pe curbă și sunt perechi de coordonate „element de câmp”. Un element câmp este un număr întreg pozitiv mai mic decât primul $p = 2^{448} - 2^{224} - 1$.

  3. Dacă decideți să convertiți de la Edwards448 la Curve448, atunci acele puncte vor împărtăși exact aceeași cheie privată scalară.Rețineți că, datorită modului în care X448 utilizează numai coordonatele x Curve448 în timpul acordului cheie variabilă-bază-scalar-multiplicare, maparea va fi astfel încât ambele puncte Edwards448 $P$ și $I-P$ va mapa la același punct de curbă a acordului cheie X448 (unde $I$ este punctul Edwards448 la infinit). Din fericire pentru tine, cartografiezi de la Edwards448 la Curve448, ceea ce înseamnă că nu te găsești cu o ambiguitate.

  4. Conversia de la Edwards448 la Curve448 este pur și simplu: $$\texttt{curva448}_{x-coord} = \left(\frac{\texttt{ed448}_{y-coord}}{\texttt{ed448}_{x-coord}}\right)^2 $$ Rețineți că „diviziunea” se realizează prin înmulțire cu un invers multiplicativ modular. Biblioteca dvs. EC ar trebui să vă ofere această funcționalitate. Operatiile sunt facute $mod\ p$.

  5. Rețineți că Ed448 va începe cu o cheie privată „brută” de 57 de octeți, o va distribui cu SHAKE256, va șterge octetul cel mai semnificativ, va forța bitul cel mai semnificativ al celui de-al doilea octet cel mai semnificativ la 1 și va șterge cei doi octeți cel mai puțin semnificativ. biți cei mai puțin semnificativi. Prin urmare, este versiunea hashed și modificată a cheii private Ed448 brute pe care trebuie să o utilizați în mod identic cu Curve448. Cheile Curve448 au 56 de octeți și este sigur să tăiați cel mai semnificativ octet al cheii Edwards448 modificate și modificate de 57 de octeți, deoarece cheia Edwards448 va conține întotdeauna zerouri în octetul cel mai semnificativ. Rețineți că, deoarece toate elementele câmpului sunt little-endian, „octetul cel mai semnificativ” este ultimul octet din matricea de octeți.

  6. Este interesant de observat că implementarea BouncyCastle X448 efectuează o înmulțire scalară cu punctul de bază Curve448 solicitând implementării BouncyCastle Ed448 să efectueze înmulțirea scalară a exact același scalar față de punctul de bază Ed448. BouncyCastle convertește apoi rezultatul înapoi în punctul echivalent Curve448 folosind aceeași formulă specificată la punctul 4 de mai sus. Vezi codul Aici.

drapel tr
Nu cred că (4) este corect; aceasta ar fi „harta obișnuită”, dar edwards448 este o izogenie cu 4, așa cum a menționat OP, ar trebui să fie $u=y^2/x^2$
knaccc avatar
drapel es
@Conrado mulțumesc, ai dreptate, am citit greșit RFC7748. Exact așa cum ați observat, varianta Edwards a Curve448 pentru care se aplică vechea mea formulă nu este aceeași cu maparea necesară pentru Edwards448. Am reparat răspunsul și am scris un cod pentru a verifica de două ori dacă răspunsul funcționează.
drapel in
@knaccc mulțumesc pentru răspuns. Am o întrebare legată de (5). Este corectă înțelegerea mea că nu se poate folosi direct cheia privată a unei perechi de chei existente pentru X448. Dar, în schimb, algoritmul menționat în [RFC8032](https://datatracker.ietf.org/doc/html/rfc8032#section-5.2.5) până la pasul 3 inclusiv (exclusă multiplicarea) trebuie aplicat pentru a obține secretul scalar s? Pentru mine primii pași sunt aceiași ca în [RFC7748](https://datatracker.ietf.org/doc/html/rfc7748#section-5). Vrei să spui asta în (5)?
knaccc avatar
drapel es
@dbog Da, așa este, ceea ce am descris la punctul 5 este ceea ce este descris în pașii 1-3 din secțiunea 5.2.5 din RFC8032. Aceasta este cheia privată pe care o utilizați pentru X448. Nu înțeleg în mod specific la ce vă referiți în RFC7748 - puteți clarifica vă rog?
drapel in
@knaccc mulțumesc pentru răspunsul rapid. În RFC7748 se precizează următoarele în secțiunea 5: „Se presupune că scalarii sunt octeți generați aleatoriu... De asemenea, pentru X448, setați cei doi biți mai puțin semnificativi ai primului octet la 0 și bitul cel mai semnificativ al ultimului octet la 1. Aceasta înseamnă că întregul rezultat este de forma 2^447 plus de patru ori o valoare între 0 și 2^445 - 1 (inclusiv)."
knaccc avatar
drapel es
Da, acordul cheii X448 ia cheia privată brută pe care i-o dați și face `&= 0xFC` pe primul octet și `|= 0x80` pe ultimul octet. Deoarece acest lucru a fost deja făcut la cheia privată brută Ed448 în timpul pașilor 1-3 din 5.2.5 din RFC8032, așa cum este descris în punctul meu 5 de mai sus, cheia Ed448 hashed și modificată pe care o utilizați pentru X448 nu va fi modificată de X448. prindere și va fi compatibil.
drapel in
@knaccc multumesc mult! Asta a raspuns la intrebarea mea :)

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.