Algoritmul Gelfond-Shanks

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 28 decembrie 2019; verificările necesită 9 modificări .

Algoritmul Gelfond-Shanks ( ing.  Baby-step giant-step ; numit și algoritmul pașilor mari și mici ; de asemenea, puteți găsi foarte des algoritmul de potrivire a numelui , de exemplu, în cartea lui Vasilenko „Algoritmi teoriei numerice ale criptografiei” ) - în teoria grupurilor, un algoritm determinist de logaritmi discreti în grupul multiplicativ al inelului de reziduuri modulo un număr prim. A fost propus de matematicianul sovietic Alexander Gelfond în 1962 și Daniel Shanks în 1972 [1] [2] [3] .

Metoda simplifică teoretic soluția problemei logaritmului discret, pe a cărei complexitate de calcul sunt construite multe criptosisteme cu cheie publică . Se referă la metode de întâlnire la mijloc .

Domeniul de aplicare

Problema logaritmului discret este de mare interes pentru construcția de criptosisteme cu cheie publică . Pe ipoteza unei complexități de calcul extrem de ridicate a rezolvării acestei probleme, astfel de criptoalgoritmi se bazează, de exemplu, RSA , DSA , Elgamal , Diffie-Hellman , ECDSA , GOST R 34.10-2001 , Rabin și alții. În ele, criptoanalistul poate obține cheia privată luând logaritmul discret al cheii publice (cunoscută de toată lumea) și folosindu-l pentru a converti textul cifrat în textul mesajului. Cu toate acestea, cu cât este mai dificil să îl găsiți (cu cât trebuie să faceți mai multe operațiuni pentru a găsi logaritmul discret), cu atât criptosistemul este mai sigur . O modalitate de a crește complexitatea problemei logaritmului discret este de a crea un criptosistem bazat pe un grup cu o ordine mare (unde logaritmul va fi modulo un număr prim mare). În cazul general, o astfel de problemă se rezolvă prin enumerare exhaustivă , dar acest algoritm permite în unele cazuri simplificarea găsirii exponentului (reducerea numărului de pași) la calcularea modulo unui număr prim, în cel mai favorabil caz, prin rădăcina pătrată. de ori [4] , dar această reducere încă nu este suficientă pentru a rezolva problema pe un calculator electronic într-un timp rezonabil (chestiunea rezolvării problemei logaritmului discret în timp polinomial pe un computer personal este încă deschisă) [5] .

Problemă de logaritm discret

Să fie dat un grup ciclic cu generator , care conține elemente. Un număr întreg (în intervalul de la până la ) se numește logaritm de bază discretă al unui element dacă relația este adevărată:

Sarcina logaritmului discret este de a determina pentru dat .

Formal, problema logaritmului discret se pune după cum urmează [6] :

cu condiția ca acesta să nu existe și poate fi, de asemenea, fie un număr prim, fie un număr compus.

Teorie

Ideea algoritmului este de a alege raportul optim de timp și memorie , și anume, într-o căutare îmbunătățită a exponentului.

Să fie dat un grup ciclic de ordine , un generator al grupului și un element al grupului . Sarcina se reduce la găsirea unui număr întreg pentru care

Algoritmul Gelfond-Shanks se bazează pe reprezentarea în forma , unde , și enumerarea lui și . Restricția asupra și rezultă din faptul că ordinea grupului nu depășește , ceea ce înseamnă că intervalele indicate sunt suficiente pentru a obține toate cele posibile din semiinterval . Această reprezentare este echivalentă cu egalitatea

 

 

 

 

(unu)

Algoritmul precalculează pentru diferite valori și le stochează într- o structură de date care permite o căutare eficientă, apoi iterează peste toate valorile posibile și verifică dacă se potrivește cu o anumită valoare . Astfel, se găsesc indici și care satisfac relația (1) și ne permit să calculăm valoarea [7] .

Algoritm

Intrare : Un grup de ordine ciclică , un generator și un anumit element .

Ieșire : un număr care satisface .

  1. Calculați ← .
  2. Pentru orice unde ≤ ≤ :
    1. Scrieți la tabel ( , ). (Consultați secțiunea Implementare)
    2. ← •
  3. Pentru orice unde ≤ ≤ :
    1. Calculați .
    2. Verificați dacă tabelul conține.
    3. Dacă da, întoarceți  - .
    4. Dacă nu, continuați cu bucla [1] [2] [7] .

Justificarea algoritmului

Este necesar să se demonstreze că aceleași elemente din tabele există în mod necesar, adică există așa și , că . Această egalitate are loc în cazul , sau . Căci , inegalitatea este valabilă . Pentru perechi diferite și avem , deoarece altfel s-ar dovedi că cu alegerea indicată este posibil numai în cazul , și, prin urmare, . Astfel, expresiile iau toate valorile din intervalul de la până la , care, datorită faptului că , conține toate valorile posibile de la până la . Prin urmare, pentru unii și egalitatea [2] este valabilă .

Estimarea complexității unui algoritm

Să presupunem că trebuie să rezolvăm , unde și  sunt numere întregi pozitive mai mici decât . O modalitate este de a itera secvenţial de la la , comparând valoarea cu . În cel mai rău caz, avem nevoie de pași (când ). În medie, va fi nevoie de pași. În caz contrar, putem reprezenta ca . Astfel, problema se reduce la găsirea și . În acest caz, puteți rescrie sarcina ca sau . Acum putem itera toate valorile posibile din partea dreaptă a expresiei. În acest caz, acestea sunt toate numerele de la până la . Aceștia sunt așa-numiții pași mari. Se știe că una dintre valorile obținute pentru  este cea cerută. Putem înregistra toate valorile din partea dreaptă a expresiei într-un tabel. Putem calcula apoi valorile posibile pentru partea stângă pentru diferite valori ale . Acestea sunt toate numerele de la până la unul dintre care este cel dorit și împreună cu valoarea corectă a părții drepte dă rezultatul dorit pentru . Astfel, sarcina se reduce la sortarea diferitelor valori din partea stângă și căutarea lor în tabel. Dacă valoarea dorită este găsită în tabel, atunci am găsit , și, prin urmare, corespunzătoare . Această ilustrație demonstrează viteza algoritmului. În medie, se efectuează operațiuni. În cel mai rău caz, sunt necesare operații [3] .

Exemplu

Mai jos este un exemplu de rezolvare a problemei logaritmului discret cu o ordine de grup mic. În practică, criptosistemele folosesc grupuri de ordin superior pentru a îmbunătăți puterea criptografică .

Să fie cunoscut . La început, vom crea și completa tabelul pentru „pașii mari”. Să alegem ← ( ). Apoi va rula de la până la .

unu 2 3 patru 5
douăzeci 9 19 12 zece

Să găsim o valoare potrivită pentru , astfel încât valorile din ambele tabele să se potrivească

unu 2 3 patru
· cincisprezece 6 7 12

Se poate observa că în al doilea tabel pentru , o astfel de valoare este deja în primul tabel. Găsiți [2] .

Implementare

Există o modalitate de a îmbunătăți performanța algoritmului Gelfond-Shanks. Constă în folosirea unei scheme eficiente de acces la tabel. Cel mai bun mod este să utilizați un tabel hash . Ar trebui să aplicați hash pe a doua componentă și apoi să efectuați o căutare hash în tabel în bucla principală pe . Deoarece accesarea și adăugarea elementelor la un tabel hash necesită timp ( o constantă ), acest lucru nu încetinește asimptotic algoritmul.

Timpul de rulare al algoritmului este estimat ca , ceea ce este mult mai bun decât timpul de rulare al enumerarii exhaustive a exponenților [4] .

Caracteristici

Note

  1. 1 2 D. Tije. Infrastructura unui câmp pătratic real și aplicațiile sale. Proceedings of the Number Theory Conference. - Universitatea din Colorado, Boulder, 1972. - S. pp. 217-224. .
  2. 1 2 3 4 I. A. Pankratova. Metode teoretice numerice în criptografie: manual. - Tomsk: TSU, 2009. - S. 90-98. — 120 s. .
  3. 1 2 3 V.I. Nechaev. Elemente de criptografie. Fundamentele teoriei securității informațiilor . - M . : Şcoala superioară, 1999. - S.  61 -67. — 109 p. — ISBN 5-06-003644-8 . .
  4. 12 D.C. Terr . O modificare a algoritmului pasului gigant al lui Shanks . — Matematica calculului. - 2000. - T. 69. - S. 767-773. .
  5. Vasilenko O. N. Number-theoretic algorithms in cryptography . - Moscova: MTSNMO , 2003. - S. 163-185. — 328 p. — ISBN 5-94057-103-4 . Copie arhivată (link indisponibil) . Data accesului: 23 noiembrie 2016. Arhivat din original la 27 ianuarie 2007.   .
  6. Yan, Song Y. Testarea primarității și factorizarea întregilor în criptografia cu cheie publică . - 2. - Springer, 2009. - S. 257-260. — 374 p. — ISBN 978-0-387-77267-7 . .
  7. 1 2 3 4 5 6 Glukhov M. M., Kruglov I. A., Pichkur A. B., Cheremushkin A. V. Introducere în metodele teoretice numerice ale criptografiei. - Ed. I - Sankt Petersburg. : Lan, 2010. - S. 279-298. — 400 s. Cu. - ISBN 978-5-8114-1116-0 . .

Literatură