Algoritmul lui Shuf

Algoritmul lui Schuf  este un algoritm eficient [1] pentru numărarea numărului de puncte de pe o curbă eliptică peste un câmp finit . Algoritmul are aplicații în criptografia eliptică , unde este important să se cunoască numărul de puncte pentru a judeca dificultatea rezolvării unei probleme de logaritm discret pe un grup de puncte pe o curbă eliptică.

Algoritmul a fost publicat în 1985 de René Chouf și a fost o descoperire teoretică, deoarece a fost primul algoritm determinist de timp polinomial pentru numărarea punctelor pe o curbă eliptică . Înainte de algoritmul lui Schuf, abordările de numărare a punctelor pe curbele eliptice, cum ar fi algoritmul simplu de pași mici și mari , erau în cea mai mare parte laborioase și necesitau timp de rulare exponențial.

Acest articol explică abordarea lui Schuf, concentrându-se pe ideile matematice din spatele algoritmului.

Introducere

Fie  o curbă eliptică definită pe un câmp finit , unde pentru prim și întreg . Peste un câmp cu caracteristică o curbă eliptică poate fi dată (pe scurt) de ecuația Weierstrass

cu . Mulțimea punctelor definite peste este formată din soluții care satisfac ecuația curbei și punctul de la infinit . Dacă se folosește legea grupului pe curbele eliptice pe această mulțime, se poate observa că această mulțime formează un grup abelian , în care acționează ca element zero. Pentru a număra punctele pe o curbă eliptică, calculăm cardinalitatea mulțimii . Abordarea Schuf folosește teorema curbei eliptice a lui Hasse , împreună cu teorema chineză a restului și polinoamele de diviziune pentru a calcula cardinalitatea .

Teorema lui Hasse

Teorema lui Hasse afirmă că dacă este o curbă eliptică peste un câmp finit, atunci satisface inegalitatea

Acest rezultat puternic, obținut de Hasse în 1934, ne simplifică sarcina prin restrângerea la un set finit (deși mare) de posibilități. Dacă determinăm cum și folosim acest rezultat, obținem că calculul puterii modulo , unde , este suficient pentru a calcula , și deci pentru a obține . Deși nu există o modalitate eficientă de a calcula direct pentru numerele generale, este posibil să se calculeze pentru un prim mic destul de eficient. Alegem ca un set de numere prime diferite, astfel încât . Dacă este dată pentru toate , teorema chineză a restului vă permite să calculați .

Pentru a calcula pentru primul , folosim teoria endomorfismului Frobenius și polinoamele de diviziune . Rețineți că luarea în considerare a numerelor prime nu duce la probleme, deoarece putem alege întotdeauna un număr prim mai mare pentru a ne asigura că produsul este suficient de mare. În orice caz, algoritmul Schuf este cel mai des folosit pentru cazul , deoarece există algoritmi mai eficienți, așa-numiți -adici, pentru câmpuri cu caracteristică mică.

Endomorfismul Frobenius

Având în vedere o curbă eliptică definită peste , considerăm punctele peste , închiderea algebrică a câmpului . Adică, permitem punctelor să aibă coordonate în . Endomorfismul Frobenius se extinde pe o curbă eliptică cu o mapare .

Această hartă este identică și poate fi extinsă cu un punct până la infinit , făcându-l un morfism de grup de la sine.

Endomorfismul Frobenius satisface o ecuație pătratică legată de putere prin următoarea teoremă:

Teorema: Endomorfismul Frobenius dat de mapare satisface ecuația caracteristică

, Unde

Atunci pentru tot ce avem , unde + înseamnă adăugarea unei curbe eliptice și și înseamnă produsul scalar al unui punct pe și un punct pe [2] .

Puteți încerca să calculați aceste puncte sub formă simbolică și ca funcții pe inelul de coordonate de pe curbă și apoi căutați o valoare care satisface ecuația. Cu toate acestea, gradele se dovedesc a fi foarte mari și această abordare nu are valoare practică.

Ideea lui Schuf a fost să efectueze astfel de calcule, limitându-se la punctele de ordine pentru diverse numere prime mici . Fixând un număr prim impar, se trece la rezolvarea problemei determinării , definită ca , pentru un prim dat . Dacă punctul se află în subgrupul -torsion al lui , atunci , unde este singurul întreg astfel încât și . Rețineți că și că pentru orice număr întreg avem . Astfel, are aceeași ordine ca . Atunci pentru , care aparține de , avem și dacă . În consecință, ne-am redus problema la rezolvarea ecuației

unde si zace in interval .

Calcule modulo

Polinomul de diviziune cu indicele l  este un polinom astfel încât rădăcinile sale sunt exact coordonatele x ale punctelor de ordin l . Atunci restrângerea calcululuila punctele l -torsiune înseamnă calculul acestor expresii în funcție de inelul de coordonate E și modululpolinomului de l -a diviziune . Adică lucrăm în. Aceasta înseamnă, în special, că gradul de X și Y definit denu depășește 1 față de variabila y șifață de variabila x .

Produsul punctual poate fi realizat cu metoda dublei și adunării , sau cu polinomul diviziunii a-lea. A doua abordare oferă:

,

unde  este polinomul diviziunii a n- a. Rețineți că este o funcție numai a lui x , să notăm această funcție cu .

Trebuie să împărțim problema în două cazuri: cazul în care , și cazul în care .

Cazul 1:

Folosind formula de adunare pentru grupul , obținem:

Rețineți că acest calcul este imposibil dacă ipoteza inegalității eșuează.

Acum putem restrânge alegerea coordonatei x pentru două posibilități, și anume cazurile pozitive și negative. Folosind coordonata y , determinăm care dintre cele două cazuri are loc.

Mai întâi arătăm că X este doar o funcție a lui x . Luați în considerare . Deoarece este par, prin înlocuirea cu , rescriem expresia ca

și avem

Acum, dacă pentru , atunci egalitatea este adevărată pentru

pentru toate punctele de P l -torsiune.

După cum am menționat mai devreme, folosind Y și , putem determina acum care dintre cele două valori ( sau ) funcționează. Dă sens . Algoritmul lui Schoof reține valorile dintr-o variabilă pentru fiecare prim l considerat .

Cazul 2:

Să presupunem că . Deoarece l este un număr prim impar, este imposibil pentru , și, prin urmare, . Din ecuația caracteristică rezultă că , și deci că . Rezultă că q este un pătrat modulo l . Lasă . Calculați și verificați dacă . Dacă da, atunci este , în funcție de coordonata y.

Dacă q nu este pătrat modulo l , sau dacă egalitatea eșuează pentru unele w și , presupunerea noastră este greșită, deci . Ecuația caracteristică dă .

Caz suplimentar

Amintiți-vă, acordurile noastre inițiale nu iau în considerare cazul . Deoarece am presupus că q este impar și, în special, dacă și numai dacă are un element de ordin 2. După definiția adunării într-un grup, orice element de ordin 2 trebuie să aibă forma . Astfel, dacă și numai dacă polinomul are rădăcină în , dacă și numai dacă mcd .

Algoritm

Intrare: 1. Curba eliptică . 2. Un întreg q pentru un câmp finit cu . Concluzie: Numărul de puncte E peste . Alegem un set de numere prime impare S , care nu conțin p , astfel încât Acceptăm dacă mcd , altfel acceptăm . Calculăm polinomul de diviziune . Toate calculele din bucla de mai jos sunt efectuate în inel Pentru că executăm : Fie singurul întreg astfel încât și . Calculăm , și . Dacă atunci Calculați . pentru a face : dacă atunci dacă atunci ; altfel . în caz contrar, dacă q este un pătrat modulo l , atunci calculați w cu calculate dacă atunci altfel dacă atunci altfel altfel Folosiți teorema chineză a restului pentru a calcula t modulo N din ecuația unde . Deducem .

Dificultate

Majoritatea calculelor implică calcularea și , pentru fiecare număr prim , adică calcularea , , , pentru fiecare număr prim . Calculele presupun exponențiere în inel și necesită înmulțiri. Deoarece gradul este , fiecare element din inel este un polinom de grad . Prin teorema numerelor prime, există aproximativ numere prime de mărime , care dă pentru , și obținem . Astfel, fiecare înmulțire din inel necesită înmulțiri în , care la rândul lor necesită operații pe biți. În total, numărul de operații pe biți pentru fiecare număr prim este . Presupunând că acest calcul trebuie făcut pentru fiecare dintre numerele prime, complexitatea totală a algoritmului lui Schuf devine . Utilizarea operațiilor polinomiale rapide și a aritmeticii întregi reduce acest timp la .

Îmbunătățiri ale algoritmului Schuf

În anii 1990, Noam Elkis și apoi A. O. L. Atkin au venit cu îmbunătățiri ale algoritmului de bază Schuf prin restrângerea setului de numere prime la numere de un anumit tip. Aceste numere au devenit cunoscute ca numere prime Elkis și, respectiv, prime Atkin. Un număr prim se numește prim Elkis dacă egalitatea caracteristică este descompunabilă peste , iar numerele prime Atkin sunt prime care nu sunt prime Elkis. Atkin a arătat cum se combină informațiile obținute din primii Atkin cu informațiile obținute din numerele prime Elkis pentru a obține un algoritm eficient, care a fost numit „ Algoritmul Schoof-Elkis-Atkin . Prima sarcină este de a determina dacă un prim dat este un prim Elkis sau Atkin. Pentru a obține acest lucru, folosim polinoame modulare, care apar atunci când studiem formele modulare și interpretăm curbele eliptice peste câmpul numerelor complexe ca rețele. Odată ce determinăm ce caz avem, în loc să folosim polinoame de diviziune , putem lucra cu polinoame care au grade mai mici decât polinoamele de diviziune: în loc de . Pentru o implementare eficientă, sunt utilizați algoritmi probabilistici de găsire a rădăcinii, ceea ce face din algoritm un algoritm Las Vegas , mai degrabă decât un algoritm determinist. În baza ipotezei euristice că aproximativ jumătate dintre numerele prime mai mici sau egale cu sunt numere prime Elkis, se obține un algoritm care este mai eficient decât algoritmul lui Schoof, iar timpul de rulare așteptat al acestui algoritm este , dacă se utilizează aritmetică obișnuită și , dacă se utilizează aritmetică rapidă. Trebuie remarcat faptul că această ipoteză euristică este adevărată pentru majoritatea curbelor eliptice, dar nu este cunoscută pentru cazul general, chiar dacă ipoteza Riemann generalizată este adevărată .

Implementări

Unii dintre algoritmi au fost implementați în C++ de Mike Scott și sunt disponibili în codul sursă . Implementarea este absolut gratuită (fără condiții, fără restricții), dar folosește biblioteca MIRACL , care este distribuită sub licența AGPLv3 .

Vezi și

Note

  1. Deși, articolul ECDSA spune următoarele: algoritmul lui Skoof este destul de ineficient în practică pentru valorile p care sunt cu adevărat de interes, adică p > 2 160 .
  2. Punctul mP, egal cu suma de m ori a punctului P din grupul aditiv al punctelor unei curbe eliptice, se numește produsul scalar al punctului și al numărului m , iar punctele mP în sine sunt numite multipli scalari ai punctul ( Rybolovlev 2004 ). În cartea lui Tiborg ( van Tilborg 2006 ) același concept este numit multiplu scalar.

Literatură