Algoritmus výpočtu objednávky

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é 6. června 2019; kontroly vyžadují 2 úpravy .

Algoritmus počtu řádů ( algoritmus indexového počtu ) je pravděpodobnostní algoritmus pro výpočet diskrétního logaritmu v prstencovém zbytku modulo prvočíslo . Složitost nalezení jednotlivého logaritmu je základem mnoha algoritmů souvisejících s kryptografií . Protože řešení tohoto problému pomocí velkých čísel vyžaduje velké množství zdrojů, které žádný moderní počítač nemůže poskytnout . Příkladem takového algoritmu je GOST R 34.10-2012 .

Historie

Maurice Krajczyk poprvé navrhl základní myšlenku tohoto algoritmu ve své knize „Théorie des Nombres“ v roce 1922. Po roce 1976 se problém diskrétního logaritmu stává důležitým v matematice a kryptoanalýze. To je způsobeno vytvořením kryptosystému Diffie-Hellman . V tomto ohledu v roce 1977 R. Merkle obnovil diskuse o tomto algoritmu. O dva roky později ji poprvé zveřejnili kolegové Merkelové. Adlerman ji nakonec v roce 1979 optimalizoval, prozkoumal složitost a představil ji v podobě, kterou známe dnes. Algoritmus počtu řádů a jeho vylepšené verze v současné době poskytují nejrychlejší způsob výpočtu diskrétních logaritmů v některých konečných skupinách.

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í:

kde je prvek cyklické skupiny generovaný prvkem .

Algoritmus

Vstup : g  - generátor cyklické grupy řádu n , a  - z cyklické podskupiny, p  - prvočíslo, c  - parametr spolehlivosti, obvykle se rovná 10 nebo číslu blízkému této hodnotě (používá se k implementaci algoritmu na počítač, pokud se člověk rozhodne, tak to nenastaví).

Úkol : najdi x takové, že .

  1. Vyberte faktorový základ S = { p 1 , p 2 , p 3 , …, p t } (Pokud G = Z * p , pak se základ skládá z prvních t prvočísel).
  2. Zvedneme g na náhodnou mocninu k , kde k je takové, že . dostáváme .
  3. G k reprezentujeme následovně: kde (to znamená, že se to snažíme faktorizovat). Pokud to nefunguje, vraťte se ke kroku 2.
  4. Z odstavce 3 vyplývá výraz získáme logaritmováním (porovnání se bere modulo řádu grupy, protože pracujeme s exponentem, ale ve grupě G ). Logaritmy jsou v tomto výrazu neznámé. Není jich t . Takových rovnic je nutné získat t  +  c kusů, pokud to není možné, vrátíme se ke kroku 2 (při implementaci na počítači) nebo získáme potřebný počet rovnic pro nalezení všech neznámých logaritmů (při řešení člověkem).
  5. Vyřešíme výslednou soustavu rovnic s t neznámými a t  +  c srovnání.
  6. Zvolíme náhodné číslo k takové, že . Vypočítáme .
  7. Opakujeme bod 3, pouze pro číslo . Pokud to nefunguje, vrátíme se k 6. odstavci.
  8. Podobně jako v bodě 4 dostáváme: , kde ( ), kde . V tomto okamžiku jsme vyřešili problém diskrétního logaritmu nalezením .

Výstup : .

Příklad

Řešte rovnici:

Vyberte faktorovou základnu Nechť k = 7 Vypočítejte

Vezmeme logaritmus a označíme A dostaneme soustavu rovnic

Řešíme to

Opravdu, proto , ,

Najdeme k takové, že

tudíž

Vezmeme logaritmus tohoto výrazu a dostaneme

odpověď :

Obtížnost

V tomto algoritmu závisí počet iterací jak na velikosti p , tak na velikosti faktorové báze. Faktorovou základnu si ale vybíráme předem a její velikost je pevná. Konečná složitost je tedy určena pouze velikostí prvočísla a je rovna: , kde ,  jsou některé konstanty, které závisí na mezivýpočtech, zejména na volbě faktorové báze.

Vylepšení

Algoritmus zrychleného výpočtu objednávky , jehož podstatou je použití indexové tabulky.

Obtížnost

Výpočetní složitost je ve srovnání s původním algoritmem snížena na .

Viz také

Odkazy