Polig-Hellmanův algoritmus

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 23. dubna 2020; kontroly vyžadují 2 úpravy .

Polyg-Hellmanův algoritmus (také nazývaný Silver-Polig-Hellmanův algoritmus ) je deterministický diskrétní logaritmický algoritmus v kruhu zbytků modulo prvočíslo . Jednou z vlastností algoritmu je, že pro prvočísla speciálního tvaru můžete najít diskrétní logaritmus v polynomiálním čase. [jeden]

Historie

Tento algoritmus vynalezl americký matematik Roland Silver , ale poprvé jej publikovali další dva američtí matematici Stephen Pohlig a Martin Hellman v roce 1978 v článku „ Vylepšený algoritmus pro výpočet logaritmů přes GF(p) a jeho kryptografický význam“ [2] , který vyvinul tento algoritmus nezávisle na Roland Silver. [3]  

Počáteční údaje

Nechť je uvedeno srovnání

(jeden)

a rozklad čísla na prvočinitele je známý:

(2)

Je nutné najít číslo , které vyhovuje srovnání (1). [čtyři]

Myšlenka algoritmu

Podstatou algoritmu je, že stačí najít moduly pro všechny a pak lze najít řešení původního srovnání pomocí čínské věty o zbytku . Chcete-li najít pro každý z těchto modulů, musíte vyřešit srovnání:

. [5]

Popis algoritmu

Zjednodušená verze

Nejlepší způsob, jak se s tímto algoritmem vypořádat, je zvážit speciální případ, kdy .

Je nám dáno , a zatímco existuje primitivní prvek a my potřebujeme najít ten , který vyhovuje .

Předpokládá se, že , protože je k nerozeznání od , protože v našem případě má primitivní prvek podle definice stupeň , proto:

.

Kdy je snadné určit pomocí binárního rozšíření s koeficienty , například:

Nejméně významný bit je určen zvýšením na mocninu a aplikací pravidla

Odvození horního pravidla

Zvažte dříve získané srovnání :

,

ale podle definice nabývá hodnoty jiné než , takže zbývá pouze jedno srovnání :

.

Zvedněte srovnání (1) na mocninu a dosaďte srovnání získané výše:

Rovnost je pravdivá, pokud je sudá, to znamená, že v expanzi ve tvaru polynomu je volný člen roven , tedy platí, když .

Nyní transformujeme známý rozklad a zavedeme novou proměnnou :

,

kde

Je jasné, že je dělitelné kdy , a kdy je dělitelné , ale už ne.

Když budeme argumentovat jako předtím, dostaneme srovnání :

ze kterého najdeme .

Zbývající bity se získají podobným způsobem. Napišme obecné řešení hledání s novým zápisem:

,

kde

.

Takže zvýšení na moc dává:

.

Tudíž:

ze kterého najdeme .

Po nalezení všech bitů získáme požadované řešení . [6]

Příklad

Vzhledem k tomu:


Nalézt:

Řešení:
Dostáváme . Vypadá to tedy takto:

najdeme :

Počítáme také :

najdeme :

Počítáme také :

najdeme :

Počítáme také :

najdeme :

Najděte, co hledáte :

Odpovědět:

Základní popis

Krok 1 (sestavení tabulky). Vytvořte tabulku hodnot , kde Krok 2 (výpočet ). Pro i od 1 do k : Nechat kde . Pak je srovnání správné: Špičkový srovnávací výstup

Zvedneme levou a pravou část srovnání (1) na mocninu :

Dosaďte a transformujte srovnání:

Protože je primitivní prvek, proto srovnání tvaru:

Dostaneme

[čtyři] Pomocí tabulky sestavené v kroku 1 najdeme For j od 0 do S ohledem na srovnání Řešení najdete opět v tabulce Konec smyčky na j Konec smyčky na i Krok 3 (nalezení odpovědi). Hledání pro všechna i , najdeme podle čínské věty o zbytku . [7] Příklad

Je nutné najít diskrétní logaritmus k základu v , jinými slovy, najít pro:

.

Najdeme rozklad .

dostáváme .

Vyrábíme stůl :

zvažujeme . Za pravdu:

Ze srovnání zjistíme :

Z tabulky zjistíme, že pro výše uvedené srovnání platí.

Ze srovnání zjistíme :

Z tabulky dostáváme, že pro výše uvedené srovnání platí. najdeme :

Nyní zvažujeme . Za pravdu:

Analogicky najdeme :

Dostáváme :

Získáme systém:

Pojďme vyřešit systém. První srovnání transformujeme na rovnost, kterou dosadíme do druhého srovnání:

Nahradíme tím, co jsme našli, a získáme to, co hledáme :

Odpověď: . [osm]

Složitost algoritmu

Pokud je známa expanze (2), pak je složitost algoritmu

, kde .

To vyžaduje trochu paměti. [9]

Obecně lze složitost algoritmu odhadnout také jako

. [deset]

Pokud se při zpracování každého q i použijí zrychlené metody (například Shanksův algoritmus ), pak se celkové skóre sníží na

.

V těchto odhadech se předpokládá, že aritmetické operace modulo p se provádějí v jednom kroku. Ve skutečnosti tomu tak není – například sčítání modulo p vyžaduje O (log p ) elementárních operací. Ale protože k podobným vylepšením dochází u jakéhokoli algoritmu, je tento faktor často vyřazen.

Polynomiální složitost

Když jsou primární faktory malé, pak složitost algoritmu lze odhadnout jako . [jedenáct]

Algoritmus má polynomiální složitost obecně v případě, kdy všechny prvočinitele nepřekročí , kde  jsou kladné konstanty. [jeden]

Příklad

Platí pro jednoduché druhy .

Exponenciální složitost

Pokud existuje prvočinitel takový, že , kde . [jeden]

Aplikace

Polig-Hellmanův algoritmus je extrémně účinný, když je rozložen na malé prvočinitele. To je velmi důležité vzít v úvahu při výběru parametrů kryptografických schémat. V opačném případě bude schéma nespolehlivé.

Poznámka

Abyste mohli použít Polig-Hellmanův algoritmus, musíte znát faktorizaci. V obecném případě je problém faktorizace poměrně časově náročný, ale pokud jsou dělitelé čísla malí (ve smyslu výše uvedeném), pak lze toto číslo rychle faktorizovat i metodou postupného dělení. Tedy v případě, kdy je Polig-Hellmanův algoritmus efektivní, potřeba faktorizace problém nekomplikuje.

Poznámky

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

Literatura

v Rusku
  1. N. Koblitz. Kurz teorie čísel a kryptografie . - M . : Vědecké nakladatelství TVP, 2001. - 254 s.
  2. O. N. Vasilenko. Číselné teoretické algoritmy v kryptografii . - M. : MTSNMO, 2003. - 328 s. - 1000 výtisků.  — ISBN 5-94057-103-4 . Archivováno 27. ledna 2007 na Wayback Machine
v angličtině
  1. SC Pohlig a ME Hellman. Vylepšený algoritmus pro výpočet logaritmů přes GF(p) a jeho kryptografický význam  //  Transakce IEEE na teorii informací. - 1978. - Sv. 1 , ne. 24 . - str. 106-110 .
  2. A. M. Odlyzko. Diskrétní logaritmy v konečných polích a jejich kryptografický význam  //  T.Beth , N.Cot, I.Ingemarsson Proc. workshopu EUROCRYPT 84 na téma Pokroky v kryptologii: teorie a aplikace kryptografických technik. - NY, USA: Springer-Verlag New York, 1985. - S. 224-314 . - ISBN 0-387-16076-0 .  (nedostupný odkaz)
  3. J. Hoffstein, J. Pipher, J. H. Silverman. Úvod do matematické kryptografie  . - Springer, 2008. - 524 s. — ISBN 978-0-387-77993-5 .