Az RSA algoritmus Fóti Marcell
Hogy működik az RSA? Te mod N = R Rd mod N = T Ahol e és d egymás multiplikatív inverze
Szünet Kérdések?
Célok Az RSA algoritmus megértése RSA titkosítás puszta kézzel (+calc.exe) RSA algoritmus kifejlesztése VBScriptben ASP lapban C#-ban
Nemek Nem az RSA az egyetlen nyílt kulcsú algoritmus Nem a Certificate Authority generálja a kulcspárokat Az RSA nem csak prímszámokkal működik (sőt!)
Trapdoor függvények Olyan függvényeket keresünk, melyek nem működnek visszafelé Diffie-Hellmann, 1976 Rivest, Shamir, Adleman, 1977 Ellpitikus függvények Tech.net december Stb.
Moduloaritmetika A modulo ideális trapdoor függvény 127 mod 21 = 1 A 21 és az 1 ismeretében soha nem találjuk ki a kiindulási számot Kongruencia Moduloegyenlőség 127 1 (mod 21) Összeadásra, szorzásra elemenként is igaz!
Az RSA előzményei T(N-1) mod N = 1 és TN mod N = T Erre még visszatérünk! T(N-1) mod N = 1 és TN mod N = T ha N nagyobb mint T, és N prímszám Ókori trükk Euler bácsi rég bebizonyította Ezzel dolgozunk. T=14 és N=17 esetén... 1416 mod 17 = 1 1417 mod 17 = 14
Relatív prímek Prímtényezőkre bontás A legnagyobb közös osztó (LKO) 18 = 2 * 3 * 3 30 = 2 * 3 * 5 A legnagyobb közös osztó (LKO) Két szám közös prímtényezőinek szorzata 18 és 36 esetén 2*3=6 Ha LKO=1, a két szám relatív prím egymáshoz képest
Kísérlet relatív prímekkel... Vajon T(P*Q) T (mod N) ? Ha N=P*Q és N relatív prím T-hez? Próba: T=5 N=6 Ez relatív prím T-hez 56 mod 6= 1
Euler fíje Mitől működik a TN mod N = T? A két N „véletlenül” azonos! A kitevő valójában N relatív prímjeinek száma + 1 Prímszámoknál f(N) = N-1 Így a kitevő „véletlenül” N-1+1=N A többi számnál a szám prímtényezőinek relatív prímjeinek szorzata + 1 315= 3 * 5 * 7, 2 * 4 * 6 = f = 48 Ellenpróba x(48+1) mod 315 = x, ha x relatív prím 315-höz
Szuper! Jöhet a hatványkitevő felbontása! Kísérlet fível… T f(N)+1 T (mod N) Próba T=5 N=6 Ez relatív prím T-hez f(6)=2 5(2+1) mod 6 = 5 Szuper! Jöhet a hatványkitevő felbontása!
A hatványkitevő felbontása f(N)+1 = P*Q T(P*Q) T (mod N után) Az előző példában a kitevő 3 volt Hogy bontható fel? 3 * 1 ? vagy 1 * 3 ?? Nem jó, mert 1. hatványra felesleges emelni!
...visszatérünk Tf(N) mod N = 1 Mindkét oldalt emeljük négyzetre: Tf(N) * Tf(N) 1 * 1 (mod N) Most köbre: Tf(N) * Tf(N) * Tf(N) 1 * 1 * 1 (mod N) Összevonva T3*f(N) 1 (mod N) Tbármennyi*f(N) 1 (mod N) Mindkét oldalt szorozzuk meg T-vel: Tbármennyi*f(N)+1 T (mod N)
Az utolsó lépések Kész Ismétlés: Tbármennyi*f(N)+1 T (mod N) bármennyi*f(N)+1 „könnyedén” felbontható két szám szorzatára bármennyi*f(N)+1=P*Q Titkosító: TP mod N = R Megfejtő: RQ mod N = T Kész
Kézi RSA példa Titkosítandó (T): 8 Modulus(N): 15 (relatív prím 8-hoz) 15 prímtényezői: 3 * 5 f = 2*4 = 8 Szorzótényezőkre bontandó: K * f + 1 = 1 * 8 + 1 = 9 -> 3*3, azonos a két kulcs :( 2 * 8 + 1 = 17 3 * 8 + 1 = 25 -> 5 *5, azonos a két kulcs :( 4 * 8 + 1 = 33 -> 3 * 11 3 és 11 egymás multiplikatív inverze
Kézi RSA példa Publikus kulcs: e=3, N=15 Privát kulcs: d=11, N=15 Titkosítás 83 mod 15 = 2 Kibontás 211 mod 15 = 8
Milyen legyen a modulus? N (a modulus) legyen Oltári nagy szám „Univerzális” relatív prím Legnagyobb közös osztója tetszőleges számmal 1 legyen Könyű legyen megállapítani a f-jét
Kulcsgenerálás Veszünk (generálunk) két bazinagy prímszámot (P és Q) A modulus N = P * Q Ez ugyan nem prím, de mivel két elvetemülten nagy prímszám szorzata, gyakorlatilag bármilyen nagy számhoz relatív prím lesz Mindkét prímszámnak tudjuk a f-jét, így N f-je: f=(P – 1) * (Q - 1) Ezután felbontjuk bármennyi*f+1-et két szám szorzatára (e és d). A bazinagy prímszámokat elhajítjuk. Többé nem kellenek. A kulcspárok pedig e, N és d, N
Van-e elegendő prímszám? Euklidész szerint… Tegyük fel, hogy véges számú prímszám van. A legnagyobb prímszámot nevezzük P-nek Q, legyen egy P-nél nagyobb szám, mégpedig így: Q=(2 x 3 x 4 x 5 x ... x P)+1 Q-nak tehát nem osztója sem a 2, sem a 3, sem ... P mert a plusz egy miatt mindig 1 a maradék. Ha Q nem prím, akkor kizárólag egy P-nél nagyobb prím lehet az osztója, mert P-ig bezárólag egyik sem osztja maradék nélkül. 5.b Ha Q prím, akkor mint P-nél nagyobb szám, leüti P-t a trónról Tehát nem P a legnagyobb prímszám ->van belőle bőven q.e.d.
Prímszámgenerálás: az Ulam négyzet
Óriási prímszámok 512 bites kulcshossz 10^151 darab 512 bites van az Univerzumban 10^77 atom van Great Internet Mersenne Prime Search http://www.mersenne.org Martin Mersenne (XVII. szd.) Ha N prím, akkor 2^N-1 is … talán Rabin-Miller teszt
Gyenge pontok Az RSA gyenge pontja nem az algoritmus, hanem a kulcsgenerálás Az RSA addig „él”, amíg nincs jobb módszer N prímtényezőkre bontásához, mint a próbálgatás Az RSA Labs pályázatot hirdet prímtényezőkre bontásra 576 bites: 10.000$ 2048 bites: 200.000$ http://www.rsasecurity.com/rsalabs/challenges/ factoring/index.html
Szünet Kérdések?