Puncte:2

Generarea aleatorie a unui scalar valid pe curba aleasă

drapel cn

Implementarea mea cere să generez aleatoriu un scalar valid pe curbă. Din câte am înțeles, nu este o generare de numere aleatoare, ci un lucru mai complicat.

Trebuie să generez astfel de scalari pe server și pe partea clientului conform următoarei scheme:

Client:

X = x à G + w0 à M

Unde

  • x - scalar generat!

  • G - punctul de bază al curbei

  • w0 - un număr reprezentat de o matrice de 32 de octeți

  • M - punct constant pe curbă

  • X - punct rezultat

Server:

Y = y à G + w0 à N

Unde

  • y - scalar generat!
  • G - punctul de bază al curbei
  • w0 - un număr reprezentat de o matrice de 32 de octeți
  • N - punct constant pe curbă
  • Y - punct rezultat

Apoi clientul și serverul schimbă puncte X și Y.

Și calculați punctul Z după cum urmează:

  • Client: Z = x à (Y â w0 à N)
  • Server: Z = y à (X â w0 à M)

Întrebarea #1: care este mecanismul pentru generarea aleatorie scalară validă pe curbă?

Întrebarea #2: care este operația matematică din spatele scăderii punctelor?

kelalaka avatar
drapel in
Pentru generarea de puncte aleatoare: [Generarea unui punct aleatoriu pe o curbă eliptică peste un câmp finit](https://crypto.stackexchange.com/a/68603/18298) și adăugarea punctului și negativ este [aici](https:// crypto.stackexchange.com/q/66288/18298)
Puncte:1
drapel es

Scalarii nu sunt „pe curbă”. Scalarii sunt doar numere întregi pozitive (inclusiv zero) mai mici decât ordinea grupului $\ell$ a generatorului de curbe. De exemplu. pentru curba Ed25519, ordinea grupului $\ell$ este $2^{252} + 27742317777372353535851937790883648493$.

Pentru a genera un scalar aleator imparțial, utilizați „eșantionarea de respingere”. Aceasta înseamnă să folosiți un mecanism pentru a genera în siguranță un număr întreg uniform aleatoriu într-un interval care este cel puțin la fel de mare ca $\ell$, și acceptați-l numai dacă este mai mic decât $\ell$.

Toate operațiile scalare, inclusiv adunarea, înmulțirea și scăderea sunt efectuate $mod\ \ell$. Împărțirea se realizează prin găsirea a ceva numit „inversă multiplicativă modulară".

Operațiile cu puncte, cum ar fi scăderea punctelor, vor fi gestionate de biblioteca dvs. EC. Vedea Aici pentru mai mult.

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.