Polig-Hellman algoritm

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 april 2020; kontroller kräver 2 redigeringar .

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]

Historik

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]  

Inledande data

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]

Idén med algoritmen

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:

. [5]

Beskrivning av algoritmen

Förenklad version

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 regeln

Tä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]

Exempel

Given:


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:

Grundläggande beskrivning

Steg 1 (sammanställning av tabellen). Gör en värdetabell , där Steg 2 (beräkning ). För i från 1 till k : Låta var . Då är jämförelsen korrekt: Topp jämförelseutgång

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] Exempel

Det ä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]

Algoritmens komplexitet

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.

Polynom komplexitet

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]

Exempel

Sant för enkla arter .

Exponentiell komplexitet

Om det finns en primtal faktor så att , var . [ett]

Applikation

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.

Notera

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.

Anteckningar

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

Litteratur

på ryska
  1. N. Koblitz. En kurs i talteori och kryptografi . - M . : Vetenskapligt förlag TVP, 2001. - 254 sid.
  2. O. N. Vasilenko. Talteoretiska algoritmer i kryptografi . - M. : MTSNMO, 2003. - 328 sid. - 1000 exemplar.  — ISBN 5-94057-103-4 . Arkiverad 27 januari 2007 på Wayback Machine
på engelska
  1. SC Pohlig och ME Hellman. En förbättrad algoritm för att beräkna logaritmer över GF(p) och dess kryptografiska betydelse  //  IEEE-transaktioner på informationsteori. - 1978. - Vol. 1 , nej. 24 . - S. 106-110 .
  2. A. M. Odlyzko. Diskreta logaritmer i finita fält och deras kryptografiska betydelse  //  T.Beth , N.Cot, I.Ingemarsson Proc. av EUROCRYPT 84-workshopen om framsteg inom kryptologi: teori och tillämpning av kryptografiska tekniker. - NY, USA: Springer-Verlag New York, 1985. - P. 224-314 . - ISBN 0-387-16076-0 .  (inte tillgänglig länk)
  3. J. Hoffstein, J. Pipher, J.H. Silverman. En introduktion till matematisk kryptografi  . - Springer, 2008. - 524 sid. — ISBN 978-0-387-77993-5 .