Sapientia Egyetem, Matematika-Informatika Tanszék.

Hasonló dokumentumok
Sapientia Egyetem, Matematika-Informatika Tanszék.

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

Diszkrét matematika I.

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

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

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

2018, Diszkre t matematika. 10. elo ada s

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

Sapientia Egyetem, Matematika-Informatika Tanszék.

2018, Diszkre t matematika. 8. elo ada s

2016, Diszkrét matematika

2017, Diszkrét matematika

2016, Diszkrét matematika

Data Security: Public key

Sapientia Egyetem, Matematika-Informatika Tanszék.

Emlékeztet! matematikából

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:

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

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

Kriptográfiai alapfogalmak

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

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

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

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

Információs társadalom alapismeretek

Sapientia Egyetem, Matematika-Informatika Tanszék.

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

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

Titkosítás NetWare környezetben

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

2016, Diszkrét matematika

Waldhauser Tamás december 1.

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

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

Számelméleti alapfogalmak

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

Diszkrét matematika I.

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

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:

Algoritmuselmélet gyakorlat (MMN111G)

Hírek kriptográfiai algoritmusok biztonságáról

Titkosítási rendszerek CCA-biztonsága

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

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

Hálózati biztonság ( ) Kriptográfia ( )

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

Kriptográfia I. Kriptorendszerek

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

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

TANTÁRGYI ADATLAP. 2.7 A tantárgy jellege DI

Data Security: Access Control

2018, Diszkrét matematika

Adatbiztonság. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Adatbiztonság / 22

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

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

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

Kriptográfiai protokollok

Data Security: Protocols Integrity

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

2018, Diszkrét matematika

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

Digitális aláírás és kriptográfiai hash függvények. 1. az aláírás generálása (az X üzenetet küldő A fél végzi): A B: X, D A (X)

2018, Diszkrét matematika

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

Mintafeladat az RSA algoritmus szemléltetésére

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

Adat és információvédelem Informatikai biztonság. Dr. Beinschróth József CISA

2018, Diszkrét matematika

Assembly programozás: 2. gyakorlat

Az adatfeldolgozás és adatátvitel biztonsága. Az adatfeldolgozás biztonsága. Adatbiztonság. Automatikus adatazonosítás, adattovábbítás, adatbiztonság

Elektronikus hitelesítés a gyakorlatban

A nyilvános kulcsú algoritmusokról. Hálózati biztonság II. A nyilvános kulcsú algoritmusokról (folyt.) Az RSA. Más nyilvános kulcsú algoritmusok

Kvantumkriptográfia II.

Hálózatbiztonság Androidon. Tamas Balogh Tech AutSoft

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

IT biztonság Hozzáférés-ellenőrzés és digitális aláírás I. 2016/2017 tanév

Data Security: Access Control

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

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

Dr. Bakonyi Péter c.docens

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

TANÚSÍTVÁNY. tanúsítja, hogy a Utimaco Safeware AG által kifejlesztett és forgalmazott

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

Fizikai támadások HSM-ek ellen. Pintér Olivér

IT biztonság Hozzáférés-ellenőrzés és digitális aláírás I. 2014/2015 tanév

Diszkrét matematika 2.

Módszerek és eszközök a kriptográfia oktatásakor

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

Informatikai biztonság alapjai

A NYILVÁNOS KULCSÚ INFRASTRUKTÚRA ALAPJAI ÉS ÖSSZETEVŐI BASICS AND COMPONENTS OF PUBLIC KEY INFRASTRUCTURE SPISÁK ANDOR

Modern titkosírások és a matematika

Adatbiztonság 1. KisZH (2010/11 tavaszi félév)

Nemzeti Közszolgálati Egyetem. Vezető-és Továbbképzési Intézet. Bérczes Attila Pethő Attila. Kriptográfia

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

Kriptográai protokollok

Diszkrét matematika I.

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

Adja meg, hogy ebben az esetben mely handshake üzenetek kerülnek átvitelre, és vázlatosan adja meg azok tartalmát! (8p)

Távközlési informatika Kriptográfia. Dr. Beinschróth József

2016, Diszkrét matematika

Átírás:

Kriptográfia és Információbiztonság 7. előadás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2018

Miről volt szó az elmúlt előadáson? Kriptográfiai könyvtárcsomagok: a Crypto++ könyvtárcsomag, C++ projektekhez a security csomag és a Cipher osztály Java projektekhez kripto modul a Python projektekhez a OpenSSL könyvtárcsomag Nagy számok kezelés különböző programozási nyelvekben: C++, C#, Java Nyilvános-kulcsú, aszimmetrikus (public-key, asymmetric cryptography) rendszerek: alapfogalmak követelmények matematikai modell az RSA titkosító rendszer: specifikáció, példa, helyesség

Miről lesz szó? Az RSA titkosító rendszer (baby, textbook változat): specifikáció, példa RSA, biztonsági problémák RSA a gyakorlatban Az RSA-OAEP rendszer Valószínűségi prímtesztek Az RSA gyorsítása

Az RSA titkosító rendszer RSA (Rivest, Shamir, Adleman), 1976-ban publikálták, aszimmetrikus titkosító az RSA-OAEP (Bellare, Rogaway) verziót 1995-ben publikálták, mai napig standard a titkosítás és visszafejtés nem ugyanazzal a kulccsal történik: van egy privát-kulcs és van egy publikus-kulcs a publikus-kulccsal titkosítunk, a privát-kulccsal fejtjük vissza az üzenetet a publikus-kulcs ismeretében, ha ez megfelelő bit-méretű (> 1024), nem tudjuk meghatározni a privát-kulcsot

Az RSA titkosító rendszer Khan-academy - videó anyag! hatékony algoritmussal ki lehet generálni a kulcsokat a titkosító algoritmus nagy számok titkosítására képes, a kulcsok is nagy számok lesznek a szöveget (bájt-szekvenciát), amit titkosítani akarunk át kell alakítani számmá a titkosított számot vissza kell alakítani szöveggé (bájt-szekvenciává) legyen egy szöveg, 16-os számrendszerben: 0x3f 0xa9 0x4b 0xd2 0xb8 a szöveghez tartozó szám: 63 256 0 + 169 256 1 + 75 256 2 + 210 256 3 + 184 256 4 = 793802156351

Az RSA algoritmus, - baby változat választunk két prímszámot, legyenek ezek: p, q, majd meghatározzuk n = p q kiszámoljuk: phi = (p 1) (q 1), majd kiválasztjuk azt a legkisebb e számot, amelynek nincs közös osztója phi-vel meghatározzuk azt a d számot, amelyre teljesül: e d = 1 (mod phi) a titkosításnál az (e, n) értékpárt használjuk, a visszafejtésnél a (d, n)-t ha az m számot szeretnék titkosítani, akkor kiszámoljuk: m e ahol a kapott értéket jelöljük c-vel (mod n), ha a c számot szeretnék visszafejteni, akkor kiszámoljuk: c d (mod n), ha helyesen számoltunk, akkor visszakapjuk m-t.

Példa, kulcsgenerálás - baby változat legyenek: p = 2997892741, q = 3583389067, 32 bites prímszámok meghatározzuk: n = 2997892741 3583389067 = 10742616072138062647, φ = (p 1) (q 1) = 2997892740 3583389066 = 10742616065556780840. legyen e = 7, ahol lnko(7, φ) = 1. meghatározzuk: d = 9207956627620097863, ahol fennáll: 5 9207956627620097863 = 1 (mod 10742616065556780840). A publikus-kulcs : (7, 10742616072138062647). A privát-kulcs : (9207956627620097863, 10742616072138062647)

Példa, titkosítás, visszafejtés, - baby változat legyen az üzenet 0x3f 0xa9 0x4b 0xd2 0xb8, ekkor a szöveghez tartozó szám a következő: 63 256 0 + 169 256 1 + 75 256 2 + 210 256 3 + 184 256 4 = 793802156351 titkosítás: 793802156351 7 (mod 10742616072138062647) = 9234224821721448476 visszafejtés: 9234224821721448476 9207956627620097863 (mod 10742616072138062647) = 793802156351 a kapott számot visszaalakítjuk bájtokká: meghatározzuk a szám 256-al való osztási maradékait.

RSA, biztonsági problémák az n faktorizálásához kapcsolódó problémák a k nagyságrendje: min 1024 bit Fermat féle faktorizáció: a p és a q ne legyenek túl közel egymáshoz Pollard ρ féle faktorizáció: p 1, illetve p + 1-nek legyen legalább egy nagy prímosztója, legjobb módszer: ha véletlenszerűen választjuk meg a prímeket,... ugyanannak a p, vagy q prímnek a többszöri felhasználása a modulus többszöri felhasználása, különböző e értékekre az e, d megválasztása: e kicsi kell legyen, d azonban az n nagyságrendjével kell egyenlő legyen az RSA-textbook (baby) nem biztonságos, mert a titkosító algoritmus nem véletlenszerűsített választott nyílt-szöveg típusú támadás. az RSA titkosító multiplikatív tulajdonságú választott rejtjelezett-szöveg típusú támadás.

Az RSA multiplikatív tulajdonsága Az RSA multiplikatív tulajdonsága azt jelenti, hogy fennáll: Példa: (a e b e ) = (a b) e legyen p = 60077, q = 37189 két primszám meghatározzuk az n, phi, e, d értékeket: n = p q = 2234203553 phi = (p 1) (q 1) = 2234106288 e = 5 d = 1340463773, ahol e d = 1 (mod phi) legyen a = 10000, b = 30000 fennáll A B = (a b) e, ahol: A = a e (mod n) = 2077758732 B = b e (mod n) = 2199572451 (A B) (mod n) = 71336309 (a b) e (mod n) = 71336309

RSA a gyakorlatban az RSA visszafejtési algoritmus gyorsításának problémája a standardként elfogadott módszer az RSA-OAEP a gyakorlatban szinte soha nem használják titkosító algoritmusként, leggyakrabban kulcscsere protokollokban, a szimmetrikus rendszerek kulcsainak a megosztására használják, az alábbi forráskód mini kliens/szerver alkalmazásokat tartalmaz Pythonban, ahol a szerver.py/kliens.py felhasználva az RSA-t egyetlen egy klienssel oszt meg egy közös értéket (a szesszió kulcsot) a másik alkalmazásban (szerverrsa RC4.py/kliensRSA RC4.py) felhasználva a megosztott szesszió kulcsot (ez lesz az RC4-kulcs) a szerver titkos üzeneteket tud küldeni a kliensnek, ahol az üzenetek titkosítását RC4-el végeztük forráskód

Az RSA-OAEP rendszer 1995-ben Bellare és Rogaway publikálja, az RSA CCA-biztonságú változatát helyes paraméterezés esetében az RSA-OAEP a jelenlegi standardnak megfelelő biztonságot garantálja standardizált leírása megtalálható a PKCS#1 v2.0. egy véletlen bit-generátort és egy hash függvényt használ az RSA-függvény elveszíti multiplikatív tulajdonságát és probabilisztikus lesz az e = 3 publikus kulcs esetében is megfelelően biztonságos lesz egyszerűsített változata: az SAEP rendszer, David Boneh publikálta 2001-ben, az RSA-függvény helyett a Rabin-függvényt használjuk: R n : {Z n Z n, x x 2 (mod n)},

Az RSA-OAEP rendszer Titkosítás: A nyílt-szöveg P = (Z 2 ) l P, a titkos szöveg C = (Z 2 ) l H +l G halmazon van értelmezve, az m nyílt szöveget szeretnénk titkosítani, legyen r {0, 1} k véletlenszerű bitsorozat, x = m 0 l G l P, (m-et kiegészítjük nullásokkal), meghatározzuk y = (x G(r)) (r H(x G(r)))), a titkosított érték: Enc pk (y) = y e (mod n) c Visszafejtés: meghatározzuk az y = c d (mod n) értéket felosztjuk y-t y 1 y 2 -re úgy, hogy y 1 = l G és y 2 = l H, meghatározzuk r = H(y 1 ) y 2, meghatározzuk x = y 1 G(r), ellenőrizzük, hogy x utolsó l G l P bitje nulla-e: ha nem, akkor REJECT kimeneti értékkel leállunk, ellenkező esetben vissza térítjük x első l P bitjét.

Az RSA-OAEP rendszer Jelöljük a véletlen bit-generátort: jelöljük a hash függvényt: G : {0, 1} l H {0, 1} l G, H : {0, 1} l G {0, 1} l H. a standardban H függvénynek az SHA újabb verzióját használják (min 160 bites), a G függvény szerkesztéséhez szintén az SHA újabb verzióját használják, G(r) = SHA j (r < 0 >) SHA j (r < 1 >)..., ahol r véletlen bitsorozat és az < i > jelölés az i kettes számrendszerbeli értékét jelenti 4 bájton ábrázolva, az SHA j jelölés azt jelenti, az SHA függvény első j, legnagyobb helyértékű bájtjait használjuk fel. Tipikus esetben, ha a modulus 1024 bites, azaz 128 bájtos, akkor l H = 20 bájt, l G = 108 bájt, j = 10 bájt.

Valószínűségi prímtesztek Az algoritmusok kimenete olyan számot ad, amely csak nagy valószínűséggel prím: a Fermat prímteszt: a kis Fermat-tételen alapszik, nagy a tévedési aránya a Miller-Rabin prímteszt: ezt használják a legtöbb kriptográfiai protokollban, a Solovay-Strassen prímteszt: gyakorlati haszna kisebb, mint a Miller-Rabin tesztnek, mert nagyobb a tévedési aránya,...

Az RSA gyorsítása Alkalmazható a kínai maradéktétel a visszafejtés időigényének javítása érdekében. Alkalmazásával a rendszer nem veszít biztonságából. Ahelyett hogy az n nagyságrendjével megegyező d hatványkitevővel számolnánk, elvégzünk két kisebb (a p nagyságrendjével megegyező) hatványkitevővel való hatványozást. Meghatározzuk dp, dq, Mq, Mp értékeket a következő módon: dp = d (mod p 1) dq = d (mod q 1) q Mq = 1 (mod p) p Mp = 1 (mod q). A c d (mod n) értéket megadja az x értéke, ahol x = (Mq q xp + Mp p xq) (mod n) xp = c dp (mod p) xq = c dq (mod q).