Polyg-Hellman-algoritmen (även kallad Silver-Polig-Hellman-algoritmen ) är en deterministisk diskret logaritmalgoritm i ringen av rester modulo ett primtal . En av funktionerna i algoritmen är att för primtal av en speciell form kan du hitta den diskreta logaritmen i polynomtid . [ett]
Denna algoritm uppfanns av den amerikanske matematikern Roland Silver , men publicerades först av två andra amerikanska matematiker Stephen Pohlig och Martin Hellman 1978 i artikeln " En förbättrad algoritm för att beräkna logaritmer över GF(p) och dess kryptografiska betydelse" [2] , som utvecklade denna algoritm oberoende av Roland Silver. [3]
Låt jämförelsen ges
|
(ett) |
och nedbrytningen av ett tal till primfaktorer är känd:
(2) |
Det är nödvändigt att hitta ett tal som uppfyller jämförelsen (1). [fyra]
Kärnan i algoritmen är att det räcker med att hitta moduler för alla , och sedan kan lösningen på den ursprungliga jämförelsen hittas med hjälp av den kinesiska restsatsen .
För att hitta för var och en av dessa moduler måste du lösa jämförelsen:
Det bästa sättet att hantera denna algoritm är att överväga det speciella fallet där .
Vi är givna , och medan det finns ett primitivt element och vi måste hitta ett som tillfredsställer .
Det antas att , eftersom det inte går att skilja från , eftersom det primitiva elementet i vårt fall per definition har en grad , därför:
.När , är det lätt att bestämma genom binär expansion med koefficienter , till exempel:
Den minst signifikanta biten bestäms genom att höja till en potens och tillämpa regeln
Härledning av den övre regelnTänk på den tidigare erhållna jämförelsen :
,men per definition antar ett annat värde än , så det finns bara en jämförelse kvar :
.Höj jämförelsen (1) till en potens och ersätt jämförelsen som erhållits ovan:
Jämlikheten är sant om det är jämnt, det vill säga i expansionen i form av ett polynom, är den fria termen lika med , Därför är det sant när .
Nu transformerar vi den kända nedbrytningen och introducerar en ny variabel :
,var
Det är klart att det är delbart med när , och när är delbart med , men inte längre.
Om vi argumenterar som tidigare får vi jämförelsen :
som vi finner .
De återstående bitarna erhålls på liknande sätt. Låt oss skriva den allmänna lösningen för att hitta med ny notation:
,var
.Så att höja till en makt ger:
.Följaktligen:
som vi finner .
Efter att ha hittat alla bitar får vi den nödvändiga lösningen . [6]
ExempelGiven:
Hitta:
Lösning:
Vi får . Därför ser det ut som:
Vi finner :
Vi räknar även :
Vi finner :
Vi räknar även :
Vi finner :
Vi räknar även :
Vi finner :
Hitta det du letar efter :
Svar:
Låt oss höja de vänstra och högra delarna av jämförelsen (1) till makten :
Ersätt och transformera jämförelsen:
Därför att är ett primitivt element, därför jämförelser av formen:
Vi får
[fyra] Med hjälp av tabellen sammanställd i steg 1 hittar vi For j från 0 till Funderar på en jämförelse Lösningen återfinns i tabellen End of loop on j End of loop on i Steg 3 (att hitta svaret). Att hitta för allt i , finner vi genom den kinesiska restsatsen . [7] ExempelDet är nödvändigt att hitta den diskreta logaritmen till basen i , med andra ord, hitta för:
.Vi finner en nedbrytning .
Vi får .
Vi gör ett bord :
Vi överväger . För sant:
Vi finner från jämförelse:
Från tabellen finner vi att jämförelsen ovan är sann.
Vi finner från jämförelse:
Från tabellen får vi att jämförelsen ovan är sann. Vi finner :
Nu funderar vi på . För sant:
I analogi finner vi :
Vi får :
Vi får systemet:
Låt oss lösa systemet. Vi omvandlar den första jämförelsen till jämlikhet, som vi ersätter med den andra jämförelsen:
Vi ersätter det vi hittat och får det vi letar efter :
Svar: . [åtta]
Om expansion (2) är känd, är algoritmens komplexitet det
, var .Detta kräver lite minne. [9]
I allmänhet kan algoritmens komplexitet också uppskattas som
. [tio]Om accelererade metoder används vid bearbetning av varje qi (till exempel Shanks -algoritmen ), kommer den totala poängen att minska till
.I dessa uppskattningar antas det att aritmetiska operationer modulo p utförs i ett steg. I själva verket är detta inte fallet - till exempel kräver addition modulo p O (log p ) elementära operationer. Men eftersom liknande förbättringar äger rum för någon algoritm, förkastas denna faktor ofta.
När primfaktorerna är små kan algoritmens komplexitet uppskattas till . [elva]
Algoritmen har polynomkomplexitet i allmänhet i fallet när alla primtalsfaktorer inte överstiger ,
där är positiva konstanter. [ett]
Sant för enkla arter .
Om det finns en primtal faktor så att , var . [ett]
Polig-Hellman-algoritmen är extremt effektiv när den sönderdelas i små primfaktorer. Detta är mycket viktigt att tänka på när du väljer parametrarna för kryptografiska system. Annars kommer systemet att vara opålitligt.
För att tillämpa Polig-Hellman-algoritmen måste du känna till faktoriseringen. I det allmänna fallet är faktoriseringsproblemet ganska tidskrävande, men om divisorerna för ett tal är små (i den mening som nämnts ovan), kan detta tal snabbt faktoriseras även med metoden för successiv division. Således, i det fall där Polig-Hellman-algoritmen är effektiv, komplicerar inte behovet av faktorisering problemet.