Gelfond-Shanksů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é 28. prosince 2019; kontroly vyžadují 9 úprav .

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 .

Rozsah

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] .

Problém diskrétního logaritmu

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.

Teorie

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] .

Algoritmus

Vstup : Skupina cyklického řádu , generátor a nějaký prvek .

Výstup : Číslo , které vyhovuje .

  1. Vypočítejte ← .
  2. Pro libovolné , kde ≤ ≤ :
    1. Napište do tabulky ( , ). (Viz část Implementace)
    2. ← •
  3. Pro libovolné , kde ≤ ≤ :
    1. Vypočítejte .
    2. Zkontrolujte, zda tabulka obsahuje.
    3. Pokud ano, vraťte  - .
    4. Pokud ne, pokračujte smyčkou [1] [2] [7] .

Zdůvodnění algoritmu

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] .

Odhad složitosti algoritmu

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] .

Příklad

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] .

Implementace

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] .

Funkce

Poznámky

  1. 1 2 D. Shanks. Infrastruktura reálného kvadratického pole a její aplikace. Sborník příspěvků z konference Teorie čísel. - University of Colorado, Boulder, 1972. - S. pp. 217-224. .
  2. 1 2 3 4 I. A. Pankratová. Číselné teoretické metody v kryptografii: Učebnice. - Tomsk: TSU, 2009. - S. 90-98. — 120 s. .
  3. 1 2 3 V.I. Něčajev. Prvky kryptografie. Základy teorie informační bezpečnosti . - M . : Vyšší škola, 1999. - S.  61 -67. — 109 s. — ISBN 5-06-003644-8 . .
  4. 12 D.C. Terr . Modifikace Shanksova algoritmu baby-step gigant-step . — Matematika počítání. - 2000. - T. 69. - S. 767-773. .
  5. Vasilenko O. N. Číselné teoretické algoritmy v kryptografii . - Moskva: MTSNMO , 2003. - S. 163-185. — 328 s. — ISBN 5-94057-103-4 . Archivovaná kopie (nedostupný odkaz) . Datum přístupu: 23. listopadu 2016. Archivováno z originálu 27. ledna 2007.   .
  6. Yan, Song Y. Testování primality a faktorizace celých čísel v kryptografii s veřejným klíčem . - 2. - Springer, 2009. - S. 257-260. — 374 s. — ISBN 978-0-387-77267-7 . .
  7. 1 2 3 4 5 6 Glukhov M. M., Kruglov I. A., Pichkur A. B., Cheremushkin A. V. Úvod do číselně-teoretických metod kryptografie. - 1. vyd. - Petrohrad. : Lan, 2010. - S. 279-298. — 400 s. S. - ISBN 978-5-8114-1116-0 . .

Literatura