Lenstra-Lenstra-Lovasů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é 19. března 2020; kontroly vyžadují
3 úpravy .
Algoritmus Lenstra-Lenstra-Lovas ( LLL-algorithm , LLL-algorithm ) je algoritmus redukce mřížkové báze vyvinutý Arjenem Lenstrou , Hendrikem Lenstrou a Laszlo Lovasem v roce 1982 [1] . V polynomiálním čase algoritmus transformuje bázi na mřížce (podskupině ) na nejkratší téměř ortogonální bázi na stejné mřížce. Od roku 2019 je algoritmus Lenstra-Lenstra-Lovas jedním z nejúčinnějších pro výpočet redukovaného základu v mřížích velkých
rozměry . Je relevantní především v problémech, které se redukují na nalezení nejkratšího vektoru mřížky
.
Historie
Algoritmus vyvinuli nizozemští matematici Arjen Lenstra a Hendrik Lenstra spolu s maďarským matematikem Laszlo Lovasem v roce 1982 [1] [2] .
Hlavním předpokladem pro vytvoření algoritmu LLL bylo, že Gramův–Schmidtův proces pracuje pouze s vektory, jejichž součástí jsou reálná čísla . Pro vektorový prostor umožňuje Gramův–Schmidtův proces transformovat libovolnou bázi na ortonormální („ideální“, k níž směřuje algoritmus LLL). Gram-Schmidtův proces však nezaručuje, že na výstupu bude každý z vektorů celočíselnou lineární kombinací původní báze. Výsledná sada vektorů tedy nemusí být základem původní mřížky. To vedlo k potřebě vytvořit speciální algoritmus pro práci s mřížemi [3] .
Zpočátku byl algoritmus používán k faktorizaci polynomů s celočíselnými koeficienty , k výpočtu diofantických aproximací reálných čísel a k řešení problémů lineárního programování v prostorech s pevnými rozměry a později ke kryptoanalýze [4] [2] .
Snížení základu
Mříž v euklidovském prostoru je podskupina grupy generované lineárně nezávislými vektory z , nazývané základ mřížky. Libovolný vektor mřížky může být reprezentován celočíselnou lineární kombinací základních vektorů [5] . Základ mřížky je definován nejednoznačně: obrázek ukazuje dvě různé základny téže mřížky.

Redukce báze spočívá v uvedení mřížové báze do speciální formy, která splňuje určité vlastnosti. Redukovaná báze by měla být pokud možno nejkratší ze všech bází mřížky a blízká ortogonální (což je vyjádřeno tím, že konečné Gram-Schmidtovy koeficienty by neměly být větší než ) [3] .

Nechť jako výsledek transformace báze pomocí Gram-Schmidtova procesu získáme bázi s Gram-Schmidtovými koeficienty definovanými následovně:



, pro všechny takové .

Potom se (uspořádaná) báze nazývá -LLL-redukovaná báze (kde parametr je v intervalu ), pokud splňuje následující vlastnosti [3] :



![{\textstyle (0,25,1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/770355bbeff78a6383f3e6130d5a76f6d9f38b6f)
- Pro všechny takové . (podmínka snížení)


- Pro chyty: . (Lovasův stav)


Zde je norma vektoru , je skalární součin vektorů.


Zpočátku Lenstra, Lenstra a Lovas ve svém článku demonstrovali fungování algoritmu pro parametr . Přestože algoritmus zůstává správný pro , jeho polynomiální časová operace je zaručena pouze pro v intervalu [1] .




Redukované základní vlastnosti
Dovolit být základem na mřížce zmenšené algoritmem LLL s parametrem . Z definice takového základu lze odvodit několik vlastností . Nechť je norma nejkratšího mřížkového vektoru, pak:




- První základní vektor nemůže být výrazně delší než nejkratší nenulový vektor :
. Zejména pro to se ukazuje [6] .

- První bázový vektor je omezen mřížkovým determinantem :
. Zejména pro to se ukazuje [3] .

- Součin vektorových norem nemůže být mnohem větší než determinant mřížky:
. Zejména pro [3] .

Báze transformovaná metodou LLL je téměř nejkratší možná v tom smyslu, že existují absolutní hranice tak, že první bázový vektor není více než krát delší než nejkratší mřížkový vektor, podobně druhý bázový vektor není delší než faktor druhého nejkratšího mřížkového vektoru a tak dále (což přímo vyplývá z vlastnosti 1) [6] .



Algoritmus
Vstup [7] :
mřížková báze (skládá se z lineárně nezávislých vektorů),

parametr c , nejčastěji (volba parametru závisí na konkrétní úloze).


Pořadí akcí [4] :
- Nejprve je vytvořena kopie původní báze, která je ortogonalizována tak, že v průběhu algoritmu je aktuální báze porovnávána s výslednou kopií na ortogonalitu ( ).

- Pokud je jakýkoli Gram-Schmidtův koeficient (c ) v absolutní hodnotě větší než , pak je projekce jednoho z vektorů aktuální báze na vektor ortogonalizované báze s jiným číslem více než poloviční . To znamená, že je nutné od vektoru odečíst vektor vynásobený zaokrouhleným (zaokrouhlení je nutné, jelikož mřížkový vektor zůstává vektorem stejné mřížky pouze po vynásobení celým číslem, což vyplývá z jeho definice). Pak se zmenší , protože nyní bude projekce na méně než poloviční . Je tedy provedena kontrola splnění 1. podmínky z definice redukovaného základu CŽV.














- Přepočteno pro .


- Pro je zaškrtnuta 2. podmínka zavedená autory algoritmu jako definice báze redukované LLL [1] . Pokud podmínka není splněna, pak se indexy zaškrtnutých vektorů prohodí. A znovu se kontroluje podmínka pro stejný vektor (již s novým indexem).

- Přepočteno pro a pro




- Pokud zbyde nějaké, které překračuje v absolutní hodnotě (již s jiným ), pak se musíme vrátit k bodu 2.



- Po zkontrolování všech podmínek a provedení změn se algoritmus ukončí.
V algoritmu - zaokrouhlování podle pravidel matematiky. Proces algoritmu, popsaný v pseudokódu [7] :

ortho 
(proveďte
Gram-Schmidtův proces bez normalizace);
určit , 
vždy s uvedením
nejaktuálnějších
dosud přiřazených
hodnot : pro
j od do 0 : if , then :
;
Aktualizovat hodnotypro;
koncová podmínka ;
konec cyklu ;
if , then : else :
swap and places;
Aktualizovat hodnotypro; pro;
;
koncová podmínka ;
konec cyklu .









Výstupní údaje: redukovaný základ: .

Výpočetní složitost
Vstup obsahuje základ -rozměrných vektorů s .



Pokud se základní vektory skládají z celočíselných složek, algoritmus aproximuje nejkratší téměř ortogonální bázi v polynomiálním čase , kde je maximální délka v euklidovské normě , tj . Hlavní smyčka algoritmu LLL vyžaduje iterace a pracuje s čísly délky . Vzhledem k tomu, že vektory délky jsou zpracovávány při každé iteraci , v důsledku toho algoritmus vyžaduje aritmetické operace. Použití naivních algoritmů pro sčítání a násobení celých čísel vede k bitovým operacím [3] .









V případě, kdy má svaz základ s racionálními složkami, je třeba tato racionální čísla nejprve převést na celá čísla vynásobením vektorů báze jmenovateli jejich složek (množina jmenovatelů je omezena na nějaké celé číslo ). Ale pak budou operace prováděny již na celých číslech nepřesahujících . Výsledkem bude maximální počet bitových operací . Pro případ, kdy je mřížka uvedena v , zůstává složitost algoritmu stejná, ale zvyšuje se počet bitových operací. Protože v počítačové reprezentaci je jakékoli reálné číslo nahrazeno racionálním z důvodu omezenosti bitové reprezentace, výsledný odhad platí i pro reálné svazy [3] .



Zároveň pro rozměry menší než 4 problém redukce báze efektivněji řeší Lagrangeův algoritmus [8] .
Příklad
Příklad uvedl Wib Bosma [9] .
Nechť je základ mřížky (jako podgrupa ) dán sloupci matice:


V průběhu algoritmu se získá následující:
- Gram-Schmidtův ortogonalizační proces

a _

, tedy a , pak a



- Protože máme a , přejdeme k dalšímu kroku.



- Když máme:

znamená teď

znamená teď

, takže mění místa.

- Nyní se vrátíme ke kroku 1, zatímco mezilehlá matice má tvar


Výstupní data: základ redukovaný metodou Lenstra-Lenstra-Lovas:
Aplikace
Algoritmus se často používá v rámci metody MIMO (kódování prostorového signálu) k dekódování signálů přijímaných více anténami [10] , a v kryptosystémech s veřejným klíčem : kryptosystémy založené na problému s batohem , RSA se specifickými nastaveními, NTRUEncrypt a tak dále . Algoritmus lze použít k nalezení celočíselných řešení v různých problémech teorie čísel, zejména k nalezení kořenů polynomu v celých číslech [11] .
V procesu útoků na kryptosystémy s veřejným klíčem ( NTRU ) se algoritmus používá k nalezení nejkratšího vektoru mřížky, protože algoritmus nakonec najde celou sadu nejkratších vektorů [12] .
V kryptoanalýze RSA s malým CRT-exponentem je úloha, stejně jako v případě NTRU, redukována na nalezení nejkratšího vektoru mřížky, který se nachází v polynomiálním čase (z dimenze báze) [13] .
V problémech s batohem, zejména při útoku na kryptosystém Merkle-Hellman, hledá algoritmus LLL redukovanou mřížkovou bázi [14] .
Variace a zobecnění
Použití aritmetiky s pohyblivou řádovou čárkou namísto přesné reprezentace racionálních čísel může výrazně urychlit algoritmus LLL za cenu velmi malých numerických chyb [15] .
Implementace algoritmu
Programově je algoritmus implementován v následujícím softwaru:
- V fpLLL jako samostatná implementace [16] ;
- V GAP jako funkce LLLReducedBasis [17] ;
- V Macaulay2 jako funkce LLLv knihovně LLLBases [18] ;
- V Magma obě funkce LLLa LLLGram [19] ;
- V Maple jako funkce IntegerRelations[LLL] [20] ;
- V Mathematica jako funkce LatticeReduce [21] ;
- V knihovně teorie čísel (NTL) jako modul LLL [22] ;
- V PARI/GP jako funkce qflll [23] ;
- V Pymatgenu jako funkce analysis.get_lll_reduced_lattice [24] ;
- V SageMath jako metoda LLLimplementovaná ve fpLLL a NTL [25] .
Poznámky
- ↑ 1 2 3 4 A. K. Lenstra, H. W. Lenstra ml., L. Lovász. Faktorování polynomů s racionálními koeficienty // Mathematische Annalen . - 1982. - S. 515-534 . — ISSN 4 . - doi : 10.1007/BF01457454 .
- ↑ 1 2 The LLL Algorithm, 2010 , 1 The History of the LLL-Algorithm.
- ↑ 1 2 3 4 5 6 7 Galbraith, Steven. 17. Redukce mřížky // Matematika kryptografie veřejného klíče (anglicky) . - 2012. Archivováno 20. září 2015 na Wayback Machine
- ↑ 1 2 Xinyue, Deng. Úvod do algoritmu LLL // Massachusetts Institute of Technology. - S. 9-10 . Archivováno z originálu 8. prosince 2019.
- ↑ Cherednik I. V. Nezáporná mřížková báze // 3. vyd. - Oddělený. Mat., 2014. - T. 26 . - S. 127-135 . (Ruština)
- ↑ 1 2 Regev, Oded. Lattices in Computer Science: LLL Algorithm // New York University. Archivováno z originálu 20. března 2021.
- ↑ 1 2 Hoffstein, Jeffrey; Pipher, Jill; Silverman, JH Úvod do matematické kryptografie . — Springer, 2008. - S. 411. - ISBN 978-0-387-77993-5 .
- ↑ Nguyen, Phong Q., Stehlé, Damien. Redukce báze nízkorozměrné mřížky znovu prozkoumána // ACM Transactions on Algorithms. — S. 1–48 . - doi : 10.1145/1597036.1597050 .
- ↑ Bosma, Wieb. 4. LLL // Počítačová algebra. - 2007. Archivováno 8. května 2019.
- ↑ Shahriar Shahabuddin, Janne Janhunen, Zaheer Khan, Markku Juntti, Amanullah Ghazi. Přizpůsobený multiprocesor pro redukci mřížky pro detekci MIMO // 2015 IEEE International Symposium on Circuits and Systems (ISCAS). - 2015. - arXiv : 1501.04860 . - doi : 10.1109/ISCAS.2015.7169312 .
- ↑ D. Simon. Vybrané aplikace CŽV v teorii čísel // Konference LLL+25. — Caen, Francie. Archivováno 6. května 2021.
- ↑ Abderrahmane, Nitaj. Kryptoanalýza NTRU se dvěma veřejnými klíči // International Association for Cryptologic Research. — Caen, Francie. Archivováno z originálu 21. prosince 2019.
- ↑ Bleichenbacher, Daniel a May, Alexander. Nové útoky na RSA s malými tajnými exponenty CRT // Mezinárodní asociace pro kryptologický výzkum. — Darmstadt, Německo. Archivováno z originálu 24. června 2021.
- ↑ Liu, Jiayang, Bi, Jingguo a Xu, Songyan. Vylepšený útok na základní kryptosystémy Merkle–Hellman Knapsack // IEEE. — Peking 100084, Čína. Archivováno z originálu 17. června 2021.
- ↑ Algoritmus LLL, 2010 , 4 Pokrok v oblasti LLL a redukce mřížky.
- ↑ Vývojový tým FPLLL. FPLLL, knihovna pro redukci mřížky . — 2016. Archivováno 17. února 2020.
- ↑ Integrální matice a svazy . GAP . Staženo 10. prosince 2019. Archivováno z originálu 19. prosince 2019. (neurčitý)
- ↑ LLLBase -- redukce mřížky (Lenstra-Lenstra-Lovaszovy báze) . Macaulay2 . Staženo 10. prosince 2019. Archivováno z originálu 10. prosince 2019. (neurčitý)
- ↑ Snížení LLL . Magma . Staženo 10. prosince 2019. Archivováno z originálu 10. prosince 2019. (neurčitý)
- ↑ IntegerRelations/LLL . javor . Získáno 10. prosince 2019. Archivováno z originálu 18. září 2020. (neurčitý)
- ↑ LatticeReduce . Jazyková dokumentace Wolfram . Staženo 10. prosince 2019. Archivováno z originálu 10. prosince 2019. (neurčitý)
- ↑ MODUL:LLL . NTL . Získáno 10. prosince 2019. Archivováno z originálu 17. srpna 2018. (neurčitý)
- ↑ Vektory, matice, lineární algebra a množiny . PARI/GP . Staženo 10. prosince 2019. Archivováno z originálu 18. prosince 2019. (neurčitý)
- ↑ modul pymatgen.core.lattice . pymatgen . Staženo 27. prosince 2019. Archivováno z originálu 18. prosince 2019. (neurčitý)
- ↑ Husté matice přes celý kruh . šalvěj . Získáno 18. prosince 2019. Archivováno z originálu 6. května 2021. (neurčitý)
Literatura
- Huguette, Napias. Zobecnění algoritmu LLL přes euklidovské kruhy nebo řády // J. The. Nombr. Bordeaux. - 1996. - doi : 10.5802/jtnb.176 .
- Cohen, Henry. Kurz výpočetní algebraické teorie čísel (anglicky) . — Springer, 2000. - Sv. 138. - (GTM). — ISBN 3-540-55640-0 .
- Borwein, Peter. Výpočetní exkurze v analýze a teorii čísel . - 2002. - ISBN 0-387-95444-9 .
- Hoffstein, Jeffrey; Pipher, Jill; Silverman, JH Úvod do matematické kryptografie . — Springer, 2008. - ISBN 978-0-387-77993-5 .
- Luk, Franklin T.; Qiao, Sanzheng. Otočený algoritmus LLL // Lin. Alg. Přihláška - 2011. - T. 434 , č. 11 . - S. 2296-2307 . - doi : 10.1016/j.laa.2010.04.003 .
- Algoritmus LLL: Průzkum a aplikace / Ed. od Phong Q. Nguyen a Brigitte Vallee. - Springer, 2010. - ISBN 978-3-642-02295-1 . - doi : 10.1007/978-3-642-02295-1 .
- Murray R. Bremner. Redukce mřížkové báze: Úvod do algoritmu LLL a jeho aplikací. - CRC Press, 2011. - ISBN 9781439807026 .