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

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

2016, Diszkrét matematika

Sapientia Egyetem, Matematika-Informatika Tanszék.

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

2018, Diszkre t matematika. 8. elo ada s

2018, Diszkre t matematika. 10. elo ada s

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

Egyesíthető prioritási sor

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

Waldhauser Tamás december 1.

2017, Diszkrét matematika

Sapientia Egyetem, Matematika-Informatika Tanszék.

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

Diszkrét matematika I.

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

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:

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

Emlékeztet! matematikából

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

Információs társadalom alapismeretek

Számelméleti alapfogalmak

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

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.

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

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

Diszkrét matematika I.

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

Algoritmuselmélet 18. előadás

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

Kongruenciák. Waldhauser Tamás

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

Miller-Rabin prímteszt

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

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

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

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

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

2016, Diszkrét matematika

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

2016, Diszkrét matematika

Algoritmuselmélet gyakorlat (MMN111G)

SzA XIII. gyakorlat, december. 3/5.

Tuesday, March 6, 12. Hasító táblázatok

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

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

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

A félév során előkerülő témakörök

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

Modern szimmetrikus kulcsú rejtjelezők kriptoanalízise

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

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.

Kriptográfiai protokollok

Adatszerkezet - műveletek

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

Fejezetek a. csodálatos életéből

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

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

MBL013E Számelmélet és Alkalmazásai

RSA. 1. Véletlenszerűen választunk két "nagy" prímszámot: p1, p2

SE EKK EIFTI Matematikai analízis

Diszkrét matematika I.

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

Matematikai alapismeretek. Huszti Andrea

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

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

Algoritmusok helyességének bizonyítása. A Floyd-módszer

2018, Diszkrét matematika

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Önszervező bináris keresőfák

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

KÓDOLÁSTECHNIKA PZH december 18.

Waldhauser Tamás. Jelölés. Az egyszerűség kedvéért (a, b) ρ helyett gyakran azt írjuk, hogy aρb.

2018, Diszkrét matematika

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

Bevezetés az algebrába 1

Mintafeladat az RSA algoritmus szemléltetésére

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

Titkosítás NetWare környezetben

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

Algoritmusok és adatszerkezetek II.

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

Data Security: Access Control

2. Feladatsor. N k = {(a 1,...,a k ) : a 1,...,a k N}

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

Kriptográfiai alapfogalmak

2016, Diszkrét matematika

SZÁMELMÉLETI FELADATOK

Elektronikus hitelesítés a gyakorlatban

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!

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Informatikai biztonság alapjai

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

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

Algoritmusok és adatszerkezetek II.

illetve a n 3 illetve a 2n 5

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

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Véletlenszám generátorok és tesztelésük HORVÁTH BÁLINT

Data Security: Access Control

Átírás:

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

OpenPGP

NYILVÁNOS KULCSÚ TITKOSÍTÁS Legyen D a titkosítandó üzenetek halmaza. Tegyük fel, hogy Bob titkosítottan szeretné elküldeni Aliznak az M D üzenetet. A nyilvános kulcsú titkosítás esetén Aliznak van egy SA titkos (Saját) és egy PA nyilvános (Publikus) kulcsa, továbbá van egy fk : D D', fd : D' D függvénypár (a kódoló és dekódoló függvények), amelyekre teljesül, hogy fd(sa, fk(pa,m))=m szimmetrikus titkositó algoritmusok

NYILVÁNOS KULCSÚ TITKOSÍTÁS fd(sa, fk(pa,m))=m Bob Aliz M C=fk(PA,M) M=fd(SA,C) PA PA(M) SA SA(C) fk fd szimmetrikus titkositó algoritmusok

DIGITÁLIS ALÁÍRÁS fk(pa,fd(sa,m))=m Aliz M SA δ=fd(sa,m) SA(M) PA M'=fk(PA,δ) PA(δ) fd fk M M==M'? szimmetrikus titkositó algoritmusok

RSA ALGORITMUS 1976, Ronald L. Rivest, Adi Shamir és Len Adleman 1. Vegyünk véletlenszerűen két különböző nagy prímszámot, p-t és q-t. 2. Legyen n = pq. 2 m <n<2 m+1 m=128, 256, 512, 1024 3. Vegyünk egy olyan kis páratlan e számot, amely relatív prím φ(n) = (p 1)(q 1)-hez. 65537 4. Keressünk egy olyan d számot, amelyre ed = 1 mod φ(n). 5. Az RSA nyilvános kulcs a P = (e,n) pár lesz. 6. Az RSA titkos kulcs az S = (d,n) pár lesz. szimmetrikus titkositó algoritmusok

RSA ALGORITMUS 1976, Ronald L. Rivest, Adi Shamir és Len Adleman szimmetrikus titkositó algoritmusok

Ebben a sémában az elküldhető üzenetek halmaza Zn = {0,1,...,n 1}. A kódolás a P = (e,n) nyilvános kulccsal: P(M) = M e mod n. A dekódolás a titkos kulccsal: S(C) = C d mod n. szimmetrikus titkositó algoritmusok

PÉLDA: 1. Vegyünk véletlenszerűen két különböző nagy prímszámot, p-t és q-t. 2. Legyen n = pq. 3. Vegyünk egy olyan kis páratlan e számot, amely relatív prím φ(n) = (p 1)(q 1)-hez. 4. Keressünk egy olyan d számot, amelyre ed = 1 mod φ(n). 5. Az RSA nyilvános kulcs a P = (e,n) pár lesz. 6. Az RSA titkos kulcs az S = (d,n) pár lesz. M = 27 n = p q = 5 7=35 φ(n) = (5 1)(7 1)=4 6=24 e = 7 // relatív prím 24-hez 9 24= 216 e d = 7 31= 217 = 1 mod 24 P = (e,n) = (7,35) S = (d,n) = (31,35) 3? 2? 1? C = M e mod n = 27 7 mod 35 = 10460353203 mod 35 = 13 M' = C d mod n =13 31 mod 35 = 27 szimmetrikus titkositó algoritmusok

Bob Aliz PÉLDA M=27 PA=(7,35) C=13 SA=(31,35) M'=27 fk fd Aliz Bob M=27 SA=(31,35) δ=13 PA=(7,35) M'=27 fd δ = M d mod n = 27 31 mod 35 = 13 fk M=27 szimmetrikus titkositó algoritmusok

PÉLDA Eredeti szöveg Darabolás Lenyomat készítés MD5 SHA-1 Titkosítás (RSA) Aláírás (RSA) Csomag szimmetrikus titkositó algoritmusok

HATVÁNYOZÁS P(M) = M e mod n. 3 11 =3 3 3 3 3 3 3 3 3 3 3 11=8+2+1=2 3 +2 1 +2 0 3 11 =3 23 +2 1 +2 0 b = bk2k +...+b1 21 +b0 hatv(a,b) { d = a; legyen <b k ;b k-1 ;...;b 1 ;b 0 > b bináris alakja; if (b 0 ==0) e=1 ; else e = a ; for (i=1;i<=k;i++) { d = d d; if (b i == 1) e = d e; } return e; } 1?

HATVÁNYOZÁS P(M) = M e mod n. static long Hatv(int a, int b){! long e=(b%2==1)? a:1;! long d=a;!! //2-hatványok! b>>=1;! while (b>0){!! d*=d;!! if (b%2==1)!! e*=d;!! b>>=1;! }! return e; } 1?

MODULÁRIS HATVÁNYOZÁS Z n P(M) = M e mod n. (x y)/n=(x/n) (y/n) (x y)\n=(x\z) (y\n) (x y)%n=((x%n) (y%n))%n mhatv(a,b,n) { d = a; legyen <b k ;b k-1 ;...;b 1 ;b 0 > b bináris alakja; if (b 0 ==0) e=1 ; else e = a ; for (i=1;i<=k;i++) { d = (d d) mod n; if (b i == 1) e = (d e) mod n; } return e; 3 6 mod 5 d=3, e=3, b=<110>, e=1 } i=1: d=4, e=4 3 3 3 3 3 3 i=2: d=1, e=4 4 4 4 1 4 3 6 mod 5 = 4 3 6 = 729 1?

MODULÁRIS HATVÁNYOZÁS P(M) = M e mod n. static long ModHatv(int a, int b, int n){! long e=(b%2==1)? a%n:1;! long d=a; //2-hatványok mod n: a^(2^i) mod n! b>>=1;! while (b>0){!! d=(d*d)%n;!! if (b%2==1) e=(e*d)%n;!! b>>=1;! }! return e; C=27 7 mod 35 } a=27, b=7, n=35 e=27*27=729 35*20=700 e=29*27=783 35*22=770 e=29*29=841 35*24=840 e=27, d=27, b=3 d=29, e=13, b=1 d=1, e=13, b=0 1!

KULCSPÁROK GENERÁLÁSA e d 1 (mod n) a x b (mod n) Jelölje G(a) az a elem által generált additív részcsoportját Zn-nek! G(a) = {(a x) mod n : x > 0}. A kongruenciának akkor és csak akkor van megoldása, ha b G(a). Legyen d = lnko(a, n). Ekkor G(a) = G(d) = {0, d, 2d,..., ((n/d) 1)d}, így G(a) = n / d. pl.: 18 x 2 (mod 10) x b 0 1 2 3 4 5 6 7 8 9 0 8 6 4 2 0 8 6 4 2 2?

KULCSPÁROK GENERÁLÁSA a x b (mod n) a x + n y = b lnko(a,b) {! if (b == 0) return(a) ;! else return(lnko(b,a%b)) ; } e d 1 (mod n) lnko(40,25) = lnko(25,15) = lnko(15,10) = = lnko(10,5) lnko(5,0) = 5 Az ax = b mod n kongruencia akkor és csak akkor oldható meg, ha d=lnko(a,n) osztható b-vel. Ha van megoldás, akkor pontosan d darab van. 2?

KULCSPÁROK GENERÁLÁSA a x b (mod n) 40 x 10 (mod 25) a x + n y = b 40 x + 25 y = 10 blnko(a,b) {! if (b == 0) return(a,1,0) ; 40 4 + 25 (-6) = 10! else {!! (d, x, y)=blnko(b,a%b) ;!! return(d,y, x-(a\b) y) ;! } } (d,x,y)=blnko(a,n) 40 2 + 25 (-3) = 5 blnko(40,25) = (5,2,-3) 25 (-1) + 15 2 = 5 15 1 + 5 (-1) = 5 10 0 + 5 1 = 5 5 1 + 0 0 = 5 = blnko(25,15) = (5,-1,2) = blnko(15,10) = (5,1,-1) = = blnko(10,5) = (5,0,1) blnko(5,0) = (5,1,0) 2?

KULCSPÁROK GENERÁLÁSA 40 x 10 (mod 25) a x b (mod n) a b n x d 40 2 + 25 (-3) = 5 40 4 + 25 (-6) = 10 linearis-konguencia-megoldo(a,b,n) {! (d,x,y)=blnko(a,n) ;! if (!d%b) {!! x *= (b/d)%n ;!! for (i=0;i<d;i++)!!! print x+i*(n/d)%n ;! }! else print "nincs megoldás" ; } 5 4 4 9 14 19 24 2!

KULCSPÁROK GENERÁLÁSA n = pq = 5 7=35 Vegyünk véletlenszerűen két különböző nagy prímszámot, p-t és q-t. Ismert, hogy végtelen sok prím van, így tetszőlegesen nagy prím található. A prímek nem helyezkednek el nagyon ritkán. Ha π(n) jelöli az n-nél nem nagyobb prímek számát, akkor 1. VEGYÜNK EGY VÉLETLENÜL VÁLASZTOTT SZÁMOT 2. NÉZZÜK MEG PRÍM-E 3. HA NEM PRÍM VISSZA AZ 1. PONTBA 3?

KULCSPÁROK GENERÁLÁSA prímtesztelés A Fermat tétel alapján, minden p prímre és minden a = 1,..., p 1 -re a p 1 = 1 mod p. Az első prímtesztelő algoritmus kiszámolja a mhatv(2,n-1,n) értéket, és ha nem 1-et kapunk, akkor tudjuk, hogy n összetett szám. Az algoritmus, akkor hibázik, ha n olyan összetett szám, amelyre 2 n 1 = 1 mod n. Általában azokat az összetett számokat, amelyekre a n 1 = 1 mod n, a alapú álprímnek nevezzük. Természetesen adódik a kérdés, hogy milyen gyakran téved az algoritmus, azaz milyen gyakran fordulnak elő 2 alapú álprímek. 1000-nél kisebb 2 alapú álprím 22 van, az álprímek aránya tart a 0-hoz. 3?

KULCSPÁROK GENERÁLÁSA prímtesztelés Kézenfekvő ötlet, hogy használjunk a teszteléshez a 2 számon kívül más alapokat is. Ez nem oldja meg a problémát, mert vannak olyan számok, amelyek minden a-ra a alapú álprímek. Ezeket a számokat nevezzük Carmichael számoknak. Ezekből még kevesebb van, 10 9 -nél kisebb Carmichael szám 255 van, a legkisebb az 561. 3?

KULCSPÁROK GENERÁLÁSA prímtesztelés* MILLER RABIN VALÓSZÍNŰSÉGI PRÍMTESZT A prímteszt két lépésből áll. Egyrészt véletlenül választott a értékekre ellenőrzi, hogy a vizsgált szám a alapú álprím-e, továbbá megvizsgálja, hogy vane nemtriviális négyzetgyöke 1-nek modulo n. A második részbeli elutasítás helyessége az alábbi tételen alpul: Tétel: Ha p páratlan prím, akkor az x 2 = 1 mod p kongruenciának, csak 2 megoldása van, az x = 1 és az x = 1. Def.: Az x szám 1 nem triviális négyzetgyöke modulo n, ha megoldása az x 2 = 1 mod n kongruenciának, és nem egyezik meg a triviális 1,1 négyzetgyökökkel. Következmény Ha az 1-nek létezik nemtriviális négyzetgyöke modulo n, akkor az n összetett szám. 3?

KULCSPÁROK GENERÁLÁSA prímtesztelés* A prímteszt használja a következő TANÚ(a,n) algoritmust. Ehhez legyen n 1 = 2 t u, ahol t 1 és u páratlan. tanu(a,n) {! x[0]=mhatv(a,u,n) ;! for (i=1;i<=t;i++) {!! x[i]=(x[i-1]*x[i-1])%n ;!! if (x[i]==1 and x[i-1]!=1 and x[i-1]!=n-1)!!! return True;! }! if (x[t]!=1)return True;! return False; } 3?

KULCSPÁROK GENERÁLÁSA prímtesztelés* Lemma. Ha a tanu(a,n) eljárás Igaz értéket ad vissza, akkor az n szám összetett. Bizonyítás. Két esetben kaphatunk Igaz értéket, ha x(i 1) nem triviális négyzetgyöke 1-nek modulo n, vagy ha nem teljesül n-re a Fermat tétel. Mindkét esetben adódik, hogy n nem lehet prím. 3?

KULCSPÁROK GENERÁLÁSA prímtesztelés* Miller-Rabin(a,b,s) { for (j=1;j<=s;j++) {! q:=veletlengeneralt(a,b) ;! if tanu(q,b) return tuti nem prím } return valószínűleg prím Tétel. Az n páratlan összetett számnak legalább (n 1)/2 darab összetettséget igazoló tanúja van. Következmény: Legyen n > 2 páratlan egész, s pedig pozitív egész. A Miller-Rabin(n,s) teszt tévedési valószínűsége legfeljebb 2 s. Bizonyítás: A fenti tétel alapján ha n nem prím, akkor a Miller-Rabin(n,s) teszt minden iterációja 1/2 valószínűséggel felfedez egy tanút. Így annak a valószínűsége, hogy s lépésben nem találunk egyetlen tanút sem, kisebb, mint 2 s. 3?

KULCSPÁROK GENERÁLÁSA prímtesztelés* Mersenne prímek Def: Mersenne-prímnek nevezzük a kettő-hatványnál eggyel kisebb, azaz a 2 n 1 alakban felírható prímszámokat, ahol n szintén prímszám. 2008-ban fedezték fel a 45-ödik Mersenne-prímet, ez a 2 43112609-1 szám, amely 12 978 189 számjegyű. Ez a jelenleg ismert legnagyobb prímszám. 3?

m=128, 256, 512, 1024 RSA támadások Kulcskereséses támadás Számítási idő mérése Hibás alkalmazás A modulus faktorizációján alapuló támadások Martin Gardner, a Scientific American világhírű rovatvezetőjének 1977-es gondolatai: Ha a ma ismert legjobb algoritmust és a leggyorsabb számítógépeket használjuk, egy ilyen 125 jegyű RSA kulcs megfejtésére, Rivest becslése szerint a szükséges mefejtési idő körülbelül 40 quadrillió év! Ez azt jelenti, hogy praktikusan a belátható jövőben reménytelen az RSA kulcsok faktorizáció útján történő megfejtése. Ugyanakkor maga Rivest és kollégái is elismerik, hogy semmilyen elméleti bizonyítékuk nincs arra, hogy az RSA titkosítási eljárás megfejthetetlen.

Hibás alkalmazás

Hibás alkalmazás

Prímszámok véletlen hibája Ha az RSA modulus egy Carhmichael szám valamely osztója, akkor a Fermat-féle ciklus hossza éppen 1, így az üzenek könnyen visszafejthető. Intervallum Álprímek száma Carmichael számok száma 1-10 1-1-100 30-1-1000 434 1 1-10000 5106 7 1-100000 55576 16 A Carmichael számok aránya ismeretlen. Ez egy bizonytalansági tényező, amely megingathatja az RSA biztonságába vetett hitet.

HIVATKOZÁSOK R.L. Rivest, A. Shamir and L. Adleman, A method for obtaining digital signatures and public key cryptosystems. Commun. ACM 21 120-126 Imreh Csanád: Algoritmusok és Adatszerkezetek II. 2009 HTTP://WWW.INF.U-SZEGED.HU/~CIMREH/N10ALG27EL.PDF HTTP://WWW.INF.U-SZEGED.HU/~CIMREH/N10ALG28EL.PDF Horváth Gyula: Algoritmusok és Adatszerkezetek II. 2008 HTTP://WWW.INF.U-SZEGED.HU/~TNEMETH/A2ANYAGOK/V17.PDF M. Wiener, Cryptanalysis of short RSA secret exponents, IEEE Trans. Inform. Theory 36 (1990), 553-558 D. Boneh, and G.Durfee, New results on crpyptanalysis of low private exponent RSA, preprint 1998 T. H. Cormen, C. E. Leiserson, R.L. Rivest, C. Stein: Új algoritmusok, Scolar Kiadó, 2003. HTTP://WWW.TITOKTAN.HU/_RAKTAR/_E_VILAGI_GONDOLATOK/HTRSA.HTM HTTP://WWW.NETACADEMIA.NET/RSA.ASPX

HIRDETEM A KÖVETKEZŐKET Erdélyben lesz a Sapientia verseny, háromfős csapatoknak, május 11-13 közöt. Egy csapatot küldhetünk, ennek a válogatója április 20-án (MOST PÉNTEKEN) lesz. A tavaszi egyéni SZTE-s programozó verseny, május 4-én. Mindkét verseny algoritmikus jellegű feladatok megoldásáról szól, szokott lenni dinamikus, mohó, gráfos, geometriai, effélék; bíróra kell a forráskódot beküldeni, ami csak akkor fogadja el a feladatot, ha az összes tesztesetre időlimiten belül helyes választ ad. Részletek dr. Iván Szabolcs egyetemi adjunktus weblapján: http://www.inf.u-szeged.hu/~szabivan/?postid=194. Bármi kérdés van, lehet ŐT zaklatni emaillel, jelentkezni is nála kell. Nem baj, ha egy csapat csak két fős.