Lenstra-Lenstra-Lovas-algoritmi
Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 19. maaliskuuta 2020 tarkistetusta
versiosta . tarkastukset vaativat
3 muokkausta .
Lenstra-Lenstra-Lovas- algoritmi ( LLL-algoritmi , LLL-algoritmi ) on Arjen Lenstran , Hendrik Lenstran ja Laszlo Lovasin vuonna 1982 kehittämä hilapohjainen pelkistysalgoritmi 1] . Polynomiajassa algoritmi muuntaa hilassa olevan kannan (alaryhmä ) lyhimmäksi lähes ortogonaaliksi kantaksi samassa hilassa. Vuodesta 2019 lähtien Lenstra-Lenstra-Lovas-algoritmi on yksi tehokkaimmista laskettaessa pelkistettyä kantaa korkeadimensionaalisissa hilassa . Sillä on merkitystä ensisijaisesti ongelmissa, jotka rajoittuvat lyhimmän hilavektorin
löytämiseen .
Historia
Algoritmin kehittivät hollantilaiset matemaatikot Arjen Lenstra ja Hendrik Lenstra yhdessä unkarilaisen matemaatikon Laszlo Lovasin kanssa vuonna 1982 [1] [2] .
Pääedellytys LLL-algoritmin luomiselle oli, että Gram–Schmidt-prosessi toimii vain vektoreiden kanssa, joiden komponentit ovat reaalilukuja . Vektoriavaruudelle Gram – Schmidt-prosessi mahdollistaa mielivaltaisen kannan muuntamisen ortonormaaliksi ( " ideaaliksi", johon LLL-algoritmi pyrkii). Mutta Gram-Schmidt-prosessi ei takaa, että lähdössä jokainen vektoreista on alkuperäisen perustan lineaarinen kokonaislukuyhdistelmä . Näin ollen tuloksena oleva vektoreiden joukko ei välttämättä ole alkuperäisen hilan perusta. Tämä johti tarpeeseen luoda erityinen algoritmi hilatyöskentelyä varten [3] .
Aluksi algoritmia käytettiin polynomien tekijöihin jakamiseen kokonaislukukertoimilla , reaalilukujen diofantiiniapproksimaatioiden laskemiseen ja lineaarisen ohjelmoinnin ongelmien ratkaisemiseen kiinteäulotteisissa avaruudessa ja myöhemmin kryptausanalyysissä [4] [2] .
Perusalennus
Euklidisen avaruuden hila on lineaarisesti riippumattomien vektorien muodostaman ryhmän alaryhmä , jota kutsutaan hilan kantaksi. Mikä tahansa hilavektori voidaan esittää perusvektoreiden lineaarisella kokonaislukuyhdistelmällä [5] . Hilan kanta määritellään moniselitteisesti: kuva esittää saman hilan kaksi eri kantaa.

Kantavähennys koostuu hilapohjan saamisesta erityiseen muotoon, joka tyydyttää tietyt ominaisuudet. Supistetun kantaluvun tulee olla mahdollisuuksien mukaan lyhin hilan kantajista ja lähellä ortogonaalista (mikä ilmaistaan siinä, että lopulliset Gram-Schmidt-kertoimet eivät saa olla suurempia kuin ) [3] .

Saavutetaan Gram-Schmidt-prosessilla tehdyn kannan muunnoksen tuloksena kanta , jonka Gram-Schmidt-kertoimet määritellään seuraavasti:



, kaikille sellaisille .

Sitten (järjestettyä) kantaa kutsutaan -LLL-vähennetyksi kantaksi (missä parametri on välissä ), jos se täyttää seuraavat ominaisuudet [3] :



![{\textstyle (0.25,1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/770355bbeff78a6383f3e6130d5a76f6d9f38b6f)
- Kaikille sellaisille . (vähennysehto)


- Pitoon : . (Lovaksen kunto)


Tässä on vektorin normi , on vektorien skalaaritulo .


Aluksi Lenstra, Lenstra ja Lovas esittelivät artikkelissaan parametrin algoritmin toiminnan . Vaikka algoritmi pysyy oikeana , sen polynomiaikainen toiminta on taattu vain välissä [1] .




Vähennetyt perusominaisuudet
Olkoon pohja LLL-algoritmilla vähennetylle hilalle parametrilla . Tällaisen perustan määritelmästä voidaan johtaa useita ominaisuuksia . Olkoon lyhimmän hilavektorin
normi , niin:



- Ensimmäinen kantavektori ei voi olla merkittävästi pidempi kuin lyhin nollasta poikkeava vektori :
. Erityisesti, sillä käy ilmi [6] .

- Ensimmäistä kantavektoria rajoittaa hiladeterminantti :
. Erityisesti, sillä käy ilmi [3] .

- Vektorinormien tulo ei voi olla paljon suurempi kuin hilan determinantti:
. Erityisesti [ 3 ] .

LLL-menetelmällä muunnettu kanta on lähes lyhin mahdollinen siinä mielessä, että on olemassa absoluuttiset rajat , jolloin ensimmäinen kantavektori on enintään kertaa niin pitkä kuin lyhin hilavektori, samoin toinen kantavektori on enintään toiseksi lyhimmän hilavektorin tekijä ja niin edelleen (joka seuraa suoraan ominaisuudesta 1) [6] .



Algoritmi
Syöte [7] :
hilakanta (koostuu lineaarisesti riippumattomista vektoreista),

parametri c , useimmiten (parametrin valinta riippuu tietystä tehtävästä).


Toimintojen järjestys [4] :
- Ensin luodaan kopio alkuperäisestä kannasta, joka ortogonalisoidaan siten, että algoritmin aikana nykyistä kantaa verrataan tuloksena olevaan kopioon ortogonaalisuuden suhteen ( ).

- Jos mikä tahansa Gram-Schmidt-kerroin (c ) on itseisarvoltaan suurempi kuin , niin yhden nykyisen kannan vektoreista projektio ortogonalisoidun kannan vektoriin, jolla on eri luku, on yli puolet . Tämä tarkoittaa, että vektorista on vähennettävä vektori kerrottuna pyöristetyllä (pyöristys on tarpeen, koska hilavektori pysyy saman hilan vektorina vain kerrottuna kokonaisluvulla, mikä seuraa sen määritelmästä). Sitten se pienenee , koska nyt projektio on alle puolet . Näin ollen tarkistetaan LLL-vähennetyn perusteen määritelmän ensimmäisen ehdon noudattaminen.














- Laskettu uudelleen .


- Kohdalle , tarkistetaan 2. ehto, jonka algoritmin kirjoittajat ovat esittäneet LLL-vähennetyn perustan määritelmänä [1] . Jos ehto ei täyty, tarkistettujen vektorien indeksit vaihdetaan. Ja ehto tarkistetaan uudelleen samalle vektorille (jo uudella indeksillä).

- Laskettu uudelleen puolesta ja puolesta




- Jos jäljellä on ylittäviä absoluuttisia arvoja (jo toisen kanssa ), meidän on palattava kohtaan 2.



- Kun kaikki ehdot on tarkistettu ja muutoksia on tehty, algoritmi päättyy.
Algoritmissa - pyöristys matematiikan sääntöjen mukaan. Algoritmin prosessi, joka on kuvattu pseudokoodissa [7] :

orto 
(suorita
Gram-Schmidt-prosessi ilman normalisointia);
määrittää , 
aina viimeisimpien
tähän mennessä osoitettujen arvojen
mukaan : j : lle
arvosta 0 :aan : jos , sitten :
;
Päivitä arvotkohteelle;
lopputila ;
_ syklin loppu ;
jos , niin : else :
swap ja paikat;
Päivitä arvotkohteelle; varten;
;
lopputila ;
_ syklin loppu .









Lähtötiedot: alennettu peruste: .

Laskennallinen monimutkaisuus
Syöte sisältää -ulotteisten vektorien perustan , jossa on .



Jos kantavektorit koostuvat kokonaislukukomponenteista, algoritmi approkimoi lyhimmän lähes ortogonaalisen kantaosan polynomiajassa , jossa on maksimipituus euklidisessa normissa eli . LLL-algoritmin pääsilmukka vaatii iteraatioita ja toimii pituisilla numeroilla . Koska pituusvektorit käsitellään jokaisessa iteraatiossa , algoritmi vaatii aritmeettisia operaatioita. Naiivien algoritmien käyttö kokonaislukujen yhteen- ja kertolaskussa johtaa bittikohtaisiin operaatioihin [3] .









Siinä tapauksessa, että hilassa on rationaalisia komponentteja sisältävä kanta, nämä rationaaliset luvut on ensin muutettava kokonaisluvuiksi kertomalla kantavektorit niiden komponenttien nimittäjillä (nimittäjien joukko on rajoitettu johonkin kokonaislukuun ). Mutta silloin operaatiot suoritetaan jo kokonaisluvuille, jotka eivät ylitä . Tämän seurauksena bittitoimintoja on maksimissaan . Siinä tapauksessa, että hila on annettu muodossa , algoritmin monimutkaisuus pysyy samana, mutta bittioperaatioiden määrä kasvaa. Koska tietokoneesituksessa mikä tahansa reaaliluku korvataan rationaalisella bittiesityksen rajoittuneisuudesta johtuen, tuloksena oleva estimaatti pätee myös todellisille hiloille [3] .



Samanaikaisesti alle 4:n dimensioissa kantavähennysongelma ratkaistaan tehokkaammin Lagrange-algoritmilla [8] .
Esimerkki
Wib Bosman [9] antama esimerkki .
Olkoon hilan kanta (alaryhmänä ) matriisin sarakkeiden avulla:


Algoritmin aikana saadaan seuraavaa:
- Gram-Schmidtin ortogonalisointiprosessi

, ja

, siksi ja , sitten ja



- Sillä meillä on ja , joten siirrymme seuraavaan vaiheeseen.



- Kun meillä on:

tarkoittaa nyt

tarkoittaa nyt

, joten he vaihtavat paikkaa.

- Nyt palataan vaiheeseen 1, kun välimatriisilla on muoto


Lähtötiedot: Lenstra-Lenstra-Lovas-menetelmällä vähennetty peruste:
Sovellus
Algoritmia käytetään usein MIMO -menetelmässä (Spatial Sign Coding) useiden antennien vastaanottamien signaalien dekoodaamiseen [10] ja julkisen avaimen salausjärjestelmissä : selkäreppuongelmaan perustuvat salausjärjestelmät , RSA tietyillä asetuksilla, NTRUEncrypt ja niin edelleen . Algoritmin avulla voidaan löytää kokonaislukuratkaisuja lukuisissa lukuteorian ongelmissa, erityisesti polynomin juuria kokonaislukuina [11] .
Julkisen avaimen salausjärjestelmiin ( NTRU ) kohdistuvissa hyökkäyksissä algoritmia käytetään lyhimmän hilavektorin löytämiseen, koska algoritmi löytää lopulta kokonaisen joukon lyhimpiä vektoreita [12] .
RSA-kryptausanalyysissä pienellä CRT-eksponentilla tehtävä, kuten NTRU:n tapauksessa, pelkistetään lyhimmän hilan kantavektorin löytämiseen, joka löytyy polynomiajassa (kantadimensioista) [13] .
Selkäreppuongelmissa, erityisesti hyökätäkseen Merkle-Hellmanin salausjärjestelmään, LLL-algoritmi etsii supistettua hilapohjaa [14] .
Muunnelmia ja yleistyksiä
Liukulukuaritmeettinen käyttö rationaalisten lukujen tarkan esityksen sijaan voi nopeuttaa LLL-algoritmia merkittävästi hyvin pienten numeeristen virheiden kustannuksella [15] .
Algoritmin toteutukset
Ohjelmallisesti algoritmi toteutetaan seuraavassa ohjelmistossa:
- fpLLL : ssä itsenäisenä toteutuksena [16] ;
- GAP : ssa funktiona LLLReducedBasis [17] ;
- Macaulay2 : ssa funktiona LLLkirjastossa LLLBases [18] ;
- Magmassa [ molemmat funktiot LLLja LLLGram [19] ;
- Maplessa funktiona [ 20 IntegerRelations[LLL] ] ;
- Mathematicassa funktiona LatticeReduce [21 ] ;
- Numeroteoriakirjastossa (NTL) moduulina LLL [22] ;
- PARI/GP : ssä funktiona qflll [23] ;
- Pymatgenissa funktiona [ 24 analysis.get_lll_reduced_lattice ] ;
- SageMathissa fpLLLLLL :ssä ja NTL:ssä toteutettu menetelmä [25] .
Muistiinpanot
- ↑ 1 2 3 4 A. K. Lenstra, H. W. Lenstra Jr., L. Lovász. Polynomien faktorointi rationaalisilla kertoimilla // Mathematische Annalen . - 1982. - S. 515-534 . — ISSN 4 . - doi : 10.1007/BF01457454 .
- ↑ 1 2 LLL-algoritmi, 2010 , 1 LLL-algoritmin historia.
- ↑ 1 2 3 4 5 6 7 Galbraith, Steven. 17. Lattice Reduction // Mathematics of Public Key Cryptography (englanti) . - 2012. Arkistoitu 20. syyskuuta 2015 Wayback Machineen
- ↑ 1 2 Xinyue, Deng. Johdatus LLL-algoritmiin // Massachusetts Institute of Technology. - s. 9-10 . Arkistoitu alkuperäisestä 8. joulukuuta 2019.
- ↑ Cherednik I. V. Ei-negatiivinen hilapohja // 3. painos. – Diskreetti. Mat., 2014. - T. 26 . - S. 127-135 . (Venäjän kieli)
- ↑ 1 2 Regev, Oded. Tietojenkäsittelytieteen hilat: LLL-algoritmi // New Yorkin yliopisto. Arkistoitu alkuperäisestä 20. maaliskuuta 2021.
- ↑ 1 2 Hoffstein, Jeffrey; Pipher, Jill; Silverman, JH Johdatus matemaattiseen kryptografiaan . - Springer, 2008. - s. 411. - ISBN 978-0-387-77993-5 .
- ↑ Nguyen, Phong Q., Stehlé, Damien. Mataladimensioinen hilapohjainen vähennys tarkistettu // ACM Transactions on Algorithms. - s. 1-48 . - doi : 10.1145/1597036.1597050 .
- ↑ Bosma, Wieb. 4. LLL // Tietokonealgebra. - 2007. Arkistoitu 8. toukokuuta 2019.
- ↑ Shahriar Shahabuddin, Janne Janhunen, Zaheer Khan, Markku Juntti, Amanullah Ghazi. Mukautettu hilavähennysmoniprosessori MIMO-tunnistusta varten // 2015 IEEE International Symposium on Circuits and Systems (ISCAS). - 2015. - arXiv : 1501.04860 . - doi : 10.1109/ISCAS.2015.7169312 .
- ↑ D. Simon. Valitut LLL:n sovellukset lukuteoriassa // LLL+25 Conference. - Caen, Ranska. Arkistoitu 6. toukokuuta 2021.
- ↑ Abderrahmane, Nitaj. NTRU:n krypta-analyysi kahdella julkisella avaimella // International Association for Cryptologic Research. - Caen, Ranska. Arkistoitu alkuperäisestä 21. joulukuuta 2019.
- ↑ Bleichenbacher, Daniel ja May, Alexander. Uusia hyökkäyksiä RSA:ta vastaan pienillä salaisilla CRT-eksponenteilla // International Association for Cryptologic Research. - Darmstadt, Saksa. Arkistoitu alkuperäisestä 24. kesäkuuta 2021.
- ↑ Liu, Jiayang, Bi, Jingguo ja Xu, Songyan. Parannettu hyökkäys Merkle–Hellmanin selkäreppujen salausjärjestelmiin // IEEE. - Beijing 100084, Kiina. Arkistoitu alkuperäisestä 17. kesäkuuta 2021.
- ↑ LLL-algoritmi, 2010 , 4 LLL:n ja hilan vähentämisen edistyminen.
- ↑ FPLLL-kehitystiimi. FPLLL, hilavähennyskirjasto . — 2016. Arkistoitu 17. helmikuuta 2020.
- ↑ Integraalimatriisit ja hilat . GAP . Haettu 10. joulukuuta 2019. Arkistoitu alkuperäisestä 19. joulukuuta 2019. (määrätön)
- ↑ LLLBases -- hilavähennys (Lenstra-Lenstra-Lovasz-emäkset) . Macaulay2 . Haettu 10. joulukuuta 2019. Arkistoitu alkuperäisestä 10. joulukuuta 2019. (määrätön)
- ↑ LLL-vähennys . Magma . Haettu 10. joulukuuta 2019. Arkistoitu alkuperäisestä 10. joulukuuta 2019. (määrätön)
- ↑ IntegerRelations/LLL . vaahtera . Haettu 10. joulukuuta 2019. Arkistoitu alkuperäisestä 18. syyskuuta 2020. (määrätön)
- ↑ LatticeReduce . Wolfram-kielidokumentaatio . Haettu 10. joulukuuta 2019. Arkistoitu alkuperäisestä 10. joulukuuta 2019. (määrätön)
- ↑ MODUULI:LLL . NTL . Haettu 10. joulukuuta 2019. Arkistoitu alkuperäisestä 17. elokuuta 2018. (määrätön)
- ↑ Vektorit, matriisit, lineaarialgebra ja joukot . PARI/GP . Haettu 10. joulukuuta 2019. Arkistoitu alkuperäisestä 18. joulukuuta 2019. (määrätön)
- ↑ pymatgen.core.lattice -moduuli . pymatgen . Haettu 27. joulukuuta 2019. Arkistoitu alkuperäisestä 18. joulukuuta 2019. (määrätön)
- ↑ Tiheät matriisit kokonaislukurenkaan päällä . salvia . Haettu 18. joulukuuta 2019. Arkistoitu alkuperäisestä 6. toukokuuta 2021. (määrätön)
Kirjallisuus
- Huguette, Napias. LLL-algoritmin yleistys euklidisten renkaiden tai järjestysten yli // J. The. Nombr. Bordeaux. - 1996. - doi : 10.5802/jtnb.176 .
- Cohen, Henry. Laskennallisen algebrallisen lukuteorian kurssi (englanniksi) . - Springer, 2000. - Voi. 138. - (GTM). — ISBN 3-540-55640-0 .
- Borwein, Peter. Laskennalliset retket analyysissä ja lukuteoriassa . - 2002. - ISBN 0-387-95444-9 .
- Hoffstein, Jeffrey; Pipher, Jill; Silverman, JH Johdatus matemaattiseen kryptografiaan . - Springer, 2008. - ISBN 978-0-387-77993-5 .
- Luk, Franklin T.; Qiao, Sanzheng. Kierretty LLL-algoritmi // Lin. Alg. Appl.. - 2011. - T. 434 , nro 11 . - S. 2296-2307 . - doi : 10.1016/j.laa.2010.04.003 .
- LLL-algoritmi: Tutkimus ja sovellukset / Ed. kirjoittaneet Phong Q. Nguyen ja Brigitte Vallee. - Springer, 2010. - ISBN 978-3-642-02295-1 . - doi : 10.1007/978-3-642-02295-1 .
- Murray R. Bremner. Lattice Basis Reduction: Johdatus LLL-algoritmiin ja sen sovelluksiin. - CRC Press, 2011. - ISBN 9781439807026 .