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



Hasonló dokumentumok
Diszkrét matematika I.

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

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

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

Sapientia Egyetem, Matematika-Informatika Tanszék.

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

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:

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

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

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

Sapientia Egyetem, Matematika-Informatika Tanszék.

Információs társadalom alapismeretek

Waldhauser Tamás december 1.

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

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

Kriptográfiai alapfogalmak

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

2018, Diszkre t matematika. 10. elo ada s

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

Elektronikus aláírás. Gaidosch Tamás. Állami Számvevőszék

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

4. előadás Prímek, tökéletes számok, Fermat-teszt, pszeudoprímek

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:

Data Security: Public key

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

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

Emlékeztet! matematikából

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.

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

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

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

Modern titkosírások és a matematika

Számelméleti alapfogalmak

2017, Diszkrét matematika

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

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

Kriptográfia I. Kriptorendszerek

Mintafeladat az RSA algoritmus szemléltetésére

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

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

2016, Diszkrét matematika

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

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

Adatvédelem titkosítással

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

A Z E L E K T R O N I K U S A L Á Í R Á S J O G I S Z A B Á L Y O Z Á S A.

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!

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

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

Prímszámok. A cikkben szereplő eredmények 2008 decemberéből származnak.

1. előadás Prímtulajdonság, lnko, Euklideszi algoritmus, lánctörtek

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

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

Kvantumkriptográfia II.

3. előadás Prímtulajdonság, lnko, Euklideszi algoritmus, lánctörtek

SzA XIII. gyakorlat, december. 3/5.

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

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Titkosítás NetWare környezetben

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

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

Eötvös Loránd Tudományegyetem

3. előadás Prímtulajdonság, lnko, Euklideszi algoritmus, lánctörtek

Windows biztonsági problémák

Alaptechnológiák BCE E-Business - Internet Mellékszakirány 2006

Kongruenciák. Waldhauser Tamás

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

Tartalom. Algebrai és transzcendens számok

Data Security: Access Control

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

IP alapú távközlés. Virtuális magánhálózatok (VPN)

Diszkrét matematika I.

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

Webalkalmazás-biztonság. Kriptográfiai alapok

KÓDOLÁSTECHNIKA PZH december 18.

Egyesíthető prioritási sor

Az Outlook levelező program beállítása tanúsítványok használatához

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

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

Szakács Lili Kata megoldása

A TITKOSÍTÁS ALKALMAZOTT MÓDSZEREI HÁLÓZATI ISMERETEK 1 GYAKORLAT BUJDOSÓ GYÖNGYI FEKETE MÁRTON Debrecen AZ ELEKTRONIKUS KOMMUNIKÁCIÓBAN

Kriptográfiai protokollok

Miller-Rabin prímteszt

Informatikai biztonság alapjai

Ahol a kvantum mechanika és az Internet találkozik

Bevezetés az Információtechnológiába

Diszkrét matematika I.

Algoritmuselmélet 6. előadás

Sapientia Egyetem, Matematika-Informatika Tanszék.

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

3. Kriptográfia (Jörg Rothe)

Algoritmuselmélet gyakorlat (MMN111G)

Titkosítás. Uhlár László

Alapvető polinomalgoritmusok

Diszkréció diszkrét logaritmussal

CAS implementálása MPEG-2 TS-alapú

ADATBIZTONSÁG: TITKOSÍTÁS, HITELESÍTÉS, DIGITÁLIS ALÁÍRÁS

Oszthatósági problémák

E mail titkosítás az üzleti életben ma már követelmény! Ön szerint ki tudja elolvasni bizalmas leveleinket?

2016, Diszkrét matematika

Átírás:

4. Előadás Titkosítás, RSA algoritmus Dr. Kallós Gábor 2014 2015 1

Tartalom A kriptográfia meghatározása, alaphelyzete Szimmetrikus (titkos) kulcsú titkosítás A Caesar-eljárás Aszimmetrikus (nyilvános) kulcsú titkosítás Az RSA algoritmus Alapötlet Lépések Alkalmazási példák Feladatok Irodalom 2

Számítástudomány Titkosítás Kriptográfia Több ezer éves tudomány (művészet) Írások és üzenetek olyan (titkos anyagba történő) átalakításával/rejtjelezésével foglalkozik, amely illetéktelen személyek számára megakadályozza a visszafejtést Titkosító rendszer/módszer (kriptográfiai protokoll) Szövegek rejtjelezésére szolgáló eljárás, úgy, hogy a jogosult fogadó képes legyen hatékonyan és egyértelműen visszafejteni a szöveget Kriptoanalízis Szintén több ezer éves tudomány (művészet) Rejtjelezett üzenetek (illetéktelen) visszafejtésével/feltörésével foglalkozik A kriptográfia tipikus alaphelyzete: Kommunikáció két szereplő között (Alice és Bob) nem biztonságos csatornán, amelyet lehallgathat egy külső szereplő (Eve) Ezért az üzenetküldés egy kulcs segítségével kódolva (titkosítva) történik (encoding E függvény), a titkosított üzenet pedig egy (másik) kulccsal visszafejthető (decoding D függvény) A titkosítás lehet szimmetrikus (titkos) kulcsú és aszimmetrikus (nyilvános) kulcsú 3

Szimmetrikus (titkos) kulcsú titkosítás Itt a titkosításhoz és a visszafejtéshez használt kulcs megegyezik, vagy az egyik könnyen kiszámolható a másikból A kulcsot feltétlenül titokban kell tartani! Amennyiben valaki hozzáfér a kulcshoz, úgy képes az összes korábbi üzenetet dekódolni, illetve bármelyik fél nevében üzenetet hamisítani A régi korok titkosító eljárásai mind ilyenek voltak Pl. betűeltolásos titkosítás (a nyílt szöveg minden betűjének ugyanaz a betű felel meg a titkosított szövegben) egyszerű feltörni Javított változatok: a szövegbeli elhelyezkedéstől függően más és más a kódkarakter de ezek is feltörhetők voltak A módszer napjainkban is jól alkalmazható sok esetben (pl. ott, ahol a küldés és a fogadás egy helyen történik titkosító fájlrendszer) Hátrányok/nehézségek (két vagy több kommunikáló partner esetén): A kulcsot az adatátvitel előtt valahogy el kell juttatni egyik féltől a másikig Minden kommunikációs partnerhez különböző kulcsot kell használni, hisz közös kulcs esetén el tudnák olvasni egymás üzeneteit 4

Szimmetrikus kulcsú titkosítás Klasszikus titkosító eljárások szemléltetése Feltörés lehetősége a 2. esetben: periódus meghatározása, majd utána gyakorisági elemzés (sokszor nehéz végrehajtani, időigényes!) Betűk, betűpárok, betűhármasok, stb. előfordulását vizsgálják Lényegében ezen az elven (csak jóval bonyolultabban, csavarosabban több tárcsa) működött az Enigma titkosító eljárása 5

Aszimmetrikus (nyilvános) kulcsú titkosítás A nagyobb teljesítményű számítógépek korszakában már nem voltak megfelelőek a hagyományos, klasszikus titkosító eljárások Felkészült, jó eszközökkel (szuperszg.) rendelkező feltörő Forradalmian új ötlet (Diffie és Hellman, 1976): nyilvános kulcsú titkosítás e nyilvános kulcs, d titkos/privát kulcs Itt d e, a titkosítás és a visszafejtés a kulcsokkal gyors, de csak nagyon nehezen végezhető el az a feladat, hogy d-t e-ből kiszámítsuk (feltörés) A visszafejtő függvény/eljárás a titkosító inverze Mit jelent az, hogy nagyon nehezen végezhető el? Néhány válaszlehetőség: A kriptorendszer kialakítója nem ismer polinomiális megoldó algoritmust Senki sem ismer polinomiális megoldó algoritmust Aki feltöri a kriptorendszert, valószínűleg megoldott már jól ismert nehéz problémát Aki feltöri a kriptorendszert, biztosan megoldott már jól ismert nehéz problémát Aki feltöri a kriptorendszert, biztosan megoldott már egy NP-teljes problémát Bizonyítottan nem létezik (valószínűségi) polinomiális megoldó algoritmus Jelen pillanatban senki sem ismer olyan kriptorendszert, amely kielégíti az utolsó három feltétel valamelyikét is, de a nagyon nehezen végezhető el az ilyen esetekben matematikailag jól leírható 6

Aszimmetrikus (nyilvános) kulcsú titkosítás Lépések: Egy nyilvánosan elérhető, megbízható forrásból (pl. magától a címzettől, vagy kulcsszerverről) megszerezzük a címzett nyilvános kulcsát Az üzenetet kódoljuk ezzel a kulccsal, majd elküldjük A kódolt üzenet csakis a címzett privát kulcsával nyitható (!) A megkapott üzenetet a címzett saját privát kulcsával visszafejti, a végeredmény az eredeti, titkosítatlan szöveg lesz A legtöbb ma használt kommunikációs protokoll (pl. SSL, SSH) ilyen típusú megoldást alkalmaz a biztonságos adatcseréhez Ugyanezen a módon digitális aláírás is készíthető és ellenőrizhető 7

Az RSA titkosítás Az RSA az egyik leggyakrabban használt nyilvános kulcsú algoritmus Alapötlet Rövidítés: Ron Rivest, Adi Shamir, Leonard Adleman; ők találták ki, 1977-78-ban (MIT) Itt szerepelt először nyilvános kulcs (!) (jól alkalmazható módon) Legyenek p és q különböző nagy prímek és n = p q. Tfh. van két egészünk, d (decryption) és e (encryption) úgy, hogy d e 1 (modφ(n)). Az n és e számok nyilvánosak, p, q és d pedig titkosak. Legyen M a küldendő üzenet (pozitív egész szám, kódolás után). [A módszer akkor biztonságos, ha M < p és q, de a gyakorlatban megfelel, ha M < n és annak esélye, hogy p M vagy q M, elhanyagolható.] [Az üzenet könnyen számmá alakítható, pl. A = 10, B = 11,, Z = 35, space = 99, így HELLO = 1714212124.] A küldő kiszámolja és elküldi az E = M e mod n számot. A fogadó kiszámítja az E d mod n számot. Euler-tétele (b φ(n) 1 (mod n)) miatt E d (M e ) d M e d M φ(n) többszöröse + 1 1 M M(mod n). Mivel M és E d mod n egyaránt 0 és n között van, ezért megegyeznek. Kérdés: Hogyan válasszuk meg e-t és d-t? 8

Az RSA titkosítás Alapötlet (folyt.) Ha e-t úgy választjuk, hogy lnko(e, φ(n)) = 1, akkor található megfelelő d. Segédállítás 1.: Legyenek a és m relatív prím egészek. Ekkor található olyan mod m egyértelmű b egész, hogy a b 1 (mod m). [Definíció: Ha a b 1 (mod m), akkor azt mondjuk, hogy b az a inverze mod m. Feladat: Írjuk fel Z 5 -ben az elemek összeadási és szorzási tábláját. Ellenőrizzük a táblázat segítségével az inverzek létezését!] Bizonyítás: A kiterjesztett Euklideszi algoritmussal tudunk találni olyan b és c egészeket, hogy a b + m c = 1. Ez azt jelenti, hogy a b 1 (mod m). Legyen e tetszőleges másik egész, amelyre a e 1 (mod m). Ekkor e e (a b) (a e) b b(mod m). Ahogy láttuk, ha ismerjük n felbontását (n = p q, p és q különböző prímek), akkor könnyen kiszámíthatóφ(n) = (p 1)(q 1). Ennél egyszerűbb módon φ(n) nem állítható elő. Továbbá, ha ismerjük φ(n)-t, akkor n felbontását is, mert p + q előáll: p + q = n φ(n) + 1 = p q (p q p q + 1) + 1, és így p q is megkapható: p q = + 2 2 2 2 2 ( p + q) 4n = p + 2 p q + q 4 p q = p 2 p q q végül pedig: p = ((p + q) + (p q))/2, q = ((p + q) (p q))/2. A d titkos kulcs megtalálásának problémáját visszavezettük n felbontására. 9

Az RSA titkosítás Az algoritmus lépései Kulcsgenerálás Rejtjelezés Visszafejtés Bob választ véletlenszerűen két (nagy) prímszámot, p-t és q-t (itt p q), és kiszámítja az N = p q számot A következő lépésben választ egy e kitevőt úgy, hogy 1 < e < φ(n) = (p 1)(q 1) és lnko(e, φ(n)) = 1 Ezután meghatározza azt az egyértelmű d számot, amelyre 1 < d < φ(n) és e d 1 (modφ(n)) (d itt az e inverze moduloφ(n)) Az (N, e) pár Bob nyilvános kulcsa, d pedig Bob titkos kulcsa [Legyen m < N az üzenet egyik blokkjának megfelelő szám, amelyet Alice szeretne Bobnak elküldeni] Alice ismeri Bob nyilvános kulcsát, így m-et a következő módon rejtjelezi: E(m) = m e mod N [Legyen c < N a rejtjelezett üzenet egyik blokkjának a kódja, amit Bob megkapott] Bob vissza tudja fejteni az üzenetet a következő módon: D(c) = c d mod N D(E(m)) = m, azaz a visszafejtéskor az eredeti üzenetet kapjuk vissza 10

Az RSA titkosítás Egyszerű RSA példa 11

Az RSA titkosítás Az RSA lépéseinek alkalmazásával kapcsolatos fontos kérdések Hogyan válasszuk meg a p és q prímszámokat? Ezeknek nagyoknak kell lenniük, hiszen különben az üzenetet elcsípő Eve az n számot faktorizálni tudná, és így meg tudná határozni a d titkos kulcsot (d az e-ből a kiterjesztett euklideszi algoritmussal meghatározható) Ezért a gyakorlatban (a mostani nagy gépek teljesítményét és a feltörő algoritmusok tudását figyelembe véve) p-t és q-t legalább 80-100 (decimális) jegyű számnak kell választani Hol/hogy találunk ilyen nagy prímeket? Javaslat: véletlenül generálunk ilyen sok jegyű számokat, és teszteljük, hogy prímek-e A prímek elég sűrűn helyezkednek el ahhoz, hogy az eljárás működhessen (tudjuk: N/ln N darab N-nél kisebb prímszám van) De: a prímtulajdonság biztos/pontos tesztelése nehéz feladat (!) Ugyanakkor ismertek elég gyors valószínűségi prímtesztek, amelyek gyakorlati szempontból teljesen megbízhatóan igazolják, hogy a jelölt prím (pl. Miller-Rabin-féle teszt) Hogyan tudunk hatékonyan nagy hatványra emelni számokat? Elég modulo N dolgozni, és 2 hatványok szerinti csoportokat képezhetünk, azaz Pl. 697 30 = 697 16 697 8 697 4 697 2 12

Az RSA titkosítás Az RSA lépéseinek alkalmazásával kapcsolatos fontos kérdések (folyt.) Mennyire biztonságos az RSA kódolás? A biztonság döntő módon azon alapszik, hogy a nagy számok faktorizációja igen nehéz feladat Így az algoritmus feltörése általános esetben, megfelelően nagy p és q választásával olyan sok ideig tartana, hogy nem érdemes megpróbálni (!) Ez a tulajdonság általánosan igaz, de egyes speciális esetekben ( ügyetlen prímválasztás) meg lehet találni az osztókat, nagy N (összetett szám) esetében is Egy példa: Pollard-(p 1) algoritmusa azon alapulva találja meg az n szám p prímosztóját, hogy p 1 minden prímosztója viszonylag kicsi, pl. kisebb 1 milliónál. Ezért figyelnünk kell arra, hogy (p 1)-nek és (q 1)-nek egyaránt legyen nagy p' és q' prímosztója. Más betartandó (lásd Bressoud, Gathen Gerhard, itt nem részletezzük): φ(φ(p q)) legyen nagy, és osztható legyen nagy prímekkel, azaz: lnko(p 1, q 1) legyen kicsi és (p' 1) ill. (q' 1) mindegyike legyen osztható nagy prímekkel További tipikus feltörést segítő hibák az RSA kódolásnál Kis vagy nagyon speciális e szám választása (ekkor az e-edik gyökvonás E(m) = m e mod N-re nem túl nehezen elvégezhető) p és q túl közel van egymáshoz (ez segíti a brute force feltörést, lásd Fermat alg.) Szöveg karakterenkénti vagy kis blokkonkénti kódolása A karakterenkénti titkosítás itt is minden azonos karakterre ugyanazt a kimenetet adja 13

Az RSA titkosítás RSA példa (prímválasztás, d és e, kódolás) Eml. (feltételek): 1. lépés 2. lépés lnko(p 1, q 1) legyen kicsi és (p' 1) ill. (q' 1) mindegyike legyen osztható nagy prímekkel (p 1)-nek és (q 1)-nek egyaránt legyen nagy p' és q' prímosztója p és q ne legyen túl közel egymáshoz, e ne legyen nagyon kicsi Válasszunk két darab 1 milliónál nagyobb prímet p'' = 4 813 309, q'' = 1 162 957 (p' 1 és q' 1 prímosztói) A p'' és q'' páros többszörösei + 1 alakú számokat vizsgáljuk, addig, amíg nem teljesítik a jelölt számok a pszeudoprím tesztet, majd ellenőrizzük, hogy a jelöltek valóban prímek (a próbaosztásos algoritmus megfelelő) p' = 22 4 813 309 + 1 = 105 892 799, q' = 6 1 162 957 + 1 = 6 977 743 (p 1 és q 1 prímosztói) 3. lépés Mint az előbb, a p' és q' páros többszörösei + 1 alakú számokat vizsgáljuk p = 20 105 892 799 + 1 = 21178 55981 q = 4 6 977 743 + 1 = 27 910 973 n = p q = 59 11142 11035 79513 φ(n) = (p 1) (q 1) = 59 11141 89578 12560 14

Az RSA titkosítás RSA példa (folyt.) Eml. (eddig): p = 20 105 892 799 + 1 = 21178 55981 q = 4 6 977 743 + 1 = 27 910 973 n = p q = 59 11142 11035 79513 φ(n) = (p 1) (q 1) = 59 11141 89578 12560 4. lépés (e és d) e legyen relatív prím (p 1)-hez és (q 1)-hez: e = 123 (vagy e = 12345678) A kiterjesztett euklideszi algoritmussal kell: e d 1 (modφ(n)) (ha d negatívnak adódna, akkor hozzáadunk φ(n)-et) d = 18 26206 43934 70547 (vagy d = 12 95799 57385 71239) 5. lépés (kulcstárolás) Közzétesszük n-et és e-t, biztonságos helyre elzárjuk d-t Biztonsági okokból célszerű törölni p, q és φ(n) értékét 6. lépés (kódolás) Az üzenetet 16 jegyű blokkokra tördeljük (így minden darab < n) Annak esélye, hogy egy tetsz. 10 16 -nál kisebb m egész osztható lesz p-vel vagy q-val kb. 1: 3 10 8 (elhanyagolható) Elvégezzük a kódolást az ismert módon 15

Feladatok Tudjuk, hogy n = 19 74936 15358 94833 és φ(n) = 19 74936 12325 17120, továbbá azt is, hogy n két prím szorzata. Határozzuk meg a két prímet anélkül, hogy faktorizálni kéne n-t! Minden lenti a, m párra keressük meg az a inverzét modulo m, vagy mutassuk meg, hogy ilyen inverz nem létezik (ha lnko(a, m) > 1): a = 25, m = 928 102; a = 315, m = 864 247 a = 1001, m = 2 671 835; a = 2643, m = 23 175 586 A bemutatott RSA példa forgatókönyve szerint kódoltuk a Hamlet egy részét (angolul). Állítsuk elő az eredeti szöveget, ha a kód: 39 25736 57380 83976 8 66571 70599 56870 14569 39934 49451 14 57541 36754 04137 Találjuk meg a d rejtett kulcsot, ha n = 233 570 063, e = 125. Az Euler-féle φ függvény tulajdonságai alapján határozzuk meg φ(n)-t n következő értékeire: 51 005, 107 653, 1 294 704, 1 494 108, 614 739 125. *Konstruáljunk RSA alapszámokat úgy, hogy (p' 1) ill. (q' 1) mindegyike tartalmaz 1 milliónál nagyobb prímfaktort, és p, q 12-13 jegyű számok. Közöljük a szomszéddal (többiekkel) n és e értékét, d-t tartsuk titokban. Próbáljuk a többiek kódját feltörni (saját felbontó algoritmussal)! 16

Ajánlott irodalom David M. Bressoud: Factorization and Primality Testing, Springer, New York, 1989 Joachim Gathen, Jürgen Gerhard: Modern Computer Algebra (3rd ed.), Cambridge Univ. Press, 2013 Donald E. Knuth: A számítógép-programozás művészete 2. (2. kiadás), Műszaki Könyvkiadó, Budapest, 1994 Katona Gyula, Recski András, Szabó Csaba: A számítástudomány alapjai, Typotex Kiadó, Budapest, 2003 Iványi Antal (szerk.): Informatikai algoritmusok 1., ELTE Eötvös Kiadó, Budapest, 2004 17