Polig-Hellman algoritme

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 23. april 2020; checks kræver 2 redigeringer .

Polyg-Hellman-algoritmen (også kaldet Silver-Polig-Hellman-algoritmen ) er en deterministisk diskret logaritmealgoritme i ringen af ​​rester modulo et primtal . Et af funktionerne ved algoritmen er, at for primtal af en speciel form, kan du finde den diskrete logaritme i polynomisk tid. [en]

Historie

Denne algoritme blev opfundet af den amerikanske matematiker Roland Silver , men blev først udgivet af to andre amerikanske matematikere Stephen Pohlig og Martin Hellman i 1978 i artiklen " En forbedret algoritme til at beregne logaritmer over GF(p) og dens kryptografiske betydning" [2] , som udviklede denne algoritme uafhængigt af Roland Silver. [3]  

Indledende data

Lad sammenligning gives

(en)

og nedbrydningen af ​​et tal i primfaktorer er kendt:

(2)

Det er nødvendigt at finde et tal , der opfylder sammenligningen (1). [fire]

Ideen med algoritmen

Essensen af ​​algoritmen er, at det er nok at finde moduli for alle , og så kan løsningen på den originale sammenligning findes ved hjælp af den kinesiske restsætning . For at finde for hvert af disse moduler skal du løse sammenligningen:

. [5]

Beskrivelse af algoritmen

Forenklet version

Den bedste måde at håndtere denne algoritme på er at overveje det særlige tilfælde, hvor .

Vi er givet , og mens der er et primitivt element, og vi skal finde et , der tilfredsstiller .

Det antages , at da det ikke kan skelnes fra , fordi det primitive element i vores tilfælde pr. definition har en grad , derfor:

.

Hvornår er det let at bestemme ved binær ekspansion med koefficienter , for eksempel:

Den mindst signifikante bit bestemmes ved at hæve til en potens og anvende reglen

Afledning af den øverste regel

Overvej den tidligere opnåede sammenligning :

,

men per definition antager en anden værdi end , så der er kun én sammenligning tilbage :

.

Hæv sammenligningen (1) til en potens og erstat sammenligningen opnået ovenfor:

Ligheden er sand, hvis den er lige, det vil sige i udvidelsen i form af et polynomium, er det frie sigt lig , Derfor er det sandt, når .

Nu transformerer vi den kendte dekomponering og introducerer en ny variabel :

,

hvor

Det er klart, at det er deleligt med hvornår , og hvornår er deleligt med , men ikke længere.

Argumenterer som før, får vi sammenligningen :

hvorfra vi finder .

De resterende bits opnås på lignende måde. Lad os skrive den generelle løsning for at finde med ny notation:

,

hvor

.

Så at hæve til en magt giver:

.

Følgelig:

hvorfra vi finder .

Efter at have fundet alle bits, får vi den nødvendige løsning . [6]

Eksempel

Givet:


Finde:

Løsning:
Vi får . Derfor ser det sådan ud:

Vi finder :

Vi tæller også :

Vi finder :

Vi tæller også :

Vi finder :

Vi tæller også :

Vi finder :

Find det du leder efter :

Svar:

Grundlæggende beskrivelse

Trin 1 (sammenstilling af tabellen). Lav en værditabel , hvor Trin 2 (beregning ). For i fra 1 til k : Lade hvor . Så er sammenligningen korrekt: Top sammenligningsoutput

Lad os hæve venstre og højre del af sammenligningen (1) til potensen :

Erstat og transformer sammenligningen:

Fordi er et primitivt element, derfor sammenligninger af formen:

Vi får

[fire] Ved hjælp af tabellen kompileret i trin 1 finder vi For j fra 0 til Overvejer en sammenligning Løsningen findes igen i tabellen End of loop on j End of loop on i Trin 3 (finde svaret). Finder vi alt i , finder vi ved den kinesiske restsætning . [7] Eksempel

Det er nødvendigt at finde den diskrete logaritme til basen i , med andre ord, find for:

.

Vi finder en nedbrydning .

Vi får .

Vi laver et bord :

Vi overvejer . For sandt:

Vi finder ved sammenligning:

Ud fra tabellen finder vi, at sammenligningen ovenfor er sand.

Vi finder ved sammenligning:

Fra tabellen får vi, at ovenstående sammenligning er sand. Vi finder :

Nu overvejer vi . For sandt:

I analogi finder vi :

Vi får :

Vi får systemet:

Lad os løse systemet. Vi forvandler den første sammenligning til lighed, som vi erstatter med den anden sammenligning:

Vi erstatter det, vi har fundet, og får det, vi leder efter :

Svar :. [otte]

Algoritmens kompleksitet

Hvis ekspansion (2) er kendt, så er kompleksiteten af ​​algoritmen det

, hvor .

Dette kræver en smule hukommelse. [9]

Generelt kan kompleksiteten af ​​algoritmen også estimeres som

. [ti]

Hvis der ved behandling af hver qi anvendes accelererede metoder (f.eks. Shanks-algoritmen ), så vil den samlede score falde til

.

I disse estimater antages det, at aritmetiske operationer modulo p udføres i et trin. Faktisk er dette ikke tilfældet - for eksempel kræver addition modulo p O (log p ) elementære operationer. Men da lignende justeringer finder sted for enhver algoritme, kasseres denne faktor ofte.

Polynomisk kompleksitet

Når primfaktorerne er små, kan kompleksiteten af ​​algoritmen estimeres til . [elleve]

Algoritmen har polynomisk kompleksitet generelt i det tilfælde, hvor alle primfaktorer ikke overstiger , hvor  er positive konstanter. [en]

Eksempel

Sandt for simple arter .

Eksponentiel kompleksitet

Hvis der er en primær faktor, sådan at , hvor . [en]

Ansøgning

Polig-Hellman-algoritmen er ekstremt effektiv, når den dekomponeres i små primfaktorer. Dette er meget vigtigt at overveje, når du vælger parametrene for kryptografiske skemaer. Ellers vil ordningen være upålidelig.

Bemærk

For at anvende Polig-Hellman-algoritmen skal du kende faktoriseringen. I det generelle tilfælde er faktoriseringsproblemet ret tidskrævende, men hvis divisorerne for et tal er små (i den forstand nævnt ovenfor), kan dette tal hurtigt faktoriseres selv ved successiv division. I det tilfælde, hvor Polig-Hellman-algoritmen er effektiv, komplicerer behovet for faktorisering ikke problemet.

Noter

  1. 1 2 3 Vasilenko, 2003 , s. 131.
  2. Pohlig et al., 1978 .
  3. Odlyzko, 1985 , s. 7.
  4. 1 2 Koblitz, 2001 , s. 113.
  5. Koblitz, 2001 , s. 113-114.
  6. Pohlig et al., 1978 , s. 108.
  7. Vasilenko, 2003 , s. 130-131.
  8. Koblitz, 2001 , s. 114.
  9. Odlyzko, 1985 , s. otte.
  10. Hoffstein et al., 2008 , s. 87.
  11. Pohlig et al., 1978 , s. 109.

Litteratur

på russisk
  1. N. Koblitz. Et kursus i talteori og kryptografi . - M . : Videnskabeligt forlag TVP, 2001. - 254 s.
  2. O. N. Vasilenko. Talteoretiske algoritmer i kryptografi . - M. : MTSNMO, 2003. - 328 s. - 1000 eksemplarer.  — ISBN 5-94057-103-4 . Arkiveret 27. januar 2007 på Wayback Machine
på engelsk
  1. SC Pohlig og ME Hellman. En forbedret algoritme til beregning af logaritmer over GF(p) og dens kryptografiske betydning  //  IEEE-transaktioner på informationsteori. - 1978. - Bd. 1 , nr. 24 . - S. 106-110 .
  2. A. M. Odlyzko. Diskrete logaritmer i endelige felter og deres kryptografiske betydning  //  T.Beth , N.Cot, I.Ingemarsson Proc. af EUROCRYPT 84-workshoppen om fremskridt inden for kryptologi: teori og anvendelse af kryptografiske teknikker. - NY, USA: Springer-Verlag New York, 1985. - S. 224-314 . - ISBN 0-387-16076-0 .  (utilgængeligt link)
  3. J. Hoffstein, J. Pipher, J.H. Silverman. En introduktion til matematisk kryptografi  . - Springer, 2008. - 524 s. — ISBN 978-0-387-77993-5 .