Polyg-Hellman-algoritmi (kutsutaan myös Silver-Polig-Hellman-algoritmiksi ) on deterministinen diskreetti logaritmi -algoritmi jäännösrenkaassa , joka on modulo a alkuluku . Eräs algoritmin ominaisuuksista on, että erikoismuotoisille alkuluvuille löytyy diskreetti logaritmi polynomiajassa . [yksi]
Tämän algoritmin keksi amerikkalainen matemaatikko Roland Silver , mutta sen julkaisivat ensimmäisen kerran kaksi muuta amerikkalaista matemaatikkoa Stephen Pohlig ja Martin Hellman vuonna 1978 artikkelissa " Parannettu algoritmi logaritmien laskemiseen GF(p):n yli ja sen kryptografinen merkitys" [2] , joka kehitti tämän algoritmin Roland Silveristä riippumatta. [3]
Esitetään vertailu
|
(yksi) |
ja luvun hajoaminen alkutekijöiksi tunnetaan:
(2) |
On tarpeen löytää luku , joka tyydyttää vertailun (1). [neljä]
Algoritmin ydin on, että riittää, että kaikille löydetään moduulit ja sitten ratkaisu alkuperäiseen vertailuun löytyy kiinalaisen jäännöslauseen avulla .
Löytääksesi kunkin näistä moduuleista sinun on ratkaistava vertailu:
Paras tapa käsitellä tätä algoritmia on ottaa huomioon erikoistapaus, jossa .
Meille annetaan , ja vaikka on olemassa primitiivinen elementti, ja meidän on löydettävä sellainen , joka tyydyttää .
Oletetaan, että koska sitä ei voi erottaa , koska meidän tapauksessamme primitiivielementillä on määritelmän mukaan aste , siksi:
.Milloin , on helppo määrittää binäärilaajennuksella kertoimilla , esimerkiksi:
Vähiten merkitsevä bitti määritetään nostamalla potenssiin ja soveltamalla sääntöä
Ylemmän säännön johtaminenHarkitse aiemmin saatua vertailua :
,mutta määritelmän mukaan saa muun arvon kuin , joten vertailua on jäljellä vain yksi :
.Nosta vertailu (1) potenssiin ja korvaa yllä saatu vertailu:
Tasa-arvo on totta, jos se on parillinen, eli polynomin muodossa olevassa laajennuksessa vapaa termi on yhtä suuri kuin , joten on totta, kun .
Nyt muunnetaan tunnettu hajoaminen ja otetaan käyttöön uusi muuttuja :
,missä
On selvää, että on jaollinen milloin , ja milloin on jaollinen , mutta ei enää.
Väittelemällä kuten ennenkin, saamme vertailun :
josta löydämme .
Loput bitit saadaan samalla tavalla. Kirjoitetaan etsinnän yleinen ratkaisu uudella merkinnällä:
,missä
.Joten tehoon nostaminen antaa:
.Näin ollen:
josta löydämme .
Kun kaikki bitit on löydetty, saamme tarvittavan ratkaisun . [6]
EsimerkkiAnnettu:
Löytö:
Ratkaisu:
Saamme . Siksi se näyttää tältä:
Löydämme :
Laskemme myös :
Löydämme :
Laskemme myös :
Löydämme :
Laskemme myös :
Löydämme :
Löydä etsimäsi :
Vastaus:
Nostetaan vertailun (1) vasen ja oikea osa potenssiin :
Korvaa ja muunna vertailu:
Koska on primitiivinen elementti, joten muodon vertailut:
Saamme
[neljä] Vaiheessa 1 laaditun taulukon avulla löydämme For j :n välillä 0 - Vertailua harkiten Ratkaisu löytyy jälleen taulukosta Silmukan loppu j :ssä Silmukan loppu kohdassa i Vaihe 3 (vastauksen löytäminen). Kaikille i : lle etsiminen löydämme kiinalaisen jäännöslauseen avulla . [7] EsimerkkiOn tarpeen löytää diskreetti logaritmi kantaan kohdasta , toisin sanoen löytää :
.Löydämme hajoamisen .
Me saamme .
Teemme pöydän :
Me harkitsemme . Totta :
Vertailusta löydämme :
Taulukosta huomaamme, että yllä oleva vertailu pitää paikkansa.
Vertailusta löydämme :
Taulukosta saamme, että yllä oleva vertailu pitää paikkansa. Löydämme :
Nyt mietitään . Totta :
Analogisesti löydämme :
Saamme :
Saamme järjestelmän:
Ratkaistaan järjestelmä. Muutamme ensimmäisen vertailun tasa-arvoksi, jonka korvaamme toisella vertailulla:
Korvaamme löytämämme ja saamme etsimämme :
Vastaus :. [kahdeksan]
Jos laajennus (2) tunnetaan, niin algoritmin monimutkaisuus on
, missä .Tämä vaatii vähän muistia. [9]
Yleensä algoritmin monimutkaisuus voidaan myös arvioida seuraavasti
. [kymmenen]Jos jokaisen q i :n käsittelyssä käytetään nopeutettuja menetelmiä (esimerkiksi Shanks-algoritmi ), kokonaispistemäärä laskee
.Näissä arvioissa oletetaan, että aritmeettiset operaatiot modulo p suoritetaan yhdessä vaiheessa. Itse asiassa näin ei ole - esimerkiksi modulo p -lisäys vaatii O (log p ) perusoperaatioita. Mutta koska samanlaisia tarkennuksia tehdään mille tahansa algoritmille, tämä tekijä hylätään usein.
Kun alkutekijät ovat pieniä, niin algoritmin monimutkaisuus voidaan arvioida muodossa . [yksitoista]
Algoritmilla on yleensä polynomimonimutkaisuus siinä tapauksessa, että kaikki alkutekijät eivät ylitä ,
missä ovat positiivisia vakioita. [yksi]
Totta yksinkertaisille lajeille .
Jos on olemassa alkutekijä , jossa . [yksi]
Polig-Hellman-algoritmi on erittäin tehokas, kun se jaetaan pieniin alkutekijöihin. Tämä on erittäin tärkeää ottaa huomioon valittaessa salausmenetelmien parametreja. Muuten järjestelmä on epäluotettava.
Polig-Hellman-algoritmin soveltamiseksi sinun on tiedettävä tekijöiden jako. Yleisesti ottaen tekijöiden jakamisen ongelma on melko aikaa vievä, mutta jos luvun jakajat ovat pienet (yllä mainitussa mielessä), niin tämä luku voidaan nopeasti tekijöihin lisätä jopa peräkkäisen jaon menetelmällä. Näin ollen siinä tapauksessa, että Polig-Hellman-algoritmi on tehokas, tekijöiden jakamisen tarve ei vaikeuta ongelmaa.