Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:

Slides:



Advertisements
Hasonló előadás
Egyszerű oszthatósági problémák
Advertisements

Integritási tartományok
Egy szélsőérték feladat és következményei
Oszthatósággal kapcsolatos feladatok pszeudokódban.
A polinomalgebra elemei
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
Algebrai struktúrák.
Elemi algoritmusok Páll Boglárka.
Természetes számok 0, 1, 2, 3, ..., 24, 25, ..., 1231, 1232, ..., n, ...  = {0, 1, 2, 3, ..., n,...} a természetes számok halmaza Műveletek: összeadás.
Oszthatóság Az a osztója b-nek, ha van olyan egész szám, amivel a-t szorozva b-t kapok. (Az a osztója b-nek, ha egész számszor megvan benne.) Ha a|b, akkor.
Programozási tételek, és „négyzetes” rendezések
A digitális számítás elmélete
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Osztó, többszörös Osztó: azokat a számokat, amelyekkel egy B szám osztható, az B szám osztóinak nevezzük. Minden számnak legalább két osztója van, 1 és.
Legyenek az a és b egész számok.
Műveletek logaritmussal
Titkosítás Digitális aláírás Szabványosított tanúsítványok
Euklidészi gyűrűk Definíció.
Egy f  R[x] polinom cS -beli helyettesítési értéke
Algebrai struktúrák 1.
Csoport részcsoport invariáns faktorcsoport részcsoport
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
1 Hash-elés. 2 Mi a hash-elés? Gyorsan teszi lehetővé a keresést, törlést, beszúrást, módosítást Nem szükséges az elemek rendezettsége Nincsenek rendezéshez.
Algebra a matematika egy ága
Digitális Aláírás ● A rejtjelező algoritmusokon alapuló protokollok közé tartozik a digitális aláírás is. ● Itt is rejtjelezés történik, de nem az üzenet.
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
AVL fák.
A digitális számítás elmélete
A digitális számítás elmélete
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Differenciál számítás
Integrálszámítás Mire fogjuk használni az integrálszámítást a matematikában, hova szeretnénk eljutni? Hol használható és mire az integrálszámítás? (már.
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
6. SZÁMELMÉLET 6.1. Oszthatóság
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
A számfogalom bővítése
Játékelméleti alapfogalmak előadás
Kriptográfiai alapok Szteganográfia és kriptográfia: információk elrejtése A kriptográfia lehet egy vagy kétkulcsú A feldolgozott szövegrész lehet: - karakter.
Az RSA algoritmus Fóti Marcell.
Lénárt Szabolcs Páll Boglárka
A Birodalmi lépegetőtől… Egy játék matematikája. Egyszer volt… Ha megnőnek a gyerekek, akkor a matematikusnak marad a solitaire :( Van k darab doboz 1-től.
A Birodalmi lépegetőtől… Egy játék matematikája. Egyszer volt… Ha megnőnek a gyerekek, akkor a matematikusnak marad a solitaire :( Van k darab doboz 1-től.
Alapsokaság (populáció)
Vektorterek Definíció. Legyen V Abel-csoport, F test, továbbá
Lagrange-interpoláció
Algebrai struktúrák: csoport, gyűrű, test. RSA Cryptosystem/ Titkosítási rendszer Rivest, Shamir, Adelman (1978) RSA a neten leggyakrabban használt.
Dodekaéder Hamilton köre
A folytonosság Digitális tananyag.
Valószínűségszámítás II.
Többdimenziós valószínűségi eloszlások
T.5. tétel (minimálpolinom egyértelmű létezése)
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Nagy Szilvia 2. Lineáris blokk-kódok II.
Adalékok egy véges összegzési feladathoz
1 Megerősítéses tanulás 4. előadás Szita István, Lőrincz András.
Nyilvános kulcsú titkosítás Digitális aláírás Üzenet pecsétek.
Számok világa.
2. gyakorlat INCK401 Előadó: Dr. Mihálydeák Tamás Sándor Gyakorlatvezető: Kovács Zita 2015/2016. I. félév AZ INFORMATIKA LOGIKAI ALAPJAI.
A Catalan-összefüggésről
A tökéletes számok algoritmusa
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Alice, Bob és Carol A mai titkosítás hősei
A kínai maradéktétel algoritmusa
Algebrai geometriai számítások
Csoport, félcsoport, test
TITKOSÍTÓ ALGORITMUSOK
IT hálózat biztonság Összeállította: Huszár István
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:

Az RSA kriptorendszer Az RSA egy nyilvános kulcsú titkosítást megvalósító algoritmus ben alkotta meg Ron Rivest, Adi Shamir és Leonard Adleman. Az RSA a mai napig az egyik legfontosabb titkosító eljárás Az RSA működése: Tegyük fel, hogy B szeretne titkosítva üzenni A-nak.

A kulcsválasztás A választ két nagy véletlen prímszámot (egy véletlen szám utáni első prím), legyenek ezek p és q, a szorzatuk n. A kiszámolja φ(n) értékét: φ(n)= φ(pq)=(p-1)(q-1)=pq-p-q-1=n-p-q+1 A választ még egy φ(n)-nél kisebb véletlen e számot, amire (e,φ(n))=1 (sok ilyen van). A kiszámolja e multiplikatív inverzét (mod φ(n)): d-t, amire: ed ≡ 1 (mod φ(n)) Az (n,e) számpár lesz A nyilvános kulcsa, a (d, φ(n)) pedig a titkos kulcsa.

A titkosítás B címkézi az elküldendő üzenetet egy 1 és n közötti m számmal. B címkézi az elküldendő üzenetet egy 1 és n közötti m számmal. B kiszámolja c = m e (mod n)-et, ez lesz a titkosított üzenet. (ez gyorsan számolható: O((log n) 3 ) B kiszámolja c = m e (mod n)-et, ez lesz a titkosított üzenet. (ez gyorsan számolható: O((log n) 3 ) A dekódolás A kiszámolja m = c d (mod n)-et Valóban: c d ≡ (m e ) d = m ed = m kφ(n) + 1 = (m φ(n) ) k m ≡ m (mod n)

Az RSA-hoz el kell dönteni egy véletlen szám utáni számokról, hogy azok prímek-e. Ez a következő kérdésre vezet: hogyan lehet eldönteni egy számról, hogy prím-e? Def: Prímteszt: egy kritérium arra, hogy egy n szám ne legyen prím. Ha n átmegy a teszten, lehet hogy prím, ha nem megy át (bukik), akkor biztos, hogy összetett. Egy adott szám tesztelése prímségre több prímteszt egymás utáni alkalmazásából áll. A prímtesztelés lehet: a) valószínűségi - a tesztelést túlélő szám „nagy valószínűséggel” prím b) determinisztikus - a tesztelést túlélő szám biztosan prím

Példa: próbaosztás Valamely n szám a < n-nel való osztása; ha a osztja n-et, akkor n nem prím Ha minden a < n 1/3 -ra elvégezzük az osztást Csak kevés n szám éli túl: prímek, valamint az olyan összetett számok, amelyek két n 1/3 -nál nagyobb prím szorzatai. A túlélők nagy valószínűséggel prímek, ezért ez egy elég jó valószínűségi prímtesztelést ad. Minden a ≤ n 1/2 -nel osztva: ha bukik, akkor n biztosan összetett, ha nem, akkor biztosan prím. Ez determinisztikus tesztelés.

Karakterizációk Ha p prímszám, akkor (a,p) = 1 esetén a p-1 ≡ 1 (mod p) (kis Fermat-tétel) Egy n szám pontosan akkor prím, ha: (n-1)! ≡ -1 (mod n) (Wilson-tétel) Egy n szám pontosan akkor prím, ha (a,n) = 1-re: (x+a) n ≡ x n +a (mod n)

Valószínűségi prímtesztek 1. Néhány valószínűségi prímteszt, beleértve a Miller- Rabin tesztet is, a következő általános struktúrával rendelkezik. Jelöljük Z n + -szal Z n nemnulla elemeit; így: |Z n + |=n-1, és ha n prím, akkor Z n + =Z n *. Definiáljuk továbbá az L n  Z n + halmazt a következőképpen: - Létezik egy hatékony algoritmus annak eldöntésére, hogy adott n, és α  Z n + esetén α  L n teljesül-e - Ha n prím, akkor L n =Z n * - Ha n összetett, akkor |L n |≤ c(n-1) valamilyen c<1 konstansra

Valószínűségi prímtesztek 2. n prímségének teszteléséhez beállítunk egy t „hibaparamétert”, és véletlenszerűen választunk α 1,…, α t  Z n + -t. Ha α i  L n minden i=1,…,t-re, akkor az output "igaz", különben pedig "hamis". Könnyen látható, hogy ha n prím, akkor az algoritmus mindig „igaz” értékkel tér vissza, ha pedig összetett, akkor legfeljebb c t valószínűséggel. Ha c=1/2, és t-t elég nagynak választjuk, mondjuk t=100, akkor a tévedés valószínűsége elhanyagolhatóan kicsi.

Valószínűségi prímtesztek 3. Legyen L n ={α  Z n + : α n-1 =1}, ekkor Tétel: Ha n prím, akkor L n =Z n *. Ha n összetett, és L n  Z n *, de L n  Z n *, akkor |L n |≤ (n-1)/2. Legyen L n ={α  Z n + : α n-1 =1}, ekkor Tétel: Ha n prím, akkor L n =Z n *. Ha n összetett, és L n  Z n *, de L n  Z n *, akkor |L n |≤ (n-1)/2. Sajnos vannak olyan páratlan összetett számok, amelyekre L n =Z n *. Ezek a Carmichael-számok. Sajnos vannak olyan páratlan összetett számok, amelyekre L n =Z n *. Ezek a Carmichael-számok.

Valószínűségi prímtesztek 4. A Miller-Rabin teszt Legyen most n-1=2 h m, ahol m páratlan Legyen most n-1=2 h m, ahol m páratlan L n ’ ={α  Z n + : α m2 h =1, és α m2 j+1 =1  α m2 j =  1, ha j  {1,…,h-1}} Tétel: Ha n prím, akkor L n ’ =Z n *. Ha n összetett, akkor |L n ’ |≤ (n-1)/4.

Valószínűségi prímtesztek 5. A Miller-Rabin teszt 2. α  L n ’ teljesülésének ellenőrzése gyors: meghatározzuk α m -t, majd ismételt négyzetreemelést végzünk α  L n ’ teljesülésének ellenőrzése gyors: meghatározzuk α m -t, majd ismételt négyzetreemelést végzünk Ennek az időigénye O((log n) 3 ) Ennek az időigénye O((log n) 3 )

Prímtesztek spec. alakú prímekre Tétel: Legyen p prím, s 1 =4, s k =s k , k=1,2,... Az M(p) szám akkor és csak akkor prím, ha M(p) az s p-1 osztója. A ma ismert legnagyobb prímek közül a legtöbb, köztük a legnagyobb is Mersenne-prím: 2^{ }-1-nek számjegye van, ez a 42. ismert Mersenne-prím, és február 18-án találta Dr. Martin Nowak. Def.: Egy prímet Mersenne-prímnek nevezünk és M(p)-vel jelölünk, ha 2 p -1 alakú.

Prímtesztek spec. alakú prímekre Def: Egy prímet Fermat-prímnek nevezünk és F(k)-val jelölünk, ha 2 2 k +1 alakú. Tétel: F(k) akkor és csak akkor prím, ha 5 (F(k)-1)/2 ≡ -1 (mod F(k)) F(0)=3, F(1)=5, F(2)=17, F(3)=257, és F(4)=65537 prímek, ez alapján Fermat azt a sejtést állította fel, hogy az összes Fermat- szám prím. Ez nem igaz, hiszen F(5)= =641 · , sőt az előzőeken kívül nem ismerünk Fermat-prímet.

Az AKS-algoritmus Agrawal, Kayal és Saxena 2002-ben közöltek egy algoritmust, amely nagy áttörésnek számít a prímtesztek történetében. Mondhatjuk ezt azért, mert a szerzők bizonyítják, hogy a prímszámok halmaza a P nyelvosztályba tartozik. Ez azt jelenti, hogy egy n pozitív egész szám prím mivoltának eldöntése megoldható annyi idő alatt, amely [log n]-nek polinomiális függvénye. Ráadásul ez az algoritmus determinisztikus, vagyis a valószínűségi tesztekkel ellentétben itt a legkisebb esélye sincs annak, hogy valamely álprímet véletlenül prímnek nyilvánítsunk.

Az AKS-algoritmus Egy n szám pontosan akkor prím, ha (a,n)=1-re: (x+a) n ≡x n +a (mod n) A probléma az, hogy a kongruencia teljesülésének ellenőrzéséhez n-1 együtthatót kell megvizsgálnunk, így az eljárás nem hatékony. A továbbiakban szeretnénk a számolásokat egy megfelelően választott relatíve kevés elemből álló véges struktúra felett végezni, azt remélve, hogy így le tudjuk csökkenteni a vizsgálandó együtthatók számát.

Az AKS-algoritmus A továbbiakban alkalmazzuk a következő jelölést: ha f(x)≡g(x) teljesül Z n /  h(x)  -ben, akkor azt írjuk, hogy f(x)≡g(x) (mod n,h(x)) Az AKS-algoritmusban h(x)=x r -1, ahol r egy „megfelelően kicsi” pozitív egész. A továbbiakban természetesen a „megfelelően kicsi” kifejezés értelmét pontosítjuk. Tehát a prímek azonosítására használjuk a (x+a) n ≡x n +a (mod n,x r -1) kongruenciát

Az AKS-algoritmus Ha n prímszám, akkor kielégíti a kongruenciát minden a és r esetén. Látható továbbá, hogy ha r elég kicsi n-hez képest, akkor kevesebb együtthatót kell megvizsgálnunk. Sajnos cserébe azt az árat kell fizetnünk, hogy bizonyos a és r értékek esetén előfordulhat, hogy valamely n összetett szám is kielégíti a kongruenciát. Viszont bizonyítható, hogy megfelelően választott r esetén nem túl sok a értékre elvégezve a vizsgálatot, csak olyan összetett számok mehetnek át a teszten, amelyek prímhatványok.

Az algoritmus lépései Megvizsgáljuk, hogy n teljes hatvány-e. Megvizsgáljuk, hogy n teljes hatvány-e. Keresünk egy r egészet, amire n rendje mod r > (log n) 2. Keresünk egy r egészet, amire n rendje mod r > (log n) 2. Megnézzük, hogy (a,n) > 1 teljesül-e valamely a ≤ r-re Megnézzük, hogy (a,n) > 1 teljesül-e valamely a ≤ r-re Ellenőrizzük, hogy fennáll-e az (x+a) n ≡ x n +a (mod n,x r -1) összefüggés a=1, 2,…, [r 1/2 ·log n] esetén Ellenőrizzük, hogy fennáll-e az (x+a) n ≡ x n +a (mod n,x r -1) összefüggés a=1, 2,…, [r 1/2 ·log n] esetén

Az algoritmus időigénye Az első lépés időigénye: Õ((log n) 3 ) Az első lépés időigénye: Õ((log n) 3 ) A második lépésé: Õ(r(log n) 2 ) A második lépésé: Õ(r(log n) 2 ) A harmadiké szintén: Õ(r(log n) 2 ) A harmadiké szintén: Õ(r(log n) 2 ) A negyediké: Õ(r 3/2 (log n) 3 ) A negyediké: Õ(r 3/2 (log n) 3 ) Így az algoritmus időigénye: Õ(r 3/2 (log n) 3 ) Így az algoritmus időigénye: Õ(r 3/2 (log n) 3 ) Belátható, hogy létezik megfelelő r≤2(log n) 5, így az időigény Õ((log n) 10,5 ) Belátható, hogy létezik megfelelő r≤2(log n) 5, így az időigény Õ((log n) 10,5 ) ahol Õ(t(n))=O(t(n)poly(log t(n)))

Az AKS-algoritmus Tétel: Ha n>1 egész nem teljes hatvány, nincs r-nél kisebb prímosztója, a rendje: d>(log n) 2 (mod r), és (x+a) n ≡x n +a (mod n,x r -1) minden 1≤a≤A, ahol A=r 1/2 log n, akkor n prímszám.

Az AKS-algoritmus A bizonyítás: (vázlat) indirekt tfh. p prímosztója n-nek G legyen az x, x+1, …, x+[A] elemek által generált részcsoportja Z/(p,h(x))- nek, ahol h(x) x r -1 irreducibilis faktora (mod p) G méretére adott alsó és felső becsléssel jutunk ellentmondásra Legyen R Z/rZ n és p által generált részcsoportja. Ekkor bebizonyítható, hogy: - |G|≤n |R| 1/2 -1, valamint -|G|>n |R| 1/2 -1 Ha n>5, akkor létezik r  [(log n) 5,2(log n) 5 ] prím, amire n rendje (mod r) >(log n) 2

A megvalósíthatóság A futásidő nagyon kedvezően alakul A futásidő nagyon kedvezően alakul Sajnos a tárigény olyan mértékű, amely viszonylag kicsi számoknál is óriásí operatív memóriát feltételez: egy ezerjegyű szám tesztelésénél a tárigény túllépheti a 3·10 14 gigabájtot.  Sajnos a tárigény olyan mértékű, amely viszonylag kicsi számoknál is óriásí operatív memóriát feltételez: egy ezerjegyű szám tesztelésénél a tárigény túllépheti a 3·10 14 gigabájtot. 

Javítások A szerzők bebizonyították, hogy létezik (log n) 3 nagyságrendű r, így a műveletigényt Õ((log n) 7,5 )- re javították A szerzők bebizonyították, hogy létezik (log n) 3 nagyságrendű r, így a műveletigényt Õ((log n) 7,5 )- re javították Lenstra és Pomerance más polinom választásával Õ((log n) 6 )-ra csökkentette a futásidőt Lenstra és Pomerance más polinom választásával Õ((log n) 6 )-ra csökkentette a futásidőt

Sejtés Sejtés: Legyen r olyan prím, amely nem osztója n-nek. Ha fennáll az (x-1) n ≡x n -1 (mod n,x r -1) kongruencia, akkor n prím, vagy n 2 ≡1 (mod r). Ha a sejtés igaz, akkor az a teendőnk, hogy olyan r értéket keresünk, amely nem osztója n 2 -1-nek. Ilyen r biztosan található a [2,4log n] intervallumban. Ez abból következik, hogy az x-nél kisebb prímek szorzata legalább e x. Ezután már csak a fenti kongruencia teljesülését kell ellenőrizni, amelynek az időigénye Õ((log n) 2 ), vagyis az AKS-prímteszt futási ideje Õ((log n) 3 ). Ha igaz a sejtés, a tárigény 5,27 gigabájt alá csökken.

Köszönöm a figyelmet!