Algoritmy pro rychlé umocňování modulo

Modulo rychlé umocňovací  algoritmy jsou druhem modulo umocňovacích algoritmů , které jsou široce používány v různých kryptosystémech pro urychlení výpočetních operací s velkými čísly.

Metoda využívající Chinese Remainder Theorem

Popis metody

Nechť je požadováno vypočítat , kde jsou čísla dostatečně velká, a nechat modul rozložit na prvočíselníky . Pak pro rychlé umocnění modulo můžete použít čínskou větu o zbytku a vyřešit systém rovnic (když jste předtím vypočítali zbytky pomocí Fermatovy věty, kde ):

Nahrazením za pro pohodlí řešíme systém s ohledem na a získáváme .

Příklad

Nechť je požadováno spočítat

Systém reprezentujeme ve formě

Dosazením t z první rovnice do druhé dostaneme , potom , nebo , nebo ;

dosazením potom t z první rovnice do třetí, přičemž se vezme v úvahu výraz pro dostaneme nebo , pak ;

pak tedy ,;

Aplikace

Významný zisk z tohoto algoritmu lze získat při provádění násobení. Při použití tohoto algoritmu bude násobení prováděno dvakrát rychleji.

Výpočetní složitost

Tato metoda umožňuje snížit počet výpočtů v čase. Ať je to trochu dlouhé . Při obvyklém umocňování to bude trvat asi násobení modulo. Řekněme, že chceme počítat . Snížení o a problém se redukuje na kalkulaci . Každý stupeň v tomto zápisu má délku . Proto bude každá operace umocňování vyžadovat operace. Celkem bude vyžadovat násobení modulo prvočíslo nebo místo původního násobení modulo .

Metoda opakované kvadratury a násobení

Popis metody

Nechť je třeba vypočítat . Představte si stupeň , kde

Uveďme to ve tvaru:

Dále se vypočítá hodnota výrazu a provede se nahrazení v transformovaném výrazu.

Tato operace se provádí, dokud není nalezen výsledek.

Příklad

Nechť je třeba vypočítat . Představme stupeň jako . Pojďme reprezentovat ve formě

Aplikace

Jestliže  - prvočíslo nebo je součinem dvou velkých prvočísel, pak se obvykle používá metoda opakované kvadratury a násobení. Pokud  je však složený, pak se tato metoda obvykle používá spolu s čínskou větou o zbytku.

Výpočetní složitost

Průměrná složitost tohoto algoritmu se rovná operacím násobení dvoubitových čísel plus operacím dělení -bitových čísel -bitovým číslem. Pro -bitová a delší čísla se tento algoritmus na počítači provádí poměrně rychle.

Montgomeryho metoda umocňování

Historie

Tuto metodu navrhl v roce 1985 Peter Montgomery , aby urychlil modulární umocňování.

Popis metody

V této metodě je každé číslo spojeno s určitým obrázkem a všechny výpočty se provádějí s a na konci se provede přechod z obrázku na číslo.

Věta (Montgomery).

Dovolit být  coprime kladná celá čísla a . Potom pro jakékoli celé číslo je dělitelné , a . Navíc, jestliže , pak je rozdíl buď , nebo .

Tato věta nám umožňuje vypočítat optimálním způsobem hodnotu pro některé vhodně zvolené .

Definice 1. Pro čísla , , , taková, že gcd a , nazýváme  — zbytek čísla množství .

Definice 2. Montgomeryho součin dvou celých čísel se nazývá číslo

Věta (Montgomeryho pravidla). Nechte čísla , být coprime, a . Pak a

To znamená, že pro názornost píšeme výraz pro umocňování :

Algoritmus (Produkt Montgomery). Nechť jsou dána celá čísla , kde je liché a . Tento algoritmus vrací .

1 [Funkce M Montgomery] { ; ; //V souladu s teorémem (Montgomery) . 2 [Správný výsledek] jestliže ; vrátit se ; }

Algoritmus (Montgomeryho metoda umocňování). Nechť jsou čísla , , a zvolena stejným způsobem jako pro algoritmus (Montgomeryho součin). Tento algoritmus vrací . Binární bity označujeme .

1 [Výchozí nastavení] ; //Použití nějaké metody dělení se zbytkem. ; //Použití nějaké metody dělení se zbytkem. 2 [Schéma umocňování] pro { ; //pomocí algoritmu(Montgomery product) . jestliže ; } //Nyní se rovná . 3 [Konečný stupeň] ;

V důsledku toho získáme obrázek, ze kterého můžeme získat konečný výsledek , a výraz se vypočítá předem. Pro součin dvou čísel bude výsledek vypadat takto

Příklad

Nechat , a chtít vynásobit dvě čísla a (tj. čtverec)

má obrázek

(pro kontrolu má obrázek )

Obrázky násobíme:

,

Provádíme přechod od obrazu násobení k požadovanému předobrazu

,

,

Podle toho prototyp

Aplikace

Tato metoda má výkonnostní výhodu oproti metodě opakované kvadratury a násobení, protože modulové násobení dvou čísel je mnohem rychlejší.

Výpočetní složitost

Tato metoda umožňuje zredukovat (pro velké hodnoty ) výpočet funkce na jedno násobení dvou čísel velikosti . Složitost Montgomeryho násobení se odhaduje jako .

Algoritmus pomocí "školní" metody

Popis metody

Pro přehlednost zvažte metodu pro základ , to znamená, že budeme provádět výpočty v  binární (nebo binární, protože ) číselné soustavě. Základ má plus v tom, že operace dělení by je posunuta doprava a násobení by  je posunuta doleva.

Definice 1. Reprezentace nezáporného celého čísla v číselné soustavě se základem (nebo -árním zápisem čísla ) je nejkratší posloupnost celých čísel , nazývaná číslice položky, takže každá z těchto číslic splňuje nerovnost a rovnost

Zvažte například binární algoritmus pro převzetí z produktu .

Algoritmus (binární algoritmus pro násobení a odebrání zbytku). Nechť kladná celá čísla jsou dána taková , že , . Tento algoritmus vrací výsledek složené operace . Předpokládáme, že binární reprezentace čísla je dána podle definice 1 , takže bity čísla jsou ve tvaru , a  je nejvýznamnější bit.

1 [Výchozí nastavení] ; 2 [Převést všechny bity] pro { ; jestliže ; jestliže ; jestliže ; } vrátit se ;

Tato metoda má jednu nevýhodu: nevyužívá výhody vícebitové aritmetiky dostupné na jakémkoli moderním počítači. Proto se obvykle používají velké základny .

Výpočtová náročnost "školní" metody

Vyjádření tvaru má odhad výpočetní složitosti −

Viz také

Poznámky

Literatura