Miller-Rabin prímteszt

Hasonló dokumentumok
Kódelméleti és kriptográai alkalmazások

Hibajavító kódolás (előadásvázlat, november 14.) Maróti Miklós

Hibajavító kódok május 31. Hibajavító kódok 1. 1

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

FELADATOK A BEVEZETŽ FEJEZETEK A MATEMATIKÁBA TÁRGY III. FÉLÉVÉHEZ. ÖSSZEÁLLÍTOTTA: LÁNG CSABÁNÉ ELTE IK Budapest

Hibajavítás, -jelzés. Informatikai rendszerek alapjai. Horváth Árpád november 24.

megtalálásának hihetetlen nehéz voltán alapszik. Az eljárás matematikai alapja a kis FERMAT-tétel egy következménye:

Diszkrét matematika 2.C szakirány

Waldhauser Tamás december 1.

Diszkrét matematika 2.C szakirány

Hamming-kód. Definíció. Az 1-hibajavító, perfekt lineáris kódot Hamming-kódnak nevezzük. F 2 fölötti vektorokkal foglalkozunk.

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.

Nagy Gábor compalg.inf.elte.hu/ nagy

Skalárszorzat, norma, szög, távolság. Dr. Takách Géza NyME FMK Informatikai Intézet takach/ 2005.

Polinomok (el adásvázlat, április 15.) Maróti Miklós

KÓDOLÁSTECHNIKA PZH december 18.

Prímtesztelés, Nyilvános kulcsú titkosítás

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27

Algoritmuselmélet gyakorlat (MMN111G)

Diszkrét matematika 2.C szakirány

Kódoláselmélet. (Humann kód, hibajavító kódok, véges testek konstrukciója. Reed-Solomon kód és dekódolása.)

Hibadetektáló és javító kódolások

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

A kódok típusai Kódolás: adatok megváltoztatása. Dekódolás: a megváltoztatott adatból az eredeti visszanyerése.

Számelméleti alapfogalmak

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

PRÍMSZÁMOK ÉS A TITKOSÍRÁS

13.1.Állítás. Legyen " 2 C primitív n-edik egységgyök és K C olyan számtest, amelyre " =2 K, ekkor K(") az x n 1 2 K[x] polinomnak a felbontási teste

Információs társadalom alapismeretek

Számelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla

Algebra es sz amelm elet 3 el oad as Nevezetes sz amelm eleti probl em ak Waldhauser Tam as 2014 oszi f el ev

Bevezetés az algebrába 2 Lineáris algebra alkalmazásai

Nagy Viktor VÉGES TESTEK

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Shor kvantum-algoritmusa diszkrét logaritmusra

Mátrixfüggvények. Wettl Ferenc április 28. Wettl Ferenc Mátrixfüggvények április / 22

Titkosírás. Biztos, hogy titkos? Szabó István előadása. Az életben sok helyen használunk titkosítást (mobil, internet, jelszavak...

Diszkrét matematika I.

Nagy Gábor compalg.inf.elte.hu/ nagy

Bevezetés az algebrába 2

Számelmélet. 1. Oszthatóság Prímszámok

Lineáris leképezések. Wettl Ferenc március 9. Wettl Ferenc Lineáris leképezések március 9. 1 / 31

MM CSOPORTELMÉLET GYAKORLAT ( )

Kongruenciák. Waldhauser Tamás

Algoritmuselmélet 6. előadás

2. Tétel (Az oszthatóság tulajdonságai). : 2. Nullát minden elem osztja, de. 3. a nulla csak a nullának osztója.

Az állítást nem bizonyítjuk, de a létezést a Paley-féle konstrukció mutatja: legyen H a

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

Sapientia Egyetem, Matematika-Informatika Tanszék.

Diszkrét matematika 2.

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Diszkrét matematika alapfogalmak

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Nagy Gábor compalg.inf.elte.hu/ nagy

Minden egész szám osztója önmagának, azaz a a minden egész a-ra.

Data Security: Public key

GAUSS-EGÉSZEK ÉS DIRICHLET TÉTELE

Következik, hogy B-nek minden prímosztója 4k + 1 alakú, de akkor B maga is 4k + 1 alakú, s ez ellentmondás.

FFT. Második nekifutás. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék október 2.

DiMat II Végtelen halmazok

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

1. feladatsor Komplex számok

1. A k-szerver probléma

1. Online kiszolgálóelhelyezés

Határozatlan integrál

SE EKK EIFTI Matematikai analízis

3. el adás: Determinánsok

SzA XIII. gyakorlat, december. 3/5.

: s s t 2 s t. m m m. e f e f. a a ab a b c. a c b ac. 5. Végezzük el a kijelölt m veleteket a változók lehetséges értékei mellett!

MBNK12: Permutációk (el adásvázlat, április 11.) Maróti Miklós

Az Informatika Elméleti Alapjai

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

Mintafeladat az RSA algoritmus szemléltetésére

Diszkrét matematika I.

Haladók III. kategória 2. (dönt ) forduló

Gonda János POLINOMOK. Példák és megoldások

Gy ur uk aprilis 11.

Szinguláris értékek. Wettl Ferenc április 3. Wettl Ferenc Szinguláris értékek április 3. 1 / 28

Klasszikus algebra előadás. Waldhauser Tamás április 28.

Tartalom. Algebrai és transzcendens számok

Diszkrét matematika I.

MM4122/2: CSOPORTELMÉLET GYAKORLAT ( ) 1. Ismétlés február 8.február Feladat. (2 pt. közösen megbeszéltük)

illetve a n 3 illetve a 2n 5

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

Eötvös Loránd Tudományegyetem. Természettudományi Kar. Gyarmati Richárd. Számelmélet feladatok szakkörre. Bsc szakdolgozat.

Diszkrét matematika 2.C szakirány

2016, Diszkrét matematika

Sapientia Egyetem, Matematika-Informatika Tanszék.

Lineáris algebra és a rang fogalma (el adásvázlat, szeptember 29.) Maróti Miklós

Lineáris algebra 2. Filip Ferdinánd december 7. siva.banki.hu/jegyzetek

Számítógépes Hálózatok 2012

Komplex számok. Wettl Ferenc szeptember 14. Wettl Ferenc Komplex számok szeptember / 23

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Diszkrét matematika 2.

Hatványozás. A hatványozás azonosságai

Alapfogalmak a Diszkrét matematika II. tárgyból

7. Számelmélet. 1. Lehet-e négyzetszám az a pozitív egész szám, amelynek tízes számrendszerbeli alakjában 510 darab 1-es és valahány 0 szerepel?

Átírás:

Az RSA titkosítás Nyílt kulcsú titkosításnak nevezünk egy E : A B és D : B A leképezés-párt, ha bármely a A-ra D(E(a)) = a (ekkor E szükségképpen injektív leképezés), E ismeretében E(a) könnyen számítható, E ismeretében D(b) nehezen határozható meg (b B), D ismeretében D(b) könnyen számítható (b B). E a titkosítás nyílt, D pedig a titkos kulcsa. A nyílt kulcsú titkosítás lényege, hogy üzenetet bárki küldhet a segítségével, azonban az üzeneteket csak akkor lehet 'gyorsan' megfejteni, ha ismerjük a titkos kulcsot is. Az RSA-módszer lényege, hogy keresünk két nagy prímszámot (mondjuk 100 jegy eket), legyenek ezek p és q. Legyen n = pq, és legyen e, d olyan, hogy (p 1)(q 1) ed 1. Nyilvános az n és e, titkos p, q és d. Itt a titkosítandó szavak az n-es maradékok, a titkosítás az e. hatványra emelés modulo n, a megfejtés pedig a d. hatványra emelés. Legyen x N. Ekkor ha (x, n) = 1, akkor a Fermat-tétel szerint (x e ) d x ed x 1 ( mod n), hiszen ϕ(n) = (p 1)(q 1), vagyis ed 1 ( mod n). A titkosítás és a megfejtés gyors, hiszen a k. hatványra emelés nagyjából ln k id be kerül. Jelenlegi ismereteink szerint a megfejtés d ismerete nélkül nehéz: lényegében csak próbálgatással lehetséges, vagyis ha meg szeretnénk fejteni egy üzenetet (y N szám), akkor végig kell próbálni az összes n-es maradékot, e. hatványra emelni ket, és megnézni, hogy y-t kapunk-e eredményül. Kérdés, hogy el tudunk-e állítani gyorsan a feltételeknek megfelel p, q, n, e és d természetes számokat. A f nehézség nagy prímszámok el állításában van. A nagy prímszámtétel szerint nagyjából minden 460. 100-jegy szám prím, így ha egy számról gyorsan el tudjuk dönteni, hogy prím-e, akkor jó eséllyel 5 600 próbálgatás után találunk 100 jegy prímet. Ezzel p, q és n adott. Ekkor megfelel e és d az ed 1 ( mod (p 1)(q 1)) kongruencia megoldásával kapható (e szabadon választható a (p 1)(q 1)-hez relatív prím számok közül). A fenti titkosítás biztonsága els sorban azon a tényen múlik, hogy nagy ( 100 jegy ) számok prímtényez s felbontásának meghatározása jelen ismereteink szerint nagyon lassú (hiszen p és q ismeretében d már könnyen meghatározható). Az RSAmódszer kis módosításával elérhet, hogy a módszer hatékony feltörése ekvivalens legyen az összetett számok felbontásával (elvileg el fordulhat, hogy valaki meg tudja oldani az x e y kongruenciákat n felbontása nélkül is). Kérdés azonban, hogy el tudjuk-e dönteni nagy számokról, hogy prímszámok-e. Erre az els ötletet a Fermat-tétel adja, hiszen ha p prím, akkor bármely a < p esetén a p 1 1 ( mod p). Ez ad egy próbára lehet séget: ha adott n, megviszgáljuk, hogy egy n-nél kisebb x maradékra x n 1 1? Ha nem, akkor n biztosan összetett, azonban ha 1, akkor semmit nem állíthatunk. Sajnos nem segít, ha akár sok maradékot is megvizsgálunk, ugyanis vannak olyan n összetett számok, melyekre minden, n-hez relatív prím x esetén x n 1 1 (ezek a Carmichael számok). Ugyanakkor az ötlet továbbfejleszthet... Miller-Rabin prímteszt Legyen n természetes szám. Kérdés, hogy n prímszám-e. 1

Ha p prímszám, akkor persze x p 1 = 1 bármely x < p-re. Azonban p 1 páros szám (a -t nem valószín, hogy bárki tesztelni szeretné), legyen d = p 1. Ekkor (x d ) = 1. Azonban modulo p csak két négyzetgyöke van az 1-nek: 1 és 1. Vagyis x d = 1 vagy x d = 1. Az els esetben ha d is páros, az el z megismételhet, és így tovább. Összefoglalva: ha p prímszám, akkor legyen p 1 = k t, ahol t páratlan. Ekkor bármely x < p maradék esetén az x t, x t, x 4t,..., x kt számokra igaz, hogy vagy mindegyik kongruens 1-gyel modulo p, vagy pedig van olyan i < k, melyre x it 1. Legyen most n tetsz leges páratlan természetes szám, és legyen n 1 = k t. Deníció: Az x maradékot jó maradéknak nevezzük modulo n, ha bármely esetén az x t, x t, x 4t,..., x kt számokra igaz, hogy vagy mindegyik kongruens 1- gyel modulo p, vagy pedig van olyan i < k, melyre x it 1. Például modulo 1 a 7 nem jó maradék, hiszen 7 5 7, 7 10 9, 7 0 1. Itt igaz, hogy az n 1. utolsó hatvány 1-gyel kongruens, azonban az el tte lév nem 1-gyel, hanem 9-cel kongruens. 1. Tétel. Legyen n páratlan szám. Ha n prím, akkor az összes nemnulla n-es maradék jó maradék. Ha azonban n összetett szám, akkor a nemnulla n-es maradékok legalább 3 4-e rossz maradék. A fenti tétel lehet vé tesz egy nem determinisztikus, azonban elég gyors prímtesztet. Ez a Miller-Rabin teszt: ha n természetes szám, választunk egy n-es maradékot, és megnézzük, hogy az jó-e. Ha nem jó, akkor n összetett szám. 100 maradékot tesztelve, ha van köztük rossz, akkor persze n természetes, ha viszont nincs, akkor azt állítjuk, hogy n prím. Ebben az esetben az el z tétel szerint 1 100 4 < 10 60 valószín séggel tévedünk, ez pedig már elhanyagolhatóan kicsi. 1. Algebrai kódok Ajánlott irodalom: Czédli Gábor: Boole-függvények. Deníció. A továbbiakban jelöli a {0, 1} halmazt. 3. Deníció. Kódolásnak nevezünk egy E : n m leképezést. A C = E( n ) halmazt a kódszavak halmazának, vagy röviden kódnak nevezzük. A továbbiakban E mindig egy n -b l m -be men leképezés lesz, C = E( n ). 4. Deníció. Legyen S = C vagy S = m. Dekódolófüggvénynek nevezünk egy olyan D : S m leképezést, amelyre y = D(E(y)) teljesül bármely y n esetén. A hibajavító / hibajelz kódolások lényege, hogy ha valaki egy bizonyos y n hosszú bitsorozatot szeretne eljuttatni valahova egy olyan adattovábbító csatornán, mely egy adott 0 < p < 1 valószín séggel ront el minden egyes bitet (most feltesszük, hogy a továbbított bitek száma megegyezik a küldött bitek számával), akkor nem y-t küldi el, hanem E(y)-t, amely (esetleg hibásan) megérkezik a címzetthez. A címzett ezután végrehajtja E(y)-on az általa is ismert D dekódolófüggvényt, így megkapja y-t. Ha azonban E(y) hibásan érkezik meg, el fordulhat, hogy E(y) / C. Ekkor dekódolás közben a címzett érzékeli, hogy hiba történt az adattovábbításban (ekkor kérheti az adatok ismételt elküldését). Ha nem túl sok hiba történt, akkor esetleg a hibákkal együtt is dekódolni tudja a küldeményt. A továbbiakban a 'nem túl sok' kifejezést járjuk jobban körül.

3 5. Deníció. Az E kódolást k-hibajelz nek nevezzük, ha dekódoláskor minden olyan hibára fény derül, ahol legfeljebb k darab bit került hibásan továbbításra, másrészt viszont van olyan k +1 hibás bitet tartalmazó üzenet, melyben a hiba nem mutatható ki. 6. Deníció. Az E kódolást k-hibajavítónak nevezzük, ha dekódoláskor minden olyan hiba kijavítható, ahol legfeljebb k darab bit került hibásan továbbításra, másrészt viszont van olyan k + 1 hibás bitet tartalmazó üzenet, melyet rosszul javít ki. Legyen n = 3, m = 4. Egy kódolás lehet, hogy egy 3-hosszú sorozat helyett azt a 4-hosszú sorozatot küldjük el, melynek utolsó bitje a sorozatban szerepl egyesek paritása. Tehát például E(101) = 1010, de E(111) = 1111. A dekódolás egyszer : le kell vágni az üzenet utolsó bitjét. Könnyen látható, hogy itt ha csak 1 bit kerül hibásan továbbításra, akkor észrevesszük a hibát (ekkor az utolsó bit paritása nem lesz megfelel ). Azonban ha már kett bit hibádzik, akkor a dekódolás már nem érzékel hibát, hiszen a paritás változatlan marad. Vagyis a fenti "levágjuk az utolsó bitet" dekódolás 1-hibajelz. Vegyük észre, hogy ezen kódolás esetén nemigen van lehet ség hibajavító dekódolást alkalmazni (képtelenség kitalálni, melyik bit sérülhetett meg). Általában lehet bármely n esetén paritásellen rz kódolást alkalmazni. Legyen most n =, m = 6. Ekkor a 6-szoros ismétléskód az az E leképezés, amely az ab bitsorozathoz az aaaaaabbbbbb bitsorozatot rendeli. Itt a dekódolás: a "többség dönt", vagyis az els hat bitb l megnézzük, melyik szerepelt többször, majd a következ 6-ból is, majd ez lesz a dekódolás (döntetlen esetén mondjuk mindig 0-át adunk). Ez az ismétl kód -hibajavító: ha csak bit sérül, akkor mindig visszakapjuk a küldeményt, azonban ha már 3, akkor nem biztos, például ha az 11 sorozatot szeretnénk továbbítani, és hiba miatt a 010101111111 sorozat érkezik meg, akkor a dekódolás 01-et szolgáltat. Természetesen a fenti példa általánosítható, így beszélhetünk k-szorozó kódolásról. Könny belátni, hogy a k-szorozó kódolás k 1 -hibajavító. 7. Deníció. Legyen i, j m. Ekkor i és j távolságán az eltér bitek számát értjük. Jele: d(i, j). Adott C kód esetén d(c, C) jelöli a min {d(x, y) : x, y C, x y} értéket. 8. Tétel. A d függvény távolságfüggvény, vagyis bármely x, y, z m esetén d(x, z) d(x, y) + d(y, z), valamint d(x, y) = 0 x = y. Bizonyítás: Triviális, az x és z közötti eltérések száma nem lehet nagyobb, mint az x és y, illetve az y és z közötti eltérések számának összege (ha egy bitben eltérés van, akkor ez az eltérés megjelenik x és y, vagy y és z között). 9. Tétel. Legyen d = d(c, C). Ekkor az E kódolás (d 1)-hibajelz és d 1 - hibajavító. Bizonyítás: Ha a küldött bitsorozat, és a megkapott bitsorozat d 1-nél nem kevesebb helyen tér el, akkor a fogadó észleli a hibát, hiszen a kódszavak minimális távolsága d, így egész biztos, hogy ha d 1-nél nem több bit kerül hibásan továbbításra, akkor nem kódszót kapunk. Ugyanakkor ha már d bit sérül, akkor el fordulhat, hogy a hibásan továbbított bitsorozat is kódszó lesz, így a dekódoló

4 nem észleli a hibát. A hibajavítás hasonlóképpen megy: ha csak d 1 db bit sérül, akkor észlelvén a hibát, a dekódoló megkeresi a kódolandó üzenethez legközelebb es kódszót. Mivel bármely két kódszó távolsága legalább d, ezért ez a legközelebbi kódszó egyértelm, és megegyezik a küldött szóval, ha viszont d 1 -nél több bit sérül, akkor már el fordulhat, hogy a dekódolás tévedést eredményez. A kódoláselméletet megalapozó f tétel a következ. 10. Tétel. (Shannon) Legyen 0 < p < 1, q = 1 p és e > 1 úgy, hogy e 1 < 1+p log p+q log q. Ekkor tetsz leges pozitív ɛ-hoz van olyan n 0 N, hogy bármely n 0 n N esetén létezik olyan E : n [en] kódolás, hogy p hibaesélyes továbbítás esetén hibajavító dekódolást alkalmazva minden egyes x n szó esetén a hibás dekódolás valószín sége ɛ-nál kisebb lesz. Hamming - kódok 11. Deníció. A C kódot lineárisnak nevezzük, ha az E : n m kódolás lineáris (mint Z feletti vektorterek közötti leképezés). A C kódot perfektnek nevezzük, ha d(c, C) = k + 1 páratlan és bármely x m esetén létezik olyan y C, amelyre d(x, y) k. Tehát egy kód perfekt, ha a kódszavak körüli k sugarú gömbök lefedik m -t. 1. Deníció. Az x m kódszó hosszán a d(0, x) távolságot értjük. Jele: x. 13. Tétel. Ha a C kód lineáris, akkor d(c, C) = min { x : x C, x 0}. Legyen 1 < r N, m := r 1, n := m r és deniáljuk az M = (m ij ) m r-es mátrixot úgy, hogy annak i-ik sora éppen az i szám kettes számrendszerbeli alakja legyen (szükség esetén balról nullákkal kiegészítve). Az E kódolás egy x = (x 1, x,..., x n ) n vektorhoz azt a z = (y 0, y 1, x 1, y, x, x 3, x 4, y 3,..., x n ) m vektort rendeli, amelyre zm = 0. Tehát x bitjei közé jelz biteket szúrunk be úgy, hogy y i éppen a z i -edik bitje legyen. 14. Deníció. A fenti kódolást az r-edik Hamming-kódolásnak nevezzük. 15. Tétel. Az r-edik Hamming-kódolás lineáris, perfekt kódolás, valamint a kódszavak közötti minimális távolság 3. Bizonyítás: A kódolás egyértelm, hiszen az y i jelz bitek a zm = 0 egyenletrendszerb l egyértelm en (és könnyen) meghatározhatók. Könnyen ellen rizhet, hogy a minimális távolság 3, hiszen C-ben nincs 1, illetve normájú elem, azonban 3 normájú van, mégpedig z = (1, 1, 1, 0,..., 0). A perfektség igazolása is egyszer. BCH kódok 16. Tétel. (BCH kódok alaptétele) Legyen q egy prímszám, d és r pedig természetes számok úgy, hogy 1 < d < q r. Legyen α egy primitív elem a q r elemszámú testben, i = 1,,..., d 1-re pedig legyen g i (x) Z q [x] az α i minimálpolinomja. Jelölje g(x)

5 a g i (x) polinomok legkisebb közös többszörösét. Ekkor g(x) bármely 0-tól különböz, q r 1-nél kisebb fokú Z q [x]-beli többszörösében legalább d együttható különbözik 0-tól. 17. Deníció. Legyen d, r N, 1 < d < r, legyen f egy r-edfokú olyan irreducibilis polinom Z felett, amelyre a Z [x]/(f) test x eleme primitív (ilyen polinom mindig létezik). Legyen g i az x i Z [x]/(f) test minimálpolinomja, és jelölje g a g i polinomok (1 i < d) legkisebb közös többszörösét. Legyen m olyan egész, amelyre g < m < r és legyen n = m g. Ekkor az E : n m, u ug kódolást (itt k elemeit polinomokkal azonosítjuk) a d minimális távolsághoz tervezett BCH-kódolásnak nevezzük (Bose, Chaudbury és Hocquenghem találmánya). 18. Tétel. E lineáris kódolás, és a kódszavak közti minimális távolság legalább d. A BCH-kódolás esetén a kódszavak a küldend üzenetnél éppen g db bittel hosszabbak, ezért a kódolás annál hatékonyabb, minél nagyobbnak választjuk m- met (mondjuk éppen r 1-nek), és minél kisebb g. Ezért fontos az alábbi észrevétel. 19. Tétel. Páratlan d esetén g r(d 1).