Puncte:1

Verificați că coordonatele x, y date ca șir hexagonal sunt puncte valide pe o curbă eliptică

drapel cn

Având în vedere următoarele informații:

"curba": "P-256",

"qx": "729C51D177EBE2079A0FB7B0B3C2145159CF81EC61960E642A1744719AA9F913",

„qy”: „8C36BCF51475016E614F8C7E0CB1B37C7EA65B4ECCF809852C9B2D0E438710BD”

Se presupune că coordonatele de mai sus sunt valide conform rezultatelor așteptate ale vectorului de testare:

„testPassed”: adevărat

Trebuie să determin dacă coordonatele cheii publice de mai sus sunt puncte valide pe curbă sau nu. Am încercat să convertesc coordonatele din python în int cu:

>>> x = int("7C96DFF02F55B876A2A885A920E9FB5E30C6E1A4061A62517FD5C936A16AD363", 16)
>>> y = int("301ABC6B82DF5B6B6D3E8D56D7660D83A6E4F55E321BD2E57A5AC4A6A683374E", 16)

Și apoi a conectat acele valori întregi în ambele formule următoare:

y^2 = X^3 + 7 (secp256k1)

y^2 = x^3 - 3x + b unde b este 41058363725152142129326129780047268409114441015993725554835256314039467401291

În niciunul dintre cazuri formula nu a indicat că valorile erau valide.

S-ar întâmpla cineva să știe cum aș putea să validez aceste coordonate?

poncho avatar
drapel my
Pentru P256; este formula $y^2 \equiv x^3 - 3x + b \pmod p$. Ți-ai amintit să faci partea $\bmod p$?
factor2 avatar
drapel cn
Ah, cu siguranță am greșit formula pentru că am omis componenta mod p. Cum pot scoate acea componentă din coordonatele x, y?
poncho avatar
drapel my
Dacă știți că verificați o curbă P256, aceasta vă oferă valoarea $p$
factor2 avatar
drapel cn
Bine, tot ajung să obțin o valoare greșită. După conversie, primesc următoarele valori x și y: x = 56353365848849265321159620645865428036014544177922197398856507648435978687331 y = 21758255182490996347272889474463336439598185139152900800520689763795259832142 Acest lucru îmi dă un (y^2) % 256 = 196 și a (x^3 -3x + b) % 256 = 93 Valoarea mea constantă b este poate greșită?
factor2 avatar
drapel cn
iar cu prima ecuație obținem (x^3 + 7) %256 = 66
Ievgeni avatar
drapel cn
De ce faci %256? Ar trebui să faci %$p$.
factor2 avatar
drapel cn
Oh, am presupus din comentariul de mai sus că eram prost și că valoarea p ar fi valoarea curbei (adică 256). Cred că tot eram prost. Aș putea obține un link către documentația care arată valoarea p?
kelalaka avatar
drapel in
@ponco problema este aceasta: curba nu este corectă. Ar trebui să fie secp256r1. Punctul curent nu este pe curba secp256k1, ci pe curba secp256r1.
kelalaka avatar
drapel in
Acum pot numi acest lucru înșelat [Verificați că un punct îi aparține secp256r1](https://crypto.stackexchange.com/a/90154/18298)
factor2 avatar
drapel cn
Mulțumesc Kelalaka, nu mi-am dat seama că sunt pe curba greșită. Foarte apreciat
factor2 avatar
drapel cn
O scurtă privire pare că da, va fi. Nu am reușit să-l testez deoarece am fost atras într-o întâlnire. Nu mă voi întoarce la ea în altă oră și ceva. Îl voi marca când revin pe el
factor2 avatar
drapel cn
Ei bine, asta a fost mai rapid decât se aștepta. Da, funcționează cu curba secp256r1
Puncte:0
drapel cn

După cum ai scris, ar trebui să verifici asta $y^2 = x^3 + ax + b \mod p$.

Conform această sursă.

$$p = 2^{256}-2^{224}+2^{192}+2^{96}-1$$

Observați că $256$ se referă la dimensiunea biților a $p$, și nu să $p$ în sine.

factor2 avatar
drapel cn
Un comentator de mai sus a subliniat că sunt pe o curbă greșită, dar vreau să vă mulțumesc pentru link-ul către acea documentație, cunoștințe bune pentru mine să citesc în general

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.