Matematiikassa elliptisiä käyriä käyttävät primaalisuustestausmenetelmät (eng. - Elliptic Curve Primality Proving , lyhenne ECPP ) ovat yksi nopeimmista ja laajimmin käytetyistä primaalisuuden testausmenetelmistä [1] . Tämän idean esittivät Shafi Goldwasser ja Joe Kilian vuonna 1986; se muutettiin A.O.L- algoritmiksi. Atkin samana vuonna. Myöhemmin algoritmia on muokattu ja parannettu useita kertoja, erityisesti Atkin ja François Morain vuonna 1993 [2] . Hendrik Lenstra kehitti elliptisen käyrän tekijöiden käyttökonseptin vuonna 1985, ja sitä seurasi pian sen käyttö lukujen primaalisuuden testaamiseen ja todistamiseen.
Primaliteettitesti on ollut olemassa Fermatin ajoista lähtien , jolloin useimmat algoritmit perustuivat tekijöihin jakamiseen , mikä tulee raskaaksi, kun syöte on suuri. Nykyaikaiset algoritmit ratkaisevat yksilöllisesti ongelmat, jotka liittyvät sen määrittämiseen, onko luku alkuluku ja mitkä ovat sen tekijät . Nykyaikaisen kryptografian kehityskauden tullessa tällä alkoi olla merkittävää käytännön merkitystä. Vaikka monet nykyaikaiset testit antavat vain todennäköisyyspohjaisen tuloksen (tai osoittavat, että N on komposiitti tai luultavasti alkuluku , kuten esimerkiksi Miller-Rabin-testissä ), elliptisen käyrän testi osoittaa, että luku on alkuluku (tai yhdistelmä) käyttämällä nopeasti varmennettua todistus [3] ( englanti ).
Elliptisen käyrän primaalisuustesti tarjoaa (muun muassa) vaihtoehdon Pocklingtonin testille, jota voi olla vaikea toteuttaa käytännössä. Elliptisen käyrän testi perustuu samanlaisiin kriteereihin kuin Pocklingtonin testi , johon vastaava testi perustuu [4] . Muotoilemme nyt ehdotuksen, jonka perusteella Pocklingtonin kriteeriä muistuttava testimme johtaa elliptisen primaalisuuskäyrän testin Goldwasser-Kilian-Atkin-testiin.
Se on yleinen algoritmi , mikä tarkoittaa, että se ei ole riippuvainen erityisistä lomakenumeroista. Tällä hetkellä ECPP on käytännössä nopein tunnettu algoritmi lukujen primaalisuuden tarkistamiseen, mutta pahimman tapauksen suoritusaikaa (maksimiaikaa, jonka kuluessa tehtävä voidaan suorittaa tietyllä laitteistoalustalla) ei tunneta. ESRR toimii ajallaan: [5]
joillekin . Heuristisista syistä tämä indikaattori voidaan pienentää joissakin tapauksissa. ECPP toimii samalla tavalla kuin useimmat muut primaalisuustestit , löytää ryhmän ja osoittaa, että sen koko on sellainen, että se on primaali. ECPP:ssä ryhmä on elliptinen käyrä, joka ylittää rajallisen joukon neliömuotoja, joka on triviaali suhteessa ryhmätekijään*(?).
ECPP luo Atkin-Goldwaser-Kilian-Morain-primaliteettivarmenteen rekursiolla ja yrittää sitten varmistaa varmenteen. Eniten suoritinaikaa vievä vaihe on varmenteen luominen, koska tekijöiden jakaminen on suoritettava luokkakentässä . Varmenne voidaan vahvistaa nopeasti, jolloin tämän toiminnon viive on erittäin lyhyt.
Syyskuusta 2015 lähtien suurin ECPP-menetelmällä löydetty alkuluku [6] on 30950-numeroinen arvo, joka on merkitty Lucas-sekvenssillä seuraavasti:
Paul Underwoodilla kesti 9 kuukautta saada se Primo-sertifiointiin (Marcel Martinin ohjelmisto).
Olkoon N positiivinen kokonaisluku ja E joukko, joka määritetään kaavalla . Harkitse E : tä käyttämällä tavallista E :n summauslakia ja kirjoita 0 E:n neutraaliksi elementiksi .
Olkoon m kokonaisluku. Jos on alkuluku q , joka on luvun m jakaja ja suurempi kuin , ja E :ssä on piste P siten, että
(1) mP = 0
2) ( m / q ) P on määritelty, eikä se ole 0
Silloin N on alkuluku.
Jos N on yhdistelmä, on alkuluku , joka jakaa N. Määrittelemme sen elliptiseksi käyräksi, jonka määrittelee sama yhtälö kuin E , mutta määrittelemme sen modulo p , ei modulo N. Määritellään ryhmän järjestykseksi . Hassen elliptisiä käyriä koskevan lauseen perusteella tiedämme
ja siten gcd , ja ominaisuuden kanssa on kokonaisluku u
Olkoon piste P estimoitu modulo p. Näin ollen meillä on
käyttämällä (1), koska laskettu käyttäen samoja menetelmiä kuin mP , paitsi p :n moduulin sijaan N :n (ja ) moduulin avulla.
Tämä on ristiriidassa (2), koska jos ( m/q ) P on määritelty eikä se ole yhtä suuri kuin 0 (mod N ), niin sama menetelmä modulo p kuin mod N antaa
Tästä lauseesta voidaan rakentaa algoritmi, joka todistaa, että kokonaisluku N on alkuluku. Tämä tehdään seuraavalla tavalla:
Valitsemme kolme satunnaista kokonaislukua a, x, y ja joukko
Olkoon nyt P = ( x , y ) E : hen kuuluva piste , jossa E määritellään muodossa . Seuraavaksi tarvitsemme algoritmin E :n pisteiden määrän laskemiseen . Sovellettaessa E :tä tämä algoritmi (Koblitz ja muut ehdottavat Schufin algoritmia [algoritmi elliptisen käyrän pisteiden laskemiseen äärellisen kentän yli]) antaa luvun m , joka ilmaisee pisteiden lukumäärää käyrällä E yli F N , edellyttäen että N on ensiluokkainen. Seuraavaksi meillä on kriteeri, jolla päätetään, onko käyrämme E hyväksyttävä.
Jos voimme kirjoittaa m :ksi missä on pieni kokonaisluku ja q on luultavasti alkuluku (esimerkiksi se läpäisi joitain aiempia todennäköisyyspohjaisia primaalisuustestejä ) , emme hylkää E :tä. Jos m ei ole mahdollista kirjoittaa tähän muotoon, hylkäämme käyrämme ja valitsemme satunnaisesti toisen kolmion ( a, x, y ) aloittaaksesi alusta.
Oletetaan, että olemme löytäneet käyrän, joka läpäisee kriteerin, sitten lasketaan mP ja kP . Jos jossain laskennan vaiheessa kohtaamme määrittelemättömän lausekkeen ( P :n laskelmasta tai pisteiden lukumäärän laskenta-algoritmista), tämä antaa meille ei -triviaalin tekijän N.
Jos , niin käy selväksi, että N ei ole alkuluku, sillä jos N olisi alkuluku, niin E :llä olisi kertaluku m , ja mistä tahansa E :n alkiosta tulisi 0 kerrottuna m :llä . Jos Kp = 0, osumme umpikujaan ja on aloitettava uudestaan toisella kolmiosalla.
Nyt, jos ja , Edellinen lauseemme kertoo, että N on alkuluku. On kuitenkin yksi mahdollinen ongelma, joka on q :n yksinkertaisuus . Tämä on tarkistettava samalla algoritmilla. Näin ollen olemme kuvanneet vaiheittaisen menettelyn, jossa N :n alkuluku voidaan todistaa käyttämällä q :n alkulukua ja pieniä todennäköisiä alkulukuja, toistaen, kunnes saavutamme tietyt alkuluvut ja lopetamme. [8] [9]
Atkin ja Moraine sanoivat, että "Goldwasser-Kilian-algoritmin ongelma on, että Schouf-algoritmia on lähes mahdoton toteuttaa." [10] On erittäin hidasta ja hankalaa laskea kaikki E :n pisteet käyttämällä Schuf-algoritmia, joka on Goldwasser-Kilian-algoritmin suositeltava algoritmi. Schoofin alkuperäinen algoritmi ei kuitenkaan ole tarpeeksi tehokas tarjoamaan pisteiden määrän laskemista lyhyessä ajassa. [11] Nämä kommentit on nähtävä historiallisessa kontekstissa, ennen kuin Elkis ja Atkin paransivat Schuf-menetelmää.
Vuonna 1993 julkaistussa artikkelissa Atkin ja Moraine kuvasivat ECPP-algoritmin, joka välttää vaikeudet käyttää algoritmia, joka perustuu hankalaan pistemäärän laskemiseen (Schoofin algoritmi). Algoritmi luottaa edelleen yllä oleviin väittämiin, mutta sen sijaan, että generoisivat satunnaisesti elliptisiä käyriä ja sitten löydettäisiin oikea m , niiden ideana on rakentaa käyrä E , josta on helppo laskea pisteiden lukumäärä. Monimutkainen kertolasku on avainkäyrän rakentamisessa.
Nyt kun annetaan tietty N , jonka yksinkertaisuus on todistettava, meidän on löydettävä sopivat m ja q , aivan kuten Goldwasser-Kilian-algoritmissa, jotka täyttävät lauseen ja todistavat N :n yksinkertaisuuden . (tietenkin piste P ja itse käyrä E , täytyy myös löytää)
ECPP käyttää kompleksista kertolaskua käyrän E rakentamiseen. Tällä menetelmällä m (pisteiden määrä E :llä) on helppo laskea . Kuvataan nyt tätä menetelmää:
Kompleksisen kertolaskun käyttö vaatii negatiivisen erottimen D, jolloin D voidaan kirjoittaa kahden alkion tulona , tai täysin vastaavana, voimme kirjoittaa yhtälön:
Joillekin a, b . Jos voimme kuvata N :tä millä tahansa näistä muodoista, voimme luoda elliptisen käyrän E on kompleksisella kertolaskulla (yksityiskohtaisesti alla), ja pisteiden lukumäärä saadaan seuraavasti:
Jotta voimme jakaa N kahdeksi elementiksi, meidän on (jossa tarkoittaa Legendre-symbolia ). Tämä on välttämätön ehto, ja saavutamme riittävyyden, jos ryhmän h (D) järjestys on 1. Tämä tapahtuu vain D:n 13 arvolle, jotka ovat alkioita {-3, -4, -7 , -8, -11, -12 , -16, -19, -27, -28, -43, -67, -163}