Lenstra-Lenstra-Lovas algoritm
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 19 mars 2020; kontroller kräver
3 redigeringar .
Lenstra-Lenstra-Lovas- algoritmen ( LLL-algorithm , LLL-algorithm ) är en gitterbasreduktionsalgoritm [ utvecklad av Arjen Lenstra , Hendrik Lenstra och Laszlo Lovas 1982 [ 1] . I polynomtid omvandlar algoritmen en bas på ett gitter (undergrupp ) till den kortaste nästan ortogonala basen på samma gitter. Från och med 2019 är Lenstra-Lenstra-Lovas-algoritmen en av de mest effektiva för att beräkna den reducerade basen i högdimensionella gitter . Det är främst relevant i problem som reducerar till att hitta den kortaste gittervektorn
.
Historik
Algoritmen utvecklades av de holländska matematikerna Arjen Lenstra och Hendrik Lenstra tillsammans med den ungerske matematikern Laszlo Lovas 1982 [1] [2] .
Huvudförutsättningen för skapandet av LLL-algoritmen var att Gram-Schmidt-processen endast fungerar med vektorer vars komponenter är reella tal . För ett vektorrum gör Gram–Schmidt-processen det möjligt att omvandla en godtycklig bas till en ortonormal (“ideal”, som LLL-algoritmen tenderar mot). Men Gram-Schmidt-processen garanterar inte att var och en av vektorerna vid utgången kommer att vara en heltalslinjär kombination av den ursprungliga basen. Den resulterande uppsättningen vektorer kanske inte är grunden för det ursprungliga gittret. Detta ledde till behovet av att skapa en speciell algoritm för att arbeta med gitter [3] .
Ursprungligen användes algoritmen för att faktorisera polynom med heltalskoefficienter , beräkna diofantiska approximationer av reella tal och för att lösa linjära programmeringsproblem i fastdimensionella utrymmen , och senare för kryptoanalys [4] [2] .
Grundreduktion
Ett gitter i det euklidiska utrymmet är en undergrupp av gruppen som genereras av linjärt oberoende vektorer från , kallad basen för gittret. Vilken gittervektor som helst kan representeras av en heltalslinjär kombination av basvektorer [5] . Grunden för ett gitter definieras tvetydigt: figuren visar två olika baser av samma gitter.
Basreduktion består i att bringa gitterunderlaget till en speciell form som uppfyller vissa egenskaper. Den reducerade basen bör om möjligt vara den kortaste bland alla baser i gittret och nära ortogonal (vilket uttrycks i det faktum att de slutliga Gram-Schmidt-koefficienterna inte bör vara mer än ) [3] .
Låt, som ett resultat av omvandlingen av basen med hjälp av Gram-Schmidt-processen , basen , med Gram-Schmidt-koefficienterna definierade enligt följande, erhållas:
, för allt sådant .
Då kallas en (ordnad) bas en -LLL-reducerad bas (där parametern är i intervallet ) om den uppfyller följande egenskaper [3] :
- För allt sådant . (reduktionsvillkor)
- För lastrum: . (Lovas skick)
Här är normen för vektorn , är den skalära produkten av vektorer.
Inledningsvis demonstrerade Lenstra, Lenstra och Lovas funktionen av algoritmen för parametern i deras papper . Även om algoritmen förblir korrekt för , garanteras dess polynomtidsfunktion endast för i intervallet [1] .
Reducerade basegenskaper
Låta vara en grund på gittret reducerat av LLL-algoritmen med parametern . Flera egenskaper kan härledas från definitionen av en sådan grund . Låt vara normen för den kortaste gittervektorn, då
:
- Den första basvektorn kan inte vara betydligt längre än den kortaste vektorn som inte är noll :. I synnerhet, för det visar sig [6] .
- Den första basvektorn begränsas av gitterdeterminanten :. I synnerhet, för det visar sig [3] .
- Produkten av vektornormer kan inte vara mycket större än gittrets determinant:. I synnerhet för [3] .
Basen transformerad med LLL-metoden är nästan den kortaste möjliga, i den meningen att det finns absoluta gränser så att den första basvektorn inte är mer än gånger så lång som den kortaste gittervektorn, på samma sätt är den andra basvektorn inte mer än en faktor av sekunden den kortaste gittervektorn, och så vidare (vilket direkt följer av egenskap 1) [6] .
Algoritm
Ingång [7] :
gitterbas (består av linjärt oberoende vektorer),
parameter c , oftast (valet av parameter beror på den specifika uppgiften).
Åtgärdssekvens [4] :
- Först skapas en kopia av originalbasen, som ortogonaliseras så att under algoritmens gång den aktuella basen jämförs med den resulterande kopian för ortogonalitet ( ).
- Om någon Gram-Schmidt-koefficient (c ) är större i absolut värde än , då är projektionen av en av vektorerna för den nuvarande basen på vektorn för en ortogonaliserad bas med ett annat nummer mer än hälften . Detta betyder att det är nödvändigt att subtrahera vektorn multiplicerad med den avrundade vektorn (avrundning är nödvändig, eftersom gittervektorn förblir vektorn för samma gitter endast när den multipliceras med ett heltal, vilket följer av dess definition). Då blir det mindre , eftersom nu projektionen på blir mindre än hälften . Sålunda görs en kontroll av överensstämmelse med 1:a villkoret från definitionen av ett LLL-reducerat underlag.
- Omräknat för .
- För , det andra villkoret kontrolleras, introducerat av författarna till algoritmen som definitionen av en LLL-reducerad bas [1] . Om villkoret inte är uppfyllt, byts indexen för de kontrollerade vektorerna. Och villkoret kontrolleras igen för samma vektor (redan med ett nytt index).
- Omräknat för och för
- Om det finns någon kvar som överskrider i absolut värde (redan med en annan ), måste vi återgå till punkt 2.
- När alla villkor är kontrollerade och ändringar görs, avslutas algoritmen.
I algoritmen - avrundning enligt matematikens regler. Processen för algoritmen, beskriven i pseudokod [7] :
ortho
(utför
Gram-Schmidt-processen utan normalisering);
bestämma , alltid antyda
de mest aktuella värdena
tilldela
hittills :
för
j från till 0 : if , då :
;
Uppdatera värdenför;
slutvillkor ;
_ slutet av cykeln ;
om , då : annat :
byta och platser;
Uppdatera värdenför; för;
;
slutvillkor ;
_ slutet av cykeln .
Utdata: reducerad bas: .
Beräkningskomplexitet
Ingången innehåller en bas av dimensionella vektorer med .
Om basvektorerna består av heltalskomponenter, approximerar algoritmen den kortaste nästan ortogonala basen i polynomtid , där är den maximala längden i den euklidiska normen , dvs. Huvudslingan i LLL-algoritmen kräver iterationer och fungerar med antal längder . Eftersom längdvektorer bearbetas vid varje iteration kräver algoritmen aritmetiska operationer som ett resultat. Användningen av naiva algoritmer för addition och multiplikation av heltal resulterar i bitvisa operationer [3] .
I det fall då gittret har en bas med rationella komponenter, måste dessa rationella tal först omvandlas till heltal genom att multiplicera basvektorerna med nämnare av deras komponenter (uppsättningen av nämnare är begränsad till något heltal ). Men då kommer operationer att utföras redan på heltal som inte överstiger . Som ett resultat kommer det att finnas maximalt antal bitoperationer . För det fall då gittret anges i , förblir komplexiteten hos algoritmen densamma, men antalet bitoperationer ökar. Eftersom i datorrepresentationen vilket reellt tal som helst ersätts med ett rationellt på grund av bitrepresentationens begränsade storlek, är den resulterande uppskattningen även sann för reella gitter [3] .
Samtidigt, för dimensioner mindre än 4, löses problemet med basreduktion mer effektivt av Lagrange-algoritmen [8] .
Exempel
Ett exempel ges av Wib Bosma [9] .
Låt basen för gittret (som en undergrupp ) ges av matrisens kolumner:
Under algoritmen erhålls följande:
- Gram-Schmidts ortogonaliseringsprocess
- , och
- , därför och , sedan och
- För vi har och , så vi går till nästa steg.
- När vi har:
- betyder nu
- betyder nu
- , så de byter plats.
- Nu återgår vi till steg 1, medan mellanmatrisen har formen
Utdata: bas reducerad med Lenstra-Lenstra-Lovas-metoden:
Applikation
Algoritmen används ofta inom MIMO- metoden (spatial signal coding) för att avkoda signaler som tas emot av flera antenner [10] och i kryptosystem med publik nyckel : kryptosystem baserade på ryggsäcksproblemet , RSA med specifika inställningar, NTRUEncrypt och så vidare . Algoritmen kan användas för att hitta heltalslösningar i olika problem inom talteorin, i synnerhet för att hitta rötterna till ett polynom i heltal [11] .
I processen med attacker mot kryptosystem med publik nyckel ( NTRU ) används algoritmen för att hitta den kortaste gittervektorn, eftersom algoritmen så småningom hittar en hel uppsättning kortaste vektorer [12] .
I RSA-krypteringsanalys med en liten CRT-exponent reduceras uppgiften, som i fallet med NTRU, till att hitta den kortaste gitterbasvektorn som finns i polynomtid (från basdimensionen) [13] .
I ryggsäcksproblem, i synnerhet för att attackera Merkle-Hellmans kryptosystem, söker LLL-algoritmen efter en reducerad gitterbas [14] .
Variationer och generaliseringar
Att använda flyttalsaritmetik istället för en exakt representation av rationella tal kan avsevärt påskynda LLL-algoritmen till priset av mycket små numeriska fel [15] .
Implementeringar av algoritmen
Programmatiskt implementeras algoritmen i följande mjukvara:
- I fpLLL som en fristående implementering [16] ;
- I GAP som funktion LLLReducedBasis [17] ;
- I Macaulay2 som en funktion LLLi biblioteket LLLBases [18] ;
- I Magma både funktioner LLLoch LLLGram [19] ;
- I lönn som en funktion IntegerRelations[LLL] [20] ;
- I Mathematica som funktion LatticeReduce [21] ;
- I Number Theory Library (NTL) som en modul LLL [22] ;
- I PARI/GP som en funktion qflll [23] ;
- I Pymatgen som funktion analysis.get_lll_reduced_lattice [24] ;
- I SageMath som en metod LLLimplementerad i fpLLL och NTL [25] .
Anteckningar
- ↑ 1 2 3 4 A. K. Lenstra, H. W. Lenstra Jr., L. Lovász. Faktorering av polynom med rationella koefficienter // Mathematische Annalen . - 1982. - S. 515-534 . — ISSN 4 . - doi : 10.1007/BF01457454 .
- ↑ 1 2 LLL-algoritmen, 2010 , 1 Historien om LLL-algoritmen.
- ↑ 1 2 3 4 5 6 7 Galbraith, Steven. 17. Lattice Reduction // Mathematics of Public Key Cryptography (engelska) . - 2012. Arkiverad 20 september 2015 på Wayback Machine
- ↑ 1 2 Xinyue, Deng. En introduktion till LLL Algorithm // Massachusetts Institute of Technology. - S. 9-10 . Arkiverad från originalet den 8 december 2019.
- ↑ Cherednik I. V. Icke-negativ gitterbas // 3rd ed. - Diskret. Mat., 2014. - T. 26 . - S. 127-135 . (ryska)
- ↑ 1 2 Regev, Oded. Gitter i datavetenskap: LLL Algorithm // New York University. Arkiverad från originalet den 20 mars 2021.
- ↑ 1 2 Hoffstein, Jeffrey; Pipher, Jill; Silverman, JH En introduktion till matematisk kryptografi . — Springer, 2008. - S. 411. - ISBN 978-0-387-77993-5 .
- ↑ Nguyen, Phong Q., Stehlé, Damien. Reduktion av lågdimensionell gitterbas återbesökt // ACM Transactions on Algorithms. — S. 1–48 . - doi : 10.1145/1597036.1597050 .
- ↑ Bosma, Wieb. 4. LLL // Datoralgebra. - 2007. Arkiverad 8 maj 2019.
- ↑ Shahriar Shahabuddin, Janne Janhunen, Zaheer Khan, Markku Juntti, Amanullah Ghazi. En skräddarsydd multiprocessor för nätreducering för MIMO-detektering // 2015 IEEE International Symposium on Circuits and Systems (ISCAS). - 2015. - arXiv : 1501.04860 . - doi : 10.1109/ISCAS.2015.7169312 .
- ↑ D. Simon. Utvalda tillämpningar av LLL i talteori // LLL+25 Konferens. — Caen, Frankrike. Arkiverad 6 maj 2021.
- ↑ Abderrahmane, Nitaj. Krypteringsanalys av NTRU med två offentliga nycklar // International Association for Cryptologic Research. — Caen, Frankrike. Arkiverad från originalet den 21 december 2019.
- ↑ Bleichenbacher, Daniel och May, Alexander. Nya attacker mot RSA med små hemliga CRT-exponenter // International Association for Cryptologic Research. — Darmstadt, Tyskland. Arkiverad från originalet den 24 juni 2021.
- ↑ Liu, Jiayang, Bi, Jingguo och Xu, Songyan. En förbättrad attack mot de grundläggande Merkle–Hellman Knapsack-kryptosystemen // IEEE. — Peking 100084, Kina. Arkiverad från originalet den 17 juni 2021.
- ↑ The LLL Algorithm, 2010 , 4 Framsteg på LLL och gitterreduktion.
- ↑ FPLLL-utvecklingsteamet. FPLLL, ett gitterreduktionsbibliotek . — 2016. Arkiverad den 17 februari 2020.
- ↑ Integralmatriser och gitter . GAP . Hämtad 10 december 2019. Arkiverad från originalet 19 december 2019. (obestämd)
- ↑ LLLBaser -- gitterreduktion (Lenstra-Lenstra-Lovasz-baser) . Macaulay2 . Hämtad 10 december 2019. Arkiverad från originalet 10 december 2019. (obestämd)
- ↑ LLL-minskning . Magma . Hämtad 10 december 2019. Arkiverad från originalet 10 december 2019. (obestämd)
- ↑ IntegerRelations/LLL . lönn . Hämtad 10 december 2019. Arkiverad från originalet 18 september 2020. (obestämd)
- ↑ LatticeReduce . Wolfram språkdokumentation . Hämtad 10 december 2019. Arkiverad från originalet 10 december 2019. (obestämd)
- ↑ MODUL:LLL . NTL . Hämtad 10 december 2019. Arkiverad från originalet 17 augusti 2018. (obestämd)
- ↑ Vektorer, matriser, linjär algebra och mängder . PARI/GP . Hämtad 10 december 2019. Arkiverad från originalet 18 december 2019. (obestämd)
- ↑ pymatgen.core.lattice-modul . pymatgen . Hämtad 27 december 2019. Arkiverad från originalet 18 december 2019. (obestämd)
- ↑ Täta matriser över heltalsringen . salvia . Hämtad 18 december 2019. Arkiverad från originalet 6 maj 2021. (obestämd)
Litteratur
- Huguette, Napias. En generalisering av LLL-algoritmen över euklidiska ringar eller order // J. The. Nombr. Bordeaux. - 1996. - doi : 10.5802/jtnb.176 .
- Cohen, Henry. En kurs i beräkningsalgebraisk talteori (engelska) . — Springer, 2000. - Vol. 138. - (GTM). — ISBN 3-540-55640-0 .
- Borwein, Peter. Beräkningsexkursioner i analys och talteori . - 2002. - ISBN 0-387-95444-9 .
- Hoffstein, Jeffrey; Pipher, Jill; Silverman, JH En introduktion till matematisk kryptografi . — Springer, 2008. - ISBN 978-0-387-77993-5 .
- Luk, Franklin T.; Qiao, Sanzheng. En pivoterad LLL-algoritm // Lin. Alg. Appl.. - 2011. - T. 434 , nr 11 . - S. 2296-2307 . - doi : 10.1016/j.laa.2010.04.003 .
- LLL Algorithm: Survey and Applications / Ed. av Phong Q. Nguyen och Brigitte Vallee. - Springer, 2010. - ISBN 978-3-642-02295-1 . - doi : 10.1007/978-3-642-02295-1 .
- Murray R. Bremner. Lattice Basis Reduction: En introduktion till LLL-algoritmen och dess tillämpningar. - CRC Press, 2011. - ISBN 9781439807026 .