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

Hasonló dokumentumok
Számelméleti alapfogalmak

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

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:

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

Diszkrét matematika I.

Data Security: Public key

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

Diszkrét matematika I.

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.

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

Waldhauser Tamás december 1.

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

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

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:

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

SzA XIII. gyakorlat, december. 3/5.

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

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

SZÁMELMÉLETI FELADATOK

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

2018, Diszkre t matematika. 10. elo ada s

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

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

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

Algoritmuselmélet gyakorlat (MMN111G)

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

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

2016, Diszkrét matematika

Kongruenciák. Waldhauser Tamás

Emlékeztet! matematikából

Diszkrét matematika I.

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

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

Mintafeladat az RSA algoritmus szemléltetésére

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

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.

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

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

Egyesíthető prioritási sor

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

Bevezetés az algebrába 1

Oszthatóság. Oszthatóság definíciója (az egészek illetve a természetes számok halmazán):

illetve a n 3 illetve a 2n 5

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

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

Sapientia Egyetem, Matematika-Informatika Tanszék.

SE EKK EIFTI Matematikai analízis

Információs társadalom alapismeretek

2016, Diszkrét matematika

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, Diszkre t matematika. 8. elo ada s

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

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

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

2017, Diszkrét matematika

Matematika 7. osztály

Matematikai alapismeretek. Huszti Andrea

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

1. A maradékos osztás

Diszkrét matematika I.

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

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.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások. 21 és 5 7 = 15

Diszkrét matematika 2.

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

Maple. Maple. Dr. Tóth László egyetemi docens Pécsi Tudományegyetem, 2007

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

GAUSS-EGÉSZEK ÉS DIRICHLET TÉTELE

Felvételi tematika INFORMATIKA

4. Számelmélet, számrendszerek

KLASSZIKUS ALGEBRA ÉS SZÁMELMÉLET FELADATOK

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

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

Kriptográfiai protokollok

III.7. PRÍM PÉTER. A feladatsor jellemzői

Számítógépes Hálózatok. 7. gyakorlat

Bizonyítási módszerek - megoldások. 1. Igazoljuk, hogy menden természetes szám esetén ha. Megoldás: 9 n n = 9k = 3 3k 3 n.

Tartalom. Algebrai és transzcendens számok

Polinomok (előadásvázlat, október 21.) Maróti Miklós

Szakács Lili Kata megoldása

1. Komplex szám rendje

Diszkrét matematika II. feladatok

NEVEZETES SZÁMELMÉLETI FÜGGVÉNYEKRŐL

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

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

Számelmélet. Oszthatóság

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Racionális számok: Azok a számok, amelyek felírhatók két egész szám hányadosaként ( p q

Számelmélet Megoldások

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

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

1. megold s: A keresett háromjegyű szám egyik számjegye a 3-as, a két ismeretlen számjegyet jelölje a és b. A feltétel szerint

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

1. Polinomok számelmélete

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

Átírás:

RSA algoritmus Smidla József Rendszer- és Számítástudományi Tanszék Pannon Egyetem 2012. 3. 27. Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 1 / 29

Tartalom 1 Aszimmetrikus kódolók 2 Matematikai alapok Legnagyobb közös osztó Multiplikatív inverz Euler-függvény A kis Fermat-tétel 3 RSA 4 GNU MP Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 2 / 29

Aszimmetrikus kódolók Szimmetrikus kódolók Ugyanazt a kulcsot használja a kódoló, és a dekódoló is Gyors kódolás és dekódolás Probléma: A közös kulcsban meg kell egyezni Aszimmetrikus kódolók A kódoláshoz és dekódoláshoz használt kulcsok eltérőek Mindenki rendelkezik egy privát és egy publikus kulccsal A privát kulcsot nehezen határozhatjuk meg a publikus kulcs alapján Több nagyságrendel lassabbak, mint a szimmetrikus kódolók Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 3 / 29

Aszimmetrikus kódolók Alíz szeretne üzenetet (x) küldeni Bobnak Bob nyilvános, azaz kódoló kulcsa: E Bob, Bob privát, azaz dekódoló kulcsa: D Bob Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 4 / 29

Matematikai alapok Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 5 / 29

Legnagyobb közös osztó Definíció A és B egész számok legnagyobb közös osztója az a legnagyobb szám, amely osztója A-nak és B-nek is Példa lnko(84, 30) =? 84 = 2 * 2 * 3 * 7 30 = 2 * 3 * 5 A közös osztók: 2 és 3, azaz lnko(84, 30) = 2 * 3 = 6 A prímtényezős felbontás nagy számok esetén gyakorlatilag kivitelezhetetlen Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 6 / 29

Euklideszi algoritmus Bemenet: A és B egész számok, A > B 1 R := A mod B 2 Ha R = 0, akkor végeztünk, a legnagyobb közös osztó = B 3 A := B 4 B := R 5 Vissza az 1. pontra Példa A = 84, B = 30 1 R = 84 mod 30 = 24 A = 30, B = 24 2 R = 30 mod 24 = 6 A = 24, B = 6 3 R = 24 mod 6 = 0 Vége, legnagyobb közös osztó = 6 Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 7 / 29

Multiplikatív inverz Definíció Egy A szám multiplikatív inverze az a B szám modulo M-ben, amire igaz, hogy: AB 1 ( mod M ) Példa Legyen A = 23, M = 120 Ha B = 47, akkor: AB = 1081 1081 mod 120 = 1 Tehát 23 multiplikatív inverze modulo 120 esetén 47 Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 8 / 29

Multiplikatív inverz meghatározása Az inverzet a kiterjesztett euklideszi algoritmussal határozhatjuk meg a és b adottak, az algoritmus x és y egészek értékét határozza meg az alábbi egyenletben: ax + by = lnko(a,b) Legyen x az a multiplikatív inverze modulo m-ben: ax 1 ( mod m ) Azaz m osztója az ax 1-nek, az osztás eredménye legyen q: ax 1 = qm Ezt átrendezve: ax qm = 1 Ha lnko(a, m) = 1, akkor a kiterjesztett euklideszi algoritmus megadja x-et és q-t, x lesz a keresett inverz Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 9 / 29

Kiterjesztett euklideszi algoritmus Határozzuk meg az lnko(a = 120, b = 23)-at: Osztandó Osztó Hányados (q) Maradék (r) 120 23 5 5 23 5 4 3 5 3 1 2 3 2 1 1 2 1 2 0 Fejezzük ki az i. maradékot, azaz r i -t a és b alapján: r i = ax i + by i A táblázatból kiolvasható, hogy az i > 2 esetén r i = r i 2 q i r i 1 Az előző kettő összefüggésből a következőt kapjuk: r i = (ax i 2 + by i 2 ) q i (ax i 1 + by i 1 ) Ezt átrendezve: r i = a(x i 2 q i x i 1 )+b(y i 2 q i y i 1 ) Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 10 / 29

Kiterjesztett euklideszi algoritmus Tudjuk tehát, hogy r i = a(x i 2 q i x i 1 )+b(y i 2 q i y i 1 ) Legyen x 1 = 1, y 1 = 0, x 2 = 0 és y 2 = 1, és i > 2-re pedig: x i = x i 2 q i x i 1 y i = y i 2 q i y i 1 Valamint r 1 = a x 1 + b y 1 = a r 2 = a x 2 + b y 2 = b Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 11 / 29

Kiterjesztett euklideszi algoritmus Példa Keressük x és y értékét, ha a = 120, b = 23 i q i r i x i y i r i = ax i + by i 1 120 1 0 120 = 120 * 1 + 23 * 0 2 23 0 1 23 = 120 * 0 + 23 * 1 3 5 5 1-5 5 = 120 * 1 + 23 * (-5) 4 4 3-4 21 3 = 120 * (-4) + 23 * 21 5 1 2 5-26 2 = 120 * 5 + 23 * (-26) 6 1 1-9 47 1 = 120 * (-9) + 23 * 47 Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 12 / 29

Kiterjesztett euklideszi algoritmus Példa Tehát 1 = 120 ( 9)+23 47, azaz x = 9 és y = 47 A korábbi megállapítások alapján : 47 23 1 ( mod 120 ) 120 ( 9) 26 38 1 ( mod 47 ) 120 ( 9) 14 5 1 ( mod 23 ) Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 13 / 29

Euler-függvény Relatív prímek: Definíció A és B egész számok relatív prímek, ha lnko(a, B) = 1 Euler-függvény: Definíció ϕ(n) = {a : lnko(n, a) = 1 és a < n} Azaz azon egészek száma, amelyek n-nél kisebbek, és n-el relatív prímek. Példa ϕ(6) =? lnko(6, 1) = 1 lnko(6, 2) = 2 lnko(6, 3) = 3 lnko(6, 4) = 2 lnko(6, 5) = 1 ϕ(6) = 2 Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 14 / 29

Euler-függvény Legyen m = p e 1 1 pe 2 2... pen n ϕ(m) Kiszámítása: Példa ϕ(240) =? ϕ(m) = n (p e i i p e i 1 i=1 i ) m = 16 15 = 2 4 3 1 5 1 = p e 1 1 pe 2 2 pe 3 3,n = 3 ϕ(240) = (2 4 2 3 ) (3 1 3 0 ) (5 1 5 0 ) = 8 2 4 = 64 A kiszámításához ismerni kell az m szám osztóit... Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 15 / 29

A kis Fermat-tétel Legyen a egész, p pedig prím, ekkor igaz a következő állítás: a p a ( mod p) másképp: a p 1 1 ( mod p) Példák Legyen a = 34, p = 37 34 37 = 462082935536608083712617840903502214718703588813721042944 462082935536608083712617840903502214718703588813721042944 mod 37 = 34 Legyen a = 34, p = 7 34 7 = 52523350144 52523350144 mod 7 = 6 = 34 mod 7 Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 16 / 29

RSA Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 17 / 29

RSA Lépései: 1976-ban Ron Rivest, Adi Shamir és Len Adleman fejlesztették ki A módszer azt használja ki, hogy egy nagy szám prímtényezőkre bontására nem ismert gyors algoritmus 1 Kulcsválasztás 1 Legyen p és q nagy prímszámok, p q 2 N = p q 3 ϕ(n) = (p 1) (q 1) 4 Legyen e olyan szám, hogy lnko(e, ϕ(n)) = 1 5 Legyen d olyan szám, hogy e d 1 ( mod ϕ(n)) 6 Nyilvános kulcs: (N, e), privát kulcs: d 2 Kódolás: y = x e (mod N) 3 Dekódolás: x = y d (mod N) A támadónak a privát kulcs meghatározásához faktorizálni kell N-t Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 18 / 29

Példa 1 Legyen p = 73, q = 151 2 N = p q = 11023 3 ϕ(n) = (p 1) (q 1) = 10800 4 e legyen 11, mert lnko(10800, 11) = 1 5 d értéke 5891, mert e d 1 (mod 10800) 6 A nyilvános kulcs tehát: (11023, 11), a privát kulcs pedig 5891 7 Titkosítsuk az x = 17 üzenetet 8 17 11 ( mod 11023) = 1782 9 Dekódolás: 1782 5891 (mod 11023) = 17 Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 19 / 29

Egy életszerűbb példa 1 p = 1415521043921637081069465701497 2 q = 1718274684234672087011032753331 3 N = 2432253974771984353822444893072182748902362278999581278436507 4 ϕ(n) = 2432253974771984353822444893069048953174205969831500779981680 5 e = 7 6 d = 1389859414155419630755682796039456544670974839903714731418103 7 Titkosítsuk az x = 7462836432632683268432732 üzenetet: 8 y = 576984127400318320790120869935160506898233978757302023931375 A fenti példa bár látványos, még mindig túl kicsi számokat tartalmaz Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 20 / 29

Bizonyítás Állítás: Bármely x egész számra igaz, hogy (x e ) d x ( mod N ) Tudjuk, hogy d az e-nek mod ϕ(n) inverze, azaz ed 1 ( mod ϕ(n) ) Tehát: ed egy olyan szám, amit ha elosztok ϕ(n)-el, akkor 1-et kapok maradékul, az egész osztás eredménye legyen v: Tehát a következőt kell belátnunk: ed = vϕ(n) + 1 x vϕ(n)+1 x ( mod N ) (1) Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 21 / 29

Bizonyítás Bizonyítsuk be, hogy tetszőleges x és s értékekre igaz az alábbi állítás, ha u prím: x s(u 1)+1 x ( mod u ) (2) Nézzük azt az esetet, mikor x-et nem osztja u, ekkor a kis Fermat-tétel szerint: x u 1 1 ( mod u ) (x u 1 ) s 1 ( mod u ) x(x u 1 ) s x ( mod u ) Tehát (2) ebben az esetben igaz. A másik eset az, mikor x-et osztja u. Ekkor A maradék 0, tehát: Azaz (2) ekkor is igaz lesz. x = 0 = x s(u 1)+1 x ( mod u ) Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 22 / 29

Bizonyítás Ezt akarjuk belátni: x vϕ(n)+1 x ( mod N ) Tudjuk, hogy x s(u 1)+1 x ( mod u ) ha u prím Valamint ed = vϕ(n)+1 = v(p 1)(q 1)+1 Legyen s 1 = v(p 1), valamint s 2 = v(q 1) Ezek alapján igazak a következők: x s1(q 1)+1 x ( mod q ) x s2(p 1)+1 x ( mod p ) Vagyis q osztja x s1(q 1)+1 x-et és p osztja x s2(p 1)+1 x-et pq = N osztja x vϕ(n)+1 x-et x vϕ(n)+1 x ( mod N ) Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 23 / 29

GNU MP Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 24 / 29

GNU MP Nagy számok használata Szabadon elérhető gmplib.org Szükséges header file: gmp.h C kód fordítása: gcc myprogram.c -lgmp C++ kód fordítása: g++ mycxxprog.cpp -lgmpxx -lgmp Telepítés linux alatt: Csomagoljuk ki a honlapról letölthető fájlt, majd lépjünk be a könyvtárába./configure enable-cxx disable-shared make sudo make install Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 25 / 29

GNU MP Példakód: #include <iostream> #include <gmp.h> intmain() { aaampzt a; aaampz init set str(a,"12345678910323232", 10); aaastd::cout << a << std::endl; aaampz clear(a); } Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 26 / 29

Egész számok GNU MP-ben mpz_t : egészek tárolására alkalmas típus használat előtt inicializálni kell: mpz_init(mpz_t a): 0-ra inicializálja a változót mpz_init_set_str(mpz_t rop, char * str, int base): A rop változót inicializálja az str-ben megadott szám alapján, mely a base számrendszerben adott Értékadás: mpz_set(mpz_t rop, mpz_t op) : rop = op mpz_set_ui(mpz_t rop, unsigned long int op) : rop = op Összeadás, kivonás, szorzás: mpz_add(mpz_rop, mpz_t op1, mpz_t op2) : rop = op1 + op2 Hasonlóan mpz_sub, mpz_mul Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 27 / 29

Számelméleti függvények Modulo hatványozás mpz_powm(mpz_t rop, mpz_t base, mpz_t exp, mpz_t mod): rop = base exp ( modulo mod ) Prímszám keresés: mpz_nextprime(mpz_t rop, mpz_t op): rop = op utáni következő prímszám Legnagyobb közös osztó: mpz_gcd(mpz_t rop, mpz_t op1, mpz_t op2): rop = lnko(op1, op2) Modulo inverz: mpz_invert(mpz_t rop, mpz_t op1, mpz_t op2): rop = op1 inverze modulo op2 Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 28 / 29

Véletlen számok gmp_randstate_t randstate: random generátor állapotát tárolja gmp_randinit_default (gmp_randstate_t state): inicializálja a randomgenerátor állapotát gmp_randseed (gmp_randstate_t state, mpz_t seed): a randomgenerátor belső változóit állítja be mpz_urandomb (mpz_t rop, gmp_randstate_t state, mp_bitcnt_t n): rop = véletlen szám 0 és 2 n 1 között Smidla József (RSZT) RSA algoritmus 2012. 3. 27. 29 / 29