A Polyg-Hellman algoritmus (ezt Silver-Polig-Hellman algoritmusnak is nevezik ) egy determinisztikus diszkrét logaritmus -algoritmus a maradékok gyűrűjében, prímszám modulo . Az algoritmus egyik sajátossága, hogy speciális alakú prímszámok esetén a diszkrét logaritmus polinomiális időben található. [egy]
Ezt az algoritmust Roland Silver amerikai matematikus találta fel , de először két másik amerikai matematikus , Stephen Pohlig és Martin Hellman tették közzé 1978 -ban „ Egy továbbfejlesztett algoritmus a GF(p) logaritmusszámításhoz és annak kriptográfiai jelentősége” [2] című cikkében. , aki Roland Silvertől függetlenül fejlesztette ki ezt az algoritmust. [3]
Legyen megadva az összehasonlítás
|
(egy) |
és egy szám prímtényezőkre való felbontása ismert:
(2) |
Olyan számot kell találni, amely kielégíti az összehasonlítást (1). [négy]
Az algoritmus lényege, hogy elég mindenkinek modult találni , majd a kínai maradéktétel segítségével megtalálhatjuk az eredeti összehasonlítás megoldását .
Az egyes modulok megtalálásához meg kell oldania az összehasonlítást:
A legjobb módja ennek az algoritmusnak az, ha figyelembe vesszük azt a speciális esetet, amikor .
Adva van , és , miközben van egy primitív elem , és meg kell találnunk azt , amelyik kielégíti .
Feltételezzük, hogy mivel nem különböztethető meg a -tól , mert esetünkben a primitív elemnek definíció szerint van foka , ezért:
.Mikor , könnyen meghatározható bináris kiterjesztéssel együtthatókkal , például:
A legkisebb jelentőségű bitet hatványra emeléssel és a szabály alkalmazásával határozzuk meg
A felső szabály levezetéseTekintsük a korábban kapott összehasonlítást :
,de definíció szerint más értéket vesz fel, mint , így már csak egy összehasonlítás maradt :
.Emelje az (1) összehasonlítást hatványra , és helyettesítse a fent kapott összehasonlítást:
Az egyenlőség akkor igaz, ha páros, vagyis a polinom alakjában történő bővítésnél a szabad tag egyenlő -val , ezért igaz, ha .
Most átalakítjuk az ismert dekompozíciót és bevezetünk egy új változót :
,ahol
Nyilvánvaló, hogy osztható mikor -vel , és mikor osztható -vel , de már nem.
A korábbiakhoz hasonlóan érvelve megkapjuk az összehasonlítást :
amelyből azt találjuk .
A fennmaradó biteket hasonló módon kapjuk meg. Írjuk fel a keresés általános megoldását új jelöléssel:
,ahol
.Tehát a hatalomra emelés a következőket adja:
.Következésképpen:
amelyből azt találjuk .
Miután megtaláltuk az összes bitet, megkapjuk a kívánt megoldást . [6]
PéldaAdott:
Megtalálja:
Megoldás:
megkapjuk . Ezért így néz ki:
Találjuk :
Számítunk még :
Találjuk :
Számítunk még :
Találjuk :
Számítunk még :
Találjuk :
Találja meg, amit keres :
Válasz:
Emeljük fel az (1) összehasonlítás bal és jobb oldalát a hatványra :
Helyettesítse és alakítsa át az összehasonlítást:
Mert primitív elem, ezért a forma összehasonlítása:
Kapunk
[négy] Az 1. lépésben összeállított táblázatot használva megtaláljuk a For j -t 0-tól Ha figyelembe vesszük az összehasonlítást A megoldás ismét a táblázatban található A hurok vége a j -n A hurok vége az i -n 3. lépés (a válasz megtalálása). Minden i -re keresve a kínai maradéktételt kapjuk . [7] PéldaMeg kell találni a diszkrét logaritmust a bázishoz , más szóval meg kell keresni :
.Dekompozíciót találunk .
kapunk .
Készítünk egy táblázatot :
fontolgatjuk . Igazság szerint:
Összehasonlításból ezt kapjuk :
A táblázatból azt találjuk, hogy a fenti összehasonlítás igaz.
Összehasonlításból ezt kapjuk :
A táblázatból azt kapjuk, hogy a fenti összehasonlítás igaz. Találjuk :
Most mérlegeljük . Igazság szerint:
Analógia alapján a következőket találjuk :
Kapunk :
Megkapjuk a rendszert:
Oldjuk meg a rendszert. Az első összehasonlítást egyenlőséggé alakítjuk, amit a második összehasonlítással helyettesítünk:
Cseréljük, amit találtunk , és azt kapjuk, amit keresünk :
Válasz: . [nyolc]
Ha ismerjük a (2) kiterjesztést, akkor az algoritmus összetettsége igen
, hol .Ez egy kis memóriát igényel. [9]
Általánosságban elmondható, hogy az algoritmus bonyolultsága úgy is megbecsülhető
. [tíz]Ha minden q i feldolgozása során gyorsított módszereket használunk (például a Shanks algoritmust ), akkor az összpontszám a következőre csökken.
.Ezekben a becslésekben feltételezzük, hogy a modulo p aritmetikai műveleteket egy lépésben hajtják végre. Valójában nem ez a helyzet – például a modulo p összeadáshoz O (log p ) elemi műveletek szükségesek . De mivel hasonló finomítások történnek bármely algoritmusnál, ezt a tényezőt gyakran elvetik.
Ha a prímtényezők kicsik, akkor az algoritmus összetettsége a következőképpen becsülhető meg . [tizenegy]
Az algoritmus általában polinomiális komplexitású abban az esetben, ha az összes prímtényező nem haladja meg a -t ,
ahol pozitív állandók vannak. [egy]
Igaz az egyszerű fajokra .
Ha van olyan prímtényező , ahol . [egy]
A Polig-Hellman algoritmus kis prímtényezőkre bontva rendkívül hatékony . Ezt nagyon fontos figyelembe venni a kriptográfiai sémák paramétereinek kiválasztásakor. Ellenkező esetben a rendszer megbízhatatlan lesz.
A Polig-Hellman algoritmus alkalmazásához ismernie kell a faktorizációt. Általános esetben a faktorizációs probléma meglehetősen időigényes, de ha egy szám osztói kicsik (a fent említett értelemben), akkor ez a szám gyorsan faktorizálható akár az egymást követő osztás módszerével is. Így abban az esetben, ha a Polig-Hellman algoritmus hatékony, a faktorizálás szükségessége nem bonyolítja a problémát.