Algoritmus Gelfond-Shanks ( ang. Baby-step gigant-step ; také nazývaný algoritmus velkých a malých kroků ; velmi často se také můžete setkat s názvem párovací algoritmus , například ve Vasilenkově knize "Number-Theoretic Algorithms of Cryptography" ) - v teorii grup deterministický algoritmus diskrétních logaritmů v multiplikativní grupě zbytkového kruhu modulo prvočíslo. Navrhli to sovětský matematik Alexander Gelfond v roce 1962 a Daniel Shanks v roce 1972 [1] [2] [3] .
Metoda teoreticky zjednodušuje řešení problému diskrétního logaritmu, na jehož výpočetní složitosti je postaveno mnoho kryptosystémů s veřejným klíčem . Odkazuje na metody setkání uprostřed .
Problém diskrétního logaritmu je velmi zajímavý pro konstrukci kryptosystémů s veřejným klíčem . Za předpokladu extrémně vysoké výpočetní náročnosti řešení tohoto problému jsou takovéto kryptoalgoritmy založeny např. RSA , DSA , Elgamal , Diffie-Hellman , ECDSA , GOST R 34.10-2001 , Rabin a další. V nich může kryptoanalytik získat soukromý klíč tím, že vezme diskrétní logaritmus veřejného klíče (známý všem) a použije jej k převedení šifrovaného textu na text zprávy. Čím je však obtížnější jej najít (čím více operací musíte provést, abyste našli diskrétní logaritmus), tím bezpečnější je kryptosystém. Jedním ze způsobů, jak zvýšit složitost problému diskrétního logaritmu, je vytvořit kryptosystém založený na skupině s velkým řádem (kde logaritmus bude modulo velké prvočíslo). V obecném případě je takový problém vyřešen vyčerpávajícím výčtem , ale tento algoritmus v některých případech umožňuje zjednodušit nalezení exponentu (snížit počet kroků) při výpočtu modulo prvočíslo, v nejvýhodnějším případě odmocninou. krát [4] , ale tato redukce stále nestačí k vyřešení problému na elektronickém počítači v rozumném čase (otázka řešení problému diskrétního logaritmu v polynomiálním čase na osobním počítači je stále otevřená) [5] .
Nechť je dána cyklická skupina s generátorem obsahující prvky. Celé číslo (v rozsahu od do ) se nazývá diskrétní základní logaritmus prvku , pokud je vztah pravdivý:
Úkolem diskrétního logaritmu je určit pro daný .
Formálně je problém diskrétního logaritmu položen následovně [6] :
za předpokladu, že nemusí existovat a může to být také prvočíslo nebo složené číslo.
Myšlenkou algoritmu je zvolit optimální poměr času a paměti , konkrétně ve vylepšeném hledání exponentu.
Nechť je uvedena cyklická skupina řádu , generátor skupiny a nějaký prvek skupiny . Úkol je redukován na nalezení celého čísla, pro které
Algoritmus Gelfond-Shanks je založen na reprezentaci ve formě , where , a výčtu a . Omezení a vyplývá z toho, že pořadí skupiny nepřesahuje , což znamená, že uvedené rozsahy jsou dostatečné pro získání všech možných z polovičního intervalu . Tato reprezentace je ekvivalentní rovnosti
|
|
(jeden) |
Algoritmus předem vypočítá různé hodnoty a uloží je do datové struktury , která umožňuje efektivní vyhledávání, a poté iteruje všechny možné hodnoty a zkontroluje, zda odpovídají nějaké hodnotě . Jsou tedy nalezeny indexy a , které splňují vztah (1) a umožňují vypočítat hodnotu [7] .
Vstup : Skupina cyklického řádu , generátor a nějaký prvek .
Výstup : Číslo , které vyhovuje .
Je třeba dokázat, že stejné prvky v tabulkách nutně existují, tedy existují takové a , že . Tato rovnost nastává v případě , nebo . Pro , nerovnost platí . Pro různé páry a máme , protože jinak by se ukázalo , že s uvedenou volbou je to možné pouze v případě , a tedy . Výrazy tedy nabývají všech hodnot v rozsahu od do , což vzhledem k tomu, že obsahuje všechny možné hodnoty od do . Pro některé tedy platí i rovnost [2] .
Předpokládejme, že potřebujeme vyřešit , kde a jsou kladná celá čísla menší než . Jedním ze způsobů je iterovat postupně od do a porovnávat hodnotu s . V nejhorším případě potřebujeme kroky (když ). V průměru to udělá kroky. Jinak můžeme reprezentovat jako . Problém je tedy redukován na nalezení a . V tomto případě můžete úkol přepsat jako nebo . Nyní můžeme iterovat přes všechny možné hodnoty na pravé straně výrazu. V tomto případě se jedná o všechna čísla od do . To jsou takzvané velké kroky. Je známo, že jedna ze získaných hodnot pro je požadovaná. Všechny hodnoty pravé strany výrazu můžeme zaznamenat do tabulky. Poté můžeme vypočítat možné hodnoty pro levou stranu pro různé hodnoty . Toto jsou všechna čísla od do , z nichž jedno je požadované a spolu se správnou hodnotou pravé strany dává požadovaný výsledek pro . Úkol je tedy redukován na třídění různých hodnot na levé straně a jejich vyhledávání v tabulce. Pokud je požadovaná hodnota nalezena v tabulce, pak jsme našli , a tedy odpovídající . Tento obrázek ukazuje rychlost algoritmu. V průměru se provádějí operace. V nejhorším případě jsou nutné operace [3] .
Níže je uveden příklad řešení problému diskrétního logaritmu s objednávkou malé skupiny. V praxi kryptosystémy používají skupiny vyššího řádu ke zlepšení kryptografické síly .
Dejte to vědět . Na začátku si vytvoříme a vyplníme tabulku pro „velké kroky“. Vyberme ← ( ). Poté poběží od do .
jeden | 2 | 3 | čtyři | 5 | |
dvacet | 9 | 19 | 12 | deset |
Pojďme najít vhodnou hodnotu pro , aby se hodnoty v obou tabulkách shodovaly
jeden | 2 | 3 | čtyři | |
· | patnáct | 6 | 7 | 12 |
Je vidět, že ve druhé tabulce pro je taková hodnota již v první tabulce. Najít [2] .
Existuje způsob, jak zlepšit výkon algoritmu Gelfond-Shanks. Spočívá v použití efektivního schématu přístupu k tabulce. Nejlepším způsobem je použít hashovací tabulku . Měli byste hashovat druhou komponentu a poté provést vyhledávání hashů v tabulce v hlavní smyčce na . Protože přístup a přidávání prvků do hashovací tabulky vyžaduje čas ( konstanta ), asymptoticky to nezpomaluje algoritmus.
Doba běhu algoritmu se odhaduje jako , což je mnohem lepší než doba běhu vyčerpávajícího výčtu exponentů [4] .
Číselné teoretické algoritmy | |
---|---|
Testy jednoduchosti | |
Hledání prvočísel | |
Faktorizace | |
Diskrétní logaritmus | |
Hledání GCD | |
Modulová aritmetika | |
Násobení a dělení čísel | |
Výpočet druhé odmocniny |