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

Hasonló dokumentumok
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,...

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

Információs társadalom alapismeretek

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 I.

Waldhauser Tamás december 1.

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

Számelméleti alapfogalmak

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

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

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

Sapientia Egyetem, Matematika-Informatika Tanszék.

4. Előadás Titkosítás, RSA algoritmus

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

Diszkrét matematika I.

Sapientia Egyetem, Matematika-Informatika Tanszék.

RSA algoritmus. Smidla József. Rendszer- és Számítástudományi Tanszék Pannon Egyetem

Data Security: Public key

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:

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

2018, Diszkre t matematika. 10. elo ada s

2016, Diszkrét matematika

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

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

Algoritmuselmélet gyakorlat (MMN111G)

Készítette: Fuszenecker Róbert Konzulens: Dr. Tuzson Tibor, docens

Kongruenciák. Waldhauser Tamás

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

SzA XIII. gyakorlat, december. 3/5.

Egyesíthető prioritási sor

2018, Diszkre t matematika. 8. elo ada s

Nyilvános kulcsú titkosítás RSA algoritmus

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Miller-Rabin prímteszt

SZÁMELMÉLETI FELADATOK

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

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

Bevezetés az algebrába az egész számok 2

Diszkrét matematika 2.C szakirány

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

Fábián Zoltán Hálózatok elmélet

IT BIZTONSÁGTECHNIKA. Tanúsítványok. Nagy-Löki Balázs MCP, MCSA, MCSE, MCTS, MCITP. Készítette:

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.

Algoritmuselmélet 18. előadás

Dr. Beinschróth József Kriptográfiai alkalmazások, rejtjelezések, digitális aláírás

Kvantumkriptográfia II.

illetve a n 3 illetve a 2n 5

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.

Kriptográfiai alapfogalmak

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

Adat és Információvédelmi Mesteriskola 30 MB. Dr. Beinschróth József SAJÁTOS LOGIKAI VÉDELEM: A KRIPTOGRÁFIA ALKALMAZÁSA

MBL013E Számelmélet és Alkalmazásai

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

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

2017, Diszkrét matematika

2016, Diszkrét matematika

Diszkréció diszkrét logaritmussal

Modern szimmetrikus kulcsú rejtjelezők kriptoanalízise

Bevezetés az algebrába 1

Klasszikus algebra előadás. Waldhauser Tamás március 24.

SSL elemei. Az SSL illeszkedése az internet protokoll-architektúrájába

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

5.1 Környezet Hálózati topológia

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

KÓDOLÁSTECHNIKA PZH december 18.

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

Mintafeladat az RSA algoritmus szemléltetésére

Titkosítás NetWare környezetben

Számítógépes Számelmélet

Számelmélet. 4. Igazolja, hogy ha hat egész szám összege páratlan, akkor e számok szorzata páros!

1. Polinomok számelmélete

Diszkrét matematika I.

Diszkrét matematika 2.

Eötvös Loránd Tudományegyetem

Informatikai biztonság alapjai

1. Részcsoportok (1) C + R + Q + Z +. (2) C R Q. (3) Q nem részcsoportja C + -nak, mert más a művelet!

2016, Diszkrét matematika

Dan Brown Digitális erődje és a nyilvános kulcsú titkosítás

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

HHF0CX. k darab halmaz sorbarendezésének a lehetősége k! Így adódik az alábbi képlet:

Az elektronikus aláírás és gyakorlati alkalmazása

Szakács Lili Kata megoldása

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?

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

Matematika 7. osztály

Diszkrét matematika I.

Emlékeztet! matematikából

Dicsőségtabló Beadós programozási feladatok

Elektronikus aláírás és titkosítás beállítása MS Outlook 2010 levelezőben

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

Matematikai alapismeretek. Huszti Andrea

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

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.

6. előadás Faktorizációs technikák közepes méretű osztókra

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

6. előadás Faktorizációs technikák közepes méretű osztókra

XII. Bolyai Konferencia. Bodnár József Eötvös Collegium II. matematikus, ELTE TTK

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

Kriptográfia házi használatra Szeptember 26

Átírás:

Prímtesztelés, Nyilvános kulcsú titkosítás Papp László BME December 8, 2018

Prímtesztelés Feladat: Adott egy nagyon nagy n szám, döntsük el, hogy prímszám-e! Naív kísérletek: 1. Nézzük meg minden nála kisebb de 1-nél nagyobb egészről, hogy osztója-e! Ez n maradékos osztás, binárisan 100 jegyű számnál 2 100 osztás, reménytelen. 2. Ha van valódi osztólya, akkor van n-nél nem nagyobb valódi osztója, nézzük meg eddig minden egész számról, hogy osztója-e? Ez 100 jegyű számnál már csak 2 50 osztás, még mindig reménytelen. 3. Nézzük meg, hogy van-e n-nél nem nagyobb prímosztója! Ehhez ki kell számolni a legfeljebb ekkora prímszámokat, ez is exponenciális a számjegyek számában.

Fermat teszt Emlékeztető: Ha n prím akkor ϕ(n) = n 1. Euler-Fermat tétel: ha (a, n) = 1, akkor a ϕ(n) 1 mod n. Algoritmus: 0. Legyen i = 1 1. Véletelenül választunk egy 1-nél nagyobb és n-nél kisebb a egészet. 2. Kiszámoljuk, (n, a)-t euklideszi algoritmussal, ha ez nem 1 akkor STOP, OUTPUT: n nem prím, (n, a) egy valódi osztója. 3. Gyorshatványozással kiszámítjuk az a n 1 mod n-et. Ha a n 1 1 mod n akkor STOP, OUTPUT: n nem prím. 4. Ha i < 100 akkor i := i + 1 és az 1-es lépésre ugrunk, különben STOP, OUTPUT: n prím.

A fermat teszt elemzése Az algoritmus az Euler-Fermat tételt használja. Ehhez kell az, hogy a és n relatív prímek legyenek, mellesleg ha nem azok akkor rögtön meg is kaptuk n-nek egy valódi osztóját. Ebben az esetben azt mondjuk, hogy a az n leleplezője. Amennyiben egy n-hez relatív prím a esetén a n 1 1 mod n-et kapunk akkor biztosak lehetünk benne, hogy n nem prímszám, noha egyetlen valódi osztóját sem ismerjük. Ebben az esetben azt mondjuk, hogy a árulója n-nek. Azonban a n 1 1 mod n, akkor is teljesülhet amikor n nem prímszám, ebben az esetben azt mondjuk, hogy a cinkosa n-nek. Szerencsére igaz az, hogy ha az n-nek van árulója akkor legalább annyi árulója van mint cinkosa.

Az árulók aránya Állítás Ha 1 < c 1 < c 2 <... < c k < n az n cinkosai és a az n egy árulója akkor ac 1, ac 2... ac k az n egymással nem kongruens mod n árulói. Bizonyítás: (ac i ) n 1 = a n 1 c n 1 i a n 1 1 mod n. Mivel a relatív prím n-hez ezért ha c i c j mod n akkor ac i ac j mod n. Tehát ha n egy összetett szám és van árulója akkor rengeteg árulója van.

Az árulók aránya Tehát ha n egy összetett szám és n-nek van árulója, akkor egy véletlenül választott 2 és n 1 közötti a szám legalább 1 2 valószínűséggel leleplezője vagy árulója. Így ha a teszten az n átcsúszik és tévesen azt mondja, hogy az n prím, akkor az azt jelenti, hogy 100-szor cinkost választottunk egymástól függetlenül véletlenül. Ennek a valószínűsége ( 1 ) 100 2 ami nagyon pici. Kérdés: Mi van ha nincs egyetlen egy árulója sem? Előfordulhat ez? Sajnos előfordulhat, hogy n-nek nincsen árulója. Az ilyen számokat Carmiachel számoknak illetve álprímeknek nevezzük. Szerencsére kevés van belőlük. Ezek a Fermat teszten csak akkor buknak le ha véletlenül valamelyik valódi osztójukat választjuk a-nak, aminek kicsi a valószínűsége.

Fermat-teszt elemzése Összefoglalva: Ha az n szám prím, akkor a Fermat-teszt biztosan prímnek nyílvánítja. Ha az n szám nem prím és van árulója, akkor a Fermat-teszt 1 1 2 100 valószínűséggel azt mondja, hogy összetett és 1 2 100 valószínűséggel tévesen prímnek hiszi. Ha az n szám Carmichael szám akkor a Fermat-teszt nagy valószínűséggel tévesen prímnek nyílvánítja, Kérdés: Akkor most a Fermat teszt teljesen haszontalan? Válasz: Szerencsére nem, egy kis módosítással meg lehet szabadulni a Carmichael számoktól.

A Fermat teszt kijavítása A Fermat tesztben azt ellnőrizzük, hogy a n 1 1 mod n ami ekvivalens azzal, hogy n a n 1 1. Az a n 1 1 a középiskolából ismert x 2 y 2 = (x + y)(x y) azonosság többszöri alkalmazásával az alábbi alakra hozható: a n 1 1 = a 2t q 1 = (a 2t 1q 1)(a 2t 1q + 1) =...... = (a q 1)(a q + 1)(a 2q + 1)(a 4q + 1)... (a 2t 1q + 1) Ha n prím akkor n osztja valamelyik zárójeles tényezőt. Az pedig bizonyítható (de mi most nem tesszük meg), hogy ha n összetett és a nem leleplezője n-nek, akkor n 3 4 valószínűséggel nem osztja a jobb oldali zárójelek egyikét sem.

Miller-Rabin teszt 0. Legyen i = 1 1. Véletelenül választunk egy 1-nél nagyobb és n-nél kisebb a egészet. 2. Kiszámoljuk, (n, a)-t euklideszi algoritmussal, ha ez nem 1 akkor STOP, OUTPUT: n nem prím, (n, a) egy valódi osztója. 3. Gyorshatványozással kiszámítjuk, hogy az a q, a 2q, a 4q,..., a 2t 1q számok milyen maradékot adnak n-nel osztva, ahol 2 t q = n 1. 4. Ha a q ±1 mod n vagy a iq 1 mod n valamely 1 i t-re akkor az 5. lépésre ugrunk, különben STOP, OUTPUT n nem prím. 5. Ha i < 100 akkor i := i + 1 és az 1-es lépésre ugrunk, különben STOP, OUTPUT: n prím.

Prímtesztelés összefoglalás A gyakorlatban a Miller-Rabin tesztet használják. Ez elhanyagolhatóan kicsi valószínűséggel téved és csak egy irányba téved. Prímszámot sosem nyilvánít összetett számmá. A PRÍM probléma eldöntésére van determinisztikus, mindig jó eredményt adó, véletlent nem használó polinomiális algoritmus. Ez viszont viszonylag friss (2002). Azonban bonyolult és a Miller-Rabin tesztnél lassabb. Emiatt a gyakorlatban nem nagyon használják.

A titkosítás feladata Adott egy információ amit szeretnénk A-ból B-be eljuttatni egy olyan csatornán amely során más is el tudja olvasni az üzenetet. Például ügyfél és bank szeretne kommunikálni, de közben egy csaló lehallgatja őket. USER: BELA PIN: 1234, Utalj X nek 100$ t $$$ BANK

Egy jó titkosítás tudja az alábbiakat: 1. Az információt átalakítja egy titkosított üzenetté (kódolja). 2. Akinek az információt szánjuk az a titkosított üzenetet vissza tudja alakítani az eredeti üzenetté (dekódolja). 3. A kódolás és a dekódolás is gyorsan számolható. 4. A csaló ne tudja dekódolni a titkosított üzenet. Az, hogy a csaló nem tudja a titkosított üzenetet dekódolni a gyakorlatban annyit jelent, hogy egy átlag embernek vagy szervezetnek nincs meg hozzá a számítási kapacitása. Viszont egyes szervezeteknek (Pl. NSA) van.

A titkosítás történetéről: Régen a titkosítási módszerek úgy működtek, hogy a két félnek akik bizalmasan szeretnének kommunikálni személyesen meg kellett állapodni a kódoló és dekódoló módszerekről. A II. világháborúban a németek által használt Enigma rejtjelező gépben lévő tárcsákba volt kódolva a dekódolási módszer. A titkos kulcs a tárcsák beállítása volt amiben a parancsnokság és a tengeralattjárók előre megállapodtak. Ugyanazt a kulcsot több üzenetváltás során is használták, így könnyebb volt ezeket feltörnie a britteknek.

Nyilvános kulcsú titkosítás Az internet korában a személyes kulccsere megvalósíthatatlan követelmény. Úgy kell megállapodni a titkosítás módjáról és a titkokról, hogy azt a csaló közben folyamatosan a csalók szeme előtt vagyunk. Erre nyújt megoldást a nyílvános kulcsú titkosítás, ahol mindenki rendelkezik egy titkos és egy nyilvános kulccsal. A nyilvános kulcs segítségével lehet titkosítani de csak a titkos kulcs segítségével lehet a titkosítást dekódolni. Emiatt a nyilvános kulcshoz bárki hozzáférhet, nem jelent veszélyt. Ha A és B titkosan szeretne kommunikálni akkor A odaadja B-nek a nyilvános kulcsát. Ezek után B tud titkosított üzenet küldeni az A nyilvános kulcsának segítségével. Az A-nak küldött üzenetet pedig csak A tudja dekódolni a titkos kulcsával. Hasonló módon B is elküldi a nyilvános kulcsát A-nak. Ezt hívják kulccserének.

Titkosítás matematikai modellje Az X üzenet az egy m hosszú szám. Ez minden esetben felthető, hiszen a számítógép minden adatot egy m hosszú bináris számként tárol. Adott egy C : N N kódoló függvény ami előállítja a titkosított C(X) üzenetet és C gyorsan számolható, viszont az inverze nem! Adott egy D : N N dekódoló függvény amire D(C(X)) = X, azaz D = C 1. Továbbá D valami titkos információ nélkül csak nagyon lassan számolható, a titkos információ tudatában viszont gyorsan. Ez a titkos információ lesz a titkos kulcs!

A titkosítás építőkockája: Egyirányú függvények Ha egy f függvény olyan, hogy f kiszámítása gyorsan megtehető, azonban f 1 kiszámítása f ismeretében reménytelenül nehéz akkor f -et egyirányú függvénynek nevezzük. Ha f egyirányú függvény és van valami olyan módszer ami f -en kívüli további információt felhasználva f 1 -et gyorsan kiszámítja, akkor f -et egyirányú kiskapus függvénynek nevezzük. A titkosításhoz nekünk egyirányú kiskapus függvények kellenek! Kérdés: Vannak-e ilyenek? Válasz: Tudja a fene. Néhány függvényről azt gondolják, hogy talán ilyenek. Mindenesetre ha léteznek ilyenek akkor abból következik, hogy P NP.

RSA titkosítás 1. Véletlenül választunk két nagy prímszámot p-t és q-t úgy, hogy n = pq > X. 2. Ekkor ϕ(n) = (p 1)(q 1). Véletlenül választunk egy olyan 1 és ϕ(n) 1 közé eső e egész számot amire igaz, hogy (e, ϕ(n)) = 1. 3. Megoldjuk az ex 1 mod ϕ(n) lineáris kongruenciát, legyen ennek a megoldása d. 4. Ezután C(X) = X e mod n, D(Y ) = Y d mod n. A p, q, d számokat titokban tartjuk ezek a titkos kulcsok, az n és e számokat közzétesszük, ezek a nyilvános kulcsok.

Az RSA egy jó titkosítási módszer Állítás A dekódolás működik, azaz D(C(X)) = X. Bizonyítás: Ha (X, n) = 1 akkor használhatjuk az Euler-Fermat tételt: D(C(X)) D(X e mod n) X ed X kϕ(n)+1 X 1 = X mod n Az (X, n) 1 esetnek kicsi a valószínűsége, de ebben az esetben is működik a dekódolás. Viszont ennek bizonyításához többet kellene tudnunk a kongruenciákról.

Az RSA használata Tehát ha én azt szeretném, hogy nekem valaki üzenetet küldjön úgy, hogy rajtam kívül más ne tudja a tartalmát elolvasni, akkor az RSA algoritmussal generálok (n, p) nyilvános és d titkos kulcsokat. A nyilvános kulcsokat közzéteszem. Amikor valaki üzenni akar nekem akkor a C(X) = X e mod n függvénnyel titkosítja az adatot és elküldi nekem én pedig a D(Y ) = Y d mod n függvénnyel dekódolom. Kérdés: Mi van ha nem csak egy irányba akarunk üzenetet küldeni hanem oda-vissza? Mi sem egyszerűbb. Ha az A ügyfél és a B bank kommunikálni akarnak egymással, akkor mindkettő lefuttatja az előző algoritmust, így az A ügyfélnek lesz egy (n A, e A ), A B banknak egy (n B, e B ) nyilvános kulcs párja. Ezeket elküldik egymásnak és innentől mindketten titkosítva tudnak a másiknak üzenetet küldeni.

Miért működik az RSA titkosítás? A gyorshatványozással gyorsan tudjuk a kódoló és dekódoló függvényeket számolni. A titkos kulcs nélkül a dekódolás reménytelenül sok ideig tart. Egy nagy számnak jelenleg nem tudjuk gyorsan előállítani a kanonikus alakját. Utolsó ponthoz: Ha tudnánk gyorsan faktorizálni (előállítani a kanonikus alakot), akkor n-ből ki tudnánk gyorsan számolni a p-t és q-t, akkor ϕ(n) egyből megvan és az ex 1 mod ϕ(n) lineáris kongruencia megoldásával máris kezünkben lenne a d titkos kulcs.

Mennyire bízhatunk meg az RSA-ban? Az, hogy nem ismerünk polinomiális algoritmust a faktorizációra, még nem jelenti azt, hogy nincsen. Lehet, hogy a faktorizáció gyors megoldása nélkül is fel lehet valahogy törni az RSA-t. Viszonylag régóta használják, sokan próbálkoztak feltörni. Bizonyos speciális esetekben ki lehet számolni a titkos kulcsot gyorsan. Ezt meg lehet akadályozni, ha a p, q, e-t nem teljesen véletlenül választjuk, hanem pár plusz dologra odafigyelünk. Ha valaki feltöri az valószínűleg nem fogja publikálni...

Digitális aláírás Napjainkban nem csak titkosításra van szükség, hanem arra is, hogy tudjuk igazolni digitálisan azt, hogy az adott üzenetet tényleg mi küldjük és nem valaki más. Ehhez az alábbi módszert használhatjuk ha A és B kommunikálnak: 1. A és B RSA-val d A, n A, e A, d B, n B, e B kulcsokat generálnak amelyek megadják a C A, C B, D A, D B függvényeket. 2. A és B kicserélik a nyilvános kulcsokat, azaz n A, e A, n B, e B -t. 3. Amikor A az X üzenetet el akarja küldeni B-nek, akkor C B (D A (X))-et küldi el. 4. Amikor B egy Y üzenett kap A-tól, akkor a C A (D B (Y ))-t kiszámolja és ez lesz az eredeti üzenet. Ha tényleg A küldte az üzenetet, akkor B végül C A (D B (Y )) = C A (D B (C B (D A (X)))) = C A (D A (X)) = X-et kap. Ha pedig nem A küldte akkor nem ismerhette a D A () függvényt így valami zagyvaságot kap B.