Emlékeztet! matematikából

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

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

Sapientia Egyetem, Matematika-Informatika Tanszék.

Diszkrét matematika I.

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

Kriptográfia I. Kriptorendszerek

Data Security: Public key

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

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

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

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

Adat integritásvédelem

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

Waldhauser Tamás december 1.

2017, Diszkrét matematika

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

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

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

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.

2016, Diszkrét matematika

2016, Diszkrét matematika

Kriptográfiai protokollok

Informatikai biztonság alapjai

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áfia 0. A biztonság alapja. Számítás-komplexitási kérdések

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

2018, Diszkre t matematika. 8. elo ada s

Sapientia Egyetem, Matematika-Informatika Tanszék.

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

Kriptográfiai alapfogalmak

Algoritmuselmélet gyakorlat (MMN111G)

Egyesíthető prioritási sor

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

Számelméleti alapfogalmak

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

Diszkrét matematika 2.

Modern szimmetrikus kulcsú rejtjelezők kriptoanalízise

Diszkrét matematika I.

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, Műszaki és Humántudományok Tanszék.

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

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

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

Programozás I. 5. Előadás: Függvények

Információs társadalom alapismeretek

Sapientia Egyetem, Matematika-Informatika Tanszék.

Kriptográai protokollok

Kvantumkriptográfia II.

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

SE EKK EIFTI Matematikai analízis

Adatbázis rendszerek Gy: Algoritmusok C-ben

értékel függvény: rátermettségi függvény (tness function)

Programozás 6. Dr. Iványi Péter

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

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)

Data Security: Access Control

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Tanúsítási jelentés HUNG-TJ amely a HUNG-E számí értékelési jelentésen alapul.

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

Kriptográfiai algoritmus implementációk időalapú támadása Endrődi Csilla, Csorba Kristóf BME MIT

Kriptoprotokollok. alapjai. Protokoll

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Minimum feladat: Teljes feladat: Minimum feladat: Teljes feladat: Minimum feladat:

Sapientia Egyetem, Matematika-Informatika Tanszék.

Matematikai alapismeretek. Huszti Andrea

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

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

Országzászlók (2015. május 27., Sz14)

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

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

MÁRTON GYÖNGYVÉR KRIPTOGRÁFIAI ALAPISMERETEK

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

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

Függvények int, long 1. Adott a mellékelt f alprogram.

Informatikai alapismeretek Földtudományi BSC számára

Data Security: Protocols Integrity

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

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

Információs Technológia

TUDOMÁNYOS DIÁKKÖRI DOLGOZAT. A nyílt kulcsú titkosítás és a digitális aláírás

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

Intergrált Intenzív Matematika Érettségi

3. Kriptográfia (Jörg Rothe)

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

Elosztott rendszerek

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Diszkrét matematika I.

Kulcsgondozás. Kulcskiosztás

Alkalmazások biztonsága

5.10. Exponenciális egyenletek A logaritmus függvény Logaritmusos egyenletek A szinusz függvény

Modern titkosírások és a matematika

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

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

Átírás:

Kriptográfia 2 Aszimmetrikus megoldások Emlékeztet matematikából Euklidész algoritmus - legnagyobb közös osztó meghatározása INPUT Int a>b0; OUTPUT gcd(a,b). 1. if b=0 return(a); 2. return(gcd(b,a mod b)). ab a=bq+r gcd(a,b)=gcd(b,a mod b) #include <stdio.h> #include <stdlib.h> int gcd(int a,int b){ printf("a=%d,b=%d\n",a,b); if(b==0) return a; return gcd(b,a%b); } int main(int argc, char *argv[]){ int a,b; if(argc<2){ printf("usage: gcd1 a b\n"); return 1; } a=atoi(argv[1]);b=atoi(argv[2]); printf("gcd(%d,%d)=%d\n",a,b,gcd(a,b)); return 0; } 2

Emlékeztet matematikából (folyt.) Kiterjesztett Euklidész algoritmus a + b("q1 ) = r1 aq2 + b("q1q2 ) = r1q2 a = bq1 + r1 b = r1q2 + r2 r1 = r2q3 + r3... # a("q2 ) + b(1" q1q2 ) = r2 a$i + bµi = ri a$k"1 + bµk"1 = rk"1 = gcd(a,b) rk"3 = rk"2qk"1 + rk"1 rk"2 = rk"1qk + rk 3 Emlékeztet matematikából (folyt.) Kiterjesztett Euklidész algoritmus (folyt.) #include <stdio.h> #include <stdlib.h> INPUT Int a>b0; OUTPUT ",# hogy a"+b#=gcd(a,b). 1. i$0,r-1$a,r0$b; "-1$1,#-1$0,"0$0,#0$1; 2. while (ri=a"i+b#i%0) do q$ri-1 ri; "i+1$"i-1-q"i,#i+1$#i-1-q#i; i$i+1; 3. return(("i-1,#i-1)). int main(int argc, char *argv[]){ int a,b; int rp,r; int lp,l,ln,mp,m,mn; int q; if(argc<2){ printf("usage: gcd2 a b\n"); return 1; } a=atoi(argv[1]);b=atoi(argv[2]); rp=a;r=b; lp=1;mp=0;l=0;m=1; while((r=a*l+b*m)=0){ q=rp/r; ln=lp-q*l;mn=mp-q*m; lp=l;l=ln;mp=m;m=mn;rp=r; } printf("l=%d,m=%d\n",lp,mp); printf("gcd(%d,%d)=%d\n",a,b,lp*a+mp*b); return 0; } 4

Emlékeztet matematikából (folyt.) Moduló m'veletek (x+y) (mod n)=[(x (mod n))+(y (mod n))] (mod n); (-x) (mod n)=(n-x) (mod n)=n-(x (mod n)); (x&y) (mod n)=[(x (mod n))&(y (mod n))] (mod n); y-1 multiplikatív inverz (y&y-1 ) (mod n)=1. 5 Emlékeztet matematikából (folyt.) Moduló inverz (y&y-1 ) (mod n)=1 gcd(y,n)=1 kiterjesztett Euklidész algoritmusból: y"+n#=1, legyen "<n y" (mod n)=1 azaz y-1 =" 6

Emlékeztet matematikából (folyt.) Moduló hatványozás def xy = xx...x "# (mod n) y " y /2 y 2 =# $(y -1)/2 "(x 2 ) y 2 x y = # 2 y 2 $(x ) x ha y páros ha y páratlan ha y páros ha y páratlan INPUT Int x,y,n: x>0,y0,n>1; y OUTPUT x (mod n). #include <stdio.h> #include <stdlib.h> int modex(int x,int y, int n){ if(y==0) return 1; if(y%2==0) return modex((x*x)%n,y/2,n); return x*modex((x*x)%n,y/2,n)%n; } int main(int argc, char *argv[]){ int x,y,n; if(argc<3){ printf("usage: modex x y n\n"); return 1; } x=atoi(argv[1]);y=atoi(argv[2]);n=atoi(argv[3]); printf("%d^%d (mod %d)=%d\n",x,y,n,modex(x,y,n)); return 0; } 1. if y=0 return(1); 2. if y (mod 2)=0 return(mod_exp(x2 (mod n),y 2,n)). 3. return(x mod_exp(x2 (mod n),y 2,n)). 7 Egyirányú függvények f t (x) : D R könny' kiértékelni minden x D-re és nehéz invertálni majdnem minden R-beli értékre de ha t titkos információt ismertjük, akkor könnyen meghatározható y R-hez tartozó x D melyre y=ft(x). 8

Di"e-Helman kulcscsere algoritmus * INPUT (p,g): p nagy prím, g generátor eleme Fp " nek ; OUTPUT Fp* egy azonos eleme Alicenál és Bobnál is. 1. Alice választ egy a "U [1, p #1), kiszámítja 2. Bob választ egy b "U 3. Alice kiszámítja 4. Bob kiszámítja ga " g a (mod p),elküldi Bobnak; gb " g b (mod p),elküldi Alicenak; [1, p #1), kiszámítja k " gba (mod p) b k " ga (mod p) 9 Di"e-Helman kulcscsere algoritmus (folyt.) (p-1)-nek kell, hogy legyen elég nagy prímtényez(je (p >2 ) Nem autentikál nem véd a man-in-the-middle támadások ellen DH probléma nehézsége a DL (diszkrét 160 logaritmus) problémával azonos 10

Az RSA algoritmus Rivest, Shamir, Adleman 1. válasszunk véletlenszer'en p és q két prímet, p ) q 2. számítsuk ki N=pq 3. számítsuk ki *(N)=(p-1)(q-1) 4. válasszunk véletlenszer'en egészet e<*(n), hogy gcd(e,*(n))=1, és számítsuk ki d egészet, hogy ed 1 (mod *(N)) 5. tegyük közzé (N,e)-t nyílvános kulcsként, semmisítsük meg p,q, *(N)- t, és tartsuk meg d-t privát kulcsnak Titkosítás: m<n c$m e (mod N) Visszafejtés: m$c d (mod N) 11 Az RSA algoritmus (folyt.) Az RSA probléma nehézsége az egész faktorizálás nehézségén múlik 1024 alsó határ RSA modulus méretére RSA-512 Challenge 9500 munkaállomás kb. 4 hónap alatt faktorziálta biztonságos-prím RSA modulus p=2p +1 és q=2q +1 12

Az RSA algoritmus (folyt.) Példa: N=7x13=91, e=5 *(N)=6x12=72 Kiterj. Euklidész alg.-ból: 5x29+72x(-2)=1 d=29 (N,e)=(91,5) m=3 c=35 =243 61 (mod 91) Visszafejtés: 6129 3 (mod 91) 13 Valószín#ségi prímteszt Monte Carlo algoritmus Kis Fermat tétel: ha p prím, akkor minden x<p-re x p-1 1 (mod p). INPUT p: pozitív egész; OUTPUT YES ha p prím, NO egyébként. 1. repeat log2p times: (a) x U(1,p-1]; (b) if gcd(x,p)>1 or x (p-1)/2 ±1 (mod p) return(no); end repeat 2. if(test 1.b never shows -1) return(no); 3. return(yes). 14

Véletlen valószín#legprím generálás INPUT k:positive integer; OUTPUT k-bit random prime. 1. p U(2 k-1,2 k -1] with p odd; 2. if Prime_test(p)=NO return(prime_gen(k)); 3. return(p). X-nél kisebb prímek száma korlátos: X/logX k-bites: 2 k k " 2k"1 k "1 # 2k 2k 15 Nyílvános kulcsú kriptorendszerek elemzése Aktív támadások el(állítása (CCA2) Választott nyíltszöveg támadás (CPA) választott nyíltszöveghez títkosított Válaszott titkos szöveg támadás (CCA) korlátozott választott titkos szövegekhez tartozó nyílt szövegek rendelkezésre állnak Adaptív választott titkos szöveg támadás a cél titkos szöveg kivételével továbbra is rendelkezésre állnak a nyíltszövegek 16

Nyílvános kulcsú kriptorendszerek elemzése Nyílvános kulcsú rendszereknél CPA mindig elérhet( A háttérben lév( algebrai struktúrák sajátosságai rendelkezésre állnak visszafejt( támogatás kiküszöbölend( (CCA, CCA2) Ha a támadás ténye nem nyílvánvaló, a visszafejtés támogatás rendelkezésre állhat a rendszer m'ködésekor (CCA2) 17 Támadás példa Legyen c=m (mod N), és tudjuk hogy m<2l bizonyos valószínüséggel m kompozit e m = m1 " m2, m1,m2 < 2 l 2 c = m1e " m2e (mod N) Támadó létrehozhat rendezett adatbázist l "e e % 2 e #1,2,...(2 ) &(mod N) $ ' c /i e ( j e (mod N) m = i) j 18

Aszimmetrikus és szimmetrikus technikák kombinálása nyílvános kulcsú technikák nagy algebrai struktúrákon => költséges algebrai m'veletek szimmetrikus technikák e+ektívek (pl. lookup tables) szimmentrikus technika nagy mennyiség' adat titkosítására, kulcs elosztás nyílvános kulcsú technikával pl. RSA+triple DES SSL protokol 19