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]
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]
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]
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:
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 regelOvervej 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]
EksempelGivet:
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:
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] EksempelDet 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]
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.
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]
Sandt for simple arter .
Hvis der er en primær faktor, sådan at , hvor . [en]
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.
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.