Schufin algoritmi on tehokas algoritmi [1] pistemäärän laskemiseen elliptisellä käyrällä äärellisen kentän yli . Algoritmilla on sovelluksia elliptisessä kryptografiassa , jossa on tärkeää tietää pisteiden lukumäärä, jotta voidaan arvioida diskreetin logaritmiongelman ratkaisemisen vaikeus pisteryhmässä elliptisellä käyrällä.
Algoritmin julkaisi vuonna 1985 René Chouf ja se oli teoreettinen läpimurto, koska se oli ensimmäinen deterministinen polynomiaikaalgoritmi pisteiden laskemiseen elliptisellä käyrällä . Ennen Schufin algoritmia lähestymistavat pisteiden laskemiseen elliptisillä käyrillä, kuten yksinkertainen pienten ja suurten askelten algoritmi , olivat suurimmaksi osaksi työlästä ja vaativat eksponentiaalista ajoaikaa.
Tämä artikkeli selittää Schufin lähestymistavan keskittyen algoritmin takana oleviin matemaattisiin ideoihin.
Antaa olla elliptinen käyrä , joka on määritelty äärellisen kentän yli , missä alkuluku ja kokonaisluku . Ominaisen kentän yli elliptinen käyrä voidaan antaa (lyhyesti) Weierstrassin yhtälöllä
kanssa . Yli määritelty pistejoukko koostuu ratkaisuista, jotka täyttävät käyrän ja äärettömän pisteen yhtälön . Jos tässä joukossa käytetään elliptisten käyrien ryhmälakia, voidaan nähdä, että tämä joukko muodostaa Abelin ryhmän , jossa se toimii nollaelementtinä. Laskeaksemme pisteitä elliptisellä käyrällä, laskemme joukon kardinaalisuuden . Schuf-lähestymistapa käyttää Hassen elliptisen käyrän lausetta yhdessä kiinalaisen jäännöslauseen ja jakopolynomien kardinaalisuuden laskemiseen .
Hassen lause sanoo, että jos on elliptinen käyrä äärellisen kentän päällä, niin se täyttää epäyhtälön
Tämä vahva tulos, jonka Hasse sai vuonna 1934, yksinkertaistaa tehtäväämme rajaamalla sen rajallisiin (vaikkakin suuriin) mahdollisuuksiin. Jos määritämme kuinka ja käytämme tätä tulosta, saadaan, että tehomoduulin laskenta , jossa , riittää laskemaan ja siten saamaan . Vaikka ei olekaan tehokasta tapaa laskea suoraan yleisiä lukuja, on mahdollista laskea pieni alkuluku varsin tehokkaasti. Valitsemme joukoksi erilaisia alkulukuja siten, että . Jos kiinalainen jäännöslause annetaan kaikille , voit laskea .
Alkuluvun laskemiseen käytämme Frobeniuksen endomorfismiteoriaa ja jakopolynomeja [ . Huomaa, että alkulukujen huomioiminen ei aiheuta ongelmia, koska voimme aina valita suuremman alkuluvun varmistaaksemme, että tulo on riittävän suuri. Joka tapauksessa tapaukseen käytetään useimmiten Schuf-algoritmia , koska on olemassa tehokkaampia, ns. -adic-algoritmeja kentille, joilla on pieni ominaisuus.
Kun elliptinen käyrä on määritelty yli , katsotaan pisteet yli , kentän algebrallinen sulkeutuminen . Eli sallimme pisteiden olla koordinaatteja . Frobeniuksen endomorfismi laajentaa elliptistä käyrää kartoituksella .
Tämä kartta on identtinen ja sitä voidaan laajentaa pisteellä äärettömään , mikä tekee siitä ryhmämorfismin itseensä .
Frobeniuksen endomorfismi täyttää potenssiin liittyvän toisen asteen yhtälön seuraavalla lauseella:
Lause: Kartoituksen antama Frobenius-endomorfismi täyttää ominaisyhtälön
, missäSitten kaikki meillä on , jossa + tarkoittaa elliptisen käyrän lisäystä ja ja tarkoittaa pisteen skalaarituloa ja pisteen skalaarituloa [ 2 ] .
Voit yrittää laskea nämä pisteet symbolisessa muodossa ja käyrän koordinaattirenkaan funktioina ja etsiä sitten yhtälön täyttävän arvon. Tutkinnot osoittautuvat kuitenkin erittäin suuriksi, eikä tällä lähestymistavalla ole käytännön arvoa.
Schufin ideana oli tehdä tällaisia laskelmia rajoittuen tilaamaan pisteitä erilaisille pienille alkuluvuille . Korjaamme parittoman alkuluvun, siirrymme ratkaisemaan ongelman määrittämisessä , määriteltynä , tietylle alkuluvulle . Jos piste on -torsion aliryhmässä , Sitten , Jossa on ainoa kokonaisluku sellainen, että ja . Huomaa, että ja että mille tahansa kokonaisluvulle meillä on . Siten sillä on sama järjestys kuin . Sitten , joka kuuluu , meillä on myös jos . Näin ollen olemme vähentäneet ongelmamme yhtälön ratkaisemiseksi
missä ja välissä .
Jakopolynomi , jonka indeksi on l , on polynomi siten, että sen juuret ovat täsmälleen kertaluvun l pisteiden x - koordinaatit. Tällöin laskennan rajoittaminenl -vääntöpisteisiin tarkoittaa näiden lausekkeiden laskemista koordinaattirenkaan E ja l :nnen jakopolynomin moduulin. Eli työskentelemme. Tämä tarkoittaa erityisesti sitä, että X :n ja Y :nei ylitä 1:tä muuttujan y suhteen ja muuttujanx suhteen .
Pistetulo voidaan tehdä tupla-ja-lisää- menetelmällä tai jakopolynomilla. Toinen lähestymistapa antaa:
,missä on n :s jakopolynomi . Huomaa, että se on vain x :n funktio, merkitään tämä funktio : lla .
Meidän on jaettava ongelma kahteen tapaukseen: tapaukseen, jossa , ja tapaukseen, jossa .
Käyttämällä ryhmän lisäyskaavaa saamme:
Huomaa, että tämä laskenta on mahdotonta, jos epäyhtälö-oletus epäonnistuu.
Voimme nyt kaventaa x -koordinaatin valintaa kahdelle mahdollisuudelle, nimittäin positiiviselle ja negatiiviselle tapaukselle. Y -koordinaatin avulla määritämme kumpi näistä kahdesta tapauksesta tapahtuu.
Osoitamme ensin, että X on vain x :n funktio . Harkitse . Koska se on parillinen , korvaamalla lausekkeen kirjoitamme uudelleen muotoon
ja meillä on
Nyt, jos , niin tasa-arvo on totta
kaikille P l -vääntöpisteille.
Kuten aiemmin mainittiin, käyttämällä Y ja , voimme nyt määrittää, kumpi kahdesta arvosta ( tai ) toimii. Se antaa merkityksen . Schoofin algoritmi muistaa muuttujan arvot jokaiselle tarkastelulle alkuluvulle l .
Oletetaan, että . Koska l on pariton alkuluku, se on mahdotonta , ja siksi . Ominaisuusyhtälöstä seuraa, että , ja siksi se . Tästä seuraa, että q on neliömoduuli l . Anna . Laske sisään ja tarkista onko . Jos on, niin on y-koordinaatista riippuen.
Jos q ei ole neliömodulo l , tai jos yhtäläisyys epäonnistuu joillekin w ja , oletuksemme on väärä, joten . Ominaisuusyhtälö antaa .
Muista, että alkuperäisissä sopimuksissamme ei oteta huomioon tapausta . Koska oletimme, että q on pariton, ja erityisesti jos ja vain jos sillä on 2:n kertaluvun elementti. Ryhmän summauksen määritelmän mukaan minkä tahansa kertaluvun 2 elementin tulee olla muotoa . Siten jos ja vain jos polynomin juuri on , jos ja vain jos gcd .
Useimmissa laskelmissa lasketaan ja kullekin alkuluvulle eli lasketaan , , , jokaiselle alkuluvulle . Laskelmat sisältävät eksponentioimisen renkaassa ja vaativat kertolaskuja. Koska aste on , jokainen renkaan alkio on astepolynomi . Alkulukulauseen mukaan on noin alkulukuja koon , joka antaa for , ja saamme . Siten jokainen kertolasku renkaassa vaatii kertolaskuja in , mikä puolestaan vaatii bittikohtaisia operaatioita. Yhteensä kunkin alkuluvun bittioperaatioiden määrä on . Olettaen, että tämä laskenta on tehtävä jokaiselle alkuluvulle, Schufin algoritmin kokonaismonimutkaisuus tulee . Nopeiden polynomioperaatioiden ja kokonaislukuaritmetiikka lyhentää tämän ajan arvoon .
1990-luvulla Noam Elkis ja sitten A. O. L. Atkin keksivät parannuksia Schufin perusalgoritmiin rajoittamalla alkulukujoukon tietyntyyppisiin lukuihin. Nämä luvut tunnettiin vastaavasti Elkiksen ja Atkinin alkulukuina. Alkulukua kutsutaan Elkis-alkuluvuksi, jos karakteristinen yhtälö on hajotettava yli ja Atkin-alkuluvut ovat alkulukuja, jotka eivät ole Elkis-alkulukuja. Atkin osoitti kuinka yhdistää Atkin-alkuluvuista saatua tietoa Elkis-alkuluvuista saatuun tietoon tehokkaan algoritmin saamiseksi, jota kutsuttiin " Schoof-Elkis-Atkin-algoritmiksi . Ensimmäinen tehtävä on määrittää, onko tietty alkuluku Elkis- vai Atkin-alkuluku. Tämän saavuttamiseksi käytämme modulaarisia polynomeja, jotka syntyvät tutkittaessa modulaarisia muotoja ja tulkittaessa elliptisiä käyriä kompleksilukukentän hilaksi. Kun olemme määrittäneet, mikä tapaus meillä on, sen sijaan, että käyttäisimme jakopolynomeja , voimme työskennellä polynomien kanssa, joilla on pienempi aste kuin jakopolynomeilla: sijasta . Tehokkaan toteutuksen varmistamiseksi käytetään todennäköisyyspohjaisia juurihakualgoritmeja, mikä tekee algoritmista Las Vegasin algoritmin deterministisen algoritmin sijaan. Heuristisella oletuksella, että noin puolet alkuluvuista, jotka ovat pienempiä tai yhtä suuria kuin ovat Elkis-alkulukuja, saadaan algoritmi, joka on tehokkaampi kuin Schoofin algoritmi, ja tämän algoritmin odotettu ajoaika on , jos käytetään tavallista aritmetiikkaa, ja , jos käytetään nopea aritmetiikka. On huomattava, että tämä heuristinen oletus pätee useimpiin elliptisiin käyriin, mutta sitä ei tunneta yleisessä tapauksessa, vaikka yleistetty Riemannin hypoteesi olisikin totta .
Mike Scott on toteuttanut osan algoritmeista C++ :ssa ja ne ovat saatavilla lähdekoodina . Toteutus on täysin ilmainen (ei ehtoja, ei rajoituksia), mutta käyttää MIRACL- kirjastoa , jota jaetaan AGPLv3 -lisenssillä .
Lukuteoreettiset algoritmit | |
---|---|
Yksinkertaisuustestit | |
Alkulukujen löytäminen | |
Faktorisointi | |
Diskreetti logaritmi | |
GCD:n löytäminen |
|
Modulo-aritmetiikka | |
Lukujen kerto- ja jakolasku | |
Neliöjuuren laskeminen |