Pollardova rho metoda pro diskrétní logaritmus

Pollardova ro-metoda pro diskrétní logaritmus ( -metoda ) je algoritmus pro diskrétní logaritmus v kruhu zbytků modulo prime, který má exponenciální složitost . Navržený britským matematikem Johnem Pollardem v roce 1978 , základní myšlenky algoritmu jsou velmi podobné těm z Pollardova ro-algoritmu pro faktorizaci čísel . Tato metoda je uvažována pro skupinu nenulových zbytků modulo , kde  je prvočíslo větší než .  

Vyjádření problému diskrétního logaritmu

Pro dané prvočíslo a dvě celá čísla je nutné najít celé číslo , které vyhovuje srovnání:

(jeden)

kde je prvek cyklické skupiny generovaný prvkem .

Algoritmus metody ro

Uvažujeme posloupnost dvojic celých čísel modulo a posloupnost celých čísel modulo , definovanou takto:


(2)



(3)


(čtyři)


(5)

Poznámka: ve všech výrazech jsou uvažovány nejmenší nezáporné zbytky.

Poznámka 2 : v obecnějším případě je možné rozdělit na 3 podmnožiny trochu jiným způsobem: skupinu rozdělíme na tři podmnožiny přibližně stejně velké , aby nepatřila do podmnožiny .

Protože každá třetina segmentu, do kterého prvek patří, pravděpodobně nesouvisí s prvky sekvencí , je výsledná sekvence pseudonáhodná. Proto mohou existovat čísla a taková, že . Pokud najdete takový pár čísel, dostanete:


(6)

Pokud je číslo relativně prvočíslo k , lze toto srovnání vyřešit a lze nalézt diskrétní logaritmus:


(7)

Pokud je největší společný dělitel čísel a roven číslu , pak existuje řešení tohoto srovnání pro modulo . Nechť , pak požadované číslo , kde mohou nabývat hodnoty . Pokud  je tedy dostatečně malé číslo, pak je problém vyřešen výčtem všech možných hodnot pro . V nejhorším případě - když  - se metoda ukáže být o nic lepší než úplný výčet všech možných hodnot pro diskrétní logaritmus.

Pro hledání indexů se používá vyhledávací algoritmus Floydova cyklu . Při použití tohoto algoritmu jsou v -tém kroku hodnoty a hledá se číslo , pro které . Nejmenší hodnota , při které je tato podmínka splněna, se nazývá epac . Pokud ve stejnou dobu , pak


(osm)

Po-metoda pro skupinu bodů na eliptické křivce

Nechť je dána skupina bodů eliptické křivky (EC) . Bez ztráty obecnosti můžeme předpokládat, že a  je prvočíslo. Označte podskupinu objednávky a opravte generující prvek . Pro libovolný prvek skupiny je problém diskrétního logaritmu najít prvek

Skupina je reprezentována jako svaz , kde  jsou libovolné množiny přibližně stejné mohutnosti. Iterační funkce je definována jako

(9)

Tedy kde koeficienty jsou definovány následovně

(deset)
(jedenáct)

Výběrem libovolné počáteční hodnoty se konstruují dvě posloupnosti a dokud se u některých nenajde kolize . Na základě vzorců (10) a (11) je problém diskrétního logaritmu vyřešen:


(12)

Je důležité, že hodnota získaná při srážce závisí na počáteční hodnotě a určuje výpočetní náročnost Pollardovy metody.

Složitost algoritmu

Hlavní práce algoritmu je vypočítat sekvence . Tyto výpočty vyžadují tři modulo násobení, aby postoupily k další iteraci. Velikost požadované paměti je minimální, protože není potřeba ukládat informace o všech předchozích prvcích sekvencí. Složitost algoritmu je tedy snížena na složitost problému hledání epaktu, který má zase heuristický odhad složitosti a v různých případech mohou být hodnoty konstanty zcela odlišné, ale jako pravidlo, lež uvnitř .

Porovnání s jinými algoritmy

Ve srovnání s jinými diskrétními logaritmickými algoritmy je Pollardův algoritmus levnější jak z hlediska binárních operací, tak z hlediska potřebného množství paměti. Například pro dostatečně velké hodnoty čísla je tento algoritmus z hlediska složitosti efektivnější než algoritmus COS a algoritmus Adleman , které mají složitost . Oproti Shanksovu algoritmu , který má rovněž složitost , je Pollardův algoritmus výhodnější ve vztahu k použité paměti - Shanksův algoritmus vyžaduje paměť, přičemž velikost požadované paměti je pro tento algoritmus konstantní (za předpokladu, že vyhledávací algoritmus Floydova cyklu je použitý).

Paralelizace metod

Distribuované paměťové systémy

Myšlenkou Pollardovy metody pro distribuované paměťové systémy je oddělit iteraci bodů mezi klientskými pracovními stanicemi a hledání kolize serverem. Nechť je zadána sada klientských pracovních stanic Server určí parametry společné pro systém, nějakou podmnožinu a inicializuje pracovní stanice. Klientská pracovní stanice vytvoří posloupnost bodů a odešle body prvek po prvku na server. Pokud bod není v databázi, server jej přidá do databáze, jinak vypočítá hodnotu diskrétního logaritmu.

Systémy sdílené paměti

Myšlenkou této metody je paralelizovat iterační funkci a algoritmus detekce kolizí odděleně. Iterační funkce je paralelizována ve fázi výpočtu sekvencí a Je třeba poznamenat, že paralelní výpočet a pro pevnou hodnotu a následné srovnání je neefektivní. To je způsobeno skutečností, že režie spojená s používáním toků je výpočetně dražší než výpočetní technika , a proto je vhodné počítat sekvence takovým způsobem, aby byla režie vyrovnaná. Toho lze dosáhnout organizováním výpočtů sekvencí formuláře a , kde  je velikost bloku výpočtu, . Funkce detekce kolizí v Pollardově metodě porovnává a . Toto srovnání lze paralelizovat pomocí iteračního algoritmu pro systémy sdílené paměti. Výsledkem provedení funkce bodové iterace jsou dvě sady bodů a , které se porovnávají blok po bloku, tedy v případě dvou jader.

Kombinovaná metoda

Pollardovu metodu pro distribuované paměťové systémy lze rozšířit pro použití na vícejádrových pracovních stanicích. Myšlenka metody spočívá v tom, že k iteraci bodů klientskými pracovními stanicemi dochází v souladu s určitým algoritmem, jehož podstatou je, že existuje klientská pracovní stanice, která vytváří sekvenci bodů . Dále pracovní stanice vybere podmnožinu bodů a odešle ji na server. Kontrola příslušnosti k podmnožině se provádí v paralelním režimu: a (v případě dvou jader). Server přidává body a do databáze, dokud nenajde již existující bod.

Úpravy a optimalizace

Existuje několik významných vylepšení algoritmu na základě různých triků.

Jedno zlepšení je popsáno v [Teske 1998]. Rozdíl v metodě uvedené v článku spočívá ve složité iterační funkci - obsahuje 20 různých větví namísto tří popsaných výše. Numerické experimenty ukazují, že takové zlepšení vede k průměrnému zrychlení algoritmu náhodné procházky o 20 %.

Pollardova metoda

Pollard ve své práci na počítání diskrétních logaritmů také navrhl metodu, pojmenovanou proto, že tvar řeckého písmene připomíná obraz dvou cest spojujících se do jedné. Myšlenkou této metody je jít dvěma způsoby najednou: jednou z čísla, jehož diskrétní logaritmus je třeba najít, a druhým z čísla, jehož diskrétní logaritmus je již znám. Pokud se tyto dvě cesty sbíhají, je možné najít diskrétní logaritmus čísla . Pollard navrhl, aby kroky na každé cestě byly považovány za klokaní skoky, a proto je tento algoritmus někdy označován jako „klokaní metoda“. Pokud je známo, že požadovaný diskrétní logaritmus leží v nějakém krátkém intervalu, lze metodu klokanky přizpůsobit, a to pomocí klokanů s kratšími skoky.

Jednou z důležitých vlastností metody lambda je skutečnost, že je snadno distribuována na více počítačích. Každý účastník distribuovaného počítání si vybere náhodné číslo a začne dělat pseudonáhodné kroky od čísla , kde  je prvek skupiny, pro který se hledá diskrétní logaritmus. Každý účastník používá stejnou snadno vypočítatelnou pseudonáhodnou funkci , kde  je relativně malá množina čísel s průměrnou hodnotou srovnatelnou s velikostí skupiny , která má pořadí . Výkony pro jsou vypočteny předem. Potom „putování“, počínaje prvkem , nabývá tvaru:

Nechte druhého účastníka, který zvolí počáteční číslo , získá posloupnost Pokud se protíná s posloupností , tedy pro některé , pak, vezmeme-li v úvahu, že platí následující:


(13)
(čtrnáct)

Obvykle se tato metoda používá, když je skupinové pořadí jednoduché. Od té doby, pokud se všechna čísla vybraná na začátku výpočtů liší v absolutní hodnotě , lze srovnání snadno vyřešit a najít diskrétní logaritmus . Mírná potíž je v tom, že shoda může nastat ve stejné sekvenci, což znamená, že . Pokud je však počet účastníků ve výpočtech dostatečně velký, pak je pravděpodobnost shody mezi sekvencemi větší než pravděpodobnost shody ve stejné sekvenci.

Je možné použít pseudonáhodnou funkci . V tomto případě budou užitečné všechny shody: k výpočtu diskrétního logaritmu lze také použít shodu ve stejné sekvenci. V případě takové shody se metoda jednoduše změní na metodu. Pokud je však známo, že požadovaný diskrétní logaritmus leží v krátkém intervalu, lze použít původní metodu. Potom bude doba běhu přibližně odmocnina délky intervalu. V tomto případě musí být průměrná hodnota celých čísel z množiny menší, aby „klokani“ přeskakovali pouze interval požadované délky.

Centrální počítač musí sledovat všechny sekvence od všech účastníků zápasů. Podle narozeninového paradoxu se očekává shoda, když je počet prvků ve všech sekvencích řádu ). Je zřejmé, že v popsané podobě tento způsob vyžaduje velké množství paměti centrálního počítače. Další myšlenka, popsaná v práci van Orschota, značně snižuje nároky na paměť a činí tuto metodu použitelnou pro řešení složitých problémů. Smyslem je zvážit tzv. vybrané body. Předpokládá se, že prvky grupy jsou reprezentovány celými čísly (nebo případně množinami celých čísel). Rozlišující pole binární délky v takovém čísle se bude skládat ze všech nul po dobu asi tý části času. Náhodná procházka projde takto vybranými body v průměru každý krok. Pokud se někde protnou dvě náhodné sekvence, pak se protnou dále a společně se dostanou k dalšímu zvolenému bodu. Myšlenka je tedy posílat do centrálního počítače pouze tyto vybrané body, čímž se požadovaná velikost paměti o faktor sníží .

Literatura