Coppersmithin lause ( Coppersmithin menetelmä) on lause, jonka avulla voit tehokkaasti löytää normalisoitujen polynomien nollat tietyllä arvolla. [yksi]
Lausetta käytetään pääasiassa hyökkäyksiin RSA - salausjärjestelmää vastaan . Tämä menetelmä on tehokas, jos koodauseksponentti on tarpeeksi pieni tai kun osa salaisesta avaimesta tunnetaan . Lause liittyy myös LLL-algoritmiin .
Lause ehdottaa algoritmia, jolla voidaan löytää tehokkaasti normalisoidun polynomimodulin juuret , jotka ovat pienempiä kuin . Jos se on pieni, algoritmi toimii nopeammin. Lauseen etuna on kyky löytää polynomin modulon pienet juuret . Jos moduuli on alkuluku, ei ole mitään järkeä käyttää Coppersmithin lausetta . On paljon tehokkaampaa käyttää muita tapoja löytää polynomin juuret. [yksi]
Salauksen tai allekirjoituksen vahvistusajan lyhentämiseksi on suositeltavaa käyttää pientä (koodauseksponenttia). Pienin mahdollinen arvo on , mutta sitä suositellaan käytettäväksi (joitakin hyökkäyksiä vastaan). Arvoa käytettäessä tarvitaan 17 kertolaskua allekirjoituksen tarkistamiseksi ( , missä on kertovan ryhmän järjestys , ehkä noin 1000). Pienten käyttöön keskittyvät hyökkäykset eivät aina ole tehokkaita.
Tehokkaimmat hyökkäykset pientä koodauseksponenttia vastaan perustuvat Coppersmithin lauseeseen , jolla on monia sovelluksia, joista yksi on Hasted-hyökkäys. [2]
Oletetaan, että yksi lähettäjä lähettää saman viestin salatussa muodossa tietylle määrälle ihmisiä , joista jokainen käyttää samaa pientä koodauseksponenttia , esimerkiksi , ja eri pareja , ja . Lähettäjä salaa viestin vuorollaan kunkin käyttäjän julkisella avaimella ja lähettää sen sopivalle vastaanottajalle. Sitten, jos vastustaja kuuntelee lähetyskanavaa ja kerää lähetetyt salatekstit , hän pystyy palauttamaan viestin .
TodisteOletetaan, että vihollinen sieppasi ja missä . Oletetaan, että ne ovat suhteellisen alkulukuja , muuten suurin yhteinen jakaja muu kuin yksikkö tarkoitti löytää jakaja yhdelle . Soveltamalla kiinalaista jäännöslausetta , saadaan sellainen, että jolla on arvo . Kuitenkin tietäen sen , saamme . Siksi vastustaja voi purkaa viestin salauksen ottamalla kuutiojuuren .
Jos haluat palauttaa viestin , jolla on mikä tahansa avoimen koodauseksponentin arvo, vastustajan on siepattava salatekstit .
Olkoon ja normalisoitu astepolynomi . Anna , . Sitten, kun otetaan huomioon pari, hyökkääjä löytää tehokkaasti kaikki kokonaisluvut tyydyttävinä . Suoritusaika määräytyy LLL-algoritmin suorituksella dimensioimalla hilassa , jossa . [yksi]
Olkoon luonnollinen luku , jonka määrittelemme myöhemmin. Määritellään
Käytämme polynomeja hilallemme ja sen perustana . Esimerkiksi, milloin ja saamme rivien kattaman hilamatriisin :
,
jossa "—" tarkoittaa nollasta poikkeavia diagonaalisia elementtejä, joiden arvo ei vaikuta determinanttiin . Tämän hilan koko on , ja sen determinantti lasketaan seuraavasti:
Vaadimme sitä . tämä tarkoittaa
joka voidaan yksinkertaistaa
,
missä ja kaikille . Jos otamme , niin saamme siis, ja . Erityisesti, jos haluamme ratkaista mielivaltaisen , riittää , missä . [3]